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