00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef TESDemoData_TESDemoPositron_H
00016 #define TESDemoData_TESDemoPositron_H 1
00017
00018
00019 #include "Context/TimeStamp.h"
00020 #include "Event/TemporalDataObject.h"
00021 #include "Event/TESDemoReadout.h"
00022 #include "Event/TESDemoTracer.h"
00023 #include "GaudiKernel/boost_allocator.h"
00024 #include "GaudiKernel/SmartRef.h"
00025 #include <ostream>
00026
00027
00028
00029 namespace DayaBay
00030 {
00031
00032
00033
00043 class TESDemoPositron: public TemporalDataObject, virtual public TESDemoTracer
00044 {
00045 public:
00046
00048 TESDemoPositron(const TimeStamp& timeStamp,
00049 const DayaBay::TESDemoReadout* readout);
00050
00052 TESDemoPositron() : m_timeStamp() {}
00053
00055 virtual ~TESDemoPositron();
00056
00058 virtual std::ostream& fillStream(std::ostream& s) const;
00059
00061 void setReadout(const SmartRef<DayaBay::TESDemoReadout>& value);
00062
00064 void setReadout(const DayaBay::TESDemoReadout* value);
00065
00068 const TimeStamp& timeStamp() const;
00069
00072 void setTimeStamp(const TimeStamp& value);
00073
00076 const DayaBay::TESDemoReadout* readout() const;
00077
00078
00079 #ifndef GOD_NOALLOC
00081 static void* operator new ( size_t size )
00082 {
00083 return ( sizeof(TESDemoPositron) == size ?
00084 boost::singleton_pool<TESDemoPositron, sizeof(TESDemoPositron)>::malloc() :
00085 ::operator new(size) );
00086 }
00087
00091 static void* operator new ( size_t size, void* pObj )
00092 {
00093 return ::operator new (size,pObj);
00094 }
00095
00097 static void operator delete ( void* p )
00098 {
00099 boost::singleton_pool<TESDemoPositron, sizeof(TESDemoPositron)>::is_from(p) ?
00100 boost::singleton_pool<TESDemoPositron, sizeof(TESDemoPositron)>::free(p) :
00101 ::operator delete(p);
00102 }
00103
00106 static void operator delete ( void* p, void* pObj )
00107 {
00108 ::operator delete (p, pObj);
00109 }
00110 #endif
00111 protected:
00112
00113 private:
00114
00115 TimeStamp m_timeStamp;
00116 SmartRef<DayaBay::TESDemoReadout> m_readout;
00117
00118 };
00119
00120 inline std::ostream& operator<< (std::ostream& str, const TESDemoPositron& obj)
00121 {
00122 return obj.fillStream(str);
00123 }
00124
00125 }
00126
00127
00128
00129
00130
00131
00132
00133 inline DayaBay::TESDemoPositron::TESDemoPositron(const TimeStamp& timeStamp,
00134 const DayaBay::TESDemoReadout* readout)
00135 {
00136
00137 setTimeStamp(timeStamp);
00138 setReadout(readout);
00139 setEarliest(timeStamp);
00140 setLatest(timeStamp);
00141
00142 }
00143
00144 inline DayaBay::TESDemoPositron::~TESDemoPositron()
00145 {
00146
00147
00148 setReadout(0);
00149
00150 }
00151
00152 inline std::ostream& DayaBay::TESDemoPositron::fillStream(std::ostream& s) const
00153 {
00154 TemporalDataObject::fillStream(s);
00155 TESDemoTracer::fillStream(s);
00156 s << "{ " << "timeStamp : " << m_timeStamp << std::endl << " }";
00157 return s;
00158 }
00159
00160
00161 inline const TimeStamp& DayaBay::TESDemoPositron::timeStamp() const
00162 {
00163 return m_timeStamp;
00164 }
00165
00166 inline void DayaBay::TESDemoPositron::setTimeStamp(const TimeStamp& value)
00167 {
00168 m_timeStamp = value;
00169 }
00170
00171 inline const DayaBay::TESDemoReadout* DayaBay::TESDemoPositron::readout() const
00172 {
00173 return m_readout;
00174 }
00175
00176
00177 #endif