ATLAS Offline Software
Classes | Public Types | Public Member Functions | 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 Types

typedef std::list< SG::TransientAddress * > tadList
 
typedef tadList::iterator tadListIterator
 

Public Member Functions

 DeclareInterfaceID (IAddressProvider, 1, 0)
 
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
 get all addresses from Provider : Called before Begin Event More...
 
virtual StatusCode loadAddresses (StoreID::type storeID, IAddressProvider::tadList &tads) override
 get all new addresses from Provider for this Event. More...
 
virtual StatusCode updateAddress (StoreID::type storeID, SG::TransientAddress *tad, const EventContext &ctx) override
 update a transient Address The ctx argument will give the current event information. More...
 
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
StringProperty m_statusFileName
 optional stream output snapshot More...
 
StringArrayProperty m_triggerListProp
 the recipe More...
 
IntegerProperty m_outputRunNumber
 
UnsignedLongArrayProperty m_eventNumbers
 use these as event numbers More...
 
StringProperty m_mergedEventInfoKey
 SG key of MergedEventInfo. More...
 
ToolHandleArray< IAthenaSelectorToolm_helperTools
 
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

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 
unsigned long m_eventPos
 the internal event number More...
 
StoreGateSvc_t m_pEventStore
 
ServiceHandle< IAtRndmGenSvcm_atRndmSvc
 
StringProperty m_randomStreamName
 
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 68 of file MixingEventSelector.h.

Member Typedef Documentation

◆ StoreGateSvc_t

Definition at line 257 of file MixingEventSelector.h.

◆ tadList

typedef std::list<SG::TransientAddress*> IAddressProvider::tadList
inherited

Definition at line 32 of file IAddressProvider.h.

◆ tadListIterator

typedef tadList::iterator IAddressProvider::tadListIterator
inherited

Definition at line 33 of file IAddressProvider.h.

Constructor & Destructor Documentation

◆ MixingEventSelector()

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

Definition at line 47 of file MixingEventSelector.cxx.

47  :
48  extends<AthService, IEvtSelector, IConverter>(name,svc),
49  m_helperTools(this),
51  m_eventPos(0),
52  m_pEventStore( "StoreGateSvc", name ),
53  m_atRndmSvc("AtRndmGenSvc", name),
54  m_randomStreamName("MixingEventSelectorStream"),
55  m_chooseRangeRand(nullptr)
56 {
57  declareProperty("TriggerList", m_triggerListProp,
58  "list of triggers (streams) to be used. Format is SelectorType/SelectorName:firstEventToUse:lastEventToUse. One assumes events are consecutively numbered.");
59  m_triggerListProp.declareUpdateHandler(&MixingEventSelector::setUpTriggerList, this);
60  declareProperty("OutputRunNumber", m_outputRunNumber=123456789);
61  declareProperty("EventNumbers", m_eventNumbers,
62  "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");
63  declareProperty("StreamStatusFileName", m_statusFileName=string(),
64  "Name of the file recording the last event used and how many were available for each stream. Default is to produce no file." ); //no out
65  declareProperty("MergedEventInfoKey",
66  m_mergedEventInfoKey=string("MergedEventInfo"),
67  "StoreGate key for output (merged) event info object. Default is MergedEventInfo ");
68  declareProperty("RndmGenSvc", m_atRndmSvc, "IAtRndmGenSvc controlling the order with which events are takes from streams");
69  declareProperty("RndmStreamName", m_randomStreamName, "IAtRndmGenSvc stream used as engine for our random distributions");
70  declareProperty("HelperTools", m_helperTools, "a collection of selector tools");
71 
72 }

◆ ~MixingEventSelector()

MixingEventSelector::~MixingEventSelector ( )
virtual

Definition at line 74 of file MixingEventSelector.cxx.

74  {
75 }

Member Function Documentation

◆ addressCreator()

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

Definition at line 590 of file MixingEventSelector.cxx.

591 {
592  std::abort();
593 }

◆ conversionSvc()

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

Definition at line 582 of file MixingEventSelector.cxx.

583 {
584  std::abort();
585 }

◆ createAddress()

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

Definition at line 258 of file MixingEventSelector.cxx.

259  {
260  pAddr=nullptr;
261  if (!validTrigger()) return StatusCode::FAILURE;
262 
264  return (currentTrigger()->createAddress(pAddr).isSuccess() &&
265  pAddr != nullptr) ? StatusCode::SUCCESS : StatusCode::FAILURE;
266 }

