Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 //
0002 // CMSSimEventManager is designed on top of G4EventManager
0003 //
0004 // 13.03.2023 V.Ivanchenko
0005 //
0006 
0007 // --------------------------------------------------------------------
0008 #ifndef SimG4Core_Application_CMSSimEventManager_hh
0009 #define SimG4Core_Application_CMSSimEventManager_hh 1
0010 
0011 #include <vector>
0012 #include "globals.hh"
0013 #include "G4Track.hh"
0014 #include "G4TrackVector.hh"
0015 
0016 namespace edm {
0017   class ParameterSet;
0018 }
0019 
0020 class G4Event;
0021 class EventAction;
0022 class StackingAction;
0023 class TrackingAction;
0024 class G4UserSteppingAction;
0025 class G4SDManager;
0026 class G4StateManager;
0027 class G4PrimaryTransformer;
0028 class G4TrackingManager;
0029 class G4Navigator;
0030 
0031 class CMSSimEventManager {
0032 public:
0033   CMSSimEventManager(const edm::ParameterSet& iConfig);
0034   ~CMSSimEventManager();
0035 
0036   void InitialiseWorker();
0037 
0038   // This method is the main entry to this class for simulating an event.
0039   void ProcessOneEvent(G4Event* anEvent);
0040 
0041   // This method aborts the processing of the current event.
0042   void AbortCurrentEvent();
0043 
0044   void SetUserAction(EventAction* ptr);
0045   void SetUserAction(StackingAction* ptr);
0046   void SetUserAction(TrackingAction* ptr);
0047   void SetUserAction(G4UserSteppingAction* ptr);
0048 
0049   CMSSimEventManager(const CMSSimEventManager& right) = delete;
0050   CMSSimEventManager& operator=(const CMSSimEventManager& right) = delete;
0051 
0052 private:
0053   void StackTracks(G4TrackVector*, bool IDisSet);
0054 
0055   G4StateManager* m_stateManager;
0056   G4TrackingManager* m_defTrackManager;
0057   G4SDManager* m_sdManager;
0058   G4PrimaryTransformer* m_primaryTransformer;
0059   G4Navigator* m_navigator;
0060 
0061   EventAction* m_eventAction;
0062   StackingAction* m_stackingAction;
0063   TrackingAction* m_trackingAction;
0064 
0065   G4int trackID_{0};
0066   G4int verbose_;
0067 
0068   std::vector<G4Track*> m_tracks;
0069 };
0070 
0071 #endif