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