CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DataMixingModule.cc
Go to the documentation of this file.
1 // File: DataMixingModule.cc
2 // Description: see DataMixingModule.h
3 // Author: Mike Hildreth, University of Notre Dame
4 //
5 //--------------------------------------------
6 
7 #include <map>
8 #include <iostream>
9 #include <memory>
10 #include <functional>
11 
24 //
25 //
27 #include "DataMixingModule.h"
29 
32 
33 using namespace std;
34 
35 namespace edm
36 {
37 
38  // Constructor
39  DataMixingModule::DataMixingModule(const edm::ParameterSet& ps, MixingCache::Config const* globalConf) :
40  BMixingModule(ps, globalConf),
41  EBPileInputTag_(ps.getParameter<edm::InputTag>("EBPileInputTag")),
42  EEPileInputTag_(ps.getParameter<edm::InputTag>("EEPileInputTag")),
43  ESPileInputTag_(ps.getParameter<edm::InputTag>("ESPileInputTag")),
44  HBHEPileInputTag_(ps.getParameter<edm::InputTag>("HBHEPileInputTag")),
45  HOPileInputTag_(ps.getParameter<edm::InputTag>("HOPileInputTag")),
46  HFPileInputTag_(ps.getParameter<edm::InputTag>("HFPileInputTag")),
47  ZDCPileInputTag_(ps.getParameter<edm::InputTag>("ZDCPileInputTag")),
48  QIE10PileInputTag_(ps.getParameter<edm::InputTag>("QIE10PileInputTag")),
49  QIE11PileInputTag_(ps.getParameter<edm::InputTag>("QIE11PileInputTag")),
50  label_(ps.getParameter<std::string>("Label"))
51  {
52 
53  // prepare for data access in DataMixingEcalDigiWorkerProd
54  tok_eb_ = consumes<EBDigitizerTraits::DigiCollection>(EBPileInputTag_);
55  tok_ee_ = consumes<EEDigitizerTraits::DigiCollection>(EEPileInputTag_);
56  tok_es_ = consumes<ESDigitizerTraits::DigiCollection>(ESPileInputTag_);
57 
58  // prepare for data access in DataMixingHcalDigiWorkerProd
59  tok_hbhe_ = consumes<HBHEDigitizerTraits::DigiCollection>(HBHEPileInputTag_);
60  tok_ho_ = consumes<HODigitizerTraits::DigiCollection>(HOPileInputTag_);
61  tok_hf_ = consumes<HFDigitizerTraits::DigiCollection>(HFPileInputTag_);
62  tok_zdc_ = consumes<ZDCDigitizerTraits::DigiCollection>(ZDCPileInputTag_);
63  tok_qie10_ = consumes<HcalQIE10DigitizerTraits::DigiCollection>(QIE10PileInputTag_);
64  tok_qie11_ = consumes<HcalQIE11DigitizerTraits::DigiCollection>(QIE11PileInputTag_);
65 
66  // get the subdetector names
67  this->getSubdetectorNames(); //something like this may be useful to check what we are supposed to do...
68 
69  // For now, list all of them here. Later, make this selectable with input parameters
70  //
71 
72  // Check to see if we are working in Full or Fast Simulation
73 
74  MergeTrackerDigis_ = (ps.getParameter<std::string>("TrackerMergeType")).compare("Digis") == 0;
75  MergeEMDigis_ = (ps.getParameter<std::string>("EcalMergeType")).compare("Digis") == 0;
76  MergeHcalDigis_ = (ps.getParameter<std::string>("HcalMergeType")).compare("Digis") == 0;
77  if(MergeHcalDigis_) MergeHcalDigisProd_ = (ps.getParameter<std::string>("HcalDigiMerge")=="FullProd");
78 
79  addMCDigiNoise_ = false;
80 
81  addMCDigiNoise_ = ps.getUntrackedParameter<bool>("addMCDigiNoise"); // for Sim on Sim mixing
82 
83  // Put Fast Sim Sequences here for Simplification: Fewer options!
84 
85 
86  if(MergeEMDigis_) {
87 
88  // cout<<"EM Digis TRUE!!!"<<endl;
89 
90  EBDigiCollectionDM_ = ps.getParameter<std::string>("EBDigiCollectionDM");
91  EEDigiCollectionDM_ = ps.getParameter<std::string>("EEDigiCollectionDM");
92  ESDigiCollectionDM_ = ps.getParameter<std::string>("ESDigiCollectionDM");
93  // nMaxPrintout_ = ps.getUntrackedParameter<int>("nMaxPrintout",10);
94 
95  produces< EBDigiCollection >(EBDigiCollectionDM_);
96  produces< EEDigiCollection >(EEDigiCollectionDM_);
97  produces< ESDigiCollection >(ESDigiCollectionDM_);
98 
99 
100  if(addMCDigiNoise_ ) {
106  }
108  }
109  else { // merge RecHits
110  EBRecHitCollectionDM_ = ps.getParameter<std::string>("EBRecHitCollectionDM");
111  EERecHitCollectionDM_ = ps.getParameter<std::string>("EERecHitCollectionDM");
112  ESRecHitCollectionDM_ = ps.getParameter<std::string>("ESRecHitCollectionDM");
113  // nMaxPrintout_ = ps.getUntrackedParameter<int>("nMaxPrintout",10);
114 
115  produces< EBRecHitCollection >(EBRecHitCollectionDM_);
116  produces< EERecHitCollection >(EERecHitCollectionDM_);
117  produces< ESRecHitCollection >(ESRecHitCollectionDM_);
118 
120  }
121  // Hcal next
122 
123  if(MergeHcalDigis_){
124  HBHEDigiCollectionDM_ = ps.getParameter<std::string>("HBHEDigiCollectionDM");
125  HODigiCollectionDM_ = ps.getParameter<std::string>("HODigiCollectionDM");
126  HFDigiCollectionDM_ = ps.getParameter<std::string>("HFDigiCollectionDM");
127  ZDCDigiCollectionDM_ = ps.getParameter<std::string>("ZDCDigiCollectionDM");
128  QIE10DigiCollectionDM_ = ps.getParameter<std::string>("QIE10DigiCollectionDM");
129  QIE11DigiCollectionDM_ = ps.getParameter<std::string>("QIE11DigiCollectionDM");
130 
131  produces< HBHEDigiCollection >();
132  produces< HODigiCollection >();
133  produces< HFDigiCollection >();
134  produces< ZDCDigiCollection >();
135 
136  produces<QIE10DigiCollection>("HFQIE10DigiCollection");
137  produces<QIE11DigiCollection>("HBHEQIE11DigiCollection");
138 
141 
142  }
143  else{
144  HBHERecHitCollectionDM_ = ps.getParameter<std::string>("HBHERecHitCollectionDM");
145  HORecHitCollectionDM_ = ps.getParameter<std::string>("HORecHitCollectionDM");
146  HFRecHitCollectionDM_ = ps.getParameter<std::string>("HFRecHitCollectionDM");
147  ZDCRecHitCollectionDM_ = ps.getParameter<std::string>("ZDCRecHitCollectionDM");
148 
149  produces< HBHERecHitCollection >(HBHERecHitCollectionDM_);
150  produces< HORecHitCollection >(HORecHitCollectionDM_);
151  produces< HFRecHitCollection >(HFRecHitCollectionDM_);
152  produces< ZDCRecHitCollection >(ZDCRecHitCollectionDM_);
153 
155  }
156 
157  // Muons
158 
159  DTDigiCollectionDM_ = ps.getParameter<std::string>("DTDigiCollectionDM");
160  RPCDigiCollectionDM_ = ps.getParameter<std::string>("RPCDigiCollectionDM");
161  CSCStripDigiCollectionDM_ = ps.getParameter<std::string>("CSCStripDigiCollectionDM");
162  CSCWireDigiCollectionDM_ = ps.getParameter<std::string>("CSCWireDigiCollectionDM");
163  CSCComparatorDigiCollectionDM_ = ps.getParameter<std::string>("CSCComparatorDigiCollectionDM");
164 
165 
166  produces< DTDigiCollection >();
167  produces< RPCDigiCollection >();
168  produces< CSCStripDigiCollection >(CSCStripDigiCollectionDM_);
169  produces< CSCWireDigiCollection >(CSCWireDigiCollectionDM_);
170  produces< CSCComparatorDigiCollection >(CSCComparatorDigiCollectionDM_);
171 
173 
174 
175  if(MergeTrackerDigis_) {
176 
177  // Si-Strips
178 
179  useSiStripRawDigi_ = ps.exists("SiStripRawDigiSource")?
180  ps.getParameter<std::string>("SiStripRawDigiSource")=="PILEUP" ||
181  ps.getParameter<std::string>("SiStripRawDigiSource")=="SIGNAL" : false;
182 
183  SiStripDigiCollectionDM_ = ps.getParameter<std::string>("SiStripDigiCollectionDM");
184 
185  if(useSiStripRawDigi_) {
186 
187  produces< edm::DetSetVector<SiStripRawDigi> > (SiStripDigiCollectionDM_);
189 
190  } else {
191 
192  produces< edm::DetSetVector<SiStripDigi> > (SiStripDigiCollectionDM_);
193 
194  if( addMCDigiNoise_ ) {
196  }
197  else {
199  }
200  }
201 
202  // Pixels
203 
204  PixelDigiCollectionDM_ = ps.getParameter<std::string>("PixelDigiCollectionDM");
205 
206  produces< edm::DetSetVector<PixelDigi> > (PixelDigiCollectionDM_);
207 
208  if( addMCDigiNoise_ ) {
210  }
211  else {
213  }
214 
215  }
216  else{
217  //Tracks:
220  }
221 
222  // Pileup Information: if doing pre-mixing, we have to save the pileup information from the Secondary stream
223 
224  MergePileup_ = ps.getParameter<bool>("MergePileupInfo");
225 
226  if(MergePileup_) {
227  produces< std::vector<PileupSummaryInfo> >();
228  produces< int >("bunchSpacing");
229  produces<CrossingFramePlaybackInfoNew>();
230 
232  }
233 
234  // Validation
235 
236  produces< std::vector<TrackingParticle> >(ps.getParameter<std::string>("TrackingParticleCollectionDM"));
237  produces< std::vector<TrackingVertex> >(ps.getParameter<std::string>("TrackingParticleCollectionDM"));
238 
239  produces< edm::DetSetVector<StripDigiSimLink> >(ps.getParameter<std::string>("StripDigiSimLinkCollectionDM"));
240  produces< edm::DetSetVector<PixelDigiSimLink> >(ps.getParameter<std::string>("PixelDigiSimLinkCollectionDM"));
241  produces< MuonDigiCollection<DTLayerId,DTDigiSimLink> >(ps.getParameter<std::string>("DTDigiSimLinkDM"));
242  produces< edm::DetSetVector<RPCDigiSimLink> >(ps.getParameter<std::string>("RPCDigiSimLinkDM"));
243  produces< edm::DetSetVector<StripDigiSimLink> >(ps.getParameter<std::string>("CSCStripDigiSimLinkDM"));
244  produces< edm::DetSetVector<StripDigiSimLink> >(ps.getParameter<std::string>("CSCWireDigiSimLinkDM"));
245 
247 
248  }
249 
251  // get subdetector names
252  // edm::Service<edm::ConstProductRegistry> reg;
253  // Loop over provenance of products in registry.
254  //for (edm::ProductRegistry::ProductList::const_iterator it = reg->productList().begin(); it != reg->productList().end(); ++it) {
255 
256  // **** Check this out.... ****
257 
258  // See FWCore/Framework/interface/BranchDescription.h
259  // BranchDescription contains all the information for the product.
260 
261  // This section not very backwards-compatible in terms of digi-merging. Need to be able to specify here which data format
262  // to look at...
263 
264  // edm::BranchDescription desc = it->second;
265  //if (!desc.friendlyClassName_.compare(0,9,"EBRecHitC")) {
266  // Subdetectors_.push_back(desc.productInstanceName_);
267  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
268  //}
269  //else if (!desc.friendlyClassName_.compare(0,9,"EERecHitC")) {
270  // else if (!desc.friendlyClassName_.compare(0,9,"EErechitC") && desc.productInstanceName_.compare(0,11,"TrackerHits")) {
271  // Subdetectors_.push_back(desc.productInstanceName_);
272  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
273  //}
274  //else if (!desc.friendlyClassName_.compare(0,9,"HBRecHitC")) {
275  // Subdetectors_.push_back(desc.productInstanceName_);
276  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
277  //}
278  //else if (!desc.friendlyClassName_.compare(0,9,"HERecHitC")) {
279  // Subdetectors_.push_back(desc.productInstanceName_);
280  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
281  // }
282  // and so on with other detector types...
283  // }
284  }
285 
286 
288 
289  if( addMCDigiNoise_ ) {
290  if(MergeTrackerDigis_){
293  }
294  else{
296  }
298  }
301  }
302 
304 
305  }
306 
307 
309  BMixingModule::beginRun( run, ES);
310  if( addMCDigiNoise_ ) {
312  HcalDigiWorkerProd_->beginRun( run, ES );
313  }
314  }
315 
317  //if( addMCDigiNoise_ ) {
318  // HcalDigiWorkerProd_->endRun( run, ES ); // FIXME not implemented
319  // EcalDigiWorkerProd_->endRun( ES ); // FIXME not implemented
320  //}
321  BMixingModule::endRun( run, ES);
322  }
323 
324  // Virtual destructor needed.
326  if(MergeEMDigis_){
327  if(addMCDigiNoise_ ) {delete EcalDigiWorkerProd_;}
328  else {delete EMDigiWorker_;}
329  }
330  else {delete EMWorker_;}
331  if(MergeHcalDigis_) {
333  else { delete HcalDigiWorker_; }}
334  else {delete HcalWorker_;}
335  if(MuonWorker_) delete MuonWorker_;
336  if(MergeTrackerDigis_){
338  delete SiStripRawWorker_;
339  else if(addMCDigiNoise_ ) delete SiStripMCDigiWorker_;
340  else delete SiStripWorker_;
342  else delete SiPixelWorker_;
343  }
344  else{
345  delete GeneralTrackWorker_;
346  }
347  if(MergePileup_) { delete PUWorker_;}
348 
350  }
351 
353  // fill in maps of hits
354 
355  LogDebug("DataMixingModule")<<"===============> adding MC signals for "<<e.id();
356 
357  // Ecal
358  if(MergeEMDigis_) {
360  else {EMDigiWorker_->addEMSignals(e, ES); }
361  }
362  else{ EMWorker_->addEMSignals(e);}
363 
364  // Hcal
365  if(MergeHcalDigis_) {
368  }
369  else{
371  }
372  }
373  else {HcalWorker_->addHcalSignals(e);}
374 
375  // Muon
377 
378  if(MergeTrackerDigis_){
379  // SiStrips
383 
384  // SiPixels
387  }else{
388  //GeneralTrackWorker_->addGeneralTrackSignal(e);
390  }
391  AddedPileup_ = false;
392 
394 
395  } // end of addSignals
396 
397 
398 
399 
400  void DataMixingModule::pileWorker(const EventPrincipal &ep, int bcr, int eventNr, const edm::EventSetup& ES, edm::ModuleCallingContext const* mcc) {
401 
402  InternalContext internalContext(ep.id(), mcc);
403  ParentContext parentContext(&internalContext);
404  ModuleCallingContext moduleCallingContext(&moduleDescription());
405  ModuleContextSentry moduleContextSentry(&moduleCallingContext, parentContext);
406 
407  LogDebug("DataMixingModule") <<"\n===============> adding pileups from event "<<ep.id()<<" for bunchcrossing "<<bcr;
408 
409  // Note: setupPileUpEvent may modify the run and lumi numbers of the EventPrincipal to match that of the primary event.
410  setupPileUpEvent(ES);
411 
412  // check and see if we need to copy the pileup information from
413  // secondary stream to the output stream
414  // We only have the pileup event here, so pick the first time and store the info
415 
416 
417  if(MergePileup_ && !AddedPileup_){
418 
419  PUWorker_->addPileupInfo(&ep, eventNr, &moduleCallingContext);
420 
421  AddedPileup_ = true;
422  }
423 
424  // fill in maps of hits; same code as addSignals, except now applied to the pileup events
425 
426  // Ecal
427  if(MergeEMDigis_) {
428  if(addMCDigiNoise_ ) { EcalDigiWorkerProd_->addEcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
429  else { EMDigiWorker_->addEMPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
430  }
431  else {EMWorker_->addEMPileups(bcr, &ep, eventNr, &moduleCallingContext); }
432 
433  // Hcal
434  if(MergeHcalDigis_) {
435  if(MergeHcalDigisProd_) {
436  HcalDigiWorkerProd_->addHcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);
437  }
438  else{
439  HcalDigiWorker_->addHcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
440  }
441  else {HcalWorker_->addHcalPileups(bcr, &ep, eventNr, &moduleCallingContext);}
442 
443  // Muon
444  MuonWorker_->addMuonPileups(bcr, &ep, eventNr, &moduleCallingContext);
445 
446  if(MergeTrackerDigis_){
447  // SiStrips
448  if(useSiStripRawDigi_) SiStripRawWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
449  else if(addMCDigiNoise_ ) SiStripMCDigiWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
450  else SiStripWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
451 
452  // SiPixels
453  //whoops this should be for the MC worker ????? SiPixelWorker_->setPileupInfo(ps,bunchSpacing);
454  if(addMCDigiNoise_ ) SiPixelMCDigiWorker_->addSiPixelPileups(bcr, &ep, eventNr, &moduleCallingContext);
455  else SiPixelWorker_->addSiPixelPileups(bcr, &ep, eventNr, &moduleCallingContext);
456  }else{
457  PileUpEventPrincipal pep(ep,&moduleCallingContext,bcr);
458  GeneralTrackWorker_->accumulate(pep, ES,ep.streamID());
459  }
460 
461  TrackingParticleWorker_->addTrackingParticlePileups(bcr, &ep, eventNr, &moduleCallingContext);
462 
463  }
464 
465 
466 
468  {
469  using namespace std::placeholders;
470 
471  std::vector<edm::SecondaryEventIDAndFileInfo> recordEventID;
472  std::vector<int> PileupList;
473  PileupList.clear();
474  TrueNumInteractions_.clear();
475 
477 
478  for (int bunchCrossing=minBunch_;bunchCrossing<=maxBunch_;++bunchCrossing) {
479  for (unsigned int isource=0;isource<maxNbSources_;++isource) {
480  std::shared_ptr<PileUp> source = inputSources_[isource];
481  if (!source || !(source->doPileUp(bunchCrossing)))
482  continue;
483 
484  if (isource==0)
485  source->CalculatePileup(minBunch_, maxBunch_, PileupList, TrueNumInteractions_, e.streamID());
486 
487  int NumPU_Events = 0;
488  if (isource ==0) {
489  NumPU_Events = PileupList[bunchCrossing - minBunch_];
490  } else {
491  // non-minbias pileup only gets one event for now. Fix later if desired.
492  NumPU_Events = 1;
493  }
494 
495  if(!MergeTrackerDigis_)
496  GeneralTrackWorker_->initializeBunchCrossing(e, ES, bunchCrossing);
497 
498  source->readPileUp(
499  e.id(),
500  recordEventID,
501  std::bind(&DataMixingModule::pileWorker, std::ref(*this),
502  _1, bunchCrossing, _2, std::cref(ES), mcc),
503  NumPU_Events,
504  e.streamID()
505  );
506 
507  if(!MergeTrackerDigis_)
508  GeneralTrackWorker_->finalizeBunchCrossing(e, ES, bunchCrossing);
509 
510  }
511  }
512 
513  }
514 
515 
517 
518  // individual workers...
519 
520  // move pileup first so we have access to the information for the put step
521 
522  std::vector<PileupSummaryInfo> ps;
523  int bunchSpacing=10000;
524 
525  if(MergePileup_) {
526  PUWorker_->getPileupInfo(ps,bunchSpacing);
528  }
529 
530  // Ecal
531  if(MergeEMDigis_) {
533  else { EMDigiWorker_->putEM(e,ES);}
534  }
535  else {EMWorker_->putEM(e);}
536 
537  // Hcal
538  if(MergeHcalDigis_) {
539  if(MergeHcalDigisProd_) {
541  }
542  else{
543  HcalDigiWorker_->putHcal(e,ES);
544  }
545  }
546  else {HcalWorker_->putHcal(e);}
547 
548  // Muon
549  MuonWorker_->putMuon(e);
550 
551  if(MergeTrackerDigis_){
552  // SiStrips
555  else SiStripWorker_->putSiStrip(e);
556 
557  // SiPixels
558  if(addMCDigiNoise_ ) SiPixelMCDigiWorker_->putSiPixel(e, ES, ps, bunchSpacing);
559  else SiPixelWorker_->putSiPixel(e);
560  }else{
562  }
563 
565 
566  }
567 
571  }
572 
574  // EcalDigiWorkerProd_->endLuminosityBlock(l1,c); // FIXME Not implemented.
576  }
577 
578 
579 } //edm
#define LogDebug(id)
virtual void doPileUp(edm::Event &e, const edm::EventSetup &ES) override
virtual void initializeEvent(edm::Event const &event, edm::EventSetup const &setup)=0
T getParameter(std::string const &) const
edm::EDGetTokenT< HcalQIE11DigitizerTraits::DigiCollection > tok_qie11_
T getUntrackedParameter(std::string const &, T const &) const
void addMuonSignals(const edm::Event &e)
virtual void beginRun(const edm::Run &r, const edm::EventSetup &setup) override
std::string HFDigiCollectionDM_
void addHcalSignals(const edm::Event &e, const edm::EventSetup &ES)
virtual void accumulate(edm::Event const &event, edm::EventSetup const &setup)=0
void putEM(edm::Event &e)
virtual void endRun(const edm::Run &r, const edm::EventSetup &setup) override
virtual void beginLuminosityBlock(LuminosityBlock const &l1, EventSetup const &c) override
void addSiStripSignals(const edm::Event &e)
void addHcalSignals(const edm::Event &e)
static std::string const source("source")
std::string HBHERecHitCollectionDM_
edm::InputTag QIE11PileInputTag_
std::string ZDCRecHitCollectionDM_
void setESAccess(edm::EDGetTokenT< ESDigitizerTraits::DigiCollection > tok)
void addMuonPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
void addEMSignals(const edm::Event &e)
edm::EDGetTokenT< EBDigitizerTraits::DigiCollection > tok_eb_
virtual void finalizeEvent(edm::Event &event, edm::EventSetup const &setup)=0
void addHcalPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
void putEcal(edm::Event &e, const edm::EventSetup &ES)
std::string CSCStripDigiCollectionDM_
edm::InputTag QIE10PileInputTag_
void putPileupInfo(edm::Event &e)
std::vector< float > TrueNumInteractions_
EventID const & id() const
bool exists(std::string const &parameterName) const
checks if a parameter exists
virtual void initializeEvent(edm::Event const &e, edm::EventSetup const &c)
std::string SiStripDigiCollectionDM_
edm::EDGetTokenT< ZDCDigitizerTraits::DigiCollection > tok_zdc_
virtual void initializeBunchCrossing(edm::Event const &event, edm::EventSetup const &setup, int bunchCrossing)
edm::EDGetTokenT< HODigitizerTraits::DigiCollection > tok_ho_
virtual void initializeEvent(const edm::Event &e, edm::EventSetup const &iSetup)
void addHcalPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, const edm::EventSetup &ES, ModuleCallingContext const *)
DigiAccumulatorMixMod * GeneralTrackWorker_
void addSiPixelPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
void addEMPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, const edm::EventSetup &ES, ModuleCallingContext const *)
virtual void endRun(const edm::Run &r, const edm::EventSetup &setup) override
std::string CSCWireDigiCollectionDM_
void putEM(edm::Event &e, const edm::EventSetup &ES)
edm::EDGetTokenT< ESDigitizerTraits::DigiCollection > tok_es_
std::string QIE10DigiCollectionDM_
DataMixingSiStripRawWorker * SiStripRawWorker_
void beginRun(edm::Run const &run, edm::EventSetup const &eventSetup) override
DataMixingSiPixelWorker * SiPixelWorker_
void addSiStripPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
ModuleCallingContext const * moduleCallingContext() const
Definition: Event.h:225
DataMixingSiStripMCDigiWorker * SiStripMCDigiWorker_
std::string RPCDigiCollectionDM_
void initializeEvent(const edm::Event &e, const edm::EventSetup &ES)
void putHcal(edm::Event &e, const edm::EventSetup &ES)
std::string ZDCDigiCollectionDM_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
void addSiStripPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
DataMixingHcalDigiWorker * HcalDigiWorker_
DataMixingEMWorker * EMWorker_
StreamID streamID() const
edm::InputTag EEPileInputTag_
edm::EDGetTokenT< EEDigitizerTraits::DigiCollection > tok_ee_
static const unsigned int maxNbSources_
edm::InputTag ESPileInputTag_
DataMixingPileupCopy * PUWorker_
void addTrackingParticlePileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
void setEBAccess(edm::EDGetTokenT< EBDigitizerTraits::DigiCollection > tok)
std::unique_ptr< DigiAccumulatorMixMod > makeDigiAccumulator(ParameterSet const &, stream::EDProducerBase &, ConsumesCollector &) const
virtual void initializeEvent(edm::Event const &e, edm::EventSetup const &c)
ModuleDescription const & moduleDescription() const
void beginLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
void addSiStripPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
std::string HORecHitCollectionDM_
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
virtual void endLuminosityBlock(LuminosityBlock const &l1, EventSetup const &c) override
DataMixingMuonWorker * MuonWorker_
virtual void getSubdetectorNames()
edm::InputTag EBPileInputTag_
std::string EEDigiCollectionDM_
ParameterSet const & getParameterSet(std::string const &) const
void addHcalPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, const edm::EventSetup &ES, edm::ModuleCallingContext const *)
DataMixingTrackingParticleWorker * TrackingParticleWorker_
edm::InputTag HBHEPileInputTag_
std::string HFRecHitCollectionDM_
void pileWorker(const edm::EventPrincipal &, int bcr, int EventId, const edm::EventSetup &ES, ModuleCallingContext const *)
edm::EDGetTokenT< HcalQIE10DigitizerTraits::DigiCollection > tok_qie10_
std::string HBHEDigiCollectionDM_
std::string EBRecHitCollectionDM_
std::string CSCComparatorDigiCollectionDM_
void addEMPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
edm::InputTag HOPileInputTag_
void putHcal(edm::Event &e, const edm::EventSetup &ES)
void setEEAccess(edm::EDGetTokenT< EEDigitizerTraits::DigiCollection > tok)
virtual void finalizeBunchCrossing(edm::Event &event, edm::EventSetup const &setup, int bunchCrossing)
edm::EventID id() const
Definition: EventBase.h:58
DataMixingSiStripWorker * SiStripWorker_
void beginRun(const edm::EventSetup &ES)
std::string ESRecHitCollectionDM_
std::string EERecHitCollectionDM_
edm::EDGetTokenT< HFDigitizerTraits::DigiCollection > tok_hf_
void addSiPixelPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
std::vector< std::shared_ptr< PileUp > > inputSources_
std::string ESDigiCollectionDM_
virtual void put(edm::Event &e, const edm::EventSetup &ES) override
std::string DTDigiCollectionDM_
void addSiStripSignals(const edm::Event &e)
virtual void initializeEvent(edm::Event const &e, edm::EventSetup const &eventSetup) override
std::string EBDigiCollectionDM_
StreamID streamID() const
Definition: Event.h:81
DataMixingHcalWorker * HcalWorker_
void getPileupInfo(std::vector< PileupSummaryInfo > &ps, int &bs)
edm::InputTag HFPileInputTag_
void addEcalSignals(const edm::Event &e, const edm::EventSetup &ES)
std::string HODigiCollectionDM_
std::string PixelDigiCollectionDM_
DataMixingSiPixelMCDigiWorker * SiPixelMCDigiWorker_
edm::EDGetTokenT< HBHEDigitizerTraits::DigiCollection > tok_hbhe_
DataMixingHcalDigiWorkerProd * HcalDigiWorkerProd_
virtual void beginLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &setup) override
void beginRun(const edm::Run &run, const edm::EventSetup &ES)
void putSiStrip(edm::Event &e, edm::EventSetup const &iSetup)
static DigiAccumulatorMixModFactory const * get()
std::string QIE11DigiCollectionDM_
void addPileupInfo(const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *mcc)
void addEMSignals(const edm::Event &e, const edm::EventSetup &ES)
void addHcalSignals(const edm::Event &e, const edm::EventSetup &ES)
void putSiPixel(edm::Event &e, edm::EventSetup const &iSetup, std::vector< PileupSummaryInfo > &ps, int &bs)
void setupPileUpEvent(const edm::EventSetup &setup)
virtual void addSignals(const edm::Event &e, const edm::EventSetup &ES) override
virtual void endLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &setup) override
void addEcalPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, const edm::EventSetup &ES, edm::ModuleCallingContext const *)
DataMixingEMDigiWorker * EMDigiWorker_
Definition: Run.h:42
void addSiPixelSignals(const edm::Event &e)
edm::InputTag ZDCPileInputTag_
void initializeEvent(const edm::Event &e, const edm::EventSetup &ES)