ATLAS Offline Software
Loading...
Searching...
No Matches
EventSelectorByteStream Class Reference

concrete implementation of IEvtSelector for ByteStream More...

#include <EventSelectorByteStream.h>

Inheritance diagram for EventSelectorByteStream:
Collaboration diagram for EventSelectorByteStream:

Public Member Functions

 EventSelectorByteStream (const std::string &name, ISvcLocator *svcloc)
 Standard Constructor.
virtual ~EventSelectorByteStream ()
 Standard Destructor.
virtual StatusCode initialize () override
 Implementation of Service base class methods.
virtual StatusCode start () override
virtual StatusCode stop () override
virtual StatusCode finalize () override
virtual StatusCode createContext (Context *&it) const override
 create context
virtual StatusCode next (Context &it) const override
virtual StatusCode next (Context &it, int jump) const override
virtual StatusCode previous (Context &it) const override
virtual StatusCode previous (Context &it, int jump) const override
virtual StatusCode last (Context &it) const override
virtual StatusCode rewind (Context &it) const override
virtual StatusCode createAddress (const Context &it, IOpaqueAddress *&iop) const override
virtual StatusCode releaseContext (Context *&it) const override
virtual StatusCode resetCriteria (const std::string &criteria, Context &context) const override
 Set a selection criteria.
virtual StatusCode seek (Context &, int evtnum) const override
 Seek to a given event number.
virtual int curEvent (const Context &it) const override
 Return the current event number.
virtual int size (Context &it) const override
 Always returns -1.
virtual StatusCode makeServer (int num) override
 Make this a server.
virtual StatusCode makeClient (int num) override
 Make this a client.
virtual StatusCode share (int evtnum) override
 Request to share a given event number.
virtual StatusCode readEvent (int maxevt) override
 Read the next maxevt events.
virtual StatusCode io_reinit () override
 Callback method to reinitialize the internal state of the component for I/O purposes (e.g. upon fork(2)).

Protected Types

using mutex_t = std::recursive_mutex
using lock_t = std::lock_guard<mutex_t>

Protected Member Functions

virtual StatusCode nextHandleFileTransition (IEvtSelector::Context &ctxt) const override
 Handle file transition at the next iteration.
virtual StatusCode nextWithSkip (IEvtSelector::Context &ctxt) const override
 Go to next event and skip if necessary.
virtual StatusCode recordAttributeList () const override
 Record AttributeList in StoreGate.
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.
virtual bool disconnectIfFinished (const SG::SourceID &fid) const override

Private Member Functions

StatusCode nextImpl (Context &it, lock_t &lock) const
StatusCode nextImpl (Context &it, int jump, lock_t &lock) const
StatusCode previousImpl (Context &it, lock_t &lock) const
StatusCode previousImpl (Context &it, int jump, lock_t &lock) const
StatusCode nextHandleFileTransitionImpl (IEvtSelector::Context &ctxt, lock_t &lock) const
StatusCode nextWithSkipImpl (IEvtSelector::Context &ctxt, lock_t &lock) const
StatusCode recordAttributeListImpl (lock_t &lock) const
StatusCode fillAttributeListImpl (coral::AttributeList *attrList, const std::string &suffix, bool copySource, lock_t &lock) const
StatusCode reinit (lock_t &lock)
 Reinitialize the service when a fork() occurred/was-issued.
StatusCode openNewRun (lock_t &lock) const
void nextFile (lock_t &lock) const
int findEvent (int evtNum, lock_t &lock) const
 Search for event with number evtNum.
StoreGateSvceventStore () const
void inputCollectionsHandler (Gaudi::Details::PropertyBase &)

Private Attributes

mutex_t m_mutex
int m_fileCount ATLAS_THREAD_SAFE = 0
 number of files to process.
std::vector< int > m_numEvt ATLAS_THREAD_SAFE
std::vector< int > m_firstEvt ATLAS_THREAD_SAFE
std::vector< std::string >::const_iterator m_inputCollectionsIterator ATLAS_THREAD_SAFE
std::vector< long > m_skipEventSequence ATLAS_THREAD_SAFE
long m_NumEvents ATLAS_THREAD_SAFE = 0
ToolHandle< IAthenaIPCTool > m_eventStreamingTool ATLAS_THREAD_SAFE {this, "SharedMemoryTool", "", ""}
Gaudi::Property< bool > m_isSecondary {this, "IsSecondary", false, ""}
 IsSecondary, know if this is an instance of secondary event selector.
Gaudi::Property< std::string > m_eventSourceName {this, "ByteStreamInputSvc", "", ""}
Gaudi::Property< bool > m_procBadEvent {this, "ProcessBadEvent", false, ""}
 process bad events, which fail check_tree().
Gaudi::Property< int > m_maxBadEvts {this, "MaxBadEvents", -1, ""}
 number of bad events allowed before quitting.
EventContextByteStreamm_beginIter {}
EventContextByteStreamm_endIter {}
SmartIF< IByteStreamInputSvcm_eventSource
Gaudi::Property< std::vector< std::string > > m_inputCollectionsProp {this, "Input", {}, ""}
ServiceHandle< IIncidentSvc > m_incidentSvc {this, "IncidentSvc", "IncidentSvc", ""}
Gaudi::Property< long > m_skipEvents {this, "SkipEvents", 0, ""}
Gaudi::Property< std::vector< long > > m_skipEventSequenceProp {this, "SkipEventSequence", {}, ""}
bool m_firstFileFired {}
std::optional< InputFileIncidentGuard > m_inputFileGuard ATLAS_THREAD_SAFE
 RAII guard: guarantees a matching EndInputFile for every BeginInputFile.
ToolHandleArray< IAthenaSelectorToolm_helperTools {this, "HelperTools", {}, "Helper tools executed by EventSelector"}
 HelperTools, vector of names of AlgTools that are executed by the EventSelector.
ToolHandle< IAthenaSelectorToolm_counterTool {this, "CounterTool", "", ""}
Gaudi::Property< bool > m_overrideRunNumber {this, "OverrideRunNumber", false, ""}
 The following are included for compatibility with McEventSelector and are not really used.
Gaudi::Property< bool > m_filebased {this, "FileBased", true, ""}
Gaudi::CheckedProperty< uint32_t > m_runNo {this, "RunNumber", 0, ""}
Gaudi::CheckedProperty< uint64_t > m_firstEventNo {this, "FirstEvent", 1, ""}
Gaudi::CheckedProperty< uint64_t > m_eventsPerRun {this, "EventsPerRun", 1000000, ""}
Gaudi::CheckedProperty< uint32_t > m_firstLBNo {this, "FirstLB", 0, ""}
Gaudi::CheckedProperty< uint32_t > m_eventsPerLB {this, "EventsPerLB", 1000, ""}
Gaudi::CheckedProperty< uint32_t > m_initTimeStamp {this, "InitialTimeStamp", 0, ""}
Gaudi::Property< uint32_t > m_timeStampInterval {this, "TimeStampInterval", 0, ""}

