ATLAS Offline Software
Classes | List of all members
MixingEventSelector Class Reference

a stream of events read from different selectors. More...

#include <MixingEventSelector.h>

Inheritance diagram for MixingEventSelector:
Collaboration diagram for MixingEventSelector:

Classes

class  Context
 dummy for now More...
 
class  Trigger
 a selector with an associated frequency More...
 
class  TriggerList
 the list of available selectors with their frequency range More...
 

Public Member Functions

IEvtSelector implementation
virtual StatusCode next (IEvtSelector::Context &refCtxt) const override
 
virtual StatusCode createAddress (const IEvtSelector::Context &refCtxt, IOpaqueAddress *&) const override
 
virtual StatusCode createContext (IEvtSelector::Context *&refpCtxt) const override
 
virtual StatusCode last (IEvtSelector::Context &) const override
 
virtual StatusCode next (IEvtSelector::Context &, int) const override
 
virtual StatusCode previous (IEvtSelector::Context &) const override
 
virtual StatusCode previous (IEvtSelector::Context &, int) const override
 
virtual StatusCode rewind (IEvtSelector::Context &refCtxt) const override
 
virtual StatusCode releaseContext (IEvtSelector::Context *&refCtxt) const override
 
virtual StatusCode resetCriteria (const std::string &cr, IEvtSelector::Context &c) const override
 
IAddressProvider interface (forwarded to current Trigger)
virtual StatusCode preLoadAddresses (StoreID::type storeID, IAddressProvider::tadList &tads) override
 
virtual StatusCode loadAddresses (StoreID::type storeID, IAddressProvider::tadList &tads) override
 
virtual StatusCode updateAddress (StoreID::type storeID, SG::TransientAddress *tad, const EventContext &ctx) override
 
IConverter implementation.
virtual const CLIDobjType () const override
 
virtual long repSvcType () const override
 
virtual StatusCode createObj (IOpaqueAddress *pAddress, DataObject *&refpObject) override
 Create the transient representation of an object. More...
 
virtual StatusCode setDataProvider (IDataProviderSvc *pService) override
 
virtual SmartIF< IDataProviderSvc > & dataProvider () const override
 
virtual StatusCode setConversionSvc (IConversionSvc *pService) override
 
virtual SmartIF< IConversionSvc > & conversionSvc () const override
 
virtual StatusCode setAddressCreator (IAddressCreator *creator) override
 
virtual SmartIF< IAddressCreator > & addressCreator () const override
 
virtual StatusCode fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
 
virtual StatusCode updateObj (IOpaqueAddress *pAddress, DataObject *refpObject) override
 
virtual StatusCode updateObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
 
virtual StatusCode createRep (DataObject *pObject, IOpaqueAddress *&refpAddress) override
 
virtual StatusCode fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
 
virtual StatusCode updateRep (IOpaqueAddress *pAddress, DataObject *pObject) override
 
virtual StatusCode updateRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
 
Service implementation
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
void setUpTriggerList (Gaudi::Details::PropertyBase &trigList)
 TriggerList property call-back. More...
 
void decodeTrigger (std::string triggDescr)
 functor that creates a Trigger object and adds it to m_trigList More...
 

Private Attributes

Properties
Gaudi::Property< std::string > m_statusFileName
 
Gaudi::Property< std::vector< std::string > > m_triggerListProp
 
Gaudi::Property< int > m_outputRunNumber {this, "OutputRunNumber", 123456789}
 
Gaudi::Property< std::vector< unsigned long > > m_eventNumbers
 
Gaudi::Property< std::string > m_mergedEventInfoKey
 
Gaudi::Property< std::string > m_randomStreamName
 
ToolHandleArray< IAthenaSelectorToolm_helperTools
 
ServiceHandle< IAtRndmGenSvcm_atRndmSvc
 
TriggerList m_trigList
 the ingredients More...
 

structors

 MixingEventSelector (const std::string &name, ISvcLocator *svc)
 
virtual ~MixingEventSelector ()
 
bool validTrigger () const
 

trigger list management

TriggerList::iterator m_pCurrentTrigger
 the current trigger More...
 
