ATLAS Offline Software
Loading...
Searching...
No Matches
MixingEventSelector::Trigger Class Reference

a selector with an associated frequency More...

Collaboration diagram for MixingEventSelector::Trigger:

Public Member Functions

 Trigger (IEvtSelector *pSel, unsigned int firstEvt, unsigned int lastEvt)
unsigned int todo () const
unsigned int toRead () const
unsigned int read () const
bool done () const
StatusCode next () const
StatusCode previous () const
StatusCode createAddress (IOpaqueAddress *&) const
StatusCode createContext (IEvtSelector::Context *&pCtxt) const
bool operator== (const Trigger &rhs) const
bool operator!= (const Trigger &rhs) const
bool operator< (const Trigger &rhs) const
const std::string & name () const
std::string toString () const

Private Member Functions

IEvtSelector::Context & currentContext () const
IEvtSelector & selector () const

Private Attributes

IEvtSelector * m_pSelector
unsigned int m_firstEvent
unsigned int m_toRead
unsigned int m_todo
unsigned int m_reads
IEvtSelector::Context * m_current

Detailed Description

a selector with an associated frequency

Definition at line 186 of file MixingEventSelector.h.

Constructor & Destructor Documentation

◆ Trigger()

MixingEventSelector::Trigger::Trigger ( IEvtSelector * pSel,
unsigned int firstEvt,
unsigned int lastEvt )

Definition at line 383 of file MixingEventSelector.cxx.

385 :
386 m_pSelector(pSel), m_firstEvent(firstEvt),
387 m_toRead(lastEvt+1), m_todo(m_toRead-firstEvt), m_reads(0),
388 m_current(nullptr)
389 { }
IEvtSelector::Context * m_current

Member Function Documentation

◆ createAddress()

StatusCode MixingEventSelector::Trigger::createAddress ( IOpaqueAddress *& pIOA) const

Definition at line 429 of file MixingEventSelector.cxx.

