00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef ReadoutEvent_Readout_H
00016 #define ReadoutEvent_Readout_H 1
00017
00018
00019 #include "Context/TimeStamp.h"
00020 #include "Conventions/Detectors.h"
00021 #include "Conventions/Trigger.h"
00022 #include "RawData/RawData.h"
00023 #include "EventReadoutFormat/EventReadout.h"
00024 #include "GaudiKernel/boost_allocator.h"
00025 #include <ostream>
00026
00027
00028
00029 namespace DayaBay
00030 {
00031
00032
00033 class ReadoutHeader;
00034
00035
00045 class Readout
00046 {
00047 public:
00048
00050 Readout(const DayaBay::Detector& detector,
00051 unsigned int triggerNumber,
00052 const TimeStamp& triggerTime,
00053 const DayaBay::Trigger::TriggerType_t& triggerType) : m_detector(detector),
00054 m_triggerNumber(triggerNumber),
00055 m_triggerTime(triggerTime),
00056 m_triggerType(triggerType),
00057 m_rawEvent(0),
00058 m_header(0) {}
00059
00061 Readout() : m_detector(0),
00062 m_triggerNumber(0),
00063 m_triggerTime(0),
00064 m_triggerType(),
00065 m_rawEvent(0),
00066 m_eventReadout(0),
00067 m_header(0) {}
00068
00070 Readout(const Readout & rh);
00071
00073 Readout & operator=(const Readout & rh);
00074
00076 virtual ~Readout();
00077
00079 virtual std::ostream& fillStream(std::ostream& s) const;
00080
00083 const DayaBay::Detector& detector() const;
00084
00087 void setDetector(const DayaBay::Detector& value);
00088
00091 unsigned int triggerNumber() const;
00092
00095 void setTriggerNumber(unsigned int value);
00096
00099 const TimeStamp& triggerTime() const;
00100
00103 void setTriggerTime(const TimeStamp& value);
00104
00107 const DayaBay::Trigger::TriggerType_t& triggerType() const;
00108
00111 void setTriggerType(const DayaBay::Trigger::TriggerType_t& value);
00112
00115 const DayaBay::RawEvent* rawEvent() const;
00116
00119 DayaBay::RawEvent* rawEvent();
00120
00123 void setRawEvent(DayaBay::RawEvent* value);
00124
00127 const DybDaq::EventReadout* eventReadout() const;
00128
00131 void setEventReadout(DybDaq::EventReadout* value);
00132
00135 const DayaBay::ReadoutHeader* header() const;
00136
00139 void setHeader(DayaBay::ReadoutHeader* value);
00140
00141
00142 #ifndef GOD_NOALLOC
00144 static void* operator new ( size_t size )
00145 {
00146 return ( sizeof(Readout) == size ?
00147 boost::singleton_pool<Readout, sizeof(Readout)>::malloc() :
00148 ::operator new(size) );
00149 }
00150
00154 static void* operator new ( size_t size, void* pObj )
00155 {
00156 return ::operator new (size,pObj);
00157 }
00158
00160 static void operator delete ( void* p )
00161 {
00162 boost::singleton_pool<Readout, sizeof(Readout)>::is_from(p) ?
00163 boost::singleton_pool<Readout, sizeof(Readout)>::free(p) :
00164 ::operator delete(p);
00165 }
00166
00169 static void operator delete ( void* p, void* pObj )
00170 {
00171 ::operator delete (p, pObj);
00172 }
00173 #endif
00174 protected:
00175
00176 private:
00177
00178 DayaBay::Detector m_detector;
00179 unsigned int m_triggerNumber;
00180 TimeStamp m_triggerTime;
00181 DayaBay::Trigger::TriggerType_t m_triggerType;
00182 DayaBay::RawEvent* m_rawEvent;
00183 DybDaq::EventReadout* m_eventReadout;
00184 DayaBay::ReadoutHeader* m_header;
00185
00186 };
00187
00188 inline std::ostream& operator<< (std::ostream& str, const Readout& obj)
00189 {
00190 return obj.fillStream(str);
00191 }
00192
00193 }
00194
00195
00196
00197
00198
00199
00200 #include "ReadoutHeader.h"
00201
00202
00203 inline DayaBay::Readout::Readout(const DayaBay::Readout & rh) :
00204 m_detector( rh.m_detector ),
00205 m_triggerNumber( rh.m_triggerNumber ),
00206 m_triggerTime( rh.m_triggerTime ),
00207 m_triggerType( rh.m_triggerType ),
00208 m_rawEvent( rh.m_rawEvent ),
00209 m_eventReadout( rh.m_eventReadout ),
00210 m_header( rh.m_header )
00211 {}
00212
00213 inline DayaBay::Readout & DayaBay::Readout::operator=(const DayaBay::Readout & rh) {
00214 if ( this != &rh ) {
00215 m_detector = rh.m_detector;
00216 m_triggerNumber = rh.m_triggerNumber;
00217 m_triggerTime = rh.m_triggerTime;
00218 m_triggerType = rh.m_triggerType;
00219 m_rawEvent = rh.m_rawEvent;
00220 m_eventReadout = rh.m_eventReadout;
00221 m_header = rh.m_header;
00222 }
00223 return *this;
00224 }
00225
00226 inline DayaBay::Readout::~Readout()
00227 {
00228
00229 delete m_rawEvent;
00230 m_rawEvent = 0;
00231
00232 }
00233
00234 inline std::ostream& DayaBay::Readout::fillStream(std::ostream& s) const
00235 {
00236 s << "{ " << "detector : " << m_detector << std::endl
00237 << "triggerNumber : " << m_triggerNumber << std::endl
00238 << "triggerTime : " << m_triggerTime << std::endl
00239 << "triggerType : " << m_triggerType << std::endl
00240 << "rawEvent : " << m_rawEvent << std::endl
00241 << "eventReadout : " << m_eventReadout << std::endl
00242 << "header : " << m_header << std::endl << " }";
00243 return s;
00244 }
00245
00246
00247 inline const DayaBay::Detector& DayaBay::Readout::detector() const
00248 {
00249 return m_detector;
00250 }
00251
00252 inline void DayaBay::Readout::setDetector(const DayaBay::Detector& value)
00253 {
00254 m_detector = value;
00255 }
00256
00257 inline unsigned int DayaBay::Readout::triggerNumber() const
00258 {
00259 return m_triggerNumber;
00260 }
00261
00262 inline void DayaBay::Readout::setTriggerNumber(unsigned int value)
00263 {
00264 m_triggerNumber = value;
00265 }
00266
00267 inline const TimeStamp& DayaBay::Readout::triggerTime() const
00268 {
00269 return m_triggerTime;
00270 }
00271
00272 inline void DayaBay::Readout::setTriggerTime(const TimeStamp& value)
00273 {
00274 m_triggerTime = value;
00275 }
00276
00277 inline const DayaBay::Trigger::TriggerType_t& DayaBay::Readout::triggerType() const
00278 {
00279 return m_triggerType;
00280 }
00281
00282 inline void DayaBay::Readout::setTriggerType(const DayaBay::Trigger::TriggerType_t& value)
00283 {
00284 m_triggerType = value;
00285 }
00286
00287 inline const DayaBay::RawEvent* DayaBay::Readout::rawEvent() const
00288 {
00289 return m_rawEvent;
00290 }
00291
00292 inline DayaBay::RawEvent* DayaBay::Readout::rawEvent()
00293 {
00294 return m_rawEvent;
00295 }
00296
00297 inline void DayaBay::Readout::setRawEvent(DayaBay::RawEvent* value)
00298 {
00299 m_rawEvent = value;
00300 }
00301
00302 inline const DybDaq::EventReadout* DayaBay::Readout::eventReadout() const
00303 {
00304 return m_eventReadout;
00305 }
00306
00307 inline void DayaBay::Readout::setEventReadout(DybDaq::EventReadout* value)
00308 {
00309 m_eventReadout = value;
00310 }
00311
00312 inline const DayaBay::ReadoutHeader* DayaBay::Readout::header() const
00313 {
00314 return m_header;
00315 }
00316
00317 inline void DayaBay::Readout::setHeader(DayaBay::ReadoutHeader* value)
00318 {
00319 m_header = value;
00320 }
00321
00322
00323 #endif