TriggerList::iterator setCurrentTrigger () const
 choose current trigger at random. Actually modifies state (use mutables) More...
 
TriggerList::iterator currentTrigger () const
 "intelligent" accessor to the above More...
 

event number management

unsigned long m_eventPos {0}
 the internal event number More...
 
ServiceHandle< StoreGateSvcm_pEventStore
 
std::unique_ptr< CLHEP::RandFlat > m_chooseRangeRand
 
unsigned long getEventNo () const
 setup and lookup m_evtsNotUsedSoFar. Returns next event no More...
 

Detailed Description

a stream of events read from different selectors.

Each source contains a particular event type ("trigger"). We want to mix the triggers according to a recipe specified via the "TriggerList" property

Mixer.TriggerList += {"50% BSelector", "20 % MinBiasSelec"};

The algorithms downstream of the"mixer" will see events coming at random according to this admixture.
The "OutputRunNumber" property allows to assign a new run number to the events.

Mixer.OutputRun=1234;

The event number can be randomized to mimic the behaviour of the processing farms. So

Mixer.EventRandomRange=100;

will shuffle the first 100 events, then move to the second hundred, etc

Definition at line 69 of file MixingEventSelector.h.

Constructor & Destructor Documentation

◆ MixingEventSelector()

MixingEventSelector::MixingEventSelector ( const std::string &  name,
ISvcLocator *  svc 
)

Definition at line 46 of file MixingEventSelector.cxx.

46  :
47  base_class(name,svc),
49  m_pEventStore( "StoreGateSvc", name )
50 {
51 }

◆ ~MixingEventSelector()

MixingEventSelector::~MixingEventSelector ( )
virtual

Definition at line 53 of file MixingEventSelector.cxx.

53  {
54 }

Member Function Documentation

◆ addressCreator()

SmartIF< IAddressCreator > & MixingEventSelector::addressCreator ( ) const
overridevirtual

Definition at line 552 of file MixingEventSelector.cxx.

553 {
554  std::abort();
555 }

◆ conversionSvc()

SmartIF< IConversionSvc > & MixingEventSelector::conversionSvc ( ) const
overridevirtual

Definition at line 544 of file MixingEventSelector.cxx.

545 {
546  std::abort();
547 }

◆ createAddress()

StatusCode MixingEventSelector::createAddress ( const IEvtSelector::Context &  refCtxt,
IOpaqueAddress *&  pAddr 
) const
overridevirtual

Definition at line 221 of file MixingEventSelector.cxx.

222  {
223  pAddr=nullptr;
224  if (!validTrigger()) return StatusCode::FAILURE;
225 
227  return (currentTrigger()->createAddress(pAddr).isSuccess() &&
228  pAddr != nullptr) ? StatusCode::SUCCESS : StatusCode::FAILURE;
229 }

◆ createContext()

StatusCode MixingEventSelector::createContext ( IEvtSelector::Context *&  refpCtxt) const
overridevirtual

Definition at line 173 of file MixingEventSelector.cxx.

173  {
174  pctxt=nullptr;
175  if (!validTrigger()) return StatusCode::FAILURE;
177  StatusCode sc(StatusCode::FAILURE);
178  while (iTr != m_trigList.end() && (sc=(iTr++)->createContext(pctxt)).isSuccess()) ;
179  return sc;
180 }

◆ createObj()

StatusCode MixingEventSelector::createObj ( IOpaqueAddress *  pAddress,
DataObject *&  refpObject 
)
overridevirtual

Create the transient representation of an object.

The transient representation is created by loading the persistent object using the source information contained in the address.

Returns
Status code indicating success or failure
Parameters
pAddressOpaque address information to retrieve the requested object from the store in order to produce the transient object.
refpObjectReference to location of pointer of the created object.

Definition at line 505 of file MixingEventSelector.cxx.