Detailed Description

concrete implementation of IEvtSelector for ByteStream

An event selector service that steps through Event Filter packed raw events by use of an event source object and an iterator object called EventIteratorByteStream. The type of event source is specified at run time. It

can be a single file, a set of files or the network.

Definition at line 44 of file EventSelectorByteStream.h.

Member Typedef Documentation

◆ lock_t

using EventSelectorByteStream::lock_t = std::lock_guard<mutex_t>
protected

Definition at line 129 of file EventSelectorByteStream.h.

◆ mutex_t

using EventSelectorByteStream::mutex_t = std::recursive_mutex
protected

Definition at line 128 of file EventSelectorByteStream.h.

Constructor & Destructor Documentation

◆ EventSelectorByteStream()

EventSelectorByteStream::EventSelectorByteStream ( const std::string & name,
ISvcLocator * svcloc )

Standard Constructor.

Definition at line 43 of file EventSelectorByteStream.cxx.

45 : base_class(name, svcloc) {
46 // RunNumber, OldRunNumber and OverrideRunNumberFromInput are used
47 // to override the run number coming in on the input stream
48 m_runNo.verifier().setLower(0);
49 // The following properties are only for compatibility with
50 // McEventSelector and are not really used anywhere
51 // TODO(berghaus): validate if those are even used
52 m_eventsPerRun.verifier().setLower(0);
53 m_firstEventNo.verifier().setLower(1);
54 m_firstLBNo.verifier().setLower(0);
55 m_eventsPerLB.verifier().setLower(0);
56 m_initTimeStamp.verifier().setLower(0);
57
58 m_inputCollectionsProp.declareUpdateHandler(
60}
Gaudi::CheckedProperty< uint32_t > m_firstLBNo
Gaudi::CheckedProperty< uint64_t > m_eventsPerRun
Gaudi::CheckedProperty< uint32_t > m_initTimeStamp
Gaudi::CheckedProperty< uint32_t > m_eventsPerLB
Gaudi::CheckedProperty< uint32_t > m_runNo
Gaudi::Property< std::vector< std::string > > m_inputCollectionsProp
void inputCollectionsHandler(Gaudi::Details::PropertyBase &)
Gaudi::CheckedProperty< uint64_t > m_firstEventNo

◆ ~EventSelectorByteStream()

EventSelectorByteStream::~EventSelectorByteStream ( )
virtual

Standard Destructor.

Definition at line 72 of file EventSelectorByteStream.cxx.

72 {
73}

Member Function Documentation

◆ createAddress()

StatusCode EventSelectorByteStream::createAddress ( const Context & it,
IOpaqueAddress *& iop ) const
overridevirtual
Parameters
it[IN] current event context.
iop[OUT] pointer to IOpaqueAddress reference of selection context.

Definition at line 964 of file EventSelectorByteStream.cxx.

965 {
966 SG::DataProxy* proxy = eventStore()->proxy(ClassID_traits<DataHeader>::ID(),"ByteStreamDataHeader");
967 if (proxy !=0) {
968 iop = proxy->address();
969 return StatusCode::SUCCESS;
970 } else {
971 iop = 0;
972 return StatusCode::FAILURE;
973 }
974}
StoreGateSvc * eventStore() const
virtual SG::DataProxy * proxy(const void *const pTransient) const override final
get proxy for a given data object address in memory

◆ createContext()

StatusCode EventSelectorByteStream::createContext ( Context *& it) const
overridevirtual

create context

Definition at line 297 of file EventSelectorByteStream.cxx.

297 {
298 it = new EventContextByteStream(this);
299 return StatusCode::SUCCESS;
300}

◆ curEvent()

int EventSelectorByteStream::curEvent ( const Context & it) const
overridevirtual

Return the current event number.

Parameters
it[IN/OUT] current event context.

Definition at line 875 of file EventSelectorByteStream.cxx.

875 {
876 // event counter in IEvtSelectorSeek interface
878 return int(m_NumEvents);
879}
virtual void lock()=0
Interface to allow an object to lock itself when made const in SG.
std::lock_guard< mutex_t > lock_t

◆ disconnectIfFinished()

bool EventSelectorByteStream::disconnectIfFinished ( const SG::SourceID & fid) const
overrideprotectedvirtual

Definition at line 1019 of file EventSelectorByteStream.cxx.

1020{
1021 return true;
1022}

◆ eventStore()

StoreGateSvc * EventSelectorByteStream::eventStore ( ) const
private

Definition at line 78 of file EventSelectorByteStream.cxx.

78 {
80}
static StoreGateSvc * currentStoreGate()
get current StoreGate

◆ fillAttributeList()

StatusCode EventSelectorByteStream::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 741 of file EventSelectorByteStream.cxx.

742{
744 return fillAttributeListImpl (attrList, suffix, copySource, lock);
745}
StatusCode fillAttributeListImpl(coral::AttributeList *attrList, const std::string &suffix, bool copySource, lock_t &lock) const

◆ fillAttributeListImpl()

StatusCode EventSelectorByteStream::fillAttributeListImpl ( coral::AttributeList * attrList,
const std::string & suffix,
bool copySource,
lock_t & lock ) const
private

Definition at line 746 of file EventSelectorByteStream.cxx.

748{
749 attrList->extend("RunNumber" + suffix, "unsigned int");
750 attrList->extend("EventNumber" + suffix, "unsigned long long");
751 attrList->extend("LumiBlockN" + suffix, "unsigned int");
752 attrList->extend("BunchId" + suffix, "unsigned int");
753 attrList->extend("EventTime" + suffix, "unsigned int");
754 attrList->extend("EventTimeNanoSec" + suffix, "unsigned int");
755
756 // fill attribute list
757 const RawEvent* event = m_eventSource->currentEvent();
758
759 (*attrList)["RunNumber" + suffix].data<unsigned int>() = event->run_no();
760 if (event->version() < 0x03010000) {
761 (*attrList)["EventNumber" + suffix].data<unsigned long long>() = event->lvl1_id();
762 } else {
763 (*attrList)["EventNumber" + suffix].data<unsigned long long>() = event->global_id();
764 }
765 (*attrList)["LumiBlockN" + suffix].data<unsigned int>() = event->lumi_block();
766 (*attrList)["BunchId" + suffix].data<unsigned int>() = event->bc_id();
767
768 unsigned int bc_time_sec = event->bc_time_seconds();
769 unsigned int bc_time_ns = event->bc_time_nanoseconds();
770 // bc_time_ns should be lt 1e9.
771 if (bc_time_ns > 1000000000) {
772 // round it off to 1e9
773 ATH_MSG_WARNING(" bc_time nanosecond number larger than 1e9, it is " << bc_time_ns << ", reset it to 1 sec");
774 bc_time_ns = 1000000000;
775 }
776 (*attrList)["EventTime" + suffix].data<unsigned int>() = bc_time_sec;
777 (*attrList)["EventTimeNanoSec" + suffix].data<unsigned int>() = bc_time_ns;
778
780
781 event->status(buffer);
782 attrList->extend("TriggerStatus" + suffix, "unsigned int");
783 (*attrList)["TriggerStatus" + suffix].data<unsigned int>() = *buffer;
784
785 attrList->extend("ExtendedL1ID" + suffix, "unsigned int");
786 attrList->extend("L1TriggerType" + suffix, "unsigned int");
787 (*attrList)["ExtendedL1ID" + suffix].data<unsigned int>() = event->lvl1_id();
788 (*attrList)["L1TriggerType" + suffix].data<unsigned int>() = event->lvl1_trigger_type();
789
790 // Grab L1 words
791 event->lvl1_trigger_info(buffer);
792 for (uint32_t iT1 = 0; iT1 < event->nlvl1_trigger_info(); ++iT1) {
793 std::stringstream name;
794 name << "L1TriggerInfo_" << iT1;
795 attrList->extend(name.str() + suffix, "unsigned int");
796 (*attrList)[name.str() + suffix].data<unsigned int>() = *buffer;
797 ++buffer;
798 }
799
800 // Grab L2 words
801 event->lvl2_trigger_info(buffer);
802 for (uint32_t iT1 = 0; iT1 < event->nlvl2_trigger_info(); ++iT1) {
803 if (*buffer != 0) {
804 std::stringstream name;
805 name << "L2TriggerInfo_" << iT1;
806 attrList->extend(name.str() + suffix, "unsigned int");
807 (*attrList)[name.str() + suffix].data<unsigned int>() = *buffer;
808 }
809 ++buffer;
810 }
811
812 // Grab EF words
813 event->event_filter_info(buffer);
814 for (uint32_t iT1 = 0; iT1 < event->nevent_filter_info(); ++iT1) {
815 if (*buffer != 0) {
816 std::stringstream name;
817 name << "EFTriggerInfo_" << iT1;
818 attrList->extend(name.str() + suffix, "unsigned int");
819 (*attrList)[name.str() + suffix].data<unsigned int>() = *buffer;
820 }
821 ++buffer;
822 }
823
824 // Grab stream tags
825 event->stream_tag(buffer);
826 std::vector<eformat::helper::StreamTag> onl_streamTags;
827 eformat::helper::decode(event->nstream_tag(), buffer, onl_streamTags);
828 for (std::vector<eformat::helper::StreamTag>::const_iterator itS = onl_streamTags.begin(),
829 itSE = onl_streamTags.end(); itS != itSE; ++itS) {
830 attrList->extend(itS->name + suffix, stringTypeStr);
831 (*attrList)[itS->name + suffix].data<std::string>() = itS->type;
832 }
833
834 return StatusCode::SUCCESS;
835}
#define ATH_MSG_WARNING(x)
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition RawEvent.h:37
SmartIF< IByteStreamInputSvc > m_eventSource

◆ finalize()

StatusCode EventSelectorByteStream::finalize ( )
overridevirtual

Definition at line 225 of file EventSelectorByteStream.cxx.

225 {
226 if (!m_counterTool.empty()) {
227 if (!m_counterTool->preFinalize().isSuccess()) {
228 ATH_MSG_WARNING("Failed to preFinalize() CounterTool");
229 }
230 }
231 for (ToolHandle<IAthenaSelectorTool>& tool : m_helperTools) {
232 if (!tool->preFinalize().isSuccess()) {
233 ATH_MSG_WARNING("Failed to preFinalize() " << tool->name());
234 }
235 }
236 delete m_beginIter; m_beginIter = nullptr;
237 delete m_endIter; m_endIter = nullptr;
238 if (m_eventSource) m_eventSource->release();
239 // Finalize the Service base class.
240 return AthService::finalize();
241}
ToolHandle< IAthenaSelectorTool > m_counterTool
EventContextByteStream * m_endIter
ToolHandleArray< IAthenaSelectorTool > m_helperTools
HelperTools, vector of names of AlgTools that are executed by the EventSelector.
EventContextByteStream * m_beginIter

◆ findEvent()

int EventSelectorByteStream::findEvent ( int evtNum,
lock_t & lock ) const
private

Search for event with number evtNum.

Definition at line 838 of file EventSelectorByteStream.cxx.

838 {
839 // Loop over file event counts
840 for (size_t i = 0; i < m_inputCollectionsProp.value().size(); i++) {
841 if (m_inputCollectionsProp.value().size() != m_numEvt.size()) {
842 ATH_MSG_ERROR("vector size incompatibility");
843 break;
844 }
845 // if file not opened yet, check it
846 if (m_numEvt[i] == -1) {
847 std::string fileName = m_inputCollectionsProp.value()[i];
848 auto nevguid = m_eventSource->getBlockIterator(fileName);
849 long nev = nevguid.first;
850 // if failure on file open, exit
851 if (nev==-1) {
852 break;
853 }
854 // set initial event counter for that file
855 if (i > 0) {
856 m_firstEvt[i] = m_firstEvt[i - 1] + m_numEvt[i - 1];
857 } else {
858 m_firstEvt[i] = 0;
859 }
860 // log number of events in that file
861 m_numEvt[i] = nev;
862 }
863 // if sought event is in this file, then return the index of that file
864 if (evtNum >= m_firstEvt[i] && evtNum < m_firstEvt[i] + m_numEvt[i]) {
865 ATH_MSG_INFO("found " << evtNum << " in file " << i);
866 return i;
867 }
868 }
869 ATH_MSG_INFO("did not find ev " << evtNum);
870 // return file not found marker
871 return -1;
872}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
size_t size() const
Number of registered mappings.

◆ initialize()

StatusCode EventSelectorByteStream::initialize ( )
overridevirtual

Implementation of Service base class methods.

Definition at line 84 of file EventSelectorByteStream.cxx.

84 {
85
86 m_autoRetrieveTools = false;
87 m_checkToolDeps = false;
88
89 if (m_isSecondary.value()) {
90 ATH_MSG_DEBUG("Initializing secondary event selector " << name());
91 } else {
92 ATH_MSG_DEBUG("Initializing " << name());
93 }
94
95 ATH_CHECK(::AthService::initialize());
96
97 // Check for input setting
98 if (m_filebased && m_inputCollectionsProp.value().empty()) {
99 ATH_MSG_FATAL("Unable to retrieve valid input list");
100 return StatusCode::FAILURE;
101 }
102 m_skipEventSequence = m_skipEventSequenceProp.value();
103 std::sort(m_skipEventSequence.begin(), m_skipEventSequence.end());
104
105 // Check ByteStreamCnvSvc
106 m_eventSource = serviceLocator()->service(m_eventSourceName.value());
107 if (!m_eventSource) {
108 ATH_MSG_FATAL("Cannot get ByteStreamInputSvc");
109 return StatusCode::FAILURE;
110 }
111
112 // Get CounterTool (if configured)
113 if (!m_counterTool.empty()) {
114 ATH_CHECK(m_counterTool.retrieve());
115 }
116 // Get HelperTools
117 if (!m_helperTools.empty()) {
118 ATH_CHECK(m_helperTools.retrieve());
119 }
120 // Get SharedMemoryTool (if configured)
121 if (!m_eventStreamingTool.empty()) {
122 ATH_CHECK(m_eventStreamingTool.retrieve());
123 }
124
125 // Register this service for 'I/O' events
126 ServiceHandle<IIoComponentMgr> iomgr("IoComponentMgr", name());
127 ATH_CHECK(iomgr.retrieve());
128 ATH_CHECK(iomgr->io_register(this));
129
130 // Register the input files with the iomgr
131 bool allGood = true;
132 for (const std::string& input : m_inputCollectionsProp.value()) {
133 if (!iomgr->io_register(this, IIoComponentMgr::IoMode::READ, input).isSuccess()) {
134 ATH_MSG_FATAL("could not register [" << input << "] for output !");
135 allGood = false;
136 } else {
137 ATH_MSG_VERBOSE("io_register[" << this->name() << "](" << input << ") [ok]");
138 }
139 }
140 if (!allGood) {
141 return(StatusCode::FAILURE);
142 }
143
144 // Make sure MetaDataSvc is initialized before the first file is opened
145 ServiceHandle<IAthMetaDataSvc> metaDataSvc("MetaDataSvc", name());
146 ATH_CHECK(metaDataSvc.retrieve());
147
148 // Must happen before trying to open a file
150 StatusCode risc = this->reinit(lock);
151
152 return risc;
153}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
Gaudi::Property< bool > m_isSecondary
IsSecondary, know if this is an instance of secondary event selector.
Gaudi::Property< std::string > m_eventSourceName
Gaudi::Property< bool > m_filebased
StatusCode reinit(lock_t &lock)
Reinitialize the service when a fork() occurred/was-issued.
Gaudi::Property< std::vector< long > > m_skipEventSequenceProp
::StatusCode StatusCode
StatusCode definition for legacy code.
bool allGood
Loop over the SDOs & Digits.
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ inputCollectionsHandler()

void EventSelectorByteStream::inputCollectionsHandler ( Gaudi::Details::PropertyBase & )
private

Definition at line 63 of file EventSelectorByteStream.cxx.

63 {
65 if (this->FSMState() != Gaudi::StateMachine::OFFLINE) {
66 this->reinit(lock).ignore();
67 }
68}

◆ io_reinit()

StatusCode EventSelectorByteStream::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 983 of file EventSelectorByteStream.cxx.

983 {
985 ATH_MSG_INFO("I/O reinitialization...");
986 ServiceHandle<IIoComponentMgr> iomgr("IoComponentMgr", name());
987 ATH_CHECK(iomgr.retrieve());
988 if (!iomgr->io_hasitem(this)) {
989 ATH_MSG_FATAL("IoComponentMgr does not know about myself !");
990 return StatusCode::FAILURE;
991 }
992 std::vector<std::string> inputCollections = m_inputCollectionsProp.value();
993 for (std::size_t i = 0, imax = inputCollections.size(); i != imax; ++i) {
994 ATH_MSG_INFO("I/O reinitialization, file = " << inputCollections[i]);
995 std::string &fname = inputCollections[i];
996 if (!iomgr->io_contains(this, fname)) {
997 ATH_MSG_ERROR("IoComponentMgr does not know about [" << fname << "] !");
998 return StatusCode::FAILURE;
999 }
1000 ATH_CHECK(iomgr->io_retrieve(this, fname));
1001 }
1002 // all good... copy over.
1003 m_inputFileGuard.reset();
1004
1005 // Set m_inputCollectionsProp. But we _dont_ want to run the update
1006 // handler --- that calls reinit(), which will deadlock since
1007 // we're holding the lock. Instead, we'll call reinit() ourselves.
1008 auto old_cb = m_inputCollectionsProp.updateCallBack();
1009 m_inputCollectionsProp.declareUpdateHandler(
1010 [] (Gaudi::Details::PropertyBase&) {}
1011 );
1013 m_inputCollectionsProp.declareUpdateHandler (std::move(old_cb));
1014
1015 return this->reinit(lock);
1016}
int imax(int i, int j)

◆ last()

StatusCode EventSelectorByteStream::last ( Context & it) const
overridevirtual
Parameters
it[IN/OUT] current event context is iterated to last event.

Definition at line 639 of file EventSelectorByteStream.cxx.

639 {
640 if (it.identifier() == m_endIter->identifier()) {
641 ATH_MSG_DEBUG("last(): Last event in InputStream.");
642 return StatusCode::SUCCESS;
643 }
644 return StatusCode::FAILURE;
645}

◆ makeClient()

StatusCode EventSelectorByteStream::makeClient ( int num)
overridevirtual

Make this a client.

Definition at line 896 of file EventSelectorByteStream.cxx.

896 {
898 if (m_eventStreamingTool.empty()) {
899 return StatusCode::FAILURE;
900 }
901 std::string dummyStr;
902 return m_eventStreamingTool->makeClient(0, dummyStr);
903}

◆ makeServer()

StatusCode EventSelectorByteStream::makeServer ( int num)
overridevirtual

Make this a server.

Definition at line 887 of file EventSelectorByteStream.cxx.

887 {
889 if (m_eventStreamingTool.empty()) {
890 return StatusCode::FAILURE;
891 }
892 return m_eventStreamingTool->makeServer(1, "");
893}

◆ next() [1/2]

virtual StatusCode EventSelectorByteStream::next ( Context & it) const
overridevirtual
Parameters
it[IN/OUT] current event context is iterated to next event.

◆ next() [2/2]

virtual StatusCode EventSelectorByteStream::next ( Context & it,
int jump ) const
overridevirtual
Parameters
it[IN/OUT] current event context is iterated to next event.
jump[IN] number of events to jump (currently not supported).

◆ nextFile()

void EventSelectorByteStream::nextFile ( lock_t & lock) const
private

Definition at line 243 of file EventSelectorByteStream.cxx.

243 {
244 // EndInputFile is handled by the InputFileIncidentGuard via transition()
245 // when the next file is opened, or via reset() on stop().
246 ++m_inputCollectionsIterator;
247 ++m_fileCount;
248}

◆ nextHandleFileTransition()

StatusCode EventSelectorByteStream::nextHandleFileTransition ( IEvtSelector::Context & ctxt) const
overrideprotectedvirtual

Handle file transition at the next iteration.

Definition at line 463 of file EventSelectorByteStream.cxx.

464{
466 return nextHandleFileTransitionImpl (ctxt, lock);
467}
StatusCode nextHandleFileTransitionImpl(IEvtSelector::Context &ctxt, lock_t &lock) const

◆ nextHandleFileTransitionImpl()

StatusCode EventSelectorByteStream::nextHandleFileTransitionImpl ( IEvtSelector::Context & ctxt,
lock_t & lock ) const
private

Definition at line 468 of file EventSelectorByteStream.cxx.

470{
471 const RawEvent* pre{};
472 bool badEvent{};
473 // if event source not ready from init, try next file
474 if (m_filebased && !m_eventSource->ready()) {
475 // next file
476 this->nextFile(lock);
477 if (this->openNewRun(lock).isFailure()) {
478 ATH_MSG_DEBUG("Event source found no more valid files left in input list");
479 m_NumEvents = -1;
480 return StatusCode::FAILURE;
481 }
482 }
483 try {
484 pre = m_eventSource->nextEvent();
485 }
486 catch (const ByteStreamExceptions::readError&) {
487 ATH_MSG_FATAL("Caught ByteStreamExceptions::readError");
488 return StatusCode::FAILURE;
489 }
490 catch (const ByteStreamExceptions::badFragment&) {
491 ATH_MSG_ERROR("badFragment encountered");
492 badEvent = true;
493 }
494 catch (const ByteStreamExceptions::badFragmentData&) {
495 ATH_MSG_ERROR("badFragment data encountered");
496 badEvent = true;
497 }
498 // Check whether a RawEvent has actually been provided
499 if (pre == nullptr) {
500 ctxt = *m_endIter;
501 return StatusCode::FAILURE;
502 }
503
504 // If not secondary just return the status code based on if the event is bas
505 if (!m_isSecondary.value()) {
506 // check bad event flag and handle as configured
507 return badEvent ? StatusCode::RECOVERABLE : StatusCode::SUCCESS;
508 }
509
510 // Build a DH for use by other components
511 StatusCode rec_sg = m_eventSource->generateDataHeader();
512 if (rec_sg != StatusCode::SUCCESS) {
513 ATH_MSG_ERROR("Fail to record BS DataHeader in StoreGate. Skipping events?! " << rec_sg);
514 }
515
516 return StatusCode::SUCCESS;
517}
void nextFile(lock_t &lock) const
StatusCode openNewRun(lock_t &lock) const

◆ nextImpl() [1/2]

StatusCode EventSelectorByteStream::nextImpl ( Context & it,
int jump,
lock_t & lock ) const
private

◆ nextImpl() [2/2]

StatusCode EventSelectorByteStream::nextImpl ( Context & it,
lock_t & lock ) const
private

◆ nextWithSkip()

StatusCode EventSelectorByteStream::nextWithSkip ( IEvtSelector::Context & ctxt) const
overrideprotectedvirtual

Go to next event and skip if necessary.

Definition at line 519 of file EventSelectorByteStream.cxx.

520{
522 return nextWithSkipImpl (ctxt, lock);
523}
StatusCode nextWithSkipImpl(IEvtSelector::Context &ctxt, lock_t &lock) const

◆ nextWithSkipImpl()

StatusCode EventSelectorByteStream::nextWithSkipImpl ( IEvtSelector::Context & ctxt,
lock_t & lock ) const
private

Definition at line 524 of file EventSelectorByteStream.cxx.

525 {
526 ATH_MSG_DEBUG("EventSelectorByteStream::nextWithSkip");
527
528 for (;;) {
529 // Check if we're at the end of file
531 if (sc.isRecoverable()) {
532 continue; // handles empty files
533 }
534 if (sc.isFailure()) {
535 return StatusCode::FAILURE;
536 }
537
538 // Increase event count
539 ++m_NumEvents;
540
541 if (!m_counterTool.empty() && !m_counterTool->preNext().isSuccess()) {
542 ATH_MSG_WARNING("Failed to preNext() CounterTool.");
543 }
544 if ( m_NumEvents > m_skipEvents.value() &&
545 (m_skipEventSequence.empty() || m_NumEvents != m_skipEventSequence.front()) ) {
546 return StatusCode::SUCCESS;
547 } else {
548 if (!m_skipEventSequence.empty() && m_NumEvents == m_skipEventSequence.front()) {
549 m_skipEventSequence.erase(m_skipEventSequence.begin());
550 }
551 if (m_isSecondary.value()) {
552 ATH_MSG_INFO("skipping secondary event " << m_NumEvents);
553 } else {
554 ATH_MSG_INFO("skipping event " << m_NumEvents);
555 }
556 }
557 }
558
559 return StatusCode::SUCCESS;
560}
static Double_t sc
Gaudi::Property< long > m_skipEvents

◆ openNewRun()

StatusCode EventSelectorByteStream::openNewRun ( lock_t & lock) const
private

Definition at line 250 of file EventSelectorByteStream.cxx.

250 {
251 // Should be protected upstream, but this is further protection
252 if (!m_filebased) {
253 ATH_MSG_ERROR("cannot open new run for non-filebased inputs");
254 return StatusCode::FAILURE;
255 }
256 // Check for end of file list
257 if (m_inputCollectionsIterator == m_inputCollectionsProp.value().end()) {
258 ATH_MSG_INFO("End of input file list reached");
259 return StatusCode::FAILURE;
260 }
261 std::string blockname = *m_inputCollectionsIterator;
262 // try to open a file
263 auto nevguid = m_eventSource->getBlockIterator(blockname);
264 long nev = nevguid.first;
265 if (nev == -1) {
266 ATH_MSG_FATAL("Unable to access file " << *m_inputCollectionsIterator << ", stopping here");
267 throw ByteStreamExceptions::fileAccessError();
268 }
269 // Fire EndInputFile for previous file (if any), then BeginInputFile for new file
271 "BSF:" + *m_inputCollectionsIterator, nevguid.second,
272 /*endFileName=*/{});
273
274 // check if file is empty
275 if (nev == 0) {
276 ATH_MSG_WARNING("no events in file " << blockname << " try next");
277 if (m_eventSource->ready()) m_eventSource->closeBlockIterator(true);
278 this->nextFile(lock);
279 return openNewRun(lock);
280 // check if skipping all events in that file (minus events already skipped)
281 } else if (m_skipEvents.value() - m_NumEvents > nev) {
282 ATH_MSG_WARNING("skipping more events " << m_skipEvents.value() - m_NumEvents << "(" << nev <<") than in file " << *m_inputCollectionsIterator << ", try next");
283 m_NumEvents += nev;
284 m_numEvt[m_fileCount] = nev;
285 if (m_eventSource->ready()) m_eventSource->closeBlockIterator(true);
286 this->nextFile(lock);
287 return openNewRun(lock);
288 }
289
290 ATH_MSG_DEBUG("Opened block/file " << blockname);
291 m_firstEvt[m_fileCount] = m_NumEvents;
292 m_numEvt[m_fileCount] = nev;
293
294 return StatusCode::SUCCESS;
295}
ServiceHandle< IIncidentSvc > m_incidentSvc
static void transition(std::optional< InputFileIncidentGuard > &guard, IIncidentSvc &incSvc, std::string_view source, std::string_view beginFileName, std::string_view guid, std::string_view endFileName={}, std::string_view beginType=IncidentType::BeginInputFile, std::string_view endType=IncidentType::EndInputFile)
Replace the guard in an optional, with strict End-before-Begin ordering.

