CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
edm::MixingModule Class Reference

#include <MixingModule.h>

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

Public Types

typedef std::vector
< DigiAccumulatorMixMod * > 
Accumulators
 
- 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, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
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
 

Public Member Functions

void accumulateEvent (Event const &event, EventSetup const &setup)
 
void accumulateEvent (PileUpEventPrincipal const &event, EventSetup const &setup, edm::StreamID const &)
 
virtual void beginJob ()
 
virtual void beginLuminosityBlock (LuminosityBlock const &l1, EventSetup const &c) override
 
virtual void beginRun (Run const &r1, EventSetup const &c) override
 
virtual void endLuminosityBlock (LuminosityBlock const &l1, EventSetup const &c) override
 
virtual void endRun (Run const &r1, EventSetup const &c) override
 
void finalizeEvent (Event &event, EventSetup const &setup) override
 
void initializeEvent (Event const &event, EventSetup const &setup) override
 
 MixingModule (const edm::ParameterSet &ps, MixingCache::Config const *globalConf)
 
virtual void reload (const edm::EventSetup &) override
 
virtual ~MixingModule ()
 
- 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
 
 BMixingModule (const edm::ParameterSet &ps, MixingCache::Config const *globalConf)
 
bool poisson () const
 
virtual void produce (edm::Event &e1, const edm::EventSetup &c) override
 
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
 
 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 & 
itemsToGetFromEvent () 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 addSignals (const edm::Event &e, const edm::EventSetup &es) override
 
virtual void branchesActivate (const std::string &friendlyName, const std::string &subdet, InputTag &tag, std::string &label)
 
virtual void checkSignal (const edm::Event &e) override
 
void createDigiAccumulators (const edm::ParameterSet &mixingPSet, edm::ConsumesCollector &iC)
 
virtual void createnewEDProduct () override
 
virtual void doPileUp (edm::Event &e, const edm::EventSetup &es) override
 
void pileAllWorkers (EventPrincipal const &ep, ModuleCallingContext const *, int bcr, int id, int &offset, const edm::EventSetup &setup, edm::StreamID const &)
 
virtual void put (edm::Event &e, const edm::EventSetup &es) override
 

Private Attributes

std::vector< AdjusterBase * > adjusters_
 
std::vector< AdjusterBase * > adjustersObjects_
 
Accumulators digiAccumulators_
 
InputTag inputTagPlayback_
 
bool mixProdStep1_
 
bool mixProdStep2_
 
CrossingFramePlaybackInfoNewplaybackInfo_
 
bool useCurrentProcessOnly_
 
std::vector< std::string > wantedBranches_
 
std::vector< MixingWorkerBase * > workers_
 
std::vector< MixingWorkerBase * > workersObjects_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::BMixingModule
static void globalEndJob (MixingCache::Config *)
 
static std::unique_ptr
< MixingCache::Config
initializeGlobalCache (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 49 of file MixingModule.h.

Member Typedef Documentation

Definition at line 51 of file MixingModule.h.

Constructor & Destructor Documentation

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

standard constructor

Definition at line 41 of file MixingModule.cc.

References adjustersObjects_, edm::binary_search_all(), branchesActivate(), edm::BMixingModule::bunchSpace_, edm::EDConsumerBase::consumesCollector(), createDigiAccumulators(), edm::BMixingModule::dropUnwantedBranches(), edm::InputTag::encode(), edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), edm::ParameterSet::getUntrackedParameter(), i, cuy::ii, HLT_FULL_cff::InputTag, inputTagPlayback_, edm::InputTag::instance(), edm::InputTag::kSkipCurrentProcess, diffTwoXMLs::label, LogDebug, edm::BMixingModule::maxBunch_, edm::BMixingModule::maxNbSources_, edm::BMixingModule::minBunch_, mixProdStep1_, mixProdStep2_, cscdqm::h::names, edm::BMixingModule::playback_, TrackValidation_cff::pset, edm::sort_all(), AlCaHLTBitMon_QueryRunRegistry::string, fireworks::subdets, GlobalPosition_Frontier_DevDB_cff::tag, o2o::tags, useCurrentProcessOnly_, wantedBranches_, and workersObjects_.

