CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RunManager.cc
Go to the documentation of this file.
10 
20 
23 
27 
32 
34 
36 
39 
40 #include "HepPDT/defs.h"
41 #include "HepPDT/TableBuilder.hh"
42 #include "HepPDT/ParticleDataTable.hh"
44 
45 #include "G4StateManager.hh"
46 #include "G4ApplicationState.hh"
47 #include "G4RunManagerKernel.hh"
48 #include "G4UImanager.hh"
49 
50 #include "G4EventManager.hh"
51 #include "G4Run.hh"
52 #include "G4Event.hh"
53 #include "G4TransportationManager.hh"
54 #include "G4ParticleTable.hh"
55 
56 #include "G4GDMLParser.hh"
57 
58 #include <iostream>
59 #include <sstream>
60 #include <fstream>
61 #include <memory>
62 
64 
66 
67 static
69  SimActivityRegistry& iReg,
70  std::vector<boost::shared_ptr<SimWatcher> >& oWatchers,
71  std::vector<boost::shared_ptr<SimProducer> >& oProds
72  )
73 {
74  using namespace std;
75  using namespace edm;
76  vector<ParameterSet> watchers;
77  try {
78  watchers = iP.getParameter<vector<ParameterSet> >("Watchers");
79  } catch( edm::Exception) {
80  }
81 
82  for(vector<ParameterSet>::iterator itWatcher = watchers.begin();
83  itWatcher != watchers.end();
84  ++itWatcher) {
85  std::auto_ptr<SimWatcherMakerBase> maker(
87  (itWatcher->getParameter<std::string> ("type")) );
88  if(maker.get()==0) {
89  throw SimG4Exception("Unable to find the requested Watcher");
90  }
91 
92  boost::shared_ptr<SimWatcher> watcherTemp;
93  boost::shared_ptr<SimProducer> producerTemp;
94  maker->make(*itWatcher,iReg,watcherTemp,producerTemp);
95  oWatchers.push_back(watcherTemp);
96  if(producerTemp) {
97  oProds.push_back(producerTemp);
98  }
99  }
100 }
101 
102 // RunManager * RunManager::me = 0;
103 /*
104 RunManager * RunManager::init(edm::ParameterSet const & p)
105 {
106  if (me != 0) abort();
107  me = new RunManager(p);
108  return me;
109 }
110 
111 RunManager * RunManager::instance()
112 {
113  if (me==0) abort();
114  return me;
115 }
116 */
117 
119  : m_generator(0), m_nonBeam(p.getParameter<bool>("NonBeamEvent")),
120  m_primaryTransformer(0),
121  m_managerInitialized(false),
122  //m_geometryInitialized(true), m_physicsInitialized(true),
123  m_runInitialized(false), m_runTerminated(false), m_runAborted(false),
124  firstRun(true),
125  m_pUseMagneticField(p.getParameter<bool>("UseMagneticField")),
126  m_currentRun(0), m_currentEvent(0), m_simEvent(0),
127  m_PhysicsTablesDir(p.getParameter<std::string>("PhysicsTablesDirectory")),
128  m_StorePhysicsTables(p.getParameter<bool>("StorePhysicsTables")),
129  m_RestorePhysicsTables(p.getParameter<bool>("RestorePhysicsTables")),
130  m_EvtMgrVerbosity(p.getUntrackedParameter<int>("G4EventManagerVerbosity",0)),
131  m_Override(p.getParameter<bool>("OverrideUserStackingAction")),
132  m_pField(p.getParameter<edm::ParameterSet>("MagneticField")),
133  m_pGenerator(p.getParameter<edm::ParameterSet>("Generator")),
134  m_pPhysics(p.getParameter<edm::ParameterSet>("Physics")),
135  m_pRunAction(p.getParameter<edm::ParameterSet>("RunAction")),
136  m_pEventAction(p.getParameter<edm::ParameterSet>("EventAction")),
137  m_pStackingAction(p.getParameter<edm::ParameterSet>("StackingAction")),
138  m_pTrackingAction(p.getParameter<edm::ParameterSet>("TrackingAction")),
139  m_pSteppingAction(p.getParameter<edm::ParameterSet>("SteppingAction")),
140  m_G4Commands(p.getParameter<std::vector<std::string> >("G4Commands")),
141  m_p(p), m_fieldBuilder(0),
142  m_theLHCTlinkTag(p.getParameter<edm::InputTag>("theLHCTlinkTag"))
143 {
144  m_kernel = G4RunManagerKernel::GetRunManagerKernel();
145  if (m_kernel==0) m_kernel = new G4RunManagerKernel();
146 
148 
149  m_check = p.getUntrackedParameter<bool>("CheckOverlap",false);
150  m_WriteFile = p.getUntrackedParameter<std::string>("FileNameGDML","");
151 
152  //Look for an outside SimActivityRegistry
153  // this is used by the visualization code
154  edm::Service<SimActivityRegistry> otherRegistry;
155  if(otherRegistry){
156  m_registry.connect(*otherRegistry);
157  }
158 
160 }
161 
163 {
164  if (m_kernel!=0) delete m_kernel;
165 }
166 
168 {
169 
170  bool geomChanged = idealGeomRcdWatcher_.check(es);
171  if (geomChanged && (!firstRun)) {
172  throw cms::Exception("BadConfig")
173  << "[SimG4Core RunManager]\n"
174  << "The Geometry configuration is changed during the job execution\n"
175  << "this is not allowed, the geometry must stay unchanged\n";
176  }
177  if (m_pUseMagneticField) {
178  bool magChanged = idealMagRcdWatcher_.check(es);
179  if (magChanged && (!firstRun)) {
180  throw cms::Exception("BadConfig")
181  << "[SimG4Core RunManager]\n"
182  << "The MagneticField configuration is changed during the job execution\n"
183  << "this is not allowed, the MagneticField must stay unchanged\n";
184  }
185  }
186 
187  if (m_managerInitialized) return;
188 
189  // DDDWorld: get the DDCV from the ES and use it to build the World
191  es.get<IdealGeometryRecord>().get(pDD);
192 
194  SensitiveDetectorCatalog catalog_;
195  const DDDWorld * world = new DDDWorld(&(*pDD), map_, catalog_, m_check);
197 
198  if("" != m_WriteFile) {
199  G4GDMLParser gdml;
200  gdml.Write(m_WriteFile, world->GetWorldVolume());
201  }
202 
204  {
205  // setup the magnetic field
207  es.get<IdealMagneticFieldRecord>().get(pMF);
208  const GlobalPoint g(0.,0.,0.);
209 
210  // m_fieldBuilder = std::auto_ptr<sim::FieldBuilder>(new sim::FieldBuilder(&(*pMF), map_, m_pField));
211  m_fieldBuilder = (new sim::FieldBuilder(&(*pMF), m_pField));
212  G4TransportationManager * tM =
213  G4TransportationManager::GetTransportationManager();
214  m_fieldBuilder->build( tM->GetFieldManager(),tM->GetPropagatorInField());
215  // m_fieldBuilder->configure("MagneticFieldType",tM->GetFieldManager(),tM->GetPropagatorInField());
216  }
217 
218  // we need the track manager now
219  m_trackManager = std::auto_ptr<SimTrackManager>(new SimTrackManager);
220 
221  m_attach = new AttachSD;
222  {
223  std::pair< std::vector<SensitiveTkDetector*>,
224  std::vector<SensitiveCaloDetector*> > sensDets = m_attach->create(*world,(*pDD),catalog_,m_p,m_trackManager.get(),m_registry);
225 
226  m_sensTkDets.swap(sensDets.first);
227  m_sensCaloDets.swap(sensDets.second);
228  }
229 
230 
231  edm::LogInfo("SimG4CoreApplication") << " RunManager: Sensitive Detector building finished; found " << m_sensTkDets.size()
232  << " Tk type Producers, and " << m_sensCaloDets.size() << " Calo type producers ";
233 
235  es.get<PDTRecord>().get(fTable);
236  const HepPDT::ParticleDataTable *fPDGTable = &(*fTable);
237 
239  // m_InTag = m_pGenerator.getParameter<edm::InputTag>("HepMCProductLabel") ;
240  m_InTag = m_pGenerator.getParameter<std::string>("HepMCProductLabel") ;
242 
243  std::auto_ptr<PhysicsListMakerBase> physicsMaker(
245  (m_pPhysics.getParameter<std::string> ("type")));
246  if (physicsMaker.get()==0) throw SimG4Exception("Unable to find the Physics list requested");
247  m_physicsList = physicsMaker->make(map_,fPDGTable,m_fieldBuilder,m_pPhysics,m_registry);
248 
249 
250  PhysicsList* phys = m_physicsList.get();
251  if (phys==0) throw SimG4Exception("Physics list construction failed!");
252 
253  // adding GFlash and Russian Roulette for eletrons and gamma
254  // on top of any Physics Lists
255  phys->RegisterPhysics(new ParametrisedEMPhysics("EMoptions",m_pPhysics));
256 
257  m_kernel->SetPhysics(phys);
258  m_kernel->InitializePhysics();
259 
260  m_physicsList->ResetStoredInAscii();
261  std::string tableDir = m_PhysicsTablesDir;
262  if (m_RestorePhysicsTables) m_physicsList->SetPhysicsTableRetrieved(tableDir);
263 
264  if (m_kernel->RunInitialization()) m_managerInitialized = true;
265  else throw SimG4Exception("G4RunManagerKernel initialization failed!");
266 
268  {
269  std::ostringstream dir;
270  dir << tableDir << '\0';
271  std::string cmd = std::string("/control/shell mkdir -p ")+tableDir;
272  if (!std::ifstream(dir.str().c_str(), std::ios::in))
273  G4UImanager::GetUIpointer()->ApplyCommand(cmd);
274  m_physicsList->StorePhysicsTable(tableDir);
275  }
276 
277  //tell all interesting parties that we are beginning the job
278  BeginOfJob aBeginOfJob(&es);
279  m_registry.beginOfJobSignal_(&aBeginOfJob);
280 
282 
283  for (unsigned it=0; it<m_G4Commands.size(); it++) {
284  edm::LogInfo("SimG4CoreApplication") << "RunManager:: Requests UI: "
285  << m_G4Commands[it];
286  G4UImanager::GetUIpointer()->ApplyCommand(m_G4Commands[it]);
287  }
288 
289  // If the Geant4 particle table is needed, decomment the lines below
290  //
291  // G4cout << "Output of G4ParticleTable DumpTable:" << G4endl;
292  // G4ParticleTable::GetParticleTable()->DumpTable("ALL");
293 
294  initializeRun();
295  firstRun= false;
296 
297 }
298 
300 {
301  m_currentEvent = generateEvent(inpevt);
302  m_simEvent = new G4SimEvent;
305  if (m_generator->genVertex()!=0)
307  m_generator->genVertex()->y()/centimeter,
308  m_generator->genVertex()->z()/centimeter,
309  m_generator->genVertex()->t()/second));
310 
311  if (m_currentEvent->GetNumberOfPrimaryVertex()==0)
312  {
313 
314  edm::LogError("SimG4CoreApplication")
315  << " RunManager::produce event " << inpevt.id().event()
316  << " with no G4PrimaryVertices \n Aborting Run" ;
317 
318  abortRun(false);
319  }
320  else
321  m_kernel->GetEventManager()->ProcessOneEvent(m_currentEvent);
322 
323 
324  edm::LogInfo("SimG4CoreApplication")
325  << " RunManager: saved : Event " << inpevt.id().event() << " of weight " << m_simEvent->weight()
326  << " with " << m_simEvent->nTracks() << " tracks and " << m_simEvent->nVertices()
327  << " vertices, generated by " << m_simEvent->nGenParts() << " particles " ;
328 
329 }
330 
332 {
333 
334  if (m_currentEvent!=0) delete m_currentEvent;
335  m_currentEvent = 0;
336  if (m_simEvent!=0) delete m_simEvent;
337  m_simEvent = 0;
338  G4Event * e = new G4Event(inpevt.id().event());
339 
340  // std::vector< edm::Handle<edm::HepMCProduct> > AllHepMCEvt;
342 
343  // inpevt.getByType(HepMCEvt);
344  // inpevt.getManyByType(AllHepMCEvt);
345  inpevt.getByLabel( m_InTag, HepMCEvt ) ;
346 
347  // actually, it's a double protection - it's not even necessary
348  // because getByLabel will throw if the correct product isn't there
349  if (!HepMCEvt.isValid())
350  {
351  throw SimG4Exception("Unable to find HepMCProduct(HepMC::GenEvent) in edm::Event ");
352  }
353  else
354  {
355  m_generator->setGenEvent(HepMCEvt->GetEvent());
356 
357  // required to reset the GenParticle Id for particles transported along the beam pipe
358  // to their original value for SimTrack creation
359  resetGenParticleId( inpevt );
360 
361  if (!m_nonBeam)
362  {
363  m_generator->HepMC2G4(HepMCEvt->GetEvent(),e);
364  }
365  else
366  {
367  m_generator->nonBeamEvent2G4(HepMCEvt->GetEvent(),e);
368  }
369  }
370 
371  return e;
372 
373 }
374 
376 {
377 
378  G4Track* t =
379  m_kernel->GetEventManager()->GetTrackingManager()->GetTrack();
380  t->SetTrackStatus(fStopAndKill) ;
381 
382  // CMS-specific act
383  //
384  TrackingAction* uta =
385  (TrackingAction*)m_kernel->GetEventManager()->GetUserTrackingAction() ;
386  uta->PostUserTrackingAction(t) ;
387 
388  m_currentEvent->SetEventAborted();
389 
390  // do NOT call this method for now
391  // because it'll set abortRequested=true (withing G4EventManager)
392  // this will make Geant4, in the event *next* after the aborted one
393  // NOT to get the primamry, thus there's NOTHING to trace, and it goes
394  // to the end of G4Event::DoProcessing(G4Event*), where abortRequested
395  // will be reset to true again
396  //
397  //m_kernel->GetEventManager()->AbortCurrentEvent();
398  //
399  // instead, mimic what it does, except (re)setting abortRequested
400  //
401  m_kernel->GetEventManager()->GetStackManager()->clear() ;
402  m_kernel->GetEventManager()->GetTrackingManager()->EventAborted() ;
403 
404  G4StateManager* stateManager = G4StateManager::GetStateManager();
405  stateManager->SetNewState(G4State_GeomClosed);
406 
407  return ;
408 
409 }
410 
412 {
413 
414  RunAction* userRunAction = new RunAction(m_pRunAction,this);
415  m_userRunAction = userRunAction;
418 
419  G4EventManager * eventManager = m_kernel->GetEventManager();
420  eventManager->SetVerboseLevel(m_EvtMgrVerbosity);
421  if (m_generator!=0)
422  {
423  EventAction * userEventAction = new EventAction(m_pEventAction,this,m_trackManager.get());
424  //userEventAction->SetRunManager(this) ;
427  eventManager->SetUserAction(userEventAction);
428  TrackingAction* userTrackingAction = new TrackingAction(userEventAction,m_pTrackingAction);
431  eventManager->SetUserAction(userTrackingAction);
432 
433  SteppingAction* userSteppingAction = new SteppingAction(userEventAction,m_pSteppingAction);
434  userSteppingAction->m_g4StepSignal.connect(m_registry.g4StepSignal_);
435  eventManager->SetUserAction(userSteppingAction);
436  if (m_Override)
437  {
438  edm::LogInfo("SimG4CoreApplication") << " RunManager: user StackingAction overridden " ;
439  eventManager->SetUserAction(new StackingAction(m_pStackingAction));
440  }
441  }
442  else
443  {
444  edm::LogWarning("SimG4CoreApplication") << " RunManager: WARNING : No generator; initialized only RunAction!";
445  }
446 
447  return;
448 
449 }
450 
452 {
453 
454  m_runInitialized = false;
455  if (m_currentRun==0) m_currentRun = new G4Run();
456  // m_currentRun->SetRunID(m_RunNumber); // run on default runID=0; doesn't matter...
457  G4StateManager::GetStateManager()->SetNewState(G4State_GeomClosed);
458  if (m_userRunAction!=0) m_userRunAction->BeginOfRunAction(m_currentRun);
459  m_runAborted = false;
460  m_runInitialized = true;
461 
462  return ;
463 
464 }
465 
467 {
468 
469  m_runTerminated = false;
470  if (m_userRunAction!=0)
471  {
472  m_userRunAction->EndOfRunAction(m_currentRun);
473  delete m_userRunAction; m_userRunAction = 0;
474  }
475  if (m_currentRun!=0) { delete m_currentRun; m_currentRun = 0; }
476  if (m_kernel!=0) m_kernel->RunTermination();
477  m_runInitialized = false;
478  m_runTerminated = true;
479 
480  return;
481 
482 }
483 
484 void RunManager::abortRun(bool softAbort)
485 {
486 
487  m_runAborted = false;
488  if (!softAbort) abortEvent();
489  if (m_currentRun!=0) { delete m_currentRun; m_currentRun = 0; }
490  m_runInitialized = false;
491  m_runAborted = true;
492 
493  return;
494 
495 }
496 
498 
500  inpevt.getByLabel( m_theLHCTlinkTag, theLHCTlink );
501  if ( theLHCTlink.isValid() ) {
502  m_trackManager->setLHCTransportLink( theLHCTlink.product() );
503  }
504 
505 }
T getParameter(std::string const &) const
bool m_check
Definition: RunManager.h:112
EventNumber_t event() const
Definition: EventID.h:44
edm::ParameterSet m_pGenerator
Definition: RunManager.h:115
T getUntrackedParameter(std::string const &, T const &) const
std::auto_ptr< SimTrackManager > m_trackManager
Definition: RunManager.h:135
std::pair< std::vector< SensitiveTkDetector * >, std::vector< SensitiveCaloDetector * > > create(const DDDWorld &w, const DDCompactView &cpv, SensitiveDetectorCatalog &clg, edm::ParameterSet const &p, const SimTrackManager *m, SimActivityRegistry &reg) const
Definition: AttachSD.cc:23
virtual const math::XYZTLorentzVector * genVertex() const
Definition: Generator.h:31
edm::ESWatcher< IdealMagneticFieldRecord > idealMagRcdWatcher_
Definition: RunManager.h:139
const G4VPhysicalVolume * GetWorldVolume() const
Definition: DDDWorld.h:17
G4UserRunAction * m_userRunAction
Definition: RunManager.h:106
virtual const double eventWeight() const
Definition: Generator.h:32
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:15
G4Event * m_currentEvent
Definition: RunManager.h:104
void abortRun(bool softAbort=false)
Definition: RunManager.cc:484
SimActivityRegistry m_registry
Definition: RunManager.h:131
virtual const HepMC::GenEvent * genEvent() const
Definition: Generator.h:30
edm::ParameterSet m_p
Definition: RunManager.h:124
SimActivityRegistry::G4StepSignal m_g4StepSignal
HepPDT::ParticleDataTable ParticleDataTable
void initializeRun()
Definition: RunManager.cc:451
void HepMC2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:74
EndOfEventSignal endOfEventSignal_
void initializeUserActions()
Definition: RunManager.cc:411
SimActivityRegistry::EndOfRunSignal m_endOfRunSignal
Definition: RunAction.h:23
Generator * m_generator
Definition: RunManager.h:88
void build(G4FieldManager *fM=0, G4PropagatorInField *fP=0)
Definition: FieldBuilder.cc:49
BeginOfRunSignal beginOfRunSignal_
string firstRun
Definition: dataset.py:395
SimActivityRegistry::EndOfEventSignal m_endOfEventSignal
Definition: EventAction.h:46
bool m_pUseMagneticField
Definition: RunManager.h:102
edm::ESWatcher< IdealGeometryRecord > idealGeomRcdWatcher_
Definition: RunManager.h:138
ExceptionHandler * m_CustomExceptionHandler
Definition: RunManager.h:125
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
void abortEvent()
Definition: RunManager.cc:375
std::vector< SensitiveCaloDetector * > m_sensCaloDets
Definition: RunManager.h:129
std::vector< SensitiveTkDetector * > m_sensTkDets
Definition: RunManager.h:128
BeginOfJobSignal beginOfJobSignal_
bool m_nonBeam
Definition: RunManager.h:92
U second(std::pair< T, U > const &p)
void weight(float w)
Definition: G4SimEvent.h:27
bool m_Override
Definition: RunManager.h:111
int m_EvtMgrVerbosity
Definition: RunManager.h:110
std::auto_ptr< PhysicsList > m_physicsList
Definition: RunManager.h:93
std::string m_WriteFile
Definition: RunManager.h:143
bool firstRun
Definition: RunManager.h:101
void terminateRun()
Definition: RunManager.cc:466
edm::serviceregistry::AllArgsMaker< DTDataMonitorInterface, DTDataIntegrityTask > maker
Definition: plugins.cc:73
string cmd
Definition: asciidump.py:19
virtual ~RunManager()
Definition: RunManager.cc:162
bool m_RestorePhysicsTables
Definition: RunManager.h:109
void hepEvent(const HepMC::GenEvent *r)
Definition: G4SimEvent.h:25
void setGenEvent(const HepMC::GenEvent *inpevt)
Definition: Generator.h:27
BeginOfEventSignal beginOfEventSignal_
SimActivityRegistry::EndOfTrackSignal m_endOfTrackSignal
bool isValid() const
Definition: HandleBase.h:76
G4Run * m_currentRun
Definition: RunManager.h:103
void resetGenParticleId(edm::Event &inpevt)
Definition: RunManager.cc:497
EndOfRunSignal endOfRunSignal_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
edm::ParameterSet m_pStackingAction
Definition: RunManager.h:120
unsigned int nTracks() const
Definition: G4SimEvent.h:22
void connect(Observer< const T * > *iObs)
does not take ownership of memory
Definition: Signaler.h:60
edm::ParameterSet m_pEventAction
Definition: RunManager.h:119
bool m_runTerminated
Definition: RunManager.h:99
unsigned int nVertices() const
Definition: G4SimEvent.h:23
edm::ParameterSet m_pField
Definition: RunManager.h:114
edm::ParameterSet m_pPhysics
Definition: RunManager.h:117
edm::ParameterSet m_pSteppingAction
Definition: RunManager.h:122
virtual void PostUserTrackingAction(const G4Track *aTrack)
unsigned int nGenParts() const
Definition: G4SimEvent.h:24
DDDWorldSignal dddWorldSignal_
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: Handle.h:74
void nonBeamEvent2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:401
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:59
std::string m_InTag
Definition: RunManager.h:90
G4Event * generateEvent(edm::Event &inpevt)
Definition: RunManager.cc:331
bool m_runInitialized
Definition: RunManager.h:98
SimActivityRegistry::BeginOfRunSignal m_beginOfRunSignal
Definition: RunAction.h:22
edm::EventID id() const
Definition: EventBase.h:56
static void createWatchers(const edm::ParameterSet &iP, SimActivityRegistry &iReg, std::vector< boost::shared_ptr< SimWatcher > > &oWatchers, std::vector< boost::shared_ptr< SimProducer > > &oProds)
Definition: RunManager.cc:68
AttachSD * m_attach
Definition: RunManager.h:127
PrimaryTransformer * m_primaryTransformer
Definition: RunManager.h:94
sim::FieldBuilder * m_fieldBuilder
Definition: RunManager.h:136
std::string m_PhysicsTablesDir
Definition: RunManager.h:107
bool m_StorePhysicsTables
Definition: RunManager.h:108
void connect(SimActivityRegistry &iOther)
forwards our signals to slots connected to iOther
dbl *** dir
Definition: mlp_gen.cc:35
EndOfTrackSignal endOfTrackSignal_
std::vector< boost::shared_ptr< SimProducer > > m_producers
Definition: RunManager.h:133
std::vector< boost::shared_ptr< SimWatcher > > m_watchers
Definition: RunManager.h:132
edm::ParameterSet m_pRunAction
Definition: RunManager.h:118
RunManager(edm::ParameterSet const &p)
Definition: RunManager.cc:118
edm::ParameterSet m_pTrackingAction
Definition: RunManager.h:121
void collisionPoint(const math::XYZTLorentzVectorD &v)
Definition: G4SimEvent.h:29
std::vector< std::string > m_G4Commands
Definition: RunManager.h:123
SurfaceDeformation * create(int type, const std::vector< double > &params)
SimActivityRegistry::BeginOfEventSignal m_beginOfEventSignal
Definition: EventAction.h:45
G4SimEvent * m_simEvent
Definition: RunManager.h:105
bool m_managerInitialized
Definition: RunManager.h:95
void initG4(const edm::EventSetup &es)
Definition: RunManager.cc:167
T get(const Candidate &c)
Definition: component.h:56
edm::InputTag m_theLHCTlinkTag
Definition: RunManager.h:141
BeginOfTrackSignal beginOfTrackSignal_
G4RunManagerKernel * m_kernel
Definition: RunManager.h:86
bool m_runAborted
Definition: RunManager.h:100
void produce(edm::Event &inpevt, const edm::EventSetup &es)
Definition: RunManager.cc:299
SimActivityRegistry::BeginOfTrackSignal m_beginOfTrackSignal