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 187 of file MixingEventSelector.h.

Constructor & Destructor Documentation

◆ Trigger()

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

Definition at line 387 of file MixingEventSelector.cxx.

389 :
390 m_pSelector(pSel), m_firstEvent(firstEvt),
391 m_toRead(lastEvt+1), m_todo(m_toRead-firstEvt), m_reads(0),
392 m_current(nullptr)
393 { }
IEvtSelector::Context * m_current

Member Function Documentation

◆ createAddress()

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

Definition at line 433 of file MixingEventSelector.cxx.

433 {
434 return (done() ?
435 StatusCode::FAILURE :
437}
StatusCode createAddress(IOpaqueAddress *&) const
IEvtSelector & selector() const
IEvtSelector::Context & currentContext() const

◆ createContext()

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

Definition at line 440 of file MixingEventSelector.cxx.

440 {
441 StatusCode sc(StatusCode::FAILURE);
442 if (!done()) {
443 sc = selector().createContext(pCtxt);
444 m_current = pCtxt;
445 }
446 return sc;
447}
static Double_t sc
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ currentContext()

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

Definition at line 395 of file MixingEventSelector.cxx.

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

◆ done()

bool MixingEventSelector::Trigger::done ( ) const

Definition at line 450 of file MixingEventSelector.cxx.

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

◆ name()

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

Definition at line 222 of file MixingEventSelector.h.

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

◆ next()

StatusCode MixingEventSelector::Trigger::next ( ) const

Definition at line 416 of file MixingEventSelector.cxx.

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

◆ operator!=()

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

Definition at line 214 of file MixingEventSelector.h.

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

◆ operator<()

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

Definition at line 217 of file MixingEventSelector.h.

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

◆ operator==()

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

Definition at line 211 of file MixingEventSelector.h.

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

◆ previous()

StatusCode MixingEventSelector::Trigger::previous ( ) const

Definition at line 428 of file MixingEventSelector.cxx.

428 {
429 return selector().previous(currentContext());
430}

◆ read()

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

Definition at line 203 of file MixingEventSelector.h.

203{ return m_reads; }

◆ selector()

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

Definition at line 229 of file MixingEventSelector.h.

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

◆ todo()

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

Definition at line 201 of file MixingEventSelector.h.

201{ return m_todo; }

◆ toRead()

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

Definition at line 202 of file MixingEventSelector.h.

202{ return m_toRead; }

◆ toString()

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

Definition at line 408 of file MixingEventSelector.cxx.

408 {
409 ostringstream os;
410 os << name() << ", already read=" << m_reads
411 << ", to do=" << todo() << endl;
412 return string(os.str());
413}

Member Data Documentation

◆ m_current

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

Definition at line 194 of file MixingEventSelector.h.

◆ m_firstEvent

unsigned int MixingEventSelector::Trigger::m_firstEvent
private

Definition at line 190 of file MixingEventSelector.h.

◆ m_pSelector

IEvtSelector* MixingEventSelector::Trigger::m_pSelector
private

Definition at line 189 of file MixingEventSelector.h.

◆ m_reads

unsigned int MixingEventSelector::Trigger::m_reads
mutableprivate

Definition at line 193 of file MixingEventSelector.h.

◆ m_todo

unsigned int MixingEventSelector::Trigger::m_todo
private

Definition at line 192 of file MixingEventSelector.h.

◆ m_toRead

unsigned int MixingEventSelector::Trigger::m_toRead
private

Definition at line 191 of file MixingEventSelector.h.


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