MpdTpc2dCluster.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //---------------------------------------------------//
  2. //
  3. // Class that will hold 2D cluster information
  4. //
  5. // original author:
  6. // Jonathan Paley 08/18/04 jpaley@indiana.edu
  7. //
  8. // edited:
  9. // Artem Basalaev 12/25/12
  10. //----------------------------------------------------//
  11. #ifndef MPDTPC2DCLUSTER_H
  12. #define MPDTPC2DCLUSTER_H
  13. #include "TObject.h"
  14. #include "TRef.h"
  15. #include "TRefArray.h"
  16. #include <iosfwd>
  17. #include <vector>
  18. class MpdTpc2dCluster : public TObject
  19. {
  20. public:
  21. enum Masks {kOverflowM = 5, kVirtualM = 1, kEdgeM = 1};
  22. enum Shifts {kOverflowS = 1, kVirtualS = kOverflowS+kOverflowM, kEdgeS = kVirtualS+1};
  23. public:
  24. MpdTpc2dCluster() {;}
  25. MpdTpc2dCluster(Int_t row, Int_t sec);
  26. MpdTpc2dCluster(const MpdTpc2dCluster& cl);
  27. ~MpdTpc2dCluster();
  28. bool Insert(Int_t row, Int_t col, Int_t bkt, Float_t adc) ;
  29. Bool_t Insert(Int_t sec, Int_t row, Int_t col, Int_t bkt, Float_t adc);
  30. public:
  31. UInt_t Flag () const { return fFlag; }
  32. Int_t Overflows () const { return (fFlag >> kOverflowS) & kOverflowM; }
  33. Int_t Virtual () const { return (fFlag >> kVirtualS) & kVirtualM; }
  34. Int_t Edge () const { return (fFlag >> kEdgeS) & kEdgeM; }
  35. Int_t ID () const {return fId;}
  36. Int_t NDigits () const {return fAdcList.size();}
  37. Int_t Row () const {return Row(0);}
  38. Int_t MinCol () const {return fMinCol;}
  39. Int_t MaxCol () const {return fMaxCol;}
  40. Int_t MinBkt () const {return fMinBkt;}
  41. Int_t MaxBkt () const {return fMaxBkt;}
  42. Int_t NTracks () const;
  43. // Int_t ADCSum () const {return fADCSum;}
  44. // Float_t AvgCol () const {return fAvgCol;}
  45. // Float_t SigCol () const {return fSigCol;}
  46. // Float_t AvgBkt () const {return fAvgBkt;}
  47. // Float_t SigBkt () const {return fSigBkt;}
  48. Float_t Adc(Int_t i) const;
  49. Int_t Row(Int_t i) const;
  50. Int_t Col(Int_t i) const;
  51. Int_t Bkt(Int_t i) const;
  52. Int_t Sec(Int_t i) const;
  53. void SetFlag (UInt_t i) { fFlag = i; }
  54. void SetOverflows(Int_t i) { fFlag |= (i << kOverflowS); }
  55. void SetVirtual (Int_t i = 1) { fFlag |= (i << kVirtualS); }
  56. void SetEdge (Int_t i = 1) { fFlag |= (i << kEdgeS); }
  57. void SetID (Int_t i) {fId = i;}
  58. void SetMinCol (Int_t i) {fMinCol = i;}
  59. void SetMaxCol (Int_t i) {fMaxCol = i;}
  60. void SetMinBkt (Int_t i) {fMinBkt = i;}
  61. void SetMaxBkt (Int_t i) {fMaxBkt = i;}
  62. // void SetAvgCol (Float_t val) {fAvgCol = val;}
  63. // void SetSigCol (Float_t val) {fSigCol = val;}
  64. // void SetAvgBkt (Float_t val) {fAvgBkt = val;}
  65. // void SetSigBkt (Float_t val) {fSigBkt = val;}
  66. void SetCorrel (Float_t val) { fCorrel = val; }
  67. void SetX (Float_t val) {fX = val;}
  68. void SetY (Float_t val) {fY = val;}
  69. void SetZ (Float_t val) {fZ = val;}
  70. void SetGlobX (Float_t val) {fX_global = val;}
  71. void SetGlobY (Float_t val) {fY_global = val;}
  72. void SetGlobZ (Float_t val) {fZ_global = val;}
  73. void SetSect (Int_t val) {fSector = val;}
  74. void SetADC (Float_t val) {fADCSum = val;}
  75. void SetErrX (Float_t val) {fErrX = val;}
  76. void SetErrY (Float_t val) {fErrY = val;}
  77. void SetErrZ (Float_t val) {fErrZ = val;}
  78. UInt_t GetNumDigits () const {return (UInt_t)fAdcList.size();}
  79. UInt_t GetNumPads () const {return (UInt_t)(fMaxCol - fMinCol + 1);}
  80. UInt_t GetNumTimeBins () const {return (UInt_t)(fMaxBkt - fMinBkt + 1);}
  81. Float_t GetX () const {return fX;}
  82. Float_t GetY () const {return fY;}
  83. Float_t GetZ () const {return fZ;}
  84. Float_t GetGlobX () const {return fX_global;}
  85. Float_t GetGlobY () const {return fY_global;}
  86. Float_t GetGlobZ () const {return fZ_global;}
  87. Float_t GetErrX () const {return fErrX;}
  88. Float_t GetErrY () const {return fErrY;}
  89. Float_t GetErrZ () const {return fErrZ;}
  90. Int_t GetSect () const {return fSector;}
  91. Float_t GetADC () const {return fADCSum;}
  92. Int_t GetId () const {return fId;}
  93. Float_t GetCorrel() const { return fCorrel; } // pad-time correlation
  94. private:
  95. UInt_t fFlag;
  96. Int_t fId;
  97. Int_t fMinBkt;
  98. Int_t fMaxBkt;
  99. Int_t fMinCol;
  100. Int_t fMaxCol;
  101. Float_t fX, fY, fZ;
  102. Float_t fX_global, fY_global, fZ_global;
  103. Float_t fErrX, fErrY, fErrZ;
  104. std::vector<Int_t> fSecList;
  105. std::vector<Int_t> fRowList;
  106. std::vector<Int_t> fColList;
  107. std::vector<Int_t> fBktList;
  108. std::vector<Float_t> fAdcList;
  109. Int_t fSector;
  110. Float_t fADCSum, fAvgCol, fSigCol, fAvgBkt, fSigBkt, fCorrel;
  111. ClassDef(MpdTpc2dCluster, 2)
  112. };
  113. #endif