![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
A specialized AthenaEventLoopMgr that allows multiple passes over an event collection.
More...
#include <MultipleEventLoopMgr.h>
A specialized AthenaEventLoopMgr that allows multiple passes over an event collection.
The number of passes is controlled by a tool called at the end of each pass over the events that implements the INextPassFilter interface (specified using the NextPassFilter property). At the end of each pass the event selector is rewound and the services listed in the ToBeReinitialized property are reinitialized. Typically MultipleEventLoopMgr will be used for calibration jobs, with the INextPassFilter object looking at the status of the constants in the DetectorStore
Definition at line 52 of file MultipleEventLoopMgr.h.
◆ EvtContext
◆ IConversionSvc_t
◆ IDataManagerSvc_t
◆ IEvtIdModifierSvc_t
◆ IIncidentSvc_t
◆ number_type
◆ StoreGateSvc_t
◆ tool_iterator
◆ tool_stats
◆ tool_stats_iterator
◆ tool_store
◆ tool_type
◆ MultipleEventLoopMgr() [1/3]
MultipleEventLoopMgr::MultipleEventLoopMgr |
( |
const std::string & |
nam, |
|
|
ISvcLocator * |
svcLoc |
|
) |
| |
◆ ~MultipleEventLoopMgr()
MultipleEventLoopMgr::~MultipleEventLoopMgr |
( |
| ) |
|
|
virtual |
◆ MultipleEventLoopMgr() [2/3]
MultipleEventLoopMgr::MultipleEventLoopMgr |
( |
| ) |
|
|
private |
implementation of IEventProcessor::executeEvent(void* par)
no implementation
◆ MultipleEventLoopMgr() [3/3]
◆ algMgr()
IAlgManager * MultipleEventLoopMgr::algMgr |
( |
| ) |
|
|
private |
Definition at line 39 of file MultipleEventLoopMgr.cxx.
41 SmartIF<IAlgManager> algMan(serviceLocator());
42 if( algMan.isValid() )
m_pAlgMgr=&*algMan;
43 else throw GaudiException(
"IAlgManager not found",
name(), StatusCode::FAILURE);
◆ curEvent()
int AthenaEventLoopMgr::curEvent |
( |
| ) |
const |
|
virtualinherited |
◆ DeclareInterfaceID()
IEventSeek::DeclareInterfaceID |
( |
IEventSeek |
, |
|
|
1 |
, |
|
|
0 |
|
|
) |
| |
|
inherited |
◆ doNextPass()
bool MultipleEventLoopMgr::doNextPass |
( |
| ) |
|
|
private |
called at end of pass. Calls nextPassFilter
if true start another pass
Definition at line 75 of file MultipleEventLoopMgr.cxx.
79 return (
nullptr != pFilter && pFilter->doNextPass() );
◆ eventStore()
◆ execAtPreFork()
StatusCode AthenaEventLoopMgr::execAtPreFork |
( |
const EventContext & |
ctx | ) |
const |
|
inherited |
Execute certain algorithms/sequences in PreFork.
Definition at line 1003 of file AthenaEventLoopMgr.cxx.
1004 const IAlgManager* algMgr = Gaudi::svcLocator()->as<IAlgManager>();
1005 IAlgorithm*
alg{
nullptr};
1009 if ( algMgr->getAlgorithm(
name,
alg) ) {
1011 sc &=
alg->sysExecute(ctx);
◆ executeAlgorithms()
StatusCode AthenaEventLoopMgr::executeAlgorithms |
( |
const EventContext & |
ctx | ) |
|
|
protectedvirtualinherited |
Run the algorithms for the current event.
Reimplemented in PyAthenaEventLoopMgr.
Definition at line 529 of file AthenaEventLoopMgr.cxx.
533 ita != m_topAlgList.end();
540 m_aess->algExecState(*ita,ctx).setState(AlgExecState::State::Done,
sc);
541 if ( !
sc.isSuccess() ) {
543 << (*ita)->name() <<
" failed with StatusCode::" <<
sc );
548 return StatusCode::SUCCESS;
◆ 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 555 of file AthenaEventLoopMgr.cxx.
559 m_incidentSvc->fireIncident(Incident(
"BeginEvent",IncidentType::BeginEvent));
561 m_incidentSvc->fireIncident(Incident(
"EndEvent",IncidentType::EndEvent));
583 bool toolsPassed=
true;
584 bool eventFailed =
false;
586 unsigned int toolCtr=0;
591 while(toolsPassed && theTool!=lastTool )
593 toolsPassed = (*theTool)->passEvent(ctx.eventID());
602 uint64_t evtNumber = ctx.eventID().event_number();
606 if (doEvtHeartbeat) {
608 ATH_MSG_INFO (
" ===>>> start processing event #" << evtNumber <<
", run #" <<
m_currentRun <<
" " <<
m_nev <<
" events processed so far <<<===" );
617 <<
" events processed so far <<<===" );
627 if ( m_scheduledStop ) {
628 ATH_MSG_ALWAYS (
"A stopRun was requested by an incidentListener. "
629 <<
"Do not process this event." );
630 return (StatusCode::SUCCESS);
638 if(!
sc.isSuccess()) {
640 m_aess->setEventStatus( EventStatus::AlgFail, ctx );
647 <<
"Skipping remaining algorithms." << std::endl
648 <<
"\tNo output will be written for this event, "
649 <<
"but job will continue to next event" );
655 ATH_MSG_INFO (
"Skipping remaining algorithms." << std::endl
656 <<
"\tNo output will be written for this event, "
657 <<
"but job will continue to next event" );
663 m_aess->setEventStatus( EventStatus::Success, ctx );
667 ito != m_outStreamList.end(); ++ito ) {
668 sc = (*ito)->sysExecute(ctx);
669 if( !
sc.isSuccess() ) {
683 if (doEvtHeartbeat) {
687 <<
" " <<
m_nev <<
" events processed so far <<<===");
691 <<
" events processed so far <<<===");
693 std::ofstream
outfile(
"eventLoopHeartBeat.txt");
698 <<
" " <<
m_nev <<
" events read so far <<<===" << std::endl;
707 return eventFailed?StatusCode::FAILURE:StatusCode::SUCCESS;
◆ executeRun()
StatusCode AthenaEventLoopMgr::executeRun |
( |
int |
maxevt | ) |
|
|
virtualinherited |
implementation of IEventProcessor::executeRun(int maxevt)
Definition at line 714 of file AthenaEventLoopMgr.cxx.
716 if (!(this->
nextEvent(maxevt)).isSuccess())
return StatusCode::FAILURE;
720 return StatusCode::SUCCESS;
◆ finalize()
StatusCode AthenaEventLoopMgr::finalize |
( |
| ) |
|
|
virtualinherited |
implementation of IAppMgrUI::finalize
Reimplemented in PyAthenaEventLoopMgr.
Definition at line 382 of file AthenaEventLoopMgr.cxx.
386 if (
sc.isFailure()) {
391 if (sc2.isFailure()) {
407 unsigned int toolCtr = 0;
408 ATH_MSG_INFO (
"Summary of AthenaEvtLoopPreSelectTool invocation: (invoked/success/failure)" );
409 ATH_MSG_INFO (
"-----------------------------------------------------" );
411 for ( ; firstTool != lastTool; ++firstTool ) {
412 ATH_MSG_INFO ( std::setw(2) << std::setiosflags(std::ios_base::right)
413 << toolCtr+1 <<
".) " << std::resetiosflags(std::ios_base::right)
414 << std::setw(48) << std::setfill(
'.')
415 << std::setiosflags(std::ios_base::left)
416 << (*firstTool)->name() << std::resetiosflags(std::ios_base::left)
419 << std::setw(6) << std::setiosflags(std::ios_base::right)
430 return (
sc.isFailure() || sc2.isFailure() ) ? StatusCode::FAILURE :
◆ handle()
void AthenaEventLoopMgr::handle |
( |
const Incident & |
inc | ) |
|
|
inherited |
IIncidentListenet interfaces.
Definition at line 922 of file AthenaEventLoopMgr.cxx.
924 if(inc.type()!=
"BeforeFork")
928 ATH_MSG_WARNING (
"Skipping BeforeFork handler. Begin run has already passed" );
940 ATH_MSG_WARNING (
"Skipping BeforeFork handler. No event selector is provided" );
945 IOpaqueAddress* addr =
nullptr;
947 if(!
sc.isSuccess()) {
952 if (
sc.isFailure()) {
956 if (
nullptr != addr) {
959 if(!
sc.isSuccess()) {
965 if(
eventStore()->loadEventProxies().isFailure()) {
977 throw std::runtime_error(
"Error installing event context object" );
986 ATH_MSG_ERROR (
"Unable to execute requested algorithms/sequences during PreFork!" );
994 if(!
sc.isSuccess()) {
◆ initialize()
StatusCode AthenaEventLoopMgr::initialize |
( |
| ) |
|
|
virtualinherited |
implementation of IAppMgrUI::initalize
Reimplemented in PyAthenaEventLoopMgr.
Definition at line 129 of file AthenaEventLoopMgr.cxx.
133 m_autoRetrieveTools =
false;
134 m_checkToolDeps =
false;
137 if ( !
sc.isSuccess() )
139 ATH_MSG_ERROR (
"Failed to initialize base class MinimalEventLoopMgr" );
148 if( !
sc.isSuccess() )
150 ATH_MSG_FATAL (
"Error retrieving pointer to StoreGateSvc" );
159 if( !
sc.isSuccess() )
168 SmartIF<IProperty> prpMgr(serviceLocator());
169 if ( !prpMgr.isValid() )
171 ATH_MSG_FATAL (
"IProperty interface not found in ApplicationMgr." );
172 return StatusCode::FAILURE;
180 if( !
sc.isSuccess() )
187 if ( histPersName.length() == 0 )
189 CHECK(setProperty(prpMgr->getProperty(
"HistogramPersistency")));
192 if ( histPersName !=
"NONE" ) {
197 if( !sc.isSuccess() ) {
198 ATH_MSG_WARNING (
"Histograms cannot not be saved - though required." );
201 IService *is =
nullptr;
202 if (histPersName ==
"ROOT") {
203 sc = serviceLocator()->service(
"RootHistSvc", is);
204 }
else if ( histPersName ==
"HBOOK" ) {
205 sc = serviceLocator()->service(
"HbookHistSvc", is);
208 if (
sc.isFailure()) {
209 ATH_MSG_ERROR (
"could not locate actual Histogram persistency service" );
213 ATH_MSG_ERROR (
"Could not dcast HistPersSvc to a Service" );
215 const Gaudi::Details::PropertyBase &prop =
s->getProperty(
"OutputFile");
218 const StringProperty &sprop =
dynamic_cast<const StringProperty&
>( prop );
223 ATH_MSG_VERBOSE (
"could not dcast OutputFile property to a StringProperty."
224 <<
" Need to fix Gaudi." );
226 val = prop.toString();
234 val !=
"UndefinedROOTOutputFileName" &&
235 val !=
"UndefinedHbookOutputFileName" ) {
252 ATH_MSG_DEBUG (
"EventID modifier Service not set. No run number, ... overrides will be applied." );
255 ATH_MSG_INFO (
"Could not find EventID modifier Service. No run number, ... overrides will be applied." );
264 sc = setProperty(prpMgr->getProperty(
"EvtSel"));
269 IEvtSelector* theEvtSel(
nullptr);
279 return StatusCode::FAILURE;
281 if (msgLevel(MSG::INFO)) {
282 INamedInterface* named (
dynamic_cast< INamedInterface*
>(theEvtSel));
283 if (
nullptr != named) {
284 ATH_MSG_INFO (
"Setup EventSelector service " << named->name( )
288 }
else if (
sc.isFailure()) {
291 return StatusCode::FAILURE;
301 return StatusCode::FAILURE;
305 m_aess = serviceLocator()->service(
"AlgExecStateSvc");
308 return StatusCode::FAILURE;
◆ initializeAlgorithms()
StatusCode AthenaEventLoopMgr::initializeAlgorithms |
( |
| ) |
|
|
protectedinherited |
Initialize all algorithms and output streams.
Definition at line 494 of file AthenaEventLoopMgr.cxx.
499 for ( ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ++ita )
512 for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ++ita )
515 if(
sc.isFailure() ) {
523 return StatusCode::SUCCESS;
◆ 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.
◆ installEventContext()
StatusCode AthenaEventLoopMgr::installEventContext |
( |
EventContext & |
ctx | ) |
|
|
privateinherited |
Definition at line 1050 of file AthenaEventLoopMgr.cxx.
1052 std::unique_ptr<EventInfo> eventInfo;
1054 unsigned int conditionsRun = EventIDBase::UNDEFNUM;
1055 bool consume_modifier_stream =
false;
1062 if (pAttrList !=
nullptr && pAttrList->size() > 6) {
1065 unsigned int runNumber = (*pAttrList)[
"RunNumber"].data<
unsigned int>();
1066 unsigned long long eventNumber = (*pAttrList)[
"EventNumber"].data<
unsigned long long>();
1067 unsigned int eventTime = (*pAttrList)[
"EventTime"].data<
unsigned int>();
1068 unsigned int eventTimeNS = (*pAttrList)[
"EventTimeNanoSec"].data<
unsigned int>();
1069 unsigned int lumiBlock = (*pAttrList)[
"LumiBlockN"].data<
unsigned int>();
1070 unsigned int bunchId = (*pAttrList)[
"BunchId"].data<
unsigned int>();
1073 consume_modifier_stream =
true;
1077 unsigned long long eventNumberSecondary{};
1078 if (!(pAttrList->exists(
"hasSecondaryInput") &&
1079 (*pAttrList)[
"hasSecondaryInput"].data<
bool>())) {
1080 ATH_MSG_FATAL(
"Secondary EventNumber requested, but secondary input does not exist!");
1081 return StatusCode::FAILURE;
1083 if (pAttrList->exists(
"EventNumber_secondary")) {
1084 eventNumberSecondary = (*pAttrList)[
"EventNumber_secondary"].data<
unsigned long long>();
1089 if (pEventSecondary) {
1090 eventNumberSecondary = pEventSecondary->
event_ID()->event_number();
1092 ATH_MSG_FATAL(
"Secondary EventNumber requested, but it does not exist!");
1093 return StatusCode::FAILURE;
1096 if (eventNumberSecondary != 0) {
1099 if (doEvtHeartbeat) {
1101 << eventNumberSecondary <<
" instead of #"
1108 eventInfo = std::make_unique<EventInfo>(
1111 eventID = *(eventInfo->
event_ID());
1113 if (!
m_evtIdModSvc.isSet() && pAttrList->exists(
"ConditionsRun")) {
1114 conditionsRun = (*pAttrList)[
"ConditionsRun"].data<
unsigned int>();
1134 ATH_MSG_FATAL(
"Valid input attribute list required but not present!");
1135 return StatusCode::FAILURE;
1149 if (xAODEvent ==
nullptr) {
1150 ATH_MSG_ERROR(
"Failed to get EventID from input. Tried old-style and xAOD::EventInfo");
1151 return StatusCode::FAILURE;
1155 eventInfo = std::make_unique<EventInfo>(
1158 eventID = *(eventInfo->
event_ID());
1160 if (!
sc.isSuccess()) {
1162 return StatusCode::FAILURE;
1171 eventID = *(eventInfo->
event_ID());
1173 if (!
sc.isSuccess()) {
1175 return (StatusCode::FAILURE);
1179 ctx.setEventID( eventID );
1185 Gaudi::Hive::setCurrentContext( ctx );
1188 if (
eventStore()->record(std::make_unique<EventContext> ( ctx ),
1189 "EventContext").isFailure())
1192 return (StatusCode::FAILURE);
1195 return StatusCode::SUCCESS;
◆ interfaceID()
static const InterfaceID& ICollectionSize::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
◆ modifyEventContext()
void AthenaEventLoopMgr::modifyEventContext |
( |
EventContext & |
ctx, |
|
|
const EventID & |
eID, |
|
|
bool |
consume_modifier_stream |
|
) |
| |
|
virtualinherited |
Definition at line 1200 of file AthenaEventLoopMgr.cxx.
1206 unsigned int oldrunnr=eID.run_number();
1207 unsigned int oldLB=eID.lumi_block();
1208 unsigned int oldTS=eID.time_stamp();
1209 unsigned int oldTSno=eID.time_stamp_ns_offset();
1210 ATH_MSG_DEBUG (
"modifyEventContext: use evtIdModSvc runnr=" << oldrunnr <<
" -> " << new_eID.run_number() );
1211 ATH_MSG_DEBUG (
"modifyEventContext: use evtIdModSvc LB=" << oldLB <<
" -> " << new_eID.lumi_block() );
1212 ATH_MSG_DEBUG (
"modifyEventContext: use evtIdModSvc TimeStamp=" << oldTS <<
" -> " << new_eID.time_stamp() );
1213 ATH_MSG_DEBUG (
"modifyEventContext: use evtIdModSvc TimeStamp ns Offset=" << oldTSno <<
" -> " << new_eID.time_stamp_ns_offset() );
1215 ctx.setEventID( new_eID );
1220 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 |
|
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.
◆ 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
-
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 |
|
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 86 of file AthMessaging.h.
◆ name()
virtual const std::string& AthenaEventLoopMgr::name |
( |
| ) |
const |
|
inlinevirtualinherited |
◆ nextEvent()
StatusCode MultipleEventLoopMgr::nextEvent |
( |
int |
maxevt | ) |
|
|
virtual |
Dump out histograms as needed.
Run the algorithms for the current event implementation of IAppMgrUI::initalize implementation of IAppMgrUI::finalize implementation of IAppMgrUI::nextEvent
Reimplemented from AthenaEventLoopMgr.
Definition at line 97 of file MultipleEventLoopMgr.cxx.
107 }
while (
sc.isSuccess() &&
110 (
sc =
seek(0)).isSuccess() );
◆ nextPassFilter()
Locate filter.
Parses m_nextPassFilterName allowing for interactive changes.
Definition at line 50 of file MultipleEventLoopMgr.cxx.
53 if (!(filterName.empty())) {
54 ListItem theFilter(filterName);
55 IAlgTool* pHoldTool(
nullptr);
56 if ( (
m_pToolSvc->retrieveTool(theFilter.type(), theFilter.name(),
57 pHoldTool)).isSuccess() ) {
60 IAlgorithm* pHoldAlg(
nullptr);
61 if (
nullptr == pFilter &&
62 (
algMgr()->getAlgorithm(theFilter.name(), pHoldAlg)).isSuccess() ) {
66 if (
nullptr == pFilter) {
67 ListItem theFilter(filterName);
69 log << MSG::WARNING <<
"Could not locate filter "
70 << theFilter.type() <<
'/' << theFilter.name() <<
endmsg;
◆ queryInterface()
StatusCode AthenaEventLoopMgr::queryInterface |
( |
const InterfaceID & |
riid, |
|
|
void ** |
ppvInterface |
|
) |
| |
|
virtualinherited |
interface dispatcher
Definition at line 1026 of file AthenaEventLoopMgr.cxx.
1029 if ( IEventSeek::interfaceID().versionMatch(riid) ) {
1030 *ppvInterface =
dynamic_cast<IEventSeek*
>(
this);
1036 return MinimalEventLoopMgr::queryInterface(riid, ppvInterface);
1039 return StatusCode::SUCCESS;
◆ reInitList()
StatusCode MultipleEventLoopMgr::reInitList |
( |
| ) |
|
|
private |
called at each end of pass.
Parses m_toBeReInitializedNames allowing for interactive changes
Definition at line 82 of file MultipleEventLoopMgr.cxx.
85 vector<string>::const_iterator iN(theNames.begin());
86 vector<string>::const_iterator iEnd(theNames.end());
87 while (
sc.isSuccess() && (iN != iEnd) ) {
88 ListItem theSvc(*iN++);
89 IService* pSvc(
nullptr);
90 sc = serviceLocator()->getService(theSvc.name(), pSvc);
91 if (
sc.isSuccess())
sc = pSvc->reinitialize();
◆ resetTimeout()
void Athena::TimeoutMaster::resetTimeout |
( |
Timeout & |
instance | ) |
|
|
inlineprotectedinherited |
Reset timeout.
Definition at line 83 of file Timeout.h.
◆ seek()
StatusCode AthenaEventLoopMgr::seek |
( |
int |
evt | ) |
|
|
virtualinherited |
Seek to a given event.
Implements IEventSeek.
Definition at line 862 of file AthenaEventLoopMgr.cxx.
866 ATH_MSG_ERROR (
"Seek failed; unsupported by event selector" );
867 return StatusCode::FAILURE;
872 ATH_MSG_FATAL (
"Can not create the event selector Context." );
873 return StatusCode::FAILURE;
879 if (
sc.isSuccess()) {
◆ 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 329 of file AthenaEventLoopMgr.cxx.
332 if ( policyName !=
"BeginEvent" &&
333 policyName !=
"EndEvent" ) {
336 <<
"] for the 'ClearStore-policy !"
338 <<
"Valid values are: BeginEvent, EndEvent"
340 throw GaudiException(
"Can not setup 'ClearStore'-policy",
342 StatusCode::FAILURE);
◆ setLevel()
void AthMessaging::setLevel |
( |
MSG::Level |
lvl | ) |
|
|
inherited |
◆ setTimeout()
void Athena::TimeoutMaster::setTimeout |
( |
Timeout & |
instance | ) |
|
|
inlineprotectedinherited |
◆ setupPreSelectTools()
void AthenaEventLoopMgr::setupPreSelectTools |
( |
Gaudi::Details::PropertyBase & |
| ) |
|
|
protectedinherited |
property update handler:sets up the Pre-selection tools
Definition at line 349 of file AthenaEventLoopMgr.cxx.
364 unsigned int toolCtr = 0;
365 for ( ; firstTool != lastTool; ++firstTool )
◆ size()
int AthenaEventLoopMgr::size |
( |
| ) |
|
|
virtualinherited |
◆ writeHistograms()
StatusCode AthenaEventLoopMgr::writeHistograms |
( |
bool |
force = false | ) |
|
|
protectedvirtualinherited |
Dump out histograms as needed.
Definition at line 438 of file AthenaEventLoopMgr.cxx.
443 std::vector<DataObject*>
objects;
445 DataObject*
obj =
reg->object();
446 if ( !
obj ||
obj->clID() == CLID_StatisticsFile )
return false;
451 if ( !
sc.isSuccess() ) {
452 ATH_MSG_ERROR (
"Error while traversing Histogram data store" );
460 (writeInterval != 0 &&
m_nevt%writeInterval == 0) ) {
464 IOpaqueAddress* pAddr =
nullptr;
466 if ( iret.isFailure() )
return iret;
467 i->registry()->setAddress( pAddr );
471 IRegistry*
reg =
i->registry();
473 return iret.isFailure() ? iret : isc;
475 if ( !
sc.isSuccess() ) {
480 if (
force || (writeInterval != 0 &&
m_nevt%writeInterval == 0) ) {
◆ SvcFactory< MultipleEventLoopMgr >
◆ ATLAS_THREAD_SAFE
std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT |
|
mutableprivateinherited |
◆ m_aess
SmartIF<IAlgExecStateSvc> AthenaEventLoopMgr::m_aess |
|
protectedinherited |
◆ m_chronoStatSvc
ServiceHandle<IChronoStatSvc> AthenaEventLoopMgr::m_chronoStatSvc |
|
privateinherited |
◆ m_clearStorePolicy
StringProperty AthenaEventLoopMgr::m_clearStorePolicy |
|
protectedinherited |
◆ m_conditionsCleaner
◆ m_currentRun
◆ m_doChrono
bool AthenaEventLoopMgr::m_doChrono = false |
|
privateinherited |
◆ m_eventPrintoutInterval
UnsignedIntegerProperty AthenaEventLoopMgr::m_eventPrintoutInterval |
|
protectedinherited |
◆ m_eventStore
◆ m_evtIdModSvc
◆ m_evtsel
StringProperty AthenaEventLoopMgr::m_evtsel |
|
protectedinherited |
◆ m_evtSelCtxt
IEvtSelector::Context* AthenaEventLoopMgr::m_evtSelCtxt |
|
protectedinherited |
◆ m_evtSelector
IEvtSelector* AthenaEventLoopMgr::m_evtSelector |
|
protectedinherited |
◆ m_execAtPreFork
StringArrayProperty AthenaEventLoopMgr::m_execAtPreFork |
|
protectedinherited |
◆ m_failureMode
IntegerProperty AthenaEventLoopMgr::m_failureMode |
|
protectedinherited |
◆ m_firstRun
bool AthenaEventLoopMgr::m_firstRun |
|
protectedinherited |
◆ m_histoDataMgrSvc
◆ m_histoPersSvc
◆ m_histPersName
StringProperty AthenaEventLoopMgr::m_histPersName |
|
protectedinherited |
◆ m_imsg
std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr } |
|
mutableprivateinherited |
◆ m_incidentSvc
◆ m_intervalInSeconds
unsigned int AthenaEventLoopMgr::m_intervalInSeconds |
|
privateinherited |
◆ m_lastNev
unsigned int AthenaEventLoopMgr::m_lastNev {} |
|
privateinherited |
◆ m_lastTime
time_t AthenaEventLoopMgr::m_lastTime {} |
|
privateinherited |
◆ m_liteLoop
bool AthenaEventLoopMgr::m_liteLoop |
|
privateinherited |
◆ 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 AthenaEventLoopMgr::m_nev |
|
privateinherited |
◆ m_nevt
int AthenaEventLoopMgr::m_nevt {} |
|
privateinherited |
◆ m_nextPassFilterName
StringProperty MultipleEventLoopMgr::m_nextPassFilterName |
|
private |
◆ m_nm
std::string AthMessaging::m_nm |
|
privateinherited |
◆ m_pAlgMgr
IAlgManager* MultipleEventLoopMgr::m_pAlgMgr |
|
private |
◆ m_passDone
unsigned int MultipleEventLoopMgr::m_passDone |
|
private |
◆ m_proc
unsigned int AthenaEventLoopMgr::m_proc |
|
privateinherited |
◆ m_pToolSvc
◆ m_requireInputAttributeList
bool AthenaEventLoopMgr::m_requireInputAttributeList {} |
|
protectedinherited |
◆ m_toBeReInitializedNames
StringArrayProperty MultipleEventLoopMgr::m_toBeReInitializedNames |
|
private |
◆ m_toolAccept
◆ m_toolInvoke
◆ m_toolReject
◆ m_tools
◆ m_useSecondaryEventNumber
bool AthenaEventLoopMgr::m_useSecondaryEventNumber {} |
|
protectedinherited |
◆ m_useTools
bool AthenaEventLoopMgr::m_useTools |
|
privateinherited |
◆ m_writeHists
bool AthenaEventLoopMgr::m_writeHists {} |
|
privateinherited |
◆ m_writeInterval
IntegerProperty AthenaEventLoopMgr::m_writeInterval |
|
privateinherited |
The documentation for this class was generated from the following files:
JetConstituentVector::iterator iterator
StatusCode record(T *p2BRegistered, const TKEY &key)
Record an object with a key.
std::atomic< MSG::Level > m_lvl
Current logging level.
IEvtIdModifierSvc_t m_evtIdModSvc
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
tool_stats m_toolAccept
tool returns StatusCode::SUCCESS counter
interface to a tool (typically) that decides whether the event loop mgr (typically) need to do anothe...
tool_store m_tools
internal tool store
IEvtSelector::Context * m_evtSelCtxt
Gaudi EventSelector Context (may be used as a cursor by the evt selector)
ServiceHandle< IToolSvc > m_pToolSvc
handle to the ToolSvc
This class represents the "type of event" where the type is given by one or more "characteristics".
StoreGateSvc * eventStore() const
virtual const std::string & name() const
ServiceHandle< Athena::IConditionsCleanerSvc > m_conditionsCleaner
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
StringProperty m_histPersName
ClearStorePolicy::Type clearStorePolicy(const std::string &policyName, MsgStream &msg)
returns the enum-version of the policy (by name)
StringProperty m_nextPassFilterName
the name of the INextPassFilter object queried at end of pass
IEvtSelector * m_evtSelector
Reference to the Event Selector.
IntegerProperty m_failureMode
StatusCode reInitList()
called at each end of pass.
#define ATH_MSG_VERBOSE(x)
IIncidentSvc_t m_incidentSvc
Reference to the incident service.
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
reg
globals -----------------------------------------------------------------—
StoreGateSvc_t m_eventStore
Reference to StoreGateSvc;.
IMessageSvc * getMessageSvc(bool quiet=false)
uint32_t runNumber() const
The current event's run number.
IntegerProperty m_writeInterval
number_type m_currentRun
current run number
unsigned int m_nev
events processed
virtual void modifyEventContext(EventContext &ctx, const EventID &eID, bool consume_modifier_stream)
StatusCode installEventContext(EventContext &ctx)
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
INextPassFilter * nextPassFilter()
Locate filter.
virtual StatusCode seek(IEvtSelector::Context &c, int evtnum) const =0
Seek to a given event number.
virtual StatusCode nextEvent(int maxevt)
implementation of IAppMgrUI::nextEvent. maxevt==0 returns immediately
StatusCode initializeAlgorithms()
Initialize all algorithms and output streams.
ServiceHandle< IConversionSvc > IConversionSvc_t
static const InterfaceID & interfaceID()
StatusCode execAtPreFork(const EventContext &ctx) const
Execute certain algorithms/sequences in PreFork.
msgSvc
Provide convenience handles for various services.
bool m_requireInputAttributeList
require input attribute list
IConversionSvc_t m_histoPersSvc
::StatusCode StatusCode
StatusCode definition for legacy code.
SmartIF< IAlgExecStateSvc > m_aess
Reference to the Algorithm Execution State Svc.
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.
virtual StatusCode seek(int evt)
Seek to a given event.
StringArrayProperty m_execAtPreFork
#define ATH_MSG_ALWAYS(x)
Abstract interface for finding the size of an event collection.
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.
UnsignedIntegerProperty m_eventPrintoutInterval
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.
tool_stats m_toolInvoke
tool called counter
void setConditionsRun(EventIDBase::number_type conditionsRun)
tool_stats m_toolReject
tool returns StatusCode::FAILURE counter
StringProperty m_clearStorePolicy
This class provides general information about an event. Event information is provided by the accessor...
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.
bool m_useSecondaryEventNumber
read event number from secondary input
void setClearStorePolicy(Gaudi::Details::PropertyBase &clearStorePolicy)
property update handler:set the clear-store policy value and check its value.
StringArrayProperty m_toBeReInitializedNames
a list of services to be reinit at the end of the pass
def time(flags, cells_name, *args, **kw)
unsigned int m_intervalInSeconds
#define ATH_MSG_WARNING(x)
std::string m_nm
Message source name.
EventID eventIDFromxAOD(const xAOD::EventInfo *xaod)
Create EventID object from xAOD::EventInfo.
This class provides a unique identification for each event, in terms of run/event number and/or a tim...
virtual StatusCode writeHistograms(bool force=false)
Dump out histograms as needed.
tool_store::const_iterator tool_iterator
Abstract interface for seeking within an event stream.
AthenaEventLoopMgr()
no implementation
void resetTimeout(Timeout &instance)
Reset timeout.
void initMessaging() const
Initialize our message level and MessageSvc.
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
unsigned int m_passDone
number of passes already completed
EventType eventTypeFromxAOD(const xAOD::EventInfo *xaod)
Create EventType object from xAOD::EventInfo.
virtual StatusCode executeAlgorithms(const EventContext &)
Run the algorithms for the current event.
void setExtendedEventContext(EventContext &ctx, ExtendedEventContext &&ectx)
Move an extended context into a context object.
IDataManagerSvc_t m_histoDataMgrSvc
Reference to the Histogram Data Service.
Abstract interface for seeking for an event selector.
bool doNextPass()
called at end of pass. Calls nextPassFilter
thread_local event_number_t eventIndex