File indexing completed on 2024-04-06 12:30:24
0001 #ifndef GflashHadronShowerModel_H
0002 #define GflashHadronShowerModel_H
0003
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0005 #include "G4VFastSimulationModel.hh"
0006
0007 #include "G4Navigator.hh"
0008 #include "G4Step.hh"
0009 #include "G4TouchableHandle.hh"
0010
0011 class GflashHadronShowerProfile;
0012 class GflashPiKShowerProfile;
0013 class GflashKaonPlusShowerProfile;
0014 class GflashKaonMinusShowerProfile;
0015 class GflashProtonShowerProfile;
0016 class GflashAntiProtonShowerProfile;
0017 class GflashHistogram;
0018
0019 class GflashHadronShowerModel : public G4VFastSimulationModel {
0020 public:
0021
0022
0023
0024 GflashHadronShowerModel(G4String modelName, G4Region *envelope, const edm::ParameterSet &parSet);
0025 ~GflashHadronShowerModel() override;
0026
0027
0028
0029
0030
0031 G4bool IsApplicable(const G4ParticleDefinition &) override;
0032 G4bool ModelTrigger(const G4FastTrack &) override;
0033 void DoIt(const G4FastTrack &, G4FastStep &) override;
0034
0035 private:
0036 G4bool isFirstInelasticInteraction(const G4FastTrack &fastTrack);
0037 G4bool excludeDetectorRegion(const G4FastTrack &fastTrack);
0038 void makeHits(const G4FastTrack &fastTrack);
0039 void updateGflashStep(const G4ThreeVector &position, G4double time);
0040
0041 private:
0042 G4bool theWatcherOn;
0043 edm::ParameterSet theParSet;
0044 GflashHadronShowerProfile *theProfile;
0045 GflashPiKShowerProfile *thePiKProfile;
0046 GflashKaonPlusShowerProfile *theKaonPlusProfile;
0047 GflashKaonMinusShowerProfile *theKaonMinusProfile;
0048 GflashProtonShowerProfile *theProtonProfile;
0049 GflashAntiProtonShowerProfile *theAntiProtonProfile;
0050
0051 G4Step *theGflashStep;
0052 G4Navigator *theGflashNavigator;
0053 G4TouchableHandle theGflashTouchableHandle;
0054
0055
0056 GflashHistogram *theHisto;
0057 };
0058
0059 #endif