CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes
OscarMTProducer Class Reference

#include <OscarMTProducer.h>

Inheritance diagram for OscarMTProducer:
edm::stream::EDProducer< edm::GlobalCache< OscarMTMasterThread >, edm::RunCache< int > >

Public Types

typedef std::vector< std::shared_ptr< SimProducer > > Producers
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< OscarMTMasterThread >, edm::RunCache< int > >
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Public Member Functions

void endRun (const edm::Run &r, const edm::EventSetup &c) override
 
 OscarMTProducer (edm::ParameterSet const &p, const OscarMTMasterThread *)
 
void produce (edm::Event &e, const edm::EventSetup &c) override
 
 ~OscarMTProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< OscarMTMasterThread >, edm::RunCache< int > >
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static std::shared_ptr< int > globalBeginRun (const edm::Run &iRun, const edm::EventSetup &iSetup, const OscarMTMasterThread *masterThread)
 
static void globalEndJob (OscarMTMasterThread *masterThread)
 
static void globalEndRun (const edm::Run &iRun, const edm::EventSetup &iSetup, const RunContext *iContext)
 
static std::unique_ptr< OscarMTMasterThreadinitializeGlobalCache (const edm::ParameterSet &iConfig)
 

Private Attributes

std::unique_ptr< RunManagerMTWorkerm_runManagerWorker
 

Detailed Description

Definition at line 18 of file OscarMTProducer.h.

Member Typedef Documentation

◆ Producers

typedef std::vector<std::shared_ptr<SimProducer> > OscarMTProducer::Producers

Definition at line 22 of file OscarMTProducer.h.

Constructor & Destructor Documentation

◆ OscarMTProducer()

OscarMTProducer::OscarMTProducer ( edm::ParameterSet const &  p,
const OscarMTMasterThread  
)
explicit

Definition at line 65 of file OscarMTProducer.cc.

65  {
66  // Random number generation not allowed here
67  StaticRandomEngineSetUnset random(nullptr);
68 
69  m_runManagerWorker.reset(new RunManagerMTWorker(p, consumesCollector()));
70 
71  produces<edm::SimTrackContainer>().setBranchAlias("SimTracks");
72  produces<edm::SimVertexContainer>().setBranchAlias("SimVertices");
73  produces<edm::PSimHitContainer>("TrackerHitsPixelBarrelLowTof");
74  produces<edm::PSimHitContainer>("TrackerHitsPixelBarrelHighTof");
75  produces<edm::PSimHitContainer>("TrackerHitsTIBLowTof");
76  produces<edm::PSimHitContainer>("TrackerHitsTIBHighTof");
77  produces<edm::PSimHitContainer>("TrackerHitsTIDLowTof");
78  produces<edm::PSimHitContainer>("TrackerHitsTIDHighTof");
79  produces<edm::PSimHitContainer>("TrackerHitsPixelEndcapLowTof");
80  produces<edm::PSimHitContainer>("TrackerHitsPixelEndcapHighTof");
81  produces<edm::PSimHitContainer>("TrackerHitsTOBLowTof");
82  produces<edm::PSimHitContainer>("TrackerHitsTOBHighTof");
83  produces<edm::PSimHitContainer>("TrackerHitsTECLowTof");
84  produces<edm::PSimHitContainer>("TrackerHitsTECHighTof");
85 
86  produces<edm::PSimHitContainer>("TotemHitsT1");
87  produces<edm::PSimHitContainer>("TotemHitsT2Gem");
88  produces<edm::PSimHitContainer>("TotemHitsRP");
89  produces<edm::PSimHitContainer>("CTPPSPixelHits");
90  produces<edm::PSimHitContainer>("CTPPSTimingHits");
91  produces<edm::PSimHitContainer>("FP420SI");
92  produces<edm::PSimHitContainer>("BSCHits");
93  produces<edm::PSimHitContainer>("PLTHits");
94  produces<edm::PSimHitContainer>("BCM1FHits");
95  produces<edm::PSimHitContainer>("BHMHits");
96  produces<edm::PSimHitContainer>("FastTimerHitsBarrel");
97  produces<edm::PSimHitContainer>("FastTimerHitsEndcap");
98 
99  produces<edm::PCaloHitContainer>("EcalHitsEB");
100  produces<edm::PCaloHitContainer>("EcalHitsEE");
101  produces<edm::PCaloHitContainer>("EcalHitsES");
102  produces<edm::PCaloHitContainer>("HcalHits");
103  produces<edm::PCaloHitContainer>("CaloHitsTk");
104  produces<edm::PCaloHitContainer>("HGCHitsEE");
105  produces<edm::PCaloHitContainer>("HGCHitsHEfront");
106  produces<edm::PCaloHitContainer>("HGCHitsHEback");
107 
108  produces<edm::PSimHitContainer>("MuonDTHits");
109  produces<edm::PSimHitContainer>("MuonCSCHits");
110  produces<edm::PSimHitContainer>("MuonRPCHits");
111  produces<edm::PSimHitContainer>("MuonGEMHits");
112  produces<edm::PSimHitContainer>("MuonME0Hits");
113  produces<edm::PCaloHitContainer>("CastorPL");
114  produces<edm::PCaloHitContainer>("CastorFI");
115  produces<edm::PCaloHitContainer>("CastorBU");
116  produces<edm::PCaloHitContainer>("CastorTU");
117  produces<edm::PCaloHitContainer>("EcalTBH4BeamHits");
118  produces<edm::PCaloHitContainer>("HcalTB06BeamHits");
119  produces<edm::PCaloHitContainer>("ZDCHITS");
120  produces<edm::PCaloHitContainer>("ChamberHits");
121  produces<edm::PCaloHitContainer>("FibreHits");
122  produces<edm::PCaloHitContainer>("WedgeHits");
123  produces<edm::PCaloHitContainer>("HFNoseHits");
124  produces<edm::PCaloHitContainer>("TotemHitsT2Scint");
125 
126  //register any products
127  auto& producers = m_runManagerWorker->producers();
128 
129  for (Producers::iterator itProd = producers.begin(); itProd != producers.end(); ++itProd) {
130  (*itProd)->registerProducts(producesCollector());
131  }
132 }