507 {
508  const EventInfo* pEInfo(nullptr);
509  if (!(m_pEventStore->retrieve(pEInfo)).isSuccess()) {
511  ("addMergedEventInfo: event store does not contain "\
512  "an EventInfo object!");
513  return StatusCode::RECOVERABLE;
514  }
515 
516  // copy the original event to a new MergedEventInfo
517  auto mei = std::make_unique<MergedEventInfo> (*pEInfo,
519  getEventNo());
520  refpObject = SG::asStorable (std::move (mei));
521 
522 
523  //finally slam a new EventID in place of the old! HACK!!! FIXME!!
524  (const_cast<EventInfo*>(pEInfo))->setEventID(
526 
527  return StatusCode::SUCCESS;
528 }

◆ createRep()

StatusCode MixingEventSelector::createRep ( DataObject *  pObject,
IOpaqueAddress *&  refpAddress 
)
overridevirtual

Definition at line 568 of file MixingEventSelector.cxx.

569 {
570  std::abort();
571 }

◆ currentTrigger()

MixingEventSelector::TriggerList::iterator MixingEventSelector::currentTrigger ( ) const
private

"intelligent" accessor to the above

Definition at line 299 of file MixingEventSelector.cxx.

299  {
301 }

◆ dataProvider()

SmartIF< IDataProviderSvc > & MixingEventSelector::dataProvider ( ) const
overridevirtual

Definition at line 536 of file MixingEventSelector.cxx.

537 {
538  std::abort();
539 }

◆ decodeTrigger()

void MixingEventSelector::decodeTrigger ( std::string  triggDescr)

functor that creates a Trigger object and adds it to m_trigList

Definition at line 113 of file MixingEventSelector.cxx.

113  {
114  //all this would be much more readable without error reporting...
115  typedef tokenizer<char_separator<char> > Tokenizer;
116  Tokenizer tokens(triggDescr, char_separator<char>(" :"));
117  //we need exactly three tokens: selector name, first and last event 2 B read
118  if ( (distance(tokens.begin(), tokens.end()) == 3) ||
119  (distance(tokens.begin(), tokens.end()) == 3) ){
120  Tokenizer::iterator iToken(tokens.begin());
121  Gaudi::Utils::TypeNameString selTN(*iToken++);
122  //get selector
123  SmartIF<IEvtSelector> pSelector(serviceLocator()->service(selTN));
124  if (pSelector) {
125  //FIXME if (!pSelector.done()) {
126  //try to add to trig list
127  unsigned int firstEvt{};
128  unsigned int lastEvt{};
129  auto string1 = *iToken++;
130  auto string2 = *iToken;
131  auto [ptr1, ec1] = std::from_chars(string1.data(), string1.data() + string1.size(), firstEvt);
132  auto [ptr2, ec2] = std::from_chars(string2.data(), string2.data() + string2.size(), lastEvt);
133  if ( ec1 != std::errc() || ec2 != std::errc() ) {
134  ATH_MSG_ERROR("decodeTrigger: Can't cast ["<< string1 << " " << string2 << "] to double(frequency). SKIPPING");
135  } else {
136  if (m_trigList.add(Trigger(pSelector, firstEvt, lastEvt))) {
137  if (msgLvl(MSG::DEBUG)) {
138  SmartIF<INamedInterface> pNamed(pSelector);
139  if (pNamed) {
140  msg() << "decodeTrigger: added selector " << pNamed->name()
141  << " first event to be read " << firstEvt
142  << " last event to be read " << lastEvt << endmsg;
143  }
144  }
145  } else {
147  ("decodeTrigger: Selector ["
148  << selTN.type() << '/' << selTN.name()
149  << "] not added");
150  } //can add to range
151  }
152  } else {
154  ("decodeTrigger: Selector ["
155  << selTN.type() << '/' << selTN.name()
156  << "] can not be found or created");
157  } //selector available
158  } else {
160  ("decodeTrigger: Badly formatted descriptor ["
161  << triggDescr << "]. SKIPPING");
162  } //can parse property string
163 }

◆ fillObjRefs()

StatusCode MixingEventSelector::fillObjRefs ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
)
overridevirtual

Definition at line 556 of file MixingEventSelector.cxx.

557 {
558  std::abort();
559 }

◆ fillRepRefs()

StatusCode MixingEventSelector::fillRepRefs ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
)
overridevirtual

Definition at line 572 of file MixingEventSelector.cxx.

573 {
574  std::abort();
575 }

◆ finalize()

StatusCode MixingEventSelector::finalize ( )
overridevirtual

