00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef CalibReadoutEvent_CalibReadoutRpcCrate_H
00016 #define CalibReadoutEvent_CalibReadoutRpcCrate_H 1
00017
00018
00019 #include "Event/CalibReadout.h"
00020 #include "Conventions/Electronics.h"
00021 #include "Event/CalibReadoutRpcChannel.h"
00022 #include "GaudiKernel/boost_allocator.h"
00023 #include <map>
00024 #include <ostream>
00025
00026
00027
00028 namespace DayaBay
00029 {
00030
00031
00032
00042 class CalibReadoutRpcCrate: public CalibReadout
00043 {
00044 public:
00045
00047 typedef std::map<DayaBay::FecChannelId,DayaBay::CalibReadoutRpcChannel> RpcChannelReadouts;
00048
00050 CalibReadoutRpcCrate(const DayaBay::Detector& detector,
00051 unsigned int triggerNumber,
00052 const TimeStamp& triggerTime,
00053 const DayaBay::Trigger::TriggerType_t& triggerType) : CalibReadout(detector,
00054 triggerNumber,
00055 triggerTime,
00056 triggerType) {}
00057
00059 CalibReadoutRpcCrate(const DayaBay::CalibReadoutRpcCrate& rhs);
00060
00062 CalibReadoutRpcCrate() : m_channelReadout() {}
00063
00065 virtual ~CalibReadoutRpcCrate() {}
00066
00068 CalibReadoutRpcCrate& operator=(const DayaBay::CalibReadoutRpcCrate& rhs);
00069
00071 void addChannel(const DayaBay::FecChannelId& channelId);
00072
00074 CalibReadoutRpcChannel& channel(const DayaBay::FecChannelId& channelId);
00075
00077 std::ostream& fillStream(std::ostream& s) const;
00078
00081 const RpcChannelReadouts& channelReadout() const;
00082
00085 void setChannelReadout(const RpcChannelReadouts& value);
00086
00087
00088 #ifndef GOD_NOALLOC
00090 static void* operator new ( size_t size )
00091 {
00092 return ( sizeof(CalibReadoutRpcCrate) == size ?
00093 boost::singleton_pool<CalibReadoutRpcCrate, sizeof(CalibReadoutRpcCrate)>::malloc() :
00094 ::operator new(size) );
00095 }
00096
00100 static void* operator new ( size_t size, void* pObj )
00101 {
00102 return ::operator new (size,pObj);
00103 }
00104
00106 static void operator delete ( void* p )
00107 {
00108 boost::singleton_pool<CalibReadoutRpcCrate, sizeof(CalibReadoutRpcCrate)>::is_from(p) ?
00109 boost::singleton_pool<CalibReadoutRpcCrate, sizeof(CalibReadoutRpcCrate)>::free(p) :
00110 ::operator delete(p);
00111 }
00112
00115 static void operator delete ( void* p, void* pObj )
00116 {
00117 ::operator delete (p, pObj);
00118 }
00119 #endif
00120 protected:
00121
00122 private:
00123
00124 RpcChannelReadouts m_channelReadout;
00125
00126 };
00127
00128 inline std::ostream& operator<< (std::ostream& str, const CalibReadoutRpcCrate& obj)
00129 {
00130 return obj.fillStream(str);
00131 }
00132
00133 }
00134
00135
00136
00137
00138
00139
00140
00141 inline const DayaBay::CalibReadoutRpcCrate::RpcChannelReadouts& DayaBay::CalibReadoutRpcCrate::channelReadout() const
00142 {
00143 return m_channelReadout;
00144 }
00145
00146 inline void DayaBay::CalibReadoutRpcCrate::setChannelReadout(const RpcChannelReadouts& value)
00147 {
00148 m_channelReadout = value;
00149 }
00150
00151 inline void DayaBay::CalibReadoutRpcCrate::addChannel(const DayaBay::FecChannelId& channelId)
00152 {
00153
00154 m_channelReadout[channelId] =
00155 DayaBay::CalibReadoutRpcChannel(channelId, this);
00156
00157 }
00158
00159 inline DayaBay::CalibReadoutRpcChannel& DayaBay::CalibReadoutRpcCrate::channel(const DayaBay::FecChannelId& channelId)
00160 {
00161 return m_channelReadout[channelId];
00162 }
00163
00164
00165 #endif