]>
Commit | Line | Data |
---|---|---|
672b5f43 | 1 | #ifndef ALIESDMUONTRACK_H |
2 | #define ALIESDMUONTRACK_H | |
3 | ||
af7ba10c | 4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | /* $Id$ */ | |
8 | ||
9 | // Class to describe the MUON tracks | |
10 | // in the Event Summary Data class | |
11 | // Author: G.Martinez | |
12 | ||
13 | ||
ad85871a | 14 | #include <TMath.h> |
60765b06 | 15 | #include <TMatrixD.h> |
16 | #include <TDatabasePDG.h> | |
ad85871a | 17 | |
18 | #include "AliVParticle.h" | |
672b5f43 | 19 | |
39b8d0dd | 20 | class TLorentzVector; |
21 | ||
ad85871a | 22 | class AliESDMuonTrack : public AliVParticle { |
5ec1b3bc | 23 | public: |
90e48c0c | 24 | AliESDMuonTrack(); //Constructor |
af7ba10c | 25 | virtual ~AliESDMuonTrack(){} // Destructor |
26 | AliESDMuonTrack(const AliESDMuonTrack& esdm); | |
27 | AliESDMuonTrack& operator=(const AliESDMuonTrack& esdm); | |
5ec1b3bc | 28 | |
29 | ||
39b8d0dd | 30 | // Get and Set methods for data at vertex |
5ec1b3bc | 31 | Double_t GetInverseBendingMomentum(void) const {return fInverseBendingMomentum;} |
39b8d0dd | 32 | void SetInverseBendingMomentum(Double_t InverseBendingMomentum) |
33 | {fInverseBendingMomentum = InverseBendingMomentum;} | |
5ec1b3bc | 34 | Double_t GetThetaX(void) const {return fThetaX;} |
39b8d0dd | 35 | void SetThetaX(Double_t ThetaX) {fThetaX = ThetaX;} |
5ec1b3bc | 36 | Double_t GetThetaY(void) const {return fThetaY;} |
39b8d0dd | 37 | void SetThetaY(Double_t ThetaY) {fThetaY = ThetaY;} |
5ec1b3bc | 38 | Double_t GetZ(void) const {return fZ;} |
39b8d0dd | 39 | void SetZ(Double_t Z) {fZ = Z;} |
5ec1b3bc | 40 | Double_t GetBendingCoor(void) const {return fBendingCoor;} |
39b8d0dd | 41 | void SetBendingCoor(Double_t BendingCoor) {fBendingCoor = BendingCoor;} |
5ec1b3bc | 42 | Double_t GetNonBendingCoor(void) const {return fNonBendingCoor;} |
39b8d0dd | 43 | void SetNonBendingCoor(Double_t NonBendingCoor) {fNonBendingCoor = NonBendingCoor;} |
44 | ||
45 | // Get and Set methods for data at first station | |
46 | Double_t GetInverseBendingMomentumUncorrected(void) const {return fInverseBendingMomentumUncorrected;} | |
47 | void SetInverseBendingMomentumUncorrected(Double_t InverseBendingMomentum) | |
48 | {fInverseBendingMomentumUncorrected = InverseBendingMomentum;} | |
49 | Double_t GetThetaXUncorrected(void) const {return fThetaXUncorrected;} | |
50 | void SetThetaXUncorrected(Double_t ThetaX) {fThetaXUncorrected = ThetaX;} | |
51 | Double_t GetThetaYUncorrected(void) const {return fThetaYUncorrected;} | |
52 | void SetThetaYUncorrected(Double_t ThetaY) {fThetaYUncorrected = ThetaY;} | |
53 | Double_t GetZUncorrected(void) const {return fZUncorrected;} | |
54 | void SetZUncorrected(Double_t Z) {fZUncorrected = Z;} | |
55 | Double_t GetBendingCoorUncorrected(void) const {return fBendingCoorUncorrected;} | |
56 | void SetBendingCoorUncorrected(Double_t BendingCoor) {fBendingCoorUncorrected = BendingCoor;} | |
57 | Double_t GetNonBendingCoorUncorrected(void) const {return fNonBendingCoorUncorrected;} | |
58 | void SetNonBendingCoorUncorrected(Double_t NonBendingCoor) {fNonBendingCoorUncorrected = NonBendingCoor;} | |
60765b06 | 59 | |
60 | // Get and Set methods for covariance matrix of data at first station | |
61 | void GetCovariances(TMatrixD& cov) const; | |
62 | void SetCovariances(const TMatrixD& cov); | |
63 | void GetCovarianceXYZPxPyPz(Double_t cov[21]) const; | |
64 | ||
39b8d0dd | 65 | // Get and Set methods for global tracking info |
5ec1b3bc | 66 | Double_t GetChi2(void) const {return fChi2;} |
39b8d0dd | 67 | void SetChi2(Double_t Chi2) {fChi2 = Chi2;} |
68 | UInt_t GetNHit(void) const {return fNHit;} | |
69 | void SetNHit(UInt_t NHit) {fNHit = NHit;} | |
5ec1b3bc | 70 | |
39b8d0dd | 71 | // Get and Set methods for trigger matching |
423b32ca | 72 | Int_t GetMatchTrigger() const; |
8252d536 | 73 | Double_t GetChi2MatchTrigger() const {return fChi2MatchTrigger;} |
39b8d0dd | 74 | void SetChi2MatchTrigger(Double_t Chi2MatchTrigger) {fChi2MatchTrigger = Chi2MatchTrigger;} |
fbc3395d | 75 | UShort_t GetHitsPatternInTrigCh() const {return fHitsPatternInTrigCh;} |
76 | void SetHitsPatternInTrigCh(UShort_t hitsPatternInTrigCh) {fHitsPatternInTrigCh = hitsPatternInTrigCh;} | |
423b32ca | 77 | void SetLocalTrigger(Int_t locTrig) { fLocalTrigger = locTrig; } |
78 | Int_t LoCircuit(void) const | |
79 | { Int_t circ = fLocalTrigger & 0xFF; return (circ == 234) ? -1 : circ; } | |
80 | Int_t LoStripX(void) const { return fLocalTrigger >> 8 & 0x1F; } | |
81 | Int_t LoStripY(void) const { return fLocalTrigger >> 13 & 0x0F; } | |
82 | Int_t LoDev(void) const { return fLocalTrigger >> 17 & 0x1F; } | |
83 | Int_t LoLpt(void) const { return fLocalTrigger >> 22 & 0x03; } | |
84 | Int_t LoHpt(void) const { return fLocalTrigger >> 24 & 0x03; } | |
39b8d0dd | 85 | |
60765b06 | 86 | // Get and Set methods for muon cluster map |
87 | UInt_t GetMuonClusterMap() const {return fMuonClusterMap;} | |
88 | void SetMuonClusterMap(UInt_t muonClusterMap) {fMuonClusterMap = muonClusterMap;} | |
89 | void AddInMuonClusterMap(Int_t chamber); | |
90 | Bool_t IsInMuonClusterMap(Int_t chamber) const; | |
91 | ||
39b8d0dd | 92 | // Methods to compute track momentum |
93 | Double_t Px() const; | |
94 | Double_t Py() const; | |
95 | Double_t Pz() const; | |
96 | Double_t P() const; | |
97 | void LorentzP(TLorentzVector& vP) const; | |
98 | Double_t PxUncorrected() const; | |
99 | Double_t PyUncorrected() const; | |
100 | Double_t PzUncorrected() const; | |
101 | Double_t PUncorrected() const; | |
102 | void LorentzPUncorrected(TLorentzVector& vP) const; | |
103 | ||
ad85871a | 104 | // additional methods to comply with AliVParticle |
105 | Double_t Pt() const { return TMath::Sqrt(Px()*Px() + Py()*Py()); } | |
106 | Double_t OneOverPt() const { return 1./Pt(); } | |
107 | Double_t Phi() const { return TMath::ATan2(Py(), Px()); } | |
108 | Double_t Theta() const { return TMath::ATan2(Pt(), Pz()); } | |
60765b06 | 109 | Double_t E() const { return TMath::Sqrt(M()*M() + P()*P()); } |
110 | Double_t M() const { return TDatabasePDG::Instance()->GetParticle("mu-")->Mass(); } | |
ad85871a | 111 | Double_t Eta() const { return -TMath::Log(TMath::Tan(0.5 * Theta()));} |
60765b06 | 112 | Double_t Y() const { return TMath::ATanH(Pz()/E()); } |
113 | Short_t Charge() const { return (Short_t)TMath::Sign(1., GetInverseBendingMomentum()); } | |
ad85871a | 114 | const Double_t *PID() const { return (Double_t*)0x0; } |
115 | ||
39b8d0dd | 116 | |
5ec1b3bc | 117 | protected: |
39b8d0dd | 118 | // parameters at vertex |
60765b06 | 119 | Double32_t fInverseBendingMomentum; ///< Inverse bending momentum (GeV/c ** -1) times the charge |
120 | Double32_t fThetaX; ///< Angle of track at vertex in X direction (rad) | |
121 | Double32_t fThetaY; ///< Angle of track at vertex in Y direction (rad) | |
122 | Double32_t fZ; ///< Z coordinate (cm) | |
123 | Double32_t fBendingCoor; ///< bending coordinate (cm) | |
124 | Double32_t fNonBendingCoor; ///< non bending coordinate (cm) | |
39b8d0dd | 125 | |
126 | // parameters at first tracking station | |
60765b06 | 127 | Double32_t fInverseBendingMomentumUncorrected; ///< Inverse bending momentum (GeV/c ** -1) times the charge |
128 | Double32_t fThetaXUncorrected; ///< Angle of track at vertex in X direction (rad) | |
129 | Double32_t fThetaYUncorrected; ///< Angle of track at vertex in Y direction (rad) | |
130 | Double32_t fZUncorrected; ///< Z coordinate (cm) | |
131 | Double32_t fBendingCoorUncorrected; ///< bending coordinate (cm) | |
132 | Double32_t fNonBendingCoorUncorrected; ///< non bending coordinate (cm) | |
39b8d0dd | 133 | |
60765b06 | 134 | /// reduced covariance matrix of UNCORRECTED track parameters, ordered as follow: <pre> |
135 | /// [0] = <X,X> | |
136 | /// [1] =<X,ThetaX> [2] =<ThetaX,ThetaX> | |
137 | /// [3] = <X,Y> [4] = <Y,ThetaX> [5] = <Y,Y> | |
138 | /// [6] =<X,ThetaY> [7] =<ThetaX,ThetaY> [8] =<Y,ThetaY> [9] =<ThetaY,ThetaY> | |
139 | /// [10]=<X,InvP_yz> [11]=<ThetaX,InvP_yz> [12]=<Y,InvP_yz> [13]=<ThetaY,InvP_yz> [14]=<InvP_yz,InvP_yz> </pre> | |
140 | Double32_t fCovariances[15]; ///< \brief reduced covariance matrix of parameters AT FIRST CHAMBER | |
423b32ca | 141 | |
60765b06 | 142 | // global tracking info |
143 | Double32_t fChi2; ///< chi2 in the MUON track fit | |
144 | UInt_t fNHit; ///< number of hit in the track | |
145 | Int_t fLocalTrigger; ///< packed local trigger information | |
146 | Double32_t fChi2MatchTrigger; ///< chi2 of trigger/track matching | |
147 | UShort_t fHitsPatternInTrigCh; ///< Word containing info on the hits left in trigger chambers | |
148 | UInt_t fMuonClusterMap; ///< Map of clusters in tracking chambers | |
5ec1b3bc | 149 | |
61402fa9 | 150 | |
60765b06 | 151 | ClassDef(AliESDMuonTrack,7) // MUON ESD track class |
672b5f43 | 152 | }; |
153 | ||
154 | #endif |