Definition at line 82 of file MixingEventSelector.cxx.

82  {
83  ATH_MSG_DEBUG ("Finalizing " << name());
84 
85  for (ToolHandle<IAthenaSelectorTool>& tool : m_helperTools) {
86  tool->preFinalize().ignore();
87  }
88 
89  const std::string& fname(m_statusFileName.value());
90  ofstream outfile(fname.c_str());
91  if ( outfile ) {
94  while (i != iEnd) outfile << (*i++).toString();
95  } else if (!fname.empty()) {
96  ATH_MSG_WARNING("unable to open trigger list status file " << fname);
97  }
98 
99  return StatusCode::SUCCESS;
100 }

◆ getEventNo()

unsigned long MixingEventSelector::getEventNo ( ) const
private

setup and lookup m_evtsNotUsedSoFar. Returns next event no

Definition at line 268 of file MixingEventSelector.cxx.

268  {
269  return ( (m_eventNumbers.value().size() > m_eventPos) ?
270  m_eventNumbers.value()[m_eventPos] :
271  m_eventPos );
272 }

◆ initialize()

StatusCode MixingEventSelector::initialize ( )
overridevirtual

Definition at line 57 of file MixingEventSelector.cxx.

57  {
58  ATH_MSG_INFO ("Initializing " << name());
59 
60 // defer this (it triggers a init loop via PPS
61 // if (!m_pEventStore.retrieve().isSuccess())
62 // return StatusCode::FAILURE;
63 
64  //setup random stream
65  CLHEP::HepRandomEngine* collEng(m_atRndmSvc->GetEngine(m_randomStreamName.value()));
66  if(nullptr == collEng ) {
67  ATH_MSG_ERROR ("can not get random stream " << m_randomStreamName.value());
68  return StatusCode::FAILURE;
69  }
70  //flat distribution in [0,1] range
71  m_chooseRangeRand = std::make_unique<CLHEP::RandFlat>(*(collEng), 0.0, 1.0);
72 
73  ATH_CHECK( m_helperTools.retrieve() );
74  for (ToolHandle<IAthenaSelectorTool>& tool : m_helperTools) {
75  ATH_CHECK( tool->postInitialize() );
76  }
77 
78  return StatusCode::SUCCESS;
79 }

◆ last()

StatusCode MixingEventSelector::last ( IEvtSelector::Context &  ) const
overridevirtual

Definition at line 459 of file MixingEventSelector.cxx.

459  {
460  return StatusCode::FAILURE;
461 }

◆ loadAddresses()

StatusCode MixingEventSelector::loadAddresses ( StoreID::type  storeID,
IAddressProvider::tadList tads 
)
overridevirtual

Definition at line 238 of file MixingEventSelector.cxx.

240 {
241  if (storeID != StoreID::EVENT_STORE && storeID != StoreID::PILEUP_STORE)
242  return StatusCode::SUCCESS;
243 
245  if (!m_pEventStore->contains (mclid, m_mergedEventInfoKey)) {
246  // We create the DataProxy here rather than relying on ProxyProvideSvc
247  // to do it because we want to set a non-default dataloader on the proxy.
248  SG::TransientAddress tad (mclid,
250  new GenericAddress (0, mclid),
251  false);
252  auto dp = std::make_unique<SG::DataProxy> (std::move(tad),
253  this,
254  true);
255  ATH_CHECK( m_pEventStore->addToStore (mclid, dp.release()) );
256  }
257  return StatusCode::SUCCESS;
258 }

◆ next() [1/2]

StatusCode MixingEventSelector::next ( IEvtSelector::Context &  ,
int   
) const
overridevirtual

Definition at line 462 of file MixingEventSelector.cxx.

462  {
463  return StatusCode::FAILURE;
464 }

◆ next() [2/2]

StatusCode MixingEventSelector::next ( IEvtSelector::Context &  refCtxt) const
overridevirtual

Definition at line 183 of file MixingEventSelector.cxx.

