CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
edm::DataMixingModule Class Reference

#include <DataMixingModule.h>

Inheritance diagram for edm::DataMixingModule:
edm::BMixingModule edm::stream::EDProducer< GlobalCache< MixingCache::Config > > edm::stream::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

virtual void addSignals (const edm::Event &e, const edm::EventSetup &ES) override
 
virtual void beginLuminosityBlock (LuminosityBlock const &l1, EventSetup const &c) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &eventSetup) override
 
virtual void checkSignal (const edm::Event &e) override
 
virtual void createnewEDProduct () override
 
 DataMixingModule (const edm::ParameterSet &ps, MixingCache::Config const *globalConf)
 
virtual void doPileUp (edm::Event &e, const edm::EventSetup &ES) override
 
virtual void endLuminosityBlock (LuminosityBlock const &l1, EventSetup const &c) override
 
virtual void endRun (const edm::Run &r, const edm::EventSetup &setup) override
 
virtual void initializeEvent (edm::Event const &e, edm::EventSetup const &eventSetup) override
 
void pileWorker (const edm::EventPrincipal &, int bcr, int EventId, const edm::EventSetup &ES, ModuleCallingContext const *)
 
virtual void put (edm::Event &e, const edm::EventSetup &ES) override
 
virtual ~DataMixingModule ()
 
- Public Member Functions inherited from edm::BMixingModule
virtual void addPileups (const int bcr, EventPrincipal *ep, unsigned int eventId, unsigned int worker, const edm::EventSetup &c)
 
double averageNumber () const
 
virtual void beginLuminosityBlock (const edm::LuminosityBlock &l, const edm::EventSetup &setup) override
 
virtual void beginRun (const edm::Run &r, const edm::EventSetup &setup) override
 
 BMixingModule (const edm::ParameterSet &ps, MixingCache::Config const *globalConf)
 
virtual void endLuminosityBlock (const edm::LuminosityBlock &l, const edm::EventSetup &setup) override
 
virtual void finalizeEvent (edm::Event &event, const edm::EventSetup &setup)
 
virtual void initializeEvent (const edm::Event &event, const edm::EventSetup &setup)
 
bool poisson () const
 
virtual void produce (edm::Event &e1, const edm::EventSetup &c) override
 
virtual void reload (const edm::EventSetup &setup)
 
virtual void setBcrOffset ()
 
virtual void setSourceOffset (const unsigned int s)
 
virtual ~BMixingModule ()
 
- Public Member Functions inherited from edm::stream::EDProducer< GlobalCache< MixingCache::Config > >
 EDProducer ()=default
 
- Public Member Functions inherited from edm::stream::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, std::unordered_multimap< std::string, edm::ProductResolverIndex > const &iIndicies, std::string const &moduleLabel)
 
virtual ~ProducerBase () noexcept(false)
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

virtual void getSubdetectorNames ()
 

Private Attributes

bool AddedPileup_
 
bool addMCDigiNoise_
 
std::string CSCComparatorDigiCollectionDM_
 
std::string CSCStripDigiCollectionDM_
 
std::string CSCWireDigiCollectionDM_
 
std::string DTDigiCollectionDM_
 
std::string EBDigiCollectionDM_
 
edm::InputTag EBPileInputTag_
 
std::string EBRecHitCollectionDM_
 
DataMixingEcalDigiWorkerProdEcalDigiWorkerProd_
 
std::string EEDigiCollectionDM_
 
edm::InputTag EEPileInputTag_
 
std::string EERecHitCollectionDM_
 
DataMixingEMDigiWorkerEMDigiWorker_
 
DataMixingEMWorkerEMWorker_
 
std::string ESDigiCollectionDM_
 
edm::InputTag ESPileInputTag_
 
std::string ESRecHitCollectionDM_
 
DigiAccumulatorMixModGeneralTrackWorker_
 
std::string HBHEDigiCollectionDM_
 
edm::InputTag HBHEPileInputTag_
 
std::string HBHERecHitCollectionDM_
 
DataMixingHcalDigiWorkerHcalDigiWorker_
 
DataMixingHcalDigiWorkerProdHcalDigiWorkerProd_
 
DataMixingHcalWorkerHcalWorker_
 
std::string HFDigiCollectionDM_
 
edm::InputTag HFPileInputTag_
 
std::string HFRecHitCollectionDM_
 
std::string HODigiCollectionDM_
 
edm::InputTag HOPileInputTag_
 
std::string HORecHitCollectionDM_
 
std::string label_
 
bool MergeEMDigis_
 
bool MergeHcalDigis_
 
bool MergeHcalDigisProd_
 
bool MergePileup_
 
bool MergeTrackerDigis_
 
DataMixingMuonWorkerMuonWorker_
 
std::string PixelDigiCollectionDM_
 
DataMixingPileupCopyPUWorker_
 
std::string QIE10DigiCollectionDM_
 
edm::InputTag QIE10PileInputTag_
 
std::string QIE11DigiCollectionDM_
 
edm::InputTag QIE11PileInputTag_
 
std::string RPCDigiCollectionDM_
 
DataMixingSiPixelMCDigiWorkerSiPixelMCDigiWorker_
 
DataMixingSiPixelWorkerSiPixelWorker_
 
std::string SiStripDigiCollectionDM_
 
DataMixingSiStripMCDigiWorkerSiStripMCDigiWorker_
 
std::string siStripRawDigiSource_
 
DataMixingSiStripRawWorkerSiStripRawWorker_
 
DataMixingSiStripWorkerSiStripWorker_
 
std::vector< std::string > Subdetectors_
 
edm::EDGetTokenT< EBDigitizerTraits::DigiCollectiontok_eb_
 
edm::EDGetTokenT< EEDigitizerTraits::DigiCollectiontok_ee_
 
edm::EDGetTokenT< ESDigitizerTraits::DigiCollectiontok_es_
 
edm::EDGetTokenT< HBHEDigitizerTraits::DigiCollectiontok_hbhe_
 
edm::EDGetTokenT< HFDigitizerTraits::DigiCollectiontok_hf_
 
edm::EDGetTokenT< HODigitizerTraits::DigiCollectiontok_ho_
 
edm::EDGetTokenT< HcalQIE10DigitizerTraits::DigiCollectiontok_qie10_
 
edm::EDGetTokenT< HcalQIE11DigitizerTraits::DigiCollectiontok_qie11_
 
edm::EDGetTokenT< ZDCDigitizerTraits::DigiCollectiontok_zdc_
 
DataMixingTrackingParticleWorkerTrackingParticleWorker_
 
bool useSiStripRawDigi_
 
std::string ZDCDigiCollectionDM_
 
edm::InputTag ZDCPileInputTag_
 
std::string ZDCRecHitCollectionDM_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer< GlobalCache< MixingCache::Config > >
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDProducerBase
typedef EDProducerAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::BMixingModule
static void globalEndJob (MixingCache::Config *)
 
static std::unique_ptr< MixingCache::ConfiginitializeGlobalCache (edm::ParameterSet const &)
 
- Static Public Member Functions inherited from edm::stream::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::BMixingModule
virtual void beginStream (edm::StreamID) override
 
void dropUnwantedBranches (std::vector< std::string > const &wantedBranches)
 
virtual void endStream () override
 
void setupPileUpEvent (const edm::EventSetup &setup)
 
void update (edm::EventSetup const &)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from edm::BMixingModule
int bunchSpace_
 
bool checktof_
 
bool doit_ [4]
 
unsigned int eventId_
 
