ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
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 168 of file MixingEventSelector.h.

Constructor & Destructor Documentation

◆ Trigger()

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

Definition at line 424 of file MixingEventSelector.cxx.

426  :
427  m_pSelector(pSel), m_firstEvent(firstEvt),
428  m_toRead(lastEvt+1), m_todo(m_toRead-firstEvt), m_reads(0),
429  m_current(nullptr)
430  { }

Member Function Documentation

◆ createAddress()

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

Definition at line 471 of file MixingEventSelector.cxx.

471  {
472  return (done() ?
473  StatusCode::FAILURE :
474  selector().createAddress(currentContext(), pIOA) );
475 }

◆ createContext()

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

Definition at line 478 of file MixingEventSelector.cxx.

478  {
479  StatusCode sc(StatusCode::FAILURE);
480  if (!done()) {
481  sc = selector().createContext(pCtxt);
482  m_current = pCtxt;
483  }
484  return sc;
485 }

◆ currentContext()

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

Definition at line 432 of file MixingEventSelector.cxx.

432  {
433  //make sure we have a context!
434  if (nullptr == m_current) {
435  IEvtSelector::Context* pTmp(nullptr);
436  if ((createContext(pTmp)).isFailure())
437  throw GaudiException("MixingEventSelector::Trigger::currentContext(): can't create context",
438  name(),StatusCode::FAILURE);
439  }
440  // cppcheck-suppress nullPointerRedundantCheck; false positive
441  // createContext() sets m_current
442  return *m_current;
443 }

◆ done()

bool MixingEventSelector::Trigger::done ( ) const

Definition at line 488 of file MixingEventSelector.cxx.

488  {
489  // cout << "calling done on Trigger " << this << " " << dynamic_cast<IService&>(selector()).name() << endl;
490  // cout << refCtxt << " " << selector().end() << endl;
491  // cout << toRead() << " " << m_reads << endl;
492  // cout << "done returns " << ((m_current && (currentContext() == *selector().end())) || (toRead() <= m_reads)) << endl;
493  return (toRead() <= m_reads);
494 }

◆ name()

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

Definition at line 203 of file MixingEventSelector.h.

203  {
204  return dynamic_cast<IService&>(selector()).name();
205  }

◆ next()

StatusCode MixingEventSelector::Trigger::next ( ) const

Definition at line 454 of file MixingEventSelector.cxx.

454  {
455  StatusCode sc(StatusCode::FAILURE);
456  if (!done()) {
457  sc= selector().next(currentContext());
458  while (sc.isSuccess() && (++m_reads < m_firstEvent))
459  sc = selector().next(currentContext());// m_reads, m_current are mutable
460  }
461  // cout << "calling next on Trigger " << this << " " << dynamic_cast<IService&>(selector()).name() << endl;
462  return sc;
463 }

◆ operator!=()

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

Definition at line 195 of file MixingEventSelector.h.

195  {
196  return ( m_pSelector != rhs.m_pSelector );
197  }

◆ operator<()

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

Definition at line 198 of file MixingEventSelector.h.

198  {
199  return ( m_todo < rhs.m_todo ||
200  ((m_todo == rhs.m_todo) && (m_pSelector < rhs.m_pSelector)) );
201  }

◆ operator==()

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

Definition at line 192 of file MixingEventSelector.h.

192  {
193  return ( m_pSelector == rhs.m_pSelector );
194  }

◆ previous()

StatusCode MixingEventSelector::Trigger::previous ( ) const

Definition at line 466 of file MixingEventSelector.cxx.

466  {
467  return selector().previous(currentContext());
468 }

◆ read()

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

Definition at line 184 of file MixingEventSelector.h.

184 { return m_reads; }

◆ selector()

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

Definition at line 210 of file MixingEventSelector.h.

210  {
211  assert( m_pSelector );
212  return *m_pSelector;
213  }

◆ todo()

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

Definition at line 182 of file MixingEventSelector.h.

182 { return m_todo; }

◆ toRead()

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

Definition at line 183 of file MixingEventSelector.h.

183 { return m_toRead; }

◆ toString()

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

Definition at line 446 of file MixingEventSelector.cxx.

446  {
447  ostringstream os;
448  os << name() << ", already read=" << m_reads
449  << ", to do=" << todo() << endl;
450  return string(os.str());
451 }

Member Data Documentation

◆ m_current

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

Definition at line 175 of file MixingEventSelector.h.

◆ m_firstEvent

unsigned int MixingEventSelector::Trigger::m_firstEvent
private

Definition at line 171 of file MixingEventSelector.h.

◆ m_pSelector

IEvtSelector* MixingEventSelector::Trigger::m_pSelector
private

Definition at line 170 of file MixingEventSelector.h.

◆ m_reads

unsigned int MixingEventSelector::Trigger::m_reads
mutableprivate

Definition at line 174 of file MixingEventSelector.h.

◆ m_todo

unsigned int MixingEventSelector::Trigger::m_todo
private

Definition at line 173 of file MixingEventSelector.h.

◆ m_toRead

unsigned int MixingEventSelector::Trigger::m_toRead
private

Definition at line 172 of file MixingEventSelector.h.


The documentation for this class was generated from the following files:
MixingEventSelector::Trigger::m_todo
unsigned int m_todo
Definition: MixingEventSelector.h:173
MixingEventSelector::Trigger::todo
unsigned int todo() const
Definition: MixingEventSelector.h:182
MixingEventSelector::Trigger::selector
IEvtSelector & selector() const
Definition: MixingEventSelector.h:210
MixingEventSelector::Trigger::m_pSelector
IEvtSelector * m_pSelector
Definition: MixingEventSelector.h:170
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
MixingEventSelector::Trigger::m_toRead
unsigned int m_toRead
Definition: MixingEventSelector.h:172
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
MixingEventSelector::Trigger::m_firstEvent
unsigned int m_firstEvent
Definition: MixingEventSelector.h:171
MixingEventSelector::Trigger::m_current
IEvtSelector::Context * m_current
Definition: MixingEventSelector.h:175
MixingEventSelector::Trigger::name
const std::string & name() const
Definition: MixingEventSelector.h:203
MixingEventSelector::Trigger::done
bool done() const
Definition: MixingEventSelector.cxx:488
MixingEventSelector::Trigger::toRead
unsigned int toRead() const
Definition: MixingEventSelector.h:183
MixingEventSelector::Trigger::m_reads
unsigned int m_reads
Definition: MixingEventSelector.h:174
MixingEventSelector::Trigger::createContext
StatusCode createContext(IEvtSelector::Context *&pCtxt) const
Definition: MixingEventSelector.cxx:478
MixingEventSelector::Trigger::currentContext
IEvtSelector::Context & currentContext() const
Definition: MixingEventSelector.cxx:432
MixingEventSelector::Trigger::createAddress
StatusCode createAddress(IOpaqueAddress *&) const
Definition: MixingEventSelector.cxx:471