MpdItsHit5spd.h 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #ifndef MPDItsHit5spd_H
  2. #define MPDItsHit5spd_H
  3. #include "FairHit.h"
  4. #include <TArrayI.h>
  5. #include <TMath.h>
  6. #include <TObject.h>
  7. class MpdItsHit5spd : public FairHit
  8. {
  9. public:
  10. // enum Shifts {kSensorS = 1, kLadderS = 6, kLayerS = 11, kSecTypeS = 14};
  11. // enum Masks {kSensorM = 31, kLadderM = 31, kLayerM = 7, kSecTypeM = 7};
  12. enum Shifts {kSensorS = 0, kLadderS = 7, kLayerS = 13, kSecTypeS = 16};
  13. enum Masks {kSensorM = 127, kLadderM = 63, kLayerM = 7, kSecTypeM = 7};
  14. public:
  15. /** Default constructor **/
  16. MpdItsHit5spd();
  17. /** Constructor with hit parameters (1)**/
  18. MpdItsHit5spd(Int_t detectorID, TVector3 pos, TVector3 dpos, Double_t signal, Int_t refIndex, Int_t flag); //14.08
  19. /** Constructor with hit parameters (2) [not the flag]**/
  20. MpdItsHit5spd(Int_t detectorID, TVector3 pos, TVector3 dpos, Double_t signal, Int_t refIndex); //14.08
  21. /**copy constructor **/
  22. // MpdItsHit_5spd (const MpdItsHit_5spd& hit); ///< copy constructor
  23. /** Destructor **/
  24. virtual ~MpdItsHit5spd();
  25. void Print(const Option_t* opt = 0) const;
  26. /** Accessors **/
  27. Int_t GetFlag() const { return fFlag; };
  28. Int_t GetTrackID() const { return fTrackID; };
  29. // Int_t SectorType() const { return (fDetectorID >> kSecTypeS) & kSecTypeM; }
  30. Int_t Layer() const { return GetUniqueID() ? ((fDetectorID >> kLayerS) & kLayerM) : ((fDetectorID >> 13) & 3) + 1; }
  31. Int_t Ladder() const { return GetUniqueID() ? ((fDetectorID >> kLadderS) & kLadderM) : (fDetectorID >> 7) & 31; }
  32. Int_t Sensor() const { return GetUniqueID() ? ((fDetectorID >> kSensorS) & kSensorM) : (fDetectorID >> 0) & 127; }
  33. Int_t Detector() const { return Sensor(); }
  34. Int_t Sector() const { return Sensor(); }
  35. Int_t Module() const { return Sector(); }
  36. // Sector layout
  37. // Int_t GetSectorType(Int_t detID) const { return (detID >> kSecTypeS) & kSecTypeM; }
  38. Int_t GetLayer(Int_t detID) const { return (detID >> kLayerS) & kLayerM; }
  39. Int_t GetLadder(Int_t detID) const { return (detID >> kLadderS) & kLadderM; }
  40. Int_t GetSensor(Int_t detID) const { return (detID >> kSensorS) & kSensorM; }
  41. Double_t GetSignal() const { return fSignal; }
  42. Double_t GetLocalX() const { return fLocalX; }
  43. /** Modifiers **/
  44. void SetFlag(Int_t flag) { fFlag = flag; };
  45. void SetCol(Int_t col) { fCol = col; }
  46. void SetRow(Int_t row) { fRow = row; }
  47. void SetSignal(Double_t signal) { fSignal = signal; }
  48. void SetLocalX(Double_t x) { fLocalX = x; }
  49. void SetDetId(Int_t detID) { fDetectorID = detID; }
  50. Int_t SetDetId(Int_t layer, Int_t ladder, Int_t det); ///< helper for the tracking
  51. Int_t SetLadder(Int_t detID, Int_t layer) const { return (detID & ~(kLadderM << kLadderS)) | (layer << kLadderS); }
  52. Int_t SetSensor(Int_t detID, Int_t sensor) const { return (detID & ~(kSensorM << kSensorS)) | (sensor << kSensorS); }
  53. void SetTrackID(Int_t trackID) { fTrackID = trackID; }
  54. Bool_t IsSortable() const { return kTRUE; }
  55. Int_t Compare(const TObject* hit) const; ///< sort in ascending order of detector layer
  56. protected:
  57. Int_t fTrackID;
  58. Int_t fFlag; // Flag for general purposes [TDC, event tagging...]
  59. Int_t fCol; // Column number
  60. Int_t fRow; // Row number
  61. Double_t fSignal; // Signal (energy deposit)
  62. Double_t fLocalX; // Local coordinate (in rotated coordinate system)
  63. ClassDef(MpdItsHit5spd,1)
  64. };
  65. #endif