std::vector< std::shared_ptr< PileUp > > inputSources_
 
int maxBunch_
 
int minBunch_
 
bool const mixProdStep1_
 
bool const mixProdStep2_
 
edm::ESWatcher< MixingRcdparameterWatcher_
 
bool playback_
 
bool readDB_
 
std::vector< float > TrueNumInteractions_
 
int vertexOffset_
 
- Static Protected Attributes inherited from edm::BMixingModule
static const unsigned int maxNbSources_ =4
 

Detailed Description

Definition at line 51 of file DataMixingModule.h.

Constructor & Destructor Documentation

DataMixingModule::DataMixingModule ( const edm::ParameterSet ps,
MixingCache::Config const *  globalConf 
)
explicit

standard constructor

Definition at line 39 of file DataMixingModule.cc.

References addMCDigiNoise_, edm::EDConsumerBase::consumesCollector(), CSCComparatorDigiCollectionDM_, CSCStripDigiCollectionDM_, CSCWireDigiCollectionDM_, DTDigiCollectionDM_, EBDigiCollectionDM_, EBPileInputTag_, EBRecHitCollectionDM_, EcalDigiWorkerProd_, EEDigiCollectionDM_, EEPileInputTag_, EERecHitCollectionDM_, EMDigiWorker_, EMWorker_, ESDigiCollectionDM_, ESPileInputTag_, ESRecHitCollectionDM_, edm::ParameterSet::exists(), GeneralTrackWorker_, edm::DigiAccumulatorMixModFactory::get(), edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSet(), getSubdetectorNames(), edm::ParameterSet::getUntrackedParameter(), HBHEDigiCollectionDM_, HBHEPileInputTag_, HBHERecHitCollectionDM_, HcalDigiWorker_, HcalDigiWorkerProd_, HcalWorker_, HFDigiCollectionDM_, HFPileInputTag_, HFRecHitCollectionDM_, HODigiCollectionDM_, HOPileInputTag_, HORecHitCollectionDM_, edm::DigiAccumulatorMixModFactory::makeDigiAccumulator(), MergeEMDigis_, MergeHcalDigis_, MergeHcalDigisProd_, MergePileup_, MergeTrackerDigis_, MuonWorker_, PixelDigiCollectionDM_, PUWorker_, QIE10DigiCollectionDM_, QIE10PileInputTag_, QIE11DigiCollectionDM_, QIE11PileInputTag_, fetchall_from_DQM_v2::release, RPCDigiCollectionDM_, edm::DataMixingEcalDigiWorkerProd::setEBAccess(), edm::DataMixingEcalDigiWorkerProd::setEEAccess(), edm::DataMixingEcalDigiWorkerProd::setESAccess(), SiPixelMCDigiWorker_, SiPixelWorker_, SiStripDigiCollectionDM_, SiStripMCDigiWorker_, SiStripRawWorker_, SiStripWorker_, AlCaHLTBitMon_QueryRunRegistry::string, tok_eb_, tok_ee_, tok_es_, tok_hbhe_, tok_hf_, tok_ho_, tok_qie10_, tok_qie11_, tok_zdc_, TrackingParticleWorker_, useSiStripRawDigi_, ZDCDigiCollectionDM_, ZDCPileInputTag_, and ZDCRecHitCollectionDM_.

39  :
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  QIE10PileInputTag_(ps.getParameter<edm::InputTag>("QIE10PileInputTag")),
49  QIE11PileInputTag_(ps.getParameter<edm::InputTag>("QIE11PileInputTag")),
50  label_(ps.getParameter<std::string>("Label"))
51  {
52 
53  // prepare for data access in DataMixingEcalDigiWorkerProd
54  tok_eb_ = consumes<EBDigitizerTraits::DigiCollection>(EBPileInputTag_);
55  tok_ee_ = consumes<EEDigitizerTraits::DigiCollection>(EEPileInputTag_);
56  tok_es_ = consumes<ESDigitizerTraits::DigiCollection>(ESPileInputTag_);
57 
58  // prepare for data access in DataMixingHcalDigiWorkerProd
59  tok_hbhe_ = consumes<HBHEDigitizerTraits::DigiCollection>(HBHEPileInputTag_);
60  tok_ho_ = consumes<HODigitizerTraits::DigiCollection>(HOPileInputTag_);
61  tok_hf_ = consumes<HFDigitizerTraits::DigiCollection>(HFPileInputTag_);
62  tok_zdc_ = consumes<ZDCDigitizerTraits::DigiCollection>(ZDCPileInputTag_);
63  tok_qie10_ = consumes<HcalQIE10DigitizerTraits::DigiCollection>(QIE10PileInputTag_);
64  tok_qie11_ = consumes<HcalQIE11DigitizerTraits::DigiCollection>(QIE11PileInputTag_);
65 
66  // get the subdetector names
67  this->getSubdetectorNames(); //something like this may be useful to check what we are supposed to do...
68 
69  // For now, list all of them here. Later, make this selectable with input parameters
70  //
71 
72  // Check to see if we are working in Full or Fast Simulation
73 
74  MergeTrackerDigis_ = (ps.getParameter<std::string>("TrackerMergeType")).compare("Digis") == 0;
75  MergeEMDigis_ = (ps.getParameter<std::string>("EcalMergeType")).compare("Digis") == 0;
76  MergeHcalDigis_ = (ps.getParameter<std::string>("HcalMergeType")).compare("Digis") == 0;
77  if(MergeHcalDigis_) MergeHcalDigisProd_ = (ps.getParameter<std::string>("HcalDigiMerge")=="FullProd");
78 
79  addMCDigiNoise_ = false;
80 
81  addMCDigiNoise_ = ps.getUntrackedParameter<bool>("addMCDigiNoise"); // for Sim on Sim mixing
82 
83  // Put Fast Sim Sequences here for Simplification: Fewer options!
84 
85 
86  if(MergeEMDigis_) {
87 
88  // cout<<"EM Digis TRUE!!!"<<endl;
89 
90  EBDigiCollectionDM_ = ps.getParameter<std::string>("EBDigiCollectionDM");
91  EEDigiCollectionDM_ = ps.getParameter<std::string>("EEDigiCollectionDM");
92  ESDigiCollectionDM_ = ps.getParameter<std::string>("ESDigiCollectionDM");
93  // nMaxPrintout_ = ps.getUntrackedParameter<int>("nMaxPrintout",10);
94 
95  produces< EBDigiCollection >(EBDigiCollectionDM_);
96  produces< EEDigiCollection >(EEDigiCollectionDM_);
97  produces< ESDigiCollection >(ESDigiCollectionDM_);
98 
99 
100  if(addMCDigiNoise_ ) {
106  }
108  }
109  else { // merge RecHits
110  EBRecHitCollectionDM_ = ps.getParameter<std::string>("EBRecHitCollectionDM");
111  EERecHitCollectionDM_ = ps.getParameter<std::string>("EERecHitCollectionDM");
112  ESRecHitCollectionDM_ = ps.getParameter<std::string>("ESRecHitCollectionDM");
113  // nMaxPrintout_ = ps.getUntrackedParameter<int>("nMaxPrintout",10);
114 
115  produces< EBRecHitCollection >(EBRecHitCollectionDM_);
116  produces< EERecHitCollection >(EERecHitCollectionDM_);
117  produces< ESRecHitCollection >(ESRecHitCollectionDM_);
118 
120  }
121  // Hcal next
122 
123  if(MergeHcalDigis_){
124  HBHEDigiCollectionDM_ = ps.getParameter<std::string>("HBHEDigiCollectionDM");
125  HODigiCollectionDM_ = ps.getParameter<std::string>("HODigiCollectionDM");
126  HFDigiCollectionDM_ = ps.getParameter<std::string>("HFDigiCollectionDM");
127  ZDCDigiCollectionDM_ = ps.getParameter<std::string>("ZDCDigiCollectionDM");
128  QIE10DigiCollectionDM_ = ps.getParameter<std::string>("QIE10DigiCollectionDM");
129  QIE11DigiCollectionDM_ = ps.getParameter<std::string>("QIE11DigiCollectionDM");
130 
131  produces< HBHEDigiCollection >();
132  produces< HODigiCollection >();
133  produces< HFDigiCollection >();
134  produces< ZDCDigiCollection >();
135 
136  produces<QIE10DigiCollection>("HFQIE10DigiCollection");
137  produces<QIE11DigiCollection>("HBHEQIE11DigiCollection");
138 
139  if(ps.getParameter<bool>("debugCaloSamples")){
140  produces<CaloSamplesCollection>("HcalSamples");
141  }
142  if(ps.getParameter<bool>("injectTestHits")){
143  produces<edm::PCaloHitContainer>("HcalHits");
144  }
145 
148 
149  }
150  else{
151  HBHERecHitCollectionDM_ = ps.getParameter<std::string>("HBHERecHitCollectionDM");
152  HORecHitCollectionDM_ = ps.getParameter<std::string>("HORecHitCollectionDM");
153  HFRecHitCollectionDM_ = ps.getParameter<std::string>("HFRecHitCollectionDM");
154  ZDCRecHitCollectionDM_ = ps.getParameter<std::string>("ZDCRecHitCollectionDM");
155 
156  produces< HBHERecHitCollection >(HBHERecHitCollectionDM_);
157  produces< HORecHitCollection >(HORecHitCollectionDM_);
158  produces< HFRecHitCollection >(HFRecHitCollectionDM_);
159  produces< ZDCRecHitCollection >(ZDCRecHitCollectionDM_);
160 
162  }
163 
164  // Muons
165 
166  DTDigiCollectionDM_ = ps.getParameter<std::string>("DTDigiCollectionDM");
167  RPCDigiCollectionDM_ = ps.getParameter<std::string>("RPCDigiCollectionDM");
168  CSCStripDigiCollectionDM_ = ps.getParameter<std::string>("CSCStripDigiCollectionDM");
169  CSCWireDigiCollectionDM_ = ps.getParameter<std::string>("CSCWireDigiCollectionDM");
170  CSCComparatorDigiCollectionDM_ = ps.getParameter<std::string>("CSCComparatorDigiCollectionDM");
171 
172 
173  produces< DTDigiCollection >();
174  produces< RPCDigiCollection >();
175  produces< CSCStripDigiCollection >(CSCStripDigiCollectionDM_);
176  produces< CSCWireDigiCollection >(CSCWireDigiCollectionDM_);
177  produces< CSCComparatorDigiCollection >(CSCComparatorDigiCollectionDM_);
178 
180 
181 
182  if(MergeTrackerDigis_) {
183 
184  // Si-Strips
185 
186  useSiStripRawDigi_ = ps.exists("SiStripRawDigiSource")?
187  ps.getParameter<std::string>("SiStripRawDigiSource")=="PILEUP" ||
188  ps.getParameter<std::string>("SiStripRawDigiSource")=="SIGNAL" : false;
189 
190  SiStripDigiCollectionDM_ = ps.getParameter<std::string>("SiStripDigiCollectionDM");
191 
192  if(useSiStripRawDigi_) {
193 
194  produces< edm::DetSetVector<SiStripRawDigi> > (SiStripDigiCollectionDM_);
196 
197  } else {
198 
199  produces< edm::DetSetVector<SiStripDigi> > (SiStripDigiCollectionDM_);
200 
201  if( addMCDigiNoise_ ) {
203  }
204  else {
206  }
207  }
208 
209  // Pixels
210 
211  PixelDigiCollectionDM_ = ps.getParameter<std::string>("PixelDigiCollectionDM");
212 
213  produces< edm::DetSetVector<PixelDigi> > (PixelDigiCollectionDM_);
214 
215  if( addMCDigiNoise_ ) {
217  }
218  else {
220  }
221 
222  }
223  else{
224  //Tracks:
227  }
228 
229  // Pileup Information: if doing pre-mixing, we have to save the pileup information from the Secondary stream
230 
231  MergePileup_ = ps.getParameter<bool>("MergePileupInfo");
232 
233  if(MergePileup_) {
234  produces< std::vector<PileupSummaryInfo> >();
235  produces< int >("bunchSpacing");
236  produces<CrossingFramePlaybackInfoNew>();
237 
239  }
240 
241  // Validation
242 
243  produces< std::vector<TrackingParticle> >(ps.getParameter<std::string>("TrackingParticleCollectionDM"));
244  produces< std::vector<TrackingVertex> >(ps.getParameter<std::string>("TrackingParticleCollectionDM"));
245 
246  produces< edm::DetSetVector<StripDigiSimLink> >(ps.getParameter<std::string>("StripDigiSimLinkCollectionDM"));
247  produces< edm::DetSetVector<PixelDigiSimLink> >(ps.getParameter<std::string>("PixelDigiSimLinkCollectionDM"));
248  produces< MuonDigiCollection<DTLayerId,DTDigiSimLink> >(ps.getParameter<std::string>("DTDigiSimLinkDM"));
249  produces< edm::DetSetVector<RPCDigiSimLink> >(ps.getParameter<std::string>("RPCDigiSimLinkDM"));
250  produces< edm::DetSetVector<StripDigiSimLink> >(ps.getParameter<std::string>("CSCStripDigiSimLinkDM"));
251  produces< edm::DetSetVector<StripDigiSimLink> >(ps.getParameter<std::string>("CSCWireDigiSimLinkDM"));
252 
254 
255  }
T getParameter(std::string const &) const
edm::EDGetTokenT< HcalQIE11DigitizerTraits::DigiCollection > tok_qie11_
T getUntrackedParameter(std::string const &, T const &) const
std::string HFDigiCollectionDM_
std::string HBHERecHitCollectionDM_
edm::InputTag QIE11PileInputTag_
std::string ZDCRecHitCollectionDM_
void setESAccess(edm::EDGetTokenT< ESDigitizerTraits::DigiCollection > tok)
edm::EDGetTokenT< EBDigitizerTraits::DigiCollection > tok_eb_
std::string CSCStripDigiCollectionDM_
edm::InputTag QIE10PileInputTag_
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_
DigiAccumulatorMixMod * GeneralTrackWorker_
std::string CSCWireDigiCollectionDM_
edm::EDGetTokenT< ESDigitizerTraits::DigiCollection > tok_es_
std::string QIE10DigiCollectionDM_
DataMixingSiStripRawWorker * SiStripRawWorker_
DataMixingSiPixelWorker * SiPixelWorker_
DataMixingSiStripMCDigiWorker * SiStripMCDigiWorker_
std::string RPCDigiCollectionDM_
std::string ZDCDigiCollectionDM_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
DataMixingHcalDigiWorker * HcalDigiWorker_
DataMixingEMWorker * EMWorker_
edm::InputTag EEPileInputTag_
edm::EDGetTokenT< EEDigitizerTraits::DigiCollection > tok_ee_
edm::InputTag ESPileInputTag_
DataMixingPileupCopy * PUWorker_
void setEBAccess(edm::EDGetTokenT< EBDigitizerTraits::DigiCollection > tok)
std::unique_ptr< DigiAccumulatorMixMod > makeDigiAccumulator(ParameterSet const &, stream::EDProducerBase &, ConsumesCollector &) const
std::string HORecHitCollectionDM_
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
DataMixingMuonWorker * MuonWorker_
virtual void getSubdetectorNames()
edm::InputTag EBPileInputTag_
std::string EEDigiCollectionDM_
ParameterSet const & getParameterSet(std::string const &) const
DataMixingTrackingParticleWorker * TrackingParticleWorker_
edm::InputTag HBHEPileInputTag_
std::string HFRecHitCollectionDM_
edm::EDGetTokenT< HcalQIE10DigitizerTraits::DigiCollection > tok_qie10_
std::string HBHEDigiCollectionDM_
std::string EBRecHitCollectionDM_
std::string CSCComparatorDigiCollectionDM_
edm::InputTag HOPileInputTag_
void setEEAccess(edm::EDGetTokenT< EEDigitizerTraits::DigiCollection > tok)
DataMixingSiStripWorker * SiStripWorker_
std::string ESRecHitCollectionDM_
std::string EERecHitCollectionDM_
edm::EDGetTokenT< HFDigitizerTraits::DigiCollection > tok_hf_
std::string ESDigiCollectionDM_
std::string DTDigiCollectionDM_
std::string EBDigiCollectionDM_
DataMixingHcalWorker * HcalWorker_
edm::InputTag HFPileInputTag_
std::string HODigiCollectionDM_
std::string PixelDigiCollectionDM_
DataMixingSiPixelMCDigiWorker * SiPixelMCDigiWorker_
edm::EDGetTokenT< HBHEDigitizerTraits::DigiCollection > tok_hbhe_
DataMixingHcalDigiWorkerProd * HcalDigiWorkerProd_
static DigiAccumulatorMixModFactory const * get()
std::string QIE11DigiCollectionDM_
DataMixingEMDigiWorker * EMDigiWorker_
edm::InputTag ZDCPileInputTag_
BMixingModule(const edm::ParameterSet &ps, MixingCache::Config const *globalConf)
DataMixingModule::~DataMixingModule ( )
virtual

