MpdTrack.cxx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Author: Oleg Rogachevsky
  2. // Update: 2009-09-17 18:43:28+0400
  3. // Copyright: 2009 (C) MPD coll.
  4. //
  5. // Track container
  6. #ifndef ROOT_MpdTrack
  7. #include "MpdTrack.h"
  8. #include "FairRunAna.h"
  9. #include "TMath.h"
  10. #include "FairRunAna.h"
  11. #include "FairField.h"
  12. #include "Rtypes.h"
  13. #endif
  14. // ----- Default constructor ---------------------------------------
  15. MpdTrack::MpdTrack():
  16. TObject(), fEdgeCut(0), fPidProbElectron(0.), fPidProbPion(0.),fPidProbKaon(0.), fPidProbProton(0.),
  17. fPidTPCProbElectron(0.), fPidTPCProbPion(0.),fPidTPCProbKaon(0.), fPidTPCProbProton(0.),
  18. fPidTOFProbElectron(0.), fPidTOFProbPion(0.),fPidTOFProbKaon(0.), fPidTOFProbProton(0.),
  19. fTofBeta(0.), fTofMass2(0.), fdEdXTPC(0.), fTofFlag(0) ,fHitMap(0) ,
  20. fSharedHitMap(0),fNSigmaElectron(-100.), fNSigmaPion(-100.), fNSigmaKaon(-100.), fNSigmaProton(-100.),
  21. fTofHitIndex(-1)
  22. {}
  23. // -------------------------------------------------------------------
  24. Float_t MpdTrack::GetPx() const
  25. {
  26. return TMath::Abs(fPt)*TMath::Cos(fPhi);
  27. }
  28. Float_t MpdTrack::GetPy() const
  29. {
  30. return TMath::Abs(fPt)*TMath::Sin(fPhi);
  31. }
  32. Float_t MpdTrack::GetPz() const
  33. {
  34. if ( TMath::Sin(fTheta) == 0.) return TMath::Sqrt(-1); // NaN
  35. return TMath::Abs(fPt)/TMath::Tan(fTheta);
  36. }
  37. Float_t MpdTrack::GetEta()const
  38. {
  39. return -TMath::Log(TMath::Tan(0.5*fTheta));
  40. }
  41. // -------------------------------------------------------------------
  42. ClassImp(MpdTrack);
  43. MpdHelix MpdTrack::GetHelix() const {
  44. TVector3 mom(GetPx(),GetPy(),GetPz());
  45. TVector3 pos(GetFirstPointX(),GetFirstPointY(),GetFirstPointZ());
  46. Double_t charge = GetCharge();
  47. Double_t Bz = 0.5;
  48. if(FairRunAna::Instance()){
  49. if(FairRunAna::Instance()->GetField())
  50. Bz = FairRunAna::Instance()->GetField()->GetBz(0,0,0)*0.1;
  51. }
  52. return MpdHelix(mom,pos,charge,Bz);
  53. }
  54. Int_t MpdTrack::GetNSharedTpcHits() const {
  55. Int_t shared = 0;
  56. for(int i=0;i<53;i++)
  57. if(TESTBIT(fSharedHitMap,i))
  58. shared++;
  59. return shared;
  60. }