CMS 3D CMS Logo

RunManager.cc
Go to the documentation of this file.
15 
20 
22 
30 
33 
39 
41 
50 
53 
56 
57 #include "HepPDT/ParticleDataTable.hh"
59 
60 #include "G4GeometryManager.hh"
61 #include "G4StateManager.hh"
62 #include "G4ApplicationState.hh"
63 #include "G4RunManagerKernel.hh"
64 #include "G4UImanager.hh"
65 
66 #include "G4EventManager.hh"
67 #include "G4Run.hh"
68 #include "G4Event.hh"
69 #include "G4TransportationManager.hh"
70 #include "G4ParticleTable.hh"
71 #include "G4Field.hh"
72 #include "G4FieldManager.hh"
73 
74 #include "G4GDMLParser.hh"
75 #include "G4SystemOfUnits.hh"
76 
77 #include <iostream>
78 #include <sstream>
79 #include <fstream>
80 #include <memory>
81 
83 
84 static
86  SimActivityRegistry& iReg,
87  std::vector<std::shared_ptr<SimWatcher> >& oWatchers,
88  std::vector<std::shared_ptr<SimProducer> >& oProds
89  )
90 {
91  using namespace std;
92  using namespace edm;
93 
94  vector<ParameterSet> watchers = iP.getParameter<vector<ParameterSet> >("Watchers");
95 
96  for(vector<ParameterSet>::iterator itWatcher = watchers.begin();
97  itWatcher != watchers.end();
98  ++itWatcher) {
99  std::shared_ptr<SimWatcherMakerBase> maker(
101  (itWatcher->getParameter<std::string> ("type")) );
102  if(maker.get()==nullptr) {
104  << "Unable to find the requested Watcher";
105  }
106 
107  std::shared_ptr<SimWatcher> watcherTemp;
108  std::shared_ptr<SimProducer> producerTemp;
109  maker->make(*itWatcher,iReg,watcherTemp,producerTemp);
110  oWatchers.push_back(watcherTemp);
111  if(producerTemp) {
112  oProds.push_back(producerTemp);
113  }
114  }
115 }
116 
118  : m_generator(new Generator(p.getParameter<edm::ParameterSet>("Generator"))),
119  m_HepMC(iC.consumes<edm::HepMCProduct>(p.getParameter<edm::ParameterSet>("Generator").getParameter<edm::InputTag>("HepMCProductLabel"))),
120  m_LHCtr(iC.consumes<edm::LHCTransportLinkContainer>(p.getParameter<edm::InputTag>("theLHCTlinkTag"))),
121  m_nonBeam(p.getParameter<bool>("NonBeamEvent")),
122  m_primaryTransformer(nullptr),
123  m_managerInitialized(false),
124  m_runInitialized(false), m_runTerminated(false), m_runAborted(false),
125  firstRun(true),
126  m_pUseMagneticField(p.getParameter<bool>("UseMagneticField")),
127  m_currentRun(nullptr), m_currentEvent(nullptr), m_simEvent(nullptr),
128  m_PhysicsTablesDir(p.getParameter<std::string>("PhysicsTablesDirectory")),
129  m_StorePhysicsTables(p.getParameter<bool>("StorePhysicsTables")),
130  m_RestorePhysicsTables(p.getParameter<bool>("RestorePhysicsTables")),
131  m_EvtMgrVerbosity(p.getUntrackedParameter<int>("G4EventManagerVerbosity",0)),
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_g4overlap(p.getParameter<edm::ParameterSet>("G4CheckOverlap")),
141  m_G4Commands(p.getParameter<std::vector<std::string> >("G4Commands")),
142  m_p(p), m_chordFinderSetter(nullptr)
143 {
144  m_UIsession.reset(new CustomUIsession());
145  m_kernel = new G4RunManagerKernel();
146  G4StateManager::GetStateManager()->SetExceptionHandler(new ExceptionHandler());
147 
148  m_physicsList.reset(nullptr);
149  m_prodCuts.reset(nullptr);
150  m_attach = 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) {
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  // attach sensitive detector
240  m_attach = new AttachSD;
241 
242  std::pair< std::vector<SensitiveTkDetector*>,
243  std::vector<SensitiveCaloDetector*> > sensDets =
244  m_attach->create(*world,(*pDD),catalog_,m_p,m_trackManager.get(),
245  m_registry);
246 
247  m_sensTkDets.swap(sensDets.first);
248  m_sensCaloDets.swap(sensDets.second);
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 =
272  physicsMaker->make(map_,fPDGTable,m_chordFinderSetter,m_pPhysics,m_registry);
273 
274  PhysicsList* phys = m_physicsList.get();
275  if (phys==nullptr) {
277  << "Physics list construction failed!";
278  }
279 
280  // adding GFlash, Russian Roulette for eletrons and gamma,
281  // step limiters on top of any Physics Lists
282  phys->RegisterPhysics(new ParametrisedEMPhysics("EMoptions",m_pPhysics));
283 
284  m_physicsList->ResetStoredInAscii();
285  std::string tableDir = m_PhysicsTablesDir;
287  m_physicsList->SetPhysicsTableRetrieved(tableDir);
288  }
289  edm::LogInfo("SimG4CoreApplication")
290  << "RunManager: start initialisation of PhysicsList";
291 
292  int verb = std::max(m_pPhysics.getUntrackedParameter<int>("Verbosity",0),
293  m_p.getParameter<int>("SteppingVerbosity"));
294  m_kernel->SetVerboseLevel(verb);
295 
296  m_physicsList->SetDefaultCutValue(m_pPhysics.getParameter<double>("DefaultCutValue")*CLHEP::cm);
297  m_physicsList->SetCutsWithDefault();
298  if(m_pPhysics.getParameter<bool>("CutsPerRegion")) {
299  m_prodCuts.reset(new DDG4ProductionCuts(map_, verb, m_pPhysics));
300  m_prodCuts->update();
301  }
302 
303  m_kernel->SetPhysics(phys);
304  m_kernel->InitializePhysics();
305 
306  if (m_kernel->RunInitialization()) { m_managerInitialized = true; }
307  else {
309  << "G4RunManagerKernel initialization failed!";
310  }
311 
313  {
314  std::ostringstream dir;
315  dir << tableDir << '\0';
316  std::string cmd = std::string("/control/shell mkdir -p ")+tableDir;
317  if (!std::ifstream(dir.str().c_str(), std::ios::in))
318  G4UImanager::GetUIpointer()->ApplyCommand(cmd);
319  m_physicsList->StorePhysicsTable(tableDir);
320  }
321 
322  //tell all interesting parties that we are beginning the job
323  BeginOfJob aBeginOfJob(&es);
324  m_registry.beginOfJobSignal_(&aBeginOfJob);
325 
326  G4int sv = m_p.getParameter<int>("SteppingVerbosity");
327  G4double elim = m_p.getParameter<double>("StepVerboseThreshold")*CLHEP::GeV;
328  std::vector<int> ve = m_p.getParameter<std::vector<int> >("VerboseEvents");
329  std::vector<int> vn = m_p.getParameter<std::vector<int> >("VertexNumber");
330  std::vector<int> vt = m_p.getParameter<std::vector<int> >("VerboseTracks");
331 
332  if(sv > 0) {
333  m_sVerbose.reset(new CMSSteppingVerbose(sv, elim, ve, vn, vt));
334  }
336 
337  if(!m_G4Commands.empty()) {
338  G4cout << "RunManager: Requested UI commands: " << G4endl;
339  for (unsigned it=0; it<m_G4Commands.size(); ++it) {
340  G4cout << " " << m_G4Commands[it] << G4endl;
341  G4UImanager::GetUIpointer()->ApplyCommand(m_G4Commands[it]);
342  }
343  }
344 
345  if("" != m_WriteFile) {
346  G4GDMLParser gdml;
347  gdml.SetRegionExport(true);
348  gdml.SetEnergyCutsExport(true);
349  gdml.Write(m_WriteFile, world->GetWorldVolume(), true);
350  }
351 
352  if("" != m_RegionFile) {
353  G4RegionReporter rrep;
355  }
356 
358 
359  // If the Geant4 particle table is needed, decomment the lines below
360  //
361  // G4cout << "Output of G4ParticleTable DumpTable:" << G4endl;
362  // G4ParticleTable::GetParticleTable()->DumpTable("ALL");
363 
364  initializeRun();
365  firstRun= false;
366 }
367 
369 {
370  G4StateManager::GetStateManager()->SetNewState(G4State_Quit);
371  if (!m_runTerminated) { terminateRun(); }
372 }
373 
375 {
376  m_currentEvent = generateEvent(inpevt);
377  m_simEvent = new G4SimEvent;
380  if (m_generator->genVertex() !=nullptr ) {
383  m_generator->genVertex()->y()/centimeter,
384  m_generator->genVertex()->z()/centimeter,
385  m_generator->genVertex()->t()/second));
386  }
387  if (m_currentEvent->GetNumberOfPrimaryVertex()==0) {
388  std::stringstream ss;
389  ss << " RunManager::produce(): event " << inpevt.id().event()
390  << " with no G4PrimaryVertices\n" ;
391  throw SimG4Exception(ss.str());
392 
393  abortRun(false);
394  } else {
395  edm::LogInfo("SimG4CoreApplication")
396  << "RunManager::produce: start Event " << inpevt.id().event()
397  << " of weight " << m_simEvent->weight()
398  << " with " << m_simEvent->nTracks() << " tracks and "
399  << m_simEvent->nVertices()
400  << " vertices, generated by " << m_simEvent->nGenParts() << " particles ";
401 
402  m_kernel->GetEventManager()->ProcessOneEvent(m_currentEvent);
403 
404  edm::LogInfo("SimG4CoreApplication")
405  << " RunManager::produce: ended Event " << inpevt.id().event();
406  }
407 }
408 
410 {
411  if (m_currentEvent!=nullptr) { delete m_currentEvent; }
412  m_currentEvent = nullptr;
413  if (m_simEvent!=nullptr) { delete m_simEvent; }
414  m_simEvent = nullptr;
415 
416  // 64 bits event ID in CMSSW converted into Geant4 event ID
417  G4int evtid = (G4int)inpevt.id().event();
418  G4Event * evt = new G4Event(evtid);
419 
421 
422  inpevt.getByToken( m_HepMC, HepMCEvt ) ;
423 
424  m_generator->setGenEvent(HepMCEvt->GetEvent());
425 
426  // required to reset the GenParticle Id for particles transported
427  // along the beam pipe
428  // to their original value for SimTrack creation
429  resetGenParticleId( inpevt );
430 
431  if (!m_nonBeam)
432  {
433  m_generator->HepMC2G4(HepMCEvt->GetEvent(),evt);
434  }
435  else
436  {
437  m_generator->nonBeamEvent2G4(HepMCEvt->GetEvent(),evt);
438  }
439 
440  return evt;
441 }
442 
444 {
445  if (m_runTerminated) { return; }
446  G4Track* t =
447  m_kernel->GetEventManager()->GetTrackingManager()->GetTrack();
448  t->SetTrackStatus(fStopAndKill) ;
449 
450  // CMS-specific act
451  //
452  TrackingAction* uta =
453  (TrackingAction*)m_kernel->GetEventManager()->GetUserTrackingAction() ;
454  uta->PostUserTrackingAction(t) ;
455 
456  m_currentEvent->SetEventAborted();
457  m_kernel->GetEventManager()->GetStackManager()->clear() ;
458  m_kernel->GetEventManager()->GetTrackingManager()->EventAborted() ;
459 
460  G4StateManager* stateManager = G4StateManager::GetStateManager();
461  stateManager->SetNewState(G4State_GeomClosed);
462 }
463 
465 {
466  m_runInterface = new SimRunInterface(this, false);
467 
470 
471  G4EventManager * eventManager = m_kernel->GetEventManager();
472  eventManager->SetVerboseLevel(m_EvtMgrVerbosity);
473 
474  if (m_generator!=nullptr) {
475  EventAction * userEventAction =
477  m_sVerbose.get());
478  Connect(userEventAction);
479  eventManager->SetUserAction(userEventAction);
480 
481  TrackingAction* userTrackingAction =
482  new TrackingAction(userEventAction,m_pTrackingAction,m_sVerbose.get());
483  Connect(userTrackingAction);
484  eventManager->SetUserAction(userTrackingAction);
485 
486  SteppingAction* userSteppingAction =
487  new SteppingAction(userEventAction,m_pSteppingAction,m_sVerbose.get(),m_hasWatchers);
488  Connect(userSteppingAction);
489  eventManager->SetUserAction(userSteppingAction);
490 
491  eventManager->SetUserAction(new StackingAction(userTrackingAction,
493 
494  } else {
495  edm::LogWarning("SimG4CoreApplication") << " RunManager: WARNING : "
496  << "No generator; initialized "
497  << "only RunAction!";
498  }
499 }
500 
502 {
503  m_runInitialized = false;
504  if (m_currentRun==nullptr) { m_currentRun = new G4Run(); }
505  G4StateManager::GetStateManager()->SetNewState(G4State_GeomClosed);
507  m_runAborted = false;
508  m_runInitialized = true;
509 }
510 
512 {
513  if(m_runTerminated) { return; }
514  if (m_userRunAction!=nullptr) {
516  delete m_userRunAction;
517  m_userRunAction = nullptr;
518  }
519  delete m_currentEvent;
520  m_currentEvent = nullptr;
521  delete m_simEvent;
522  m_simEvent = nullptr;
523  if(m_kernel != nullptr) { m_kernel->RunTermination(); }
524  m_runInitialized = false;
525  m_runTerminated = true;
526 }
527 
528 void RunManager::abortRun(bool softAbort)
529 {
530  if(m_runAborted) { return; }
531  if (!softAbort) { abortEvent(); }
532  if (m_currentRun!=nullptr) { delete m_currentRun; m_currentRun = nullptr; }
533  terminateRun();
534  m_runAborted = true;
535 }
536 
538 {
540  inpevt.getByToken( m_LHCtr, theLHCTlink );
541  if ( theLHCTlink.isValid() ) {
542  m_trackManager->setLHCTransportLink( theLHCTlink.product() );
543  }
544 }
545 
547 {
548  return m_trackManager.get();
549 }
550 
552 {
555 }
556 
558 {
561 }
562 
563 void RunManager::Connect(TrackingAction* trackingAction)
564 {
567 }
568 
569 void RunManager::Connect(SteppingAction* steppingAction)
570 {
572 }
573 
574 void RunManager::DumpMagneticField(const G4Field* field) const
575 {
576  std::ofstream fout(m_FieldFile.c_str(), std::ios::out);
577  if(fout.fail()){
578  edm::LogWarning("SimG4CoreApplication")
579  << " RunManager WARNING : "
580  << "error opening file <" << m_FieldFile << "> for magnetic field";
581  } else {
582  double rmax = 9000*mm;
583  double zmax = 16000*mm;
584 
585  double dr = 5*cm;
586  double dz = 20*cm;
587 
588  int nr = (int)(rmax/dr);
589  int nz = 2*(int)(zmax/dz);
590 
591  double r = 0.0;
592  double z0 = -zmax;
593  double z;
594 
595  double phi = 0.0;
596  double cosf = cos(phi);
597  double sinf = sin(phi);
598 
599  double point[4] = {0.0,0.0,0.0,0.0};
600  double bfield[3] = {0.0,0.0,0.0};
601 
602  fout << std::setprecision(6);
603  for(int i=0; i<=nr; ++i) {
604  z = z0;
605  for(int j=0; j<=nz; ++j) {
606  point[0] = r*cosf;
607  point[1] = r*sinf;
608  point[2] = z;
609  field->GetFieldValue(point, bfield);
610  fout << "R(mm)= " << r/mm << " phi(deg)= " << phi/degree
611  << " Z(mm)= " << z/mm << " Bz(tesla)= " << bfield[2]/tesla
612  << " Br(tesla)= " << (bfield[0]*cosf + bfield[1]*sinf)/tesla
613  << " Bphi(tesla)= " << (bfield[0]*sinf - bfield[1]*cosf)/tesla
614  << G4endl;
615  z += dz;
616  }
617  r += dr;
618  }
619 
620  fout.close();
621  }
622 }
T getParameter(std::string const &) const
bool m_check
Definition: RunManager.h:133
EventNumber_t event() const
Definition: EventID.h:41
Map map_
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::HepMCProduct > m_HepMC
Definition: RunManager.h:107
virtual const math::XYZTLorentzVector * genVertex() const
Definition: Generator.h:30
SimTrackManager * GetSimTrackManager()
Definition: RunManager.cc:546
void BeginOfRunAction(const G4Run *aRun) override
Definition: RunAction.cc:22
edm::ESWatcher< IdealMagneticFieldRecord > idealMagRcdWatcher_
Definition: RunManager.h:160
const double GeV
Definition: MathUtil.h:16
const G4VPhysicalVolume * GetWorldVolume() const
Definition: DDDWorld.h:18
RunManager(edm::ParameterSet const &p, edm::ConsumesCollector &&i)
Definition: RunManager.cc:117
virtual const double eventWeight() const
Definition: Generator.h:31
std::pair< std::vector< SensitiveTkDetector * >, std::vector< SensitiveCaloDetector * > > create(const DDDWorld &, const DDCompactView &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *, SimActivityRegistry &reg) const
Definition: AttachSD.cc:15
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:124
void abortRun(bool softAbort=false)
Definition: RunManager.cc:528
def create(alignables, pedeDump, additionalData, outputFile, config)
edm::EDGetTokenT< edm::LHCTransportLinkContainer > m_LHCtr
Definition: RunManager.h:108
SimActivityRegistry m_registry
Definition: RunManager.h:152
virtual const HepMC::GenEvent * genEvent() const
Definition: Generator.h:29
edm::ParameterSet m_p
Definition: RunManager.h:144
SimActivityRegistry::G4StepSignal m_g4StepSignal
HepPDT::ParticleDataTable ParticleDataTable
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
std::vector< std::shared_ptr< SimProducer > > m_producers
Definition: RunManager.h:154
void initializeRun()
Definition: RunManager.cc:501
void connect(Observer< const BeginOfJob * > *iObject)
void HepMC2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:104
EndOfEventSignal endOfEventSignal_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
void initializeUserActions()
Definition: RunManager.cc:464
SimActivityRegistry::EndOfRunSignal m_endOfRunSignal
Definition: RunAction.h:26
Generator * m_generator
Definition: RunManager.h:105
BeginOfRunSignal beginOfRunSignal_
SimActivityRegistry::EndOfEventSignal m_endOfEventSignal
Definition: EventAction.h:54
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:85
bool m_hasWatchers
Definition: RunManager.h:121
bool m_pUseMagneticField
Definition: RunManager.h:120
#define nullptr
edm::ESWatcher< IdealGeometryRecord > idealGeomRcdWatcher_
Definition: RunManager.h:159
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:443
std::vector< SensitiveCaloDetector * > m_sensCaloDets
Definition: RunManager.h:148
std::vector< SensitiveTkDetector * > m_sensTkDets
Definition: RunManager.h:147
BeginOfJobSignal beginOfJobSignal_
bool m_nonBeam
Definition: RunManager.h:110
U second(std::pair< T, U > const &p)
void weight(float w)
Definition: G4SimEvent.h:27
RunAction
list of unwanted particles (gluons and quarks)
int m_EvtMgrVerbosity
Definition: RunManager.h:132
std::string m_WriteFile
Definition: RunManager.h:163
bool firstRun
Definition: RunManager.h:119
SimRunInterface * m_runInterface
Definition: RunManager.h:127
void terminateRun()
Definition: RunManager.cc:511
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
bool m_RestorePhysicsTables
Definition: RunManager.h:131
void hepEvent(const HepMC::GenEvent *r)
Definition: G4SimEvent.h:25
std::vector< std::shared_ptr< SimWatcher > > m_watchers
Definition: RunManager.h:153
std::unique_ptr< CMSSteppingVerbose > m_sVerbose
Definition: RunManager.h:151
void setGenEvent(const HepMC::GenEvent *inpevt)
Definition: Generator.h:25
BeginOfEventSignal beginOfEventSignal_
SimActivityRegistry::EndOfTrackSignal m_endOfTrackSignal
bool isValid() const
Definition: HandleBase.h:74
G4Run * m_currentRun
Definition: RunManager.h:123
void resetGenParticleId(edm::Event &inpevt)
Definition: RunManager.cc:537
EndOfRunSignal endOfRunSignal_
edm::ParameterSet m_pStackingAction
Definition: RunManager.h:139
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:138
bool m_runTerminated
Definition: RunManager.h:117
unsigned int nVertices() const
Definition: G4SimEvent.h:23
edm::ParameterSet m_pField
Definition: RunManager.h:134
edm::ParameterSet m_pPhysics
Definition: RunManager.h:136
edm::ParameterSet m_pSteppingAction
Definition: RunManager.h:141
edm::ParameterSet m_g4overlap
Definition: RunManager.h:142
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:38
T const * product() const
Definition: Handle.h:81
unsigned int nGenParts() const
Definition: G4SimEvent.h:24
void stopG4()
Definition: RunManager.cc:368
RunAction * m_userRunAction
Definition: RunManager.h:126
DDDWorldSignal dddWorldSignal_
const T & get() const
Definition: EventSetup.h:59
void nonBeamEvent2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:568
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
G4Event * generateEvent(edm::Event &inpevt)
Definition: RunManager.cc:409
void ReportRegions(const std::string &ss)
void DumpMagneticField(const G4Field *) const
Definition: RunManager.cc:574
bool m_runInitialized
Definition: RunManager.h:116
SimActivityRegistry::BeginOfRunSignal m_beginOfRunSignal
Definition: RunAction.h:25
edm::EventID id() const
Definition: EventBase.h:60
sim::ChordFinderSetter * m_chordFinderSetter
Definition: RunManager.h:157
void Connect(RunAction *)
Definition: RunManager.cc:551
HLT enums.
list cmd
Definition: mps_setup.py:236
std::string m_RegionFile
Definition: RunManager.h:164
std::vector< LHCTransportLink > LHCTransportLinkContainer
AttachSD * m_attach
Definition: RunManager.h:146
PrimaryTransformer * m_primaryTransformer
Definition: RunManager.h:113
firstRun
Definition: dataset.py:933
std::string m_PhysicsTablesDir
Definition: RunManager.h:129
void PostUserTrackingAction(const G4Track *aTrack) override
bool m_StorePhysicsTables
Definition: RunManager.h:130
std::unique_ptr< CustomUIsession > m_UIsession
Definition: RunManager.h:111
dbl *** dir
Definition: mlp_gen.cc:35
EndOfTrackSignal endOfTrackSignal_
std::unique_ptr< DDG4ProductionCuts > m_prodCuts
Definition: RunManager.h:150
def check(config)
Definition: trackerTree.py:14
edm::ParameterSet m_pRunAction
Definition: RunManager.h:137
std::unique_ptr< SimTrackManager > m_trackManager
Definition: RunManager.h:156
T const * product() const
Definition: ESHandle.h:86
edm::ParameterSet m_pTrackingAction
Definition: RunManager.h:140
void collisionPoint(const math::XYZTLorentzVectorD &v)
Definition: G4SimEvent.h:29
std::vector< std::string > m_G4Commands
Definition: RunManager.h:143
SimActivityRegistry::BeginOfEventSignal m_beginOfEventSignal
Definition: EventAction.h:53
std::string m_FieldFile
Definition: RunManager.h:162
std::unique_ptr< PhysicsList > m_physicsList
Definition: RunManager.h:112
G4SimEvent * m_simEvent
Definition: RunManager.h:125
bool m_managerInitialized
Definition: RunManager.h:115
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:40
*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:103
bool m_runAborted
Definition: RunManager.h:118
void produce(edm::Event &inpevt, const edm::EventSetup &es)
Definition: RunManager.cc:374
SimActivityRegistry::BeginOfTrackSignal m_beginOfTrackSignal