Default destructor

Definition at line 332 of file DataMixingModule.cc.

References addMCDigiNoise_, EcalDigiWorkerProd_, EMDigiWorker_, EMWorker_, GeneralTrackWorker_, HcalDigiWorker_, HcalDigiWorkerProd_, HcalWorker_, MergeEMDigis_, MergeHcalDigis_, MergeHcalDigisProd_, MergePileup_, MergeTrackerDigis_, MuonWorker_, PUWorker_, SiPixelMCDigiWorker_, SiPixelWorker_, SiStripMCDigiWorker_, SiStripRawWorker_, SiStripWorker_, TrackingParticleWorker_, and useSiStripRawDigi_.

332  {
333  if(MergeEMDigis_){
334  if(addMCDigiNoise_ ) {delete EcalDigiWorkerProd_;}
335  else {delete EMDigiWorker_;}
336  }
337  else {delete EMWorker_;}
338  if(MergeHcalDigis_) {
340  else { delete HcalDigiWorker_; }}
341  else {delete HcalWorker_;}
342  if(MuonWorker_) delete MuonWorker_;
343  if(MergeTrackerDigis_){
345  delete SiStripRawWorker_;
346  else if(addMCDigiNoise_ ) delete SiStripMCDigiWorker_;
347  else delete SiStripWorker_;
349  else delete SiPixelWorker_;
350  }
351  else{
352  delete GeneralTrackWorker_;
353  }
354  if(MergePileup_) { delete PUWorker_;}
355 
357  }
DigiAccumulatorMixMod * GeneralTrackWorker_
DataMixingSiStripRawWorker * SiStripRawWorker_
DataMixingSiPixelWorker * SiPixelWorker_
DataMixingSiStripMCDigiWorker * SiStripMCDigiWorker_
DataMixingHcalDigiWorker * HcalDigiWorker_
DataMixingEMWorker * EMWorker_
DataMixingPileupCopy * PUWorker_
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
DataMixingMuonWorker * MuonWorker_
DataMixingTrackingParticleWorker * TrackingParticleWorker_
DataMixingSiStripWorker * SiStripWorker_
DataMixingHcalWorker * HcalWorker_
DataMixingSiPixelMCDigiWorker * SiPixelMCDigiWorker_
DataMixingHcalDigiWorkerProd * HcalDigiWorkerProd_
DataMixingEMDigiWorker * EMDigiWorker_

Member Function Documentation

void DataMixingModule::addSignals ( const edm::Event e,
const edm::EventSetup ES 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 359 of file DataMixingModule.cc.

References DigiAccumulatorMixMod::accumulate(), edm::DataMixingEcalDigiWorkerProd::addEcalSignals(), AddedPileup_, edm::DataMixingEMWorker::addEMSignals(), edm::DataMixingEMDigiWorker::addEMSignals(), edm::DataMixingHcalWorker::addHcalSignals(), edm::DataMixingHcalDigiWorker::addHcalSignals(), edm::DataMixingHcalDigiWorkerProd::addHcalSignals(), addMCDigiNoise_, edm::DataMixingMuonWorker::addMuonSignals(), edm::DataMixingSiPixelWorker::addSiPixelSignals(), edm::DataMixingSiPixelMCDigiWorker::addSiPixelSignals(), edm::DataMixingSiStripWorker::addSiStripSignals(), edm::DataMixingSiStripRawWorker::addSiStripSignals(), edm::DataMixingSiStripMCDigiWorker::addSiStripSignals(), edm::DataMixingTrackingParticleWorker::addTrackingParticleSignals(), EcalDigiWorkerProd_, EMDigiWorker_, EMWorker_, GeneralTrackWorker_, HcalDigiWorker_, HcalDigiWorkerProd_, HcalWorker_, edm::EventBase::id(), LogDebug, MergeEMDigis_, MergeHcalDigis_, MergeHcalDigisProd_, MergeTrackerDigis_, MuonWorker_, SiPixelMCDigiWorker_, SiPixelWorker_, SiStripMCDigiWorker_, SiStripRawWorker_, SiStripWorker_, TrackingParticleWorker_, and useSiStripRawDigi_.

Referenced by createnewEDProduct().

359  {
360  // fill in maps of hits
361 
362  LogDebug("DataMixingModule")<<"===============> adding MC signals for "<<e.id();
363 
364  // Ecal
365  if(MergeEMDigis_) {
367  else {EMDigiWorker_->addEMSignals(e, ES); }
368  }
369  else{ EMWorker_->addEMSignals(e);}
370 
371  // Hcal
372  if(MergeHcalDigis_) {
375  }
376  else{
378  }
379  }
380  else {HcalWorker_->addHcalSignals(e);}
381 
382  // Muon
384 
385  if(MergeTrackerDigis_){
386  // SiStrips
390 
391  // SiPixels
394  }else{
395  //GeneralTrackWorker_->addGeneralTrackSignal(e);
397  }
398  AddedPileup_ = false;
399 
401 
402  } // end of addSignals
#define LogDebug(id)
void addMuonSignals(const edm::Event &e)
void addHcalSignals(const edm::Event &e, const edm::EventSetup &ES)
virtual void accumulate(edm::Event const &event, edm::EventSetup const &setup)=0
void addSiStripSignals(const edm::Event &e)
void addHcalSignals(const edm::Event &e)
void addEMSignals(const edm::Event &e)
DigiAccumulatorMixMod * GeneralTrackWorker_
DataMixingSiStripRawWorker * SiStripRawWorker_
DataMixingSiPixelWorker * SiPixelWorker_
DataMixingSiStripMCDigiWorker * SiStripMCDigiWorker_
DataMixingHcalDigiWorker * HcalDigiWorker_
DataMixingEMWorker * EMWorker_
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
DataMixingMuonWorker * MuonWorker_
DataMixingTrackingParticleWorker * TrackingParticleWorker_
edm::EventID id() const
Definition: EventBase.h:60
DataMixingSiStripWorker * SiStripWorker_
void addSiStripSignals(const edm::Event &e)
DataMixingHcalWorker * HcalWorker_
void addEcalSignals(const edm::Event &e, const edm::EventSetup &ES)
DataMixingSiPixelMCDigiWorker * SiPixelMCDigiWorker_
DataMixingHcalDigiWorkerProd * HcalDigiWorkerProd_
void addEMSignals(const edm::Event &e, const edm::EventSetup &ES)
void addHcalSignals(const edm::Event &e, const edm::EventSetup &ES)
DataMixingEMDigiWorker * EMDigiWorker_
void addSiPixelSignals(const edm::Event &e)
void DataMixingModule::beginLuminosityBlock ( LuminosityBlock const &  l1,
EventSetup const &  c 
)
overridevirtual

