![]() |
![]() |
00001 #ifndef GflashHadronShowerModel_H 00002 #define GflashHadronShowerModel_H 00003 00004 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00005 #include "G4VFastSimulationModel.hh" 00006 00007 #include "G4TouchableHandle.hh" 00008 #include "G4Navigator.hh" 00009 #include "G4Step.hh" 00010 00011 class GflashHadronShowerProfile; 00012 class GflashPiKShowerProfile; 00013 class GflashKaonPlusShowerProfile; 00014 class GflashKaonMinusShowerProfile; 00015 class GflashProtonShowerProfile; 00016 class GflashAntiProtonShowerProfile; 00017 class GflashHistogram; 00018 00019 class GflashHadronShowerModel : public G4VFastSimulationModel 00020 { 00021 public: 00022 //------------------------- 00023 // Constructor, destructor 00024 //------------------------- 00025 GflashHadronShowerModel (G4String modelName, G4Region* envelope, edm::ParameterSet parSet); 00026 ~GflashHadronShowerModel (); 00027 00028 //------------------------------------------------------------------------ 00029 // Virtual methods that should be implemented for this hadron shower model 00030 //------------------------------------------------------------------------ 00031 00032 G4bool IsApplicable(const G4ParticleDefinition&); 00033 G4bool ModelTrigger(const G4FastTrack &); 00034 void DoIt(const G4FastTrack&, G4FastStep&); 00035 00036 private: 00037 G4bool isFirstInelasticInteraction(const G4FastTrack& fastTrack); 00038 G4bool excludeDetectorRegion(const G4FastTrack& fastTrack); 00039 void makeHits(const G4FastTrack& fastTrack); 00040 void updateGflashStep(G4ThreeVector position, G4double time); 00041 00042 private: 00043 00044 G4bool theWatcherOn; 00045 edm::ParameterSet theParSet; 00046 GflashHadronShowerProfile *theProfile; 00047 GflashPiKShowerProfile *thePiKProfile; 00048 GflashKaonPlusShowerProfile *theKaonPlusProfile; 00049 GflashKaonMinusShowerProfile *theKaonMinusProfile; 00050 GflashProtonShowerProfile *theProtonProfile; 00051 GflashAntiProtonShowerProfile *theAntiProtonProfile; 00052 00053 G4Step *theGflashStep; 00054 G4Navigator *theGflashNavigator; 00055 G4TouchableHandle theGflashTouchableHandle; 00056 00057 //debugging histograms 00058 GflashHistogram* theHisto; 00059 00060 }; 00061 00062 #endif