Back to home page

Project CMSSW displayed by LXR

 
 

    


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 //class GflashHistogram;
0019 
0020 class GFlashHadronShowerModel : public G4VFastSimulationModel {
0021 public:
0022   //-------------------------
0023   // Constructor, destructor
0024   //-------------------------
0025   GFlashHadronShowerModel(G4String modelName, G4Region *envelope, const edm::ParameterSet &parSet);
0026   ~GFlashHadronShowerModel() override;
0027 
0028   //------------------------------------------------------------------------
0029   // Virtual methods that should be implemented for this hadron shower model
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   //debugging histograms
0059   //GflashHistogram* theHisto;
0060 };
0061 
0062 #endif