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 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  { }

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 :
436  selector().createAddress(currentContext(), pIOA) );
437 }

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

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

◆ 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:
MixingEventSelector::Trigger::m_todo
unsigned int m_todo
Definition: MixingEventSelector.h:192
MixingEventSelector::Trigger::todo
unsigned int todo() const
Definition: MixingEventSelector.h:201
MixingEventSelector::Trigger::selector
IEvtSelector & selector() const
Definition: MixingEventSelector.h:229
MixingEventSelector::Trigger::m_pSelector
IEvtSelector * m_pSelector
Definition: MixingEventSelector.h:189
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
MixingEventSelector::Trigger::m_toRead
unsigned int m_toRead
Definition: MixingEventSelector.h:191
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:190
MixingEventSelector::Trigger::m_current
IEvtSelector::Context * m_current
Definition: MixingEventSelector.h:194
MixingEventSelector::Trigger::name
const std::string & name() const
Definition: MixingEventSelector.h:222
MixingEventSelector::Trigger::done
bool done() const
Definition: MixingEventSelector.cxx:450
MixingEventSelector::Trigger::toRead
unsigned int toRead() const
Definition: MixingEventSelector.h:202
MixingEventSelector::Trigger::m_reads
unsigned int m_reads
Definition: MixingEventSelector.h:193
MixingEventSelector::Trigger::createContext
StatusCode createContext(IEvtSelector::Context *&pCtxt) const
Definition: MixingEventSelector.cxx:440
MixingEventSelector::Trigger::currentContext
IEvtSelector::Context & currentContext() const
Definition: MixingEventSelector.cxx:395
MixingEventSelector::Trigger::createAddress
StatusCode createAddress(IOpaqueAddress *&) const
Definition: MixingEventSelector.cxx:433