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