MpdStsHit.cxx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. //--------------------------------------------------------------------------
  2. //---- MpdStsHit ----
  3. //--------------------------------------------------------------------------
  4. #include <iostream>
  5. using namespace std;
  6. #include "MpdStsHit.h"
  7. #include <TMath.h>
  8. #include "TObject.h"
  9. // ----- Default constructor -------------------------------------------
  10. MpdStsHit::MpdStsHit()
  11. {
  12. fFlag = 1;
  13. }
  14. // ----- Standard constructor ------------------------------------------
  15. MpdStsHit::MpdStsHit(Int_t detID, TVector3 pos, TVector3 dpos, Double_t signal, Int_t index, Int_t flag)
  16. : FairHit(detID, pos, dpos, index)
  17. {
  18. fFlag = flag;
  19. fSignal = signal;
  20. }
  21. // ----- Constructor without flag ------------------------------------------
  22. MpdStsHit::MpdStsHit(Int_t detID, TVector3 pos, TVector3 dpos, Double_t signal, Int_t index)
  23. : FairHit(detID, pos, dpos, index)
  24. {
  25. fSignal = signal;
  26. }
  27. //__________________________________________________________________________
  28. /*
  29. MpdStsHit::MpdStsHit (const MpdStsHit& hit)
  30. : FairHit(hit),
  31. fDetectorID(hit.fDetectorID),
  32. fHitType(hit.fHitType),
  33. fDist(hit.fDist)
  34. {
  35. }
  36. */
  37. // ----- Destructor ----------------------------------------------------
  38. MpdStsHit::~MpdStsHit() { }
  39. // ----- Compare --------------------------------------------------------
  40. Int_t MpdStsHit::Compare(const TObject* hit) const
  41. {
  42. /// "Compare" function to sort in ascending order of the layer number
  43. MpdStsHit *kHit = (MpdStsHit*) hit;
  44. // Check layers
  45. if (Layer() > kHit->Layer()) return 1;
  46. else if (Layer() < kHit->Layer()) return -1;
  47. return 0;
  48. }
  49. // ----- Print -----------------------------------------------------------
  50. void MpdStsHit::Print(const Option_t* opt) const
  51. {
  52. cout << "-I- MpdStsHit" << endl;
  53. cout << " DetectorID: " << fDetectorID << endl;
  54. cout << " Position: (" << fX
  55. << ", " << fY
  56. << ", " << fZ << ") cm"
  57. << endl;
  58. cout << " Position error: (" << fDx
  59. << ", " << fDy
  60. << ", " << fDz << ") cm"
  61. << endl;
  62. cout << " Flag: " << fFlag
  63. << endl;
  64. }
  65. // -------------------------------------------------------------------------
  66. Int_t MpdStsHit::SetDetId(Int_t sectorType, Int_t layer, Int_t ladder, Int_t det, Int_t side)
  67. {
  68. // Set detector ID - helper for the tracking
  69. if (sectorType < 0) {
  70. // Layout with sensors
  71. fDetectorID = side;
  72. fDetectorID |= ((layer-1) << 11);
  73. fDetectorID |= (ladder << 6);
  74. fDetectorID |= (det << 1);
  75. } else {
  76. // Layout with sectors
  77. fDetectorID = side; // # of side on bit 0
  78. fDetectorID |= (det << kSensorS); // # of sector on bit 1 - 5
  79. fDetectorID |= (ladder << kLadderS); // # of ladder on bit 6 - 10
  80. fDetectorID |= (layer << kLayerS); // # of layer on bit 11 - 13
  81. fDetectorID |= (sectorType << kSecTypeS); // type of sector (1,2 or 3) on bit 14-16
  82. }
  83. return fDetectorID;
  84. }
  85. ClassImp(MpdStsHit)