183  {
184  StatusCode sc(StatusCode::FAILURE);
185  do {
186 #ifdef DEBUG_OUTPUT_STATUS
189  while (i != iEnd) outfile2 << (*i++).toString(); //output status
190 #endif
192  sc = currentTrigger()->next();
193  if (sc.isFailure()){
195  continue; // we have to add "continue;" after "m_trigList.remove(m_pCurrentTrigger);
196  }
197  } while ((sc.isFailure() || currentTrigger()->done()) && !m_trigList.empty() );
198  // use !m_trigList.empty() to replace validTrigger(), which is not working well
199 
200  std::vector<ToolHandle<IAthenaSelectorTool> >::const_iterator
201  i(m_helperTools.begin()), iE(m_helperTools.end());
202  while (i != iE) ((*i++)->preNext()).ignore();
203 
204  ++m_eventPos;
205  FORWARD___DEBUG( next );
206 
207  i=m_helperTools.begin(); iE=m_helperTools.end();
208  while (sc.isSuccess() && (i != iE)) {
209  sc =(*i)->postNext();
210  if (sc.isRecoverable())
211  ATH_MSG_INFO("Request skipping event from: " << (*i)->name());
212  else if (sc.isFailure())
213  ATH_MSG_WARNING((*i)->name() << ":postNext failed");
214  ++i;
215  }
216  return sc;
217 }

◆ objType()

const CLID & MixingEventSelector::objType ( ) const
overridevirtual

Definition at line 484 of file MixingEventSelector.cxx.

485 {
487 }

◆ preLoadAddresses()

StatusCode MixingEventSelector::preLoadAddresses ( StoreID::type  storeID,
IAddressProvider::tadList tads 
)
overridevirtual

Definition at line 232 of file MixingEventSelector.cxx.

233  {
234  return StatusCode::SUCCESS;
235 }

◆ previous() [1/2]

StatusCode MixingEventSelector::previous ( IEvtSelector::Context &  ) const
overridevirtual

Definition at line 465 of file MixingEventSelector.cxx.

465  {
466  return StatusCode::FAILURE;
467 }

◆ previous() [2/2]

StatusCode MixingEventSelector::previous ( IEvtSelector::Context &  ,
int   
) const
overridevirtual

Definition at line 468 of file MixingEventSelector.cxx.

468  {
469  return StatusCode::FAILURE;
470 }

◆ releaseContext()

StatusCode MixingEventSelector::releaseContext ( IEvtSelector::Context *&  refCtxt) const
overridevirtual

Definition at line 474 of file MixingEventSelector.cxx.

474  {
475  return StatusCode::FAILURE;
476 }

◆ repSvcType()

long MixingEventSelector::repSvcType ( ) const
overridevirtual

Definition at line 488 of file MixingEventSelector.cxx.

489 {
490  return 0;
491 }

◆ resetCriteria()

StatusCode MixingEventSelector::resetCriteria ( const std::string &  cr,
IEvtSelector::Context &  c 
) const
overridevirtual

Definition at line 477 of file MixingEventSelector.cxx.

478  {
479  return StatusCode::FAILURE;
480 }

◆ rewind()

StatusCode MixingEventSelector::rewind ( IEvtSelector::Context &  refCtxt) const
overridevirtual

Definition at line 471 of file MixingEventSelector.cxx.

471  {
472  return StatusCode::FAILURE;
473 }

◆ setAddressCreator()

StatusCode MixingEventSelector::setAddressCreator ( IAddressCreator *  creator)
overridevirtual

Definition at line 548 of file MixingEventSelector.cxx.

549 {
550  std::abort();
551 }

◆ setConversionSvc()

StatusCode MixingEventSelector::setConversionSvc ( IConversionSvc *  pService)
overridevirtual

Definition at line 540 of file MixingEventSelector.cxx.

541 {
542  std::abort();
543 }

◆ setCurrentTrigger()

MixingEventSelector::TriggerList::iterator MixingEventSelector::setCurrentTrigger ( ) const
private

choose current trigger at random. Actually modifies state (use mutables)

Definition at line 276 of file MixingEventSelector.cxx.