Reimplemented from edm::stream::EDProducerBase.

Definition at line 575 of file DataMixingModule.cc.

References addMCDigiNoise_, edm::BMixingModule::beginLuminosityBlock(), edm::DataMixingEcalDigiWorkerProd::beginLuminosityBlock(), and EcalDigiWorkerProd_.

Referenced by createnewEDProduct().

575  {
578  }
void beginLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
virtual void beginLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &setup) override
void DataMixingModule::beginRun ( edm::Run const &  run,
edm::EventSetup const &  eventSetup 
)
overridevirtual

Reimplemented from edm::stream::EDProducerBase.

Definition at line 315 of file DataMixingModule.cc.

References addMCDigiNoise_, edm::BMixingModule::beginRun(), edm::DataMixingHcalDigiWorkerProd::beginRun(), edm::DataMixingEcalDigiWorkerProd::beginRun(), EcalDigiWorkerProd_, and HcalDigiWorkerProd_.

Referenced by createnewEDProduct().

315  {
317  if( addMCDigiNoise_ ) {
320  }
321  }
virtual void beginRun(const edm::Run &r, const edm::EventSetup &setup) override
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
void beginRun(const edm::EventSetup &ES)
DataMixingHcalDigiWorkerProd * HcalDigiWorkerProd_
void beginRun(const edm::Run &run, const edm::EventSetup &ES)
virtual void edm::DataMixingModule::checkSignal ( const edm::Event e)
inlineoverridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 62 of file DataMixingModule.h.

62 {};
virtual void edm::DataMixingModule::createnewEDProduct ( )
inlineoverridevirtual
void DataMixingModule::doPileUp ( edm::Event e,
const edm::EventSetup ES 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 474 of file DataMixingModule.cc.

References DigiAccumulatorMixMod::finalizeBunchCrossing(), GeneralTrackWorker_, edm::EventBase::id(), DigiAccumulatorMixMod::initializeBunchCrossing(), edm::BMixingModule::inputSources_, edm::BMixingModule::maxBunch_, edm::BMixingModule::maxNbSources_, MergeTrackerDigis_, edm::BMixingModule::minBunch_, edm::Event::moduleCallingContext(), pileWorker(), edm::source(), edm::Event::streamID(), and edm::BMixingModule::TrueNumInteractions_.

Referenced by createnewEDProduct().

475  {
476  using namespace std::placeholders;
477 
478  std::vector<edm::SecondaryEventIDAndFileInfo> recordEventID;
479  std::vector<int> PileupList;
480  PileupList.clear();
481  TrueNumInteractions_.clear();
482 
483  ModuleCallingContext const* mcc = e.moduleCallingContext();
484 
485  for (int bunchCrossing=minBunch_;bunchCrossing<=maxBunch_;++bunchCrossing) {
486  for (unsigned int isource=0;isource<maxNbSources_;++isource) {
487  std::shared_ptr<PileUp> source = inputSources_[isource];
488  if (!source || !(source->doPileUp(bunchCrossing)))
489  continue;
490 
491  if (isource==0)
492  source->CalculatePileup(minBunch_, maxBunch_, PileupList, TrueNumInteractions_, e.streamID());
493 
494  int NumPU_Events = 0;
495  if (isource ==0) {
496  NumPU_Events = PileupList[bunchCrossing - minBunch_];
497  } else {
498  // non-minbias pileup only gets one event for now. Fix later if desired.
499  NumPU_Events = 1;
500  }
501 
502  if(!MergeTrackerDigis_)
503  GeneralTrackWorker_->initializeBunchCrossing(e, ES, bunchCrossing);
504 
505  source->readPileUp(
506  e.id(),
507  recordEventID,
508  std::bind(&DataMixingModule::pileWorker, std::ref(*this),
509  _1, bunchCrossing, _2, std::cref(ES), mcc),
510  NumPU_Events,
511  e.streamID()
512  );
513 
514  if(!MergeTrackerDigis_)
515  GeneralTrackWorker_->finalizeBunchCrossing(e, ES, bunchCrossing);
516 
517  }
518  }
519 
520  }
static std::string const source("source")
std::vector< float > TrueNumInteractions_
virtual void initializeBunchCrossing(edm::Event const &event, edm::EventSetup const &setup, int bunchCrossing)
DigiAccumulatorMixMod * GeneralTrackWorker_
ModuleCallingContext const * moduleCallingContext() const
Definition: Event.h:228
static const unsigned int maxNbSources_
void pileWorker(const edm::EventPrincipal &, int bcr, int EventId, const edm::EventSetup &ES, ModuleCallingContext const *)
virtual void finalizeBunchCrossing(edm::Event &event, edm::EventSetup const &setup, int bunchCrossing)
edm::EventID id() const
Definition: EventBase.h:60
std::vector< std::shared_ptr< PileUp > > inputSources_
StreamID streamID() const
Definition: Event.h:81
void DataMixingModule::endLuminosityBlock ( LuminosityBlock const &  l1,
EventSetup const &  c 
)
overridevirtual

Reimplemented from edm::stream::EDProducerBase.

Definition at line 580 of file DataMixingModule.cc.

References edm::BMixingModule::endLuminosityBlock().

Referenced by createnewEDProduct().

580  {
581  // EcalDigiWorkerProd_->endLuminosityBlock(l1,c); // FIXME Not implemented.
583  }
virtual void endLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &setup) override
void DataMixingModule::endRun ( const edm::Run r,
const edm::EventSetup setup 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 323 of file DataMixingModule.cc.

References edm::BMixingModule::endRun().

Referenced by createnewEDProduct().

323  {
324  //if( addMCDigiNoise_ ) {
325  // HcalDigiWorkerProd_->endRun( run, ES ); // FIXME not implemented
326  // EcalDigiWorkerProd_->endRun( ES ); // FIXME not implemented
327  //}
329  }
virtual void endRun(const edm::Run &r, const edm::EventSetup &setup) override
void DataMixingModule::getSubdetectorNames ( )
privatevirtual

Definition at line 257 of file DataMixingModule.cc.

Referenced by DataMixingModule().

257  {
258  // get subdetector names
259  // edm::Service<edm::ConstProductRegistry> reg;
260  // Loop over provenance of products in registry.
261  //for (edm::ProductRegistry::ProductList::const_iterator it = reg->productList().begin(); it != reg->productList().end(); ++it) {
262 
263  // **** Check this out.... ****
264 
265  // See FWCore/Framework/interface/BranchDescription.h
266  // BranchDescription contains all the information for the product.
267 
268  // This section not very backwards-compatible in terms of digi-merging. Need to be able to specify here which data format
269  // to look at...
270 
271  // edm::BranchDescription desc = it->second;
272  //if (!desc.friendlyClassName_.compare(0,9,"EBRecHitC")) {
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,"EERecHitC")) {
277  // else if (!desc.friendlyClassName_.compare(0,9,"EErechitC") && desc.productInstanceName_.compare(0,11,"TrackerHits")) {
278  // Subdetectors_.push_back(desc.productInstanceName_);
279  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
280  //}
281  //else if (!desc.friendlyClassName_.compare(0,9,"HBRecHitC")) {
282  // Subdetectors_.push_back(desc.productInstanceName_);
283  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
284  //}
285  //else if (!desc.friendlyClassName_.compare(0,9,"HERecHitC")) {
286  // Subdetectors_.push_back(desc.productInstanceName_);
287  //LogInfo("DataMixingModule") <<"Adding container "<<desc.productInstanceName_ <<" for pileup treatment";
288  // }
289  // and so on with other detector types...
290  // }
291  }
void DataMixingModule::initializeEvent ( edm::Event const &  e,
edm::EventSetup const &  eventSetup 
)
overridevirtual

