Back to home page

Project CMSSW displayed by LXR

 
 

    


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   // Constructor, destructor
0023   //-------------------------
0024   GflashHadronShowerModel(G4String modelName, G4Region *envelope, const edm::ParameterSet &parSet);
0025   ~GflashHadronShowerModel() override;
0026 
0027   //------------------------------------------------------------------------
0028   // Virtual methods that should be implemented for this hadron shower model
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   // debugging histograms
0056   GflashHistogram *theHisto;
0057 };
0058 
0059 #endif