CMS 3D CMS Logo

RunManager.cc
Go to the documentation of this file.
13 
18 
20 
29 
32 
40 
42 
51 
54 
57 
58 #include "HepPDT/ParticleDataTable.hh"
60 
61 #include "G4GeometryManager.hh"
62 #include "G4StateManager.hh"
63 #include "G4ApplicationState.hh"
64 #include "G4RunManagerKernel.hh"
65 #include "G4UImanager.hh"
66 
67 #include "G4EventManager.hh"
68 #include "G4Run.hh"
69 #include "G4Event.hh"
70 #include "G4TransportationManager.hh"
71 #include "G4ParticleTable.hh"
72 #include "G4Field.hh"
73 #include "G4FieldManager.hh"
74 
75 #include "G4GDMLParser.hh"
76 #include "G4SystemOfUnits.hh"
77 
78 #include <iostream>
79 #include <sstream>
80 #include <fstream>
81 #include <memory>
82 
84 
85 static
87  SimActivityRegistry& iReg,
88  std::vector<std::shared_ptr<SimWatcher> >& oWatchers,
89  std::vector<std::shared_ptr<SimProducer> >& oProds
90  )
91 {
92  using namespace std;
93  using namespace edm;
94 
95  vector<ParameterSet> watchers = iP.getParameter<vector<ParameterSet> >("Watchers");
96 
97  for(vector<ParameterSet>::iterator itWatcher = watchers.begin();
98  itWatcher != watchers.end();
99  ++itWatcher) {
100  std::shared_ptr<SimWatcherMakerBase> maker(
102  (itWatcher->getParameter<std::string> ("type")) );
103  if(maker.get()==nullptr) {
105  << "Unable to find the requested Watcher";
106  }
107 
108  std::shared_ptr<SimWatcher> watcherTemp;
109  std::shared_ptr<SimProducer> producerTemp;
110  maker->make(*itWatcher,iReg,watcherTemp,producerTemp);
111  oWatchers.push_back(watcherTemp);
112  if(producerTemp) {
113  oProds.push_back(producerTemp);
114  }
115  }
116 }
117 
119  : m_generator(new Generator(p.getParameter<edm::ParameterSet>("Generator"))),
120  m_HepMC(iC.consumes<edm::HepMCProduct>(p.getParameter<edm::ParameterSet>("Generator").getParameter<edm::InputTag>("HepMCProductLabel"))),
121  m_LHCtr(iC.consumes<edm::LHCTransportLinkContainer>(p.getParameter<edm::InputTag>("theLHCTlinkTag"))),
122  m_nonBeam(p.getParameter<bool>("NonBeamEvent")),
123  m_primaryTransformer(nullptr),
124  m_managerInitialized(false),
125  m_runInitialized(false), m_runTerminated(false), m_runAborted(false),
126  firstRun(true),
127  m_pUseMagneticField(p.getParameter<bool>("UseMagneticField")),
128  m_currentRun(nullptr), m_currentEvent(nullptr), m_simEvent(nullptr),
129  m_PhysicsTablesDir(p.getParameter<std::string>("PhysicsTablesDirectory")),
130  m_StorePhysicsTables(p.getParameter<bool>("StorePhysicsTables")),
131  m_RestorePhysicsTables(p.getParameter<bool>("RestorePhysicsTables")),
132  m_EvtMgrVerbosity(p.getUntrackedParameter<int>("G4EventManagerVerbosity",0)),
133  m_pField(p.getParameter<edm::ParameterSet>("MagneticField")),
134  m_pGenerator(p.getParameter<edm::ParameterSet>("Generator")),
135  m_pPhysics(p.getParameter<edm::ParameterSet>("Physics")),
136  m_pRunAction(p.getParameter<edm::ParameterSet>("RunAction")),
137  m_pEventAction(p.getParameter<edm::ParameterSet>("EventAction")),
138  m_pStackingAction(p.getParameter<edm::ParameterSet>("StackingAction")),
139  m_pTrackingAction(p.getParameter<edm::ParameterSet>("TrackingAction")),
140  m_pSteppingAction(p.getParameter<edm::ParameterSet>("SteppingAction")),
141  m_g4overlap(p.getParameter<edm::ParameterSet>("G4CheckOverlap")),
142  m_G4Commands(p.getParameter<std::vector<std::string> >("G4Commands")),
143  m_p(p)
144 {
145  m_UIsession.reset(new CustomUIsession());
146  m_kernel = new G4RunManagerKernel();
147  G4StateManager::GetStateManager()->SetExceptionHandler(new ExceptionHandler());
148 
149  m_physicsList.reset(nullptr);
150  m_prodCuts.reset(nullptr);
151 
152  m_check = p.getUntrackedParameter<bool>("CheckOverlap",false);
153  m_WriteFile = p.getUntrackedParameter<std::string>("FileNameGDML","");
154  m_FieldFile = p.getUntrackedParameter<std::string>("FileNameField","");
155  m_RegionFile = p.getUntrackedParameter<std::string>("FileNameRegions","");
156 
157  m_userRunAction = nullptr;
158  m_runInterface = nullptr;
159 
160  //Look for an outside SimActivityRegistry
161  // this is used by the visualization code
162  edm::Service<SimActivityRegistry> otherRegistry;
163  if(otherRegistry){
164  m_registry.connect(*otherRegistry);
165  }
166  m_sVerbose.reset(nullptr);
167 
168  std::vector<edm::ParameterSet> watchers
169  = p.getParameter<std::vector<edm::ParameterSet> >("Watchers");
170  m_hasWatchers = (watchers.empty()) ? false : true;
171 
172  if(m_hasWatchers) {
174  }
175 }
176 
178 {
179  if (!m_runTerminated) { terminateRun(); }
180  G4StateManager::GetStateManager()->SetNewState(G4State_Quit);
181  G4GeometryManager::GetInstance()->OpenGeometry();
182  // if (m_kernel!=0) delete m_kernel;
183  delete m_runInterface;
184  delete m_generator;
185 }
186 
188 {
189  bool geomChanged = idealGeomRcdWatcher_.check(es);
190  if (geomChanged && (!firstRun)) {
191  throw cms::Exception("BadConfig")
192  << "[SimG4Core RunManager]\n"
193  << "The Geometry configuration is changed during the job execution\n"
194  << "this is not allowed, the geometry must stay unchanged\n";
195  }
196  if (m_pUseMagneticField) {
197  bool magChanged = idealMagRcdWatcher_.check(es);
198  if (magChanged && (!firstRun)) {
200  << "[SimG4Core RunManager]\n"
201  << "The MagneticField configuration is changed during the job execution\n"
202  << "this is not allowed, the MagneticField must stay unchanged\n";
203  }
204  }
205 
206  if (m_managerInitialized) return;
207 
208  // DDDWorld: get the DDCV from the ES and use it to build the World
210  es.get<IdealGeometryRecord>().get(pDD);
211 
213  SensitiveDetectorCatalog catalog_;
214  const DDDWorld * world = new DDDWorld(&(*pDD), map_, catalog_, false);
216 
218  {
219  // setup the magnetic field
221  es.get<IdealMagneticFieldRecord>().get(pMF);
222  const GlobalPoint g(0.,0.,0.);
223 
224  sim::FieldBuilder fieldBuilder(pMF.product(), m_pField);
225  CMSFieldManager* fieldManager = new CMSFieldManager();
226  G4TransportationManager * tM =
227  G4TransportationManager::GetTransportationManager();
228  tM->SetFieldManager(fieldManager);
229  fieldBuilder.build( fieldManager, tM->GetPropagatorInField());
230 
231  if(!m_FieldFile.empty()) {
232  DumpMagneticField(tM->GetFieldManager()->GetDetectorField());
233  }
234  }
235 
236  // we need the track manager now
237  m_trackManager = std::unique_ptr<SimTrackManager>(new SimTrackManager);
238 
239  {
240  // attach sensitive detector
241 
242  AttachSD attach;
243  auto sensDets =
244  attach.create((*pDD),catalog_,m_p,m_trackManager.get(),m_registry);
245 
246  m_sensTkDets.swap(sensDets.first);
247  m_sensCaloDets.swap(sensDets.second);
248  }
249 
250  edm::LogInfo("SimG4CoreApplication")
251  << " RunManager: Sensitive Detector "
252  << "building finished; found "
253  << m_sensTkDets.size()
254  << " Tk type Producers, and "
255  << m_sensCaloDets.size()
256  << " Calo type producers ";
257 
259  es.get<PDTRecord>().get(fTable);
260  const HepPDT::ParticleDataTable *fPDGTable = &(*fTable);
261 
263 
264  std::unique_ptr<PhysicsListMakerBase>
265  physicsMaker(PhysicsListFactory::get()->create(
266  m_pPhysics.getParameter<std::string> ("type")));
267  if (physicsMaker.get()==nullptr) {
269  << "Unable to find the Physics list requested";
270  }
271  m_physicsList = physicsMaker->make(m_pPhysics,m_registry);
272 
273  PhysicsList* phys = m_physicsList.get();
274  if (phys==nullptr) {
276  << "Physics list construction failed!";
277  }
278 
279  // exotic particle physics
280  double monopoleMass = m_pPhysics.getUntrackedParameter<double>("MonopoleMass",0);
281  if(monopoleMass > 0.0) {
282  phys->RegisterPhysics(new CMSMonopolePhysics(fPDGTable,m_pPhysics));
283  }
284  bool exotica = m_pPhysics.getUntrackedParameter<bool>("ExoticaTransport",false);
285  if(exotica) { CMSExoticaPhysics exo(phys, m_pPhysics); }
286 
287  // adding GFlash, Russian Roulette for eletrons and gamma,
288  // step limiters on top of any Physics Lists
289  phys->RegisterPhysics(new ParametrisedEMPhysics("EMoptions",m_pPhysics));
290 
291  std::string tableDir = m_PhysicsTablesDir;
293  m_physicsList->SetPhysicsTableRetrieved(tableDir);
294  }
295  edm::LogInfo("SimG4CoreApplication")
296  << "RunManager: start initialisation of PhysicsList";
297 
298  int verb = std::max(m_pPhysics.getUntrackedParameter<int>("Verbosity",0),
299  m_p.getParameter<int>("SteppingVerbosity"));
300  m_kernel->SetVerboseLevel(verb);
301 
302  m_physicsList->SetDefaultCutValue(m_pPhysics.getParameter<double>("DefaultCutValue")*CLHEP::cm);
303  m_physicsList->SetCutsWithDefault();
304  if(m_pPhysics.getParameter<bool>("CutsPerRegion")) {
305  m_prodCuts.reset(new DDG4ProductionCuts(map_, verb, m_pPhysics));
306  m_prodCuts->update();
307  }
308 
309  m_kernel->SetPhysics(phys);
310  m_kernel->InitializePhysics();
311 
312  if (m_kernel->RunInitialization()) { m_managerInitialized = true; }
313  else {
315  << "G4RunManagerKernel initialization failed!";
316  }
317 
319  {
320  std::ostringstream dir;
321  dir << tableDir << '\0';
322  std::string cmd = std::string("/control/shell mkdir -p ")+tableDir;
323  if (!std::ifstream(dir.str().c_str(), std::ios::in))
324  G4UImanager::GetUIpointer()->ApplyCommand(cmd);
325  m_physicsList->StorePhysicsTable(tableDir);
326  }
327 
328  //tell all interesting parties that we are beginning the job
329  BeginOfJob aBeginOfJob(&es);
330  m_registry.beginOfJobSignal_(&aBeginOfJob);
331 
332  G4int sv = m_p.getParameter<int>("SteppingVerbosity");
333  G4double elim = m_p.getParameter<double>("StepVerboseThreshold")*CLHEP::GeV;
334  std::vector<int> ve = m_p.getParameter<std::vector<int> >("VerboseEvents");
335  std::vector<int> vn = m_p.getParameter<std::vector<int> >("VertexNumber");
336  std::vector<int> vt = m_p.getParameter<std::vector<int> >("VerboseTracks");
337 
338  if(sv > 0) {
339  m_sVerbose.reset(new CMSSteppingVerbose(sv, elim, ve, vn, vt));
340  }
342 
343  if(!m_G4Commands.empty()) {
344  G4cout << "RunManager: Requested UI commands: " << G4endl;
345  for (unsigned it=0; it<m_G4Commands.size(); ++it) {
346  G4cout << " " << m_G4Commands[it] << G4endl;
347  G4UImanager::GetUIpointer()->ApplyCommand(m_G4Commands[it]);
348  }
349  }
350 
351  if(!m_WriteFile.empty()) {
352  G4GDMLParser gdml;
353  gdml.SetRegionExport(true);
354  gdml.SetEnergyCutsExport(true);
355  gdml.Write(m_WriteFile, world->GetWorldVolume(), true);
356  }
357 
358  if(!m_RegionFile.empty()) {
359  G4RegionReporter rrep;
361  }
362 
364 
365  // If the Geant4 particle table is needed, decomment the lines below
366  //
367  // G4cout << "Output of G4ParticleTable DumpTable:" << G4endl;
368  // G4ParticleTable::GetParticleTable()->DumpTable("ALL");
369 
370  initializeRun();
371  firstRun= false;
372 }
373 
375 {
376  G4StateManager::GetStateManager()->SetNewState(G4State_Quit);
377  if (!m_runTerminated) { terminateRun(); }
378 }
379 
381 {
382  m_currentEvent = generateEvent(inpevt);
383  m_simEvent = new G4SimEvent;
386  if (m_generator->genVertex() !=nullptr ) {
389  m_generator->genVertex()->y()/centimeter,
390  m_generator->genVertex()->z()/centimeter,
391  m_generator->genVertex()->t()/second));
392  }
393  if (m_currentEvent->GetNumberOfPrimaryVertex()==0) {
394  std::stringstream ss;
395  ss << " RunManager::produce(): event " << inpevt.id().event()
396  << " with no G4PrimaryVertices\n" ;
397  throw SimG4Exception(ss.str());
398 
399  abortRun(false);
400  } else {
401  edm::LogInfo("SimG4CoreApplication")
402  << "RunManager::produce: start Event " << inpevt.id().event()
403  << " of weight " << m_simEvent->weight()
404  << " with " << m_simEvent->nTracks() << " tracks and "
405  << m_simEvent->nVertices()
406  << " vertices, generated by " << m_simEvent->nGenParts() << " particles ";
407 
408  m_kernel->GetEventManager()->ProcessOneEvent(m_currentEvent);
409 
410  edm::LogInfo("SimG4CoreApplication")
411  << " RunManager::produce: ended Event " << inpevt.id().event();
412  }
413 }
414 
416 {
417  if (m_currentEvent!=nullptr) { delete m_currentEvent; }
418  m_currentEvent = nullptr;
419  if (m_simEvent!=nullptr) { delete m_simEvent; }
420  m_simEvent = nullptr;
421 
422  // 64 bits event ID in CMSSW converted into Geant4 event ID
423  G4int evtid = (G4int)inpevt.id().event();
424  G4Event * evt = new G4Event(evtid);
425 
427 
428  inpevt.getByToken( m_HepMC, HepMCEvt ) ;
429 
430  m_generator->setGenEvent(HepMCEvt->GetEvent());
431 
432  // required to reset the GenParticle Id for particles transported
433  // along the beam pipe
434  // to their original value for SimTrack creation
435  resetGenParticleId( inpevt );
436 
437  if (!m_nonBeam)
438  {
439  m_generator->HepMC2G4(HepMCEvt->GetEvent(),evt);
440  }
441  else
442  {
443  m_generator->nonBeamEvent2G4(HepMCEvt->GetEvent(),evt);
444  }
445 
446  return evt;
447 }
448 
450 {
451  if (m_runTerminated) { return; }
452  G4Track* t =
453  m_kernel->GetEventManager()->GetTrackingManager()->GetTrack();
454  t->SetTrackStatus(fStopAndKill) ;
455 
456  // CMS-specific act
457  //
458  TrackingAction* uta =
459  (TrackingAction*)m_kernel->GetEventManager()->GetUserTrackingAction() ;
460  uta->PostUserTrackingAction(t) ;
461 
462  m_currentEvent->SetEventAborted();
463  m_kernel->GetEventManager()->GetStackManager()->clear() ;
464  m_kernel->GetEventManager()->GetTrackingManager()->EventAborted() ;
465 
466  G4StateManager* stateManager = G4StateManager::GetStateManager();
467  stateManager->SetNewState(G4State_GeomClosed);
468 }
469 
471 {
472  m_runInterface = new SimRunInterface(this, false);
473 
476 
477  G4EventManager * eventManager = m_kernel->GetEventManager();
478  eventManager->SetVerboseLevel(m_EvtMgrVerbosity);
479 
480  if (m_generator!=nullptr) {
481  EventAction * userEventAction =
483  m_sVerbose.get());
484  Connect(userEventAction);
485  eventManager->SetUserAction(userEventAction);
486 
487  TrackingAction* userTrackingAction =
488  new TrackingAction(userEventAction,m_pTrackingAction,m_sVerbose.get());
489  Connect(userTrackingAction);
490  eventManager->SetUserAction(userTrackingAction);
491 
492  SteppingAction* userSteppingAction =
493  new SteppingAction(userEventAction,m_pSteppingAction,m_sVerbose.get(),m_hasWatchers);
494  Connect(userSteppingAction);
495  eventManager->SetUserAction(userSteppingAction);
496 
497  eventManager->SetUserAction(new StackingAction(userTrackingAction,
499 
500  } else {
501  edm::LogWarning("SimG4CoreApplication") << " RunManager: WARNING : "
502  << "No generator; initialized "
503  << "only RunAction!";
504  }
505 }
506 
508 {
509  m_runInitialized = false;
510  if (m_currentRun==nullptr) { m_currentRun = new G4Run(); }
511  G4StateManager::GetStateManager()->SetNewState(G4State_GeomClosed);
513  m_runAborted = false;
514  m_runInitialized = true;
515 }
516 
518 {
519  if(m_runTerminated) { return; }
520  if (m_userRunAction!=nullptr) {
522  delete m_userRunAction;
523  m_userRunAction = nullptr;
524  }
525  delete m_currentEvent;
526  m_currentEvent = nullptr;
527  delete m_simEvent;
528  m_simEvent = nullptr;
529  if(m_kernel != nullptr) { m_kernel->RunTermination(); }
530  m_runInitialized = false;
531  m_runTerminated = true;
532 }
533 
534 void RunManager::abortRun(bool softAbort)
535 {
536  if(m_runAborted) { return; }
537  if (!softAbort) { abortEvent(); }
538  if (m_currentRun!=nullptr) { delete m_currentRun; m_currentRun = nullptr; }
539  terminateRun();
540  m_runAborted = true;
541 }
542 
544 {
546  inpevt.getByToken( m_LHCtr, theLHCTlink );
547  if ( theLHCTlink.isValid() ) {
548  m_trackManager->setLHCTransportLink( theLHCTlink.product() );
549  }
550 }
551 
553 {
554  return m_trackManager.get();
555 }
556 
558 {
561 }
562 
564 {
567 }
568 
569 void RunManager::Connect(TrackingAction* trackingAction)
570 {
573 }
574 
575 void RunManager::Connect(SteppingAction* steppingAction)
576 {
578 }
579 
580 void RunManager::DumpMagneticField(const G4Field* field) const
581 {
582  std::ofstream fout(m_FieldFile.c_str(), std::ios::out);
583  if(fout.fail()){
584  edm::LogWarning("SimG4CoreApplication")
585  << " RunManager WARNING : "
586  << "error opening file <" << m_FieldFile << "> for magnetic field";
587  } else {
588  double rmax = 9000*mm;
589  double zmax = 16000*mm;
590 
591  double dr = 5*cm;
592  double dz = 20*cm;
593 
594  int nr = (int)(rmax/dr);
595  int nz = 2*(int)(zmax/dz);
596 
597  double r = 0.0;
598  double z0 = -zmax;
599  double z;
600 
601  double phi = 0.0;
602  double cosf = cos(phi);
603  double sinf = sin(phi);
604 
605  double point[4] = {0.0,0.0,0.0,0.0};
606  double bfield[3] = {0.0,0.0,0.0};
607 
608  fout << std::setprecision(6);
609  for(int i=0; i<=nr; ++i) {
610  z = z0;
611  for(int j=0; j<=nz; ++j) {
612  point[0] = r*cosf;
613  point[1] = r*sinf;
614  point[2] = z;
615  field->GetFieldValue(point, bfield);
616  fout << "R(mm)= " << r/mm << " phi(deg)= " << phi/degree
617  << " Z(mm)= " << z/mm << " Bz(tesla)= " << bfield[2]/tesla
618  << " Br(tesla)= " << (bfield[0]*cosf + bfield[1]*sinf)/tesla
619  << " Bphi(tesla)= " << (bfield[0]*sinf - bfield[1]*cosf)/tesla
620  << G4endl;
621  z += dz;
622  }
623  r += dr;
624  }
625 
626  fout.close();
627  }
628 }
T getParameter(std::string const &) const
bool m_check
Definition: RunManager.h:129
EventNumber_t event() const
Definition: EventID.h:41
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::HepMCProduct > m_HepMC
Definition: RunManager.h:103
virtual const math::XYZTLorentzVector * genVertex() const
Definition: Generator.h:31
SimTrackManager * GetSimTrackManager()
Definition: RunManager.cc:552
void BeginOfRunAction(const G4Run *aRun) override
Definition: RunAction.cc:19
edm::ESWatcher< IdealMagneticFieldRecord > idealMagRcdWatcher_
Definition: RunManager.h:154
const double GeV
Definition: MathUtil.h:16
const G4VPhysicalVolume * GetWorldVolume() const
Definition: DDDWorld.h:16
RunManager(edm::ParameterSet const &p, edm::ConsumesCollector &&i)
Definition: RunManager.cc:118
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:14
G4Event * m_currentEvent
Definition: RunManager.h:120
void abortRun(bool softAbort=false)
Definition: RunManager.cc:534
def create(alignables, pedeDump, additionalData, outputFile, config)
edm::EDGetTokenT< edm::LHCTransportLinkContainer > m_LHCtr
Definition: RunManager.h:104
SimActivityRegistry m_registry
Definition: RunManager.h:147
virtual const HepMC::GenEvent * genEvent() const
Definition: Generator.h:30
edm::ParameterSet m_p
Definition: RunManager.h:140
SimActivityRegistry::G4StepSignal m_g4StepSignal
HepPDT::ParticleDataTable ParticleDataTable
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
std::vector< std::shared_ptr< SimProducer > > m_producers
Definition: RunManager.h:149
void initializeRun()
Definition: RunManager.cc:507
void connect(Observer< const BeginOfJob * > *iObject)
void HepMC2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:101
EndOfEventSignal endOfEventSignal_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
void initializeUserActions()
Definition: RunManager.cc:470
#define nullptr
SimActivityRegistry::EndOfRunSignal m_endOfRunSignal
Definition: RunAction.h:25
Generator * m_generator
Definition: RunManager.h:101
BeginOfRunSignal beginOfRunSignal_
SimActivityRegistry::EndOfEventSignal m_endOfEventSignal
Definition: EventAction.h:51
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:86
bool m_hasWatchers
Definition: RunManager.h:117
bool m_pUseMagneticField
Definition: RunManager.h:116
edm::ESWatcher< IdealGeometryRecord > idealGeomRcdWatcher_
Definition: RunManager.h:153
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:449
std::vector< SensitiveCaloDetector * > m_sensCaloDets
Definition: RunManager.h:143
std::vector< SensitiveTkDetector * > m_sensTkDets
Definition: RunManager.h:142
BeginOfJobSignal beginOfJobSignal_
bool m_nonBeam
Definition: RunManager.h:106
U second(std::pair< T, U > const &p)
void weight(float w)
Definition: G4SimEvent.h:25
RunAction
list of unwanted particles (gluons and quarks)
int m_EvtMgrVerbosity
Definition: RunManager.h:128
std::string m_WriteFile
Definition: RunManager.h:157
bool firstRun
Definition: RunManager.h:115
SimRunInterface * m_runInterface
Definition: RunManager.h:123
void terminateRun()
Definition: RunManager.cc:517
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
bool m_RestorePhysicsTables
Definition: RunManager.h:127
void hepEvent(const HepMC::GenEvent *r)
Definition: G4SimEvent.h:23
std::vector< std::shared_ptr< SimWatcher > > m_watchers
Definition: RunManager.h:148
std::unique_ptr< CMSSteppingVerbose > m_sVerbose
Definition: RunManager.h:146
void setGenEvent(const HepMC::GenEvent *inpevt)
Definition: Generator.h:24
BeginOfEventSignal beginOfEventSignal_
SimActivityRegistry::EndOfTrackSignal m_endOfTrackSignal
bool isValid() const
Definition: HandleBase.h:74
G4Run * m_currentRun
Definition: RunManager.h:119
void resetGenParticleId(edm::Event &inpevt)
Definition: RunManager.cc:543
EndOfRunSignal endOfRunSignal_
edm::ParameterSet m_pStackingAction
Definition: RunManager.h:135
unsigned int nTracks() const
Definition: G4SimEvent.h:20
void connect(Observer< const T * > *iObs)
does not take ownership of memory
Definition: Signaler.h:55
edm::ParameterSet m_pEventAction
Definition: RunManager.h:134
bool m_runTerminated
Definition: RunManager.h:113
unsigned int nVertices() const
Definition: G4SimEvent.h:21
edm::ParameterSet m_pField
Definition: RunManager.h:130
edm::ParameterSet m_pPhysics
Definition: RunManager.h:132
edm::ParameterSet m_pSteppingAction
Definition: RunManager.h:137
edm::ParameterSet m_g4overlap
Definition: RunManager.h:138
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:38
std::pair< std::vector< SensitiveTkDetector * >, std::vector< SensitiveCaloDetector * > > create(const DDCompactView &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *, SimActivityRegistry &reg) const
Definition: AttachSD.cc:17
T const * product() const
Definition: Handle.h:74
unsigned int nGenParts() const
Definition: G4SimEvent.h:22
void stopG4()
Definition: RunManager.cc:374
RunAction * m_userRunAction
Definition: RunManager.h:122
DDDWorldSignal dddWorldSignal_
void nonBeamEvent2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:530
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:52
G4Event * generateEvent(edm::Event &inpevt)
Definition: RunManager.cc:415
void ReportRegions(const std::string &ss)
void DumpMagneticField(const G4Field *) const
Definition: RunManager.cc:580
bool m_runInitialized
Definition: RunManager.h:112
SimActivityRegistry::BeginOfRunSignal m_beginOfRunSignal
Definition: RunAction.h:24
edm::EventID id() const
Definition: EventBase.h:59
void Connect(RunAction *)
Definition: RunManager.cc:557
HLT enums.
list cmd
Definition: mps_setup.py:244
std::string m_RegionFile
Definition: RunManager.h:158
T get() const
Definition: EventSetup.h:71
std::vector< LHCTransportLink > LHCTransportLinkContainer
PrimaryTransformer * m_primaryTransformer
Definition: RunManager.h:109
firstRun
Definition: dataset.py:940
std::string m_PhysicsTablesDir
Definition: RunManager.h:125
void PostUserTrackingAction(const G4Track *aTrack) override
bool m_StorePhysicsTables
Definition: RunManager.h:126
std::unique_ptr< CustomUIsession > m_UIsession
Definition: RunManager.h:107
dbl *** dir
Definition: mlp_gen.cc:35
EndOfTrackSignal endOfTrackSignal_
std::unique_ptr< DDG4ProductionCuts > m_prodCuts
Definition: RunManager.h:145
def check(config)
Definition: trackerTree.py:14
edm::ParameterSet m_pRunAction
Definition: RunManager.h:133
std::unique_ptr< SimTrackManager > m_trackManager
Definition: RunManager.h:151
T const * product() const
Definition: ESHandle.h:86
edm::ParameterSet m_pTrackingAction
Definition: RunManager.h:136
void collisionPoint(const math::XYZTLorentzVectorD &v)
Definition: G4SimEvent.h:27
std::vector< std::string > m_G4Commands
Definition: RunManager.h:139
SimActivityRegistry::BeginOfEventSignal m_beginOfEventSignal
Definition: EventAction.h:50
std::string m_FieldFile
Definition: RunManager.h:156
std::unique_ptr< PhysicsList > m_physicsList
Definition: RunManager.h:108
G4SimEvent * m_simEvent
Definition: RunManager.h:121
bool m_managerInitialized
Definition: RunManager.h:111
void initG4(const edm::EventSetup &es)
Definition: RunManager.cc:187
T get(const Candidate &c)
Definition: component.h:55
void EndOfRunAction(const G4Run *aRun) override
Definition: RunAction.cc:31
*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:99
bool m_runAborted
Definition: RunManager.h:114
void produce(edm::Event &inpevt, const edm::EventSetup &es)
Definition: RunManager.cc:380
SimActivityRegistry::BeginOfTrackSignal m_beginOfTrackSignal