CMS 3D CMS Logo

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