Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
PyAthenaEventLoopMgr Class Reference

Implementation of the AthenaEventLoopMgr that allows selective and specific overrides in python. The idea is to maximize code-sharing with AthenaEventLoopMgr to reduce maintainance. More...

#include <PyAthenaEventLoopMgr.h>

Inheritance diagram for PyAthenaEventLoopMgr:
Collaboration diagram for PyAthenaEventLoopMgr:

Public Types

typedef IEvtSelector::Context EvtContext
 

Public Member Functions

 PyAthenaEventLoopMgr (const std::string &name, ISvcLocator *svcLoc)
 Standard Constructor. More...
 
 ~PyAthenaEventLoopMgr ()
 
PyObjectsetManager (PyObject *)
 actual manager object More...
 
PyObjectgetManager ()
 
virtual StatusCode initialize ()
 implementation of IAppMgrUI::initalize More...
 
virtual StatusCode finalize ()
 implementation of IAppMgrUI::finalize More...
 
virtual StatusCode nextEvent (int maxevt)
 implementation of IAppMgrUI::nextEvent. maxevt==0 returns immediately More...
 
virtual StatusCode executeEvent (EventContext &&ctx)
 implementation of IEventProcessor::executeEvent(EventContext&& ctx) More...
 
virtual StatusCode executeRun (int maxevt)
 implementation of IEventProcessor::executeRun(int maxevt) More...
 
virtual StatusCode seek (int evt)
 Seek to a given event. More...
 
virtual int curEvent () const
 Return the current event count. More...
 
virtual int size ()
 Return the size of the collection. More...
 
void handle (const Incident &inc)
 IIncidentListenet interfaces. More...
 
StatusCode execAtPreFork (const EventContext &ctx) const
 Execute certain algorithms/sequences in PreFork. More...
 
virtual const std::string & name () const
 
virtual void modifyEventContext (EventContext &ctx, const EventID &eID, bool consume_modifier_stream)
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

Static Public Member Functions

static PyAthenaEventLoopMgrpointer ()
 outside access More...
 

Protected Types

typedef ServiceHandle< IIncidentSvc > IIncidentSvc_t
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 
typedef ServiceHandle< IDataManagerSvc > IDataManagerSvc_t
 
typedef ServiceHandle< IConversionSvc > IConversionSvc_t
 
typedef ServiceHandle< IEvtIdModifierSvcIEvtIdModifierSvc_t
 
typedef EventID::number_type number_type
 
typedef IAthenaEvtLoopPreSelectTool tool_type
 
typedef ToolHandleArray< tool_typetool_store
 
typedef tool_store::const_iterator tool_iterator
 
typedef std::vector< unsigned int > tool_stats
 
typedef tool_stats::const_iterator tool_stats_iterator
 

Protected Member Functions

 PyAthenaEventLoopMgr ()
 Unimplemented features to keep Reflex happy. More...
 
 PyAthenaEventLoopMgr (const PyAthenaEventLoopMgr &)
 
PyAthenaEventLoopMgroperator= (const PyAthenaEventLoopMgr &)
 
virtual StatusCode executeAlgorithms (const EventContext &)
 Run the algorithms for the current event. More...
 
void setupPreSelectTools (Gaudi::Details::PropertyBase &)
 property update handler:sets up the Pre-selection tools More...
 
void setClearStorePolicy (Gaudi::Details::PropertyBase &clearStorePolicy)
 property update handler:set the clear-store policy value and check its value. More...
 
virtual StatusCode writeHistograms (bool force=false)
 Dump out histograms as needed. More...
 
StatusCode initializeAlgorithms ()
 Initialize all algorithms and output streams. More...
 
void setTimeout (Timeout &instance)
 Set timeout. More...
 
void resetTimeout (Timeout &instance)
 Reset timeout. More...
 

Protected Attributes

IIncidentSvc_t m_incidentSvc
 Reference to the incident service. More...
 
StoreGateSvc_t m_eventStore
 Reference to StoreGateSvc;. More...
 
IEvtSelector * m_evtSelector
 Reference to the Event Selector. More...
 
IEvtSelector::Context * m_evtSelCtxt
 Gaudi EventSelector Context (may be used as a cursor by the evt selector) More...
 
StringProperty m_evtsel
 
IDataManagerSvc_t m_histoDataMgrSvc
 Reference to the Histogram Data Service. More...
 
IConversionSvc_t m_histoPersSvc
 
IEvtIdModifierSvc_t m_evtIdModSvc
 
StringArrayProperty m_execAtPreFork
 
StringProperty m_histPersName
 
number_type m_currentRun
 current run number More...
 
bool m_firstRun
 
IntegerProperty m_failureMode
 
UnsignedIntegerProperty m_eventPrintoutInterval
 
tool_stats m_toolInvoke
 tool called counter More...
 
tool_stats m_toolReject
 tool returns StatusCode::FAILURE counter More...
 
tool_stats m_toolAccept
 tool returns StatusCode::SUCCESS counter More...
 
tool_store m_tools
 internal tool store More...
 
bool m_requireInputAttributeList {}
 require input attribute list More...
 
bool m_useSecondaryEventNumber {}
 read event number from secondary input More...
 
StringProperty m_clearStorePolicy
 
SmartIF< IAlgExecStateSvc > m_aess
 Reference to the Algorithm Execution State Svc. More...
 

Private Member Functions

StatusCode installEventContext (EventContext &ctx)
 
StoreGateSvceventStore () const
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

PyObjectm_manager
 
int m_nevt {}
 
IntegerProperty m_writeInterval
 
bool m_writeHists {}
 
unsigned int m_nev
 events processed More...
 
unsigned int m_proc
 
bool m_useTools
 
unsigned int m_lastNev {}
 
unsigned int m_intervalInSeconds
 
time_t m_lastTime {}
 
bool m_liteLoop
 
bool m_doChrono = false
 
ServiceHandle< IChronoStatSvc > m_chronoStatSvc
 
ServiceHandle< Athena::IConditionsCleanerSvcm_conditionsCleaner
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Detailed Description

Implementation of the AthenaEventLoopMgr that allows selective and specific overrides in python. The idea is to maximize code-sharing with AthenaEventLoopMgr to reduce maintainance.

Definition at line 34 of file PyAthenaEventLoopMgr.h.

Member Typedef Documentation

◆ EvtContext

typedef IEvtSelector::Context AthenaEventLoopMgr::EvtContext
inherited

Definition at line 65 of file AthenaEventLoopMgr.h.

◆ IConversionSvc_t

typedef ServiceHandle<IConversionSvc> AthenaEventLoopMgr::IConversionSvc_t
protectedinherited

Definition at line 87 of file AthenaEventLoopMgr.h.

◆ IDataManagerSvc_t

typedef ServiceHandle<IDataManagerSvc> AthenaEventLoopMgr::IDataManagerSvc_t
protectedinherited

Definition at line 83 of file AthenaEventLoopMgr.h.

◆ IEvtIdModifierSvc_t

Definition at line 91 of file AthenaEventLoopMgr.h.

◆ IIncidentSvc_t

typedef ServiceHandle<IIncidentSvc> AthenaEventLoopMgr::IIncidentSvc_t
protectedinherited

Definition at line 68 of file AthenaEventLoopMgr.h.

◆ number_type

Definition at line 101 of file AthenaEventLoopMgr.h.

◆ StoreGateSvc_t

Definition at line 72 of file AthenaEventLoopMgr.h.

◆ tool_iterator

typedef tool_store::const_iterator AthenaEventLoopMgr::tool_iterator
protectedinherited

Definition at line 115 of file AthenaEventLoopMgr.h.

◆ tool_stats

typedef std::vector<unsigned int> AthenaEventLoopMgr::tool_stats
protectedinherited

Definition at line 116 of file AthenaEventLoopMgr.h.

◆ tool_stats_iterator

typedef tool_stats::const_iterator AthenaEventLoopMgr::tool_stats_iterator
protectedinherited

Definition at line 117 of file AthenaEventLoopMgr.h.

◆ tool_store

typedef ToolHandleArray< tool_type > AthenaEventLoopMgr::tool_store
protectedinherited

Definition at line 114 of file AthenaEventLoopMgr.h.

◆ tool_type

Definition at line 113 of file AthenaEventLoopMgr.h.

Constructor & Destructor Documentation

◆ PyAthenaEventLoopMgr() [1/3]

PyAthenaEventLoopMgr::PyAthenaEventLoopMgr ( const std::string &  name,
ISvcLocator *  svcLoc 
)

Standard Constructor.

overrides the base-class default: for interactive use, it is mandatory to leave the store untouched at the end of the event (so people can interactively browse the store). Hence, we ask for store clean-up at the beginning of the event.

Definition at line 67 of file PyAthenaEventLoopMgr.cxx.

69  : AthenaEventLoopMgr( name, svcLoc ), m_manager( nullptr )
70 {
75  AthenaEventLoopMgr::m_clearStorePolicy.set( "BeginEvent" );
76 }

