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