MpdTofHit.cxx 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //------------------------------------------------------------------------------------------------------------------------
  2. #include <iostream>
  3. #include <cmath>
  4. #include "MpdTofUtils.h"
  5. #include "MpdTofHit.h"
  6. using namespace std;
  7. //------------------------------------------------------------------------------------------------------------------------
  8. MpdTofHit::MpdTofHit()
  9. {
  10. fTime = fX = fY = fZ = fDx = fDy = fDz = NAN;
  11. fFlag = 0;
  12. }
  13. //------------------------------------------------------------------------------------------------------------------------
  14. MpdTofHit::MpdTofHit(Int_t suid, TVector3 pos, TVector3 dpos, Int_t index, Double_t time, Int_t flag)
  15. : FairHit(suid, pos, dpos, index)
  16. {
  17. fTime = time;
  18. fFlag = flag;
  19. }
  20. //------------------------------------------------------------------------------------------------------------------------
  21. bool MpdTofHit::CheckSuid(Int_t suid) const
  22. {
  23. for(Int_t i = 0, nLinks = GetNLinks(); i < nLinks; i++)
  24. {
  25. auto link = GetLink(i);
  26. if(MpdTofUtils::volumeUID == link.GetType() && suid == link.GetIndex()) return true;
  27. }
  28. return false;
  29. }
  30. //------------------------------------------------------------------------------------------------------------------------
  31. bool MpdTofHit::CheckTid(Int_t tid) const
  32. {
  33. for(Int_t i = 0, nLinks = GetNLinks(); i < nLinks; i++)
  34. {
  35. auto link = GetLink(i);
  36. if(MpdTofUtils::mcTrackIndex == link.GetType() && tid == link.GetIndex()) return true;
  37. }
  38. return false;
  39. }
  40. //------------------------------------------------------------------------------------------------------------------------
  41. bool MpdTofHit::IsSameTid(const MpdTofHit& hit) const
  42. {
  43. for(Int_t i = 0, nLinks = hit.GetNLinks(); i < nLinks; i++)
  44. {
  45. auto link = hit.GetLink(i);
  46. if(MpdTofUtils::mcTrackIndex == link.GetType() && CheckTid(link.GetIndex())) return true;
  47. }
  48. return false;
  49. }
  50. //------------------------------------------------------------------------------------------------------------------------
  51. void MpdTofHit::getLinks(const MpdTofUtils::k_LinkType type, vector<Int_t>& v) const
  52. {
  53. v.clear();
  54. for(Int_t i = 0, nLinks = GetNLinks(); i < nLinks; i++)
  55. {
  56. auto link = GetLink(i);
  57. if(type == link.GetType()) v.push_back(link.GetIndex());
  58. }
  59. }
  60. //------------------------------------------------------------------------------------------------------------------------
  61. void MpdTofHit::Print(const char* comment, ostream& os) const
  62. {
  63. if(comment != nullptr) os<<comment;
  64. os<<" [MpdTofHit] uid: "<< fDetectorID<<" pos.: ("<< fX <<", "<< fY <<", "<< fZ <<") cm"
  65. <<" pos. err.: ("<< fDx <<", "<< fDy <<", "<< fDz << ") cm"<<" Time: "<<fTime<<" ns"<< ", Flag: "<<fFlag;
  66. os<<" MCtid: ";
  67. for(Int_t i = 0, nLinks = GetNLinks(); i < nLinks; i++)
  68. {
  69. auto link = GetLink(i);
  70. if(link.GetType() == MpdTofUtils::mcTrackIndex) os<<link.GetIndex()<<", ";
  71. }
  72. os<<" MCpointId: ";
  73. for(Int_t i = 0, nLinks = GetNLinks(); i < nLinks; i++)
  74. {
  75. auto link = GetLink(i);
  76. if(link.GetType() == MpdTofUtils::mcPointIndex) os<<link.GetIndex()<<", ";
  77. }
  78. os<<" MCsuid: ";
  79. for(Int_t i = 0, nLinks = GetNLinks(); i < nLinks; i++)
  80. {
  81. auto link = GetLink(i);
  82. if(link.GetType() == MpdTofUtils::volumeUID) os<<link.GetIndex()<<", ";
  83. }
  84. }
  85. //------------------------------------------------------------------------------------------------------------------------
  86. ClassImp(MpdTofHit)