◆ previous() [1/2]

virtual StatusCode EventSelectorByteStream::previous ( Context & it) const
overridevirtual
Parameters
it[IN/OUT] current event context is iterated to previous event.

◆ previous() [2/2]

virtual StatusCode EventSelectorByteStream::previous ( Context & it,
int jump ) const
overridevirtual
Parameters
it[IN/OUT] current event context is iterated to previous event.
jump[IN] number of events to jump (currently not supported).

◆ previousImpl() [1/2]

StatusCode EventSelectorByteStream::previousImpl ( Context & it,
int jump,
lock_t & lock ) const
private

◆ previousImpl() [2/2]

StatusCode EventSelectorByteStream::previousImpl ( Context & it,
lock_t & lock ) const
private

◆ readEvent()

StatusCode EventSelectorByteStream::readEvent ( int maxevt)
overridevirtual

Read the next maxevt events.

Parameters
evtnum[IN] The number of events to read.

Definition at line 923 of file EventSelectorByteStream.cxx.

923 {
925 if (m_eventStreamingTool.empty()) {
926 ATH_MSG_ERROR("No AthenaSharedMemoryTool configured for readEvent()");
927 return StatusCode::FAILURE;
928 }
929 ATH_MSG_VERBOSE("Called read Event " << maxevt);
930 for (int i = 0; i < maxevt || maxevt == -1; ++i) {
931 const RawEvent* pre = nullptr;
932 if (this->nextImpl(*m_beginIter, lock).isSuccess()) {
933 pre = m_eventSource->currentEvent();
934 } else {
935 if (m_NumEvents == -1) {
936 ATH_MSG_VERBOSE("Called read Event and read last event from input: " << i);
937 break;
938 }
939 ATH_MSG_ERROR("Unable to retrieve next event for " << i << "/" << maxevt);
940 return StatusCode::FAILURE;
941 }
942 if (m_eventStreamingTool->isServer()) {
944 while ( (sc = putEvent_ST(*m_eventStreamingTool,
945 m_NumEvents - 1,
946 pre->start(),
947 pre->fragment_size_word() * sizeof(uint32_t),
948 m_eventSource->currentEventStatus())).isRecoverable() ) {
949 usleep(1000);
950 }
951 ATH_CHECK(sc);
952 }
953 }
954 // End of file, wait for last event to be taken
956 while ( (sc = putEvent_ST(*m_eventStreamingTool, 0, 0, 0, 0)).isRecoverable() ) {
957 usleep(1000);
958 }
959 ATH_CHECK(sc);
960 return StatusCode::SUCCESS;
961}
StatusCode nextImpl(Context &it, lock_t &lock) const

