MpdKalmanGeoScheme.cxx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /// \class MpdKalmanGeoScheme
  2. ///
  3. /// Geometry manager for MPD Kalman filter
  4. /// \author Alexander Zinchenko (LHEP, JINR, Dubna)
  5. #include "MpdKalmanGeoScheme.h"
  6. #include "MpdKalmanHit.h"
  7. //#include "FairRootManager.h"
  8. //#include <TMath.h>
  9. #include <Riostream.h>
  10. #include <map>
  11. using namespace std;
  12. //__________________________________________________________________________
  13. MpdKalmanGeoScheme::MpdKalmanGeoScheme()
  14. : TObject()
  15. {
  16. /// Default constructor
  17. }
  18. //__________________________________________________________________________
  19. MpdKalmanGeoScheme::~MpdKalmanGeoScheme()
  20. {
  21. /// Destructor
  22. //FairRootManager *manager = FairRootManager::Instance();
  23. //manager->Write();
  24. fPosMap.clear();
  25. fNormMap.clear();
  26. fSizeMap.clear();
  27. fDetMap.clear();
  28. }
  29. //__________________________________________________________________________
  30. Bool_t MpdKalmanGeoScheme::Exist(Int_t detID)
  31. {
  32. // Check if detector detID exists in geo scheme
  33. if (fPosMap.find(detID) == fPosMap.end()) return kFALSE;
  34. return kTRUE;
  35. }
  36. //__________________________________________________________________________
  37. TVector3 MpdKalmanGeoScheme::GlobalPos(const MpdKalmanHit *hit)
  38. {
  39. // Get global coordinates of the hit
  40. return fPosMap[hit->GetDetectorID()];
  41. }
  42. //__________________________________________________________________________
  43. TVector3 MpdKalmanGeoScheme::Normal(const MpdKalmanHit *hit)
  44. {
  45. // Get normal direction to the plane hit
  46. //return TVector3(0.,0.,0.); // just dummy
  47. return fNormMap[hit->GetDetectorID()];
  48. }
  49. //__________________________________________________________________________
  50. TVector2 MpdKalmanGeoScheme::Size(const MpdKalmanHit *hit)
  51. {
  52. // Get normal direction to the plane hit
  53. return fSizeMap[hit->GetDetectorID()];
  54. }
  55. //__________________________________________________________________________
  56. Int_t MpdKalmanGeoScheme::DetId(TString detName)
  57. {
  58. // Get detector ID from its name
  59. if (fDetMap.find(detName) == fDetMap.end()) return -1;
  60. return fDetMap[detName];
  61. }
  62. //__________________________________________________________________________
  63. TString MpdKalmanGeoScheme::Path(Int_t detId)
  64. {
  65. // Get detector path from its ID
  66. if (fPathMap.find(detId) == fPathMap.end()) return -1;
  67. return fPathMap[detId];
  68. }
  69. //__________________________________________________________________________
  70. void MpdKalmanGeoScheme::SetGlobalPos(const MpdKalmanHit *hit, TVector3 pos, Bool_t erase)
  71. {
  72. // Put hit in GeoScheme
  73. Int_t detID = hit->GetDetectorID();
  74. SetGlobalPos(detID, pos, erase);
  75. }
  76. //__________________________________________________________________________
  77. void MpdKalmanGeoScheme::SetGlobalPos(Int_t detID, TVector3 pos, Bool_t erase)
  78. {
  79. // Put detector position in GeoScheme
  80. if (erase) fPosMap.erase(detID);
  81. fPosMap.insert(pair<Int_t,TVector3>(detID,pos));
  82. }
  83. //__________________________________________________________________________
  84. void MpdKalmanGeoScheme::SetNormal(Int_t detID, TVector3 norm, Bool_t erase)
  85. {
  86. // Put detector normal in GeoScheme
  87. if (erase) fNormMap.erase(detID);
  88. fNormMap.insert(pair<Int_t,TVector3>(detID,norm));
  89. }
  90. //__________________________________________________________________________
  91. void MpdKalmanGeoScheme::SetSize(Int_t detID, TVector2 size, Bool_t erase)
  92. {
  93. // Put detector dimensions in GeoScheme
  94. if (erase) fSizeMap.erase(detID);
  95. fSizeMap.insert(pair<Int_t,TVector2>(detID,size));
  96. }
  97. //__________________________________________________________________________
  98. void MpdKalmanGeoScheme::SetDetId(TString detName, Int_t detID)
  99. {
  100. // Store detector ID with name detName
  101. fDetMap.insert(pair<TString,Int_t>(detName,detID));
  102. }
  103. //__________________________________________________________________________
  104. void MpdKalmanGeoScheme::SetPath(Int_t detID, TString path, Bool_t erase)
  105. {
  106. // Store detector path with detID
  107. if (erase) fPathMap.erase(detID);
  108. fPathMap.insert(pair<Int_t,TString>(detID,path));
  109. }
  110. //__________________________________________________________________________
  111. void MpdKalmanGeoScheme::Reset()
  112. {
  113. // Reset maps
  114. fPosMap.clear();
  115. fNormMap.clear();
  116. fSizeMap.clear();
  117. fDetMap.clear();
  118. fPathMap.clear();
  119. }
  120. ClassImp(MpdKalmanGeoScheme)