◆ createContext()

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

Definition at line 210 of file MixingEventSelector.cxx.

210  {
211  pctxt=nullptr;
212  if (!validTrigger()) return StatusCode::FAILURE;
214  StatusCode sc(StatusCode::FAILURE);
215  while (iTr != m_trigList.end() && (sc=(iTr++)->createContext(pctxt)).isSuccess()) ;
216  return sc;
217 }

◆ 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 543 of file MixingEventSelector.cxx.

545 {
546  const EventInfo* pEInfo(nullptr);
547  if (!(m_pEventStore->retrieve(pEInfo)).isSuccess()) {
549  ("addMergedEventInfo: event store does not contain "\
550  "an EventInfo object!");
551  return StatusCode::RECOVERABLE;
552  }
553 
554  // copy the original event to a new MergedEventInfo
555  auto mei = std::make_unique<MergedEventInfo> (*pEInfo,
557  getEventNo());
558  refpObject = SG::asStorable (std::move (mei));
559 
560 
561  //finally slam a new EventID in place of the old! HACK!!! FIXME!!
562  (const_cast<EventInfo*>(pEInfo))->setEventID(
564 
565  return StatusCode::SUCCESS;
566 }

◆ createRep()

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

Definition at line 606 of file MixingEventSelector.cxx.

607 {
608  std::abort();
609 }

◆ currentTrigger()

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

"intelligent" accessor to the above

Definition at line 336 of file MixingEventSelector.cxx.

336  {
338 }

◆ dataProvider()

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

Definition at line 574 of file MixingEventSelector.cxx.

575 {
576  std::abort();
577 }

◆ DeclareInterfaceID()

IAddressProvider::DeclareInterfaceID ( IAddressProvider  ,
,
 
)
inherited

◆ decodeTrigger()

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

functor that creates a Trigger object and adds it to m_trigList

Definition at line 138 of file MixingEventSelector.cxx.

138  {
139  //all this would be much more readable without error reporting...
140  typedef tokenizer<char_separator<char> > Tokenizer;
141  Tokenizer tokens(triggDescr, char_separator<char>(" :"));
142  //we need exactly three tokens: selector name, first and last event 2 B read
143  if ( (distance(tokens.begin(), tokens.end()) == 3) ||
144  (distance(tokens.begin(), tokens.end()) == 3) ){
145  Tokenizer::iterator iToken(tokens.begin());
146  try {
147  ListItem selTN(*iToken++);
148  const bool CREATEIF(true);
149  //get selector
150  IEvtSelector* pSelector(nullptr);
151  if ((serviceLocator()->service(selTN.type(), selTN.name(), pSelector, CREATEIF)).isSuccess()) {
152  //must be an address provider
153  if (nullptr != dynamic_cast<IEvtSelector*>(pSelector) ) {
154  //FIXME if (!pSelector.done()) {
155  //try to add to trig list
156  unsigned int firstEvt(boost::lexical_cast<unsigned int>(*iToken++));
157  unsigned int lastEvt(boost::lexical_cast<unsigned int>(*iToken));
158  if (m_trigList.add(Trigger(pSelector, firstEvt, lastEvt))) {
159  if (msgLvl(MSG::DEBUG)) {
160  INamedInterface *pNamed(dynamic_cast<INamedInterface*>(pSelector));
161  if (nullptr != pNamed) {
162  msg() << "decodeTrigger: added selector " << pNamed->name()
163  << " first event to be read " << firstEvt
164  << " last event to be read " << lastEvt << endmsg;
165  }
166  }
167  } else {
169  ("decodeTrigger: Selector ["
170  << selTN.type() << '/' << selTN.name()
171  << "] not added");
172  } //can add to range
173 // } else {
174 // log << MSG::ERROR << "decodeTrigger: Selector ["
175 // << selTN.type() << '/' << selTN.name()
176 // << "] is empty, not added" << endmsg;
177 // } //selector empty
178  } else {
180  ("decodeTrigger: Selector ["
181  << selTN.type() << '/' << selTN.name()
182  << "] not an IEvtSelector, not added");
183  } //is address provider
184  } else {
186  ("decodeTrigger: Selector ["
187  << selTN.type() << '/' << selTN.name()
188  << "] can not be found or created");
189  } //selector available
190  } catch (const boost::bad_lexical_cast& e) {
192  ("decodeTrigger: Can't cast ["<< *iToken
193  << "] to double(frequency). SKIPPING");
194  } //can cast to frequency
195  } else {
197  ("decodeTrigger: Badly formatted descriptor ["
198  << triggDescr << "]. SKIPPING");
199  } //can parse property string
200 }

◆ fillObjRefs()

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

Definition at line 594 of file MixingEventSelector.cxx.

595 {
596  std::abort();
597 }

◆ fillRepRefs()

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

Definition at line 610 of file MixingEventSelector.cxx.

611 {
612  std::abort();
613 }

◆ finalize()

StatusCode MixingEventSelector::finalize ( )
overridevirtual

Definition at line 103 of file MixingEventSelector.cxx.

103  {
104  ATH_MSG_DEBUG ("Finalizing " << name());
105 
106  StatusCode sc(StatusCode::SUCCESS);
107  std::vector<ToolHandle<IAthenaSelectorTool> >::iterator
108  i(m_helperTools.begin()), iE(m_helperTools.end());
109  while (i != iE) ((*i++)->preFinalize()).ignore();
110 
111  const std::string& fname(m_statusFileName.value());
112  ofstream outfile(fname.c_str());
113  if ( outfile ) {
116  while (i != iEnd) outfile << (*i++).toString();
117  } else if (!fname.empty()) {
118  ATH_MSG_WARNING("unable to open trigger list status file " << fname);
119  }
120 
121  m_helperTools.release().ignore();
122 
123  return sc;
124 
125 }

◆ getEventNo()

unsigned long MixingEventSelector::getEventNo ( ) const
private

setup and lookup m_evtsNotUsedSoFar. Returns next event no

Definition at line 305 of file MixingEventSelector.cxx.

305  {
306  return ( (m_eventNumbers.value().size() > m_eventPos) ?
307  m_eventNumbers.value()[m_eventPos] :
308  m_eventPos );
309 }

◆ initialize()

StatusCode MixingEventSelector::initialize ( )
overridevirtual

Definition at line 78 of file MixingEventSelector.cxx.

78  {
79  ATH_MSG_INFO ("Initializing " << name());
80 
81 // defer this (it triggers a init loop via PPS
82 // if (!m_pEventStore.retrieve().isSuccess())
83 // return StatusCode::FAILURE;
84 
85  //setup random stream
86  CLHEP::HepRandomEngine* collEng(m_atRndmSvc->GetEngine(m_randomStreamName.value()));
87  if(nullptr == collEng ) {
88  ATH_MSG_ERROR ("can not get random stream " << m_randomStreamName.value());
89  return StatusCode::FAILURE;
90  }
91  //flat distribution in [0,1] range
92  m_chooseRangeRand = new CLHEP::RandFlat(*(collEng), 0.0, 1.0);
93 
94  StatusCode sc= m_helperTools.retrieve();
95  std::vector<ToolHandle<IAthenaSelectorTool> >::iterator
96  i(m_helperTools.begin()), iE(m_helperTools.end());
97  while (sc.isSuccess() && (i != iE)) sc = (*i++)->postInitialize();
98 
99  return sc;
100 }

◆ last()

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

Definition at line 497 of file MixingEventSelector.cxx.

497  {
498  return StatusCode::FAILURE;
499 }

◆ loadAddresses()

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

get all new addresses from Provider for this Event.

Reimplemented from IAddressProvider.

Definition at line 275 of file MixingEventSelector.cxx.

277 {
278  if (storeID != StoreID::EVENT_STORE && storeID != StoreID::PILEUP_STORE)
279  return StatusCode::SUCCESS;
280 
282  if (!m_pEventStore->contains (mclid, m_mergedEventInfoKey)) {
283  // We create the DataProxy here rather than relying on ProxyProvideSvc
284  // to do it because we want to set a non-default dataloader on the proxy.
285  SG::TransientAddress tad (mclid,
287  new GenericAddress (0, mclid),
288  false);
289  auto dp = std::make_unique<SG::DataProxy> (std::move(tad),
290  this,
291  true);
292  ATH_CHECK( m_pEventStore->addToStore (mclid, dp.release()) );
293  }
294  return StatusCode::SUCCESS;
295 }

◆ next() [1/2]

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

Definition at line 500 of file MixingEventSelector.cxx.

500  {
501  return StatusCode::FAILURE;
502 }

◆ next() [2/2]

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

Definition at line 220 of file MixingEventSelector.cxx.

220  {
221  StatusCode sc(StatusCode::FAILURE);
222  do {
223 #ifdef DEBUG_OUTPUT_STATUS
226  while (i != iEnd) outfile2 << (*i++).toString(); //output status
227 #endif
229  sc = currentTrigger()->next();
230  if (sc.isFailure()){
232  continue; // we have to add "continue;" after "m_trigList.remove(m_pCurrentTrigger);
233  }
234  } while ((sc.isFailure() || currentTrigger()->done()) && !m_trigList.empty() );
235  // use !m_trigList.empty() to replace validTrigger(), which is not working well
236 
237  std::vector<ToolHandle<IAthenaSelectorTool> >::const_iterator
238  i(m_helperTools.begin()), iE(m_helperTools.end());
239  while (i != iE) ((*i++)->preNext()).ignore();
240 
241  ++m_eventPos;
242  FORWARD___DEBUG( next );
243 
244  i=m_helperTools.begin(); iE=m_helperTools.end();
245  while (sc.isSuccess() && (i != iE)) {
246  sc =(*i)->postNext();
247  if (sc.isRecoverable())
248  ATH_MSG_INFO("Request skipping event from: " << (*i)->name());
249  else if (sc.isFailure())
250  ATH_MSG_WARNING((*i)->name() << ":postNext failed");
251  ++i;
252  }
253  return sc;
254 }

◆ objType()

const CLID & MixingEventSelector::objType ( ) const
overridevirtual

Definition at line 522 of file MixingEventSelector.cxx.

523 {
525 }

◆ preLoadAddresses()

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

get all addresses from Provider : Called before Begin Event

Reimplemented from IAddressProvider.

Definition at line 269 of file MixingEventSelector.cxx.

270  {
271  return StatusCode::SUCCESS;
272 }

◆ previous() [1/2]

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

Definition at line 503 of file MixingEventSelector.cxx.

503  {
504  return StatusCode::FAILURE;
505 }

◆ previous() [2/2]

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

Definition at line 506 of file MixingEventSelector.cxx.

506  {
507  return StatusCode::FAILURE;
508 }

◆ releaseContext()

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

Definition at line 512 of file MixingEventSelector.cxx.

512  {
513  return StatusCode::FAILURE;
514 }

◆ repSvcType()

long MixingEventSelector::repSvcType ( ) const
overridevirtual

Definition at line 526 of file MixingEventSelector.cxx.

527 {
528  return 0;
529 }

◆ resetCriteria()

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

Definition at line 515 of file MixingEventSelector.cxx.

516  {
517  return StatusCode::FAILURE;
518 }

◆ rewind()

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

Definition at line 509 of file MixingEventSelector.cxx.

509  {
510  return StatusCode::FAILURE;
511 }

◆ setAddressCreator()

StatusCode MixingEventSelector::setAddressCreator ( IAddressCreator *  creator)
overridevirtual

Definition at line 586 of file MixingEventSelector.cxx.

587 {
588  std::abort();
589 }

◆ setConversionSvc()

StatusCode MixingEventSelector::setConversionSvc ( IConversionSvc *  pService)
overridevirtual

Definition at line 578 of file MixingEventSelector.cxx.

579 {
580  std::abort();
581 }

◆ setCurrentTrigger()

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

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

Definition at line 313 of file MixingEventSelector.cxx.

313  {
314  //we look for the first trigger which is not done
315  do {
316  //if called before initialize, choose the last trigger in list
317  unsigned int iTrig = (nullptr != m_chooseRangeRand) ?
318  (unsigned int)(m_chooseRangeRand->fire() * double(m_trigList.todo())) :
319  m_trigList.todo();
321  } while (validTrigger() && m_pCurrentTrigger->done() &&
322  m_trigList.remove(m_pCurrentTrigger)); //remove a done trigger
323 
324  //printouts
325  if (!validTrigger()) {
326  ATH_MSG_INFO ("setCurrentTrigger: end of input");
327  } else {
328  ATH_MSG_DEBUG ("setCurrentTrigger: now using selector "
329  << currentTrigger()->name());
330  }
331 
332  return m_pCurrentTrigger;
333 }

◆ setDataProvider()

StatusCode MixingEventSelector::setDataProvider ( IDataProviderSvc *  pService)
overridevirtual

Definition at line 570 of file MixingEventSelector.cxx.

571 {
572  std::abort();
573 }

◆ 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 129 of file MixingEventSelector.cxx.

129  {
130  using std::placeholders::_1;
131  m_trigList = TriggerList();
132  for_each(m_triggerListProp.value().begin(), m_triggerListProp.value().end(),
133  bind(&MixingEventSelector::decodeTrigger, this, _1));
135 }

◆ updateAddress()

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

update a transient Address The ctx argument will give the current event information.

If we're not dealing with an event store (conditions, etc), then the context will be empty (default-initialized).

Implements IAddressProvider.

Definition at line 298 of file MixingEventSelector.cxx.

299  {
300  return StatusCode::FAILURE;
301 }

◆ updateObj()

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

Definition at line 598 of file MixingEventSelector.cxx.

599 {
600  std::abort();
601 }

◆ updateObjRefs()

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

Definition at line 602 of file MixingEventSelector.cxx.

603 {
604  std::abort();
605 }

◆ updateRep()

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

Definition at line 614 of file MixingEventSelector.cxx.

615 {
616  std::abort();
617 }

◆ updateRepRefs()

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

Definition at line 618 of file MixingEventSelector.cxx.

619 {
620  std::abort();
621 }

◆ 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

Definition at line 259 of file MixingEventSelector.h.

◆ m_chooseRangeRand

CLHEP::RandFlat* MixingEventSelector::m_chooseRangeRand
private

Definition at line 261 of file MixingEventSelector.h.

◆ m_eventNumbers

UnsignedLongArrayProperty MixingEventSelector::m_eventNumbers
private

use these as event numbers

Definition at line 158 of file MixingEventSelector.h.

◆ m_eventPos

unsigned long MixingEventSelector::m_eventPos
mutableprivate

the internal event number

Definition at line 255 of file MixingEventSelector.h.

◆ m_helperTools

ToolHandleArray<IAthenaSelectorTool> MixingEventSelector::m_helperTools
private

Definition at line 160 of file MixingEventSelector.h.

◆ m_mergedEventInfoKey

StringProperty MixingEventSelector::m_mergedEventInfoKey
private

SG key of MergedEventInfo.

Definition at line 159 of file MixingEventSelector.h.

◆ m_outputRunNumber

IntegerProperty MixingEventSelector::m_outputRunNumber
private

Definition at line 157 of file MixingEventSelector.h.

◆ m_pCurrentTrigger

TriggerList::iterator MixingEventSelector::m_pCurrentTrigger
mutableprivate

the current trigger

Definition at line 247 of file MixingEventSelector.h.

◆ m_pEventStore

StoreGateSvc_t MixingEventSelector::m_pEventStore
mutableprivate

Definition at line 258 of file MixingEventSelector.h.

◆ m_randomStreamName

StringProperty MixingEventSelector::m_randomStreamName
private

Definition at line 260 of file MixingEventSelector.h.

◆ m_statusFileName

StringProperty MixingEventSelector::m_statusFileName
private

optional stream output snapshot

Definition at line 155 of file MixingEventSelector.h.

◆ m_triggerListProp

StringArrayProperty MixingEventSelector::m_triggerListProp
private

the recipe

Definition at line 156 of file MixingEventSelector.h.

◆ m_trigList

TriggerList MixingEventSelector::m_trigList
mutableprivate

the ingredients

Definition at line 241 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:247
TileDCSDataPlotter.dp
dp
Definition: TileDCSDataPlotter.py:840
MixingEventSelector::m_trigList
TriggerList m_trigList
the ingredients
Definition: MixingEventSelector.h:241
MixingEventSelector::m_atRndmSvc
ServiceHandle< IAtRndmGenSvc > m_atRndmSvc
Definition: MixingEventSelector.h:259
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MixingEventSelector::TriggerList::remove
bool remove(iterator)
Definition: MixingEventSelector.cxx:359
SG::TransientAddress
Definition: TransientAddress.h:32
SG::asStorable
DataObject * asStorable(T *pObject)
Definition: StorableConversions.h:158
MixingEventSelector::TriggerList::end
iterator end()
Definition: MixingEventSelector.h:232
MixingEventSelector::TriggerList::empty
bool empty() const
Definition: MixingEventSelector.h:235
MixingEventSelector::TriggerList::todo
unsigned int todo() const
Definition: MixingEventSelector.h:237
MixingEventSelector::m_triggerListProp
StringArrayProperty m_triggerListProp
the recipe
Definition: MixingEventSelector.h:156
beamspotman.tokens
tokens
Definition: beamspotman.py:1284
MixingEventSelector::next
virtual StatusCode next(IEvtSelector::Context &refCtxt) const override
Definition: MixingEventSelector.cxx:220
MixingEventSelector::currentTrigger
TriggerList::iterator currentTrigger() const
"intelligent" accessor to the above
Definition: MixingEventSelector.cxx:336
MixingEventSelector::getEventNo
unsigned long getEventNo() const
setup and lookup m_evtsNotUsedSoFar. Returns next event no
Definition: MixingEventSelector.cxx:305
MixingEventSelector::m_eventPos
unsigned long m_eventPos
the internal event number
Definition: MixingEventSelector.h:255
MixingEventSelector::m_outputRunNumber
IntegerProperty m_outputRunNumber
Definition: MixingEventSelector.h:157
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
MixingEventSelector::m_helperTools
ToolHandleArray< IAthenaSelectorTool > m_helperTools
Definition: MixingEventSelector.h:160
MixingEventSelector::TriggerList::elementInRange
iterator elementInRange(unsigned int)
Definition: MixingEventSelector.cxx:406
ClassID_traits::ID
static const CLID & ID()
the CLID of T
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:50
DiTauMassTools::ignore
void ignore(T &&)
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:54
MixingEventSelector::decodeTrigger
void decodeTrigger(std::string triggDescr)
functor that creates a Trigger object and adds it to m_trigList
Definition: MixingEventSelector.cxx:138
MixingEventSelector::TriggerList::iterator
std::vector< Trigger >::iterator iterator
Definition: MixingEventSelector.h:228
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
StoreID::PILEUP_STORE
@ PILEUP_STORE
Definition: StoreID.h:31
lumiFormat.i
int i
Definition: lumiFormat.py:92
CP::DetailSelectionExprParser::Tokenizer
boost::tokenizer< Separator > Tokenizer
Definition: SelectionExprParser.h:34
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
MixingEventSelector::m_eventNumbers
UnsignedLongArrayProperty m_eventNumbers
use these as event numbers
Definition: MixingEventSelector.h:158
FORWARD___DEBUG
#define FORWARD___DEBUG(METHOD)
Definition: MixingEventSelector.cxx:203
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MixingEventSelector::TriggerList::begin
iterator begin()
Definition: MixingEventSelector.h:231
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:313
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:128
MixingEventSelector::m_chooseRangeRand
CLHEP::RandFlat * m_chooseRangeRand
Definition: MixingEventSelector.h:261
MixingEventSelector::m_mergedEventInfoKey
StringProperty m_mergedEventInfoKey
SG key of MergedEventInfo.
Definition: MixingEventSelector.h:159
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
MixingEventSelector::setUpTriggerList
void setUpTriggerList(Gaudi::Details::PropertyBase &trigList)
TriggerList property call-back.
Definition: MixingEventSelector.cxx:129
MixingEventSelector::m_randomStreamName
StringProperty m_randomStreamName
Definition: MixingEventSelector.h:260
EventInfo
This class provides general information about an event. Event information is provided by the accessor...
Definition: EventInfo/EventInfo/EventInfo.h:42
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:67
MixingEventSelector::TriggerList::add
bool add(const Trigger &)
Definition: MixingEventSelector.cxx:341
MixingEventSelector::TriggerList::const_iterator
std::vector< Trigger >::const_iterator const_iterator
Definition: MixingEventSelector.h:227
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
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:258
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
StoreID::EVENT_STORE
@ EVENT_STORE
Definition: StoreID.h:26
MixingEventSelector::m_statusFileName
StringProperty m_statusFileName
optional stream output snapshot
Definition: MixingEventSelector.h:155
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::validTrigger
bool validTrigger() const
Definition: MixingEventSelector.h:152
MixingEventSelector::m_pEventStore
StoreGateSvc_t m_pEventStore
Definition: MixingEventSelector.h:258