41  :
42  BMixingModule(ps_mix, globalConf),
44  mixProdStep2_(ps_mix.getParameter<bool>("mixProdStep2")),
45  mixProdStep1_(ps_mix.getParameter<bool>("mixProdStep1")),
47  {
48  if (!mixProdStep1_ && !mixProdStep2_) LogInfo("MixingModule") << " The MixingModule was run in the Standard mode.";
49  if (mixProdStep1_) LogInfo("MixingModule") << " The MixingModule was run in the Step1 mode. It produces a mixed secondary source.";
50  if (mixProdStep2_) LogInfo("MixingModule") << " The MixingModule was run in the Step2 mode. It uses a mixed secondary source.";
51 
53  if (ps_mix.exists("useCurrentProcessOnly")) {
54  useCurrentProcessOnly_=ps_mix.getParameter<bool>("useCurrentProcessOnly");
55  LogInfo("MixingModule") <<" using given Parameter 'useCurrentProcessOnly' ="<<useCurrentProcessOnly_;
56  }
57  std::string labelPlayback;
58  if (ps_mix.exists("LabelPlayback")) {
59  labelPlayback = ps_mix.getParameter<std::string>("LabelPlayback");
60  }
61  if (labelPlayback.empty()) {
62  labelPlayback = ps_mix.getParameter<std::string>("@module_label");
63  }
64  if (playback_) {
66  consumes<CrossingFramePlaybackInfoNew>(inputTagPlayback_);
67  }
68 
69  ParameterSet ps=ps_mix.getParameter<ParameterSet>("mixObjects");
70  std::vector<std::string> names = ps.getParameterNames();
71  for(std::vector<std::string>::iterator it=names.begin();it!= names.end();++it) {
72  ParameterSet pset=ps.getParameter<ParameterSet>((*it));
73  if (!pset.exists("type")) continue; //to allow replacement by empty pset
74  std::string object = pset.getParameter<std::string>("type");
75  std::vector<InputTag> tags=pset.getParameter<std::vector<InputTag> >("input");
76 
77  //if (!mixProdStep2_) {
78 
79  InputTag tagCF = InputTag();
80  std::string labelCF = " ";
81 
82  if (object=="SimTrack") {
83  InputTag tag;
84  if (tags.size()>0) tag=tags[0];
86 
87  branchesActivate(TypeID(typeid(std::vector<SimTrack>)).friendlyClassName(),std::string(""),tag,label);
88  adjustersObjects_.push_back(new Adjuster<std::vector<SimTrack> >(tag, consumesCollector()));
89  bool makeCrossingFrame = pset.getUntrackedParameter<bool>("makeCrossingFrame", false);
90  if(makeCrossingFrame) {
92  produces<CrossingFrame<SimTrack> >(label);
93  }
94  consumes<std::vector<SimTrack> >(tag);
95 
96  LogInfo("MixingModule") <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label;
97  // std::cout <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label<<std::endl;
98 
99  } else if (object=="RecoTrack") {
100  InputTag tag;
101  if (tags.size()>0) tag=tags[0];
103 
104  branchesActivate(TypeID(typeid(std::vector<reco::Track>)).friendlyClassName(),std::string(""),tag,label);
105  branchesActivate(TypeID(typeid(std::vector<reco::TrackExtra>)).friendlyClassName(),std::string(""),tag,label);
106  branchesActivate(TypeID(typeid(edm::OwnVector<TrackingRecHit,edm::ClonePolicy<TrackingRecHit> >)).friendlyClassName(),std::string(""),tag,label);
107  adjustersObjects_.push_back(new Adjuster<edm::OwnVector<TrackingRecHit> >(tag, consumesCollector()));
108  // note: no crossing frame is foreseen to be used for this object type
109 
110  LogInfo("MixingModule") <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label;
111  //std::cout <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label<<std::endl;
112 
113  } else if (object=="SimVertex") {
114  InputTag tag;
115  if (tags.size()>0) tag=tags[0];
117 
118  branchesActivate(TypeID(typeid(std::vector<SimVertex>)).friendlyClassName(),std::string(""),tag,label);
119  adjustersObjects_.push_back(new Adjuster<std::vector<SimVertex> >(tag, consumesCollector()));
120  bool makeCrossingFrame = pset.getUntrackedParameter<bool>("makeCrossingFrame", false);
121  if(makeCrossingFrame) {
123  produces<CrossingFrame<SimVertex> >(label);
124  }
125  consumes<std::vector<SimVertex> >(tag);
126 
127  LogInfo("MixingModule") <<"Will mix "<<object<<"s with InputTag "<<tag.encode()<<", label will be "<<label;
128  // std::cout <<"Will mix "<<object<<"s with InputTag "<<tag.encode()<<", label will be "<<label<<std::endl;
129 
130  } else if (object=="HepMCProduct") {
131  InputTag tag;
132  if (tags.size()>0) tag=tags[0];
134 
135  branchesActivate(TypeID(typeid(HepMCProduct)).friendlyClassName(),std::string(""),tag,label);
136  bool makeCrossingFrame = pset.getUntrackedParameter<bool>("makeCrossingFrame", false);
137  if(makeCrossingFrame) {
138  workersObjects_.push_back(new MixingWorker<HepMCProduct>(minBunch_,maxBunch_,bunchSpace_,std::string(""),label,labelCF,maxNbSources_,tag,tagCF,tags));
139  produces<CrossingFrame<HepMCProduct> >(label);
140  }
141  consumes<HepMCProduct>(tag);
142 
143  LogInfo("MixingModule") <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label;
144  // std::cout <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label<<std::endl;
145  for(size_t i = 1; i < tags.size(); ++i) {
146  InputTag fallbackTag = tags[i];
147  std::string fallbackLabel;
148  branchesActivate(TypeID(typeid(HepMCProduct)).friendlyClassName(),std::string(""),fallbackTag,fallbackLabel);
149  mayConsume<HepMCProduct>(fallbackTag);
150  }
151 
152  } else if (object=="PCaloHit") {
153  std::vector<std::string> subdets=pset.getParameter<std::vector<std::string> >("subdets");
154  std::vector<std::string> crossingFrames=pset.getUntrackedParameter<std::vector<std::string> >("crossingFrames", std::vector<std::string>());
155  sort_all(crossingFrames);
156  for (unsigned int ii=0;ii<subdets.size();++ii) {
157  InputTag tag;
158  if (tags.size()==1) tag=tags[0];
159  else if(tags.size()>1) tag=tags[ii];
161 
162  branchesActivate(TypeID(typeid(std::vector<PCaloHit>)).friendlyClassName(),subdets[ii],tag,label);
163  adjustersObjects_.push_back(new Adjuster<std::vector<PCaloHit> >(tag, consumesCollector()));
164  if(binary_search_all(crossingFrames, tag.instance())) {
166  produces<CrossingFrame<PCaloHit> >(label);
167  consumes<std::vector<PCaloHit> >(tag);
168  }
169 
170  LogInfo("MixingModule") <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label;
171  // std::cout <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label<<std::endl;
172 
173  }
174 
175  } else if (object=="PSimHit") {
176  std::vector<std::string> subdets=pset.getParameter<std::vector<std::string> >("subdets");
177  std::vector<std::string> crossingFrames=pset.getUntrackedParameter<std::vector<std::string> >("crossingFrames", std::vector<std::string>());
178  sort_all(crossingFrames);
179  for (unsigned int ii=0;ii<subdets.size();++ii) {
180  InputTag tag;
181  if (tags.size()==1) tag=tags[0];
182  else if(tags.size()>1) tag=tags[ii];
184 
185  branchesActivate(TypeID(typeid(std::vector<PSimHit>)).friendlyClassName(),subdets[ii],tag,label);
186  adjustersObjects_.push_back(new Adjuster<std::vector<PSimHit> >(tag, consumesCollector()));
187  if(binary_search_all(crossingFrames, tag.instance())) {
189  produces<CrossingFrame<PSimHit> >(label);
190  consumes<std::vector<PSimHit> >(tag);
191  }
192 
193  LogInfo("MixingModule") <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label;
194  // std::cout <<"Will mix "<<object<<"s with InputTag= "<<tag.encode()<<", label will be "<<label<<std::endl;
195  }
196  } else {
197  LogWarning("MixingModule") <<"You have asked to mix an unknown type of object("<<object<<").\n If you want to include it in mixing, please contact the authors of the MixingModule!";
198  }
199  //} //if for mixProdStep2
200  }//while over the mixObjects parameters
201 
203  for (unsigned int branch=0;branch<wantedBranches_.size();++branch) LogDebug("MixingModule")<<"Will keep branch "<<wantedBranches_[branch]<<" for mixing ";
204 
206 
207  produces<PileupMixingContent>();
208 
209  produces<CrossingFramePlaybackInfoNew>();
210 
212  // Create and configure digitizers
213  createDigiAccumulators(ps_mix, iC);
214  }
#define LogDebug(id)
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
static const HistoName names[]
void createDigiAccumulators(const edm::ParameterSet &mixingPSet, edm::ConsumesCollector &iC)
int ii
Definition: cuy.py:588
Accumulators digiAccumulators_
Definition: MixingModule.h:103
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
static const std::string kSkipCurrentProcess
Definition: InputTag.h:50
static const unsigned int maxNbSources_
std::vector< MixingWorkerBase * > workersObjects_
Definition: MixingModule.h:98
virtual void branchesActivate(const std::string &friendlyName, const std::string &subdet, InputTag &tag, std::string &label)
tuple tags
Definition: o2o.py:248
void sort_all(RandomAccessSequence &s)
wrappers for std::sort
Definition: Algorithms.h:120
std::vector< std::string > wantedBranches_
Definition: MixingModule.h:99
std::vector< AdjusterBase * > adjustersObjects_
Definition: MixingModule.h:96
InputTag inputTagPlayback_
Definition: MixingModule.h:90
bool binary_search_all(ForwardSequence const &s, Datum const &d)
wrappers for std::binary_search
Definition: Algorithms.h:76
void dropUnwantedBranches(std::vector< std::string > const &wantedBranches)
static const std::string subdets[7]
Definition: TrackUtils.cc:72
BMixingModule(const edm::ParameterSet &ps, MixingCache::Config const *globalConf)
MixingModule::~MixingModule ( )
virtual

Default destructor

Definition at line 284 of file MixingModule.cc.

References adjustersObjects_, digiAccumulators_, and workersObjects_.

284  {
285  for (auto& worker : workersObjects_) {
286  delete worker;
287  }
288 
289  for (auto& adjuster : adjustersObjects_) {
290  delete adjuster;
291  }
292 
293  for (auto& digiAccumulator : digiAccumulators_) {
294  delete digiAccumulator;
295  }
296  }
Accumulators digiAccumulators_
Definition: MixingModule.h:103
std::vector< MixingWorkerBase * > workersObjects_
Definition: MixingModule.h:98
std::vector< AdjusterBase * > adjustersObjects_
Definition: MixingModule.h:96

Member Function Documentation

void MixingModule::accumulateEvent ( edm::Event const &  event,
edm::EventSetup const &  setup 
)

Definition at line 581 of file MixingModule.cc.

References digiAccumulators_.

Referenced by addSignals(), and pileAllWorkers().

581  {
582  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
583  (*accItr)->accumulate(event, setup);
584  }
585  }
Accumulators digiAccumulators_
Definition: MixingModule.h:103
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void MixingModule::accumulateEvent ( PileUpEventPrincipal const &  event,
edm::EventSetup const &  setup,
edm::StreamID const &  streamID 
)

