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.
17 
19 
26 
29 
33 
35 
40 
43 
45 
46 #include "HepPDT/ParticleDataTable.hh"
48 
49 #include "G4GeometryManager.hh"
50 #include "G4StateManager.hh"
51 #include "G4ApplicationState.hh"
52 #include "G4RunManagerKernel.hh"
53 #include "G4UImanager.hh"
54 
55 #include "G4EventManager.hh"
56 #include "G4Run.hh"
57 #include "G4Event.hh"
58 #include "G4TransportationManager.hh"
59 #include "G4ParticleTable.hh"
60 #include "G4Field.hh"
61 #include "G4FieldManager.hh"
62 
63 #include "G4GDMLParser.hh"
64 #include "G4SystemOfUnits.hh"
65 
66 #include <iostream>
67 #include <sstream>
68 #include <fstream>
69 #include <memory>
70 
72 
73 static
75  SimActivityRegistry& iReg,
76  std::vector<std::shared_ptr<SimWatcher> >& oWatchers,
77  std::vector<std::shared_ptr<SimProducer> >& oProds
78  )
79 {
80  using namespace std;
81  using namespace edm;
82  vector<ParameterSet> watchers;
83  try {
84  watchers = iP.getParameter<vector<ParameterSet> >("Watchers");
85  } catch( edm::Exception) {
86  }
87 
88  for(vector<ParameterSet>::iterator itWatcher = watchers.begin();
89  itWatcher != watchers.end();
90  ++itWatcher) {
91  std::auto_ptr<SimWatcherMakerBase> maker(
93  (itWatcher->getParameter<std::string> ("type")) );
94  if(maker.get()==0) {
95  throw SimG4Exception("Unable to find the requested Watcher");
96  }
97 
98  std::shared_ptr<SimWatcher> watcherTemp;
99  std::shared_ptr<SimProducer> producerTemp;
100  maker->make(*itWatcher,iReg,watcherTemp,producerTemp);
101  oWatchers.push_back(watcherTemp);
102  if(producerTemp) {
103  oProds.push_back(producerTemp);
104  }
105  }
106 }
107 
109  : m_generator(0), m_nonBeam(p.getParameter<bool>("NonBeamEvent")),
110  m_primaryTransformer(0),
111  m_managerInitialized(false),
112  m_runInitialized(false), m_runTerminated(false), m_runAborted(false),
113  firstRun(true),
114  m_pUseMagneticField(p.getParameter<bool>("UseMagneticField")),
115  m_currentRun(0), m_currentEvent(0), m_simEvent(0),
116  m_PhysicsTablesDir(p.getParameter<std::string>("PhysicsTablesDirectory")),
117  m_StorePhysicsTables(p.getParameter<bool>("StorePhysicsTables")),
118  m_RestorePhysicsTables(p.getParameter<bool>("RestorePhysicsTables")),
119  m_EvtMgrVerbosity(p.getUntrackedParameter<int>("G4EventManagerVerbosity",0)),
120  m_pField(p.getParameter<edm::ParameterSet>("MagneticField")),
121  m_pGenerator(p.getParameter<edm::ParameterSet>("Generator")),
122  m_pPhysics(p.getParameter<edm::ParameterSet>("Physics")),
123  m_pRunAction(p.getParameter<edm::ParameterSet>("RunAction")),
124  m_pEventAction(p.getParameter<edm::ParameterSet>("EventAction")),
125  m_pStackingAction(p.getParameter<edm::ParameterSet>("StackingAction")),
126  m_pTrackingAction(p.getParameter<edm::ParameterSet>("TrackingAction")),
127  m_pSteppingAction(p.getParameter<edm::ParameterSet>("SteppingAction")),
128  m_g4overlap(p.getParameter<edm::ParameterSet>("G4CheckOverlap")),
129  m_G4Commands(p.getParameter<std::vector<std::string> >("G4Commands")),
130  m_p(p), m_fieldBuilder(0), m_chordFinderSetter(nullptr),
131  m_theLHCTlinkTag(p.getParameter<edm::InputTag>("theLHCTlinkTag"))
132 {
133  m_kernel = G4RunManagerKernel::GetRunManagerKernel();
134  if (m_kernel==0) m_kernel = new G4RunManagerKernel();
135 
136  m_check = p.getUntrackedParameter<bool>("CheckOverlap",false);
137  m_WriteFile = p.getUntrackedParameter<std::string>("FileNameGDML","");
138  m_FieldFile = p.getUntrackedParameter<std::string>("FileNameField","");
139  m_RegionFile = p.getUntrackedParameter<std::string>("FileNameRegions","");
140 
141  m_userRunAction = 0;
142  m_runInterface = 0;
143 
144  //Look for an outside SimActivityRegistry
145  // this is used by the visualization code
146  edm::Service<SimActivityRegistry> otherRegistry;
147  if(otherRegistry){
148  m_registry.connect(*otherRegistry);
149  }
150 
152 
154  m_InTag = m_pGenerator.getParameter<std::string>("HepMCProductLabel") ;
155 
156 }
157 
159 {
160  if (!m_runTerminated) { terminateRun(); }
161  G4StateManager::GetStateManager()->SetNewState(G4State_Quit);
162  G4GeometryManager::GetInstance()->OpenGeometry();
163  // if (m_kernel!=0) delete m_kernel;
164  delete m_runInterface;
165 }
166 
168 {
169  bool geomChanged = idealGeomRcdWatcher_.check(es);
170  if (geomChanged && (!firstRun)) {
171  throw cms::Exception("BadConfig")
172  << "[SimG4Core RunManager]\n"
173  << "The Geometry configuration is changed during the job execution\n"
174  << "this is not allowed, the geometry must stay unchanged\n";
175  }
176  if (m_pUseMagneticField) {
177  bool magChanged = idealMagRcdWatcher_.check(es);
178  if (magChanged && (!firstRun)) {
179  throw cms::Exception("BadConfig")
180  << "[SimG4Core RunManager]\n"
181  << "The MagneticField configuration is changed during the job execution\n"
182  << "this is not allowed, the MagneticField must stay unchanged\n";
183  }
184  }
185 
186  if (m_managerInitialized) return;
187 
188  // DDDWorld: get the DDCV from the ES and use it to build the World
190  es.get<IdealGeometryRecord>().get(pDD);
191 
193  SensitiveDetectorCatalog catalog_;
194  const DDDWorld * world = new DDDWorld(&(*pDD), map_, catalog_, false);
196 
198  {
199  // setup the magnetic field
201  es.get<IdealMagneticFieldRecord>().get(pMF);
202  const GlobalPoint g(0.,0.,0.);
203 
205  m_fieldBuilder = new sim::FieldBuilder(&(*pMF), m_pField);
206  G4TransportationManager * tM =
207  G4TransportationManager::GetTransportationManager();
208  m_fieldBuilder->build( tM->GetFieldManager(),
209  tM->GetPropagatorInField(),
211  if("" != m_FieldFile) {
212  DumpMagneticField(tM->GetFieldManager()->GetDetectorField());
213  }
214  }
215 
216  // we need the track manager now
217  m_trackManager = std::auto_ptr<SimTrackManager>(new SimTrackManager);
218 
219  // attach sensitive detector
220  m_attach = new AttachSD;
221 
222  std::pair< std::vector<SensitiveTkDetector*>,
223  std::vector<SensitiveCaloDetector*> > sensDets =
224  m_attach->create(*world,(*pDD),catalog_,m_p,m_trackManager.get(),
225  m_registry);
226 
227  m_sensTkDets.swap(sensDets.first);
228  m_sensCaloDets.swap(sensDets.second);
229 
230  edm::LogInfo("SimG4CoreApplication")
231  << " RunManager: Sensitive Detector "
232  << "building finished; found "
233  << m_sensTkDets.size()
234  << " Tk type Producers, and "
235  << m_sensCaloDets.size()
236  << " Calo type producers ";
237 
239  es.get<PDTRecord>().get(fTable);
240  const HepPDT::ParticleDataTable *fPDGTable = &(*fTable);
241 
243 
244  std::auto_ptr<PhysicsListMakerBase>
245  physicsMaker(PhysicsListFactory::get()->create(
246  m_pPhysics.getParameter<std::string> ("type")));
247  if (physicsMaker.get()==0) {
248  throw SimG4Exception("Unable to find the Physics list requested");
249  }
250  m_physicsList =
251  physicsMaker->make(map_,fPDGTable,m_chordFinderSetter,m_pPhysics,m_registry);
252 
253  PhysicsList* phys = m_physicsList.get();
254  if (phys==0) {
255  throw SimG4Exception("Physics list construction failed!");
256  }
257 
258  // adding GFlash, Russian Roulette for eletrons and gamma,
259  // step limiters on top of any Physics Lists
260  phys->RegisterPhysics(new ParametrisedEMPhysics("EMoptions",m_pPhysics));
261 
262  m_physicsList->ResetStoredInAscii();
263  std::string tableDir = m_PhysicsTablesDir;
265  m_physicsList->SetPhysicsTableRetrieved(tableDir);
266  }
267  edm::LogInfo("SimG4CoreApplication")
268  << "RunManager: start initialisation of PhysicsList";
269 
270  m_kernel->SetPhysics(phys);
271  m_kernel->InitializePhysics();
272 
273  if (m_kernel->RunInitialization()) { m_managerInitialized = true; }
274  else {
275  throw SimG4Exception("G4RunManagerKernel initialization failed!");
276  }
277 
279  {
280  std::ostringstream dir;
281  dir << tableDir << '\0';
282  std::string cmd = std::string("/control/shell mkdir -p ")+tableDir;
283  if (!std::ifstream(dir.str().c_str(), std::ios::in))
284  G4UImanager::GetUIpointer()->ApplyCommand(cmd);
285  m_physicsList->StorePhysicsTable(tableDir);
286  }
287 
288  //tell all interesting parties that we are beginning the job
289  BeginOfJob aBeginOfJob(&es);
290  m_registry.beginOfJobSignal_(&aBeginOfJob);
291 
293 
294  if(0 < m_G4Commands.size()) {
295  G4cout << "RunManager: Requested UI commands: " << G4endl;
296  for (unsigned it=0; it<m_G4Commands.size(); ++it) {
297  G4cout << " " << m_G4Commands[it] << G4endl;
298  G4UImanager::GetUIpointer()->ApplyCommand(m_G4Commands[it]);
299  }
300  }
301 
302  if("" != m_WriteFile) {
303  G4GDMLParser gdml;
304  gdml.Write(m_WriteFile, world->GetWorldVolume(), true);
305  }
306 
307  if("" != m_RegionFile) {
308  G4RegionReporter rrep;
310  }
311 
313 
314  // If the Geant4 particle table is needed, decomment the lines below
315  //
316  // G4cout << "Output of G4ParticleTable DumpTable:" << G4endl;
317  // G4ParticleTable::GetParticleTable()->DumpTable("ALL");
318 
319  initializeRun();
320  firstRun= false;
321 }
322 
324 {
325  G4StateManager::GetStateManager()->SetNewState(G4State_Quit);
326  if (!m_runTerminated) { terminateRun(); }
327 }
328 
330 {
331  m_currentEvent = generateEvent(inpevt);
332  m_simEvent = new G4SimEvent;
335  if (m_generator->genVertex() !=0 ) {
338  m_generator->genVertex()->y()/centimeter,
339  m_generator->genVertex()->z()/centimeter,
340  m_generator->genVertex()->t()/second));
341  }
342  if (m_currentEvent->GetNumberOfPrimaryVertex()==0) {
343  edm::LogError("SimG4CoreApplication")
344  << " RunManager::produce event " << inpevt.id().event()
345  << " with no G4PrimaryVertices \n Aborting Run" ;
346 
347  abortRun(false);
348  } else {
349  m_kernel->GetEventManager()->ProcessOneEvent(m_currentEvent);
350  }
351 
352  edm::LogInfo("SimG4CoreApplication")
353  << " RunManager: saved : Event " << inpevt.id().event()
354  << " of weight " << m_simEvent->weight()
355  << " with " << m_simEvent->nTracks() << " tracks and "
356  << m_simEvent->nVertices()
357  << " vertices, generated by " << m_simEvent->nGenParts() << " particles ";
358 }
359 
361 {
362  if (m_currentEvent!=0) { delete m_currentEvent; }
363  m_currentEvent = 0;
364  if (m_simEvent!=0) { delete m_simEvent; }
365  m_simEvent = 0;
366 
367  // 64 bits event ID in CMSSW converted into Geant4 event ID
368  G4int evtid = (G4int)inpevt.id().event();
369  G4Event * evt = new G4Event(evtid);
370 
372 
373  inpevt.getByLabel( m_InTag, HepMCEvt ) ;
374 
375  m_generator->setGenEvent(HepMCEvt->GetEvent());
376 
377  // required to reset the GenParticle Id for particles transported
378  // along the beam pipe
379  // to their original value for SimTrack creation
380  resetGenParticleId( inpevt );
381 
382  if (!m_nonBeam)
383  {
384  m_generator->HepMC2G4(HepMCEvt->GetEvent(),evt);
385  }
386  else
387  {
388  m_generator->nonBeamEvent2G4(HepMCEvt->GetEvent(),evt);
389  }
390 
391  return evt;
392 }
393 
395 {
396  if (m_runTerminated) { return; }
397  G4Track* t =
398  m_kernel->GetEventManager()->GetTrackingManager()->GetTrack();
399  t->SetTrackStatus(fStopAndKill) ;
400 
401  // CMS-specific act
402  //
403  TrackingAction* uta =
404  (TrackingAction*)m_kernel->GetEventManager()->GetUserTrackingAction() ;
405  uta->PostUserTrackingAction(t) ;
406 
407  m_currentEvent->SetEventAborted();
408 
409  // do NOT call this method for now
410  // because it'll set abortRequested=true (withing G4EventManager)
411  // this will make Geant4, in the event *next* after the aborted one
412  // NOT to get the primary, thus there's NOTHING to trace, and it goes
413  // to the end of G4Event::DoProcessing(G4Event*), where abortRequested
414  // will be reset to true again
415  //
416  //m_kernel->GetEventManager()->AbortCurrentEvent();
417  //
418  // instead, mimic what it does, except (re)setting abortRequested
419  //
420  m_kernel->GetEventManager()->GetStackManager()->clear() ;
421  m_kernel->GetEventManager()->GetTrackingManager()->EventAborted() ;
422 
423  G4StateManager* stateManager = G4StateManager::GetStateManager();
424  stateManager->SetNewState(G4State_GeomClosed);
425 }
426 
428 {
429  m_runInterface = new SimRunInterface(this, false);
430 
433 
434  G4EventManager * eventManager = m_kernel->GetEventManager();
435  eventManager->SetVerboseLevel(m_EvtMgrVerbosity);
436 
437  if (m_generator!=0) {
438  EventAction * userEventAction =
440  Connect(userEventAction);
441  eventManager->SetUserAction(userEventAction);
442 
443  TrackingAction* userTrackingAction =
444  new TrackingAction(userEventAction,m_pTrackingAction);
445  Connect(userTrackingAction);
446  eventManager->SetUserAction(userTrackingAction);
447 
448  SteppingAction* userSteppingAction =
449  new SteppingAction(userEventAction,m_pSteppingAction);
450  Connect(userSteppingAction);
451  eventManager->SetUserAction(userSteppingAction);
452 
453  eventManager->SetUserAction(new StackingAction(userTrackingAction,
455 
456  } else {
457  edm::LogWarning("SimG4CoreApplication") << " RunManager: WARNING : "
458  << "No generator; initialized "
459  << "only RunAction!";
460  }
461 }
462 
464 {
465  m_runInitialized = false;
466  if (m_currentRun==0) { m_currentRun = new G4Run(); }
467  G4StateManager::GetStateManager()->SetNewState(G4State_GeomClosed);
469  m_runAborted = false;
470  m_runInitialized = true;
471 }
472 
474 {
475  if (m_userRunAction!=0) {
477  delete m_userRunAction;
478  m_userRunAction = 0;
479  }
480  if (m_kernel!=0 && !m_runTerminated) {
481  delete m_currentEvent;
482  m_currentEvent = 0;
483  delete m_simEvent;
484  m_simEvent = 0;
485  m_kernel->RunTermination();
486  m_runInitialized = false;
487  m_runTerminated = true;
488  }
489 }
490 
491 void RunManager::abortRun(bool softAbort)
492 {
493  m_runAborted = false;
494  if (!softAbort) { abortEvent(); }
495  if (m_currentRun!=0) { delete m_currentRun; m_currentRun = 0; }
496  m_runInitialized = false;
497  m_runAborted = true;
498  terminateRun();
499 }
500 
502 {
504  inpevt.getByLabel( m_theLHCTlinkTag, theLHCTlink );
505  if ( theLHCTlink.isValid() ) {
506  m_trackManager->setLHCTransportLink( theLHCTlink.product() );
507  }
508 }
509 
511 {
512  return m_trackManager.get();
513 }
514 
516 {
519 }
520 
522 {
525 }
526 
527 void RunManager::Connect(TrackingAction* trackingAction)
528 {
531 }
532 
533 void RunManager::Connect(SteppingAction* steppingAction)
534 {
536 }
537 
538 void RunManager::DumpMagneticField(const G4Field* field) const
539 {
540  std::ofstream fout(m_FieldFile.c_str(), std::ios::out);
541  if(fout.fail()){
542  edm::LogWarning("SimG4CoreApplication")
543  << " RunManager WARNING : "
544  << "error opening file <" << m_FieldFile << "> for magnetic field";
545  } else {
546  double rmax = 9000*mm;
547  double zmax = 16000*mm;
548 
549  double dr = 5*cm;
550  double dz = 20*cm;
551 
552  int nr = (int)(rmax/dr);
553  int nz = 2*(int)(zmax/dz);
554 
555  double r = 0.0;
556  double z0 = -zmax;
557  double z;
558 
559  double phi = 0.0;
560  double cosf = cos(phi);
561  double sinf = sin(phi);
562 
563  double point[4] = {0.0,0.0,0.0,0.0};
564  double bfield[3] = {0.0,0.0,0.0};
565 
566  fout << std::setprecision(6);
567  for(int i=0; i<=nr; ++i) {
568  z = z0;
569  for(int j=0; j<=nz; ++j) {
570  point[0] = r*cosf;
571  point[1] = r*sinf;
572  point[2] = z;
573  field->GetFieldValue(point, bfield);
574  fout << "R(mm)= " << r/mm << " phi(deg)= " << phi/degree
575  << " Z(mm)= " << z/mm << " Bz(tesla)= " << bfield[2]/tesla
576  << " Br(tesla)= " << (bfield[0]*cosf + bfield[1]*sinf)/tesla
577  << " Bphi(tesla)= " << (bfield[0]*sinf - bfield[1]*cosf)/tesla
578  << G4endl;
579  z += dz;
580  }
581  r += dr;
582  }
583 
584  fout.close();
585  }
586 }
T getParameter(std::string const &) const
bool m_check
Definition: RunManager.h:127
EventNumber_t event() const
Definition: EventID.h:41
Map map_
edm::ParameterSet m_pGenerator
Definition: RunManager.h:130
T getUntrackedParameter(std::string const &, T const &) const
tuple t
Definition: tree.py:139
std::auto_ptr< SimTrackManager > m_trackManager
Definition: RunManager.h:150
int i
Definition: DBlmapReader.cc:9
virtual const math::XYZTLorentzVector * genVertex() const
Definition: Generator.h:30
SimTrackManager * GetSimTrackManager()
Definition: RunManager.cc:510
edm::ESWatcher< IdealMagneticFieldRecord > idealMagRcdWatcher_
Definition: RunManager.h:155
const G4VPhysicalVolume * GetWorldVolume() const
Definition: DDDWorld.h:18
virtual const double eventWeight() const
Definition: Generator.h:31
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:14
G4Event * m_currentEvent
Definition: RunManager.h:116
void abortRun(bool softAbort=false)
Definition: RunManager.cc:491
SimActivityRegistry m_registry
Definition: RunManager.h:146
virtual const HepMC::GenEvent * genEvent() const
Definition: Generator.h:29
edm::ParameterSet m_p
Definition: RunManager.h:140
SimActivityRegistry::G4StepSignal m_g4StepSignal
HepPDT::ParticleDataTable ParticleDataTable
std::vector< std::shared_ptr< SimProducer > > m_producers
Definition: RunManager.h:148
void initializeRun()
Definition: RunManager.cc:463
void connect(Observer< const BeginOfJob * > *iObject)
void HepMC2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:100
EndOfEventSignal endOfEventSignal_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
void initializeUserActions()
Definition: RunManager.cc:427
SimActivityRegistry::EndOfRunSignal m_endOfRunSignal
Definition: RunAction.h:24
Generator * m_generator
Definition: RunManager.h:103
BeginOfRunSignal beginOfRunSignal_
string firstRun
Definition: dataset.py:857
SimActivityRegistry::EndOfEventSignal m_endOfEventSignal
Definition: EventAction.h:46
static void createWatchers(const edm::ParameterSet &iP, SimActivityRegistry &iReg, std::vector< std::shared_ptr< SimWatcher > > &oWatchers, std::vector< std::shared_ptr< SimProducer > > &oProds)
Definition: RunManager.cc:74
bool m_pUseMagneticField
Definition: RunManager.h:114
#define nullptr
edm::ESWatcher< IdealGeometryRecord > idealGeomRcdWatcher_
Definition: RunManager.h:154
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:394
std::vector< SensitiveCaloDetector * > m_sensCaloDets
Definition: RunManager.h:144
std::vector< SensitiveTkDetector * > m_sensTkDets
Definition: RunManager.h:143
BeginOfJobSignal beginOfJobSignal_
bool m_nonBeam
Definition: RunManager.h:106
U second(std::pair< T, U > const &p)
void weight(float w)
Definition: G4SimEvent.h:27
int m_EvtMgrVerbosity
Definition: RunManager.h:126
std::auto_ptr< PhysicsList > m_physicsList
Definition: RunManager.h:107
std::string m_WriteFile
Definition: RunManager.h:160
bool firstRun
Definition: RunManager.h:113
void build(G4FieldManager *fM=nullptr, G4PropagatorInField *fP=nullptr, ChordFinderSetter *setter=nullptr)
Definition: FieldBuilder.cc:48
SimRunInterface * m_runInterface
Definition: RunManager.h:119
bool check(const std::string &)
void terminateRun()
Definition: RunManager.cc:473
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
int j
Definition: DBlmapReader.cc:9
bool m_RestorePhysicsTables
Definition: RunManager.h:125
void hepEvent(const HepMC::GenEvent *r)
Definition: G4SimEvent.h:25
std::vector< std::shared_ptr< SimWatcher > > m_watchers
Definition: RunManager.h:147
void setGenEvent(const HepMC::GenEvent *inpevt)
Definition: Generator.h:25
BeginOfEventSignal beginOfEventSignal_
SimActivityRegistry::EndOfTrackSignal m_endOfTrackSignal
void EndOfRunAction(const G4Run *aRun)
Definition: RunAction.cc:39
bool isValid() const
Definition: HandleBase.h:75
G4Run * m_currentRun
Definition: RunManager.h:115
void resetGenParticleId(edm::Event &inpevt)
Definition: RunManager.cc:501
EndOfRunSignal endOfRunSignal_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:420
edm::ParameterSet m_pStackingAction
Definition: RunManager.h:135
unsigned int nTracks() const
Definition: G4SimEvent.h:22
void connect(Observer< const T * > *iObs)
does not take ownership of memory
Definition: Signaler.h:59
edm::ParameterSet m_pEventAction
Definition: RunManager.h:134
bool m_runTerminated
Definition: RunManager.h:111
unsigned int nVertices() const
Definition: G4SimEvent.h:23
tuple out
Definition: dbtoconf.py:99
edm::ParameterSet m_pField
Definition: RunManager.h:129
edm::ParameterSet m_pPhysics
Definition: RunManager.h:132
edm::ParameterSet m_pSteppingAction
Definition: RunManager.h:137
edm::ParameterSet m_g4overlap
Definition: RunManager.h:138
T const * product() const
Definition: Handle.h:81
virtual void PostUserTrackingAction(const G4Track *aTrack)
unsigned int nGenParts() const
Definition: G4SimEvent.h:24
void stopG4()
Definition: RunManager.cc:323
RunAction * m_userRunAction
Definition: RunManager.h:118
void BeginOfRunAction(const G4Run *aRun)
Definition: RunAction.cc:21
DDDWorldSignal dddWorldSignal_
const T & get() const
Definition: EventSetup.h:56
std::pair< std::vector< SensitiveTkDetector * >, std::vector< SensitiveCaloDetector * > > create(const DDDWorld &w, const DDCompactView &cpv, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p, const SimTrackManager *m, SimActivityRegistry &reg) const
Definition: AttachSD.cc:23
void nonBeamEvent2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:500
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
std::string m_InTag
Definition: RunManager.h:104
G4Event * generateEvent(edm::Event &inpevt)
Definition: RunManager.cc:360
void ReportRegions(const std::string &ss)
void DumpMagneticField(const G4Field *) const
Definition: RunManager.cc:538
bool m_runInitialized
Definition: RunManager.h:110
string cmd
self.logger.debug(&quot;Path is now `%s&#39;&quot; % \ path)
SimActivityRegistry::BeginOfRunSignal m_beginOfRunSignal
Definition: RunAction.h:23
edm::EventID id() const
Definition: EventBase.h:60
sim::ChordFinderSetter * m_chordFinderSetter
Definition: RunManager.h:152
void Connect(RunAction *)
Definition: RunManager.cc:515
std::string m_RegionFile
Definition: RunManager.h:161
AttachSD * m_attach
Definition: RunManager.h:142
PrimaryTransformer * m_primaryTransformer
Definition: RunManager.h:108
sim::FieldBuilder * m_fieldBuilder
Definition: RunManager.h:151
std::string m_PhysicsTablesDir
Definition: RunManager.h:123
bool m_StorePhysicsTables
Definition: RunManager.h:124
dbl *** dir
Definition: mlp_gen.cc:35
volatile std::atomic< bool > shutdown_flag false
EndOfTrackSignal endOfTrackSignal_
edm::ParameterSet m_pRunAction
Definition: RunManager.h:133
RunManager(edm::ParameterSet const &p)
Definition: RunManager.cc:108
edm::ParameterSet m_pTrackingAction
Definition: RunManager.h:136
void collisionPoint(const math::XYZTLorentzVectorD &v)
Definition: G4SimEvent.h:29
std::vector< std::string > m_G4Commands
Definition: RunManager.h:139
SurfaceDeformation * create(int type, const std::vector< double > &params)
SimActivityRegistry::BeginOfEventSignal m_beginOfEventSignal
Definition: EventAction.h:45
std::string m_FieldFile
Definition: RunManager.h:159
G4SimEvent * m_simEvent
Definition: RunManager.h:117
bool m_managerInitialized
Definition: RunManager.h:109
void initG4(const edm::EventSetup &es)
Definition: RunManager.cc:167
T get(const Candidate &c)
Definition: component.h:55
edm::InputTag m_theLHCTlinkTag
Definition: RunManager.h:157
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
BeginOfTrackSignal beginOfTrackSignal_
G4RunManagerKernel * m_kernel
Definition: RunManager.h:101
bool m_runAborted
Definition: RunManager.h:112
void produce(edm::Event &inpevt, const edm::EventSetup &es)
Definition: RunManager.cc:329
SimActivityRegistry::BeginOfTrackSignal m_beginOfTrackSignal