00001 #ifndef SimG4Core_SteppingAction_H 00002 #define SimG4Core_SteppingAction_H 00003 00004 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00005 #include "SimG4Core/Notification/interface/SimActivityRegistry.h" 00006 00007 #include "G4UserSteppingAction.hh" 00008 #include "G4VPhysicalVolume.hh" 00009 00010 class EventAction; 00011 class G4VTouchable; 00012 00013 class SteppingAction: public G4UserSteppingAction 00014 { 00015 public: 00016 SteppingAction(EventAction * ea,const edm::ParameterSet & ps); 00017 ~SteppingAction(); 00018 void UserSteppingAction(const G4Step * aStep); 00019 00020 SimActivityRegistry::G4StepSignal m_g4StepSignal; 00021 private: 00022 void catchLowEnergyInVacuumHere(const G4Step * aStep); 00023 void catchLowEnergyInVacuumNext(const G4Step * aStep); 00024 bool initPointer(); 00025 bool isThisVolume(const G4VTouchable* touch, G4VPhysicalVolume* pv); 00026 private: 00027 EventAction * eventAction_; 00028 bool killBeamPipe; 00029 double theCriticalEnergyForVacuum; 00030 double theCriticalDensity; 00031 int verbose; 00032 bool initialized; 00033 G4VPhysicalVolume *tracker, *calo; 00034 }; 00035 00036 #endif