◆ recordAttributeList()

StatusCode EventSelectorByteStream::recordAttributeList ( ) const
overrideprotectedvirtual

Record AttributeList in StoreGate.

Definition at line 714 of file EventSelectorByteStream.cxx.

715{
718}
StatusCode recordAttributeListImpl(lock_t &lock) const

◆ recordAttributeListImpl()

StatusCode EventSelectorByteStream::recordAttributeListImpl ( lock_t & lock) const
private

Definition at line 719 of file EventSelectorByteStream.cxx.

720{
721 std::string listName("EventInfoAtts");
722
723 if (eventStore()->contains<AthenaAttributeList>(listName)) {
724 const AthenaAttributeList* oldAttrList = nullptr;
725 ATH_CHECK(eventStore()->retrieve(oldAttrList, listName));
726 ATH_CHECK(eventStore()->removeDataAndProxy(oldAttrList));
727 }
728
729 // build the new attr list
730 auto attrList = std::make_unique<AthenaAttributeList>();
731
732 // fill the attr list
733 ATH_CHECK(fillAttributeListImpl(attrList.get(), "", false, lock));
734
735 // put result in event store
736 ATH_CHECK(eventStore()->record(std::move(attrList), listName));
737
738 return StatusCode::SUCCESS;
739}
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:116

