CMS 3D CMS Logo

RunManagerMT.h
Go to the documentation of this file.
1 #ifndef SimG4Core_RunManagerMT_H
2 #define SimG4Core_RunManagerMT_H
3 
9 
11 
13 
14 #include <memory>
15 
16 namespace sim {
17  class ChordFinderSetter;
18 }
19 
20 class PrimaryTransformer;
21 class Generator;
22 class PhysicsList;
23 class CustomUIsession;
24 
25 class SimWatcher;
26 class SimProducer;
27 class G4SimEvent;
28 
29 class RunAction;
30 
31 class DDCompactView;
32 class DDDWorld;
33 class DDG4ProductionCuts;
34 class MagneticField;
35 
36 class G4MTRunManagerKernel;
37 class G4Run;
38 class G4Event;
39 class G4Field;
40 class G4StateManager;
41 class G4GeometryManager;
42 class RunAction;
43 
44 class SimRunInterface;
45 
46 namespace HepPDT {
47  class ParticleDataTable;
48 }
49 
55 class RunManagerMTWorker;
56 
58 {
59  friend class RunManagerMTWorker;
60 
61 public:
62  explicit RunManagerMT(edm::ParameterSet const & p);
63  ~RunManagerMT();
64 
65  void initG4(const DDCompactView *pDD, const MagneticField *pMF, const HepPDT::ParticleDataTable *fPDGTable);
66 
67  void initializeUserActions();
68 
69  void stopG4();
70 
71  void Connect(RunAction*);
72 
73  // Keep this to keep ExceptionHandler to compile, probably removed
74  // later (or functionality moved to RunManagerMTWorker)
75  inline void abortRun(bool softAbort=false) {}
76 
77  inline const DDDWorld& world() const {
78  return *m_world;
79  }
80 
81  inline const SensitiveDetectorCatalog& catalog() const {
82  return m_catalog;
83  }
84 
85  inline const std::vector<std::string>& G4Commands() const {
86  return m_G4Commands;
87  }
88 
89  // In order to share the physics list with the worker threads, we
90  // need a non-const pointer. Thread-safety is handled inside Geant4
91  // with TLS.
93  return m_physicsList.get();
94  }
95 
96 private:
97  void terminateRun();
98  void DumpMagneticField( const G4Field*) const;
99 
100  G4MTRunManagerKernel * m_kernel;
101 
102  std::unique_ptr<CustomUIsession> m_UIsession;
103  std::unique_ptr<PhysicsList> m_physicsList;
108  G4Run* m_currentRun;
109  G4StateManager* m_stateManager;
110  G4GeometryManager* m_geometryManager;
111 
112  std::unique_ptr<SimRunInterface> m_runInterface;
113 
117  bool m_check;
122  std::vector<std::string> m_G4Commands;
124 
125  std::unique_ptr<DDDWorld> m_world;
126  std::unique_ptr<DDG4ProductionCuts> m_prodCuts;
129 
130  std::unique_ptr<sim::ChordFinderSetter> m_chordFinderSetter;
131 
135 };
136 
137 #endif
const std::string m_PhysicsTablesDir
Definition: RunManagerMT.h:114
bool m_managerInitialized
Definition: RunManagerMT.h:104
const SensitiveDetectorCatalog & catalog() const
Definition: RunManagerMT.h:81
std::unique_ptr< DDG4ProductionCuts > m_prodCuts
Definition: RunManagerMT.h:126
G4MTRunManagerKernel * m_kernel
Definition: RunManagerMT.h:100
SensitiveDetectorCatalog m_catalog
Definition: RunManagerMT.h:128
edm::ParameterSet m_pRunAction
Definition: RunManagerMT.h:120
HepPDT::ParticleDataTable ParticleDataTable
void abortRun(bool softAbort=false)
Definition: RunManagerMT.h:75
bool m_runTerminated
Definition: RunManagerMT.h:105
G4StateManager * m_stateManager
Definition: RunManagerMT.h:109
std::vector< std::string > m_G4Commands
Definition: RunManagerMT.h:122
std::unique_ptr< CustomUIsession > m_UIsession
Definition: RunManagerMT.h:102
G4Run * m_currentRun
Definition: RunManagerMT.h:108
std::string m_RegionFile
Definition: RunManagerMT.h:134
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:80
std::string m_WriteFile
Definition: RunManagerMT.h:133
const DDDWorld & world() const
Definition: RunManagerMT.h:77
bool m_pUseMagneticField
Definition: RunManagerMT.h:106
edm::ParameterSet m_p
Definition: RunManagerMT.h:123
Definition: RunManager.h:28
bool m_StorePhysicsTables
Definition: RunManagerMT.h:115
G4GeometryManager * m_geometryManager
Definition: RunManagerMT.h:110
std::unique_ptr< PhysicsList > m_physicsList
Definition: RunManagerMT.h:103
std::string m_FieldFile
Definition: RunManagerMT.h:132
edm::ParameterSet m_pField
Definition: RunManagerMT.h:118
std::unique_ptr< DDDWorld > m_world
Definition: RunManagerMT.h:125
PhysicsList * physicsListForWorker() const
Definition: RunManagerMT.h:92
edm::ParameterSet m_pPhysics
Definition: RunManagerMT.h:119
bool m_RestorePhysicsTables
Definition: RunManagerMT.h:116
std::unique_ptr< sim::ChordFinderSetter > m_chordFinderSetter
Definition: RunManagerMT.h:130
const std::vector< std::string > & G4Commands() const
Definition: RunManagerMT.h:85
std::unique_ptr< SimRunInterface > m_runInterface
Definition: RunManagerMT.h:112
edm::ParameterSet m_g4overlap
Definition: RunManagerMT.h:121
RunAction * m_userRunAction
Definition: RunManagerMT.h:107
void Connect(RunAction *)
SimActivityRegistry m_registry
Definition: RunManagerMT.h:127