00001 #ifndef GflashHadronShowerModel_H 00002 #define GflashHadronShowerModel_H 00003 00004 #include "G4VFastSimulationModel.hh" 00005 #include "G4TouchableHandle.hh" 00006 #include "G4Navigator.hh" 00007 00008 class GflashHadronShowerProfile; 00009 class GflashHistogram; 00010 class G4Step; 00011 00012 class GflashHadronShowerModel : public G4VFastSimulationModel 00013 { 00014 public: 00015 //------------------------- 00016 // Constructor, destructor 00017 //------------------------- 00018 GflashHadronShowerModel (G4String modelName, G4Region* envelope); 00019 ~GflashHadronShowerModel (); 00020 00021 //------------------------------------------------------------------------ 00022 // Virtual methods that should be implemented for this hadron shower model 00023 //------------------------------------------------------------------------ 00024 00025 G4bool IsApplicable(const G4ParticleDefinition&); 00026 G4bool ModelTrigger(const G4FastTrack &); 00027 void DoIt(const G4FastTrack&, G4FastStep&); 00028 00029 private: 00030 G4bool isFirstInelasticInteraction(const G4FastTrack& fastTrack); 00031 G4bool excludeDetectorRegion(const G4FastTrack& fastTrack); 00032 00033 private: 00034 00035 GflashHadronShowerProfile *theProfile; 00036 G4Step *theGflashStep; 00037 G4Navigator *theGflashNavigator; 00038 G4TouchableHandle theGflashTouchableHandle; 00039 00040 //debugging histograms 00041 GflashHistogram* theHisto; 00042 }; 00043 00044 #endif