◆ reinit()

StatusCode EventSelectorByteStream::reinit ( lock_t & lock)
private

Reinitialize the service when a fork() occurred/was-issued.

Definition at line 155 of file EventSelectorByteStream.cxx.

155 {
156 ATH_MSG_INFO("reinitialization...");
157 // reset markers
158 if (m_inputCollectionsProp.value().size()>0) {
159 m_numEvt.resize(m_inputCollectionsProp.value().size(), -1);
160 m_firstEvt.resize(m_inputCollectionsProp.value().size(), -1);
161 }
162 else {
163 m_numEvt.resize(1);
164 m_firstEvt.resize(1);
165 }
166
167 // Initialize InputCollectionsIterator
168 m_inputCollectionsIterator = m_inputCollectionsProp.value().begin();
169 m_NumEvents = 0;
170 bool retError = false;
171 if (!m_helperTools.empty()) {
172 for (ToolHandle<IAthenaSelectorTool>& tool : m_helperTools) {
173 if (!tool->postInitialize().isSuccess()) {
174 ATH_MSG_FATAL("Failed to postInitialize() " << tool->name());
175 retError = true;
176 }
177 }
178 }
179 if (retError) {
180 ATH_MSG_FATAL("Failed to postInitialize() helperTools");
181 return(StatusCode::FAILURE);
182 }
183
184 // If file based input then fire appropriate incidents
185 if (m_filebased) {
186 if (!m_firstFileFired) {
187 FileIncident firstInputFileIncident(name(), "FirstInputFile", "BSF:" + *m_inputCollectionsIterator);
188 m_incidentSvc->fireIncident(firstInputFileIncident);
189 m_firstFileFired = true;
190 }
191
192 // try to open a file
193 ATH_CHECK(this->openNewRun(lock));
194 }
195
196 return StatusCode::SUCCESS;
197}

◆ releaseContext()

StatusCode EventSelectorByteStream::releaseContext ( Context *& it) const
overridevirtual
Parameters
it[IN] current event context is released.

Definition at line 978 of file EventSelectorByteStream.cxx.

978 {
979 return StatusCode::SUCCESS;
980}

◆ resetCriteria()

StatusCode EventSelectorByteStream::resetCriteria ( const std::string & criteria,
Context & context ) const
overridevirtual

Set a selection criteria.

Parameters
criteriafilter predicate (SQL-style WHERE clause)
context[IN] current event context.

Definition at line 653 of file EventSelectorByteStream.cxx.

653 {
654 return StatusCode::SUCCESS;
655}

◆ rewind()

StatusCode EventSelectorByteStream::rewind ( Context & it) const
overridevirtual
Parameters
it[IN/OUT] current event context is rewound to first event.

Definition at line 647 of file EventSelectorByteStream.cxx.

647 {
648 ATH_MSG_ERROR("rewind() not implemented");
649 return StatusCode::FAILURE;
650}

◆ seek()

StatusCode EventSelectorByteStream::seek ( Context & ,
int evtnum ) const
overridevirtual

Seek to a given event number.

Parameters
it[IN/OUT] current event context.
evtnum[IN] The event number to which to seek.