276  {
277  //we look for the first trigger which is not done
278  do {
279  //if called before initialize, choose the last trigger in list
280  unsigned int iTrig = (nullptr != m_chooseRangeRand) ?
281  (unsigned int)(m_chooseRangeRand->fire() * double(m_trigList.todo())) :
282  m_trigList.todo();
284  } while (validTrigger() && m_pCurrentTrigger->done() &&
285  m_trigList.remove(m_pCurrentTrigger)); //remove a done trigger
286 
287  //printouts
288  if (!validTrigger()) {
289  ATH_MSG_INFO ("setCurrentTrigger: end of input");
290  } else {
291  ATH_MSG_DEBUG ("setCurrentTrigger: now using selector "
292  << currentTrigger()->name());
293  }
294 
295  return m_pCurrentTrigger;
296 }

◆ setDataProvider()

StatusCode MixingEventSelector::setDataProvider ( IDataProviderSvc *  pService)
overridevirtual

Definition at line 532 of file MixingEventSelector.cxx.

533 {
534  std::abort();
535 }

◆ setUpTriggerList()

void MixingEventSelector::setUpTriggerList ( Gaudi::Details::PropertyBase &  trigList)

TriggerList property call-back.

Decode TriggerList, obtain selector ptrs and store them alongside fractions in m_trigList

Definition at line 104 of file MixingEventSelector.cxx.

104  {
105  using std::placeholders::_1;
107  for_each(m_triggerListProp.value().begin(), m_triggerListProp.value().end(),
108  bind(&MixingEventSelector::decodeTrigger, this, _1));
110 }

◆ updateAddress()

StatusCode MixingEventSelector::updateAddress ( StoreID::type  storeID,
SG::TransientAddress tad,
const EventContext &  ctx 
)
overridevirtual

Definition at line 261 of file MixingEventSelector.cxx.

262  {
263  return StatusCode::FAILURE;
264 }

◆ updateObj()

StatusCode MixingEventSelector::updateObj ( IOpaqueAddress *  pAddress,
DataObject *  refpObject 
)
overridevirtual

Definition at line 560 of file MixingEventSelector.cxx.

561 {
562  std::abort();
563 }

◆ updateObjRefs()

StatusCode MixingEventSelector::updateObjRefs ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
)
overridevirtual

Definition at line 564 of file MixingEventSelector.cxx.

565 {
566  std::abort();
567 }

◆ updateRep()

StatusCode MixingEventSelector::updateRep ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
)
overridevirtual

Definition at line 576 of file MixingEventSelector.cxx.

577 {
578  std::abort();
579 }

◆ updateRepRefs()

StatusCode MixingEventSelector::updateRepRefs ( IOpaqueAddress *  pAddress,
DataObject *  pObject 
)
overridevirtual

Definition at line 580 of file MixingEventSelector.cxx.

581 {
582  std::abort();
583 }

◆ validTrigger()

bool MixingEventSelector::validTrigger ( ) const
inlineprivate

Definition at line 152 of file MixingEventSelector.h.

152 { return (m_trigList.end()!=m_pCurrentTrigger);}

Member Data Documentation

◆ m_atRndmSvc

ServiceHandle<IAtRndmGenSvc> MixingEventSelector::m_atRndmSvc
private
Initial value:
{this, "RndmGenSvc", "AtRndmGenSvc",
"IAtRndmGenSvc controlling the order with which events are takes from streams"}

Definition at line 178 of file MixingEventSelector.h.

◆ m_chooseRangeRand

std::unique_ptr<CLHEP::RandFlat> MixingEventSelector::m_chooseRangeRand
private

Definition at line 277 of file MixingEventSelector.h.

◆ m_eventNumbers

Gaudi::Property<std::vector<unsigned long> > MixingEventSelector::m_eventNumbers
private
Initial value:
{this, "EventNumbers", {},
"List of event numbers to be used for output stream. If list empty or not long enough, event numbers are "
"assigned consucutively after last one in list."}

Definition at line 165 of file MixingEventSelector.h.

◆ m_eventPos

unsigned long MixingEventSelector::m_eventPos {0}
mutableprivate

the internal event number

Definition at line 274 of file MixingEventSelector.h.

◆ m_helperTools

ToolHandleArray<IAthenaSelectorTool> MixingEventSelector::m_helperTools
private
Initial value:
{this, "HelperTools", {},
"Collection of selector tools"}

Definition at line 175 of file MixingEventSelector.h.

◆ m_mergedEventInfoKey

Gaudi::Property<std::string> MixingEventSelector::m_mergedEventInfoKey
private
Initial value:
{this, "MergedEventInfoKey", "MergedEventInfo",
"StoreGate key for output (merged) event info object. Default is MergedEventInfo"}

Definition at line 169 of file MixingEventSelector.h.

◆ m_outputRunNumber

Gaudi::Property<int> MixingEventSelector::m_outputRunNumber {this, "OutputRunNumber", 123456789}
private

Definition at line 163 of file MixingEventSelector.h.

◆ m_pCurrentTrigger

TriggerList::iterator MixingEventSelector::m_pCurrentTrigger
mutableprivate

the current trigger

Definition at line 266 of file MixingEventSelector.h.

◆ m_pEventStore

ServiceHandle<StoreGateSvc> MixingEventSelector::m_pEventStore
private

Definition at line 276 of file MixingEventSelector.h.

◆ m_randomStreamName

Gaudi::Property<std::string> MixingEventSelector::m_randomStreamName
private
Initial value:
{this, "RndmStreamName", "MixingEventSelectorStream",
"IAtRndmGenSvc stream used as engine for our random distributions"}

Definition at line 172 of file MixingEventSelector.h.

◆ m_statusFileName

Gaudi::Property<std::string> MixingEventSelector::m_statusFileName
private
Initial value:
{this, "StreamStatusFileName", {},
"Name of the file recording the last event used and how many were available for each stream. Default is to produce no file."}

Definition at line 156 of file MixingEventSelector.h.

◆ m_triggerListProp

Gaudi::Property<std::vector<std::string> > MixingEventSelector::m_triggerListProp
private
Initial value:
{this, "TriggerList", {}, &MixingEventSelector::setUpTriggerList,
"List of triggers (streams) to be used. Format is SelectorType/SelectorName:firstEventToUse:lastEventToUse. "
"One assumes events are consecutively numbered."}

Definition at line 159 of file MixingEventSelector.h.

◆ m_trigList

TriggerList MixingEventSelector::m_trigList
mutableprivate

the ingredients