◆ ~PyAthenaEventLoopMgr()

PyAthenaEventLoopMgr::~PyAthenaEventLoopMgr ( )
inline

Definition at line 38 of file PyAthenaEventLoopMgr.h.

38 {}

◆ PyAthenaEventLoopMgr() [2/3]

PyAthenaEventLoopMgr::PyAthenaEventLoopMgr ( )
protected

Unimplemented features to keep Reflex happy.

◆ PyAthenaEventLoopMgr() [3/3]

PyAthenaEventLoopMgr::PyAthenaEventLoopMgr ( const PyAthenaEventLoopMgr )
protected

Member Function Documentation

◆ curEvent()

int AthenaEventLoopMgr::curEvent ( ) const
virtualinherited

Return the current event count.

Definition at line 879 of file AthenaEventLoopMgr.cxx.

880 {
881  return m_nevt;
882 }

◆ eventStore()

StoreGateSvc * AthenaEventLoopMgr::eventStore ( ) const
privateinherited

Definition at line 1007 of file AthenaEventLoopMgr.cxx.

1007  {
1008  return m_eventStore.get();
1009 }

◆ execAtPreFork()

StatusCode AthenaEventLoopMgr::execAtPreFork ( const EventContext &  ctx) const
inherited

Execute certain algorithms/sequences in PreFork.

Definition at line 990 of file AthenaEventLoopMgr.cxx.

990  {
991  IAlgManager* algMgr = Gaudi::svcLocator()->as<IAlgManager>();
992 
993  StatusCode sc;
994  for (const std::string& name : m_execAtPreFork) {
995  SmartIF<IAlgorithm>& alg = algMgr->algorithm(name, /*createIf*/false);
996  if ( alg ) {
997  ATH_MSG_INFO("Executing " << alg->name() << "...");
998  sc &= alg->sysExecute(ctx);
999  }
1000  else ATH_MSG_WARNING("Cannot find algorithm or sequence " << name);
1001  }
1002  return sc;
1003 }

◆ executeAlgorithms()

StatusCode PyAthenaEventLoopMgr::executeAlgorithms ( const EventContext &  ctx)
protectedvirtual

Run the algorithms for the current event.

Reimplemented from AthenaEventLoopMgr.

Definition at line 190 of file PyAthenaEventLoopMgr.cxx.

191 {
193 // forward to call to the python-side object
194  if ( m_manager != nullptr )
195  {
196  // forward call, if python side manager available
197  PyObject* pycontext = PyCapsule_New ( const_cast<EventContext*>(&ctx), nullptr, nullptr);
198  PyObject* result = PyObject_CallMethod( m_manager, execalgs,
199  (char*)"O", pycontext);
200  Py_DECREF (pycontext);
201 
202  if ( ! result )
203  {
204  PyErr_Print(); // should use MessageSvc instead
205  return StatusCode::FAILURE;
206  }
207 
208 #if PY_MAJOR_VERSION < 3
209  if ( PyInt_Check( result ) || PyLong_Check( result ) )
210  {
211  StatusCode sc = StatusCode( (int) PyInt_AS_LONG( result ) );
212  Py_DECREF( result );
213  return sc;
214  }
215 #else
216  if ( PyLong_Check( result ) )
217  {
218  StatusCode sc = StatusCode( (int) PyLong_AS_LONG( result ) );
219  Py_DECREF( result );
220  return sc;
221  }
222 #endif
223 
224  // FIXME: allow python result to be a statuscode
225  MsgStream log( msgSvc(), name() );
226  log << MSG::ERROR
227  << "result from python event loop manager has unexpected type."
228  << endmsg;
229  Py_DECREF( result );
230  return StatusCode::FAILURE;
231  }
232 
233 // otherwise, let base class handle it
235 }

◆ executeEvent()

StatusCode AthenaEventLoopMgr::executeEvent ( EventContext &&  ctx)
virtualinherited

implementation of IEventProcessor::executeEvent(EventContext&& ctx)

Fire begin-Run incident if new run:

m_failureMode 1, RECOVERABLE: skip algorithms, but do not terminate job FAILURE: terminate job

m_failureMode 2: skip algorithms, but do not terminate job

Definition at line 542 of file AthenaEventLoopMgr.cxx.

543 {
544  //This is a lightweight implementation of the executeEvent, used when e.g. processing TTrees with RootNtupleEventSelector
545  if(m_liteLoop) {
546  m_incidentSvc->fireIncident(Incident("BeginEvent",IncidentType::BeginEvent));
548  m_incidentSvc->fireIncident(Incident("EndEvent",IncidentType::EndEvent));
549  ++m_proc;
550  ++m_nev;
551  return sc;
552  }
553 
554  CHECK( installEventContext(ctx) );
555 
557  if (m_firstRun || (m_currentRun != ctx.eventID().run_number()) ) {
558  // Fire EndRun incident unless this is the first run
559  if (!m_firstRun) {
560  m_incidentSvc->fireIncident(Incident(name(),IncidentType::EndRun));
561  }
562  m_firstRun=false;
563  m_currentRun = ctx.eventID().run_number();
564 
565  ATH_MSG_INFO ( " ===>>> start of run " << m_currentRun << " <<<===" );
566 
567  m_incidentSvc->fireIncident(Incident(name(),IncidentType::BeginRun,ctx));
568  }
569 
570  bool toolsPassed=true;
571  bool eventFailed = false;
572  // Call any attached tools to reject events early
573  unsigned int toolCtr=0;
574  if(m_useTools) {
575  //note: pEvent cannot be nullptr here, it has already been dereferenced
576  tool_store::iterator theTool = m_tools.begin();
577  tool_store::iterator lastTool = m_tools.end();
578  while(toolsPassed && theTool!=lastTool )
579  {
580  toolsPassed = (*theTool)->passEvent(ctx.eventID());
581  m_toolInvoke[toolCtr]++;
582  {toolsPassed ? m_toolAccept[toolCtr]++ : m_toolReject[toolCtr]++;}
583  ++toolCtr;
584  ++theTool;
585  }
586  }
587 
588 
589  uint64_t evtNumber = ctx.eventID().event_number();
590  bool doEvtHeartbeat(m_eventPrintoutInterval.value() > 0 &&
591  ( (!m_intervalInSeconds && 0 == (m_nev % m_eventPrintoutInterval.value())) ||
593  if (doEvtHeartbeat) {
594  if(!m_useTools) {
595  ATH_MSG_INFO ( " ===>>> start processing event #" << evtNumber << ", run #" << m_currentRun << " " << m_nev << " events processed so far <<<===" );
596  if(m_intervalInSeconds) {
597  ATH_MSG_INFO(" ===>>> Event processing rate = " << double(m_nev-m_lastNev)/(time(nullptr)-m_lastTime) << " Hz <<<===");
598  m_lastNev = m_nev; m_lastTime = time(nullptr);
599  }
600  }
601 
602  else ATH_MSG_INFO ( " ===>>> start processing event #" << evtNumber << ", run #" << m_currentRun
603  << " " << m_nev << " events read and " << m_proc
604  << " events processed so far <<<===" );
605  }
606 
607  // Reset the timeout singleton
609  if(toolsPassed) {
610  // Fire BeginEvent "Incident"
611  //m_incidentSvc->fireIncident(Incident(*pEvent, name(),"BeginEvent"));
612 
613  // An incident may schedule a stop, in which case is better to exit before the actual execution.
614  if ( m_scheduledStop ) {
615  ATH_MSG_ALWAYS ( "A stopRun was requested by an incidentListener. "
616  << "Do not process this event." );
617  return (StatusCode::SUCCESS);
618  }
619 
620  CHECK( m_conditionsCleaner->event (ctx, false) );
621 
622  // Call the execute() method of all top algorithms
624 
625  if(!sc.isSuccess()) {
626  eventFailed = true;
627  m_aess->setEventStatus( EventStatus::AlgFail, ctx );
628 
632  if (m_failureMode == 1 && sc.isRecoverable() ) {
633  ATH_MSG_WARNING ( "RECOVERABLE error returned by algorithm. "
634  << "Skipping remaining algorithms." << std::endl
635  << "\tNo output will be written for this event, "
636  << "but job will continue to next event" );
637  eventFailed = false;
638  }
639 
641  if (m_failureMode >= 2) {
642  ATH_MSG_INFO ( "Skipping remaining algorithms." << std::endl
643  << "\tNo output will be written for this event, "
644  << "but job will continue to next event" );
645  eventFailed = false;
646  }
647 
648  } else {
649 
650  m_aess->setEventStatus( EventStatus::Success, ctx );
651 
652  // Call the execute() method of all output streams
653  for (ListAlg::iterator ito = m_outStreamList.begin();
654  ito != m_outStreamList.end(); ++ito ) {
655  sc = (*ito)->sysExecute(ctx);
656  if( !sc.isSuccess() ) {
657  eventFailed = true;
658  }
659  }
660 
661  writeHistograms().ignore();
662 
663  }
664 
665  // Fire EndEvent "Incident"
666  //m_incidentSvc->fireIncident(Incident(*pEvent, name(),"EndEvent"));
667  ++m_proc;
668  } // end of toolsPassed test
669  ++m_nev;
670  if (doEvtHeartbeat) {
671  if(!m_intervalInSeconds) {
672  if (!m_useTools)
673  ATH_MSG_INFO(" ===>>> done processing event #" << evtNumber << ", run #" << m_currentRun
674  << " " << m_nev << " events processed so far <<<===");
675  else
676  ATH_MSG_INFO(" ===>>> done processing event #" << evtNumber << ", run #" << m_currentRun
677  << " " << m_nev << " events read and " << m_proc
678  << " events processed so far <<<===");
679  }
680  std::ofstream outfile( "eventLoopHeartBeat.txt");
681  if ( !outfile ) {
682  ATH_MSG_ERROR ( " unable to open: eventLoopHeartBeat.txt" );
683  } else {
684  outfile << " done processing event #" << evtNumber << ", run #" << m_currentRun
685  << " " << m_nev << " events read so far <<<===" << std::endl;
686  outfile.close();
687  }
688 
689  }
690 
691  //------------------------------------------------------------------------
692  // Check if there was an error processing current event
693  //------------------------------------------------------------------------
694  return eventFailed?StatusCode::FAILURE:StatusCode::SUCCESS;
695 
696 }

◆ executeRun()

StatusCode AthenaEventLoopMgr::executeRun ( int  maxevt)
virtualinherited

implementation of IEventProcessor::executeRun(int maxevt)

Definition at line 701 of file AthenaEventLoopMgr.cxx.

702 {
703  if (!(this->nextEvent(maxevt)).isSuccess()) return StatusCode::FAILURE;
704  m_incidentSvc->fireIncident(Incident(name(),"EndEvtLoop"));
705  m_incidentSvc->fireIncident(Incident(name(),IncidentType::EndRun));
706 
707  return StatusCode::SUCCESS;
708 }

◆ finalize()

StatusCode PyAthenaEventLoopMgr::finalize ( )
virtual

implementation of IAppMgrUI::finalize

Reimplemented from AthenaEventLoopMgr.

Definition at line 241 of file PyAthenaEventLoopMgr.cxx.

242 {
244  Py_XDECREF( m_manager );
245 
246  return this->AthenaEventLoopMgr::finalize();
247 }

◆ getManager()

PyObject * PyAthenaEventLoopMgr::getManager ( )

Definition at line 128 of file PyAthenaEventLoopMgr.cxx.

129 {
131  if ( ! m_manager )
132  {
133  Py_INCREF( Py_None );
134  return Py_None;
135  }
136 
137  Py_INCREF( m_manager );
138  return m_manager;
139 }

◆ handle()

void AthenaEventLoopMgr::handle ( const Incident &  inc)
inherited

IIncidentListenet interfaces.

Definition at line 909 of file AthenaEventLoopMgr.cxx.

910 {
911  if(inc.type()!="BeforeFork")
912  return;
913 
914  if(!m_firstRun) {
915  ATH_MSG_WARNING ( "Skipping BeforeFork handler. Begin run has already passed" );
916  return;
917  }
918 
919  // Initialize Algorithms and Output Streams
921  if(sc.isFailure()) {
922  ATH_MSG_ERROR ( "Failed to initialize Algorithms" );
923  return;
924  }
925 
926  if(!m_evtSelCtxt) {
927  ATH_MSG_WARNING ( "Skipping BeforeFork handler. No event selector is provided" );
928  return;
929  }
930 
931  // Construct EventInfo
932  IOpaqueAddress* addr = nullptr;
933  sc = m_evtSelector->next(*m_evtSelCtxt);
934  if(!sc.isSuccess()) {
935  ATH_MSG_INFO ( "No more events in event selection " );
936  return;
937  }
938  sc = m_evtSelector->createAddress(*m_evtSelCtxt, addr);
939  if (sc.isFailure()) {
940  ATH_MSG_ERROR ( "Could not create an IOpaqueAddress" );
941  return;
942  }
943  if (nullptr != addr) {
944  //create its proxy
945  sc = eventStore()->recordAddress(addr);
946  if(!sc.isSuccess()) {
947  ATH_MSG_ERROR ( "Error declaring Event object" );
948  return;
949  }
950  }
951 
952  if(eventStore()->loadEventProxies().isFailure()) {
953  ATH_MSG_WARNING ( "Error loading Event proxies" );
954  return;
955  }
956 
957  // Need to make sure we have a valid EventContext in place before
958  // doing anything that could fire incidents.
959  EventContext ctx;
960  // In the case of the BeginRun incident, we just want to take the
961  // next IoV from the list in the EvtIdModifierSvc, but leave it to
962  // be used for the next executeEvent call. TODO CHECK
963  if( installEventContext(ctx).isFailure() ) {
964  throw std::runtime_error( "Error installing event context object" );
965  }
966 
967  m_incidentSvc->fireIncident(Incident(name(),IncidentType::BeginRun,ctx));
968  m_firstRun=false;
969  m_currentRun = ctx.eventID().run_number();
970 
971  // Execute requested algorithms/sequences
972  if ( execAtPreFork(ctx).isFailure() ) {
973  ATH_MSG_ERROR ( "Unable to execute requested algorithms/sequences during PreFork!" );
974  return;
975  }
976 
977  // Clear Store
978  const ClearStorePolicy::Type s_clearStore = clearStorePolicy( m_clearStorePolicy.value(), msgStream() );
979  if(s_clearStore==ClearStorePolicy::EndEvent) {
980  sc = eventStore()->clearStore();
981  if(!sc.isSuccess()) {
982  ATH_MSG_ERROR ( "Clear of Event data store failed" );
983  }
984  }
985 }

◆ initialize()

StatusCode PyAthenaEventLoopMgr::initialize ( )
virtual

implementation of IAppMgrUI::initalize

Reimplemented from AthenaEventLoopMgr.

Definition at line 145 of file PyAthenaEventLoopMgr.cxx.

146 {
148 // get the PyAthenaEventLoopMgr python-side class
149  PyObject* modpyelm = PyImport_ImportModule( const_cast< char* >( "AthenaServices.PyAthenaEventLoopMgr" ) );
150  if ( modpyelm ) {
151 
152  PyObject* pyelm = PyObject_GetAttrString( modpyelm, const_cast< char* >( "PyAthenaEventLoopMgr" ) );
153  Py_DECREF( modpyelm );
154 
155  if ( pyelm ) {
156  PyObject* args = PyTuple_New( 0 );
157  PyObject* self = PyObject_Call( pyelm, args, nullptr );
158  Py_DECREF( args );
159  Py_DECREF( pyelm );
160 
161  if ( self ) {
162  // initialize base class, which then allows queryInterface as appropriate
164 
165  // set the interfaces on the python-side manager
166  PyObject* result = setManager( self );
167  Py_DECREF( self );
168 
169  if ( ! result ) {
170  PyErr_Print();
171  sc.ignore();
172  return StatusCode::FAILURE;
173  }
174 
175  return sc;
176  }
177 
178  }
179 
180  }
181 
182  PyErr_Print();
183  return StatusCode::FAILURE;
184 }

◆ initializeAlgorithms()

StatusCode AthenaEventLoopMgr::initializeAlgorithms ( )
protectedinherited

Initialize all algorithms and output streams.

Definition at line 481 of file AthenaEventLoopMgr.cxx.

481  {
482 
483  // Initialize the list of Algorithms. Note that existing Algorithms
484  // are protected against multiple initialization attempts.
485  ListAlg::iterator ita;
486  for ( ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ++ita )
487  {
488  StatusCode sc = (*ita)->sysInitialize();
489  if( sc.isFailure() )
490  {
491  ATH_MSG_ERROR ( "Unable to initialize Algorithm: "
492  << (*ita)->name() );
493  return sc;
494  }
495  }
496 
497  // Initialize the list of Output Streams. Note that existing Output Streams
498  // are protected against multiple initialization attempts.
499  for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ++ita )
500  {
501  StatusCode sc = (*ita)->sysInitialize();
502  if( sc.isFailure() ) {
503  ATH_MSG_ERROR ( "Unable to initialize Output Stream: "
504  << (*ita)->name() );
505  return sc;
506  }
507 
508  }
509 
510  return StatusCode::SUCCESS;
511 }

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40 {
42  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ installEventContext()

StatusCode AthenaEventLoopMgr::installEventContext ( EventContext &  ctx)
privateinherited

Definition at line 1015 of file AthenaEventLoopMgr.cxx.

1015  {
1016  // first get EventInfo and conditionsRun
1017  std::unique_ptr<EventInfo> eventInfo;
1018  EventID eventID;
1019  unsigned int conditionsRun = EventIDBase::UNDEFNUM;
1020  bool consume_modifier_stream = false; // FIXME/CHECK: was true inside TP converter and checks for active storegate
1021 
1022  if (m_evtSelCtxt) { // Deal with the case when an EventSelector is provided
1023  // First try to build a legacy EventInfo object from the TAG information
1024  // Read the attribute list
1025  const AthenaAttributeList* pAttrList =
1027  if (pAttrList != nullptr && pAttrList->size() > 6) {
1028  // Try making EventID-only EventInfo object from in-file TAG
1029  try {
1030  unsigned int runNumber = (*pAttrList)["RunNumber"].data<unsigned int>();
1031  unsigned long long eventNumber = (*pAttrList)["EventNumber"].data<unsigned long long>();
1032  unsigned int eventTime = (*pAttrList)["EventTime"].data<unsigned int>();
1033  unsigned int eventTimeNS = (*pAttrList)["EventTimeNanoSec"].data<unsigned int>();
1034  unsigned int lumiBlock = (*pAttrList)["LumiBlockN"].data<unsigned int>();
1035  unsigned int bunchId = (*pAttrList)["BunchId"].data<unsigned int>();
1036 
1037  ATH_MSG_DEBUG("use TAG with runNumber=" << runNumber);
1038  consume_modifier_stream = true;
1039  // an option to override primary eventNumber with the secondary one in
1040  // case of DoubleEventSelector
1042  unsigned long long eventNumberSecondary{};
1043  if (!(pAttrList->exists("hasSecondaryInput") &&
1044  (*pAttrList)["hasSecondaryInput"].data<bool>())) {
1045  ATH_MSG_FATAL("Secondary EventNumber requested, but secondary input does not exist!");
1046  return StatusCode::FAILURE;
1047  }
1048  if (pAttrList->exists("EventNumber_secondary")) {
1049  eventNumberSecondary = (*pAttrList)["EventNumber_secondary"].data<unsigned long long>();
1050  } else {
1051  // try legacy EventInfo if secondary input did not have attribute
1052  // list primary input should not have this EventInfo type
1053  const EventInfo* pEventSecondary = eventStore()->tryConstRetrieve<EventInfo>();
1054  if (pEventSecondary) {
1055  eventNumberSecondary = pEventSecondary->event_ID()->event_number();
1056  } else {
1057  ATH_MSG_FATAL("Secondary EventNumber requested, but it does not exist!");
1058  return StatusCode::FAILURE;
1059  }
1060  }
1061  if (eventNumberSecondary != 0) {
1062  bool doEvtHeartbeat(m_eventPrintoutInterval.value() > 0 &&
1063  0 == (m_nev % m_eventPrintoutInterval.value()));
1064  if (doEvtHeartbeat) {
1065  ATH_MSG_INFO(" ===>>> using secondary event #"
1066  << eventNumberSecondary << " instead of #"
1067  << eventNumber << " <<<===");
1068  }
1069  eventNumber = eventNumberSecondary;
1070  }
1071  }
1072 
1073  eventInfo = std::make_unique<EventInfo>(
1074  std::make_unique<EventID>(runNumber, eventNumber, eventTime,
1075  eventTimeNS, lumiBlock, bunchId),
1076  nullptr);
1077  eventID = *(eventInfo->event_ID());
1078 
1079  if (!m_evtIdModSvc.isSet() && pAttrList->exists("ConditionsRun")) {
1080  conditionsRun = (*pAttrList)["ConditionsRun"].data<unsigned int>();
1081  } else {
1082  conditionsRun = runNumber;
1083  }
1084 
1085  } catch (...) {
1086  }
1087  /* FIXME: PvG, not currently written
1088  if( pEvent != 0 && pAttrList->size() > 7 ) {
1089  // Try adding EventType information
1090  try {
1091  float eventWeight = (*pAttrList)["EventWeight"].data<float>();
1092  const EventType* pType = new EventType(); pEvent->setEventType(pType);
1093  pEvent->event_type()->set_mc_event_weight(eventWeight);
1094  } catch (...) {
1095  pEvent->setEventType(0);
1096  }
1097  }
1098  */
1099  } else if (m_requireInputAttributeList) {
1100  ATH_MSG_FATAL("Valid input attribute list required but not present!");
1101  return StatusCode::FAILURE;
1102  }
1103  // In the case that there is no TAG information
1104  if( !eventInfo ) {
1105  // Secondly try to retrieve a legacy EventInfo object from the input file
1106  // m_nevt - 1 because it's incremented early
1108  const EventInfo* pei = eventStore()->tryConstRetrieve<EventInfo>();
1109  if( pei ) {
1110  eventID = *(pei->event_ID());
1111  } else {
1112  // Finally try to retrieve an xAOD::EventInfo object from the
1113  // input file and build a legacy EventInfo object from that.
1115  if (xAODEvent == nullptr) {
1116  ATH_MSG_ERROR("Failed to get EventID from input. Tried old-style and xAOD::EventInfo");
1117  return StatusCode::FAILURE;
1118  }
1119  ATH_MSG_DEBUG("use xAOD::EventInfo with runNumber=" << xAODEvent->runNumber());
1120  // Record the old-style object for those clients that still need it
1121  eventInfo = std::make_unique<EventInfo>(
1122  std::make_unique<EventID>(eventIDFromxAOD(xAODEvent)),
1123  std::make_unique<EventType>(eventTypeFromxAOD(xAODEvent)));
1124  eventID = *(eventInfo->event_ID());
1125  StatusCode sc = eventStore()->record(std::move(eventInfo), "");
1126  if (!sc.isSuccess()) {
1127  ATH_MSG_ERROR("Error declaring event data object");
1128  return StatusCode::FAILURE;
1129  }
1130  }
1131  }
1132  } else {
1133  // No EventSelector is provided, so with no iterator it's up to us
1134  // to create an EventInfo
1135  eventInfo = std::make_unique<EventInfo>(
1136  std::make_unique<EventID>(1, m_nevt, 0), std::make_unique<EventType>());
1137  eventInfo->event_ID()->set_lumi_block(m_nevt);
1138  eventID = *(eventInfo->event_ID());
1139  StatusCode sc = eventStore()->record(std::move(eventInfo), "");
1140  if (!sc.isSuccess()) {
1141  ATH_MSG_ERROR("Error declaring event data object");
1142  return (StatusCode::FAILURE);
1143  }
1144  }
1145 
1146  ctx.setEventID( eventID );
1147  ctx.set(m_nev,0);
1149  Atlas::ExtendedEventContext( eventStore()->hiveProxyDict(),
1150  conditionsRun) );
1151  modifyEventContext(ctx, eventID, consume_modifier_stream);
1152  Gaudi::Hive::setCurrentContext( ctx );
1153 
1154  m_aess->reset( ctx );
1155  if (eventStore()->record(std::make_unique<EventContext> ( ctx ),
1156  "EventContext").isFailure())
1157  {
1158  ATH_MSG_ERROR ( "Error recording event context object" );
1159  return (StatusCode::FAILURE);
1160  }
1161 
1162  return StatusCode::SUCCESS;
1163 }

◆ modifyEventContext()

void AthenaEventLoopMgr::modifyEventContext ( EventContext &  ctx,
const EventID eID,
bool  consume_modifier_stream 
)
virtualinherited

Definition at line 1167 of file AthenaEventLoopMgr.cxx.

1167  {
1168  if (m_evtIdModSvc.isSet()) {
1169  EventID new_eID(eID);
1170  // m_nevt - 1 because it's incremented early
1171  m_evtIdModSvc->modify_evtid(new_eID, m_nevt - 1, consume_modifier_stream);
1172  if (msgLevel(MSG::DEBUG)) {
1173  unsigned int oldrunnr=eID.run_number();
1174  unsigned int oldLB=eID.lumi_block();
1175  unsigned int oldTS=eID.time_stamp();
1176  unsigned int oldTSno=eID.time_stamp_ns_offset();
1177  ATH_MSG_DEBUG ( "modifyEventContext: use evtIdModSvc runnr=" << oldrunnr << " -> " << new_eID.run_number() );
1178  ATH_MSG_DEBUG ( "modifyEventContext: use evtIdModSvc LB=" << oldLB << " -> " << new_eID.lumi_block() );
1179  ATH_MSG_DEBUG ( "modifyEventContext: use evtIdModSvc TimeStamp=" << oldTS << " -> " << new_eID.time_stamp() );
1180  ATH_MSG_DEBUG ( "modifyEventContext: use evtIdModSvc TimeStamp ns Offset=" << oldTSno << " -> " << new_eID.time_stamp_ns_offset() );
1181  }
1182  ctx.setEventID( new_eID );
1183  Atlas::getExtendedEventContext(ctx).setConditionsRun( ctx.eventID().run_number() );
1184  return;
1185  }
1186 
1187  ctx.setEventID( eID );
1188 }

◆ msg() [1/4]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [2/4]

MsgStream & AthMessaging::msg
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 92 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [3/4]

MsgStream & AthMessaging::msg ( const MSG::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msg() [4/4]

MsgStream & AthMessaging::msg
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 99 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msgLvl() [1/2]

bool AthMessaging::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ msgLvl() [2/2]

bool AthMessaging::msgLvl
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 86 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ name()

virtual const std::string& AthenaEventLoopMgr::name ( ) const
inlinevirtualinherited

Definition at line 185 of file AthenaEventLoopMgr.h.

185 { return Service::name(); } //FIXME

◆ nextEvent()

StatusCode AthenaEventLoopMgr::nextEvent ( int  maxevt)
virtualinherited

implementation of IAppMgrUI::nextEvent. maxevt==0 returns immediately

Reimplemented in MultipleEventLoopMgr.

Definition at line 713 of file AthenaEventLoopMgr.cxx.

714 {
715  // make nextEvent(0) a dummy call
716  if (0 == maxevt) return StatusCode::SUCCESS;
717 
718  static std::atomic<int> total_nevt = 0;
719 
720  // the current 'clear-store' policy
721  static const ClearStorePolicy::Type s_clearStore =
722  clearStorePolicy( m_clearStorePolicy.value(), msgStream() );
723 
724 
725  // These following two initialization loops are performed here in case new
726  // Top level Algorithms or Output Streams have been created interactively
727  // at run-time instead of configuration time. Note also that it is possible
728  // that some newly created Algorithms are still not initialized as a result
729  // of these loops (e.g. where the membership of an existing Sequencer is
730  // changed at run-time. In this case, the Algorithm::sysExecute() function
731  // will ensure that the Algorithm is correctly initialized. This mechanism
732  // actually makes loops redundant, but they do provide a well defined
733  // location for the initialization to take place in the non-interactive case.
734 
736  if(sc.isFailure())
737  return sc;
738 
739  // loop over events if the maxevt (received as input) is different from -1.
740  // if evtmax is -1 it means infinite loop
741 
742  while(maxevt == -1 || m_nevt < maxevt) {
743 
744  if(m_doChrono && total_nevt>0) m_chronoStatSvc->chronoStart("EventLoopMgr"); //start after first event
745  if(m_doChrono && total_nevt>0) m_chronoStatSvc->chronoStart("EventLoopMgr_preexec");
746 
747  // Check if there is a scheduled stop issued by some algorithm/sevice
748  if ( m_scheduledStop ) {
749  m_scheduledStop = false;
750  ATH_MSG_ALWAYS ( "A stopRun was requested. Terminating event loop." );
751  break;
752  }
753 
754 
755 
756  ++m_nevt; ++total_nevt;
757  //-----------------------------------------------------------------------
758  // Clear the event store, if used in the event loop
759  //-----------------------------------------------------------------------
760  if( s_clearStore == ClearStorePolicy::BeginEvent &&
761  0 != total_nevt ) {
762  sc = eventStore()->clearStore();
763  if( !sc.isSuccess() ) {
764  ATH_MSG_ERROR ( "Clear of Event data store failed" );
765  m_incidentSvc->fireIncident(Incident(name(),"EndEvtLoop"));
766  return sc;
767  }
768  }
769 
770 
771 
772  //-----------------------------------------------------------------------
773  // we need an EventInfo Object to fire the incidents.
774  //-----------------------------------------------------------------------
775  if ( m_evtSelCtxt )
776  { // Deal with the case when an EventSelector is provided
777 
778  IOpaqueAddress* addr = nullptr;
779 
780  sc = m_evtSelector->next(*m_evtSelCtxt);
781 
782  if ( !sc.isSuccess() )
783  {
784  // This is the end of the loop. No more events in the selection
785  ATH_MSG_INFO ( "No more events in event selection " );
786  sc = StatusCode::SUCCESS;
787  break;
788  }
789 
790  if (m_evtSelector->createAddress(*m_evtSelCtxt, addr).isFailure()) {
791  ATH_MSG_ERROR ( "Could not create an IOpaqueAddress" );
792  break;
793  }
794 
795 
796  // Most iterators provide the IOA of an event header (EventInfo, DataHeader)
797  if (nullptr != addr) {
798  //create its proxy
799  sc = eventStore()->recordAddress(addr);
800  if( !sc.isSuccess() ) {
801  ATH_MSG_WARNING ( "Error declaring Event object" );
802  continue;
803  }
804  }
805  if ((sc=eventStore()->loadEventProxies()).isFailure()) {
806  ATH_MSG_ERROR ( "Error loading Event proxies" );
807  continue;
808  }
809  }
810  if(m_doChrono && total_nevt>1) m_chronoStatSvc->chronoStop("EventLoopMgr_preexec");
811  if(m_doChrono && total_nevt>1) m_chronoStatSvc->chronoStart("EventLoopMgr_execute");
812  // create an empty EventContext that will get set inside executeEvent
813  EventContext ctx;
814  // Execute event for all required algorithms
815  sc = executeEvent( std::move( ctx ) );
816  if(m_doChrono && total_nevt>1) m_chronoStatSvc->chronoStop("EventLoopMgr_execute");
817  if(m_doChrono && total_nevt>1) m_chronoStatSvc->chronoStart("EventLoopMgr_postexec");
818  if( !sc.isSuccess() )
819  {
820  ATH_MSG_ERROR ( "Terminating event processing loop due to errors" );
821  break;
822  }
823 
824  //-----------------------------------------------------------------------
825  // Clear the event store, if used in the event loop
826  //-----------------------------------------------------------------------
827  if ( s_clearStore == ClearStorePolicy::EndEvent ) {
828  sc = eventStore()->clearStore();
829  if( !sc.isSuccess() ) {
830  ATH_MSG_ERROR ( "Clear of Event data store failed" );
831  break;
832  }
833  }
834  if(m_doChrono && total_nevt>1) m_chronoStatSvc->chronoStop("EventLoopMgr_postexec");
835  if(m_doChrono && total_nevt>1) m_chronoStatSvc->chronoStop("EventLoopMgr");
836  } //event loop
837 
838 
839 
840  return sc;
841 
842 }

◆ operator=()

PyAthenaEventLoopMgr& PyAthenaEventLoopMgr::operator= ( const PyAthenaEventLoopMgr )
protected

◆ pointer()

PyAthenaEventLoopMgr * PyAthenaEventLoopMgr::pointer ( )
static

outside access

Definition at line 52 of file PyAthenaEventLoopMgr.cxx.

52  {
53 
54  SmartIF<IEventProcessor> ep{Gaudi::svcLocator()->service( "PyAthenaEventLoopMgr", /*createIf*/false )};
55  if ( ep ) {
56  ep->addRef();
57  return dynamic_cast< PyAthenaEventLoopMgr* >( ep.get() );
58  }
59 
60  return nullptr;
61 }

◆ resetTimeout()

void Athena::TimeoutMaster::resetTimeout ( Timeout instance)
inlineprotectedinherited

Reset timeout.

Definition at line 83 of file Timeout.h.

83 { instance.reset(); }

◆ seek()

StatusCode AthenaEventLoopMgr::seek ( int  evt)
virtualinherited

Seek to a given event.

Definition at line 849 of file AthenaEventLoopMgr.cxx.

850 {
851  IEvtSelectorSeek* is = dynamic_cast<IEvtSelectorSeek*> (m_evtSelector);
852  if (is == nullptr) {
853  ATH_MSG_ERROR ( "Seek failed; unsupported by event selector" );
854  return StatusCode::FAILURE;
855  }
856  //cppcheck-suppress nullPointerRedundantCheck
857  if (!m_evtSelCtxt) {
858  if (m_evtSelector->createContext(m_evtSelCtxt).isFailure()) {
859  ATH_MSG_FATAL ( "Can not create the event selector Context." );
860  return StatusCode::FAILURE;
861  }
862  }
863  //m_evtSelCtxt cannot be null if createContext succeeded
864  //cppcheck-suppress nullPointerRedundantCheck
865  StatusCode sc = is->seek (*m_evtSelCtxt, evt);
866  if (sc.isSuccess()) {
867  m_nevt = evt;
868  }
869  else {
870  ATH_MSG_ERROR ( "Seek failed." );
871  }
872  return sc;
873 }

◆ setClearStorePolicy()

void AthenaEventLoopMgr::setClearStorePolicy ( Gaudi::Details::PropertyBase &  clearStorePolicy)
protectedinherited

property update handler:set the clear-store policy value and check its value.

Definition at line 316 of file AthenaEventLoopMgr.cxx.

316  {
317  const std::string& policyName = m_clearStorePolicy.value();
318 
319  if ( policyName != "BeginEvent" &&
320  policyName != "EndEvent" ) {
321 
322  ATH_MSG_FATAL ( "Unknown policy [" << policyName
323  << "] for the 'ClearStore-policy !"
324  << endmsg
325  << "Valid values are: BeginEvent, EndEvent"
326  );
327  throw GaudiException("Can not setup 'ClearStore'-policy",
328  name(),
329  StatusCode::FAILURE);
330  }
331 
332  return;
333 }

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level  lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29 {
30  m_lvl = lvl;
31 }

◆ setManager()

PyObject * PyAthenaEventLoopMgr::setManager ( PyObject mgr)

actual manager object

Definition at line 82 of file PyAthenaEventLoopMgr.cxx.

83 {
85  if ( ! PyObject_HasAttrString( mgr, execalgs ) )
86  {
87  PyErr_SetString( PyExc_TypeError, "given object is not a manager" );
88  return nullptr;
89  }
90 
91 // set on ourselves
93  Py_INCREF( mgr );
94  m_manager = mgr;
95 
96 // set onto the module as a module global (this may replace the old one, so
97 // users are best served to only access this through the module)
98  PyObject* pyelm = PyImport_AddModule( const_cast< char* >( "AthenaServices.PyAthenaEventLoopMgr" ) );
99  if ( pyelm ) {
100  Py_INCREF( mgr );
101  if (PyModule_AddObject( pyelm, const_cast< char* >( "EventLoopMgr" ), mgr ) < 0) {
102  Py_DECREF( mgr );
103  }
104  }
105 
106 // hand the python side its interfaces
107  PyObject* pyself = PyCapsule_New( (void*)static_cast< IEventSeek* >( this ), nullptr, nullptr );
108 #if PY_MAJOR_VERSION < 3
109  PyObject* method = PyString_FromString( "_installServices" );
110 #else
111  PyObject* method = PyUnicode_FromString( "_installServices" );
112 #endif
113  PyObject* result = PyObject_CallMethodObjArgs( mgr, method, pyself, 0 );
114  Py_DECREF( method );
115  Py_DECREF( pyself );
116 
117  if ( ! result )
118  return nullptr;
119 
120 // return old value (with its refcount), if set previously; or None
121  if ( old != nullptr )
122  return old;
123 
124  Py_INCREF( Py_None );
125  return Py_None;
126 }

◆ setTimeout()

void Athena::TimeoutMaster::setTimeout ( Timeout instance)
inlineprotectedinherited

Set timeout.

Definition at line 80 of file Timeout.h.

80 { instance.set(); }

◆ setupPreSelectTools()

void AthenaEventLoopMgr::setupPreSelectTools ( Gaudi::Details::PropertyBase &  )
protectedinherited

property update handler:sets up the Pre-selection tools

Definition at line 336 of file AthenaEventLoopMgr.cxx.

336  {
337 
338  m_toolInvoke.clear();
339  m_toolReject.clear();
340  m_toolAccept.clear();
341 
342  m_tools.retrieve().ignore();
343  if(m_tools.size() > 0) {
344  m_useTools=true;
345  m_toolInvoke.resize(m_tools.size());
346  m_toolReject.resize(m_tools.size());
347  m_toolAccept.resize(m_tools.size());
348 
349  tool_iterator firstTool = m_tools.begin();
350  tool_iterator lastTool = m_tools.end();
351  unsigned int toolCtr = 0;
352  for ( ; firstTool != lastTool; ++firstTool )
353  {
354  // reset statistics
355  m_toolInvoke[toolCtr] = 0;
356  m_toolReject[toolCtr] = 0;
357  m_toolAccept[toolCtr] = 0;
358  toolCtr++;
359  }
360  }
361 
362  return;
363 
364 }

◆ size()

int AthenaEventLoopMgr::size ( )
virtualinherited

Return the size of the collection.

Definition at line 887 of file AthenaEventLoopMgr.cxx.

888 {
889  IEvtSelectorSeek* cs = dynamic_cast<IEvtSelectorSeek*> (m_evtSelector);
890  if (cs == nullptr) {
891  ATH_MSG_ERROR ( "Collection size unsupported by event selector" );
892  return -1;
893  }
894  //cppcheck-suppress nullPointerRedundantCheck
895  if (!m_evtSelCtxt) {
896  if (m_evtSelector->createContext(m_evtSelCtxt).isFailure()) {
897  ATH_MSG_FATAL ( "Can not create the event selector Context." );
898  return -1;
899  }
900  }
901  //m_evtSelCtxt cannot be null if createContext succeeded
902  //cppcheck-suppress nullPointerRedundantCheck
903  return cs->size (*m_evtSelCtxt);
904 }

◆ writeHistograms()

StatusCode AthenaEventLoopMgr::writeHistograms ( bool  force = false)
protectedvirtualinherited

Dump out histograms as needed.

Definition at line 425 of file AthenaEventLoopMgr.cxx.

425  {
426 
427  StatusCode sc (StatusCode::SUCCESS);
428 
429  if ( 0 != m_histoPersSvc && m_writeHists ) {
430  std::vector<DataObject*> objects;
431  sc = m_histoDataMgrSvc->traverseTree( [&objects]( IRegistry* reg, int ) {
432  DataObject* obj = reg->object();
433  if ( !obj || obj->clID() == CLID_StatisticsFile ) return false;
434  objects.push_back( obj );
435  return true;
436  } );
437 
438  if ( !sc.isSuccess() ) {
439  ATH_MSG_ERROR ( "Error while traversing Histogram data store" );
440  return sc;
441  }
442 
443  if ( objects.size() > 0) {
444  int writeInterval(m_writeInterval.value());
445 
446  if ( m_nevt == 1 || force ||
447  (writeInterval != 0 && m_nevt%writeInterval == 0) ) {
448 
449  // skip /stat entry!
450  sc = std::accumulate( begin( objects ), end( objects ), sc, [&]( StatusCode isc, auto& i ) {
451  IOpaqueAddress* pAddr = nullptr;
452  StatusCode iret = m_histoPersSvc->createRep( i, pAddr );
453  if ( iret.isFailure() ) return iret;
454  i->registry()->setAddress( pAddr );
455  return isc;
456  } );
457  sc = std::accumulate( begin( objects ), end( objects ), sc, [&]( StatusCode isc, auto& i ) {
458  IRegistry* reg = i->registry();
459  StatusCode iret = m_histoPersSvc->fillRepRefs( reg->address(), i );
460  return iret.isFailure() ? iret : isc;
461  } );
462  if ( ! sc.isSuccess() ) {
463  ATH_MSG_ERROR ( "Error while saving Histograms." );
464  }
465  }
466 
467  if (force || (writeInterval != 0 && m_nevt%writeInterval == 0) ) {
468  ATH_MSG_DEBUG ( "committing Histograms" );
469  m_histoPersSvc->conversionSvc()->commitOutput("",true).ignore();
470  }
471  }
472 
473  }
474 
475  return sc;
476 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_aess

SmartIF<IAlgExecStateSvc> AthenaEventLoopMgr::m_aess
protectedinherited

Reference to the Algorithm Execution State Svc.

Definition at line 153 of file AthenaEventLoopMgr.h.

◆ m_chronoStatSvc

ServiceHandle<IChronoStatSvc> AthenaEventLoopMgr::m_chronoStatSvc
privateinherited

Definition at line 215 of file AthenaEventLoopMgr.h.

◆ m_clearStorePolicy

StringProperty AthenaEventLoopMgr::m_clearStorePolicy
protectedinherited

Definition at line 136 of file AthenaEventLoopMgr.h.

◆ m_conditionsCleaner

ServiceHandle<Athena::IConditionsCleanerSvc> AthenaEventLoopMgr::m_conditionsCleaner
privateinherited

Definition at line 216 of file AthenaEventLoopMgr.h.

◆ m_currentRun

number_type AthenaEventLoopMgr::m_currentRun
protectedinherited

current run number

Definition at line 103 of file AthenaEventLoopMgr.h.

◆ m_doChrono

bool AthenaEventLoopMgr::m_doChrono = false
privateinherited

Definition at line 214 of file AthenaEventLoopMgr.h.

◆ m_eventPrintoutInterval

UnsignedIntegerProperty AthenaEventLoopMgr::m_eventPrintoutInterval
protectedinherited

Definition at line 110 of file AthenaEventLoopMgr.h.

◆ m_eventStore

StoreGateSvc_t AthenaEventLoopMgr::m_eventStore
protectedinherited

Reference to StoreGateSvc;.

Property

Definition at line 74 of file AthenaEventLoopMgr.h.

◆ m_evtIdModSvc

IEvtIdModifierSvc_t AthenaEventLoopMgr::m_evtIdModSvc
protectedinherited

Definition at line 93 of file AthenaEventLoopMgr.h.

◆ m_evtsel

StringProperty AthenaEventLoopMgr::m_evtsel
protectedinherited

Definition at line 81 of file AthenaEventLoopMgr.h.

◆ m_evtSelCtxt

IEvtSelector::Context* AthenaEventLoopMgr::m_evtSelCtxt
protectedinherited

Gaudi EventSelector Context (may be used as a cursor by the evt selector)

Definition at line 79 of file AthenaEventLoopMgr.h.

◆ m_evtSelector

IEvtSelector* AthenaEventLoopMgr::m_evtSelector
protectedinherited

Reference to the Event Selector.

Definition at line 77 of file AthenaEventLoopMgr.h.

◆ m_execAtPreFork

StringArrayProperty AthenaEventLoopMgr::m_execAtPreFork
protectedinherited

Definition at line 96 of file AthenaEventLoopMgr.h.

◆ m_failureMode

IntegerProperty AthenaEventLoopMgr::m_failureMode
protectedinherited

Definition at line 107 of file AthenaEventLoopMgr.h.

◆ m_firstRun

bool AthenaEventLoopMgr::m_firstRun
protectedinherited

Definition at line 104 of file AthenaEventLoopMgr.h.

◆ m_histoDataMgrSvc

IDataManagerSvc_t AthenaEventLoopMgr::m_histoDataMgrSvc
protectedinherited

Reference to the Histogram Data Service.

Definition at line 85 of file AthenaEventLoopMgr.h.

◆ m_histoPersSvc

IConversionSvc_t AthenaEventLoopMgr::m_histoPersSvc
protectedinherited

Definition at line 89 of file AthenaEventLoopMgr.h.

◆ m_histPersName

StringProperty AthenaEventLoopMgr::m_histPersName
protectedinherited

Definition at line 99 of file AthenaEventLoopMgr.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_incidentSvc

IIncidentSvc_t AthenaEventLoopMgr::m_incidentSvc
protectedinherited

Reference to the incident service.

Definition at line 70 of file AthenaEventLoopMgr.h.

◆ m_intervalInSeconds

unsigned int AthenaEventLoopMgr::m_intervalInSeconds
privateinherited

Definition at line 207 of file AthenaEventLoopMgr.h.

◆ m_lastNev

unsigned int AthenaEventLoopMgr::m_lastNev {}
privateinherited

Definition at line 206 of file AthenaEventLoopMgr.h.

◆ m_lastTime

time_t AthenaEventLoopMgr::m_lastTime {}
privateinherited

Definition at line 208 of file AthenaEventLoopMgr.h.

◆ m_liteLoop

bool AthenaEventLoopMgr::m_liteLoop
privateinherited

Definition at line 210 of file AthenaEventLoopMgr.h.

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_manager

PyObject* PyAthenaEventLoopMgr::m_manager
private

Definition at line 60 of file PyAthenaEventLoopMgr.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nev

unsigned int AthenaEventLoopMgr::m_nev
privateinherited

events processed

Definition at line 202 of file AthenaEventLoopMgr.h.

◆ m_nevt

int AthenaEventLoopMgr::m_nevt {}
privateinherited

Definition at line 196 of file AthenaEventLoopMgr.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_proc

unsigned int AthenaEventLoopMgr::m_proc
privateinherited

Definition at line 203 of file AthenaEventLoopMgr.h.

◆ m_requireInputAttributeList

bool AthenaEventLoopMgr::m_requireInputAttributeList {}
protectedinherited

require input attribute list

Definition at line 125 of file AthenaEventLoopMgr.h.

◆ m_toolAccept

tool_stats AthenaEventLoopMgr::m_toolAccept
protectedinherited

tool returns StatusCode::SUCCESS counter

Definition at line 121 of file AthenaEventLoopMgr.h.

◆ m_toolInvoke

tool_stats AthenaEventLoopMgr::m_toolInvoke
protectedinherited

tool called counter

Definition at line 119 of file AthenaEventLoopMgr.h.

◆ m_toolReject

tool_stats AthenaEventLoopMgr::m_toolReject
protectedinherited

tool returns StatusCode::FAILURE counter

Definition at line 120 of file AthenaEventLoopMgr.h.

◆ m_tools

tool_store AthenaEventLoopMgr::m_tools
protectedinherited

internal tool store

Definition at line 122 of file AthenaEventLoopMgr.h.

◆ m_useSecondaryEventNumber

bool AthenaEventLoopMgr::m_useSecondaryEventNumber {}
protectedinherited

read event number from secondary input

Definition at line 128 of file AthenaEventLoopMgr.h.

◆ m_useTools

bool AthenaEventLoopMgr::m_useTools
privateinherited

Definition at line 204 of file AthenaEventLoopMgr.h.

◆ m_writeHists

bool AthenaEventLoopMgr::m_writeHists {}
privateinherited

Definition at line 199 of file AthenaEventLoopMgr.h.

◆ m_writeInterval

IntegerProperty AthenaEventLoopMgr::m_writeInterval
privateinherited

Definition at line 198 of file AthenaEventLoopMgr.h.


The documentation for this class was generated from the following files:
RunTileTBRec.method
method
Definition: RunTileTBRec.py:73
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
StoreGateSvc::record
StatusCode record(T *p2BRegistered, const TKEY &key)
Record an object with a key.
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
AthenaEventLoopMgr::m_lastTime
time_t m_lastTime
Definition: AthenaEventLoopMgr.h:208
AthenaEventLoopMgr::m_evtIdModSvc
IEvtIdModifierSvc_t m_evtIdModSvc
Definition: AthenaEventLoopMgr.h:93
ClearStorePolicy::EndEvent
@ EndEvent
Definition: ClearStorePolicy.h:15
AthenaEventLoopMgr::m_toolAccept
tool_stats m_toolAccept
tool returns StatusCode::SUCCESS counter
Definition: AthenaEventLoopMgr.h:121
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
AthenaEventLoopMgr::m_tools
tool_store m_tools
internal tool store
Definition: AthenaEventLoopMgr.h:122
get_generator_info.result
result
Definition: get_generator_info.py:21
LArConditions2Ntuple.objects
objects
Definition: LArConditions2Ntuple.py:63
AthenaEventLoopMgr::m_evtSelCtxt
IEvtSelector::Context * m_evtSelCtxt
Gaudi EventSelector Context (may be used as a cursor by the evt selector)
Definition: AthenaEventLoopMgr.h:79
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
calibdata.force
bool force
Definition: calibdata.py:19
python.CaloAddPedShiftConfig.args
args
Definition: CaloAddPedShiftConfig.py:45
AthenaEventLoopMgr::eventStore
StoreGateSvc * eventStore() const
Definition: AthenaEventLoopMgr.cxx:1007
AthenaEventLoopMgr::name
virtual const std::string & name() const
Definition: AthenaEventLoopMgr.h:185
AthenaEventLoopMgr::initialize
virtual StatusCode initialize()
implementation of IAppMgrUI::initalize
Definition: AthenaEventLoopMgr.cxx:127
AthenaEventLoopMgr::m_conditionsCleaner
ServiceHandle< Athena::IConditionsCleanerSvc > m_conditionsCleaner
Definition: AthenaEventLoopMgr.h:216
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
AthenaEventLoopMgr::m_proc
unsigned int m_proc
Definition: AthenaEventLoopMgr.h:203
clearStorePolicy
ClearStorePolicy::Type clearStorePolicy(const std::string &policyName, MsgStream &msg)
returns the enum-version of the policy (by name)
Definition: ClearStorePolicy.cxx:7
AthenaEventLoopMgr::m_evtSelector
IEvtSelector * m_evtSelector
Reference to the Event Selector.
Definition: AthenaEventLoopMgr.h:77
AthenaEventLoopMgr::m_failureMode
IntegerProperty m_failureMode
Definition: AthenaEventLoopMgr.h:107
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
AthenaEventLoopMgr::m_incidentSvc
IIncidentSvc_t m_incidentSvc
Reference to the incident service.
Definition: AthenaEventLoopMgr.h:70
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
AthenaEventLoopMgr::m_eventStore
StoreGateSvc_t m_eventStore
Reference to StoreGateSvc;.
Definition: AthenaEventLoopMgr.h:74
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
AthenaEventLoopMgr::m_writeInterval
IntegerProperty m_writeInterval
Definition: AthenaEventLoopMgr.h:198
AthenaEventLoopMgr::m_currentRun
number_type m_currentRun
current run number
Definition: AthenaEventLoopMgr.h:103
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
AthenaEventLoopMgr::m_nev
unsigned int m_nev
events processed
Definition: AthenaEventLoopMgr.h:202
RootUtils::PyGILStateEnsure
Definition: PyAthenaGILStateEnsure.h:20
AthenaEventLoopMgr::modifyEventContext
virtual void modifyEventContext(EventContext &ctx, const EventID &eID, bool consume_modifier_stream)
Definition: AthenaEventLoopMgr.cxx:1167
AthenaEventLoopMgr::installEventContext
StatusCode installEventContext(EventContext &ctx)
Definition: AthenaEventLoopMgr.cxx:1015
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
Atlas::getExtendedEventContext
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
Definition: ExtendedEventContext.cxx:32
instance
std::map< std::string, double > instance
Definition: Run_To_Get_Tags.h:8
IEvtSelectorSeek::seek
virtual StatusCode seek(IEvtSelector::Context &c, int evtnum) const =0
Seek to a given event number.
AthenaEventLoopMgr::nextEvent
virtual StatusCode nextEvent(int maxevt)
implementation of IAppMgrUI::nextEvent. maxevt==0 returns immediately
Definition: AthenaEventLoopMgr.cxx:713
AthenaEventLoopMgr::initializeAlgorithms
StatusCode initializeAlgorithms()
Initialize all algorithms and output streams.
Definition: AthenaEventLoopMgr.cxx:481
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AthenaEventLoopMgr::m_doChrono
bool m_doChrono
Definition: AthenaEventLoopMgr.h:214
AthenaEventLoopMgr::execAtPreFork
StatusCode execAtPreFork(const EventContext &ctx) const
Execute certain algorithms/sequences in PreFork.
Definition: AthenaEventLoopMgr.cxx:990
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
AthenaEventLoopMgr::m_requireInputAttributeList
bool m_requireInputAttributeList
require input attribute list
Definition: AthenaEventLoopMgr.h:125
lumiFormat.i
int i
Definition: lumiFormat.py:85
AthenaEventLoopMgr::m_histoPersSvc
IConversionSvc_t m_histoPersSvc
Definition: AthenaEventLoopMgr.h:89
Atlas::ExtendedEventContext
Definition: ExtendedEventContext.h:23
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthenaEventLoopMgr::m_aess
SmartIF< IAlgExecStateSvc > m_aess
Reference to the Algorithm Execution State Svc.
Definition: AthenaEventLoopMgr.h:153
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
EventInfo::event_ID
EventID * event_ID()
the unique identification of the event.
Definition: EventInfo/EventInfo/EventInfo.h:224
ClearStorePolicy::Type
Type
Definition: ClearStorePolicy.h:13
IEvtSelectorSeek::size
virtual int size(IEvtSelector::Context &c) const =0
Return the size of the collection, or -1 if we can't get the size.
AthenaEventLoopMgr::m_useTools
bool m_useTools
Definition: AthenaEventLoopMgr.h:204
AthenaEventLoopMgr::m_lastNev
unsigned int m_lastNev
Definition: AthenaEventLoopMgr.h:206
AthenaEventLoopMgr::m_execAtPreFork
StringArrayProperty m_execAtPreFork
Definition: AthenaEventLoopMgr.h:96
ATH_MSG_ALWAYS
#define ATH_MSG_ALWAYS(x)
Definition: AthMsgStreamMacros.h:35
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
AthenaEventLoopMgr::finalize
virtual StatusCode finalize()
implementation of IAppMgrUI::finalize
Definition: AthenaEventLoopMgr.cxx:369
AthenaAttributeList
An AttributeList represents a logical row of attributes in a metadata table. The name and type of eac...
Definition: PersistentDataModel/PersistentDataModel/AthenaAttributeList.h:45
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
PyAthenaEventLoopMgr
Implementation of the AthenaEventLoopMgr that allows selective and specific overrides in python....
Definition: PyAthenaEventLoopMgr.h:34
AthenaEventLoopMgr::m_eventPrintoutInterval
UnsignedIntegerProperty m_eventPrintoutInterval
Definition: AthenaEventLoopMgr.h:110
xAOD::eventNumber
eventNumber
Definition: EventInfo_v1.cxx:124
StoreGateSvc::clearStore
virtual StatusCode clearStore(bool forceRemove=false) override final
clear DataStore contents: called by the event loop mgrs
Definition: StoreGateSvc.cxx:450
Athena::Timeout::instance
static Timeout & instance()
Get reference to Timeout singleton.
Definition: Timeout.h:64
AthenaEventLoopMgr::executeEvent
virtual StatusCode executeEvent(EventContext &&ctx)
implementation of IEventProcessor::executeEvent(EventContext&& ctx)
Definition: AthenaEventLoopMgr.cxx:542
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
AthenaEventLoopMgr::m_toolInvoke
tool_stats m_toolInvoke
tool called counter
Definition: AthenaEventLoopMgr.h:119
Atlas::ExtendedEventContext::setConditionsRun
void setConditionsRun(EventIDBase::number_type conditionsRun)
Definition: ExtendedEventContext.h:36
AthenaEventLoopMgr::m_toolReject
tool_stats m_toolReject
tool returns StatusCode::FAILURE counter
Definition: AthenaEventLoopMgr.h:120
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
AthenaEventLoopMgr::m_clearStorePolicy
StringProperty m_clearStorePolicy
Definition: AthenaEventLoopMgr.h:136
EventInfo
This class provides general information about an event. Event information is provided by the accessor...
Definition: EventInfo/EventInfo/EventInfo.h:43
AthenaEventLoopMgr::m_liteLoop
bool m_liteLoop
Definition: AthenaEventLoopMgr.h:210
RegSelToolConfig.alg
alg
Definition: RegSelToolConfig.py:332
AthenaEventLoopMgr::m_chronoStatSvc
ServiceHandle< IChronoStatSvc > m_chronoStatSvc
Definition: AthenaEventLoopMgr.h:215
StoreGateSvc::recordAddress
StatusCode recordAddress(const std::string &skey, IOpaqueAddress *pAddress, bool clearAddressFlag=true)
Create a proxy object using an IOpaqueAddress and a transient key.
columnar::ContainerId::eventInfo
@ eventInfo
StoreGateSvc::tryConstRetrieve
const T * tryConstRetrieve() const
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
AthenaEventLoopMgr::m_useSecondaryEventNumber
bool m_useSecondaryEventNumber
read event number from secondary input
Definition: AthenaEventLoopMgr.h:128
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
runIDAlign.accumulate
accumulate
Update flags based on parser line args.
Definition: runIDAlign.py:63
ClearStorePolicy::BeginEvent
@ BeginEvent
Definition: ClearStorePolicy.h:14
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
CSV_InDetExporter.old
old
Definition: CSV_InDetExporter.py:145
AthenaEventLoopMgr::m_intervalInSeconds
unsigned int m_intervalInSeconds
Definition: AthenaEventLoopMgr.h:207
AthenaEventLoopMgr::m_firstRun
bool m_firstRun
Definition: AthenaEventLoopMgr.h:104
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
AthenaEventLoopMgr::m_writeHists
bool m_writeHists
Definition: AthenaEventLoopMgr.h:199
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
eventIDFromxAOD
EventID eventIDFromxAOD(const xAOD::EventInfo *xaod)
Create EventID object from xAOD::EventInfo.
Definition: EventInfoFromxAOD.cxx:16
EventID
This class provides a unique identification for each event, in terms of run/event number and/or a tim...
Definition: EventID.h:35
AthenaEventLoopMgr::writeHistograms
virtual StatusCode writeHistograms(bool force=false)
Dump out histograms as needed.
Definition: AthenaEventLoopMgr.cxx:425
AthenaEventLoopMgr::tool_iterator
tool_store::const_iterator tool_iterator
Definition: AthenaEventLoopMgr.h:115
IEventSeek
Abstract interface for seeking within an event stream.
Definition: IEventSeek.h:27
AthenaEventLoopMgr::AthenaEventLoopMgr
AthenaEventLoopMgr()
no implementation
PyAthenaEventLoopMgr::setManager
PyObject * setManager(PyObject *)
actual manager object
Definition: PyAthenaEventLoopMgr.cxx:82
AthenaEventLoopMgr::m_nevt
int m_nevt
Definition: AthenaEventLoopMgr.h:196
Athena::TimeoutMaster::resetTimeout
void resetTimeout(Timeout &instance)
Reset timeout.
Definition: Timeout.h:83
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
xAOD::lumiBlock
setTeId lumiBlock
Definition: L2StandAloneMuon_v1.cxx:327
python.PyAthena.obj
obj
Definition: PyAthena.py:132
eventTypeFromxAOD
EventType eventTypeFromxAOD(const xAOD::EventInfo *xaod)
Create EventType object from xAOD::EventInfo.
Definition: EventInfoFromxAOD.cxx:34
PrepareReferenceFile.outfile
outfile
Definition: PrepareReferenceFile.py:42
PyObject
_object PyObject
Definition: IPyComponent.h:26
AthenaEventLoopMgr::executeAlgorithms
virtual StatusCode executeAlgorithms(const EventContext &)
Run the algorithms for the current event.
Definition: AthenaEventLoopMgr.cxx:516
PyAthenaEventLoopMgr::m_manager
PyObject * m_manager
Definition: PyAthenaEventLoopMgr.h:60
Atlas::setExtendedEventContext
void setExtendedEventContext(EventContext &ctx, ExtendedEventContext &&ectx)
Move an extended context into a context object.
Definition: ExtendedEventContext.cxx:50
AthenaEventLoopMgr::m_histoDataMgrSvc
IDataManagerSvc_t m_histoDataMgrSvc
Reference to the Histogram Data Service.
Definition: AthenaEventLoopMgr.h:85
IEvtSelectorSeek
Abstract interface for seeking for an event selector.
Definition: IEvtSelectorSeek.h:28
EventInfoCnvParams::eventIndex
thread_local event_number_t eventIndex
Definition: IEvtIdModifierSvc.h:34