![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
This class is the EventSelector for event data.
More...
#include <EventSelectorAthenaPool.h>
|
| EventSelectorAthenaPool (const std::string &name, ISvcLocator *pSvcLocator) |
| Standard Service Constructor. More...
|
|
virtual | ~EventSelectorAthenaPool () |
| Destructor. More...
|
|
virtual StatusCode | initialize () override |
| Required of all Gaudi Services. More...
|
|
virtual StatusCode | start () override |
|
virtual StatusCode | stop () override |
|
virtual StatusCode | finalize () override |
|
virtual StatusCode | queryInterface (const InterfaceID &riid, void **ppvInterface) override |
| Does this object satisfy a given interface? See Gaudi documentation for details. More...
|
|
virtual StatusCode | createContext (IEvtSelector::Context *&ctxt) const override |
| create context More...
|
|
virtual StatusCode | next (IEvtSelector::Context &ctxt) const override |
|
virtual StatusCode | next (IEvtSelector::Context &ctxt, int jump) const override |
|
virtual StatusCode | previous (IEvtSelector::Context &ctxt) const override |
|
virtual StatusCode | previous (IEvtSelector::Context &ctxt, int jump) const override |
|
virtual StatusCode | last (IEvtSelector::Context &ctxt) const override |
|
virtual StatusCode | rewind (IEvtSelector::Context &ctxt) const override |
|
virtual StatusCode | createAddress (const IEvtSelector::Context &ctxt, IOpaqueAddress *&iop) const override |
|
virtual StatusCode | releaseContext (IEvtSelector::Context *&ctxt) const override |
|
virtual StatusCode | resetCriteria (const std::string &criteria, IEvtSelector::Context &ctxt) const override |
| Set a selection criteria. More...
|
|
virtual StatusCode | seek (Context &ctxt, int evtnum) const override |
| Seek to a given event number. More...
|
|
virtual int | curEvent (const Context &ctxt) const override |
| Return the current event number. More...
|
|
virtual int | size (Context &ctxt) const override |
| Return the size of the collection. More...
|
|
virtual StatusCode | makeServer (int num) override |
| Make this a server. More...
|
|
virtual StatusCode | makeClient (int num) override |
| Make this a client. More...
|
|
virtual StatusCode | share (int evtnum) override |
| Request to share a given event number. More...
|
|
virtual StatusCode | readEvent (int maxevt) override |
| Read the next maxevt events. More...
|
|
virtual StatusCode | io_reinit () override |
| Callback method to reinitialize the internal state of the component for I/O purposes (e.g. upon fork(2) ) More...
|
|
virtual StatusCode | io_finalize () override |
| Callback method to finalize the internal state of the component for I/O purposes (e.g. before fork(2) ) More...
|
|
virtual void | handle (const Incident &incident) override |
| Incident service handle listening for BeginProcessing and EndProcessing. More...
|
|
|
EventContextAthenaPool * | m_endIter {} |
|
PoolCollectionConverter *m_poolCollectionConverter | ATLAS_THREAD_SAFE {} |
|
pool::ICollectionCursor *m_headerIterator | ATLAS_THREAD_SAFE {} |
|
Guid m_guid | ATLAS_THREAD_SAFE {} |
|
std::map< SG::SourceID, int > m_activeEventsPerSource | ATLAS_THREAD_SAFE |
|
ServiceHandle< IAthenaPoolCnvSvc > | m_athenaPoolCnvSvc {this, "AthenaPoolCnvSvc", "AthenaPoolCnvSvc", ""} |
|
ServiceHandle< IIncidentSvc > | m_incidentSvc {this, "IncidentSvc", "IncidentSvc", ""} |
|
Gaudi::Property< bool > | m_isSecondary {this, "IsSecondary", false, ""} |
| IsSecondary, know if this is an instance of secondary event selector. More...
|
|
Gaudi::Property< bool > | m_processMetadata {this, "ProcessMetadata", true, ""} |
| ProcessMetadata, switch on firing of FileIncidents which will trigger processing of metadata: default = true. More...
|
|
Gaudi::Property< std::string > | m_collectionType {this, "CollectionType", "ImplicitROOT", ""} |
| CollectionType, type of the collection: default = "ImplicitROOT". More...
|
|
Gaudi::Property< std::string > | m_collectionTree {this, "CollectionTree", APRDefaults::TTreeNames::DataHeader, ""} |
| CollectionTree, prefix of the collection TTree: default = "POOLContainer". More...
|
|
Gaudi::Property< std::string > | m_connection {this, "Connection", "", ""} |
| Connection, connection string. More...
|
|
Gaudi::Property< std::string > | m_refName {this, "RefName", "", ""} |
| RefName, attribute name. More...
|
|
Gaudi::Property< std::string > | m_attrListKey {this, "AttributeListKey", "Input", ""} |
| AttributeList SG key. More...
|
|
Gaudi::Property< std::vector< std::string > > | m_inputCollectionsProp {this, "InputCollections", {}, ""} |
| InputCollections, vector with names of the input collections. More...
|
|
std::vector< std::string >::const_iterator m_inputCollectionsIterator | ATLAS_THREAD_SAFE |
|
bool m_inputCollectionsChanged | ATLAS_THREAD_SAFE |
| flag to notify the EvSel that the inputs were changed and reinit() needs to be called ASAP More...
|
|
Gaudi::Property< std::string > | m_query {this, "Query", "", ""} |
| Query string passed to APR when opening DataHeader container (kind of useless). More...
|
|
Gaudi::Property< bool > | m_keepInputFilesOpen {this, "KeepInputFilesOpen", false, ""} |
| KeepInputFilesOpen, boolean flag to keep files open after PoolCollection reaches end: default = false. More...
|
|
ToolHandleArray< IAthenaSelectorTool > m_helperTools | ATLAS_THREAD_SAFE {this} |
| HelperTools, vector of names of AlgTools that are executed by the EventSelector. More...
|
|
ToolHandle< IAthenaSelectorTool > | m_counterTool {this, "CounterTool", "", ""} |
|
ToolHandle< IAthenaIPCTool > | m_eventStreamingTool {this, "SharedMemoryTool", "", ""} |
|
IntegerProperty | m_makeStreamingToolClient {this,"MakeStreamingToolClient",0} |
| Make this instance a Streaming Client during first iteration automatically. More...
|
|
Gaudi::CheckedProperty< int > | m_runNo {this, "RunNumber", 0, ""} |
| The following are included for compatibility with McEventSelector and are not really used. More...
|
|
Gaudi::CheckedProperty< int > | m_oldRunNo {this, "OldRunNumber", 0, ""} |
|
Gaudi::Property< bool > | m_overrideRunNumber {this, "OverrideRunNumber", false, ""} |
|
Gaudi::Property< bool > | m_overrideRunNumberFromInput {this, "OverrideRunNumberFromInput", false, ""} |
|
Gaudi::CheckedProperty< int > | m_firstEventNo {this, "FirstEvent", 1, ""} |
|
Gaudi::CheckedProperty< int > | m_eventsPerRun {this, "EventsPerRun", 1000000, ""} |
|
Gaudi::CheckedProperty< int > | m_firstLBNo {this, "FirstLB", 0, ""} |
|
Gaudi::CheckedProperty< int > | m_eventsPerLB {this, "EventsPerLB", 1000, ""} |
|
Gaudi::CheckedProperty< int > | m_initTimeStamp {this, "InitialTimeStamp", 0, ""} |
|
Gaudi::Property< int > | m_timeStampInterval {this, "TimeStampInterval", 0, ""} |
|
std::atomic_long | m_curCollection {} |
|
std::vector< int > m_numEvt | ATLAS_THREAD_SAFE |
|
std::vector< int > m_firstEvt | ATLAS_THREAD_SAFE |
|
Gaudi::Property< int > | m_skipEvents {this, "SkipEvents", 0, ""} |
| SkipEvents, numbers of events to skip: default = 0. More...
|
|
Gaudi::Property< std::vector< long > > | m_skipEventSequenceProp {this, "SkipEventSequence", {}, ""} |
|
Gaudi::Property< std::string > | m_skipEventRangesProp {this, "SkipEventRanges", {}, ""} |
| Skip Events - comma separated list of event to skip, ranges with '-': <start> - <end> More...
|
|
std::vector< std::pair< long, long > > m_skipEventRanges | ATLAS_THREAD_SAFE |
|
std::atomic_int | m_evtCount {} |
|
std::atomic_bool | m_firedIncident {} |
|
CallMutex | m_callLock |
|
SG::SlotSpecificObj< SG::SourceID > | m_sourceID |
|
This class is the EventSelector for event data.
Definition at line 47 of file EventSelectorAthenaPool.h.
◆ CallMutex
◆ EventSelectorAthenaPool()
EventSelectorAthenaPool::EventSelectorAthenaPool |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~EventSelectorAthenaPool()
EventSelectorAthenaPool::~EventSelectorAthenaPool |
( |
| ) |
|
|
virtual |
◆ createAddress()
StatusCode EventSelectorAthenaPool::createAddress |
( |
const IEvtSelector::Context & |
ctxt, |
|
|
IOpaqueAddress *& |
iop |
|
) |
| const |
|
overridevirtual |
- Parameters
-
ctxt | [IN] current event context. |
iop | [OUT] pointer to IOpaqueAddress reference of selection context. |
Definition at line 788 of file EventSelectorAthenaPool.cxx.
790 std::string tokenStr;
792 if (attrList.isValid()) {
795 tokenStr = (*attrList)[
"eventRef"].data<std::string>();
796 ATH_MSG_DEBUG(
"found AthenaAttribute, name = eventRef = " << tokenStr);
798 tokenStr = (*attrList)[
m_refName.value() +
"_ref"].data<std::string>();
803 return(StatusCode::FAILURE);
807 tokenStr = m_poolCollectionConverter->retrieveToken(m_headerIterator,
m_refName.value());
812 return(StatusCode::SUCCESS);
◆ createContext()
StatusCode EventSelectorAthenaPool::createContext |
( |
IEvtSelector::Context *& |
ctxt | ) |
const |
|
overridevirtual |
◆ curEvent()
int EventSelectorAthenaPool::curEvent |
( |
const Context & |
ctxt | ) |
const |
|
overridevirtual |
◆ disconnectIfFinished()
Definition at line 1248 of file EventSelectorAthenaPool.cxx.
1250 if(
m_eventStreamingTool.empty() && m_activeEventsPerSource.find(fid) != m_activeEventsPerSource.end()
1251 && m_activeEventsPerSource[fid] <= 0 && m_guid != fid ) {
1256 FileIncident endInputFileIncident(
name(),
"EndInputFile",
"FID:" + fid, fid);
1259 ATH_MSG_INFO(
"Disconnecting input sourceID: " << fid );
1261 m_activeEventsPerSource.erase( fid );
◆ eventStore()
StoreGateSvc * EventSelectorAthenaPool::eventStore |
( |
| ) |
const |
|
private |
◆ fillAttributeList()
StatusCode EventSelectorAthenaPool::fillAttributeList |
( |
coral::AttributeList * |
attrList, |
|
|
const std::string & |
suffix, |
|
|
bool |
copySource |
|
) |
| const |
|
overrideprotectedvirtual |
Fill AttributeList with specific items from the selector and a suffix.
Definition at line 1112 of file EventSelectorAthenaPool.cxx.
1114 const pool::TokenList& tokenList = m_headerIterator->currentRow().tokenList();
1117 (*attrList)[iter.tokenName() +
suffix].data<std::string>() = iter->toString();
1118 ATH_MSG_DEBUG(
"record AthenaAttribute, name = " << iter.tokenName() +
suffix <<
" = " << iter->toString() <<
".");
1121 std::string eventRef =
"eventRef";
1125 attrList->extend(eventRef,
"string");
1126 (*attrList)[eventRef].data<std::string>() = m_headerIterator->eventRef().toString();
1127 ATH_MSG_DEBUG(
"record AthenaAttribute, name = " + eventRef +
" = " << m_headerIterator->eventRef().toString() <<
".");
1131 for (
const auto &attr : sourceAttrList) {
1132 attrList->extend(attr.specification().name() +
suffix, attr.specification().type());
1133 (*attrList)[attr.specification().name() +
suffix] = attr;
1137 return StatusCode::SUCCESS;
◆ finalize()
StatusCode EventSelectorAthenaPool::finalize |
( |
| ) |
|
|
overridevirtual |
Definition at line 427 of file EventSelectorAthenaPool.cxx.
432 for (
auto&
tool : m_helperTools) {
433 if (!
tool->preFinalize().isSuccess()) {
439 m_headerIterator =
nullptr;
440 if (m_poolCollectionConverter !=
nullptr) {
441 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
452 if (!m_helperTools.release().isSuccess()) {
◆ findEvent()
int EventSelectorAthenaPool::findEvent |
( |
int |
evtNum | ) |
const |
|
private |
Search for event with number evtNum.
Definition at line 900 of file EventSelectorAthenaPool.cxx.
901 for (std::size_t
i = 0,
imax = m_numEvt.size();
i <
imax;
i++) {
902 if (m_numEvt[
i] == -1) {
908 if (!pcc.initialize().isSuccess()) {
911 int collection_size = 0;
918 collection_size = cs->
size();
921 m_firstEvt[
i] = m_firstEvt[
i - 1] + m_numEvt[
i - 1];
925 m_numEvt[
i] = collection_size;
927 if (evtNum >= m_firstEvt[
i] && evtNum < m_firstEvt[
i] + m_numEvt[
i]) {
◆ fireEndFileIncidents()
void EventSelectorAthenaPool::fireEndFileIncidents |
( |
bool |
isLastFile | ) |
const |
|
private |
Fires the EndInputFile incident (if there is an open file) at end of selector.
Definition at line 410 of file EventSelectorAthenaPool.cxx.
416 FileIncident endInputFileIncident(
name(),
"EndInputFile",
"FID:" + m_guid.toString(), m_guid.toString());
◆ getCollectionCnv()
Return pointer to new PoolCollectionConverter.
Definition at line 1050 of file EventSelectorAthenaPool.cxx.
1057 ATH_MSG_DEBUG(
"Try item: \"" << *m_inputCollectionsIterator <<
"\" from the collection list.");
1059 *m_inputCollectionsIterator,
1064 if (!
status.isSuccess()) {
1066 delete pCollCnv; pCollCnv =
nullptr;
1067 if (!
status.isRecoverable()) {
1068 ATH_MSG_ERROR(
"Unable to initialize PoolCollectionConverter.");
1069 throw GaudiException(
"Unable to read: " + *m_inputCollectionsIterator,
name(), StatusCode::FAILURE);
1071 ATH_MSG_ERROR(
"Unable to open: " << *m_inputCollectionsIterator);
1072 throw GaudiException(
"Unable to open: " + *m_inputCollectionsIterator,
name(), StatusCode::FAILURE);
1075 if (!pCollCnv->
isValid().isSuccess()) {
1076 delete pCollCnv; pCollCnv =
nullptr;
1077 ATH_MSG_DEBUG(
"No events found in: " << *m_inputCollectionsIterator <<
" skipped!!!");
1079 FileIncident beginInputFileIncident(
name(),
"BeginInputFile", *m_inputCollectionsIterator);
1081 FileIncident endInputFileIncident(
name(),
"EndInputFile",
"eventless " + *m_inputCollectionsIterator);
1084 m_athenaPoolCnvSvc->getPoolSvc()->disconnectDb(*m_inputCollectionsIterator).ignore();
1085 ++m_inputCollectionsIterator;
◆ handle()
void EventSelectorAthenaPool::handle |
( |
const Incident & |
incident | ) |
|
|
overridevirtual |
Incident service handle listening for BeginProcessing and EndProcessing.
Reimplemented in DoubleEventSelectorAthenaPool.
Definition at line 1207 of file EventSelectorAthenaPool.cxx.
1210 if (inc.type() == IncidentType::BeginProcessing) {
1221 ATH_MSG_WARNING(
"could not read event source ID from incident event context");
1224 if( m_activeEventsPerSource.find( fid ) == m_activeEventsPerSource.end()) {
1225 ATH_MSG_DEBUG(
"Incident handler ignoring unknown input FID: " << fid );
1228 ATH_MSG_DEBUG(
"** MN Incident handler " << inc.type() <<
" Event source ID=" << fid );
1229 if( inc.type() == IncidentType::BeginProcessing ) {
1231 m_activeEventsPerSource[fid]++;
1232 }
else if( inc.type() == IncidentType::EndProcessing ) {
1233 m_activeEventsPerSource[fid]--;
1238 for(
auto& source: m_activeEventsPerSource )
1239 msg(
MSG::DEBUG) <<
"SourceID: " << source.first <<
" active events: " << source.second <<
endmsg;
◆ initialize()
StatusCode EventSelectorAthenaPool::initialize |
( |
| ) |
|
|
overridevirtual |
Required of all Gaudi Services.
Reimplemented in DoubleEventSelectorAthenaPool.
Definition at line 89 of file EventSelectorAthenaPool.cxx.
91 m_autoRetrieveTools =
false;
92 m_checkToolDeps =
false;
102 return(StatusCode::FAILURE);
106 ATH_MSG_FATAL(
"Use the property: EventSelector.InputCollections = "
107 <<
"[ \"<collectionName>\" ] (list of collections)");
108 return(StatusCode::FAILURE);
110 boost::char_separator<char> sep_coma(
","), sep_hyph(
"-");
112 for(
const std::string&
r:
ranges ) {
113 boost::tokenizer fromto(
r, sep_hyph);
114 auto from_iter = fromto.begin();
115 std::stringstream strstr1( *from_iter );
118 if( ++from_iter != fromto.end() ) {
119 std::stringstream strstr2( *from_iter );
124 m_skipEventRanges.push_back( std::pair(from,
to) );
128 m_skipEventRanges.push_back( std::pair(
v,
v) );
130 std::sort(m_skipEventRanges.begin(), m_skipEventRanges.end());
132 std::stringstream skip_ranges_ss;
133 for(
auto&
r: m_skipEventRanges ) {
134 if( not skip_ranges_ss.str().empty() ) skip_ranges_ss <<
", ";
135 skip_ranges_ss <<
r.first;
136 if(
r.first !=
r.second) skip_ranges_ss <<
"-" <<
r.second;
138 if( not skip_ranges_ss.str().empty() )
143 ATH_MSG_FATAL(
"EventSelector.CollectionType must be one of: ExplicitROOT, ImplicitROOT (default)");
144 return(StatusCode::FAILURE);
149 return(StatusCode::FAILURE);
153 m_incidentSvc->addListener(
this, IncidentType::BeginProcessing, 0);
154 m_incidentSvc->addListener(
this, IncidentType::EndProcessing, 0);
160 return(StatusCode::FAILURE);
165 return(StatusCode::FAILURE);
168 if (!m_helperTools.retrieve().isSuccess()) {
170 return(StatusCode::FAILURE);
175 return(StatusCode::FAILURE);
177 std::string dummyStr;
179 ATH_MSG_ERROR(
"Could not make AthenaPoolCnvSvc a Share Client");
180 return(StatusCode::FAILURE);
186 std::vector<std::string>
propVal;
188 ATH_MSG_FATAL(
"Cannot get EventPersistencySvc Property for CnvServices");
189 return(StatusCode::FAILURE);
191 bool foundCnvSvc =
false;
192 for (
const auto& property :
propVal) {
198 ATH_MSG_FATAL(
"Cannot set EventPersistencySvc Property for CnvServices");
199 return(StatusCode::FAILURE);
205 if (!iomgr.retrieve().isSuccess()) {
207 return(StatusCode::FAILURE);
209 if (!iomgr->io_register(
this).isSuccess()) {
210 ATH_MSG_FATAL(
"Could not register myself with the IoComponentMgr !");
211 return(StatusCode::FAILURE);
218 if (incol[
icol].substr(0, 4) ==
"LFN:" || incol[
icol].substr(0, 4) ==
"FID:") {
223 if (
fileName.substr(0, 4) ==
"PFN:") {
234 return(StatusCode::FAILURE);
240 return(StatusCode::FAILURE);
◆ inputCollectionsHandler()
void EventSelectorAthenaPool::inputCollectionsHandler |
( |
Gaudi::Details::PropertyBase & |
| ) |
|
|
private |
Definition at line 76 of file EventSelectorAthenaPool.cxx.
77 if (this->FSMState() != Gaudi::StateMachine::OFFLINE) {
78 m_inputCollectionsChanged =
true;
◆ io_finalize()
StatusCode EventSelectorAthenaPool::io_finalize |
( |
| ) |
|
|
overridevirtual |
Callback method to finalize the internal state of the component for I/O purposes (e.g. before fork(2)
)
Definition at line 1192 of file EventSelectorAthenaPool.cxx.
1194 if (m_poolCollectionConverter !=
nullptr) {
1195 m_poolCollectionConverter->disconnectDb().ignore();
1196 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
1198 return(StatusCode::SUCCESS);
◆ io_reinit()
StatusCode EventSelectorAthenaPool::io_reinit |
( |
| ) |
|
|
overridevirtual |
Callback method to reinitialize the internal state of the component for I/O purposes (e.g. upon fork(2)
)
Definition at line 1140 of file EventSelectorAthenaPool.cxx.
1142 if (m_poolCollectionConverter !=
nullptr) {
1143 m_poolCollectionConverter->disconnectDb().ignore();
1144 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
1146 m_headerIterator =
nullptr;
1148 if (!iomgr.retrieve().isSuccess()) {
1150 return(StatusCode::FAILURE);
1152 if (!iomgr->io_hasitem(
this)) {
1153 ATH_MSG_FATAL(
"IoComponentMgr does not know about myself !");
1154 return(StatusCode::FAILURE);
1161 std::set<std::size_t> updatedIndexes;
1163 if (updatedIndexes.find(
i) != updatedIndexes.end())
continue;
1166 if (!iomgr->io_contains(
this,
fname)) {
1168 return(StatusCode::FAILURE);
1170 if (!iomgr->io_retrieve(
this,
fname).isSuccess()) {
1172 return(StatusCode::FAILURE);
1174 if (savedName !=
fname) {
1178 updatedIndexes.insert(
i);
1179 for (std::size_t j =
i + 1; j <
imax; j++) {
1182 updatedIndexes.insert(j);
◆ last()
StatusCode EventSelectorAthenaPool::last |
( |
IEvtSelector::Context & |
ctxt | ) |
const |
|
overridevirtual |
- Parameters
-
ctxt | [IN/OUT] current event context is interated to last event. |
Definition at line 774 of file EventSelectorAthenaPool.cxx.
777 return(StatusCode::SUCCESS);
779 return(StatusCode::FAILURE);
◆ makeClient()
StatusCode EventSelectorAthenaPool::makeClient |
( |
int |
num | ) |
|
|
overridevirtual |
Make this a client.
Definition at line 955 of file EventSelectorAthenaPool.cxx.
957 ATH_MSG_ERROR(
"Failed to switch AthenaPoolCnvSvc to DataStreaming client");
958 return(StatusCode::FAILURE);
961 return(StatusCode::SUCCESS);
964 std::string dummyStr;
◆ makeServer()
StatusCode EventSelectorAthenaPool::makeServer |
( |
int |
num | ) |
|
|
overridevirtual |
Make this a server.
Definition at line 935 of file EventSelectorAthenaPool.cxx.
938 ATH_MSG_ERROR(
"Failed to switch AthenaPoolCnvSvc to output DataStreaming server");
940 return(StatusCode::SUCCESS);
943 ATH_MSG_ERROR(
"Failed to switch AthenaPoolCnvSvc to input DataStreaming server");
944 return(StatusCode::FAILURE);
947 return(StatusCode::SUCCESS);
◆ next() [1/2]
StatusCode EventSelectorAthenaPool::next |
( |
IEvtSelector::Context & |
ctxt | ) |
const |
|
overridevirtual |
- Parameters
-
ctxt | [IN/OUT] current event context is interated to next event. |
Reimplemented in DoubleEventSelectorAthenaPool.
Definition at line 493 of file EventSelectorAthenaPool.cxx.
494 std::lock_guard<CallMutex> lockGuard(
m_callLock);
498 while (
sc.isRecoverable()) {
505 void* tokenStr =
nullptr;
508 if (
sc.isRecoverable()) {
509 delete [] (
char*)tokenStr; tokenStr =
nullptr;
513 return(StatusCode::FAILURE);
515 if (
sc.isFailure()) {
516 ATH_MSG_FATAL(
"Cannot get NextEvent from AthenaSharedMemoryTool");
517 delete [] (
char*)tokenStr; tokenStr =
nullptr;
518 return(StatusCode::FAILURE);
524 athAttrList->extend(
"eventRef",
"string");
525 (*athAttrList)[
"eventRef"].data<std::string>() = std::string((
char*)tokenStr);
527 if (!
wh.record(std::move(athAttrList)).isSuccess()) {
528 delete [] (
char*)tokenStr; tokenStr =
nullptr;
530 return(StatusCode::FAILURE);
533 token.
fromString(std::string((
char*)tokenStr));
534 delete [] (
char*)tokenStr; tokenStr =
nullptr;
539 FileIncident endInputFileIncident(
name(),
"EndInputFile",
"FID:" + m_guid.toString(), m_guid.toString());
543 FileIncident beginInputFileIncident(
name(),
"BeginInputFile",
"FID:" + m_guid.toString(), m_guid.toString());
546 return(StatusCode::SUCCESS);
548 for (
const auto&
tool : m_helperTools) {
549 if (!
tool->preNext().isSuccess()) {
556 if (
sc.isRecoverable()) {
559 if (
sc.isFailure()) {
560 return StatusCode::FAILURE;
568 && (m_skipEventRanges.empty() ||
m_evtCount < m_skipEventRanges.front().first))
571 std::string token = m_headerIterator->eventRef().
toString();
575 token.length() + 1, 0)).isRecoverable() ) {
577 ATH_MSG_VERBOSE(
"Called last readData, while putting next event in next()");
581 if (!
sc.isSuccess()) {
583 return(StatusCode::FAILURE);
587 if (!
eventStore()->clearStore().isSuccess()) {
592 return(StatusCode::FAILURE);
597 for (
const auto&
tool : m_helperTools) {
599 if (toolStatus.isRecoverable()) {
602 status = StatusCode::RECOVERABLE;
604 }
else if (toolStatus.isFailure()) {
606 status = StatusCode::FAILURE;
609 if (
status.isRecoverable()) {
611 }
else if (
status.isFailure()) {
620 while( !m_skipEventRanges.empty() &&
m_evtCount >= m_skipEventRanges.front().second ) {
621 m_skipEventRanges.erase(m_skipEventRanges.begin());
626 return(StatusCode::SUCCESS);
◆ next() [2/2]
StatusCode EventSelectorAthenaPool::next |
( |
IEvtSelector::Context & |
ctxt, |
|
|
int |
jump |
|
) |
| const |
|
overridevirtual |
- Parameters
-
ctxt | [IN/OUT] current event context is interated to next event. |
jump | [IN] number of events to jump (currently not supported). |
Reimplemented in DoubleEventSelectorAthenaPool.
Definition at line 629 of file EventSelectorAthenaPool.cxx.
631 for (
int i = 0;
i < jump;
i++) {
634 return(StatusCode::SUCCESS);
636 return(StatusCode::FAILURE);
◆ nextHandleFileTransition()
StatusCode EventSelectorAthenaPool::nextHandleFileTransition |
( |
IEvtSelector::Context & |
ctxt | ) |
const |
|
overrideprotectedvirtual |
Handle file transition at the next iteration.
Definition at line 639 of file EventSelectorAthenaPool.cxx.
641 if( m_inputCollectionsChanged ) {
643 if( rc != StatusCode::SUCCESS )
return rc;
647 if (m_headerIterator ==
nullptr || m_headerIterator->next() == 0) {
648 m_headerIterator =
nullptr;
650 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
658 if( m_inputCollectionsChanged ) {
660 if( rc != StatusCode::SUCCESS )
return rc;
663 ++m_inputCollectionsIterator;
666 if (m_poolCollectionConverter ==
nullptr) {
670 return StatusCode::FAILURE;
673 m_headerIterator = &m_poolCollectionConverter->executeQuery();
676 return StatusCode::RECOVERABLE;
682 m_headerIterator->eventRef()
683 : m_headerIterator->currentRow().tokenList()[
m_refName.value() +
"_ref"];
688 if (
guid != m_guid) {
697 m_activeEventsPerSource[
guid.toString()] = 0;
702 if (!
m_athenaPoolCnvSvc->setInputAttributes(*m_inputCollectionsIterator).isSuccess()) {
704 return(StatusCode::FAILURE);
707 FileIncident beginInputFileIncident(
name(),
"BeginInputFile", *m_inputCollectionsIterator, m_guid.toString());
713 FileIncident beginInputFileIncident(
name(),
"BeginInputFile",
"FID:" + m_guid.toString(), m_guid.toString());
718 return StatusCode::SUCCESS;
◆ nextWithSkip()
StatusCode EventSelectorAthenaPool::nextWithSkip |
( |
IEvtSelector::Context & |
ctxt | ) |
const |
|
overrideprotectedvirtual |
Go to next event and skip if necessary.
Definition at line 721 of file EventSelectorAthenaPool.cxx.
727 if (
sc.isRecoverable()) {
730 if (
sc.isFailure()) {
731 return StatusCode::FAILURE;
741 && (m_skipEventRanges.empty() ||
m_evtCount < m_skipEventRanges.front().first))
743 return StatusCode::SUCCESS;
745 while( !m_skipEventRanges.empty() &&
m_evtCount >= m_skipEventRanges.front().second ) {
746 m_skipEventRanges.erase(m_skipEventRanges.begin());
756 return StatusCode::SUCCESS;
◆ previous() [1/2]
StatusCode EventSelectorAthenaPool::previous |
( |
IEvtSelector::Context & |
ctxt | ) |
const |
|
overridevirtual |
- Parameters
-
ctxt | [IN/OUT] current event context is interated to previous event. |
Definition at line 759 of file EventSelectorAthenaPool.cxx.
761 return(StatusCode::FAILURE);
◆ previous() [2/2]
StatusCode EventSelectorAthenaPool::previous |
( |
IEvtSelector::Context & |
ctxt, |
|
|
int |
jump |
|
) |
| const |
|
overridevirtual |
- Parameters
-
ctxt | [IN/OUT] current event context is interated to previous event. |
jump | [IN] number of events to jump (currently not supported). |
Definition at line 764 of file EventSelectorAthenaPool.cxx.
766 for (
int i = 0;
i < jump;
i++) {
769 return(StatusCode::SUCCESS);
771 return(StatusCode::FAILURE);
◆ queryInterface()
StatusCode EventSelectorAthenaPool::queryInterface |
( |
const InterfaceID & |
riid, |
|
|
void ** |
ppvInterface |
|
) |
| |
|
overridevirtual |
Does this object satisfy a given interface? See Gaudi documentation for details.
Definition at line 468 of file EventSelectorAthenaPool.cxx.
469 if (riid == IEvtSelector::interfaceID()) {
470 *ppvInterface =
dynamic_cast<IEvtSelector*
>(
this);
471 }
else if (riid == IIoComponent::interfaceID()) {
472 *ppvInterface =
dynamic_cast<IIoComponent*
>(
this);
473 }
else if (riid == IProperty::interfaceID()) {
474 *ppvInterface =
dynamic_cast<IProperty*
>(
this);
475 }
else if (riid == IEvtSelectorSeek::interfaceID()) {
479 }
else if (riid == ISecondaryEventSelector::interfaceID()) {
482 return(::AthService::queryInterface(riid, ppvInterface));
485 return(StatusCode::SUCCESS);
◆ readEvent()
StatusCode EventSelectorAthenaPool::readEvent |
( |
int |
maxevt | ) |
|
|
overridevirtual |
Read the next maxevt events.
- Parameters
-
evtnum | [IN] The number of events to read. |
Definition at line 997 of file EventSelectorAthenaPool.cxx.
999 ATH_MSG_ERROR(
"No AthenaSharedMemoryTool configured for readEvent()");
1000 return(StatusCode::FAILURE);
1004 for (
int i = 0;
i < maxevt || maxevt == -1; ++
i) {
1005 if (!
next(*ctxt).isSuccess()) {
1007 ATH_MSG_VERBOSE(
"Called read Event and read last event from input: " <<
i);
1011 delete ctxt; ctxt =
nullptr;
1012 return(StatusCode::FAILURE);
1017 delete ctxt; ctxt =
nullptr;
1022 ATH_MSG_VERBOSE(
"Called last readData, while marking last event in readEvent()");
1026 if (!
sc.isSuccess()) {
1027 ATH_MSG_ERROR(
"Cannot put last Event marker to AthenaSharedMemoryTool");
1028 return(StatusCode::FAILURE);
1031 while (
sc.isSuccess() ||
sc.isRecoverable()) {
1034 ATH_MSG_DEBUG(
"Failed last readData -> Clients are stopped, after marking last event in readEvent()");
1036 return(StatusCode::SUCCESS);
◆ recordAttributeList()
StatusCode EventSelectorAthenaPool::recordAttributeList |
( |
| ) |
const |
|
overrideprotectedvirtual |
◆ reinit()
StatusCode EventSelectorAthenaPool::reinit |
( |
| ) |
const |
|
private |
Reinitialize the service when a fork()
occured/was-issued.
Definition at line 247 of file EventSelectorAthenaPool.cxx.
252 for(
auto&
el : m_numEvt )
el = -1;
254 for(
auto&
el : m_firstEvt )
el = -1;
259 if (!m_firstEvt.empty()) {
262 m_inputCollectionsChanged =
false;
264 m_headerIterator = 0;
266 ATH_MSG_INFO(
"Done reinitialization for shared reader client");
267 return(StatusCode::SUCCESS);
269 bool retError =
false;
270 for (
auto&
tool : m_helperTools) {
271 if (!
tool->postInitialize().isSuccess()) {
278 return(StatusCode::FAILURE);
284 if (m_poolCollectionConverter ==
nullptr) {
285 ATH_MSG_INFO(
"No Events found in any Input Collections");
291 FileIncident firstInputFileIncident(
name(),
"FirstInputFile", *m_inputCollectionsIterator);
296 return(StatusCode::SUCCESS);
310 m_headerIterator = &m_poolCollectionConverter->executeQuery();
312 ATH_MSG_FATAL(
"Cannot open implicit collection - check data/software version.");
314 return(StatusCode::FAILURE);
316 while (m_headerIterator ==
nullptr || m_headerIterator->next() == 0) {
317 if (m_poolCollectionConverter !=
nullptr) {
318 m_poolCollectionConverter->disconnectDb().ignore();
319 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
321 ++m_inputCollectionsIterator;
323 if (m_poolCollectionConverter !=
nullptr) {
324 m_headerIterator = &m_poolCollectionConverter->executeQuery();
329 if (m_poolCollectionConverter ==
nullptr || m_headerIterator ==
nullptr) {
333 if (m_poolCollectionConverter ==
nullptr) {
334 return(StatusCode::SUCCESS);
336 m_headerIterator = &m_poolCollectionConverter->selectAll();
337 while (m_headerIterator ==
nullptr || m_headerIterator->next() == 0) {
338 if (m_poolCollectionConverter !=
nullptr) {
339 m_poolCollectionConverter->disconnectDb().ignore();
340 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
342 ++m_inputCollectionsIterator;
344 if (m_poolCollectionConverter !=
nullptr) {
345 m_headerIterator = &m_poolCollectionConverter->selectAll();
351 if (m_poolCollectionConverter ==
nullptr || m_headerIterator ==
nullptr) {
352 return(StatusCode::SUCCESS);
355 m_headerIterator->eventRef()
356 : m_headerIterator->currentRow().tokenList()[
m_refName.value() +
"_ref"];
363 FileIncident firstInputFileIncident(
name(),
"FirstInputFile",
"FID:" + fid, fid);
367 return(StatusCode::SUCCESS);
◆ releaseContext()
StatusCode EventSelectorAthenaPool::releaseContext |
( |
IEvtSelector::Context *& |
ctxt | ) |
const |
|
overridevirtual |
◆ resetCriteria()
StatusCode EventSelectorAthenaPool::resetCriteria |
( |
const std::string & |
criteria, |
|
|
IEvtSelector::Context & |
ctxt |
|
) |
| const |
|
overridevirtual |
Set a selection criteria.
- Parameters
-
criteria | filter predicate (SQL-style WHERE clause) |
ctxt | [IN] current event context. |
Definition at line 819 of file EventSelectorAthenaPool.cxx.
821 return(StatusCode::SUCCESS);
◆ rewind()
StatusCode EventSelectorAthenaPool::rewind |
( |
IEvtSelector::Context & |
ctxt | ) |
const |
|
overridevirtual |
- Parameters
-
ctxt | [IN/OUT] current event context is rewound to first event. |
Definition at line 782 of file EventSelectorAthenaPool.cxx.
785 return(StatusCode::SUCCESS);
◆ seek()
StatusCode EventSelectorAthenaPool::seek |
( |
Context & |
ctxt, |
|
|
int |
evtnum |
|
) |
| const |
|
overridevirtual |
Seek to a given event number.
- Parameters
-
ctxt | [IN/OUT] current event context. |
evtnum | [IN] The event number to which to seek. |
Reimplemented in DoubleEventSelectorAthenaPool.
Definition at line 824 of file EventSelectorAthenaPool.cxx.
826 if( m_inputCollectionsChanged ) {
828 if( rc != StatusCode::SUCCESS )
return rc;
836 m_headerIterator =
nullptr;
839 return(StatusCode::RECOVERABLE);
843 m_poolCollectionConverter->disconnectDb().ignore();
845 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
850 <<
"\" from the collection list.");
859 if (!m_poolCollectionConverter->initialize().isSuccess()) {
860 m_headerIterator =
nullptr;
861 ATH_MSG_ERROR(
"seek: Unable to initialize PoolCollectionConverter.");
862 return(StatusCode::FAILURE);
865 m_headerIterator = &m_poolCollectionConverter->executeQuery();
868 next(*beginIter).ignore();
869 ATH_MSG_DEBUG(
"Token " << m_headerIterator->eventRef().toString());
871 m_headerIterator =
nullptr;
873 return(StatusCode::FAILURE);
880 return(StatusCode::FAILURE);
883 m_headerIterator =
nullptr;
885 return(StatusCode::FAILURE);
889 return(StatusCode::SUCCESS);
◆ share()
StatusCode EventSelectorAthenaPool::share |
( |
int |
evtnum | ) |
|
|
overridevirtual |
Request to share a given event number.
- Parameters
-
evtnum | [IN] The event number to share. |
Definition at line 969 of file EventSelectorAthenaPool.cxx.
972 while (
sc.isRecoverable()) {
977 if (
sc.isFailure()) {
979 return(StatusCode::FAILURE);
982 while (
sc.isRecoverable() ||
sc.isFailure()) {
988 return(StatusCode::FAILURE);
993 return(StatusCode::FAILURE);
◆ size()
int EventSelectorAthenaPool::size |
( |
Context & |
ctxt | ) |
const |
|
overridevirtual |
◆ start()
StatusCode EventSelectorAthenaPool::start |
( |
| ) |
|
|
overridevirtual |
Definition at line 370 of file EventSelectorAthenaPool.cxx.
371 if (m_poolCollectionConverter !=
nullptr) {
373 m_poolCollectionConverter->disconnectDb().ignore();
374 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
379 return(StatusCode::SUCCESS);
382 if (m_poolCollectionConverter ==
nullptr) {
383 ATH_MSG_INFO(
"No Events found in any Input Collections");
386 --m_inputCollectionsIterator;
389 m_headerIterator = &m_poolCollectionConverter->executeQuery();
395 return(StatusCode::SUCCESS);
◆ stop()
StatusCode EventSelectorAthenaPool::stop |
( |
| ) |
|
|
overridevirtual |
Definition at line 398 of file EventSelectorAthenaPool.cxx.
400 return(StatusCode::SUCCESS);
402 IEvtSelector::Context* ctxt(
nullptr);
406 return(StatusCode::SUCCESS);
◆ DoubleEventSelectorAthenaPool
◆ ATLAS_THREAD_SAFE [1/10]
◆ ATLAS_THREAD_SAFE [2/10]
◆ ATLAS_THREAD_SAFE [3/10]
Guid m_guid EventSelectorAthenaPool::ATLAS_THREAD_SAFE {} |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [4/10]
std::map<SG::SourceID, int> m_activeEventsPerSource EventSelectorAthenaPool::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [5/10]
std::vector<std::string>::const_iterator m_inputCollectionsIterator EventSelectorAthenaPool::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [6/10]
bool m_inputCollectionsChanged EventSelectorAthenaPool::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [7/10]
ToolHandleArray<IAthenaSelectorTool> m_helperTools EventSelectorAthenaPool::ATLAS_THREAD_SAFE {this} |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [8/10]
std::vector<int> m_numEvt EventSelectorAthenaPool::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [9/10]
std::vector<int> m_firstEvt EventSelectorAthenaPool::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [10/10]
std::vector<std::pair<long,long> > m_skipEventRanges EventSelectorAthenaPool::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ m_athenaPoolCnvSvc
◆ m_attrListKey
Gaudi::Property<std::string> EventSelectorAthenaPool::m_attrListKey {this, "AttributeListKey", "Input", ""} |
|
private |
◆ m_callLock
CallMutex EventSelectorAthenaPool::m_callLock |
|
mutableprivate |
◆ m_collectionTree
Gaudi::Property<std::string> EventSelectorAthenaPool::m_collectionTree {this, "CollectionTree", APRDefaults::TTreeNames::DataHeader, ""} |
|
private |
◆ m_collectionType
Gaudi::Property<std::string> EventSelectorAthenaPool::m_collectionType {this, "CollectionType", "ImplicitROOT", ""} |
|
private |
◆ m_connection
Gaudi::Property<std::string> EventSelectorAthenaPool::m_connection {this, "Connection", "", ""} |
|
private |
◆ m_counterTool
ToolHandle<IAthenaSelectorTool> EventSelectorAthenaPool::m_counterTool {this, "CounterTool", "", ""} |
|
private |
◆ m_curCollection
std::atomic_long EventSelectorAthenaPool::m_curCollection {} |
|
mutableprivate |
◆ m_endIter
◆ m_eventsPerLB
Gaudi::CheckedProperty<int> EventSelectorAthenaPool::m_eventsPerLB {this, "EventsPerLB", 1000, ""} |
|
private |
◆ m_eventsPerRun
Gaudi::CheckedProperty<int> EventSelectorAthenaPool::m_eventsPerRun {this, "EventsPerRun", 1000000, ""} |
|
private |
◆ m_eventStreamingTool
ToolHandle<IAthenaIPCTool> EventSelectorAthenaPool::m_eventStreamingTool {this, "SharedMemoryTool", "", ""} |
|
private |
◆ m_evtCount
std::atomic_int EventSelectorAthenaPool::m_evtCount {} |
|
mutableprivate |
◆ m_firedIncident
std::atomic_bool EventSelectorAthenaPool::m_firedIncident {} |
|
mutableprivate |
◆ m_firstEventNo
Gaudi::CheckedProperty<int> EventSelectorAthenaPool::m_firstEventNo {this, "FirstEvent", 1, ""} |
|
private |
◆ m_firstLBNo
Gaudi::CheckedProperty<int> EventSelectorAthenaPool::m_firstLBNo {this, "FirstLB", 0, ""} |
|
private |
◆ m_incidentSvc
ServiceHandle<IIncidentSvc> EventSelectorAthenaPool::m_incidentSvc {this, "IncidentSvc", "IncidentSvc", ""} |
|
private |
◆ m_initTimeStamp
Gaudi::CheckedProperty<int> EventSelectorAthenaPool::m_initTimeStamp {this, "InitialTimeStamp", 0, ""} |
|
private |
◆ m_inputCollectionsProp
Gaudi::Property<std::vector<std::string> > EventSelectorAthenaPool::m_inputCollectionsProp {this, "InputCollections", {}, ""} |
|
private |
◆ m_isSecondary
Gaudi::Property<bool> EventSelectorAthenaPool::m_isSecondary {this, "IsSecondary", false, ""} |
|
private |
◆ m_keepInputFilesOpen
Gaudi::Property<bool> EventSelectorAthenaPool::m_keepInputFilesOpen {this, "KeepInputFilesOpen", false, ""} |
|
private |
KeepInputFilesOpen, boolean flag to keep files open after PoolCollection reaches end: default = false.
Needed for PilUp to run without PoolFileCatalog. Relies on POOL to close files when reaching DB_AGE_LIMIT.
Definition at line 210 of file EventSelectorAthenaPool.h.
◆ m_makeStreamingToolClient
IntegerProperty EventSelectorAthenaPool::m_makeStreamingToolClient {this,"MakeStreamingToolClient",0} |
|
private |
◆ m_oldRunNo
Gaudi::CheckedProperty<int> EventSelectorAthenaPool::m_oldRunNo {this, "OldRunNumber", 0, ""} |
|
private |
◆ m_overrideRunNumber
Gaudi::Property<bool> EventSelectorAthenaPool::m_overrideRunNumber {this, "OverrideRunNumber", false, ""} |
|
private |
◆ m_overrideRunNumberFromInput
Gaudi::Property<bool> EventSelectorAthenaPool::m_overrideRunNumberFromInput {this, "OverrideRunNumberFromInput", false, ""} |
|
private |
◆ m_processMetadata
Gaudi::Property<bool> EventSelectorAthenaPool::m_processMetadata {this, "ProcessMetadata", true, ""} |
|
private |
ProcessMetadata, switch on firing of FileIncidents which will trigger processing of metadata: default = true.
Definition at line 185 of file EventSelectorAthenaPool.h.
◆ m_query
Gaudi::Property<std::string> EventSelectorAthenaPool::m_query {this, "Query", "", ""} |
|
private |
◆ m_refName
Gaudi::Property<std::string> EventSelectorAthenaPool::m_refName {this, "RefName", "", ""} |
|
private |
◆ m_runNo
Gaudi::CheckedProperty<int> EventSelectorAthenaPool::m_runNo {this, "RunNumber", 0, ""} |
|
private |
The following are included for compatibility with McEventSelector and are not really used.
However runNo, oldRunNo and overrideRunNumberFromInput are used to reset run number for simulated events, needed to use condition
Definition at line 222 of file EventSelectorAthenaPool.h.
◆ m_skipEventRangesProp
Gaudi::Property<std::string> EventSelectorAthenaPool::m_skipEventRangesProp {this, "SkipEventRanges", {}, ""} |
|
private |
Skip Events - comma separated list of event to skip, ranges with '-': <start> - <end>
Definition at line 243 of file EventSelectorAthenaPool.h.
◆ m_skipEvents
Gaudi::Property<int> EventSelectorAthenaPool::m_skipEvents {this, "SkipEvents", 0, ""} |
|
private |
◆ m_skipEventSequenceProp
Gaudi::Property<std::vector<long> > EventSelectorAthenaPool::m_skipEventSequenceProp {this, "SkipEventSequence", {}, ""} |
|
private |
◆ m_sourceID
◆ m_timeStampInterval
Gaudi::Property<int> EventSelectorAthenaPool::m_timeStampInterval {this, "TimeStampInterval", 0, ""} |
|
private |
The documentation for this class was generated from the following files:
virtual StatusCode last(IEvtSelector::Context &ctxt) const override
virtual int size()=0
Return the size of the collection.
static const Guid & null()
NULL-Guid: static class method.
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
virtual StatusCode fillAttributeList(coral::AttributeList *attrList, const std::string &suffix, bool copySource) const override
Fill AttributeList with specific items from the selector and a suffix.
Gaudi::Property< int > m_skipEvents
SkipEvents, numbers of events to skip: default = 0.
virtual StatusCode releaseContext(IEvtSelector::Context *&ctxt) const override
StatusCode parse(std::tuple< Tup... > &tup, const Gaudi::Parsers::InputData &input)
virtual bool seek(long long int position)=0
Seek to a given position in the collection.
Gaudi::CheckedProperty< int > m_oldRunNo
Gaudi::CheckedProperty< int > m_runNo
The following are included for compatibility with McEventSelector and are not really used.
StatusCode reinit() const
Reinitialize the service when a fork() occured/was-issued.
This class provides an interface to POOL collections.
virtual StatusCode previous(IEvtSelector::Context &ctxt) const override
ServiceHandle< IIncidentSvc > m_incidentSvc
bool hasExtendedEventContext(const EventContext &ctx)
Test whether a context object has an extended context installed.
Gaudi::CheckedProperty< int > m_firstEventNo
ServiceHandle< IAthenaPoolCnvSvc > m_athenaPoolCnvSvc
T * get(const EventContext &ctx)
Return pointer to the object for slot given by ctx.
const Guid & dbID() const
Access database identifier.
ToolHandle< IAthenaIPCTool > m_eventStreamingTool
Gaudi::Property< std::string > m_query
Query string passed to APR when opening DataHeader container (kind of useless).
StoreGateSvc * eventStore() const
Return pointer to active event SG.
const std::string toString() const
Automatic conversion to string representation.
iterator end()
Returns a forward iterator pointing to last element in Token list.
#define ATH_MSG_VERBOSE(x)
int findEvent(int evtNum) const
Search for event with number evtNum.
This class provides the context to access an event from POOL persistent store.
StatusCode isValid() const
Check whether has valid pool::ICollection*.
Gaudi::Property< std::string > m_refName
RefName, attribute name.
This class provides a token that identifies in a unique way objects on the persistent storage.
ToolHandle< IAthenaSelectorTool > m_counterTool
This class provides a Generic Transient Address for POOL tokens.
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
Token & fromString(const std::string &from)
Build from the string representation of a token.
virtual void * identifier() const
Abstract interface for sharing within an event stream.
int technology() const
Access technology type.
std::atomic_bool m_firedIncident
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Gaudi::Property< std::string > m_attrListKey
AttributeList SG key.
::StatusCode StatusCode
StatusCode definition for legacy code.
static const InterfaceID & interfaceID()
Gaudi::CheckedProperty< int > m_eventsPerLB
Abstract interface for secondary event selectors.
Gaudi::CheckedProperty< int > m_eventsPerRun
Gaudi::Property< bool > m_isSecondary
IsSecondary, know if this is an instance of secondary event selector.
static StoreGateSvc * currentStoreGate()
get current StoreGate
Default, invalid implementation of ClassID_traits.
Abstract interface for finding the size of an event collection.
void fireEndFileIncidents(bool isLastFile) const
Fires the EndInputFile incident (if there is an open file) at end of selector.
An AttributeList represents a logical row of attributes in a metadata table. The name and type of eac...
IntegerProperty m_makeStreamingToolClient
Make this instance a Streaming Client during first iteration automatically.
virtual StatusCode clearStore(bool forceRemove=false) override final
clear DataStore contents: called by the event loop mgrs
Gaudi::CheckedProperty< int > m_firstLBNo
bool allGood
Loop over the SDOs & Digits.
Gaudi::Property< std::string > m_collectionTree
CollectionTree, prefix of the collection TTree: default = "POOLContainer".
void inputCollectionsHandler(Gaudi::Details::PropertyBase &)
Gaudi::Property< std::string > m_skipEventRangesProp
Skip Events - comma separated list of event to skip, ranges with '-': <start> - <end>
Constant forward iterator class for navigation of TokenList objects.
virtual StatusCode next(IEvtSelector::Context &ctxt) const override
Gaudi::CheckedProperty< int > m_initTimeStamp
Gaudi::Property< bool > m_processMetadata
ProcessMetadata, switch on firing of FileIncidents which will trigger processing of metadata: default...
void extend(const std::string &name)
Extends the Token list by one element.
virtual bool disconnectIfFinished(const SG::SourceID &fid) const override
Gaudi::Property< std::vector< std::string > > m_inputCollectionsProp
InputCollections, vector with names of the input collections.
virtual StatusCode recordAttributeList() const override
Record AttributeList in StoreGate.
virtual const std::string toString() const
Retrieve the string representation of the token.
SG::SlotSpecificObj< SG::SourceID > m_sourceID
virtual StatusCode nextHandleFileTransition(IEvtSelector::Context &ctxt) const override
Handle file transition at the next iteration.
std::atomic_long m_curCollection
iterator begin()
Returns a forward iterator pointing to first element in Token list.
EventContextAthenaPool * m_endIter
StatusCode initialize()
Required by all Gaudi Services.
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
std::atomic_int m_evtCount
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
Abstract interface for seeking inside a collection.
Gaudi::Property< std::vector< long > > m_skipEventSequenceProp
PoolCollectionConverter * getCollectionCnv(bool throwIncidents=false) const
Return pointer to new PoolCollectionConverter.
Gaudi::Property< bool > m_keepInputFilesOpen
KeepInputFilesOpen, boolean flag to keep files open after PoolCollection reaches end: default = false...
Gaudi::Property< std::string > m_collectionType
CollectionType, type of the collection: default = "ImplicitROOT".
static const std::string & storeName(const StoreID::type &s)
Abstract interface for seeking for an event selector.