Definition at line 260 of file MixingEventSelector.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
MixingEventSelector::m_pCurrentTrigger
TriggerList::iterator m_pCurrentTrigger
the current trigger
Definition: MixingEventSelector.h:266
TileDCSDataPlotter.dp
dp
Definition: TileDCSDataPlotter.py:842
MixingEventSelector::m_trigList
TriggerList m_trigList
the ingredients
Definition: MixingEventSelector.h:260
MixingEventSelector::m_atRndmSvc
ServiceHandle< IAtRndmGenSvc > m_atRndmSvc
Definition: MixingEventSelector.h:178
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MixingEventSelector::TriggerList::remove
bool remove(iterator)
Definition: MixingEventSelector.cxx:322
MixingEventSelector::m_statusFileName
Gaudi::Property< std::string > m_statusFileName
Definition: MixingEventSelector.h:156
SG::TransientAddress
Definition: TransientAddress.h:34
MixingEventSelector::m_eventNumbers
Gaudi::Property< std::vector< unsigned long > > m_eventNumbers
Definition: MixingEventSelector.h:165
MixingEventSelector::TriggerList::end
iterator end()
Definition: MixingEventSelector.h:251
MixingEventSelector::TriggerList::empty
bool empty() const
Definition: MixingEventSelector.h:254
MixingEventSelector::TriggerList::todo
unsigned int todo() const
Definition: MixingEventSelector.h:256
beamspotman.tokens
tokens
Definition: beamspotman.py:1280
MixingEventSelector::next
virtual StatusCode next(IEvtSelector::Context &refCtxt) const override
Definition: MixingEventSelector.cxx:183
MixingEventSelector::currentTrigger
TriggerList::iterator currentTrigger() const
"intelligent" accessor to the above
Definition: MixingEventSelector.cxx:299
MixingEventSelector::getEventNo
unsigned long getEventNo() const
setup and lookup m_evtsNotUsedSoFar. Returns next event no
Definition: MixingEventSelector.cxx:268
MixingEventSelector::m_eventPos
unsigned long m_eventPos
the internal event number
Definition: MixingEventSelector.h:274
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
MixingEventSelector::m_helperTools
ToolHandleArray< IAthenaSelectorTool > m_helperTools
Definition: MixingEventSelector.h:175
MixingEventSelector::TriggerList::elementInRange
iterator elementInRange(unsigned int)
Definition: MixingEventSelector.cxx:369
SG::asStorable
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)
Definition: DataObjectSharedPtr.h:31
DiTauMassTools::ignore
void ignore(T &&)
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:58
MixingEventSelector::decodeTrigger
void decodeTrigger(std::string triggDescr)
functor that creates a Trigger object and adds it to m_trigList
Definition: MixingEventSelector.cxx:113
MixingEventSelector::TriggerList::iterator
std::vector< Trigger >::iterator iterator
Definition: MixingEventSelector.h:247
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
MixingEventSelector::m_chooseRangeRand
std::unique_ptr< CLHEP::RandFlat > m_chooseRangeRand
Definition: MixingEventSelector.h:277
StoreID::PILEUP_STORE
@ PILEUP_STORE
Definition: StoreID.h:31
lumiFormat.i
int i
Definition: lumiFormat.py:85
CP::DetailSelectionExprParser::Tokenizer
boost::tokenizer< Separator > Tokenizer
Definition: SelectionExprParser.h:34
MixingEventSelector::m_randomStreamName
Gaudi::Property< std::string > m_randomStreamName
Definition: MixingEventSelector.h:172
MixingEventSelector::m_pEventStore
ServiceHandle< StoreGateSvc > m_pEventStore
Definition: MixingEventSelector.h:276
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
FORWARD___DEBUG
#define FORWARD___DEBUG(METHOD)
Definition: MixingEventSelector.cxx:166
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MixingEventSelector::TriggerList::begin
iterator begin()
Definition: MixingEventSelector.h:250
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
MixingEventSelector::setCurrentTrigger
TriggerList::iterator setCurrentTrigger() const
choose current trigger at random. Actually modifies state (use mutables)
Definition: MixingEventSelector.cxx:276
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
python.TriggerAnalysisConfig.Trigger
def Trigger(seq)
Definition: TriggerAnalysisConfig.py:263
python.STDM13.TriggerList
TriggerList
Definition: STDM13.py:142
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
MixingEventSelector::setUpTriggerList
void setUpTriggerList(Gaudi::Details::PropertyBase &trigList)
TriggerList property call-back.
Definition: MixingEventSelector.cxx:104
EventInfo
This class provides general information about an event. Event information is provided by the accessor...
Definition: EventInfo/EventInfo/EventInfo.h:43
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:452
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:66
MixingEventSelector::TriggerList::add
bool add(const Trigger &)
Definition: MixingEventSelector.cxx:304
MixingEventSelector::TriggerList::const_iterator
std::vector< Trigger >::const_iterator const_iterator
Definition: MixingEventSelector.h:246
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DEBUG
#define DEBUG
Definition: page_access.h:11
EventID
This class provides a unique identification for each event, in terms of run/event number and/or a tim...
Definition: EventID.h:35
MixingEventSelector::createAddress
virtual StatusCode createAddress(const IEvtSelector::Context &refCtxt, IOpaqueAddress *&) const override
Definition: MixingEventSelector.cxx:221
ClassID_traits::ID
static CLID ID()
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:44
StoreID::EVENT_STORE
@ EVENT_STORE
Definition: StoreID.h:26
PrepareReferenceFile.outfile
outfile
Definition: PrepareReferenceFile.py:42
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
MixingEventSelector::m_mergedEventInfoKey
Gaudi::Property< std::string > m_mergedEventInfoKey
Definition: MixingEventSelector.h:169
MixingEventSelector::validTrigger
bool validTrigger() const
Definition: MixingEventSelector.h:152
MixingEventSelector::m_outputRunNumber
Gaudi::Property< int > m_outputRunNumber
Definition: MixingEventSelector.h:163
MixingEventSelector::m_triggerListProp
Gaudi::Property< std::vector< std::string > > m_triggerListProp
Definition: MixingEventSelector.h:159