Definition at line 588 of file MixingModule.cc.

References digiAccumulators_.

588  {
589  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
590  (*accItr)->accumulate(event, setup, streamID);
591  }
592  }
Accumulators digiAccumulators_
Definition: MixingModule.h:103
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void MixingModule::addSignals ( const edm::Event e,
const edm::EventSetup es 
)
overrideprivatevirtual

Reimplemented from edm::BMixingModule.

Definition at line 298 of file MixingModule.cc.

References accumulateEvent(), edm::EventBase::id(), cuy::ii, LogDebug, and workers_.

298  {
299 
300  LogDebug("MixingModule")<<"===============> adding signals for "<<e.id();
301 
303  // fill in signal part of CrossingFrame
304  for (unsigned int ii=0;ii<workers_.size();++ii) {
305  workers_[ii]->addSignals(e);
306  }
307  }
#define LogDebug(id)
int ii
Definition: cuy.py:588
std::vector< MixingWorkerBase * > workers_
Definition: MixingModule.h:97
edm::EventID id() const
Definition: EventBase.h:58
void accumulateEvent(Event const &event, EventSetup const &setup)
virtual void edm::MixingModule::beginJob ( void  )
inlinevirtual

Definition at line 59 of file MixingModule.h.

59 {}
void MixingModule::beginLuminosityBlock ( edm::LuminosityBlock const &  lumi,
edm::EventSetup const &  setup 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 559 of file MixingModule.cc.

References edm::BMixingModule::beginLuminosityBlock(), and digiAccumulators_.

559  {
560  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
561  (*accItr)->beginLuminosityBlock(lumi, setup);
562  }
564  }
tuple lumi
Definition: fjr2json.py:35
Accumulators digiAccumulators_
Definition: MixingModule.h:103
virtual void beginLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &setup) override
void MixingModule::beginRun ( edm::Run const &  run,
edm::EventSetup const &  setup 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 545 of file MixingModule.cc.

References edm::BMixingModule::beginRun(), and digiAccumulators_.

545  {
546  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
547  (*accItr)->beginRun(run, setup);
548  }
550  }
virtual void beginRun(const edm::Run &r, const edm::EventSetup &setup) override
Accumulators digiAccumulators_
Definition: MixingModule.h:103
void MixingModule::branchesActivate ( const std::string &  friendlyName,
const std::string &  subdet,
InputTag tag,
std::string &  label 
)
privatevirtual

Definition at line 243 of file MixingModule.cc.

References EgammaHLTValidationUtils::getProcessName(), HLT_FULL_cff::InputTag, edm::InputTag::instance(), edm::InputTag::label(), FSQHLTOfflineSource_cfi::processName, AlCaHLTBitMon_QueryRunRegistry::string, useCurrentProcessOnly_, and wantedBranches_.

Referenced by MixingModule().

243  {
244 
245  label=tag.label()+tag.instance();
246  wantedBranches_.push_back(friendlyName + '_' +
247  tag.label() + '_' +
248  tag.instance());
249 
250  //if useCurrentProcessOnly, we have to change the input tag
253  tag = InputTag(tag.label(),tag.instance(),processName);
254  }
255  }
std::string friendlyName(std::string const &iFullName)
std::vector< std::string > wantedBranches_
Definition: MixingModule.h:99
void MixingModule::checkSignal ( const edm::Event e)
overrideprivatevirtual

Reimplemented from edm::BMixingModule.

Definition at line 257 of file MixingModule.cc.

References adjusters_, adjustersObjects_, workers_, and workersObjects_.

257  {
258  if (adjusters_.empty()){
259  for (auto const& adjuster : adjustersObjects_) {
260  if (adjuster->checkSignal(e)){
261  adjusters_.push_back(adjuster);
262  }
263  }
264  }
265  if (workers_.empty()){
266  for (auto const& worker : workersObjects_) {
267  if (worker->checkSignal(e)){
268  workers_.push_back(worker);
269  }
270  }
271  }
272  }
std::vector< MixingWorkerBase * > workers_
Definition: MixingModule.h:97
std::vector< AdjusterBase * > adjusters_
Definition: MixingModule.h:95
std::vector< MixingWorkerBase * > workersObjects_
Definition: MixingModule.h:98
std::vector< AdjusterBase * > adjustersObjects_
Definition: MixingModule.h:96
void MixingModule::createDigiAccumulators ( const edm::ParameterSet mixingPSet,
edm::ConsumesCollector iC 
)
private

Definition at line 217 of file MixingModule.cc.

References digiAccumulators_, edm::DigiAccumulatorMixModFactory::get(), edm::ParameterSet::getParameterNames(), edm::ParameterSet::getParameterSet(), edm::DigiAccumulatorMixModFactory::makeDigiAccumulator(), and TrackValidation_cff::pset.

Referenced by MixingModule().

217  {
218  ParameterSet const& digiPSet = mixingPSet.getParameterSet("digitizers");
219  std::vector<std::string> digiNames = digiPSet.getParameterNames();
220  for(auto const& digiName : digiNames) {
221  ParameterSet const& pset = digiPSet.getParameterSet(digiName);
222  std::unique_ptr<DigiAccumulatorMixMod> accumulator = std::unique_ptr<DigiAccumulatorMixMod>(DigiAccumulatorMixModFactory::get()->makeDigiAccumulator(pset, *this, iC));
223  // Create appropriate DigiAccumulator
224  if(accumulator.get() != 0) {
225  digiAccumulators_.push_back(accumulator.release());
226  }
227  }
228  }
Accumulators digiAccumulators_
Definition: MixingModule.h:103
std::unique_ptr< DigiAccumulatorMixMod > makeDigiAccumulator(ParameterSet const &, stream::EDProducerBase &, ConsumesCollector &) const
ParameterSet const & getParameterSet(std::string const &) const
static DigiAccumulatorMixModFactory const * get()
void MixingModule::createnewEDProduct ( )
overrideprivatevirtual

Reimplemented from edm::BMixingModule.

Definition at line 274 of file MixingModule.cc.

References cuy::ii, edm::BMixingModule::maxBunch_, edm::BMixingModule::maxNbSources_, edm::BMixingModule::minBunch_, playbackInfo_, and workers_.

274  {
275  //create playback info
277  //and CrossingFrames
278  for (unsigned int ii=0;ii<workers_.size();++ii){
279  workers_[ii]->createnewEDProduct();
280  }
281  }
int ii
Definition: cuy.py:588
std::vector< MixingWorkerBase * > workers_
Definition: MixingModule.h:97
static const unsigned int maxNbSources_
CrossingFramePlaybackInfoNew * playbackInfo_
Definition: MixingModule.h:93
void MixingModule::doPileUp ( edm::Event e,
const edm::EventSetup es 
)
overrideprivatevirtual

Reimplemented from edm::BMixingModule.

Definition at line 337 of file MixingModule.cc.

References begin, edm::BMixingModule::bunchSpace_, digiAccumulators_, end, Exception, edm::Event::getByLabel(), edm::EventBase::id(), cuy::ii, edm::BMixingModule::inputSources_, inputTagPlayback_, edm::BMixingModule::maxBunch_, edm::BMixingModule::maxNbSources_, edm::BMixingModule::minBunch_, edm::Event::moduleCallingContext(), eostools::move(), pileAllWorkers(), edm::BMixingModule::playback_, playbackInfo_, edm::Event::put(), CrossingFramePlaybackInfoNew::setInfo(), edm::source(), edm::Event::streamID(), edm::BMixingModule::TrueNumInteractions_, and workers_.

