CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/SimG4Core/GFlash/interface/GflashHadronShowerModel.h

Go to the documentation of this file.
00001 #ifndef GflashHadronShowerModel_H
00002 #define GflashHadronShowerModel_H
00003 
00004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00005 #include "G4VFastSimulationModel.hh"
00006 
00007 #include "G4TouchableHandle.hh"
00008 #include "G4Navigator.hh"
00009 #include "G4Step.hh"
00010 
00011 class GflashHadronShowerProfile;
00012 class GflashPiKShowerProfile;
00013 class GflashKaonPlusShowerProfile;
00014 class GflashKaonMinusShowerProfile;
00015 class GflashProtonShowerProfile;
00016 class GflashAntiProtonShowerProfile;
00017 class GflashHistogram;
00018 
00019 class GflashHadronShowerModel : public G4VFastSimulationModel 
00020 {
00021 public:
00022   //-------------------------
00023   // Constructor, destructor
00024   //-------------------------
00025   GflashHadronShowerModel (G4String modelName, G4Region* envelope, edm::ParameterSet parSet);
00026   ~GflashHadronShowerModel ();
00027 
00028   //------------------------------------------------------------------------
00029   // Virtual methods that should be implemented for this hadron shower model
00030   //------------------------------------------------------------------------
00031 
00032   G4bool IsApplicable(const G4ParticleDefinition&);
00033   G4bool ModelTrigger(const G4FastTrack &);
00034   void DoIt(const G4FastTrack&, G4FastStep&);
00035 
00036 private:
00037   G4bool isFirstInelasticInteraction(const G4FastTrack& fastTrack);
00038   G4bool excludeDetectorRegion(const G4FastTrack& fastTrack);
00039   void makeHits(const G4FastTrack& fastTrack);
00040   void updateGflashStep(G4ThreeVector position, G4double time);
00041 
00042 private:  
00043 
00044   G4bool theWatcherOn;
00045   edm::ParameterSet theParSet;
00046   GflashHadronShowerProfile *theProfile;
00047   GflashPiKShowerProfile *thePiKProfile;
00048   GflashKaonPlusShowerProfile *theKaonPlusProfile;
00049   GflashKaonMinusShowerProfile *theKaonMinusProfile;
00050   GflashProtonShowerProfile *theProtonProfile;
00051   GflashAntiProtonShowerProfile *theAntiProtonProfile;
00052 
00053   G4Step *theGflashStep;
00054   G4Navigator *theGflashNavigator;
00055   G4TouchableHandle  theGflashTouchableHandle;
00056 
00057   //debugging histograms
00058   GflashHistogram* theHisto;
00059 
00060 };
00061 
00062 #endif