Definition at line 294 of file DataMixingModule.cc.

References addMCDigiNoise_, EcalDigiWorkerProd_, GeneralTrackWorker_, HcalDigiWorkerProd_, DigiAccumulatorMixMod::initializeEvent(), edm::DataMixingTrackingParticleWorker::initializeEvent(), edm::DataMixingHcalDigiWorkerProd::initializeEvent(), edm::DataMixingEcalDigiWorkerProd::initializeEvent(), edm::DataMixingSiPixelMCDigiWorker::initializeEvent(), edm::DataMixingSiStripMCDigiWorker::initializeEvent(), MergeHcalDigisProd_, MergeTrackerDigis_, SiPixelMCDigiWorker_, SiStripMCDigiWorker_, and TrackingParticleWorker_.

Referenced by createnewEDProduct().

294  {
295 
296  if( addMCDigiNoise_ ) {
297  if(MergeTrackerDigis_){
300  }
301  else{
303  }
305  }
308  }
309 
311 
312  }
virtual void initializeEvent(edm::Event const &event, edm::EventSetup const &setup)=0
virtual void initializeEvent(edm::Event const &e, edm::EventSetup const &c)
virtual void initializeEvent(const edm::Event &e, edm::EventSetup const &iSetup)
DigiAccumulatorMixMod * GeneralTrackWorker_
DataMixingSiStripMCDigiWorker * SiStripMCDigiWorker_
void initializeEvent(const edm::Event &e, const edm::EventSetup &ES)
virtual void initializeEvent(edm::Event const &e, edm::EventSetup const &c)
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
DataMixingTrackingParticleWorker * TrackingParticleWorker_
DataMixingSiPixelMCDigiWorker * SiPixelMCDigiWorker_
DataMixingHcalDigiWorkerProd * HcalDigiWorkerProd_
void initializeEvent(const edm::Event &e, const edm::EventSetup &ES)
void DataMixingModule::pileWorker ( const edm::EventPrincipal ep,
int  bcr,
int  EventId,
const edm::EventSetup ES,
edm::ModuleCallingContext const *  mcc 
)

Definition at line 407 of file DataMixingModule.cc.

References DigiAccumulatorMixMod::accumulate(), edm::DataMixingEcalDigiWorkerProd::addEcalPileups(), AddedPileup_, edm::DataMixingEMWorker::addEMPileups(), edm::DataMixingEMDigiWorker::addEMPileups(), edm::DataMixingHcalWorker::addHcalPileups(), edm::DataMixingHcalDigiWorkerProd::addHcalPileups(), edm::DataMixingHcalDigiWorker::addHcalPileups(), addMCDigiNoise_, edm::DataMixingMuonWorker::addMuonPileups(), edm::DataMixingPileupCopy::addPileupInfo(), edm::DataMixingSiPixelWorker::addSiPixelPileups(), edm::DataMixingSiPixelMCDigiWorker::addSiPixelPileups(), edm::DataMixingSiStripWorker::addSiStripPileups(), edm::DataMixingSiStripRawWorker::addSiStripPileups(), edm::DataMixingSiStripMCDigiWorker::addSiStripPileups(), edm::DataMixingTrackingParticleWorker::addTrackingParticlePileups(), EcalDigiWorkerProd_, EMDigiWorker_, EMWorker_, GeneralTrackWorker_, HcalDigiWorker_, HcalDigiWorkerProd_, HcalWorker_, edm::EventPrincipal::id(), LogDebug, MergeEMDigis_, MergeHcalDigis_, MergeHcalDigisProd_, MergePileup_, MergeTrackerDigis_, edm::stream::EDProducerBase::moduleDescription(), MuonWorker_, PUWorker_, edm::BMixingModule::setupPileUpEvent(), SiPixelMCDigiWorker_, SiPixelWorker_, SiStripMCDigiWorker_, SiStripRawWorker_, SiStripWorker_, edm::EventPrincipal::streamID(), TrackingParticleWorker_, and useSiStripRawDigi_.

Referenced by createnewEDProduct(), and doPileUp().

