Go to the documentation of this file.00001 #ifndef SimG4CMS_HFShowerParam_h
00002 #define SimG4CMS_HFShowerParam_h
00003
00004
00005
00007
00008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00009 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00010 #include "DetectorDescription/Core/interface/DDsvalues.h"
00011 #include "SimG4CMS/Calo/interface/HFShowerLibrary.h"
00012 #include "SimG4CMS/Calo/interface/HFFibre.h"
00013 #include "SimG4CMS/Calo/interface/HFGflash.h"
00014
00015 #include "G4ParticleTable.hh"
00016 #include "G4ThreeVector.hh"
00017
00018 class DDCompactView;
00019 class G4Step;
00020
00021 #include <TH1F.h>
00022 #include <TH2F.h>
00023 #include <string>
00024 #include <vector>
00025
00026 class HFShowerParam {
00027
00028 public:
00029
00030 HFShowerParam(std::string & name, const DDCompactView & cpv,
00031 edm::ParameterSet const & p);
00032 virtual ~HFShowerParam();
00033
00034 public:
00035
00036 struct Hit {
00037 Hit() {}
00038 G4ThreeVector position;
00039 int depth;
00040 double time;
00041 double edep;
00042 };
00043
00044 void initRun(G4ParticleTable *);
00045 std::vector<Hit> getHits(G4Step * aStep);
00046
00047 private:
00048
00049 std::vector<double> getDDDArray(const std::string&, const DDsvalues_type&);
00050
00051 HFShowerLibrary* showerLibrary;
00052 HFFibre* fibre;
00053 HFGflash* gflash;
00054 double pePerGeV, edMin, ref_index, attLMeanInv;
00055 bool trackEM, onlyLong, applyFidCut, parametrizeLast;
00056 G4int emPDG, epPDG, gammaPDG;
00057 std::vector<double> gpar;
00058 bool fillHisto;
00059 TH1F *em_long_1, *em_lateral_1, *em_long_2, *em_lateral_2;
00060 TH1F *hzv, *em_long_1_tuned, *em_long_gflash, *em_long_sl;
00061 TH2F *em_2d_1, *em_2d_2;
00062 };
00063
00064
00065 #endif // HFShowerParam_h