References m_runManagerWorker, AlCaHLTBitMon_ParallelJobs::p, and HLT_2018_cff::producers.

◆ ~OscarMTProducer()

OscarMTProducer::~OscarMTProducer ( )
override

Definition at line 134 of file OscarMTProducer.cc.

134 {}

Member Function Documentation

◆ endRun()

void OscarMTProducer::endRun ( const edm::Run r,
const edm::EventSetup c 
)
override

Definition at line 160 of file OscarMTProducer.cc.

160  {
161  // Random number generation not allowed here
162  StaticRandomEngineSetUnset random(nullptr);
163  m_runManagerWorker->endRun();
164 }

References m_runManagerWorker.

◆ globalBeginRun()

std::shared_ptr< int > OscarMTProducer::globalBeginRun ( const edm::Run iRun,
const edm::EventSetup iSetup,
const OscarMTMasterThread masterThread 
)
static

Definition at line 143 of file OscarMTProducer.cc.

145  {
146  // Random number generation not allowed here
147  StaticRandomEngineSetUnset random(nullptr);
148 
149  masterThread->beginRun(iSetup);
150 
151  return std::shared_ptr<int>();
152 }

References OscarMTMasterThread::beginRun().

◆ globalEndJob()

void OscarMTProducer::globalEndJob ( OscarMTMasterThread masterThread)
static

Definition at line 158 of file OscarMTProducer.cc.

158 { masterThread->stopThread(); }

References OscarMTMasterThread::stopThread().

◆ globalEndRun()

void OscarMTProducer::globalEndRun ( const edm::Run iRun,
const edm::EventSetup iSetup,
const RunContext iContext 
)
static

Definition at line 154 of file OscarMTProducer.cc.

154  {
155  iContext->global()->endRun();
156 }

References edm::stream::RunContextT< R, G >::global().

◆ initializeGlobalCache()

std::unique_ptr< OscarMTMasterThread > OscarMTProducer::initializeGlobalCache ( const edm::ParameterSet iConfig)
static

Definition at line 136 of file OscarMTProducer.cc.

136  {
137  // Random number generation not allowed here
138  StaticRandomEngineSetUnset random(nullptr);
139 
140  return std::unique_ptr<OscarMTMasterThread>(new OscarMTMasterThread(iConfig));
141 }

◆ produce()

void OscarMTProducer::produce ( edm::Event e,
const edm::EventSetup c 
)
override

Definition at line 166 of file OscarMTProducer.cc.