407  {
408 
409  InternalContext internalContext(ep.id(), mcc);
410  ParentContext parentContext(&internalContext);
411  ModuleCallingContext moduleCallingContext(&moduleDescription());
412  ModuleContextSentry moduleContextSentry(&moduleCallingContext, parentContext);
413 
414  LogDebug("DataMixingModule") <<"\n===============> adding pileups from event "<<ep.id()<<" for bunchcrossing "<<bcr;
415 
416  // Note: setupPileUpEvent may modify the run and lumi numbers of the EventPrincipal to match that of the primary event.
417  setupPileUpEvent(ES);
418 
419  // check and see if we need to copy the pileup information from
420  // secondary stream to the output stream
421  // We only have the pileup event here, so pick the first time and store the info
422 
423 
424  if(MergePileup_ && !AddedPileup_){
425 
426  PUWorker_->addPileupInfo(&ep, eventNr, &moduleCallingContext);
427 
428  AddedPileup_ = true;
429  }
430 
431  // fill in maps of hits; same code as addSignals, except now applied to the pileup events
432 
433  // Ecal
434  if(MergeEMDigis_) {
435  if(addMCDigiNoise_ ) { EcalDigiWorkerProd_->addEcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
436  else { EMDigiWorker_->addEMPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
437  }
438  else {EMWorker_->addEMPileups(bcr, &ep, eventNr, &moduleCallingContext); }
439 
440  // Hcal
441  if(MergeHcalDigis_) {
442  if(MergeHcalDigisProd_) {
443  HcalDigiWorkerProd_->addHcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);
444  }
445  else{
446  HcalDigiWorker_->addHcalPileups(bcr, &ep, eventNr, ES, &moduleCallingContext);}
447  }
448  else {HcalWorker_->addHcalPileups(bcr, &ep, eventNr, &moduleCallingContext);}
449 
450  // Muon
451  MuonWorker_->addMuonPileups(bcr, &ep, eventNr, &moduleCallingContext);
452 
453  if(MergeTrackerDigis_){
454  // SiStrips
455  if(useSiStripRawDigi_) SiStripRawWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
456  else if(addMCDigiNoise_ ) SiStripMCDigiWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
457  else SiStripWorker_->addSiStripPileups(bcr, &ep, eventNr, &moduleCallingContext);
458 
459  // SiPixels
460  //whoops this should be for the MC worker ????? SiPixelWorker_->setPileupInfo(ps,bunchSpacing);
461  if(addMCDigiNoise_ ) SiPixelMCDigiWorker_->addSiPixelPileups(bcr, &ep, eventNr, &moduleCallingContext);
462  else SiPixelWorker_->addSiPixelPileups(bcr, &ep, eventNr, &moduleCallingContext);
463  }else{
464  PileUpEventPrincipal pep(ep,&moduleCallingContext,bcr);
465  GeneralTrackWorker_->accumulate(pep, ES,ep.streamID());
466  }
467 
468  TrackingParticleWorker_->addTrackingParticlePileups(bcr, &ep, eventNr, &moduleCallingContext);
469 
470  }
#define LogDebug(id)
virtual void accumulate(edm::Event const &event, edm::EventSetup const &setup)=0
void addMuonPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
void addHcalPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
EventID const & id() const
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 *)
DataMixingSiStripRawWorker * SiStripRawWorker_
DataMixingSiPixelWorker * SiPixelWorker_
void addSiStripPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
DataMixingSiStripMCDigiWorker * SiStripMCDigiWorker_
void addSiStripPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
DataMixingHcalDigiWorker * HcalDigiWorker_
DataMixingEMWorker * EMWorker_
StreamID streamID() const
DataMixingPileupCopy * PUWorker_
void addTrackingParticlePileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
ModuleDescription const & moduleDescription() const
void addSiStripPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
DataMixingMuonWorker * MuonWorker_
void addHcalPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, const edm::EventSetup &ES, edm::ModuleCallingContext const *)
DataMixingTrackingParticleWorker * TrackingParticleWorker_
void addEMPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
DataMixingSiStripWorker * SiStripWorker_
void addSiPixelPileups(const int bcr, const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *)
DataMixingHcalWorker * HcalWorker_
DataMixingSiPixelMCDigiWorker * SiPixelMCDigiWorker_
DataMixingHcalDigiWorkerProd * HcalDigiWorkerProd_
void addPileupInfo(const edm::EventPrincipal *, unsigned int EventId, ModuleCallingContext const *mcc)
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_
void DataMixingModule::put ( edm::Event e,
const edm::EventSetup ES 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 523 of file DataMixingModule.cc.

References addMCDigiNoise_, EcalDigiWorkerProd_, EMDigiWorker_, EMWorker_, DigiAccumulatorMixMod::finalizeEvent(), GeneralTrackWorker_, edm::DataMixingPileupCopy::getPileupInfo(), HcalDigiWorker_, HcalDigiWorkerProd_, HcalWorker_, MergeEMDigis_, MergeHcalDigis_, MergeHcalDigisProd_, MergePileup_, MergeTrackerDigis_, MuonWorker_, edm::DataMixingEcalDigiWorkerProd::putEcal(), edm::DataMixingEMWorker::putEM(), edm::DataMixingEMDigiWorker::putEM(), edm::DataMixingHcalWorker::putHcal(), edm::DataMixingHcalDigiWorkerProd::putHcal(), edm::DataMixingHcalDigiWorker::putHcal(), edm::DataMixingMuonWorker::putMuon(), edm::DataMixingPileupCopy::putPileupInfo(), edm::DataMixingSiPixelWorker::putSiPixel(), edm::DataMixingSiPixelMCDigiWorker::putSiPixel(), edm::DataMixingSiStripWorker::putSiStrip(), edm::DataMixingSiStripRawWorker::putSiStrip(), edm::DataMixingSiStripMCDigiWorker::putSiStrip(), edm::DataMixingTrackingParticleWorker::putTrackingParticle(), PUWorker_, SiPixelMCDigiWorker_, SiPixelWorker_, SiStripMCDigiWorker_, SiStripRawWorker_, SiStripWorker_, TrackingParticleWorker_, and useSiStripRawDigi_.

Referenced by createnewEDProduct().

523  {
524 
525  // individual workers...
526 
527  // move pileup first so we have access to the information for the put step
528 
529  std::vector<PileupSummaryInfo> ps;
530  int bunchSpacing=10000;
531 
532  if(MergePileup_) {
533  PUWorker_->getPileupInfo(ps,bunchSpacing);
535  }
536 
537  // Ecal
538  if(MergeEMDigis_) {
540  else { EMDigiWorker_->putEM(e,ES);}
541  }
542  else {EMWorker_->putEM(e);}
543 
544  // Hcal
545  if(MergeHcalDigis_) {
546  if(MergeHcalDigisProd_) {
548  }
549  else{
550  HcalDigiWorker_->putHcal(e,ES);
551  }
552  }
553  else {HcalWorker_->putHcal(e);}
554 
555  // Muon
556  MuonWorker_->putMuon(e);
557 
558  if(MergeTrackerDigis_){
559  // SiStrips
562  else SiStripWorker_->putSiStrip(e);
563 
564  // SiPixels
565  if(addMCDigiNoise_ ) SiPixelMCDigiWorker_->putSiPixel(e, ES, ps, bunchSpacing);
566  else SiPixelWorker_->putSiPixel(e);
567  }else{
569  }
570 
572 
573  }
void putEM(edm::Event &e)
virtual void finalizeEvent(edm::Event &event, edm::EventSetup const &setup)=0
void putEcal(edm::Event &e, const edm::EventSetup &ES)
void putPileupInfo(edm::Event &e)
DigiAccumulatorMixMod * GeneralTrackWorker_
void putEM(edm::Event &e, const edm::EventSetup &ES)
DataMixingSiStripRawWorker * SiStripRawWorker_
DataMixingSiPixelWorker * SiPixelWorker_
DataMixingSiStripMCDigiWorker * SiStripMCDigiWorker_
void putHcal(edm::Event &e, const edm::EventSetup &ES)
DataMixingHcalDigiWorker * HcalDigiWorker_
DataMixingEMWorker * EMWorker_
DataMixingPileupCopy * PUWorker_
DataMixingEcalDigiWorkerProd * EcalDigiWorkerProd_
DataMixingMuonWorker * MuonWorker_
DataMixingTrackingParticleWorker * TrackingParticleWorker_
void putHcal(edm::Event &e, const edm::EventSetup &ES)
DataMixingSiStripWorker * SiStripWorker_
DataMixingHcalWorker * HcalWorker_
void getPileupInfo(std::vector< PileupSummaryInfo > &ps, int &bs)
DataMixingSiPixelMCDigiWorker * SiPixelMCDigiWorker_
DataMixingHcalDigiWorkerProd * HcalDigiWorkerProd_
void putSiStrip(edm::Event &e, edm::EventSetup const &iSetup)
void putSiPixel(edm::Event &e, edm::EventSetup const &iSetup, std::vector< PileupSummaryInfo > &ps, int &bs)
DataMixingEMDigiWorker * EMDigiWorker_

Member Data Documentation

bool edm::DataMixingModule::AddedPileup_
private

Definition at line 165 of file DataMixingModule.h.

Referenced by addSignals(), and pileWorker().

bool edm::DataMixingModule::addMCDigiNoise_
private
std::string edm::DataMixingModule::CSCComparatorDigiCollectionDM_
private

Definition at line 115 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::CSCStripDigiCollectionDM_
private

Definition at line 113 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::CSCWireDigiCollectionDM_
private

Definition at line 114 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::DTDigiCollectionDM_
private

Definition at line 111 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::EBDigiCollectionDM_
private

Definition at line 89 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::InputTag edm::DataMixingModule::EBPileInputTag_
private

Definition at line 142 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::EBRecHitCollectionDM_
private

Definition at line 84 of file DataMixingModule.h.

Referenced by DataMixingModule().

DataMixingEcalDigiWorkerProd* edm::DataMixingModule::EcalDigiWorkerProd_
private
std::string edm::DataMixingModule::EEDigiCollectionDM_
private

Definition at line 90 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::InputTag edm::DataMixingModule::EEPileInputTag_
private

Definition at line 143 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::EERecHitCollectionDM_
private

Definition at line 85 of file DataMixingModule.h.

Referenced by DataMixingModule().

DataMixingEMDigiWorker* edm::DataMixingModule::EMDigiWorker_
private

Definition at line 131 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

DataMixingEMWorker* edm::DataMixingModule::EMWorker_
private

Definition at line 130 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

std::string edm::DataMixingModule::ESDigiCollectionDM_
private

Definition at line 91 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::InputTag edm::DataMixingModule::ESPileInputTag_
private

Definition at line 144 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::ESRecHitCollectionDM_
private

Definition at line 86 of file DataMixingModule.h.

Referenced by DataMixingModule().

DigiAccumulatorMixMod* edm::DataMixingModule::GeneralTrackWorker_
private
std::string edm::DataMixingModule::HBHEDigiCollectionDM_
private

Definition at line 102 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::InputTag edm::DataMixingModule::HBHEPileInputTag_
private

Definition at line 145 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::HBHERecHitCollectionDM_
private

Definition at line 96 of file DataMixingModule.h.

Referenced by DataMixingModule().

DataMixingHcalDigiWorker* edm::DataMixingModule::HcalDigiWorker_
private

Definition at line 138 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

DataMixingHcalDigiWorkerProd* edm::DataMixingModule::HcalDigiWorkerProd_
private
DataMixingHcalWorker* edm::DataMixingModule::HcalWorker_
private

Definition at line 137 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

std::string edm::DataMixingModule::HFDigiCollectionDM_
private

Definition at line 104 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::InputTag edm::DataMixingModule::HFPileInputTag_
private

Definition at line 147 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::HFRecHitCollectionDM_
private

Definition at line 98 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::HODigiCollectionDM_
private

Definition at line 103 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::InputTag edm::DataMixingModule::HOPileInputTag_
private

Definition at line 146 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::HORecHitCollectionDM_
private

Definition at line 97 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::label_
private
bool edm::DataMixingModule::MergeEMDigis_
private

Definition at line 133 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

bool edm::DataMixingModule::MergeHcalDigis_
private

Definition at line 161 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

bool edm::DataMixingModule::MergeHcalDigisProd_
private
bool edm::DataMixingModule::MergePileup_
private

Definition at line 164 of file DataMixingModule.h.

Referenced by DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

bool edm::DataMixingModule::MergeTrackerDigis_
private
DataMixingMuonWorker* edm::DataMixingModule::MuonWorker_
private

Definition at line 169 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

std::string edm::DataMixingModule::PixelDigiCollectionDM_
private

Definition at line 121 of file DataMixingModule.h.

Referenced by DataMixingModule().

DataMixingPileupCopy* edm::DataMixingModule::PUWorker_
private

Definition at line 128 of file DataMixingModule.h.

Referenced by DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

std::string edm::DataMixingModule::QIE10DigiCollectionDM_
private

Definition at line 106 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::InputTag edm::DataMixingModule::QIE10PileInputTag_
private

Definition at line 149 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::QIE11DigiCollectionDM_
private

Definition at line 107 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::InputTag edm::DataMixingModule::QIE11PileInputTag_
private

Definition at line 150 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::RPCDigiCollectionDM_
private

Definition at line 112 of file DataMixingModule.h.

Referenced by DataMixingModule().

DataMixingSiPixelMCDigiWorker* edm::DataMixingModule::SiPixelMCDigiWorker_
private
DataMixingSiPixelWorker* edm::DataMixingModule::SiPixelWorker_
private

Definition at line 183 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

std::string edm::DataMixingModule::SiStripDigiCollectionDM_
private

Definition at line 118 of file DataMixingModule.h.

Referenced by DataMixingModule().

DataMixingSiStripMCDigiWorker* edm::DataMixingModule::SiStripMCDigiWorker_
private
std::string edm::DataMixingModule::siStripRawDigiSource_
private

Definition at line 178 of file DataMixingModule.h.

DataMixingSiStripRawWorker* edm::DataMixingModule::SiStripRawWorker_
private

Definition at line 175 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

DataMixingSiStripWorker* edm::DataMixingModule::SiStripWorker_
private

Definition at line 173 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

std::vector<std::string> edm::DataMixingModule::Subdetectors_
private

Definition at line 197 of file DataMixingModule.h.

edm::EDGetTokenT<EBDigitizerTraits::DigiCollection> edm::DataMixingModule::tok_eb_
private

Definition at line 157 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::EDGetTokenT<EEDigitizerTraits::DigiCollection> edm::DataMixingModule::tok_ee_
private

Definition at line 158 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::EDGetTokenT<ESDigitizerTraits::DigiCollection> edm::DataMixingModule::tok_es_
private

Definition at line 159 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::EDGetTokenT<HBHEDigitizerTraits::DigiCollection> edm::DataMixingModule::tok_hbhe_
private

Definition at line 151 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::EDGetTokenT<HFDigitizerTraits::DigiCollection> edm::DataMixingModule::tok_hf_
private

Definition at line 153 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::EDGetTokenT<HODigitizerTraits::DigiCollection> edm::DataMixingModule::tok_ho_
private

Definition at line 152 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::EDGetTokenT<HcalQIE10DigitizerTraits::DigiCollection> edm::DataMixingModule::tok_qie10_
private

Definition at line 155 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::EDGetTokenT<HcalQIE11DigitizerTraits::DigiCollection> edm::DataMixingModule::tok_qie11_
private

Definition at line 156 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::EDGetTokenT<ZDCDigitizerTraits::DigiCollection> edm::DataMixingModule::tok_zdc_
private

Definition at line 154 of file DataMixingModule.h.

Referenced by DataMixingModule().

DataMixingTrackingParticleWorker* edm::DataMixingModule::TrackingParticleWorker_
private
bool edm::DataMixingModule::useSiStripRawDigi_
private

Definition at line 176 of file DataMixingModule.h.

Referenced by addSignals(), DataMixingModule(), pileWorker(), put(), and ~DataMixingModule().

std::string edm::DataMixingModule::ZDCDigiCollectionDM_
private

Definition at line 105 of file DataMixingModule.h.

Referenced by DataMixingModule().

edm::InputTag edm::DataMixingModule::ZDCPileInputTag_
private

Definition at line 148 of file DataMixingModule.h.

Referenced by DataMixingModule().

std::string edm::DataMixingModule::ZDCRecHitCollectionDM_
private

Definition at line 99 of file DataMixingModule.h.

Referenced by DataMixingModule().