00001 #ifndef SimG4Core_TrackingAction_H 00002 #define SimG4Core_TrackingAction_H 00003 00004 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00005 #include "SimG4Core/Notification/interface/SimActivityRegistry.h" 00006 00007 #include "G4UserTrackingAction.hh" 00008 #include "G4VSolid.hh" 00009 00010 class EventAction; 00011 class TrackWithHistory; 00012 class BeginOfTrack; 00013 class EndOfTrack; 00014 00015 class TrackingAction : public G4UserTrackingAction 00016 { 00017 public: 00018 TrackingAction(EventAction * ea, const edm::ParameterSet & ps); 00019 virtual ~TrackingAction(); 00020 virtual void PreUserTrackingAction(const G4Track * aTrack); 00021 virtual void PostUserTrackingAction(const G4Track * aTrack); 00022 TrackWithHistory * currentTrackWithHistory() { return currentTrack_; } 00023 G4TrackingManager * getTrackManager(); 00024 00025 SimActivityRegistry::BeginOfTrackSignal m_beginOfTrackSignal; 00026 SimActivityRegistry::EndOfTrackSignal m_endOfTrackSignal; 00027 private: 00028 bool isNewPrimary(const G4Track * aTrack); 00029 private: 00030 EventAction * eventAction_; 00031 TrackWithHistory * currentTrack_; 00032 G4VSolid * worldSolid; 00033 bool detailedTiming; 00034 int trackMgrVerbose; 00035 }; 00036 00037 #endif