337  {
338  using namespace std::placeholders;
339 
340  // Don't allocate because PileUp will do it for us.
341  std::vector<edm::SecondaryEventIDAndFileInfo> recordEventID;
342  std::vector<size_t> sizes;
343  sizes.reserve(maxNbSources_*(maxBunch_ + 1 - minBunch_));
344  size_t playbackCounter = 0U;
346  edm::Handle<CrossingFramePlaybackInfoExtended> oldFormatPlaybackInfo_H;
347  bool oldFormatPlayback = false;
348  if (playback_) {
349  bool got = e.getByLabel(inputTagPlayback_, playbackInfo_H);
350  if (!got) {
351  bool gotOld = e.getByLabel(inputTagPlayback_, oldFormatPlaybackInfo_H);
352  if (!gotOld) {
353  throw cms::Exception("MixingProductNotFound") << " No "
354  "CrossingFramePlaybackInfoNew on the input file, but playback "
355  "option set!!!!! Please change the input file if you really want "
356  "playback!!!!!!" << std::endl;
357  }
358  oldFormatPlayback = true;
359  }
360  }
361 
362  // source[0] is "real" pileup. Check to see that this is what we are doing.
363 
364  std::vector<int> PileupList;
365  PileupList.clear();
366  TrueNumInteractions_.clear();
367 
368  std::shared_ptr<PileUp> source0 = inputSources_[0];
369 
370  if((source0 && source0->doPileUp(0) ) && !playback_) {
371  // if((!inputSources_[0] || !inputSources_[0]->doPileUp()) && !playback_ )
372 
373  // Pre-calculate all pileup distributions before we go fishing for events
374 
375  source0->CalculatePileup(minBunch_, maxBunch_, PileupList, TrueNumInteractions_, e.streamID());
376 
377  }
378 
379  // pre-populate Pileup information
380  // necessary for luminosity-dependent effects during hit accumulation
381 
382  std::vector<int> numInteractionList;
383  std::vector<int> bunchCrossingList;
384  std::vector<float> TrueInteractionList;
385  std::vector<edm::EventID> eventInfoList; // will be empty if we pre-populate, but it's not used in digitizers
386 
387  if(!playback_) {
388 
389  //Makin' a list: Basically, we don't care about the "other" sources at this point.
390  for (int bunchCrossing=minBunch_;bunchCrossing<=maxBunch_;++bunchCrossing) {
391  bunchCrossingList.push_back(bunchCrossing);
392  if(!inputSources_[0] || !inputSources_[0]->doPileUp(0)) {
393  numInteractionList.push_back(0);
394  TrueInteractionList.push_back(0);
395  }
396  else {
397  numInteractionList.push_back(PileupList[bunchCrossing-minBunch_]);
398  TrueInteractionList.push_back((TrueNumInteractions_)[bunchCrossing-minBunch_]);
399  }
400  }
401  }
402  else{ // have to read PU information from playback info
403  for (int bunchIdx = minBunch_; bunchIdx <= maxBunch_; ++bunchIdx) {
404 
405  for (size_t readSrcIdx=0; readSrcIdx<maxNbSources_; ++readSrcIdx) {
406 
407  if(oldFormatPlayback) {
408  std::vector<edm::EventID> const& playEventID = oldFormatPlaybackInfo_H->getStartEventId(readSrcIdx, bunchIdx);
409  size_t numberOfEvents = playEventID.size();
410  if(readSrcIdx == 0) {
411  PileupList.push_back(numberOfEvents);
412  TrueNumInteractions_.push_back(numberOfEvents);
413  }
414  } else {
415  size_t numberOfEvents = playbackInfo_H->getNumberOfEvents(bunchIdx, readSrcIdx);
416  if(readSrcIdx == 0) {
417  PileupList.push_back(numberOfEvents);
418  TrueNumInteractions_.push_back(numberOfEvents);
419  }
420  }
421  }
422  }
423  }
424 
425  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
426  (*accItr)->StorePileupInformation( bunchCrossingList,
427  numInteractionList,
428  TrueInteractionList,
429  eventInfoList,
430  bunchSpace_);
431  }
432 
433 
434  // for (int bunchIdx = minBunch_; bunchIdx <= maxBunch_; ++bunchIdx) {
435  // std::cout << " bunch ID, Pileup, True " << bunchIdx << " " << PileupList[bunchIdx-minBunch_] << " " << TrueNumInteractions_[bunchIdx-minBunch_] << std::endl;
436  //}
437 
438  for (int bunchIdx = minBunch_; bunchIdx <= maxBunch_; ++bunchIdx) {
439  for (size_t setBcrIdx=0; setBcrIdx<workers_.size(); ++setBcrIdx) {
440  workers_[setBcrIdx]->setBcrOffset();
441  }
442  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
443  (*accItr)->initializeBunchCrossing(e, setup, bunchIdx);
444  }
445 
446  for (size_t readSrcIdx=0; readSrcIdx<maxNbSources_; ++readSrcIdx) {
447  std::shared_ptr<PileUp> source = inputSources_[readSrcIdx]; // this looks like we create
448  // new PileUp objects for each
449  // source for each event?
450  // Why?
451  for (size_t setSrcIdx=0; setSrcIdx<workers_.size(); ++setSrcIdx) {
452  workers_[setSrcIdx]->setSourceOffset(readSrcIdx);
453  }
454 
455  if (!source || !source->doPileUp(bunchIdx)) {
456  sizes.push_back(0U);
457  if(playback_ && !oldFormatPlayback) {
458  playbackCounter += playbackInfo_H->getNumberOfEvents(bunchIdx, readSrcIdx);
459  }
460  continue;
461  }
462 
463  // int eventId = 0;
464  int vertexOffset = 0;
465 
466  ModuleCallingContext const* mcc = e.moduleCallingContext();
467  if (!playback_) {
468  // non-minbias pileup only gets one event for now. Fix later if desired.
469  int numberOfEvents = (readSrcIdx == 0 ? PileupList[bunchIdx - minBunch_] : 1);
470  sizes.push_back(numberOfEvents);
471  inputSources_[readSrcIdx]->readPileUp(e.id(), recordEventID,
472  std::bind(&MixingModule::pileAllWorkers, std::ref(*this), _1, mcc, bunchIdx,
473  _2, vertexOffset, std::ref(setup), e.streamID()), numberOfEvents, e.streamID());
474  } else if(oldFormatPlayback) {
475  std::vector<edm::EventID> const& playEventID = oldFormatPlaybackInfo_H->getStartEventId(readSrcIdx, bunchIdx);
476  size_t numberOfEvents = playEventID.size();
477  if(readSrcIdx == 0) {
478  PileupList.push_back(numberOfEvents);
479  TrueNumInteractions_.push_back(numberOfEvents);
480  }
481  sizes.push_back(numberOfEvents);
482  std::vector<EventID>::const_iterator begin = playEventID.begin();
483  std::vector<EventID>::const_iterator end = playEventID.end();
484  inputSources_[readSrcIdx]->playOldFormatPileUp(
485  begin, end, recordEventID,
486  std::bind(&MixingModule::pileAllWorkers, std::ref(*this), _1, mcc, bunchIdx,
487  _2, vertexOffset, std::ref(setup), e.streamID()));
488  } else {
489  size_t numberOfEvents = playbackInfo_H->getNumberOfEvents(bunchIdx, readSrcIdx);
490  if(readSrcIdx == 0) {
491  PileupList.push_back(numberOfEvents);
492  TrueNumInteractions_.push_back(numberOfEvents);
493  }
494  sizes.push_back(numberOfEvents);
495  std::vector<SecondaryEventIDAndFileInfo>::const_iterator begin = playbackInfo_H->getEventId(playbackCounter);
496  playbackCounter += numberOfEvents;
497  std::vector<SecondaryEventIDAndFileInfo>::const_iterator end = playbackInfo_H->getEventId(playbackCounter);
498  inputSources_[readSrcIdx]->playPileUp(
499  begin, end, recordEventID,
500  std::bind(&MixingModule::pileAllWorkers, std::ref(*this), _1, mcc, bunchIdx,
501  _2, vertexOffset, std::ref(setup), e.streamID()));
502  }
503  }
504  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
505  (*accItr)->finalizeBunchCrossing(e, setup, bunchIdx);
506  }
507  }
508 
509  // Save playback information
510  for (auto const item : recordEventID) {
511  eventInfoList.emplace_back(item.eventID());
512  }
513 
514  // setInfo swaps recordEventID, so recordEventID is useless (empty) after the call.
515  playbackInfo_->setInfo(recordEventID, sizes);
516 
517  // Keep track of pileup accounting...
518 
519 
520  std::unique_ptr<PileupMixingContent> PileupMixing_;
521 
522  PileupMixing_ = std::unique_ptr<PileupMixingContent>(new PileupMixingContent(bunchCrossingList,
523  numInteractionList,
524  TrueInteractionList,
525  eventInfoList,
526  bunchSpace_));
527 
528  e.put(std::move(PileupMixing_));
529 
530  // we have to do the ToF transformation for PSimHits once all pileup has been added
531  for (unsigned int ii=0;ii<workers_.size();++ii) {
532  workers_[ii]->setTof();
533  workers_[ii]->put(e);
534  }
535  }
void setInfo(std::vector< edm::SecondaryEventIDAndFileInfo > &eventInfo, std::vector< size_t > &sizes)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:122
static std::string const source("source")
std::vector< float > TrueNumInteractions_
int ii
Definition: cuy.py:588
ModuleCallingContext const * moduleCallingContext() const
Definition: Event.h:225
std::vector< MixingWorkerBase * > workers_
Definition: MixingModule.h:97
Accumulators digiAccumulators_
Definition: MixingModule.h:103
def move
Definition: eostools.py:510
static const unsigned int maxNbSources_
#define end
Definition: vmac.h:37
CrossingFramePlaybackInfoNew * playbackInfo_
Definition: MixingModule.h:93
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:413
InputTag inputTagPlayback_
Definition: MixingModule.h:90
edm::EventID id() const
Definition: EventBase.h:58
#define begin
Definition: vmac.h:30
std::vector< std::shared_ptr< PileUp > > inputSources_
StreamID streamID() const
Definition: Event.h:81
virtual void doPileUp(edm::Event &e, const edm::EventSetup &es) override
void pileAllWorkers(EventPrincipal const &ep, ModuleCallingContext const *, int bcr, int id, int &offset, const edm::EventSetup &setup, edm::StreamID const &)
void MixingModule::endLuminosityBlock ( edm::LuminosityBlock const &  lumi,
edm::EventSetup const &  setup 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 566 of file MixingModule.cc.

References digiAccumulators_, and edm::BMixingModule::endLuminosityBlock().

566  {
567  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
568  (*accItr)->endLuminosityBlock(lumi, setup);
569  }
571  }
tuple lumi
Definition: fjr2json.py:35
Accumulators digiAccumulators_
Definition: MixingModule.h:103
virtual void endLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &setup) override
void MixingModule::endRun ( edm::Run const &  run,
edm::EventSetup const &  setup 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 552 of file MixingModule.cc.

References digiAccumulators_, and edm::BMixingModule::endRun().

552  {
553  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
554  (*accItr)->endRun(run, setup);
555  }
557  }
virtual void endRun(const edm::Run &r, const edm::EventSetup &setup) override
Accumulators digiAccumulators_
Definition: MixingModule.h:103
void MixingModule::finalizeEvent ( edm::Event event,
edm::EventSetup const &  setup 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 595 of file MixingModule.cc.

References digiAccumulators_.

595  {
596  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
597  (*accItr)->finalizeEvent(event, setup);
598  }
599  }
Accumulators digiAccumulators_
Definition: MixingModule.h:103
void MixingModule::initializeEvent ( edm::Event const &  event,
edm::EventSetup const &  setup 
)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 574 of file MixingModule.cc.