166  {
167  StaticRandomEngineSetUnset random(e.streamID());
168  LogDebug("SimG4CoreApplication") << "Produce event " << e.id() << " stream " << e.streamID()
169  << " rand= " << G4UniformRand();
170 
171  auto& sTk = m_runManagerWorker->sensTkDetectors();
172  auto& sCalo = m_runManagerWorker->sensCaloDetectors();
173 
174  std::unique_ptr<G4SimEvent> evt;
175  try {
176  evt = m_runManagerWorker->produce(e, es, globalCache()->runManagerMaster());
177  } catch (const SimG4Exception& simg4ex) {
178  edm::LogWarning("SimG4CoreApplication") << "SimG4Exception caght! " << simg4ex.what();
179 
181  << "SimG4CoreApplication exception in generation of event " << e.id() << " in stream " << e.streamID() << " \n"
182  << simg4ex.what();
183  }
184 
185  std::unique_ptr<edm::SimTrackContainer> p1(new edm::SimTrackContainer);
186  std::unique_ptr<edm::SimVertexContainer> p2(new edm::SimVertexContainer);
187  evt->load(*p1);
188  evt->load(*p2);
189 
190  e.put(std::move(p1));
191  e.put(std::move(p2));
192 
193  for (auto& tracker : sTk) {
194  const std::vector<std::string>& v = tracker->getNames();
195  for (auto& name : v) {
196  std::unique_ptr<edm::PSimHitContainer> product(new edm::PSimHitContainer);
197  tracker->fillHits(*product, name);
198  e.put(std::move(product), name);
199  }
200  }
201  for (auto& calo : sCalo) {
202  const std::vector<std::string>& v = calo->getNames();
203 
204  for (auto& name : v) {
205  std::unique_ptr<edm::PCaloHitContainer> product(new edm::PCaloHitContainer);
206  calo->fillHits(*product, name);
207  e.put(std::move(product), name);
208  }
209  }
210 
211  auto& producers = m_runManagerWorker->producers();
212  for (auto& prod : producers) {
213  prod.get()->produce(e, es);
214  }
215  LogDebug("SimG4CoreApplication") << "Event is produced " << e.id() << " stream " << e.streamID()
216  << " rand= " << G4UniformRand();
217 }

References L1TowerCalibrationProducer_cfi::calo, MillePedeFileConverter_cfg::e, edm::errors::EventCorruption, Exception, LogDebug, m_runManagerWorker, eostools::move(), Skims_PA_cff::name, p1, p2, dumpMFGeometry_cfg::prod, HLT_2018_cff::producers, PbPb_ZMuSkimMuonDPG_cff::tracker, findQualityFiles::v, and SimG4Exception::what().

Member Data Documentation

◆ m_runManagerWorker

std::unique_ptr<RunManagerMTWorker> OscarMTProducer::m_runManagerWorker
private

Definition at line 38 of file OscarMTProducer.h.

Referenced by endRun(), OscarMTProducer(), and produce().

L1TowerCalibrationProducer_cfi.calo
calo
Definition: L1TowerCalibrationProducer_cfi.py:59
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
SimG4Exception
Definition: SimG4Exception.h:13
edm::errors::EventCorruption
Definition: EDMException.h:43
findQualityFiles.v
v
Definition: findQualityFiles.py:179
HLT_2018_cff.producers
producers
Definition: HLT_2018_cff.py:11702
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
p2
double p2[4]
Definition: TauolaWrapper.h:90
OscarMTProducer::m_runManagerWorker
std::unique_ptr< RunManagerMTWorker > m_runManagerWorker
Definition: OscarMTProducer.h:38
edm::LogWarning
Definition: MessageLogger.h:141
PbPb_ZMuSkimMuonDPG_cff.tracker
tracker
Definition: PbPb_ZMuSkimMuonDPG_cff.py:60
OscarMTMasterThread::stopThread
void stopThread()
Definition: OscarMTMasterThread.cc:160
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
p1
double p1[4]
Definition: TauolaWrapper.h:89
OscarMTMasterThread
Definition: OscarMTMasterThread.h:32
RunManagerMTWorker
Definition: RunManagerMTWorker.h:41
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::SimTrackContainer
std::vector< SimTrack > SimTrackContainer
Definition: SimTrackContainer.h:12
Exception
Definition: hltDiff.cc:246
edm::PCaloHitContainer
std::vector< PCaloHit > PCaloHitContainer
Definition: PCaloHitContainer.h:8
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
OscarMTMasterThread::beginRun
void beginRun(const edm::EventSetup &iSetup) const
Definition: OscarMTMasterThread.cc:127
edm::PSimHitContainer
std::vector< PSimHit > PSimHitContainer
Definition: PSimHitContainer.h:11
SimG4Exception::what
const char * what() const override
Definition: SimG4Exception.h:17
edm::SimVertexContainer
std::vector< SimVertex > SimVertexContainer
Definition: SimVertexContainer.h:12
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37