File indexing completed on 2024-04-06 12:29:47
0001 #ifndef SimG4CMS_HFShowerParam_h
0002 #define SimG4CMS_HFShowerParam_h
0003
0004
0005
0006
0007
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0010 #include "Geometry/HcalCommonData/interface/HcalDDDSimConstants.h"
0011 #include "CondFormats/GeometryObjects/interface/HcalSimulationParameters.h"
0012 #include "SimG4CMS/Calo/interface/HFShowerLibrary.h"
0013 #include "SimG4CMS/Calo/interface/HFFibre.h"
0014 #include "SimG4CMS/Calo/interface/HFGflash.h"
0015
0016 #include "G4ThreeVector.hh"
0017
0018 class G4Step;
0019
0020 #include <TH1F.h>
0021 #include <TH2F.h>
0022 #include <string>
0023 #include <vector>
0024
0025 class HFShowerParam {
0026 public:
0027 HFShowerParam(const std::string& name,
0028 const HcalDDDSimConstants* hcons,
0029 const HcalSimulationParameters* hps,
0030 edm::ParameterSet const& p);
0031
0032 public:
0033 struct Hit {
0034 Hit() {}
0035 G4ThreeVector position;
0036 int depth;
0037 double time;
0038 double edep;
0039 };
0040 std::vector<Hit> getHits(const G4Step* aStep, double weight, bool& isKilled);
0041
0042 private:
0043 std::unique_ptr<HFShowerLibrary> showerLibrary_;
0044 HFFibre fibre_;
0045 std::unique_ptr<HFGflash> gflash_;
0046 bool fillHisto_;
0047 double pePerGeV_, edMin_, ref_index_, aperture_, attLMeanInv_;
0048 bool trackEM_, equalizeTimeShift_, onlyLong_, applyFidCut_, parametrizeLast_;
0049 G4int emPDG_, epPDG_, gammaPDG_;
0050 std::vector<double> gpar_;
0051 TH1F *em_long_1_, *em_lateral_1_, *em_long_2_, *em_lateral_2_;
0052 TH1F *hzvem_, *hzvhad_, *em_long_1_tuned_, *em_long_gflash_;
0053 TH1F* em_long_sl_;
0054 TH2F *em_2d_1_, *em_2d_2_;
0055 };
0056
0057 #endif