References digiAccumulators_.

574  {
575  for(Accumulators::const_iterator accItr = digiAccumulators_.begin(), accEnd = digiAccumulators_.end(); accItr != accEnd; ++accItr) {
576  (*accItr)->initializeEvent(event, setup);
577  }
578  }
Accumulators digiAccumulators_
Definition: MixingModule.h:103
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void MixingModule::pileAllWorkers ( EventPrincipal const &  ep,
ModuleCallingContext const *  mcc,
int  bcr,
int  id,
int &  offset,
const edm::EventSetup setup,
edm::StreamID const &  streamID 
)
private

Definition at line 309 of file MixingModule.cc.

References accumulateEvent(), adjusters_, edm::BMixingModule::bunchSpace_, edm::EventPrincipal::id(), LogDebug, edm::stream::EDProducerBase::moduleDescription(), and workers_.

Referenced by doPileUp().

314  {
315 
316 
317  InternalContext internalContext(eventPrincipal.id(), mcc);
318  ParentContext parentContext(&internalContext);
319  ModuleCallingContext moduleCallingContext(&moduleDescription());
320  ModuleContextSentry moduleContextSentry(&moduleCallingContext, parentContext);
321 
322  for (auto const& adjuster : adjusters_) {
323  adjuster->doOffset(bunchSpace_, bunchCrossing, eventPrincipal, &moduleCallingContext, eventId, vertexOffset);
324  }
325  PileUpEventPrincipal pep(eventPrincipal, &moduleCallingContext, bunchCrossing);
326 
327  accumulateEvent(pep, setup, streamID);
328 
329  for (auto const& worker : workers_) {
330  LogDebug("MixingModule") <<" merging Event: id " << eventPrincipal.id();
331  // std::cout <<"PILEALLWORKERS merging Event: id " << eventPrincipal.id() << std::endl;
332 
333  worker->addPileups(eventPrincipal, &moduleCallingContext, eventId);
334  }
335  }
#define LogDebug(id)
std::vector< MixingWorkerBase * > workers_
Definition: MixingModule.h:97
std::vector< AdjusterBase * > adjusters_
Definition: MixingModule.h:95
ModuleDescription const & moduleDescription() const
void accumulateEvent(Event const &event, EventSetup const &setup)
void MixingModule::put ( edm::Event e,
const edm::EventSetup es 
)
overrideprivatevirtual

