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 <boost/bind.hpp>
22 //
23 //
24 #include "DataMixingModule.h"
25 
26 
27 using namespace std;
28 
29 namespace edm
30 {
31 
32  // Constructor
33  DataMixingModule::DataMixingModule(const edm::ParameterSet& ps) : BMixingModule(ps),
34  EBPileInputTag_(ps.getParameter<edm::InputTag>("EBPileInputTag")),
35  EEPileInputTag_(ps.getParameter<edm::InputTag>("EEPileInputTag")),
36  ESPileInputTag_(ps.getParameter<edm::InputTag>("ESPileInputTag")),
37  HBHEPileInputTag_(ps.getParameter<edm::InputTag>("HBHEPileInputTag")),
38  HOPileInputTag_(ps.getParameter<edm::InputTag>("HOPileInputTag")),
39  HFPileInputTag_(ps.getParameter<edm::InputTag>("HFPileInputTag")),
40  ZDCPileInputTag_(ps.getParameter<edm::InputTag>("ZDCPileInputTag")),
41  label_(ps.getParameter<std::string>("Label"))
42  {
43  // prepare for data access in DataMixingEcalDigiWorkerProd
44  tok_eb_ = consumes<EBDigitizerTraits::DigiCollection>(EBPileInputTag_);
45  tok_ee_ = consumes<EEDigitizerTraits::DigiCollection>(EEPileInputTag_);
46  tok_es_ = consumes<ESDigitizerTraits::DigiCollection>(ESPileInputTag_);
47 
48  // prepare for data access in DataMixingHcalDigiWorkerProd
49  tok_hbhe_ = consumes<HBHEDigitizerTraits::DigiCollection>(HBHEPileInputTag_);
50  tok_ho_ = consumes<HODigitizerTraits::DigiCollection>(HOPileInputTag_);
51  tok_hf_ = consumes<HFDigitizerTraits::DigiCollection>(HFPileInputTag_);
52  tok_zdc_ = consumes<ZDCDigitizerTraits::DigiCollection>(ZDCPileInputTag_);
53 
54  // get the subdetector names
55  this->getSubdetectorNames(); //something like this may be useful to check what we are supposed to do...
56 
57  // For now, list all of them here. Later, make this selectable with input parameters
58  //
59 
60  // Check to see if we are working in Full or Fast Simulation
61 
62  DoFastSim_ = (ps.getParameter<std::string>("IsThisFastSim")).compare("YES") == 0;
63  MergeEMDigis_ = (ps.getParameter<std::string>("EcalMergeType")).compare("Digis") == 0;
64  MergeHcalDigis_ = (ps.getParameter<std::string>("HcalMergeType")).compare("Digis") == 0;
65  if(MergeHcalDigis_) MergeHcalDigisProd_ = (ps.getParameter<std::string>("HcalDigiMerge")=="FullProd");
66 
67  addMCDigiNoise_ = false;
68 
69  addMCDigiNoise_ = ps.getUntrackedParameter<bool>("addMCDigiNoise"); // for Sim on Sim mixing
70 
71 
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_);
245 
246  if( addMCDigiNoise_ ) {
248  }
249  else {
250  SiStripWorker_ = new DataMixingSiStripWorker(ps, consumesCollector());
251  }
252  }
253 
254  // Pixels
255 
256  PixelDigiCollectionDM_ = ps.getParameter<std::string>("PixelDigiCollectionDM");
257 
258  produces< edm::DetSetVector<PixelDigi> > (PixelDigiCollectionDM_);
259 
261 
262  }
263 
264  // Pileup Information: if doing pre-mixing, we have to save the pileup information from the Secondary stream
265 
266  MergePileup_ = ps.getParameter<bool>("MergePileupInfo");
267 
268  if(MergePileup_) {
269  produces< std::vector<PileupSummaryInfo> >();
270  produces<CrossingFramePlaybackInfoExtended>();
271 
273  }
274 
275  }
276 
278  // get subdetector names
279  // edm::Service<edm::ConstProductRegistry> reg;
280  // Loop over provenance of products in registry.
281  //for (edm::ProductRegistry::ProductList::const_iterator it = reg->productList().begin(); it != reg->productList().end(); ++it) {
282 
283  // **** Check this out.... ****
284 
285  // See FWCore/Framework/interface/BranchDescription.h
286  // BranchDescription contains all the information for the product.
287 
288  // This section not very backwards-compatible in terms of digi-merging. Need to be able to specify here which data format
289  // to look at...
290 
291  // edm::BranchDescription desc = it->second;
292  //if (!desc.friendlyClassName_.compare(0,9,"EBRecHitC")) {
293  // Subdetectors_.push_back(desc.productInstanceName_);
294  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
295  //}
296  //else if (!desc.friendlyClassName_.compare(0,9,"EERecHitC")) {
297  // else if (!desc.friendlyClassName_.compare(0,9,"EErechitC") && desc.productInstanceName_.compare(0,11,"TrackerHits")) {
298  // Subdetectors_.push_back(desc.productInstanceName_);
299  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
300  //}
301  //else if (!desc.friendlyClassName_.compare(0,9,"HBRecHitC")) {
302  // Subdetectors_.push_back(desc.productInstanceName_);
303  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
304  //}
305  //else if (!desc.friendlyClassName_.compare(0,9,"HERecHitC")) {
306  // Subdetectors_.push_back(desc.productInstanceName_);
307  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
308  // }
309  // and so on with other detector types...
310  // }
311  }
312 
313 
315 
316  if( addMCDigiNoise_ ) {
319  }
322  }
323  }
324 
326  BMixingModule::beginRun( run, ES);
327  if( addMCDigiNoise_ ) {
329  HcalDigiWorkerProd_->beginRun( run, ES );
330  }
331  }
332 
333  // Virtual destructor needed.
335  if(MergeEMDigis_){
336  if(addMCDigiNoise_ ) {delete EcalDigiWorkerProd_;}
337  else {delete EMDigiWorker_;}
338  }
339  else {delete EMWorker_;}
340  if(MergeHcalDigis_) {
342  else { delete HcalDigiWorker_; }}
343  else {delete HcalWorker_;}
344  if(MuonWorker_) delete MuonWorker_;
345  if(DoFastSim_){
346  delete GeneralTrackWorker_;
347  }else{
349  delete SiStripRawWorker_;
350  else if(addMCDigiNoise_ ) delete SiStripMCDigiWorker_;
351  else delete SiStripWorker_;
352 
353  delete SiPixelWorker_;
354  }
355  if(MergePileup_) { delete PUWorker_;}
356  }
357 
359  // fill in maps of hits
360 
361  LogDebug("DataMixingModule")<<"===============> adding MC signals for "<<e.id();
362 
363  // Ecal
364  if(MergeEMDigis_) {
366  else {EMDigiWorker_->addEMSignals(e, ES); }
367  }
368  else{ EMWorker_->addEMSignals(e);}
369 
370  // Hcal
371  if(MergeHcalDigis_) {
374  }
375  else{
377  }
378  }
379  else {HcalWorker_->addHcalSignals(e);}
380 
381  // Muon
383 
384  if(DoFastSim_){
386  }else{
387  // SiStrips
391 
392  // SiPixels
394  }
395  AddedPileup_ = false;
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  // fill in maps of hits; same code as addSignals, except now applied to the pileup events
415 
416  // Ecal
417  if(MergeEMDigis_) {
418  if(addMCDigiNoise_ ) { EcalDigiWorkerProd_->addEcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
419  else { EMDigiWorker_->addEMPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
420  }
421  else {EMWorker_->addEMPileups(bcr, &ep, eventNr, &moduleCallingContext); }
422 
423  // Hcal
424  if(MergeHcalDigis_) {
425  if(MergeHcalDigisProd_) {
426  HcalDigiWorkerProd_->addHcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);
427  }
428  else{
429  HcalDigiWorker_->addHcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
430  }
431  else {HcalWorker_->addHcalPileups(bcr, &ep, eventNr, &moduleCallingContext);}
432 
433  // Muon
434  MuonWorker_->addMuonPileups(bcr, &ep, eventNr, &moduleCallingContext);
435 
436  if(DoFastSim_){
437  GeneralTrackWorker_->addGeneralTrackPileups(bcr, &ep, eventNr, &moduleCallingContext);
438  }else{
439 
440  // SiStrips
441  if(useSiStripRawDigi_) SiStripRawWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
442  else if(addMCDigiNoise_ ) SiStripMCDigiWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
443  else SiStripWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
444 
445  // SiPixels
446  SiPixelWorker_->addSiPixelPileups(bcr, &ep, eventNr, &moduleCallingContext);
447  }
448 
449  // check and see if we need to copy the pileup information from
450  // secondary stream to the output stream
451  // We only have the pileup event here, so pick the first time and store the info
452 
453  if(MergePileup_ && !AddedPileup_){
454 
455  PUWorker_->addPileupInfo(&ep, eventNr, &moduleCallingContext);
456 
457  AddedPileup_ = true;
458  }
459 
460  }
461 
462 
463 
465  {
466  std::vector<edm::EventID> recordEventID;
467  std::vector<int> PileupList;
468  PileupList.clear();
469  TrueNumInteractions_.clear();
470 
472 
473  for (int bunchCrossing=minBunch_;bunchCrossing<=maxBunch_;++bunchCrossing) {
474  for (unsigned int isource=0;isource<maxNbSources_;++isource) {
475  boost::shared_ptr<PileUp> source = inputSources_[isource];
476  if (not source or not source->doPileUp())
477  continue;
478 
479  if (isource==0)
480  source->CalculatePileup(minBunch_, maxBunch_, PileupList, TrueNumInteractions_, e.streamID());
481 
482  int NumPU_Events = 0;
483  if (isource ==0) {
484  NumPU_Events = PileupList[bunchCrossing - minBunch_];
485  } else {
486  // non-minbias pileup only gets one event for now. Fix later if desired.
487  NumPU_Events = 1;
488  }
489 
490  source->readPileUp(
491  e.id(),
492  recordEventID,
493  boost::bind(&DataMixingModule::pileWorker, boost::ref(*this),
494  _1, bunchCrossing, _2, boost::cref(ES), mcc),
495  NumPU_Events,
496  e.streamID()
497  );
498  }
499  }
500 
501  }
502 
503 
505 
506  // individual workers...
507 
508  // Ecal
509  if(MergeEMDigis_) {
511  else { EMDigiWorker_->putEM(e,ES);}
512  }
513  else {EMWorker_->putEM(e);}
514 
515  // Hcal
516  if(MergeHcalDigis_) {
517  if(MergeHcalDigisProd_) {
519  }
520  else{
521  HcalDigiWorker_->putHcal(e,ES);
522  }
523  }
524  else {HcalWorker_->putHcal(e);}
525 
526  // Muon
527  MuonWorker_->putMuon(e);
528 
529  if(DoFastSim_){
531  }else{
532  // SiStrips
535  else SiStripWorker_->putSiStrip(e);
536 
537  // SiPixels
539  }
540 
542 
543 
544  }
545 
546 
547 } //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
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)
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)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
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:92
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 *)
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:212
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:89
edm::InputTag ESPileInputTag_
DataMixingPileupCopy * PUWorker_
void setEBAccess(edm::EDGetTokenT< EBDigitizerTraits::DigiCollection > tok)
void addSiStripPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
std::string HORecHitCollectionDM_
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
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)
std::vector< boost::shared_ptr< PileUp > > inputSources_
Definition: BMixingModule.h:97
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::string ESDigiCollectionDM_
std::string DTDigiCollectionDM_
void addSiStripSignals(const edm::Event &e)
std::string EBDigiCollectionDM_
StreamID streamID() const
Definition: Event.h:75
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_
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)
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)