00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef DQAEvent_DQAEvent_H
00016 #define DQAEvent_DQAEvent_H 1
00017
00018
00019 #include "GaudiKernel/DataObject.h"
00020 #include "GaudiKernel/boost_allocator.h"
00021
00022
00023
00024 namespace DQAEvent
00025 {
00026
00027
00028
00038 class DQAEvent: public DataObject
00039 {
00040 public:
00041
00043 DQAEvent() : m_EventTag(0) {}
00044
00046 virtual ~DQAEvent() {}
00047
00050 unsigned int EventTag() const;
00051
00054 void setEventTag(unsigned int value);
00055
00058 bool Bhabha() const;
00059
00062 void setBhabha(bool value);
00063
00066 bool Dimu() const;
00067
00070 void setDimu(bool value);
00071
00074 bool Hadron() const;
00075
00078 void setHadron(bool value);
00079
00082 bool Cosmic() const;
00083
00086 void setCosmic(bool value);
00087
00090 bool PipiRhopi() const;
00091
00094 void setPipiRhopi(bool value);
00095
00098 bool Rhopi() const;
00099
00102 void setRhopi(bool value);
00103
00106 bool Kstark() const;
00107
00110 void setKstark(bool value);
00111
00114 bool Ppbar() const;
00115
00118 void setPpbar(bool value);
00119
00122 bool Lambdalambdabar() const;
00123
00126 void setLambdalambdabar(bool value);
00127
00130 bool Ppbarpipi() const;
00131
00134 void setPpbarpipi(bool value);
00135
00136
00137 #ifndef _WIN32
00139 static void* operator new ( size_t size )
00140 {
00141 return ( sizeof(DQAEvent) == size ?
00142 boost::singleton_pool<DQAEvent, sizeof(DQAEvent)>::malloc() :
00143 ::operator new(size) );
00144 }
00145
00149 static void* operator new ( size_t size, void* pObj )
00150 {
00151 return ::operator new (size,pObj);
00152 }
00153
00155 static void operator delete ( void* p )
00156 {
00157 boost::singleton_pool<DQAEvent, sizeof(DQAEvent)>::is_from(p) ?
00158 boost::singleton_pool<DQAEvent, sizeof(DQAEvent)>::free(p) :
00159 ::operator delete(p);
00160 }
00161
00164 static void operator delete ( void* p, void* pObj )
00165 {
00166 ::operator delete (p, pObj);
00167 }
00168 #endif
00169 protected:
00170
00171 private:
00172
00174 enum EventTagBits{BhabhaBits = 0,
00175 DimuBits = 1,
00176 HadronBits = 2,
00177 CosmicBits = 3,
00178 PipiRhopiBits = 4,
00179 RhopiBits = 5,
00180 KstarkBits = 6,
00181 PpbarBits = 7,
00182 LambdalambdabarBits = 8,
00183 PpbarpipiBits = 9};
00184
00186 enum EventTagMasks{BhabhaMask = 0x1L,
00187 DimuMask = 0x2L,
00188 HadronMask = 0x4L,
00189 CosmicMask = 0x8L,
00190 PipiRhopiMask = 0x10L,
00191 RhopiMask = 0x20L,
00192 KstarkMask = 0x40L,
00193 PpbarMask = 0x80L,
00194 LambdalambdabarMask = 0x100L,
00195 PpbarpipiMask = 0x200L
00196 };
00197
00198
00199 unsigned int m_EventTag;
00200
00201 };
00202
00203 }
00204
00205
00206
00207
00208
00209
00210
00211 inline unsigned int DQAEvent::DQAEvent::EventTag() const
00212 {
00213 return m_EventTag;
00214 }
00215
00216 inline void DQAEvent::DQAEvent::setEventTag(unsigned int value)
00217 {
00218 m_EventTag = value;
00219 }
00220
00221 inline bool DQAEvent::DQAEvent::Bhabha() const
00222 {
00223 return 0 != ((m_EventTag & BhabhaMask) >> BhabhaBits);
00224 }
00225
00226 inline void DQAEvent::DQAEvent::setBhabha(bool value)
00227 {
00228 unsigned int val = (unsigned int)value;
00229 m_EventTag &= ~BhabhaMask;
00230 m_EventTag |= ((((unsigned int)val) << BhabhaBits) & BhabhaMask);
00231 }
00232
00233 inline bool DQAEvent::DQAEvent::Dimu() const
00234 {
00235 return 0 != ((m_EventTag & DimuMask) >> DimuBits);
00236 }
00237
00238 inline void DQAEvent::DQAEvent::setDimu(bool value)
00239 {
00240 unsigned int val = (unsigned int)value;
00241 m_EventTag &= ~DimuMask;
00242 m_EventTag |= ((((unsigned int)val) << DimuBits) & DimuMask);
00243 }
00244
00245 inline bool DQAEvent::DQAEvent::Hadron() const
00246 {
00247 return 0 != ((m_EventTag & HadronMask) >> HadronBits);
00248 }
00249
00250 inline void DQAEvent::DQAEvent::setHadron(bool value)
00251 {
00252 unsigned int val = (unsigned int)value;
00253 m_EventTag &= ~HadronMask;
00254 m_EventTag |= ((((unsigned int)val) << HadronBits) & HadronMask);
00255 }
00256
00257 inline bool DQAEvent::DQAEvent::Cosmic() const
00258 {
00259 return 0 != ((m_EventTag & CosmicMask) >> CosmicBits);
00260 }
00261
00262 inline void DQAEvent::DQAEvent::setCosmic(bool value)
00263 {
00264 unsigned int val = (unsigned int)value;
00265 m_EventTag &= ~CosmicMask;
00266 m_EventTag |= ((((unsigned int)val) << CosmicBits) & CosmicMask);
00267 }
00268
00269 inline bool DQAEvent::DQAEvent::PipiRhopi() const
00270 {
00271 return 0 != ((m_EventTag & PipiRhopiMask) >> PipiRhopiBits);
00272 }
00273
00274 inline void DQAEvent::DQAEvent::setPipiRhopi(bool value)
00275 {
00276 unsigned int val = (unsigned int)value;
00277 m_EventTag &= ~PipiRhopiMask;
00278 m_EventTag |= ((((unsigned int)val) << PipiRhopiBits) & PipiRhopiMask);
00279 }
00280
00281 inline bool DQAEvent::DQAEvent::Rhopi() const
00282 {
00283 return 0 != ((m_EventTag & RhopiMask) >> RhopiBits);
00284 }
00285
00286 inline void DQAEvent::DQAEvent::setRhopi(bool value)
00287 {
00288 unsigned int val = (unsigned int)value;
00289 m_EventTag &= ~RhopiMask;
00290 m_EventTag |= ((((unsigned int)val) << RhopiBits) & RhopiMask);
00291 }
00292
00293 inline bool DQAEvent::DQAEvent::Kstark() const
00294 {
00295 return 0 != ((m_EventTag & KstarkMask) >> KstarkBits);
00296 }
00297
00298 inline void DQAEvent::DQAEvent::setKstark(bool value)
00299 {
00300 unsigned int val = (unsigned int)value;
00301 m_EventTag &= ~KstarkMask;
00302 m_EventTag |= ((((unsigned int)val) << KstarkBits) & KstarkMask);
00303 }
00304
00305 inline bool DQAEvent::DQAEvent::Ppbar() const
00306 {
00307 return 0 != ((m_EventTag & PpbarMask) >> PpbarBits);
00308 }
00309
00310 inline void DQAEvent::DQAEvent::setPpbar(bool value)
00311 {
00312 unsigned int val = (unsigned int)value;
00313 m_EventTag &= ~PpbarMask;
00314 m_EventTag |= ((((unsigned int)val) << PpbarBits) & PpbarMask);
00315 }
00316
00317 inline bool DQAEvent::DQAEvent::Lambdalambdabar() const
00318 {
00319 return 0 != ((m_EventTag & LambdalambdabarMask) >> LambdalambdabarBits);
00320 }
00321
00322 inline void DQAEvent::DQAEvent::setLambdalambdabar(bool value)
00323 {
00324 unsigned int val = (unsigned int)value;
00325 m_EventTag &= ~LambdalambdabarMask;
00326 m_EventTag |= ((((unsigned int)val) << LambdalambdabarBits) & LambdalambdabarMask);
00327 }
00328
00329 inline bool DQAEvent::DQAEvent::Ppbarpipi() const
00330 {
00331 return 0 != ((m_EventTag & PpbarpipiMask) >> PpbarpipiBits);
00332 }
00333
00334 inline void DQAEvent::DQAEvent::setPpbarpipi(bool value)
00335 {
00336 unsigned int val = (unsigned int)value;
00337 m_EventTag &= ~PpbarpipiMask;
00338 m_EventTag |= ((((unsigned int)val) << PpbarpipiBits) & PpbarpipiMask);
00339 }
00340
00341
00342 #endif