|
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 | 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 |
|
) |
| |
Standard Service Constructor.
Definition at line 58 of file EventSelectorAthenaPool.cxx.
59 base_class(
name, pSvcLocator)
61 declareProperty(
"HelperTools", m_helperTools);
73 m_inputCollectionsChanged =
false;
◆ ~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 768 of file EventSelectorAthenaPool.cxx.
770 std::string tokenStr;
772 if (attrList.isValid()) {
775 tokenStr = (*attrList)[
"eventRef"].data<std::string>();
776 ATH_MSG_DEBUG(
"found AthenaAttribute, name = eventRef = " << tokenStr);
778 tokenStr = (*attrList)[
m_refName.value() +
"_ref"].data<std::string>();
783 return(StatusCode::FAILURE);
787 tokenStr = m_poolCollectionConverter->retrieveToken(m_headerIterator,
m_refName.value());
792 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 1228 of file EventSelectorAthenaPool.cxx.
1230 if(
m_eventStreamingTool.empty() && m_activeEventsPerSource.find(fid) != m_activeEventsPerSource.end()
1231 && m_activeEventsPerSource[fid] <= 0 && m_guid != fid ) {
1236 FileIncident endInputFileIncident(
name(),
"EndInputFile",
"FID:" + fid, fid);
1239 ATH_MSG_INFO(
"Disconnecting input sourceID: " << fid );
1241 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 1092 of file EventSelectorAthenaPool.cxx.
1094 const pool::TokenList& tokenList = m_headerIterator->currentRow().tokenList();
1097 (*attrList)[iter.tokenName() +
suffix].data<std::string>() = iter->toString();
1098 ATH_MSG_DEBUG(
"record AthenaAttribute, name = " << iter.tokenName() +
suffix <<
" = " << iter->toString() <<
".");
1101 std::string eventRef =
"eventRef";
1105 attrList->extend(eventRef,
"string");
1106 (*attrList)[eventRef].data<std::string>() = m_headerIterator->eventRef().toString();
1107 ATH_MSG_DEBUG(
"record AthenaAttribute, name = " + eventRef +
" = " << m_headerIterator->eventRef().toString() <<
".");
1111 for (
const auto &attr : sourceAttrList) {
1112 attrList->extend(attr.specification().name() +
suffix, attr.specification().type());
1113 (*attrList)[attr.specification().name() +
suffix] = attr;
1117 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 880 of file EventSelectorAthenaPool.cxx.
881 for (std::size_t
i = 0,
imax = m_numEvt.size();
i <
imax;
i++) {
882 if (m_numEvt[
i] == -1) {
888 if (!pcc.initialize().isSuccess()) {
891 int collection_size = 0;
898 collection_size = cs->
size();
901 m_firstEvt[
i] = m_firstEvt[
i - 1] + m_numEvt[
i - 1];
905 m_numEvt[
i] = collection_size;
907 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 1030 of file EventSelectorAthenaPool.cxx.
1037 ATH_MSG_DEBUG(
"Try item: \"" << *m_inputCollectionsIterator <<
"\" from the collection list.");
1039 *m_inputCollectionsIterator,
1044 if (!
status.isSuccess()) {
1046 delete pCollCnv; pCollCnv =
nullptr;
1047 if (!
status.isRecoverable()) {
1048 ATH_MSG_ERROR(
"Unable to initialize PoolCollectionConverter.");
1049 throw GaudiException(
"Unable to read: " + *m_inputCollectionsIterator,
name(), StatusCode::FAILURE);
1051 ATH_MSG_ERROR(
"Unable to open: " << *m_inputCollectionsIterator);
1052 throw GaudiException(
"Unable to open: " + *m_inputCollectionsIterator,
name(), StatusCode::FAILURE);
1055 if (!pCollCnv->
isValid().isSuccess()) {
1056 delete pCollCnv; pCollCnv =
nullptr;
1057 ATH_MSG_DEBUG(
"No events found in: " << *m_inputCollectionsIterator <<
" skipped!!!");
1059 FileIncident beginInputFileIncident(
name(),
"BeginInputFile", *m_inputCollectionsIterator);
1061 FileIncident endInputFileIncident(
name(),
"EndInputFile",
"eventless " + *m_inputCollectionsIterator);
1064 m_athenaPoolCnvSvc->getPoolSvc()->disconnectDb(*m_inputCollectionsIterator).ignore();
1065 ++m_inputCollectionsIterator;
◆ handle()
void EventSelectorAthenaPool::handle |
( |
const Incident & |
incident | ) |
|
|
overridevirtual |
Incident service handle listening for BeginProcessing and EndProcessing.
Reimplemented in DoubleEventSelectorAthenaPool.
Definition at line 1187 of file EventSelectorAthenaPool.cxx.
1190 if (inc.type() == IncidentType::BeginProcessing) {
1201 ATH_MSG_WARNING(
"could not read event source ID from incident event context");
1204 if( m_activeEventsPerSource.find( fid ) == m_activeEventsPerSource.end()) {
1205 ATH_MSG_DEBUG(
"Incident handler ignoring unknown input FID: " << fid );
1208 ATH_MSG_DEBUG(
"** MN Incident handler " << inc.type() <<
" Event source ID=" << fid );
1209 if( inc.type() == IncidentType::BeginProcessing ) {
1211 m_activeEventsPerSource[fid]++;
1212 }
else if( inc.type() == IncidentType::EndProcessing ) {
1213 m_activeEventsPerSource[fid]--;
1218 for(
auto&
source: m_activeEventsPerSource )
◆ 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 1172 of file EventSelectorAthenaPool.cxx.
1174 if (m_poolCollectionConverter !=
nullptr) {
1175 m_poolCollectionConverter->disconnectDb().ignore();
1176 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
1178 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 1120 of file EventSelectorAthenaPool.cxx.
1122 if (m_poolCollectionConverter !=
nullptr) {
1123 m_poolCollectionConverter->disconnectDb().ignore();
1124 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
1126 m_headerIterator =
nullptr;
1128 if (!iomgr.retrieve().isSuccess()) {
1130 return(StatusCode::FAILURE);
1132 if (!iomgr->io_hasitem(
this)) {
1133 ATH_MSG_FATAL(
"IoComponentMgr does not know about myself !");
1134 return(StatusCode::FAILURE);
1141 std::set<std::size_t> updatedIndexes;
1143 if (updatedIndexes.find(
i) != updatedIndexes.end())
continue;
1146 if (!iomgr->io_contains(
this,
fname)) {
1148 return(StatusCode::FAILURE);
1150 if (!iomgr->io_retrieve(
this,
fname).isSuccess()) {
1152 return(StatusCode::FAILURE);
1154 if (savedName !=
fname) {
1158 updatedIndexes.insert(
i);
1159 for (std::size_t j =
i + 1; j <
imax; j++) {
1162 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 754 of file EventSelectorAthenaPool.cxx.
757 return(StatusCode::SUCCESS);
759 return(StatusCode::FAILURE);
◆ makeClient()
StatusCode EventSelectorAthenaPool::makeClient |
( |
int |
num | ) |
|
|
overridevirtual |
Make this a client.
Definition at line 935 of file EventSelectorAthenaPool.cxx.
937 ATH_MSG_ERROR(
"Failed to switch AthenaPoolCnvSvc to DataStreaming client");
938 return(StatusCode::FAILURE);
941 return(StatusCode::SUCCESS);
944 std::string dummyStr;
◆ makeServer()
StatusCode EventSelectorAthenaPool::makeServer |
( |
int |
num | ) |
|
|
overridevirtual |
Make this a server.
Definition at line 915 of file EventSelectorAthenaPool.cxx.
918 ATH_MSG_ERROR(
"Failed to switch AthenaPoolCnvSvc to output DataStreaming server");
920 return(StatusCode::SUCCESS);
923 ATH_MSG_ERROR(
"Failed to switch AthenaPoolCnvSvc to input DataStreaming server");
924 return(StatusCode::FAILURE);
927 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 473 of file EventSelectorAthenaPool.cxx.
474 std::lock_guard<CallMutex> lockGuard(
m_callLock);
478 while (
sc.isRecoverable()) {
485 void* tokenStr =
nullptr;
488 if (
sc.isRecoverable()) {
489 delete [] (
char*)tokenStr; tokenStr =
nullptr;
493 return(StatusCode::FAILURE);
495 if (
sc.isFailure()) {
496 ATH_MSG_FATAL(
"Cannot get NextEvent from AthenaSharedMemoryTool");
497 delete [] (
char*)tokenStr; tokenStr =
nullptr;
498 return(StatusCode::FAILURE);
504 athAttrList->extend(
"eventRef",
"string");
505 (*athAttrList)[
"eventRef"].data<std::string>() = std::string((
char*)tokenStr);
507 if (!
wh.record(std::move(athAttrList)).isSuccess()) {
508 delete [] (
char*)tokenStr; tokenStr =
nullptr;
510 return(StatusCode::FAILURE);
513 token.
fromString(std::string((
char*)tokenStr));
514 delete [] (
char*)tokenStr; tokenStr =
nullptr;
519 FileIncident endInputFileIncident(
name(),
"EndInputFile",
"FID:" + m_guid.toString(), m_guid.toString());
523 FileIncident beginInputFileIncident(
name(),
"BeginInputFile",
"FID:" + m_guid.toString(), m_guid.toString());
526 return(StatusCode::SUCCESS);
528 for (
const auto&
tool : m_helperTools) {
529 if (!
tool->preNext().isSuccess()) {
536 if (
sc.isRecoverable()) {
539 if (
sc.isFailure()) {
540 return StatusCode::FAILURE;
548 && (m_skipEventRanges.empty() ||
m_evtCount < m_skipEventRanges.front().first))
551 std::string token = m_headerIterator->eventRef().
toString();
555 token.length() + 1, 0)).isRecoverable() ) {
557 ATH_MSG_VERBOSE(
"Called last readData, while putting next event in next()");
561 if (!
sc.isSuccess()) {
563 return(StatusCode::FAILURE);
567 if (!
eventStore()->clearStore().isSuccess()) {
572 return(StatusCode::FAILURE);
577 for (
const auto&
tool : m_helperTools) {
579 if (toolStatus.isRecoverable()) {
582 status = StatusCode::RECOVERABLE;
584 }
else if (toolStatus.isFailure()) {
586 status = StatusCode::FAILURE;
589 if (
status.isRecoverable()) {
591 }
else if (
status.isFailure()) {
600 while( !m_skipEventRanges.empty() &&
m_evtCount >= m_skipEventRanges.front().second ) {
601 m_skipEventRanges.erase(m_skipEventRanges.begin());
606 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 609 of file EventSelectorAthenaPool.cxx.
611 for (
int i = 0;
i < jump;
i++) {
614 return(StatusCode::SUCCESS);
616 return(StatusCode::FAILURE);
◆ nextHandleFileTransition()
StatusCode EventSelectorAthenaPool::nextHandleFileTransition |
( |
IEvtSelector::Context & |
ctxt | ) |
const |
|
overrideprotectedvirtual |
Handle file transition at the next iteration.
Definition at line 619 of file EventSelectorAthenaPool.cxx.
621 if( m_inputCollectionsChanged ) {
623 if( rc != StatusCode::SUCCESS )
return rc;
627 if (m_headerIterator ==
nullptr || m_headerIterator->next() == 0) {
628 m_headerIterator =
nullptr;
630 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
638 if( m_inputCollectionsChanged ) {
640 if( rc != StatusCode::SUCCESS )
return rc;
643 ++m_inputCollectionsIterator;
646 if (m_poolCollectionConverter ==
nullptr) {
650 return StatusCode::FAILURE;
653 m_headerIterator = &m_poolCollectionConverter->executeQuery();
656 return StatusCode::RECOVERABLE;
662 m_headerIterator->eventRef()
663 : m_headerIterator->currentRow().tokenList()[
m_refName.value() +
"_ref"];
668 if (
guid != m_guid) {
677 m_activeEventsPerSource[
guid.toString()] = 0;
682 if (!
m_athenaPoolCnvSvc->setInputAttributes(*m_inputCollectionsIterator).isSuccess()) {
684 return(StatusCode::FAILURE);
687 FileIncident beginInputFileIncident(
name(),
"BeginInputFile", *m_inputCollectionsIterator, m_guid.toString());
693 FileIncident beginInputFileIncident(
name(),
"BeginInputFile",
"FID:" + m_guid.toString(), m_guid.toString());
698 return StatusCode::SUCCESS;
◆ nextWithSkip()
StatusCode EventSelectorAthenaPool::nextWithSkip |
( |
IEvtSelector::Context & |
ctxt | ) |
const |
|
overrideprotectedvirtual |
Go to next event and skip if necessary.
Definition at line 701 of file EventSelectorAthenaPool.cxx.
707 if (
sc.isRecoverable()) {
710 if (
sc.isFailure()) {
711 return StatusCode::FAILURE;
721 && (m_skipEventRanges.empty() ||
m_evtCount < m_skipEventRanges.front().first))
723 return StatusCode::SUCCESS;
725 while( !m_skipEventRanges.empty() &&
m_evtCount >= m_skipEventRanges.front().second ) {
726 m_skipEventRanges.erase(m_skipEventRanges.begin());
736 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 739 of file EventSelectorAthenaPool.cxx.
741 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 744 of file EventSelectorAthenaPool.cxx.
746 for (
int i = 0;
i < jump;
i++) {
749 return(StatusCode::SUCCESS);
751 return(StatusCode::FAILURE);
◆ readEvent()
StatusCode EventSelectorAthenaPool::readEvent |
( |
int |
maxevt | ) |
|
|
overridevirtual |
Read the next maxevt events.
- Parameters
-
evtnum | [IN] The number of events to read. |
Definition at line 977 of file EventSelectorAthenaPool.cxx.
979 ATH_MSG_ERROR(
"No AthenaSharedMemoryTool configured for readEvent()");
980 return(StatusCode::FAILURE);
984 for (
int i = 0;
i < maxevt || maxevt == -1; ++
i) {
985 if (!
next(*ctxt).isSuccess()) {
991 delete ctxt; ctxt =
nullptr;
992 return(StatusCode::FAILURE);
997 delete ctxt; ctxt =
nullptr;
1002 ATH_MSG_VERBOSE(
"Called last readData, while marking last event in readEvent()");
1006 if (!
sc.isSuccess()) {
1007 ATH_MSG_ERROR(
"Cannot put last Event marker to AthenaSharedMemoryTool");
1008 return(StatusCode::FAILURE);
1011 while (
sc.isSuccess() ||
sc.isRecoverable()) {
1014 ATH_MSG_DEBUG(
"Failed last readData -> Clients are stopped, after marking last event in readEvent()");
1016 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 799 of file EventSelectorAthenaPool.cxx.
801 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 762 of file EventSelectorAthenaPool.cxx.
765 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 804 of file EventSelectorAthenaPool.cxx.
806 if( m_inputCollectionsChanged ) {
808 if( rc != StatusCode::SUCCESS )
return rc;
816 m_headerIterator =
nullptr;
819 return(StatusCode::RECOVERABLE);
823 m_poolCollectionConverter->disconnectDb().ignore();
825 delete m_poolCollectionConverter; m_poolCollectionConverter =
nullptr;
830 <<
"\" from the collection list.");
839 if (!m_poolCollectionConverter->initialize().isSuccess()) {
840 m_headerIterator =
nullptr;
841 ATH_MSG_ERROR(
"seek: Unable to initialize PoolCollectionConverter.");
842 return(StatusCode::FAILURE);
845 m_headerIterator = &m_poolCollectionConverter->executeQuery();
848 next(*beginIter).ignore();
849 ATH_MSG_DEBUG(
"Token " << m_headerIterator->eventRef().toString());
851 m_headerIterator =
nullptr;
853 return(StatusCode::FAILURE);
860 return(StatusCode::FAILURE);
863 m_headerIterator =
nullptr;
865 return(StatusCode::FAILURE);
869 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 949 of file EventSelectorAthenaPool.cxx.
952 while (
sc.isRecoverable()) {
957 if (
sc.isFailure()) {
959 return(StatusCode::FAILURE);
962 while (
sc.isRecoverable() ||
sc.isFailure()) {
968 return(StatusCode::FAILURE);
973 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 208 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 183 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 220 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 241 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
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.
Gaudi::CheckedProperty< int > m_eventsPerLB
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)