Definition at line 658 of file EventSelectorByteStream.cxx.

658 {
660 // Check that input is seekable
661 if (!m_filebased) {
662 ATH_MSG_ERROR("Input not seekable, choose different input svc");
663 return StatusCode::FAILURE;
664 }
665 // find the file index with that event
666 long fileNum = findEvent(evtNum, lock);
667 if (fileNum == -1 && evtNum >= m_firstEvt[m_fileCount] && evtNum < m_NumEvents) {
668 fileNum = m_fileCount;
669 }
670 // if unable to locate file, exit
671 if (fileNum == -1) {
672 ATH_MSG_INFO("seek: Reached end of Input.");
673 return StatusCode::RECOVERABLE;
674 }
675 // check if it is the current file
676 if (fileNum != m_fileCount) { // event in different file
677 // Close input file if open
678 if (m_eventSource->ready()) m_eventSource->closeBlockIterator(true);
679 ATH_MSG_DEBUG("Seek to item: \"" << m_inputCollectionsProp.value()[fileNum] << "\" from the explicit file list.");
680 std::string fileName = m_inputCollectionsProp.value()[fileNum];
681 m_fileCount = fileNum;
682 // Open the correct file
683 auto nevguid = m_eventSource->getBlockIterator(fileName);
684 long nev = nevguid.first;
685 if (nev == -1) {
686 ATH_MSG_FATAL("Unable to open file with seeked event " << evtNum << " file " << fileName);
687 return StatusCode::FAILURE;
688 }
689 int delta = evtNum - m_firstEvt[m_fileCount];
690 if (delta > 0) {
691 EventContextByteStream* beginIter ATLAS_THREAD_SAFE = m_beginIter;
692 ATH_CHECK(nextImpl(*beginIter,delta, lock));
693 }
694 }
695 // event in current file
696 {
697 int delta = (evtNum - m_firstEvt[m_fileCount] + 1) - m_eventSource->positionInBlock();
698 ATH_MSG_DEBUG("Seeking event " << evtNum << " in current file with delta " << delta);
699 if ( delta == 0 ) { // current event
700 // nothing to do
701 }
702 else if ( delta > 0 ) { // forward
703 EventContextByteStream* beginIter ATLAS_THREAD_SAFE = m_beginIter;
704 ATH_CHECK(this->nextImpl(*beginIter, delta, lock));
705 }
706 else if ( delta < 0 ) { // backward
707 EventContextByteStream* beginIter ATLAS_THREAD_SAFE = m_beginIter;
708 ATH_CHECK(this->previousImpl(*beginIter, -1*delta, lock));
709 }
710 }
711 return StatusCode::SUCCESS;
712}
int findEvent(int evtNum, lock_t &lock) const
Search for event with number evtNum.
StatusCode previousImpl(Context &it, lock_t &lock) const
int m_fileCount ATLAS_THREAD_SAFE
number of files to process.

◆ share()

StatusCode EventSelectorByteStream::share ( int evtnum)
overridevirtual

Request to share a given event number.

Parameters
evtnum[IN] The event number to share.

Definition at line 906 of file EventSelectorByteStream.cxx.

906 {
908 if (m_eventStreamingTool.empty()) {
909 return StatusCode::FAILURE;
910 }
911 if (m_eventStreamingTool->isClient()) {
912 StatusCode sc = m_eventStreamingTool->lockEvent(evtNum);
913 while (sc.isRecoverable()) {
914 usleep(1000);
915 sc = m_eventStreamingTool->lockEvent(evtNum);
916 }
917 return sc;
918 }
919 return StatusCode::FAILURE;
920}

◆ size()

int EventSelectorByteStream::size ( Context & it) const
overridevirtual

Always returns -1.

Parameters
it[IN/OUT] current event context.

Definition at line 882 of file EventSelectorByteStream.cxx.

882 {
883 return -1;
884}

◆ start()

StatusCode EventSelectorByteStream::start ( )
overridevirtual

Definition at line 200 of file EventSelectorByteStream.cxx.

200 {
201 ATH_MSG_DEBUG("Calling EventSelectorByteStream::start()");
203 // Create the begin and end iterator's for this selector.
204 m_beginIter = new EventContextByteStream(this);
205 // Increment to get the new event in.
206 m_endIter = new EventContextByteStream(0);
207
208 return StatusCode::SUCCESS;
209}

◆ stop()

StatusCode EventSelectorByteStream::stop ( )
overridevirtual

Definition at line 212 of file EventSelectorByteStream.cxx.

212 {
213 ATH_MSG_DEBUG("Calling EventSelectorByteStream::stop()");
214 if (m_filebased) {
215 // Fire EndInputFile for any file still open
216 m_inputFileGuard.reset();
217 if (m_eventSource->ready()) {
218 m_eventSource->closeBlockIterator(false);
219 }
220 }
221 return StatusCode::SUCCESS;
222}

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/8]

std::optional<InputFileIncidentGuard> m_inputFileGuard EventSelectorByteStream::ATLAS_THREAD_SAFE
mutableprivate

RAII guard: guarantees a matching EndInputFile for every BeginInputFile.

Definition at line 200 of file EventSelectorByteStream.h.

◆ ATLAS_THREAD_SAFE [2/8]

ToolHandle<IAthenaIPCTool> m_eventStreamingTool EventSelectorByteStream::ATLAS_THREAD_SAFE {this, "SharedMemoryTool", "", ""}
mutableprivate

Definition at line 179 of file EventSelectorByteStream.h.

179{this, "SharedMemoryTool", "", ""};

◆ ATLAS_THREAD_SAFE [3/8]

long m_NumEvents EventSelectorByteStream::ATLAS_THREAD_SAFE = 0
mutableprivate

Definition at line 178 of file EventSelectorByteStream.h.

◆ ATLAS_THREAD_SAFE [4/8]

std::vector<long> m_skipEventSequence EventSelectorByteStream::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 177 of file EventSelectorByteStream.h.

◆ ATLAS_THREAD_SAFE [5/8]

std::vector<std::string>::const_iterator m_inputCollectionsIterator EventSelectorByteStream::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 176 of file EventSelectorByteStream.h.

◆ ATLAS_THREAD_SAFE [6/8]

std::vector<int> m_firstEvt EventSelectorByteStream::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 175 of file EventSelectorByteStream.h.

◆ ATLAS_THREAD_SAFE [7/8]

std::vector<int> m_numEvt EventSelectorByteStream::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 174 of file EventSelectorByteStream.h.

◆ ATLAS_THREAD_SAFE [8/8]

int m_fileCount EventSelectorByteStream::ATLAS_THREAD_SAFE = 0
mutableprivate

number of files to process.

Definition at line 173 of file EventSelectorByteStream.h.

◆ m_beginIter

EventContextByteStream* EventSelectorByteStream::m_beginIter {}
private

Definition at line 188 of file EventSelectorByteStream.h.

188{};

◆ m_counterTool

ToolHandle<IAthenaSelectorTool> EventSelectorByteStream::m_counterTool {this, "CounterTool", "", ""}
private

Definition at line 204 of file EventSelectorByteStream.h.

204{this, "CounterTool", "", ""};

◆ m_endIter

EventContextByteStream* EventSelectorByteStream::m_endIter {}
private

Definition at line 189 of file EventSelectorByteStream.h.

189{};

◆ m_eventSource

SmartIF<IByteStreamInputSvc> EventSelectorByteStream::m_eventSource
private

Definition at line 190 of file EventSelectorByteStream.h.

◆ m_eventSourceName

Gaudi::Property<std::string> EventSelectorByteStream::m_eventSourceName {this, "ByteStreamInputSvc", "", ""}
private

Definition at line 184 of file EventSelectorByteStream.h.

184{this, "ByteStreamInputSvc", "", ""};

◆ m_eventsPerLB

Gaudi::CheckedProperty<uint32_t> EventSelectorByteStream::m_eventsPerLB {this, "EventsPerLB", 1000, ""}
private

Definition at line 216 of file EventSelectorByteStream.h.

216{this, "EventsPerLB", 1000, ""};

◆ m_eventsPerRun

Gaudi::CheckedProperty<uint64_t> EventSelectorByteStream::m_eventsPerRun {this, "EventsPerRun", 1000000, ""}
private

Definition at line 214 of file EventSelectorByteStream.h.

214{this, "EventsPerRun", 1000000, ""};

◆ m_filebased

Gaudi::Property<bool> EventSelectorByteStream::m_filebased {this, "FileBased", true, ""}
private

Definition at line 210 of file EventSelectorByteStream.h.

210{this, "FileBased", true, ""};

◆ m_firstEventNo

Gaudi::CheckedProperty<uint64_t> EventSelectorByteStream::m_firstEventNo {this, "FirstEvent", 1, ""}
private

Definition at line 213 of file EventSelectorByteStream.h.

213{this, "FirstEvent", 1, ""};

◆ m_firstFileFired

bool EventSelectorByteStream::m_firstFileFired {}
private

Definition at line 198 of file EventSelectorByteStream.h.

198{};

◆ m_firstLBNo

Gaudi::CheckedProperty<uint32_t> EventSelectorByteStream::m_firstLBNo {this, "FirstLB", 0, ""}
private

Definition at line 215 of file EventSelectorByteStream.h.

215{this, "FirstLB", 0, ""};

◆ m_helperTools

ToolHandleArray<IAthenaSelectorTool> EventSelectorByteStream::m_helperTools {this, "HelperTools", {}, "Helper tools executed by EventSelector"}
private

HelperTools, vector of names of AlgTools that are executed by the EventSelector.

Definition at line 203 of file EventSelectorByteStream.h.

203{this, "HelperTools", {}, "Helper tools executed by EventSelector"};

◆ m_incidentSvc

ServiceHandle<IIncidentSvc> EventSelectorByteStream::m_incidentSvc {this, "IncidentSvc", "IncidentSvc", ""}
private

Definition at line 193 of file EventSelectorByteStream.h.

193{this, "IncidentSvc", "IncidentSvc", ""};

◆ m_initTimeStamp

Gaudi::CheckedProperty<uint32_t> EventSelectorByteStream::m_initTimeStamp {this, "InitialTimeStamp", 0, ""}
private

Definition at line 217 of file EventSelectorByteStream.h.

217{this, "InitialTimeStamp", 0, ""};

◆ m_inputCollectionsProp

Gaudi::Property<std::vector<std::string> > EventSelectorByteStream::m_inputCollectionsProp {this, "Input", {}, ""}
private

Definition at line 191 of file EventSelectorByteStream.h.

191{this, "Input", {}, ""};

◆ m_isSecondary

Gaudi::Property<bool> EventSelectorByteStream::m_isSecondary {this, "IsSecondary", false, ""}
private

IsSecondary, know if this is an instance of secondary event selector.

Definition at line 182 of file EventSelectorByteStream.h.

182{this, "IsSecondary", false, ""};

◆ m_maxBadEvts

Gaudi::Property<int> EventSelectorByteStream::m_maxBadEvts {this, "MaxBadEvents", -1, ""}
private

number of bad events allowed before quitting.

Definition at line 186 of file EventSelectorByteStream.h.

186{this, "MaxBadEvents", -1, ""};

◆ m_mutex

mutex_t EventSelectorByteStream::m_mutex
mutableprivate

Definition at line 172 of file EventSelectorByteStream.h.

◆ m_overrideRunNumber

Gaudi::Property<bool> EventSelectorByteStream::m_overrideRunNumber {this, "OverrideRunNumber", false, ""}
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 209 of file EventSelectorByteStream.h.

209{this, "OverrideRunNumber", false, ""};

◆ m_procBadEvent

Gaudi::Property<bool> EventSelectorByteStream::m_procBadEvent {this, "ProcessBadEvent", false, ""}
private

process bad events, which fail check_tree().

Definition at line 185 of file EventSelectorByteStream.h.

185{this, "ProcessBadEvent", false, ""};

◆ m_runNo

Gaudi::CheckedProperty<uint32_t> EventSelectorByteStream::m_runNo {this, "RunNumber", 0, ""}
private

Definition at line 212 of file EventSelectorByteStream.h.

212{this, "RunNumber", 0, ""};

◆ m_skipEvents

Gaudi::Property<long> EventSelectorByteStream::m_skipEvents {this, "SkipEvents", 0, ""}
private

Definition at line 195 of file EventSelectorByteStream.h.

195{this, "SkipEvents", 0, ""}; // Number of events to skip at the beginning

◆ m_skipEventSequenceProp

Gaudi::Property<std::vector<long> > EventSelectorByteStream::m_skipEventSequenceProp {this, "SkipEventSequence", {}, ""}
private

Definition at line 196 of file EventSelectorByteStream.h.

196{this, "SkipEventSequence", {}, ""};

◆ m_timeStampInterval

Gaudi::Property<uint32_t> EventSelectorByteStream::m_timeStampInterval {this, "TimeStampInterval", 0, ""}
private

Definition at line 218 of file EventSelectorByteStream.h.

218{this, "TimeStampInterval", 0, ""};

The documentation for this class was generated from the following files: