![]() |
|
|
Generated: 8 Jan 2009 |
00001 //==================================================================== 00002 // EventSelector.h 00003 //-------------------------------------------------------------------- 00004 // 00005 // Package : EventSelector (LHCb Event Selector Package) 00006 // 00007 // Author : M.Frank 00008 // Created : 4/10/00 00009 // 00010 //==================================================================== 00011 // Modified : 11/11/06 00012 // 00013 // Author : Andres Felipe OSORIO OLIVEROS 00014 // : Marco CLEMENCIC 00015 // 00016 //==================================================================== 00017 00018 #ifndef GAUDISVC_EVENTSELECTOR_EVENTSELECTOR_H 00019 #define GAUDISVC_EVENTSELECTOR_EVENTSELECTOR_H 1 00020 00021 // Include files 00022 #include "GaudiKernel/Service.h" 00023 #include "GaudiKernel/IEvtSelector.h" 00024 00025 // STL include files 00026 #include <vector> 00027 00028 // Forward declarations 00029 class IIncidentSvc; 00030 class IAddressCreator; 00031 class IToolSvc; 00032 class EventSelectorDataStream; 00033 class EvtSelectorContext; 00034 class IDataStreamTool; 00035 00050 class EventSelector : public Service, virtual public IEvtSelector { 00051 public: 00052 typedef std::vector<EventSelectorDataStream*> Streams; 00053 typedef std::vector<std::string> StreamSpecs; 00054 typedef std::vector<StringProperty> Properties; 00055 00056 long int m_streamID; 00057 00058 protected: 00060 IIncidentSvc* m_incidentSvc; 00061 00062 IToolSvc * m_toolSvc; 00063 00064 IDataStreamTool *m_streamtool; 00065 00067 bool m_reconfigure; 00069 StreamSpecs m_streamSpecs; 00071 StreamSpecs m_streamSpecsLast; 00073 Streams m_streams; 00075 int m_streamCount; 00077 int m_firstEvent; 00079 int m_evtMax; 00081 int m_evtPrintFrequency; 00082 00083 std::string m_streamManager; 00084 00085 00086 00088 virtual void printEvtInfo(const EvtSelectorContext* iter) const; 00089 00090 public: 00092 virtual StatusCode initialize(); 00093 00095 virtual StatusCode finalize(); 00096 00098 virtual StatusCode reinitialize(); 00099 00100 // IInterface implementation: query interfaces 00101 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface); 00102 00104 00108 virtual StatusCode createContext(Context*& refpCtxt) const; 00109 00111 00115 virtual StatusCode next(Context& refCtxt) const; 00116 00118 00122 virtual StatusCode next(Context& refCtxt,int jump) const; 00123 00125 00130 virtual StatusCode previous(Context& refCtxt) const; 00131 00133 00138 virtual StatusCode previous(Context& refCtxt,int jump) const; 00139 00141 00145 virtual StatusCode rewind(Context& refCtxt) const; 00146 00148 00153 virtual StatusCode createAddress(const Context& refCtxt, IOpaqueAddress*& refpAddr) const; 00154 00156 00160 virtual StatusCode releaseContext(Context*& refCtxt) const; 00161 00170 virtual StatusCode resetCriteria(const std::string& cr,Context& c)const; 00171 00177 virtual StatusCode last(Context& c) const; 00178 00180 StatusCode firstOfNextStream( bool shutDown, EvtSelectorContext& it) const; 00182 StatusCode lastOfPreviousStream ( bool shutDown, EvtSelectorContext& it) const; 00183 00185 EventSelector( const std::string& name, ISvcLocator* svcloc ); 00186 00188 virtual ~EventSelector(); 00189 }; 00190 00191 #endif // GAUDISVC_EVENTSELECTOR_EVENTSELECTOR_H