00001 #ifndef ConditionsHandlerBase_h 00002 #define ConditionsHandlerBase_h 00003 00004 #include "lccd.h" 00005 00006 #include "IConditionsHandler.hh" 00007 00008 #include <vector> 00009 00010 00011 //using namespace lcio ; 00012 00013 namespace lccd { 00014 00023 class ConditionsHandlerBase : public IConditionsHandler { 00024 00025 public: 00026 00029 ConditionsHandlerBase(const std::string& name) : 00030 _name( name), 00031 _validSince( LCCDPlusInf ) , // initially we don't have a valid time range 00032 _validTill( LCCDMinusInf ) { 00033 } 00034 00035 virtual ~ConditionsHandlerBase() {} 00036 00037 00042 virtual void updateEvent( lcio::LCEvent* evt ) ; 00043 00044 00049 virtual void update( LCCDTimeStamp timestamp ) =0 ; 00050 00051 00054 virtual lcio::LCCollection* currentCollection() { return _col ; } 00055 00056 00060 virtual void registerChangeListener( IConditionsChangeListener* cl ) ; 00061 00064 virtual void removeChangeListener( IConditionsChangeListener* cl) ; 00065 00071 virtual const std::string name() { return _name ; } 00072 00075 virtual LCCDTimeStamp validSince() { return _validSince ; } 00076 00079 virtual LCCDTimeStamp validTill() { return _validTill ; } 00080 00081 00082 protected : 00083 00084 ConditionsHandlerBase() {} 00085 00088 virtual void notifyListeners() ; 00089 00090 00091 // ---- data members ------ 00092 00094 lcio::LCCollection* _col ; 00095 00097 std::string _name ; 00098 00100 LCCDTimeStamp _validSince ; 00101 00103 LCCDTimeStamp _validTill ; 00104 00106 std::vector< IConditionsChangeListener* > _changeListeners ; 00107 00108 00109 }; 00110 } ; //end namespace 00111 00112 #endif // ConditionsHandlerBase_h