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