429 {
430 return (done() ?
431 StatusCode::FAILURE :
433}
StatusCode createAddress(IOpaqueAddress *&) const
IEvtSelector & selector() const
IEvtSelector::Context & currentContext() const

◆ createContext()

StatusCode MixingEventSelector::Trigger::createContext ( IEvtSelector::Context *& pCtxt) const

Definition at line 436 of file MixingEventSelector.cxx.

436 {
437 StatusCode sc(StatusCode::FAILURE);
438 if (!done()) {
439 sc = selector().createContext(pCtxt);
440 m_current = pCtxt;
441 }
442 return sc;
443}
static Double_t sc
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ currentContext()

IEvtSelector::Context & MixingEventSelector::Trigger::currentContext ( ) const
private

Definition at line 391 of file MixingEventSelector.cxx.

391 {
392 //make sure we have a context!
393 if (nullptr == m_current) {
394 IEvtSelector::Context* pTmp(nullptr);
395 if ((createContext(pTmp)).isFailure())
396 throw GaudiException("MixingEventSelector::Trigger::currentContext(): can't create context",
397 name(),StatusCode::FAILURE);
398 }
399 // cppcheck-suppress nullPointerRedundantCheck; createContext() sets m_current
400 return *m_current;
401}
StatusCode createContext(IEvtSelector::Context *&pCtxt) const
const std::string & name() const

◆ done()

bool MixingEventSelector::Trigger::done ( ) const

Definition at line 446 of file MixingEventSelector.cxx.

446 {
447 // cout << "calling done on Trigger " << this << " " << dynamic_cast<IService&>(selector()).name() << endl;
448 // cout << refCtxt << " " << selector().end() << endl;
449 // cout << toRead() << " " << m_reads << endl;
450 // cout << "done returns " << ((m_current && (currentContext() == *selector().end())) || (toRead() <= m_reads)) << endl;
451 return (toRead() <= m_reads);
452}

◆ name()

const std::string & MixingEventSelector::Trigger::name ( ) const
inline

Definition at line 221 of file MixingEventSelector.h.

221 {
222 return dynamic_cast<IService&>(selector()).name();
223 }

◆ next()

StatusCode MixingEventSelector::Trigger::next ( ) const

Definition at line 412 of file MixingEventSelector.cxx.

412 {
413 StatusCode sc(StatusCode::FAILURE);
414 if (!done()) {
415 sc= selector().next(currentContext());
416 while (sc.isSuccess() && (++m_reads < m_firstEvent))
417 sc = selector().next(currentContext());// m_reads, m_current are mutable
418 }
419 // cout << "calling next on Trigger " << this << " " << dynamic_cast<IService&>(selector()).name() << endl;
420 return sc;
421}

◆ operator!=()

bool MixingEventSelector::Trigger::operator!= ( const Trigger & rhs) const
inline

Definition at line 213 of file MixingEventSelector.h.

213 {
214 return ( m_pSelector != rhs.m_pSelector );
215 }

◆ operator<()

bool MixingEventSelector::Trigger::operator< ( const Trigger & rhs) const
inline

Definition at line 216 of file MixingEventSelector.h.

216 {
217 return ( m_todo < rhs.m_todo ||
218 ((m_todo == rhs.m_todo) && (m_pSelector < rhs.m_pSelector)) );
219 }

◆ operator==()

bool MixingEventSelector::Trigger::operator== ( const Trigger & rhs) const
inline

Definition at line 210 of file MixingEventSelector.h.

210 {
211 return ( m_pSelector == rhs.m_pSelector );
212 }

◆ previous()

StatusCode MixingEventSelector::Trigger::previous ( ) const

Definition at line 424 of file MixingEventSelector.cxx.

424 {
425 return selector().previous(currentContext());
426}

◆ read()

unsigned int MixingEventSelector::Trigger::read ( ) const
inline

Definition at line 202 of file MixingEventSelector.h.

202{ return m_reads; }

◆ selector()

IEvtSelector & MixingEventSelector::Trigger::selector ( ) const
inlineprivate

Definition at line 228 of file MixingEventSelector.h.

228 {
229 assert( m_pSelector );
230 return *m_pSelector;
231 }

◆ todo()

unsigned int MixingEventSelector::Trigger::todo ( ) const
inline

Definition at line 200 of file MixingEventSelector.h.

200{ return m_todo; }

◆ toRead()

unsigned int MixingEventSelector::Trigger::toRead ( ) const
inline

Definition at line 201 of file MixingEventSelector.h.

201{ return m_toRead; }

◆ toString()

std::string MixingEventSelector::Trigger::toString ( ) const

Definition at line 404 of file MixingEventSelector.cxx.

404 {
405 ostringstream os;
406 os << name() << ", already read=" << m_reads
407 << ", to do=" << todo() << endl;
408 return string(os.str());
409}
End of vector before end of string
Definition Arrayrep.cxx:228

Member Data Documentation

◆ m_current

IEvtSelector::Context* MixingEventSelector::Trigger::m_current
mutableprivate

Definition at line 193 of file MixingEventSelector.h.

◆ m_firstEvent

unsigned int MixingEventSelector::Trigger::m_firstEvent
private

Definition at line 189 of file MixingEventSelector.h.

◆ m_pSelector

IEvtSelector* MixingEventSelector::Trigger::m_pSelector
private

Definition at line 188 of file MixingEventSelector.h.

◆ m_reads

unsigned int MixingEventSelector::Trigger::m_reads
mutableprivate

Definition at line 192 of file MixingEventSelector.h.

◆ m_todo

unsigned int MixingEventSelector::Trigger::m_todo
private

Definition at line 191 of file MixingEventSelector.h.

◆ m_toRead

unsigned int MixingEventSelector::Trigger::m_toRead
private

Definition at line 190 of file MixingEventSelector.h.


The documentation for this class was generated from the following files: