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"
28 
29 
30 using namespace std;
31 
32 namespace edm
33 {
34 
35  // Constructor
36  DataMixingModule::DataMixingModule(const edm::ParameterSet& ps) : BMixingModule(ps),
37  EBPileInputTag_(ps.getParameter<edm::InputTag>("EBPileInputTag")),
38  EEPileInputTag_(ps.getParameter<edm::InputTag>("EEPileInputTag")),
39  ESPileInputTag_(ps.getParameter<edm::InputTag>("ESPileInputTag")),
40  HBHEPileInputTag_(ps.getParameter<edm::InputTag>("HBHEPileInputTag")),
41  HOPileInputTag_(ps.getParameter<edm::InputTag>("HOPileInputTag")),
42  HFPileInputTag_(ps.getParameter<edm::InputTag>("HFPileInputTag")),
43  ZDCPileInputTag_(ps.getParameter<edm::InputTag>("ZDCPileInputTag")),
44  label_(ps.getParameter<std::string>("Label"))
45  {
46  // prepare for data access in DataMixingEcalDigiWorkerProd
47  tok_eb_ = consumes<EBDigitizerTraits::DigiCollection>(EBPileInputTag_);
48  tok_ee_ = consumes<EEDigitizerTraits::DigiCollection>(EEPileInputTag_);
49  tok_es_ = consumes<ESDigitizerTraits::DigiCollection>(ESPileInputTag_);
50 
51  // prepare for data access in DataMixingHcalDigiWorkerProd
52  tok_hbhe_ = consumes<HBHEDigitizerTraits::DigiCollection>(HBHEPileInputTag_);
53  tok_ho_ = consumes<HODigitizerTraits::DigiCollection>(HOPileInputTag_);
54  tok_hf_ = consumes<HFDigitizerTraits::DigiCollection>(HFPileInputTag_);
55  tok_zdc_ = consumes<ZDCDigitizerTraits::DigiCollection>(ZDCPileInputTag_);
56 
57  // get the subdetector names
58  this->getSubdetectorNames(); //something like this may be useful to check what we are supposed to do...
59 
60  // For now, list all of them here. Later, make this selectable with input parameters
61  //
62 
63  // Check to see if we are working in Full or Fast Simulation
64 
65  DoFastSim_ = (ps.getParameter<std::string>("IsThisFastSim")).compare("YES") == 0;
66  MergeEMDigis_ = (ps.getParameter<std::string>("EcalMergeType")).compare("Digis") == 0;
67  MergeHcalDigis_ = (ps.getParameter<std::string>("HcalMergeType")).compare("Digis") == 0;
68  if(MergeHcalDigis_) MergeHcalDigisProd_ = (ps.getParameter<std::string>("HcalDigiMerge")=="FullProd");
69 
70  addMCDigiNoise_ = false;
71 
72  addMCDigiNoise_ = ps.getUntrackedParameter<bool>("addMCDigiNoise"); // for Sim on Sim mixing
73 
74  // Put Fast Sim Sequences here for Simplification: Fewer options!
75 
76  if(DoFastSim_) {
77 
78  // declare the products to produce
79 
80  //Ecal:
81 
82  EBRecHitCollectionDM_ = ps.getParameter<std::string>("EBRecHitCollectionDM");
83  EERecHitCollectionDM_ = ps.getParameter<std::string>("EERecHitCollectionDM");
84  ESRecHitCollectionDM_ = ps.getParameter<std::string>("ESRecHitCollectionDM");
85 
86  produces< EBRecHitCollection >(EBRecHitCollectionDM_);
87  produces< EERecHitCollection >(EERecHitCollectionDM_);
88  produces< ESRecHitCollection >(ESRecHitCollectionDM_);
89 
91 
92  //Hcal:
93 
94  HBHERecHitCollectionDM_ = ps.getParameter<std::string>("HBHERecHitCollectionDM");
95  HORecHitCollectionDM_ = ps.getParameter<std::string>("HORecHitCollectionDM");
96  HFRecHitCollectionDM_ = ps.getParameter<std::string>("HFRecHitCollectionDM");
97  ZDCRecHitCollectionDM_ = ps.getParameter<std::string>("ZDCRecHitCollectionDM");
98 
99  produces< HBHERecHitCollection >(HBHERecHitCollectionDM_);
100  produces< HORecHitCollection >(HORecHitCollectionDM_);
101  produces< HFRecHitCollection >(HFRecHitCollectionDM_);
102  produces< ZDCRecHitCollection >(ZDCRecHitCollectionDM_);
103 
105 
106  //Muons:
107 
108  DTDigiCollectionDM_ = ps.getParameter<std::string>("DTDigiCollectionDM");
109  RPCDigiCollectionDM_ = ps.getParameter<std::string>("RPCDigiCollectionDM");
110  CSCStripDigiCollectionDM_ = ps.getParameter<std::string>("CSCStripDigiCollectionDM");
111  CSCWireDigiCollectionDM_ = ps.getParameter<std::string>("CSCWireDigiCollectionDM");
112  CSCComparatorDigiCollectionDM_ = ps.getParameter<std::string>("CSCComparatorDigiCollectionDM");
113 
114  produces< DTDigiCollection >();
115  produces< RPCDigiCollection >();
116  produces< CSCStripDigiCollection >(CSCStripDigiCollectionDM_);
117  produces< CSCWireDigiCollection >(CSCWireDigiCollectionDM_);
118  produces< CSCComparatorDigiCollection >(CSCComparatorDigiCollectionDM_);
119 
121 
122  //Tracks:
123 
124  GeneralTrackCollectionDM_ = ps.getParameter<std::string>("GeneralTrackDigiCollectionDM");
125  produces< reco::TrackCollection >(GeneralTrackCollectionDM_);
127 
128  }
129  else{ // Full Simulation options
130 
131  //cout<<"FastSim False!!!"<<endl;
132 
133  // declare the products to produce
134  // Start with EM
135  if(MergeEMDigis_) {
136 
137  // cout<<"EM Digis TRUE!!!"<<endl;
138 
139  EBDigiCollectionDM_ = ps.getParameter<std::string>("EBDigiCollectionDM");
140  EEDigiCollectionDM_ = ps.getParameter<std::string>("EEDigiCollectionDM");
141  ESDigiCollectionDM_ = ps.getParameter<std::string>("ESDigiCollectionDM");
142  // nMaxPrintout_ = ps.getUntrackedParameter<int>("nMaxPrintout",10);
143 
144  produces< EBDigiCollection >(EBDigiCollectionDM_);
145  produces< EEDigiCollection >(EEDigiCollectionDM_);
146  produces< ESDigiCollection >(ESDigiCollectionDM_);
147 
148 
149  if(addMCDigiNoise_ ) {
155  }
157  }
158  else { // merge RecHits
159  EBRecHitCollectionDM_ = ps.getParameter<std::string>("EBRecHitCollectionDM");
160  EERecHitCollectionDM_ = ps.getParameter<std::string>("EERecHitCollectionDM");
161  ESRecHitCollectionDM_ = ps.getParameter<std::string>("ESRecHitCollectionDM");
162  // nMaxPrintout_ = ps.getUntrackedParameter<int>("nMaxPrintout",10);
163 
164  produces< EBRecHitCollection >(EBRecHitCollectionDM_);
165  produces< EERecHitCollection >(EERecHitCollectionDM_);
166  produces< ESRecHitCollection >(ESRecHitCollectionDM_);
167 
169  }
170  // Hcal next
171 
172  if(MergeHcalDigis_){
173  // cout<<"Hcal Digis TRUE!!!"<<endl;
174 
175  HBHEDigiCollectionDM_ = ps.getParameter<std::string>("HBHEDigiCollectionDM");
176  HODigiCollectionDM_ = ps.getParameter<std::string>("HODigiCollectionDM");
177  HFDigiCollectionDM_ = ps.getParameter<std::string>("HFDigiCollectionDM");
178  ZDCDigiCollectionDM_ = ps.getParameter<std::string>("ZDCDigiCollectionDM");
179 
180  produces< HBHEDigiCollection >();
181  produces< HODigiCollection >();
182  produces< HFDigiCollection >();
183  produces< ZDCDigiCollection >();
184 
185  produces<HBHEUpgradeDigiCollection>("HBHEUpgradeDigiCollection");
186  produces<HFUpgradeDigiCollection>("HFUpgradeDigiCollection");
187 
188 
189  if(MergeHcalDigisProd_) {
190  // edm::ConsumesCollector iC(consumesCollector());
192  }
194  }
195 
196 
197  }
198  else{
199  HBHERecHitCollectionDM_ = ps.getParameter<std::string>("HBHERecHitCollectionDM");
200  HORecHitCollectionDM_ = ps.getParameter<std::string>("HORecHitCollectionDM");
201  HFRecHitCollectionDM_ = ps.getParameter<std::string>("HFRecHitCollectionDM");
202  ZDCRecHitCollectionDM_ = ps.getParameter<std::string>("ZDCRecHitCollectionDM");
203 
204  produces< HBHERecHitCollection >(HBHERecHitCollectionDM_);
205  produces< HORecHitCollection >(HORecHitCollectionDM_);
206  produces< HFRecHitCollection >(HFRecHitCollectionDM_);
207  produces< ZDCRecHitCollection >(ZDCRecHitCollectionDM_);
208 
210  }
211 
212  // Muons
213 
214  DTDigiCollectionDM_ = ps.getParameter<std::string>("DTDigiCollectionDM");
215  RPCDigiCollectionDM_ = ps.getParameter<std::string>("RPCDigiCollectionDM");
216  CSCStripDigiCollectionDM_ = ps.getParameter<std::string>("CSCStripDigiCollectionDM");
217  CSCWireDigiCollectionDM_ = ps.getParameter<std::string>("CSCWireDigiCollectionDM");
218  CSCComparatorDigiCollectionDM_ = ps.getParameter<std::string>("CSCComparatorDigiCollectionDM");
219 
220 
221  produces< DTDigiCollection >();
222  produces< RPCDigiCollection >();
223  produces< CSCStripDigiCollection >(CSCStripDigiCollectionDM_);
224  produces< CSCWireDigiCollection >(CSCWireDigiCollectionDM_);
225  produces< CSCComparatorDigiCollection >(CSCComparatorDigiCollectionDM_);
226 
228 
229  // Si-Strips
230 
231  useSiStripRawDigi_ = ps.exists("SiStripRawDigiSource")?
232  ps.getParameter<std::string>("SiStripRawDigiSource")=="PILEUP" ||
233  ps.getParameter<std::string>("SiStripRawDigiSource")=="SIGNAL" : false;
234 
235  SiStripDigiCollectionDM_ = ps.getParameter<std::string>("SiStripDigiCollectionDM");
236 
237  if(useSiStripRawDigi_) {
238 
239  produces< edm::DetSetVector<SiStripRawDigi> > (SiStripDigiCollectionDM_);
241 
242  } else {
243 
244  produces< edm::DetSetVector<SiStripDigi> > (SiStripDigiCollectionDM_);
245 
246  if( addMCDigiNoise_ ) {
248  }
249  else {
251  }
252  }
253 
254  // Pixels
255 
256  PixelDigiCollectionDM_ = ps.getParameter<std::string>("PixelDigiCollectionDM");
257 
258  produces< edm::DetSetVector<PixelDigi> > (PixelDigiCollectionDM_);
259 
260  if( addMCDigiNoise_ ) {
262  }
263  else {
265  }
266 
267  } // end of Fast/Full switch
268 
269  // Pileup Information: if doing pre-mixing, we have to save the pileup information from the Secondary stream
270 
271  MergePileup_ = ps.getParameter<bool>("MergePileupInfo");
272 
273  if(MergePileup_) {
274  produces< std::vector<PileupSummaryInfo> >();
275  produces< int >("bunchSpacing");
276  produces<CrossingFramePlaybackInfoNew>();
277 
279  }
280 
281  }
282 
284  // get subdetector names
285  // edm::Service<edm::ConstProductRegistry> reg;
286  // Loop over provenance of products in registry.
287  //for (edm::ProductRegistry::ProductList::const_iterator it = reg->productList().begin(); it != reg->productList().end(); ++it) {
288 
289  // **** Check this out.... ****
290 
291  // See FWCore/Framework/interface/BranchDescription.h
292  // BranchDescription contains all the information for the product.
293 
294  // This section not very backwards-compatible in terms of digi-merging. Need to be able to specify here which data format
295  // to look at...
296 
297  // edm::BranchDescription desc = it->second;
298  //if (!desc.friendlyClassName_.compare(0,9,"EBRecHitC")) {
299  // Subdetectors_.push_back(desc.productInstanceName_);
300  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
301  //}
302  //else if (!desc.friendlyClassName_.compare(0,9,"EERecHitC")) {
303  // else if (!desc.friendlyClassName_.compare(0,9,"EErechitC") && desc.productInstanceName_.compare(0,11,"TrackerHits")) {
304  // Subdetectors_.push_back(desc.productInstanceName_);
305  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
306  //}
307  //else if (!desc.friendlyClassName_.compare(0,9,"HBRecHitC")) {
308  // Subdetectors_.push_back(desc.productInstanceName_);
309  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
310  //}
311  //else if (!desc.friendlyClassName_.compare(0,9,"HERecHitC")) {
312  // Subdetectors_.push_back(desc.productInstanceName_);
313  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
314  // }
315  // and so on with other detector types...
316  // }
317  }
318 
319 
321 
322  if( addMCDigiNoise_ ) {
326  }
329  }
330  }
331 
333  BMixingModule::beginRun( run, ES);
334  if( addMCDigiNoise_ ) {
336  HcalDigiWorkerProd_->beginRun( run, ES );
337  }
338  }
339 
341  //if( addMCDigiNoise_ ) {
342  // HcalDigiWorkerProd_->endRun( run, ES ); // FIXME not implemented
343  // EcalDigiWorkerProd_->endRun( ES ); // FIXME not implemented
344  //}
345  BMixingModule::endRun( run, ES);
346  }
347 
348  // Virtual destructor needed.
350  if(MergeEMDigis_){
351  if(addMCDigiNoise_ ) {delete EcalDigiWorkerProd_;}
352  else {delete EMDigiWorker_;}
353  }
354  else {delete EMWorker_;}
355  if(MergeHcalDigis_) {
357  else { delete HcalDigiWorker_; }}
358  else {delete HcalWorker_;}
359  if(MuonWorker_) delete MuonWorker_;
360  if(DoFastSim_){
361  delete GeneralTrackWorker_;
362  }else{
364  delete SiStripRawWorker_;
365  else if(addMCDigiNoise_ ) delete SiStripMCDigiWorker_;
366  else delete SiStripWorker_;
368  else delete SiPixelWorker_;
369  }
370  if(MergePileup_) { delete PUWorker_;}
371  }
372 
374  // fill in maps of hits
375 
376  LogDebug("DataMixingModule")<<"===============> adding MC signals for "<<e.id();
377 
378  // Ecal
379  if(MergeEMDigis_) {
381  else {EMDigiWorker_->addEMSignals(e, ES); }
382  }
383  else{ EMWorker_->addEMSignals(e);}
384 
385  // Hcal
386  if(MergeHcalDigis_) {
389  }
390  else{
392  }
393  }
394  else {HcalWorker_->addHcalSignals(e);}
395 
396  // Muon
398 
399  if(DoFastSim_){
401  }else{
402  // SiStrips
406 
407  // SiPixels
410  }
411  AddedPileup_ = false;
412 
413  } // end of addSignals
414 
415 
416 
417 
418  void DataMixingModule::pileWorker(const EventPrincipal &ep, int bcr, int eventNr, const edm::EventSetup& ES, edm::ModuleCallingContext const* mcc) {
419 
420  InternalContext internalContext(ep.id(), mcc);
421  ParentContext parentContext(&internalContext);
422  ModuleCallingContext moduleCallingContext(&moduleDescription());
423  ModuleContextSentry moduleContextSentry(&moduleCallingContext, parentContext);
424 
425  LogDebug("DataMixingModule") <<"\n===============> adding pileups from event "<<ep.id()<<" for bunchcrossing "<<bcr;
426 
427 
428  // Note: setupPileUpEvent may modify the run and lumi numbers of the EventPrincipal to match that of the primary event.
429  setupPileUpEvent(ES);
430 
431  // check and see if we need to copy the pileup information from
432  // secondary stream to the output stream
433  // We only have the pileup event here, so pick the first time and store the info
434 
435 
436  if(MergePileup_ && !AddedPileup_){
437 
438  PUWorker_->addPileupInfo(&ep, eventNr, &moduleCallingContext);
439 
440  AddedPileup_ = true;
441  }
442 
443  // fill in maps of hits; same code as addSignals, except now applied to the pileup events
444 
445  // Ecal
446  if(MergeEMDigis_) {
447  if(addMCDigiNoise_ ) { EcalDigiWorkerProd_->addEcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
448  else { EMDigiWorker_->addEMPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
449  }
450  else {EMWorker_->addEMPileups(bcr, &ep, eventNr, &moduleCallingContext); }
451 
452  // Hcal
453  if(MergeHcalDigis_) {
454  if(MergeHcalDigisProd_) {
455  HcalDigiWorkerProd_->addHcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);
456  }
457  else{
458  HcalDigiWorker_->addHcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
459  }
460  else {HcalWorker_->addHcalPileups(bcr, &ep, eventNr, &moduleCallingContext);}
461 
462  // Muon
463  MuonWorker_->addMuonPileups(bcr, &ep, eventNr, &moduleCallingContext);
464 
465  if(DoFastSim_){
466  GeneralTrackWorker_->addGeneralTrackPileups(bcr, &ep, eventNr, &moduleCallingContext);
467  }else{
468 
469  // SiStrips
470  if(useSiStripRawDigi_) SiStripRawWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
471  else if(addMCDigiNoise_ ) SiStripMCDigiWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
472  else SiStripWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
473 
474  // SiPixels
475  //whoops this should be for the MC worker ????? SiPixelWorker_->setPileupInfo(ps,bunchSpacing);
476  if(addMCDigiNoise_ ) SiPixelMCDigiWorker_->addSiPixelPileups(bcr, &ep, eventNr, &moduleCallingContext);
477  else SiPixelWorker_->addSiPixelPileups(bcr, &ep, eventNr, &moduleCallingContext);
478  }
479 
480 
481  }
482 
483 
484 
486  {
487  using namespace std::placeholders;
488 
489  std::vector<edm::SecondaryEventIDAndFileInfo> recordEventID;
490  std::vector<int> PileupList;
491  PileupList.clear();
492  TrueNumInteractions_.clear();
493 
495 
496  for (int bunchCrossing=minBunch_;bunchCrossing<=maxBunch_;++bunchCrossing) {
497  for (unsigned int isource=0;isource<maxNbSources_;++isource) {
498  std::shared_ptr<PileUp> source = inputSources_[isource];
499  if (!source || !(source->doPileUp(bunchCrossing)))
500  continue;
501 
502  if (isource==0)
503  source->CalculatePileup(minBunch_, maxBunch_, PileupList, TrueNumInteractions_, e.streamID());
504 
505  int NumPU_Events = 0;
506  if (isource ==0) {
507  NumPU_Events = PileupList[bunchCrossing - minBunch_];
508  } else {
509  // non-minbias pileup only gets one event for now. Fix later if desired.
510  NumPU_Events = 1;
511  }
512 
513  source->readPileUp(
514  e.id(),
515  recordEventID,
516  std::bind(&DataMixingModule::pileWorker, std::ref(*this),
517  _1, bunchCrossing, _2, std::cref(ES), mcc),
518  NumPU_Events,
519  e.streamID()
520  );
521  }
522  }
523 
524  }
525 
526 
528 
529  // individual workers...
530 
531  // move pileup first so we have access to the information for the put step
532 
533  std::vector<PileupSummaryInfo> ps;
534  int bunchSpacing=10000;
535 
536  if(MergePileup_) {
537  PUWorker_->getPileupInfo(ps,bunchSpacing);
539  }
540 
541  // Ecal
542  if(MergeEMDigis_) {
544  else { EMDigiWorker_->putEM(e,ES);}
545  }
546  else {EMWorker_->putEM(e);}
547 
548  // Hcal
549  if(MergeHcalDigis_) {
550  if(MergeHcalDigisProd_) {
552  }
553  else{
554  HcalDigiWorker_->putHcal(e,ES);
555  }
556  }
557  else {HcalWorker_->putHcal(e);}
558 
559  // Muon
560  MuonWorker_->putMuon(e);
561 
562  if(DoFastSim_){
564  }else{
565  // SiStrips
568  else SiStripWorker_->putSiStrip(e);
569 
570  // SiPixels
571  if(addMCDigiNoise_ ) SiPixelMCDigiWorker_->putSiPixel(e, ES, ps, bunchSpacing);
572  else SiPixelWorker_->putSiPixel(e);
573  }
574 
575 
576  }
577 
581  }
582 
584  // EcalDigiWorkerProd_->endLuminosityBlock(l1,c); // FIXME Not implemented.
586  }
587 
588 
589 } //edm
#define LogDebug(id)
virtual void doPileUp(edm::Event &e, const edm::EventSetup &ES) override
T getParameter(std::string const &) const
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
virtual void initializeEvent(edm::Event const &e, edm::EventSetup const &eventSetup)
std::string HFDigiCollectionDM_
void addHcalSignals(const edm::Event &e, const edm::EventSetup &ES)
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_
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)
void beginRun(edm::Run const &run, edm::EventSetup const &eventSetup)
edm::EDGetTokenT< EBDigitizerTraits::DigiCollection > tok_eb_
void addHcalPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
DataMixingGeneralTrackWorker * GeneralTrackWorker_
void putEcal(edm::Event &e, const edm::EventSetup &ES)
std::string CSCStripDigiCollectionDM_
void putPileupInfo(edm::Event &e)
std::vector< float > TrueNumInteractions_
Definition: BMixingModule.h:89
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_
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 *)
ModuleDescription const & moduleDescription() const
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_
DataMixingSiStripRawWorker * SiStripRawWorker_
DataMixingSiPixelWorker * SiPixelWorker_
void addSiStripPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
ModuleCallingContext const * moduleCallingContext() const
Definition: Event.h:217
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_
std::string GeneralTrackCollectionDM_
virtual void addSignals(const edm::Event &e, const edm::EventSetup &ES)
edm::InputTag EEPileInputTag_
edm::EDGetTokenT< EEDigitizerTraits::DigiCollection > tok_ee_
static const unsigned int maxNbSources_
Definition: BMixingModule.h:86
edm::InputTag ESPileInputTag_
DataMixingPileupCopy * PUWorker_
void setEBAccess(edm::EDGetTokenT< EBDigitizerTraits::DigiCollection > tok)
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_
void addHcalPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, const edm::EventSetup &ES, edm::ModuleCallingContext const *)
edm::InputTag HBHEPileInputTag_
std::string HFRecHitCollectionDM_
void pileWorker(const edm::EventPrincipal &, int bcr, int EventId, const edm::EventSetup &ES, ModuleCallingContext const *)
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)
edm::EventID id() const
Definition: EventBase.h:60
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_
Definition: BMixingModule.h:94
std::string ESDigiCollectionDM_
std::string DTDigiCollectionDM_
void addSiStripSignals(const edm::Event &e)
std::string EBDigiCollectionDM_
StreamID streamID() const
Definition: Event.h:72
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_
void addGeneralTrackPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
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)
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 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:41
void addSiPixelSignals(const edm::Event &e)
edm::InputTag ZDCPileInputTag_
void initializeEvent(const edm::Event &e, const edm::EventSetup &ES)
virtual void put(edm::Event &e, const edm::EventSetup &ES)