00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef RecEvent_RecTrigger_H
00016 #define RecEvent_RecTrigger_H 1
00017
00018
00019 #include "Context/TimeStamp.h"
00020 #include "Conventions/Detectors.h"
00021 #include "Conventions/Electronics.h"
00022 #include "Conventions/Trigger.h"
00023 #include "CLHEP/Vector/LorentzVector.h"
00024 #include "CLHEP/Matrix/Matrix.h"
00025 #include "GaudiKernel/boost_allocator.h"
00026 #include <ostream>
00027
00028
00029
00030 namespace DayaBay
00031 {
00032
00033
00034 class RecHeader;
00035
00036
00046 class RecTrigger
00047 {
00048 public:
00049
00051 RecTrigger() : m_detector(0),
00052 m_triggerNumber(0),
00053 m_triggerTime(0),
00054 m_triggerType(),
00055 m_energy(0),
00056 m_position(),
00057 m_direction(),
00058 m_energyStatus(0),
00059 m_positionStatus(0),
00060 m_directionStatus(0),
00061 m_energyQuality(0),
00062 m_positionQuality(0),
00063 m_directionQuality(0),
00064 m_errorMatrix(),
00065 m_header(0) {}
00066
00068 RecTrigger(const RecTrigger & rh);
00069
00071 RecTrigger & operator=(const RecTrigger & rh);
00072
00074 virtual ~RecTrigger() {}
00075
00077 virtual std::ostream& fillStream(std::ostream& s) const;
00078
00081 const DayaBay::Detector& detector() const;
00082
00085 void setDetector(const DayaBay::Detector& value);
00086
00089 unsigned int triggerNumber() const;
00090
00093 void setTriggerNumber(unsigned int value);
00094
00097 const TimeStamp& triggerTime() const;
00098
00101 void setTriggerTime(const TimeStamp& value);
00102
00105 const DayaBay::Trigger::TriggerType_t& triggerType() const;
00106
00109 void setTriggerType(const DayaBay::Trigger::TriggerType_t& value);
00110
00113 double energy() const;
00114
00117 void setEnergy(double value);
00118
00121 const CLHEP::HepLorentzVector& position() const;
00122
00125 void setPosition(const CLHEP::HepLorentzVector& value);
00126
00129 const CLHEP::HepLorentzVector& direction() const;
00130
00133 void setDirection(const CLHEP::HepLorentzVector& value);
00134
00137 int energyStatus() const;
00138
00141 void setEnergyStatus(int value);
00142
00145 int positionStatus() const;
00146
00149 void setPositionStatus(int value);
00150
00153 int directionStatus() const;
00154
00157 void setDirectionStatus(int value);
00158
00161 double energyQuality() const;
00162
00165 void setEnergyQuality(double value);
00166
00169 double positionQuality() const;
00170
00173 void setPositionQuality(double value);
00174
00177 double directionQuality() const;
00178
00181 void setDirectionQuality(double value);
00182
00185 const CLHEP::HepMatrix& errorMatrix() const;
00186
00189 void setErrorMatrix(const CLHEP::HepMatrix& value);
00190
00193 const DayaBay::RecHeader* header() const;
00194
00197 void setHeader(DayaBay::RecHeader* value);
00198
00199
00200 #ifndef GOD_NOALLOC
00202 static void* operator new ( size_t size )
00203 {
00204 return ( sizeof(RecTrigger) == size ?
00205 boost::singleton_pool<RecTrigger, sizeof(RecTrigger)>::malloc() :
00206 ::operator new(size) );
00207 }
00208
00212 static void* operator new ( size_t size, void* pObj )
00213 {
00214 return ::operator new (size,pObj);
00215 }
00216
00218 static void operator delete ( void* p )
00219 {
00220 boost::singleton_pool<RecTrigger, sizeof(RecTrigger)>::is_from(p) ?
00221 boost::singleton_pool<RecTrigger, sizeof(RecTrigger)>::free(p) :
00222 ::operator delete(p);
00223 }
00224
00227 static void operator delete ( void* p, void* pObj )
00228 {
00229 ::operator delete (p, pObj);
00230 }
00231 #endif
00232 protected:
00233
00234 private:
00235
00236 DayaBay::Detector m_detector;
00237 unsigned int m_triggerNumber;
00238 TimeStamp m_triggerTime;
00239 DayaBay::Trigger::TriggerType_t m_triggerType;
00240 double m_energy;
00241 CLHEP::HepLorentzVector m_position;
00242 CLHEP::HepLorentzVector m_direction;
00243 int m_energyStatus;
00244 int m_positionStatus;
00245 int m_directionStatus;
00246 double m_energyQuality;
00247 double m_positionQuality;
00248 double m_directionQuality;
00249 CLHEP::HepMatrix m_errorMatrix;
00250 DayaBay::RecHeader* m_header;
00251
00252 };
00253
00254 inline std::ostream& operator<< (std::ostream& str, const RecTrigger& obj)
00255 {
00256 return obj.fillStream(str);
00257 }
00258
00259 }
00260
00261
00262
00263
00264
00265
00266 #include "RecHeader.h"
00267
00268
00269 inline DayaBay::RecTrigger::RecTrigger(const DayaBay::RecTrigger & rh) :
00270 m_detector( rh.m_detector ),
00271 m_triggerNumber( rh.m_triggerNumber ),
00272 m_triggerTime( rh.m_triggerTime ),
00273 m_triggerType( rh.m_triggerType ),
00274 m_energy( rh.m_energy ),
00275 m_position( rh.m_position ),
00276 m_direction( rh.m_direction ),
00277 m_energyStatus( rh.m_energyStatus ),
00278 m_positionStatus( rh.m_positionStatus ),
00279 m_directionStatus( rh.m_directionStatus ),
00280 m_energyQuality( rh.m_energyQuality ),
00281 m_positionQuality( rh.m_positionQuality ),
00282 m_directionQuality( rh.m_directionQuality ),
00283 m_errorMatrix( rh.m_errorMatrix ),
00284 m_header( rh.m_header )
00285 {}
00286
00287 inline DayaBay::RecTrigger & DayaBay::RecTrigger::operator=(const DayaBay::RecTrigger & rh) {
00288 if ( this != &rh ) {
00289 m_detector = rh.m_detector;
00290 m_triggerNumber = rh.m_triggerNumber;
00291 m_triggerTime = rh.m_triggerTime;
00292 m_triggerType = rh.m_triggerType;
00293 m_energy = rh.m_energy;
00294 m_position = rh.m_position;
00295 m_direction = rh.m_direction;
00296 m_energyStatus = rh.m_energyStatus;
00297 m_positionStatus = rh.m_positionStatus;
00298 m_directionStatus = rh.m_directionStatus;
00299 m_energyQuality = rh.m_energyQuality;
00300 m_positionQuality = rh.m_positionQuality;
00301 m_directionQuality = rh.m_directionQuality;
00302 m_errorMatrix = rh.m_errorMatrix;
00303 m_header = rh.m_header;
00304 }
00305 return *this;
00306 }
00307
00308 inline std::ostream& DayaBay::RecTrigger::fillStream(std::ostream& s) const
00309 {
00310 s << "{ " << "detector : " << m_detector << std::endl
00311 << "triggerNumber : " << m_triggerNumber << std::endl
00312 << "triggerTime : " << m_triggerTime << std::endl
00313 << "triggerType : " << m_triggerType << std::endl
00314 << "energy : " << (float)m_energy << std::endl
00315 << "position : " << m_position << std::endl
00316 << "direction : " << m_direction << std::endl
00317 << "energyStatus : " << m_energyStatus << std::endl
00318 << "positionStatus : " << m_positionStatus << std::endl
00319 << "directionStatus : " << m_directionStatus << std::endl
00320 << "energyQuality : " << (float)m_energyQuality << std::endl
00321 << "positionQuality : " << (float)m_positionQuality << std::endl
00322 << "directionQuality : " << (float)m_directionQuality << std::endl
00323 << "errorMatrix : " << m_errorMatrix << std::endl
00324 << "header : " << m_header << std::endl << " }";
00325 return s;
00326 }
00327
00328
00329 inline const DayaBay::Detector& DayaBay::RecTrigger::detector() const
00330 {
00331 return m_detector;
00332 }
00333
00334 inline void DayaBay::RecTrigger::setDetector(const DayaBay::Detector& value)
00335 {
00336 m_detector = value;
00337 }
00338
00339 inline unsigned int DayaBay::RecTrigger::triggerNumber() const
00340 {
00341 return m_triggerNumber;
00342 }
00343
00344 inline void DayaBay::RecTrigger::setTriggerNumber(unsigned int value)
00345 {
00346 m_triggerNumber = value;
00347 }
00348
00349 inline const TimeStamp& DayaBay::RecTrigger::triggerTime() const
00350 {
00351 return m_triggerTime;
00352 }
00353
00354 inline void DayaBay::RecTrigger::setTriggerTime(const TimeStamp& value)
00355 {
00356 m_triggerTime = value;
00357 }
00358
00359 inline const DayaBay::Trigger::TriggerType_t& DayaBay::RecTrigger::triggerType() const
00360 {
00361 return m_triggerType;
00362 }
00363
00364 inline void DayaBay::RecTrigger::setTriggerType(const DayaBay::Trigger::TriggerType_t& value)
00365 {
00366 m_triggerType = value;
00367 }
00368
00369 inline double DayaBay::RecTrigger::energy() const
00370 {
00371 return m_energy;
00372 }
00373
00374 inline void DayaBay::RecTrigger::setEnergy(double value)
00375 {
00376 m_energy = value;
00377 }
00378
00379 inline const CLHEP::HepLorentzVector& DayaBay::RecTrigger::position() const
00380 {
00381 return m_position;
00382 }
00383
00384 inline void DayaBay::RecTrigger::setPosition(const CLHEP::HepLorentzVector& value)
00385 {
00386 m_position = value;
00387 }
00388
00389 inline const CLHEP::HepLorentzVector& DayaBay::RecTrigger::direction() const
00390 {
00391 return m_direction;
00392 }
00393
00394 inline void DayaBay::RecTrigger::setDirection(const CLHEP::HepLorentzVector& value)
00395 {
00396 m_direction = value;
00397 }
00398
00399 inline int DayaBay::RecTrigger::energyStatus() const
00400 {
00401 return m_energyStatus;
00402 }
00403
00404 inline void DayaBay::RecTrigger::setEnergyStatus(int value)
00405 {
00406 m_energyStatus = value;
00407 }
00408
00409 inline int DayaBay::RecTrigger::positionStatus() const
00410 {
00411 return m_positionStatus;
00412 }
00413
00414 inline void DayaBay::RecTrigger::setPositionStatus(int value)
00415 {
00416 m_positionStatus = value;
00417 }
00418
00419 inline int DayaBay::RecTrigger::directionStatus() const
00420 {
00421 return m_directionStatus;
00422 }
00423
00424 inline void DayaBay::RecTrigger::setDirectionStatus(int value)
00425 {
00426 m_directionStatus = value;
00427 }
00428
00429 inline double DayaBay::RecTrigger::energyQuality() const
00430 {
00431 return m_energyQuality;
00432 }
00433
00434 inline void DayaBay::RecTrigger::setEnergyQuality(double value)
00435 {
00436 m_energyQuality = value;
00437 }
00438
00439 inline double DayaBay::RecTrigger::positionQuality() const
00440 {
00441 return m_positionQuality;
00442 }
00443
00444 inline void DayaBay::RecTrigger::setPositionQuality(double value)
00445 {
00446 m_positionQuality = value;
00447 }
00448
00449 inline double DayaBay::RecTrigger::directionQuality() const
00450 {
00451 return m_directionQuality;
00452 }
00453
00454 inline void DayaBay::RecTrigger::setDirectionQuality(double value)
00455 {
00456 m_directionQuality = value;
00457 }
00458
00459 inline const CLHEP::HepMatrix& DayaBay::RecTrigger::errorMatrix() const
00460 {
00461 return m_errorMatrix;
00462 }
00463
00464 inline void DayaBay::RecTrigger::setErrorMatrix(const CLHEP::HepMatrix& value)
00465 {
00466 m_errorMatrix = value;
00467 }
00468
00469 inline const DayaBay::RecHeader* DayaBay::RecTrigger::header() const
00470 {
00471 return m_header;
00472 }
00473
00474 inline void DayaBay::RecTrigger::setHeader(DayaBay::RecHeader* value)
00475 {
00476 m_header = value;
00477 }
00478
00479
00480 #endif