Reimplemented from edm::BMixingModule.

Definition at line 537 of file MixingModule.cc.

References eostools::move(), playbackInfo_, and edm::Event::put().

537  {
538 
539  if (playbackInfo_) {
540  std::unique_ptr<CrossingFramePlaybackInfoNew> pOut(playbackInfo_);
541  e.put(std::move(pOut));
542  }
543  }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:122
def move
Definition: eostools.py:510
CrossingFramePlaybackInfoNew * playbackInfo_
Definition: MixingModule.h:93
void MixingModule::reload ( const edm::EventSetup setup)
overridevirtual

Reimplemented from edm::BMixingModule.

Definition at line 230 of file MixingModule.cc.

References edm::BMixingModule::bunchSpace_, mps_alisetup::config, edm::EventSetup::get(), cuy::ii, edm::BMixingModule::maxBunch_, edm::BMixingModule::minBunch_, and workersObjects_.

230  {
231  //change the basic parameters.
233  setup.get<MixingRcd>().get(config);
234  minBunch_=config->minBunch();
235  maxBunch_=config->maxBunch();
236  bunchSpace_=config->bunchSpace();
237  //propagate to change the workers
238  for (unsigned int ii=0;ii<workersObjects_.size();++ii){
239  workersObjects_[ii]->reload(setup);
240  }
241  }
int ii
Definition: cuy.py:588
std::vector< MixingWorkerBase * > workersObjects_
Definition: MixingModule.h:98
const T & get() const
Definition: EventSetup.h:56

Member Data Documentation

std::vector<AdjusterBase *> edm::MixingModule::adjusters_
private

Definition at line 95 of file MixingModule.h.

Referenced by checkSignal(), and pileAllWorkers().

std::vector<AdjusterBase *> edm::MixingModule::adjustersObjects_
private

Definition at line 96 of file MixingModule.h.

Referenced by checkSignal(), MixingModule(), and ~MixingModule().

Accumulators edm::MixingModule::digiAccumulators_
private
InputTag edm::MixingModule::inputTagPlayback_
private

Definition at line 90 of file MixingModule.h.

Referenced by doPileUp(), and MixingModule().

bool edm::MixingModule::mixProdStep1_
private

Definition at line 92 of file MixingModule.h.

Referenced by MixingModule().

bool edm::MixingModule::mixProdStep2_
private

Definition at line 91 of file MixingModule.h.

Referenced by MixingModule().

CrossingFramePlaybackInfoNew* edm::MixingModule::playbackInfo_
private

Definition at line 93 of file MixingModule.h.

Referenced by createnewEDProduct(), doPileUp(), and put().

bool edm::MixingModule::useCurrentProcessOnly_
private

Definition at line 100 of file MixingModule.h.

Referenced by branchesActivate(), and MixingModule().

std::vector<std::string> edm::MixingModule::wantedBranches_
private

Definition at line 99 of file MixingModule.h.

Referenced by branchesActivate(), and MixingModule().

std::vector<MixingWorkerBase *> edm::MixingModule::workers_
private

Definition at line 97 of file MixingModule.h.

Referenced by addSignals(), checkSignal(), createnewEDProduct(), doPileUp(), and pileAllWorkers().

std::vector<MixingWorkerBase *> edm::MixingModule::workersObjects_
private

Definition at line 98 of file MixingModule.h.

Referenced by checkSignal(), MixingModule(), reload(), and ~MixingModule().