Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:30:13

0001 //
0002 //---------------------------------------------------------------
0003 //
0004 //  GFlashEMShowerModel
0005 //
0006 //  Class description:
0007 //
0008 //  GFlash parameterisation shower model.
0009 
0010 // Authors: E.Barberio & Joanna Weng - 9.11.04
0011 // other authors : Soon Yung Jun & Dongwook Jang - 2007/12/07
0012 //                 V.Ivanchenko rename the class and move
0013 //                 to SimG4Core/Application - 2012/08/14
0014 //---------------------------------------------------------------
0015 
0016 #ifndef GFlashEMShowerModel_h
0017 #define GFlashEMShowerModel_h
0018 
0019 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0020 
0021 #include "G4VFastSimulationModel.hh"
0022 #include "G4TouchableHandle.hh"
0023 #include "G4Navigator.hh"
0024 #include "G4Step.hh"
0025 
0026 class GflashEMShowerProfile;
0027 class G4Region;
0028 
0029 class GFlashEMShowerModel : public G4VFastSimulationModel {
0030 public:
0031   GFlashEMShowerModel(const G4String& name, G4Envelope* env, const edm::ParameterSet& parSet);
0032   ~GFlashEMShowerModel() override;
0033 
0034   G4bool ModelTrigger(const G4FastTrack&) override;
0035   G4bool IsApplicable(const G4ParticleDefinition&) override;
0036   void DoIt(const G4FastTrack&, G4FastStep&) override;
0037 
0038 private:
0039   G4bool excludeDetectorRegion(const G4FastTrack& fastTrack);
0040   void makeHits(const G4FastTrack& fastTrack);
0041   void updateGflashStep(const G4ThreeVector& position, G4double time);
0042 
0043   //
0044   edm::ParameterSet theParSet;
0045   bool theWatcherOn;
0046 
0047   GflashEMShowerProfile* theProfile;
0048 
0049   G4Region* theRegion;
0050 
0051   G4Step* theGflashStep;
0052   G4Navigator* theGflashNavigator;
0053   G4TouchableHandle theGflashTouchableHandle;
0054 };
0055 #endif