ATLAS Offline Software
Loading...
Searching...
No Matches
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.
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.
void decodeTrigger (std::string triggDescr)
 functor that creates a Trigger object and adds it to m_trigList

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

trigger list management

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

event number management

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

structors

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

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}
TriggerList m_trigList
the ingredients
TriggerList::iterator m_pCurrentTrigger
the current trigger
ServiceHandle< StoreGateSvc > m_pEventStore

◆ ~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}
#define FORWARD___DEBUG(METHOD)
TriggerList::iterator currentTrigger() const
"intelligent" accessor to the above
virtual StatusCode createAddress(const IEvtSelector::Context &refCtxt, IOpaqueAddress *&) const override

◆ 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}
static Double_t sc
std::vector< Trigger >::iterator iterator
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ 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(
525 new EventID(m_outputRunNumber, getEventNo()));
526
527 return StatusCode::SUCCESS;
528}
#define ATH_MSG_ERROR(x)
Gaudi::Property< int > m_outputRunNumber
unsigned long getEventNo() const
setup and lookup m_evtsNotUsedSoFar. Returns next event no
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)
EventInfo_v1 EventInfo
Definition of the latest event info version.

◆ 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}
TriggerList::iterator setCurrentTrigger() const
choose current trigger at random. Actually modifies state (use mutables)

◆ 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}
#define endmsg
a selector with an associated frequency
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
boost::tokenizer< Separator > Tokenizer
MsgStream & msg
Definition testRead.cxx:32

◆ 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}
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
std::vector< Trigger >::const_iterator const_iterator
Gaudi::Property< std::string > m_statusFileName
ToolHandleArray< IAthenaSelectorTool > m_helperTools
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.

◆ 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}
Gaudi::Property< std::vector< unsigned long > > m_eventNumbers
unsigned long m_eventPos
the internal event number

◆ 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}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
Gaudi::Property< std::string > m_randomStreamName
ServiceHandle< IAtRndmGenSvc > m_atRndmSvc
std::unique_ptr< CLHEP::RandFlat > m_chooseRangeRand

◆ 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}
uint32_t CLID
The Class ID type.
Gaudi::Property< std::string > m_mergedEventInfoKey
@ EVENT_STORE
Definition StoreID.h:26
@ PILEUP_STORE
Definition StoreID.h:31

◆ 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;
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}
virtual StatusCode next(IEvtSelector::Context &refCtxt) const override

◆ 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();
283 m_pCurrentTrigger = m_trigList.elementInRange(iTrig);
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}
the list of available selectors with their frequency range
void decodeTrigger(std::string triggDescr)
functor that creates a Trigger object and adds it to m_trigList
Gaudi::Property< std::vector< std::string > > m_triggerListProp

◆ 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.

178 {this, "RndmGenSvc", "AtRndmGenSvc",
179 "IAtRndmGenSvc controlling the order with which events are takes from streams"};

◆ 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.

165 {this, "EventNumbers", {},
166 "List of event numbers to be used for output stream. If list empty or not long enough, event numbers are "
167 "assigned consucutively after last one in list."};

◆ m_eventPos

unsigned long MixingEventSelector::m_eventPos {0}
mutableprivate

the internal event number

Definition at line 274 of file MixingEventSelector.h.

274{0};

◆ m_helperTools

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

Definition at line 175 of file MixingEventSelector.h.

175 {this, "HelperTools", {},
176 "Collection of selector tools"};

◆ 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.

169 {this, "MergedEventInfoKey", "MergedEventInfo",
170 "StoreGate key for output (merged) event info object. Default is MergedEventInfo"};

◆ m_outputRunNumber

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

Definition at line 163 of file MixingEventSelector.h.

163{this, "OutputRunNumber", 123456789};

◆ 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.

172 {this, "RndmStreamName", "MixingEventSelectorStream",
173 "IAtRndmGenSvc stream used as engine for our random distributions"};

◆ 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.

156 {this, "StreamStatusFileName", {},
157 "Name of the file recording the last event used and how many were available for each stream. Default is to produce no file."};

◆ 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."}
void setUpTriggerList(Gaudi::Details::PropertyBase &trigList)
TriggerList property call-back.

Definition at line 159 of file MixingEventSelector.h.

159 {this, "TriggerList", {}, &MixingEventSelector::setUpTriggerList,
160 "List of triggers (streams) to be used. Format is SelectorType/SelectorName:firstEventToUse:lastEventToUse. "
161 "One assumes events are consecutively numbered."};

◆ 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: