|
ATLAS Offline Software
|
The default ATLAS batch event loop manager.
More...
#include <AthenaHiveEventLoopMgr.h>
|
typedef IEvtSelector::Context | EvtContext |
|
typedef std::list< SmartIF< IAlgorithm > > | ListAlg |
|
The default ATLAS batch event loop manager.
It loops over input events according to job configuration. Among the main user-settable properties "FailureMode" controls behaviour of event loop depending on return code of Algorithms.
- 0: all non-SUCCESSes terminate job.
- 1: (DEFAULT) RECOVERABLE skips to next event, FAILURE terminates job.
- 2: RECOVERABLE and FAILURE skip to next events
Definition at line 68 of file AthenaHiveEventLoopMgr.h.
◆ EvtContext
◆ IConversionSvc_t
◆ IDataManagerSvc_t
◆ IEvtIdModifierSvc_t
◆ IIncidentSvc_t
◆ ListAlg
◆ number_type
◆ StoreGateSvc_t
◆ tool_iterator
◆ tool_stats
◆ tool_stats_iterator
◆ tool_store
◆ tool_type
◆ AthenaHiveEventLoopMgr() [1/3]
AthenaHiveEventLoopMgr::AthenaHiveEventLoopMgr |
( |
const std::string & |
nam, |
|
|
ISvcLocator * |
svcLoc |
|
) |
| |
Standard Constructor.
Definition at line 63 of file AthenaHiveEventLoopMgr.cxx.
65 : base_class(nam, svcLoc),
78 "Name of Event Selector to use. If empty string (default) "
79 "take value from ApplicationMgr");
81 "Histogram persistency technology to use: ROOT, HBOOK, NONE. "
82 "By default (empty string) get property value from "
85 "histogram write/update interval");
87 "Controls behaviour of event loop depending on return code of"
88 " Algorithms. 0: all non-SUCCESSes terminate job. "
89 "1: RECOVERABLE skips to next event, FAILURE terminates job "
90 "(DEFAULT). 2: RECOVERABLE and FAILURE skip to next events");
92 "Print event heartbeat printouts every m_eventPrintoutInterval events");
93 declareProperty(
"PreSelectTools",
m_tools,
"AlgTools for event pre-selection")->
97 "Name of the scheduler to be used");
100 "Name of the Whiteboard to be used");
105 "ServiceHandle for EvtIdModifierSvc");
107 declareProperty(
"FakeLumiBlockInterval",
m_flmbi = 0,
108 "Event interval at which to increment lumiBlock# when "
109 "creating events without an EventSelector. Zero means "
110 "don't increment it");
112 "timestamp interval between events when creating Events "
113 "without an EventSelector");
115 "Require valid input attribute list to be present");
117 "In case of DoubleEventSelector use event number from secondary input");
120 "process all of first event before scheduling any more");
◆ ~AthenaHiveEventLoopMgr()
AthenaHiveEventLoopMgr::~AthenaHiveEventLoopMgr |
( |
| ) |
|
|
virtual |
◆ AthenaHiveEventLoopMgr() [2/3]
AthenaHiveEventLoopMgr::AthenaHiveEventLoopMgr |
( |
| ) |
|
|
privatedelete |
◆ AthenaHiveEventLoopMgr() [3/3]
◆ clearWBSlot()
StatusCode AthenaHiveEventLoopMgr::clearWBSlot |
( |
int |
evtSlot | ) |
|
|
protected |
◆ createEventContext()
EventContext AthenaHiveEventLoopMgr::createEventContext |
( |
| ) |
|
|
overrideprotectedvirtual |
Create event context.
Definition at line 1167 of file AthenaHiveEventLoopMgr.cxx.
1172 if (
sc.isFailure()) {
1174 <<
" could not be selected for the WhiteBoard" );
1175 return EventContext{};
1180 ATH_MSG_DEBUG (
"created EventContext, num: " << ctx.evt() <<
" in slot: "
◆ curEvent()
int AthenaHiveEventLoopMgr::curEvent |
( |
| ) |
const |
|
overridevirtual |
◆ declareEventRootAddress()
int AthenaHiveEventLoopMgr::declareEventRootAddress |
( |
EventContext & |
ctx | ) |
|
|
protected |
Declare the root address of the event.
FIXME ???
Definition at line 952 of file AthenaHiveEventLoopMgr.cxx.
964 std::unique_ptr<const EventInfo> pEvent{};
971 IOpaqueAddress* addr{};
975 if ( !
sc.isSuccess() ) {
991 if( !
sc.isSuccess() ) {
996 }
if ((
sc=
eventStore()->loadEventProxies()).isFailure()) {
1001 bool consume_modifier_stream =
false;
1005 if ( pAttrList !=
nullptr && pAttrList->size() > 6 ) {
1007 unsigned int runNumber = (*pAttrList)[
"RunNumber"].data<
unsigned int>();
1008 unsigned long long eventNumber = (*pAttrList)[
"EventNumber"].data<
unsigned long long>();
1009 unsigned int eventTime = (*pAttrList)[
"EventTime"].data<
unsigned int>();
1010 unsigned int eventTimeNS = (*pAttrList)[
"EventTimeNanoSec"].data<
unsigned int>();
1011 unsigned int lumiBlock = (*pAttrList)[
"LumiBlockN"].data<
unsigned int>();
1012 unsigned int bunchId = (*pAttrList)[
"BunchId"].data<
unsigned int>();
1015 consume_modifier_stream =
true;
1018 unsigned long long eventNumberSecondary{};
1019 if ( !(pAttrList->exists(
"hasSecondaryInput") && (*pAttrList)[
"hasSecondaryInput"].data<
bool>()) ) {
1020 ATH_MSG_FATAL (
"Secondary EventNumber requested, but secondary input does not exist!" );
1023 if ( pAttrList->exists(
"EventNumber_secondary") ) {
1024 eventNumberSecondary = (*pAttrList)[
"EventNumber_secondary"].data<
unsigned long long>();
1030 if (pEventSecondary) {
1031 eventNumberSecondary = pEventSecondary->
event_ID()->event_number();
1034 ATH_MSG_FATAL (
"Secondary EventNumber requested, but it does not exist!" );
1038 if (eventNumberSecondary != 0) {
1042 ATH_MSG_INFO (
" ===>>> using secondary event #" << eventNumberSecondary <<
" instead of #" <<
eventNumber <<
" <<<===" );
1048 pEvent = std::make_unique<EventInfo>(
1055 ATH_MSG_FATAL (
"Valid input attribute list required but not present!" );
1059 const EventInfo* pEventObserver{pEvent.get()};
1060 if (!pEventObserver) {
1065 if (pEventObserver) {
1066 consume_modifier_stream =
false;
1073 if( !
sc.isSuccess() ) {
1077 consume_modifier_stream =
true;
1078 ATH_MSG_DEBUG (
"use xAOD::EventInfo with runNumber=" << pXEvent->runNumber() );
1080 pEvent = std::make_unique<EventInfo>(
1083 pEventObserver = pEvent.get();
1085 if( !
sc.isSuccess() ) {
1093 consume_modifier_stream);
1100 unsigned int runNmb{1}, evtNmb{
m_nevt + 1};
1107 auto eid = std::make_unique<EventID> (runNmb,evtNmb,
m_timeStamp);
1109 eid->set_lumi_block( runNmb );
1113 pEvent = std::make_unique<EventInfo>(std::move(eid),
1114 std::make_unique<EventType>());
1116 bool consume_modifier_stream =
true;
1126 ATH_MSG_DEBUG (
"recording EventInfo " << *pEvent->event_ID() <<
" in "
1130 if( !
sc.isSuccess() ) {
◆ drainScheduler()
int AthenaHiveEventLoopMgr::drainScheduler |
( |
int & |
finishedEvents | ) |
|
|
protected |
Drain the scheduler from all actions that may be queued.
Definition at line 1190 of file AthenaHiveEventLoopMgr.cxx.
1195 std::vector<std::unique_ptr<EventContext>> finishedEvtContexts;
1197 EventContext* finishedEvtContext(
nullptr);
1200 ATH_MSG_DEBUG (
"drainScheduler: [" << finishedEvts <<
"] Waiting for a context" );
1204 if (
sc.isSuccess()){
1205 ATH_MSG_DEBUG (
"drainScheduler: scheduler not empty: Context "
1206 << finishedEvtContext );
1207 finishedEvtContexts.emplace_back(finishedEvtContext);
1215 while (
m_schedulerSvc->tryPopFinishedEvent(finishedEvtContext).isSuccess()){
1216 finishedEvtContexts.emplace_back(finishedEvtContext);
1221 for (
auto& thisFinishedEvtContext : finishedEvtContexts){
1222 if (!thisFinishedEvtContext) {
1223 ATH_MSG_FATAL (
"Detected nullptr ctxt while clearing WB!");
1228 if (
m_aess->eventStatus(*thisFinishedEvtContext) != EventStatus::Success) {
1229 ATH_MSG_FATAL (
"Failed event detected on " << thisFinishedEvtContext
1230 <<
" w/ fail mode: "
1231 <<
m_aess->eventStatus(*thisFinishedEvtContext) );
1239 if (
m_whiteboard->selectStore(thisFinishedEvtContext->slot()).isSuccess()) {
1240 n_run = thisFinishedEvtContext->eventID().run_number();
1241 n_evt = thisFinishedEvtContext->eventID().event_number();
1244 << thisFinishedEvtContext->slot() );
1253 Gaudi::Hive::setCurrentContext( *thisFinishedEvtContext );
1254 m_incidentSvc->fireIncident(Incident(
name(), IncidentType::EndProcessing, *thisFinishedEvtContext ));
1256 ATH_MSG_DEBUG (
"Clearing slot " << thisFinishedEvtContext->slot()
1257 <<
" (event " << thisFinishedEvtContext->evt()
1258 <<
") of the whiteboard" );
1261 if (!
sc.isSuccess()) {
1262 ATH_MSG_ERROR (
"Whiteboard slot " << thisFinishedEvtContext->slot()
1263 <<
" could not be properly cleared" );
1275 ATH_MSG_INFO (
" ===>>> done processing event #" << n_evt <<
", run #" << n_run
1276 <<
" on slot " << thisFinishedEvtContext->slot() <<
", "
1277 <<
m_proc <<
" events processed so far <<<===" );
1279 ATH_MSG_INFO (
" ===>>> done processing event #" << n_evt <<
", run #" << n_run
1280 <<
" on slot " << thisFinishedEvtContext->slot() <<
", "
1282 <<
" events processed so far <<<===" );
1283 std::ofstream
outfile(
"eventLoopHeartBeat.txt");
1285 ATH_MSG_ERROR (
" unable to open: eventLoopHeartBeat.txt" );
1289 outfile <<
" done processing event #" << n_evt <<
", run #" << n_run
1290 <<
" " <<
m_nev <<
" events read so far <<<===" << std::endl;
1295 ATH_MSG_DEBUG (
"drainScheduler thisFinishedEvtContext: " << thisFinishedEvtContext );
1298 return (
fail ? -1 : 1 );
◆ eventStore()
◆ executeAlgorithms()
StatusCode AthenaHiveEventLoopMgr::executeAlgorithms |
( |
| ) |
|
|
protectedvirtual |
◆ executeEvent()
StatusCode AthenaHiveEventLoopMgr::executeEvent |
( |
EventContext && |
ctx | ) |
|
|
overridevirtual |
implementation of IEventProcessor::executeEvent(void* par)
Fire begin-Run incident if new run:
Definition at line 501 of file AthenaHiveEventLoopMgr.cxx.
506 ATH_MSG_ALWAYS (
"A stopRun was requested by an incidentListener. "
507 <<
"Do not process this event." );
509 return (StatusCode::SUCCESS);
515 Gaudi::Hive::setCurrentContext ( ctx );
518 if (declEvtRootSc == 0 ) {
520 return StatusCode::SUCCESS;
521 }
else if ( declEvtRootSc == -1) {
522 ATH_MSG_ERROR (
"declareEventRootAddress for context " << ctx <<
" failed" );
523 return StatusCode::FAILURE;
527 unsigned int conditionsRun = ctx.eventID().run_number();
530 if (
eventStore()->contains<AthenaAttributeList> (
"Input") &&
532 if (attr->exists (
"ConditionsRun")) {
533 conditionsRun = (*attr)[
"ConditionsRun"].data<
unsigned int>();
538 Gaudi::Hive::setCurrentContext ( ctx );
541 if (
eventStore()->record(std::make_unique<EventContext> (ctx),
542 "EventContext").isFailure())
545 return (StatusCode::FAILURE);
565 bool toolsPassed=
true;
570 unsigned int toolCtr=0;
574 while(toolsPassed && theTool!=lastTool )
576 toolsPassed = (*theTool)->passEvent(ctx.eventID());
589 <<
" on slot " << ctx.slot() <<
", " <<
m_proc
590 <<
" events processed so far <<<===" );
594 <<
" on slot " << ctx.slot() <<
", "
596 <<
" events processed so far <<<===" );
611 <<
", slot " << ctx.slot()
612 <<
" to the scheduler" );
619 if (!addEventStatus.isSuccess()){
620 ATH_MSG_FATAL (
"An event processing slot should be now free in the scheduler, but it appears not to be the case." );
630 Gaudi::Hive::setCurrentContext( EventContext() );
632 return StatusCode::SUCCESS;
◆ executeRun()
StatusCode AthenaHiveEventLoopMgr::executeRun |
( |
int |
maxevt | ) |
|
|
overridevirtual |
implementation of IEventProcessor::executeRun(int maxevt)
Definition at line 639 of file AthenaHiveEventLoopMgr.cxx.
643 bool eventfailed =
false;
651 return StatusCode::FAILURE;
654 return StatusCode::SUCCESS;
◆ finalize()
StatusCode AthenaHiveEventLoopMgr::finalize |
( |
| ) |
|
|
overridevirtual |
implementation of IAppMgrUI::finalize
Definition at line 360 of file AthenaHiveEventLoopMgr.cxx.
397 unsigned int toolCtr = 0;
398 ATH_MSG_INFO (
"Summary of AthenaEvtLoopPreSelectTool invocation: (invoked/success/failure)" );
399 ATH_MSG_INFO (
"-----------------------------------------------------" );
401 for ( ; firstTool != lastTool; ++firstTool ) {
402 ATH_MSG_INFO ( std::setw(2) << std::setiosflags(std::ios_base::right)
403 << toolCtr+1 <<
".) " << std::resetiosflags(std::ios_base::right)
404 << std::setw(48) << std::setfill(
'.')
405 << std::setiosflags(std::ios_base::left)
406 << (*firstTool)->name() << std::resetiosflags(std::ios_base::left)
409 << std::setw(6) << std::setiosflags(std::ios_base::right)
420 return (
sc.isFailure() || sc2.isFailure() ) ? StatusCode::FAILURE :
◆ getEventRoot()
StatusCode AthenaHiveEventLoopMgr::getEventRoot |
( |
IOpaqueAddress *& |
refpAddr | ) |
|
Create event address using event selector.
Definition at line 930 of file AthenaHiveEventLoopMgr.cxx.
933 if ( !
sc.isSuccess() ) {
938 if( !
sc.isSuccess() ) {
940 if (
sc.isSuccess() ) {
942 if ( !
sc.isSuccess() ) {
◆ handle()
void AthenaHiveEventLoopMgr::handle |
( |
const Incident & |
inc | ) |
|
|
overridevirtual |
IIncidentListenet interfaces.
Definition at line 855 of file AthenaHiveEventLoopMgr.cxx.
858 if(inc.type() ==
"EndAlgorithms") {
863 if( !
sc.isSuccess() ) {
869 if(inc.type()!=
"BeforeFork")
873 ATH_MSG_WARNING (
"Skipping BeforeFork handler. Either no event selector is provided or begin run has already passed" );
885 if(!
sc.isSuccess()) {
889 IOpaqueAddress* addr{
nullptr};
891 if (
sc.isFailure()) {
898 if(!
sc.isSuccess()) {
904 if(
eventStore()->loadEventProxies().isFailure()) {
912 if(!
sc.isSuccess()) {
922 if(!
sc.isSuccess()) {
◆ initialize()
StatusCode AthenaHiveEventLoopMgr::initialize |
( |
| ) |
|
|
overridevirtual |
implementation of IAppMgrUI::initalize
Definition at line 136 of file AthenaHiveEventLoopMgr.cxx.
143 if ( !
sc.isSuccess() )
145 ATH_MSG_ERROR (
"Failed to initialize base class MinimalEventLoopMgr" );
156 return StatusCode::FAILURE;
161 ATH_MSG_FATAL (
"Error retrieving SchedulerSvc interface ISchedulerSvc." );
162 return StatusCode::FAILURE;
168 return StatusCode::FAILURE;
171 m_aess = serviceLocator()->service(
"AlgExecStateSvc");
174 return StatusCode::FAILURE;
178 if( !
sc.isSuccess() )
180 ATH_MSG_FATAL (
"Error retrieving pointer to StoreGateSvc" );
189 if( !
sc.isSuccess() )
198 SmartIF<IProperty> prpMgr(serviceLocator());
199 if ( !prpMgr.isValid() )
201 ATH_MSG_FATAL (
"IProperty interface not found in ApplicationMgr." );
202 return StatusCode::FAILURE;
210 if( !
sc.isSuccess() )
217 if ( histPersName.length() == 0 )
219 CHECK(setProperty(prpMgr->getProperty(
"HistogramPersistency")));
222 if ( histPersName !=
"NONE" ) {
228 if (histPersName ==
"ROOT") {
229 histSvc = serviceLocator()->service(
"RootHistSvc");
230 }
else if ( histPersName ==
"HBOOK" ) {
231 histSvc = serviceLocator()->service(
"HbookHistSvc");
235 ATH_MSG_ERROR (
"could not locate actual Histogram persistency service" );
237 const Gaudi::Details::PropertyBase &prop =
histSvc->getProperty(
"OutputFile");
240 const StringProperty &sprop =
dynamic_cast<const StringProperty&
>( prop );
243 ATH_MSG_VERBOSE (
"could not dcast OutputFile property to a StringProperty."
244 <<
" Need to fix Gaudi." );
245 val = prop.toString();
249 val !=
"UndefinedROOTOutputFileName" &&
250 val !=
"UndefinedHbookOutputFileName" ) {
263 ATH_MSG_DEBUG (
"EventID modifier Service not set. No run number, ... overrides will be applied." );
266 ATH_MSG_INFO (
"Could not find EventID modifier Service. No run number, ... overrides will be applied." );
275 sc = setProperty(prpMgr->getProperty(
"EvtSel"));
280 SmartIF<IEvtSelector> theEvtSel{serviceLocator()->service(
selName )};
287 ATH_MSG_FATAL (
"Can not create the event selector Context." );
288 return StatusCode::FAILURE;
290 if (msgLevel(MSG::INFO)) {
291 SmartIF<INamedInterface> named(theEvtSel);
293 ATH_MSG_INFO (
"Setup EventSelector service " << named->name( ) );
296 }
else if (
sc.isFailure()) {
298 return StatusCode::FAILURE;
◆ initializeAlgorithms()
StatusCode AthenaHiveEventLoopMgr::initializeAlgorithms |
( |
| ) |
|
|
protected |
◆ 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.
◆ modifyEventContext()
void AthenaHiveEventLoopMgr::modifyEventContext |
( |
EventContext & |
ctx, |
|
|
const EventID & |
eID, |
|
|
bool |
consume_modifier_stream |
|
) |
| |
|
virtual |
Definition at line 1141 of file AthenaHiveEventLoopMgr.cxx.
1147 m_evtIdModSvc->modify_evtid(new_eID, ctx.evt(), consume_modifier_stream);
1149 unsigned int oldrunnr=eID.run_number();
1150 unsigned int oldLB=eID.lumi_block();
1151 unsigned int oldTS=eID.time_stamp();
1152 unsigned int oldTSno=eID.time_stamp_ns_offset();
1153 ATH_MSG_DEBUG (
"modifyEventContext: use evtIdModSvc runnr=" << oldrunnr <<
" -> " << new_eID.run_number() );
1154 ATH_MSG_DEBUG (
"modifyEventContext: use evtIdModSvc LB=" << oldLB <<
" -> " << new_eID.lumi_block() );
1155 ATH_MSG_DEBUG (
"modifyEventContext: use evtIdModSvc TimeStamp=" << oldTS <<
" -> " << new_eID.time_stamp() );
1156 ATH_MSG_DEBUG (
"modifyEventContext: use evtIdModSvc TimeStamp ns Offset=" << oldTSno <<
" -> " << new_eID.time_stamp_ns_offset() );
1158 ctx.setEventID( new_eID );
1163 ctx.setEventID( eID );
◆ 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.
◆ msg() [2/4]
MsgStream & AthMessaging::msg |
|
inline |
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.
◆ 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 |
|
inline |
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
-
lvl | The message level to test against |
- Returns
- boolean Indicating if messages at given level will be printed
- Return values
-
true | Messages at level "lvl" will be printed |
Definition at line 151 of file AthMessaging.h.
◆ msgLvl() [2/2]
bool AthMessaging::msgLvl |
|
inline |
Test the output level.
- Parameters
-
lvl | The message level to test against |
- Returns
- boolean Indicating if messages at given level will be printed
- Return values
-
true | Messages at level "lvl" will be printed |
Definition at line 86 of file AthMessaging.h.
◆ name()
virtual const std::string& AthenaHiveEventLoopMgr::name |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ nextEvent()
StatusCode AthenaHiveEventLoopMgr::nextEvent |
( |
int |
maxevt | ) |
|
|
overridevirtual |
implementation of IAppMgrUI::nextEvent. maxevt==0 returns immediately
Definition at line 700 of file AthenaHiveEventLoopMgr.cxx.
703 if (0 == maxevt)
return StatusCode::SUCCESS;
706 Gaudi::setAppReturnCode(
m_appMgrProperty, Gaudi::ReturnCode::Success,
true).ignore();
717 bool loop_ended=
false;
724 auto secsFromStart = [&start_time]()->
double{
728 while ( !loop_ended and ( (maxevt < 0) or (finishedEvts < maxevt) ) ){
733 (newEvtAllowed || createdEvts == 0) &&
734 ( (createdEvts < maxevt) or (maxevt<0) ) &&
741 if ( !ctx.valid() ) {
742 sc = StatusCode::FAILURE;
747 if (
sc.isFailure()) {
748 ATH_MSG_ERROR (
"Terminating event processing loop due to errors" );
767 sc = StatusCode::FAILURE;
768 }
else if (
ir == 0) {
771 sc = StatusCode::SUCCESS;
775 newEvtAllowed =
true;
780 ATH_MSG_INFO (
"---> Loop Finished (seconds): " << secsFromStart() );
◆ operator=()
◆ resetTimeout()
void Athena::TimeoutMaster::resetTimeout |
( |
Timeout & |
instance | ) |
|
|
inlineprotectedinherited |
Reset timeout.
Definition at line 83 of file Timeout.h.
◆ seek()
StatusCode AthenaHiveEventLoopMgr::seek |
( |
int |
evt | ) |
|
|
overridevirtual |
Seek to a given event.
Definition at line 793 of file AthenaHiveEventLoopMgr.cxx.
797 ATH_MSG_ERROR (
"Seek failed; unsupported by event selector" );
798 return StatusCode::FAILURE;
803 ATH_MSG_FATAL (
"Can not create the event selector Context." );
804 return StatusCode::FAILURE;
810 if (
sc.isSuccess()) {
811 m_incidentSvc->fireIncident(ContextIncident<std::tuple<int, int>>(
◆ setLevel()
void AthMessaging::setLevel |
( |
MSG::Level |
lvl | ) |
|
|
inherited |
◆ setTimeout()
void Athena::TimeoutMaster::setTimeout |
( |
Timeout & |
instance | ) |
|
|
inlineprotectedinherited |
◆ setupPreSelectTools()
void AthenaHiveEventLoopMgr::setupPreSelectTools |
( |
Gaudi::Details::PropertyBase & |
| ) |
|
|
protected |
property update handler:sets up the Pre-selection tools
Definition at line 327 of file AthenaHiveEventLoopMgr.cxx.
342 unsigned int toolCtr = 0;
343 for ( ; firstTool != lastTool; ++firstTool )
◆ size()
int AthenaHiveEventLoopMgr::size |
( |
| ) |
|
|
overridevirtual |
◆ stop()
StatusCode AthenaHiveEventLoopMgr::stop |
( |
| ) |
|
|
overridevirtual |
implementation of IService::stop
Definition at line 674 of file AthenaHiveEventLoopMgr.cxx.
688 for (
size_t islot = 0; islot < nslot; islot++) {
692 Gaudi::Hive::setCurrentContext( EventContext() );
◆ stopRun()
StatusCode AthenaHiveEventLoopMgr::stopRun |
( |
| ) |
|
|
overridevirtual |
implementation of IEventProcessor::stopRun()
Definition at line 659 of file AthenaHiveEventLoopMgr.cxx.
661 SmartIF<IProperty> appmgr(serviceLocator());
662 if(Gaudi::setAppReturnCode(appmgr, Gaudi::ReturnCode::ScheduledStop).isFailure()) {
663 ATH_MSG_ERROR (
"Could not set return code of the application ("
664 << Gaudi::ReturnCode::ScheduledStop <<
")" );
667 return StatusCode::SUCCESS;
◆ writeHistograms()
StatusCode AthenaHiveEventLoopMgr::writeHistograms |
( |
bool |
force = false | ) |
|
|
protectedvirtual |
Dump out histograms as needed.
Definition at line 428 of file AthenaHiveEventLoopMgr.cxx.
433 std::vector<DataObject*>
objects;
435 DataObject*
obj = reg->object();
436 if ( !
obj ||
obj->clID() == CLID_StatisticsFile )
return false;
441 if ( !
sc.isSuccess() ) {
442 ATH_MSG_ERROR (
"Error while traversing Histogram data store" );
450 (writeInterval != 0 &&
m_nevt%writeInterval == 0) ) {
454 IOpaqueAddress* pAddr =
nullptr;
456 if ( iret.isFailure() )
return iret;
457 i->registry()->setAddress( pAddr );
461 IRegistry* reg =
i->registry();
463 return iret.isFailure() ? iret : isc;
465 if ( !
sc.isSuccess() ) {
470 if (
force || (writeInterval != 0 &&
m_nevt%writeInterval == 0) ) {
◆ ATLAS_THREAD_SAFE
std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT |
|
mutableprivateinherited |
◆ m_abortEventListener
SmartIF< IIncidentListener > AthenaHiveEventLoopMgr::m_abortEventListener |
|
protected |
◆ m_aess
SmartIF<IAlgExecStateSvc> AthenaHiveEventLoopMgr::m_aess |
|
protected |
◆ m_algResourcePool
SmartIF<IAlgResourcePool> AthenaHiveEventLoopMgr::m_algResourcePool |
|
protected |
◆ m_appMgrProperty
SmartIF<IProperty> AthenaHiveEventLoopMgr::m_appMgrProperty |
|
protected |
◆ m_conditionsCleaner
◆ m_currentRun
◆ m_doEvtHeartbeat
bool AthenaHiveEventLoopMgr::m_doEvtHeartbeat |
|
private |
◆ m_eventPrintoutInterval
UnsignedIntegerProperty AthenaHiveEventLoopMgr::m_eventPrintoutInterval |
|
protected |
◆ m_eventStore
◆ m_evtContext
◆ m_evtIdModSvc
◆ m_evtsel
StringProperty AthenaHiveEventLoopMgr::m_evtsel |
|
protected |
◆ m_evtSelector
IEvtSelector* AthenaHiveEventLoopMgr::m_evtSelector |
|
protected |
◆ m_failureMode
IntegerProperty AthenaHiveEventLoopMgr::m_failureMode |
|
protected |
◆ m_firstEventAlone
bool AthenaHiveEventLoopMgr::m_firstEventAlone |
|
private |
◆ m_firstRun
bool AthenaHiveEventLoopMgr::m_firstRun |
|
protected |
◆ m_flmbi
unsigned int AthenaHiveEventLoopMgr::m_flmbi |
|
private |
◆ m_histoDataMgrSvc
◆ m_histoPersSvc
◆ m_histPersName
StringProperty AthenaHiveEventLoopMgr::m_histPersName |
|
protected |
◆ m_imsg
std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr } |
|
mutableprivateinherited |
◆ m_incidentSvc
◆ m_lastEventContext
EventContext AthenaHiveEventLoopMgr::m_lastEventContext |
|
private |
◆ m_lvl
std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL } |
|
mutableprivateinherited |
◆ 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 AthenaHiveEventLoopMgr::m_nev |
|
private |
◆ m_nevt
unsigned int AthenaHiveEventLoopMgr::m_nevt |
|
private |
◆ m_nm
std::string AthMessaging::m_nm |
|
privateinherited |
◆ m_proc
unsigned int AthenaHiveEventLoopMgr::m_proc |
|
private |
◆ m_requireInputAttributeList
bool AthenaHiveEventLoopMgr::m_requireInputAttributeList {} |
|
protected |
◆ m_scheduledStop
bool AthenaHiveEventLoopMgr::m_scheduledStop |
|
protected |
◆ m_schedulerName
std::string AthenaHiveEventLoopMgr::m_schedulerName |
|
protected |
◆ m_schedulerSvc
SmartIF<IScheduler> AthenaHiveEventLoopMgr::m_schedulerSvc |
|
protected |
◆ m_terminateLoop
bool AthenaHiveEventLoopMgr::m_terminateLoop { false } |
|
private |
◆ m_timeStamp
unsigned int AthenaHiveEventLoopMgr::m_timeStamp { 0 } |
|
private |
◆ m_timeStampInt
unsigned int AthenaHiveEventLoopMgr::m_timeStampInt |
|
private |
◆ m_toolAccept
◆ m_toolInvoke
◆ m_toolReject
◆ m_tools
◆ m_useSecondaryEventNumber
bool AthenaHiveEventLoopMgr::m_useSecondaryEventNumber {} |
|
protected |
◆ m_useTools
bool AthenaHiveEventLoopMgr::m_useTools |
|
private |
◆ m_whiteboard
SmartIF<IHiveWhiteBoard> AthenaHiveEventLoopMgr::m_whiteboard |
|
protected |
◆ m_whiteboardName
std::string AthenaHiveEventLoopMgr::m_whiteboardName |
|
protected |
◆ m_writeHists
bool AthenaHiveEventLoopMgr::m_writeHists |
|
private |
◆ m_writeInterval
UnsignedIntegerProperty AthenaHiveEventLoopMgr::m_writeInterval |
|
private |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
tool_stats m_toolReject
tool returns StatusCode::FAILURE counter
StatusCode record(T *p2BRegistered, const TKEY &key)
Record an object with a key.
std::atomic< MSG::Level > m_lvl
Current logging level.
IEvtSelector * m_evtSelector
Reference to the Event Selector.
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
std::string m_schedulerName
Name of the scheduler to be used.
bool m_useSecondaryEventNumber
read event number from secondary input
tool_store m_tools
internal tool store
IIncidentSvc_t m_incidentSvc
Reference to the incident service.
StatusCode initializeAlgorithms()
Initialize all algorithms and output streams.
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
ServiceHandle< IConversionSvc > IConversionSvc_t
StringProperty m_histPersName
virtual const std::string & name() const override
#define ATH_MSG_VERBOSE(x)
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
StoreGateSvc_t m_eventStore
Reference to StoreGateSvc;.
IntegerProperty m_failureMode
IMessageSvc * getMessageSvc(bool quiet=false)
unsigned int m_timeStampInt
UnsignedIntegerProperty m_eventPrintoutInterval
SmartIF< IScheduler > m_schedulerSvc
A shortcut for the scheduler.
std::string m_whiteboardName
Name of the Whiteboard to be used.
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
virtual StatusCode seek(IEvtSelector::Context &c, int evtnum) const =0
Seek to a given event number.
StatusCode clearWBSlot(int evtSlot)
Clear a slot in the WB.
AthMessaging()
Default constructor:
EventIDBase::event_number_t event_number_t
SmartIF< IProperty > m_appMgrProperty
Property interface of ApplicationMgr.
SmartIF< IAlgExecStateSvc > m_aess
Reference to the Algorithm Execution State Svc.
IEvtIdModifierSvc_t m_evtIdModSvc
tool_store::const_iterator tool_iterator
EventIDBase::number_type number_type
virtual void modifyEventContext(EventContext &ctx, const EventID &eID, bool consume_modifier_stream)
::StatusCode StatusCode
StatusCode definition for legacy code.
EventID * event_ID()
the unique identification of the event.
virtual int size(IEvtSelector::Context &c) const =0
Return the size of the collection, or -1 if we can't get the size.
#define ATH_MSG_ALWAYS(x)
An AttributeList represents a logical row of attributes in a metadata table. The name and type of eac...
#define CHECK(...)
Evaluate an expression and check for errors.
virtual StatusCode clearStore(bool forceRemove=false) override final
clear DataStore contents: called by the event loop mgrs
static Timeout & instance()
Get reference to Timeout singleton.
MsgStream & msg() const
The standard message stream.
virtual StatusCode writeHistograms(bool force=false)
Dump out histograms as needed.
bool m_requireInputAttributeList
require input attribute list
int drainScheduler(int &finishedEvents)
Drain the scheduler from all actions that may be queued.
void setConditionsRun(EventIDBase::number_type conditionsRun)
virtual StatusCode executeEvent(EventContext &&ctx) override
implementation of IEventProcessor::executeEvent(void* par)
virtual EventContext createEventContext() override
Create event context.
This class provides general information about an event. Event information is provided by the accessor...
void setupPreSelectTools(Gaudi::Details::PropertyBase &)
property update handler:sets up the Pre-selection tools
StatusCode recordAddress(const std::string &skey, IOpaqueAddress *pAddress, bool clearAddressFlag=true)
Create a proxy object using an IOpaqueAddress and a transient key.
const T * tryConstRetrieve() const
Class describing the basic event information.
int ir
counter of the current depth
tool_stats m_toolInvoke
tool called counter
ServiceHandle< Athena::IConditionsCleanerSvc > m_conditionsCleaner
#define ATH_MSG_WARNING(x)
bool m_scheduledStop
Scheduled stop of event processing.
std::string m_nm
Message source name.
IConversionSvc_t m_histoPersSvc
EventID eventIDFromxAOD(const xAOD::EventInfo *xaod)
Create EventID object from xAOD::EventInfo.
tool_stats m_toolAccept
tool returns StatusCode::SUCCESS counter
This class provides a unique identification for each event, in terms of run/event number and/or a tim...
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard interface.
int declareEventRootAddress(EventContext &)
Declare the root address of the event.
EventContext m_lastEventContext
StoreGateSvc * eventStore() const
SmartIF< IAlgResourcePool > m_algResourcePool
Reference to the Algorithm resource pool.
void resetTimeout(Timeout &instance)
Reset timeout.
number_type m_currentRun
current run number
void initMessaging() const
Initialize our message level and MessageSvc.
IDataManagerSvc_t m_histoDataMgrSvc
Reference to the Histogram Data Service.
EvtContext * m_evtContext
Gaudi event selector Context (may be used as a cursor by the evt selector)
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
unsigned int m_nev
events processed
EventType eventTypeFromxAOD(const xAOD::EventInfo *xaod)
Create EventType object from xAOD::EventInfo.
UnsignedIntegerProperty m_writeInterval
virtual StatusCode nextEvent(int maxevt) override
implementation of IAppMgrUI::nextEvent. maxevt==0 returns immediately
void setExtendedEventContext(EventContext &ctx, ExtendedEventContext &&ectx)
Move an extended context into a context object.
Abstract interface for seeking for an event selector.
thread_local event_number_t eventIndex