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 42 of file EventSelectorByteStream.cxx.

44 : base_class(name, svcloc) {
45 // RunNumber, OldRunNumber and OverrideRunNumberFromInput are used
46 // to override the run number coming in on the input stream
47 m_runNo.verifier().setLower(0);
48 // The following properties are only for compatibility with
49 // McEventSelector and are not really used anywhere
50 // TODO(berghaus): validate if those are even used
51 m_eventsPerRun.verifier().setLower(0);
52 m_firstEventNo.verifier().setLower(1);
53 m_firstLBNo.verifier().setLower(0);
54 m_eventsPerLB.verifier().setLower(0);
55 m_initTimeStamp.verifier().setLower(0);
56
57 m_inputCollectionsProp.declareUpdateHandler(
59}
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 71 of file EventSelectorByteStream.cxx.

71 {
72}

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 963 of file EventSelectorByteStream.cxx.

964 {
965 SG::DataProxy* proxy = eventStore()->proxy(ClassID_traits<DataHeader>::ID(),"ByteStreamDataHeader");
966 if (proxy !=0) {
967 iop = proxy->address();
968 return StatusCode::SUCCESS;
969 } else {
970 iop = 0;
971 return StatusCode::FAILURE;
972 }
973}
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 296 of file EventSelectorByteStream.cxx.

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

◆ curEvent()

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

Return the current event number.

Parameters
it[IN/OUT] current event context.

Definition at line 874 of file EventSelectorByteStream.cxx.

874 {
875 // event counter in IEvtSelectorSeek interface
877 return int(m_NumEvents);
878}
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 1018 of file EventSelectorByteStream.cxx.

1019{
1020 return true;
1021}

◆ eventStore()

StoreGateSvc * EventSelectorByteStream::eventStore ( ) const
private

Definition at line 77 of file EventSelectorByteStream.cxx.

77 {
79}
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 740 of file EventSelectorByteStream.cxx.

741{
743 return fillAttributeListImpl (attrList, suffix, copySource, lock);
744}
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 745 of file EventSelectorByteStream.cxx.

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

224 {
225 if (!m_counterTool.empty()) {
226 if (!m_counterTool->preFinalize().isSuccess()) {
227 ATH_MSG_WARNING("Failed to preFinalize() CounterTool");
228 }
229 }
230 for (ToolHandle<IAthenaSelectorTool>& tool : m_helperTools) {
231 if (!tool->preFinalize().isSuccess()) {
232 ATH_MSG_WARNING("Failed to preFinalize() " << tool->name());
233 }
234 }
235 delete m_beginIter; m_beginIter = nullptr;
236 delete m_endIter; m_endIter = nullptr;
237 if (m_eventSource) m_eventSource->release();
238 // Finalize the Service base class.
239 return AthService::finalize();
240}
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 837 of file EventSelectorByteStream.cxx.

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

83 {
84
85 m_autoRetrieveTools = false;
86 m_checkToolDeps = false;
87
88 if (m_isSecondary.value()) {
89 ATH_MSG_DEBUG("Initializing secondary event selector " << name());
90 } else {
91 ATH_MSG_DEBUG("Initializing " << name());
92 }
93
94 ATH_CHECK(::AthService::initialize());
95
96 // Check for input setting
97 if (m_filebased && m_inputCollectionsProp.value().empty()) {
98 ATH_MSG_FATAL("Unable to retrieve valid input list");
99 return StatusCode::FAILURE;
100 }
101 m_skipEventSequence = m_skipEventSequenceProp.value();
102 std::sort(m_skipEventSequence.begin(), m_skipEventSequence.end());
103
104 // Check ByteStreamCnvSvc
105 m_eventSource = serviceLocator()->service(m_eventSourceName.value());
106 if (!m_eventSource) {
107 ATH_MSG_FATAL("Cannot get ByteStreamInputSvc");
108 return StatusCode::FAILURE;
109 }
110
111 // Get CounterTool (if configured)
112 if (!m_counterTool.empty()) {
113 ATH_CHECK(m_counterTool.retrieve());
114 }
115 // Get HelperTools
116 if (!m_helperTools.empty()) {
117 ATH_CHECK(m_helperTools.retrieve());
118 }
119 // Get SharedMemoryTool (if configured)
120 if (!m_eventStreamingTool.empty()) {
121 ATH_CHECK(m_eventStreamingTool.retrieve());
122 }
123
124 // Register this service for 'I/O' events
125 ServiceHandle<IIoComponentMgr> iomgr("IoComponentMgr", name());
126 ATH_CHECK(iomgr.retrieve());
127 ATH_CHECK(iomgr->io_register(this));
128
129 // Register the input files with the iomgr
130 bool allGood = true;
131 for (const std::string& input : m_inputCollectionsProp.value()) {
132 if (!iomgr->io_register(this, IIoComponentMgr::IoMode::READ, input).isSuccess()) {
133 ATH_MSG_FATAL("could not register [" << input << "] for output !");
134 allGood = false;
135 } else {
136 ATH_MSG_VERBOSE("io_register[" << this->name() << "](" << input << ") [ok]");
137 }
138 }
139 if (!allGood) {
140 return(StatusCode::FAILURE);
141 }
142
143 // Make sure MetaDataSvc is initialized before the first file is opened
144 ServiceHandle<IAthMetaDataSvc> metaDataSvc("MetaDataSvc", name());
145 ATH_CHECK(metaDataSvc.retrieve());
146
147 // Must happen before trying to open a file
149 StatusCode risc = this->reinit(lock);
150
151 return risc;
152}
#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 62 of file EventSelectorByteStream.cxx.

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

◆ 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 982 of file EventSelectorByteStream.cxx.

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

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

◆ makeClient()

StatusCode EventSelectorByteStream::makeClient ( int num)
overridevirtual

Make this a client.

Definition at line 895 of file EventSelectorByteStream.cxx.

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

◆ makeServer()

StatusCode EventSelectorByteStream::makeServer ( int num)
overridevirtual

Make this a server.

Definition at line 886 of file EventSelectorByteStream.cxx.

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

◆ 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 242 of file EventSelectorByteStream.cxx.

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

◆ nextHandleFileTransition()

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

Handle file transition at the next iteration.

Definition at line 462 of file EventSelectorByteStream.cxx.

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

◆ nextHandleFileTransitionImpl()

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

Definition at line 467 of file EventSelectorByteStream.cxx.

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

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

◆ nextWithSkipImpl()

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

Definition at line 523 of file EventSelectorByteStream.cxx.

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

◆ openNewRun()

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

Definition at line 249 of file EventSelectorByteStream.cxx.

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

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

◆ recordAttributeList()

StatusCode EventSelectorByteStream::recordAttributeList ( ) const
overrideprotectedvirtual

Record AttributeList in StoreGate.

Definition at line 713 of file EventSelectorByteStream.cxx.

714{
717}
StatusCode recordAttributeListImpl(lock_t &lock) const

◆ recordAttributeListImpl()

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

Definition at line 718 of file EventSelectorByteStream.cxx.

719{
720 std::string listName("EventInfoAtts");
721
722 if (eventStore()->contains<AthenaAttributeList>(listName)) {
723 const AthenaAttributeList* oldAttrList = nullptr;
724 ATH_CHECK(eventStore()->retrieve(oldAttrList, listName));
725 ATH_CHECK(eventStore()->removeDataAndProxy(oldAttrList));
726 }
727
728 // build the new attr list
729 auto attrList = std::make_unique<AthenaAttributeList>();
730
731 // fill the attr list
732 ATH_CHECK(fillAttributeListImpl(attrList.get(), "", false, lock));
733
734 // put result in event store
735 ATH_CHECK(eventStore()->record(std::move(attrList), listName));
736
737 return StatusCode::SUCCESS;
738}
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 154 of file EventSelectorByteStream.cxx.

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

◆ releaseContext()

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

Definition at line 977 of file EventSelectorByteStream.cxx.

977 {
978 return StatusCode::SUCCESS;
979}

◆ 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 652 of file EventSelectorByteStream.cxx.

652 {
653 return StatusCode::SUCCESS;
654}

◆ rewind()

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

Definition at line 646 of file EventSelectorByteStream.cxx.

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

◆ 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 657 of file EventSelectorByteStream.cxx.

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

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

◆ size()

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

Always returns -1.

Parameters
it[IN/OUT] current event context.

Definition at line 881 of file EventSelectorByteStream.cxx.

881 {
882 return -1;
883}

◆ start()

StatusCode EventSelectorByteStream::start ( )
overridevirtual

Definition at line 199 of file EventSelectorByteStream.cxx.

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

◆ stop()

StatusCode EventSelectorByteStream::stop ( )
overridevirtual

Definition at line 211 of file EventSelectorByteStream.cxx.

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

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: