1 #ifndef AliESDMuonGlobalTrack_H
2 #define AliESDMuonGlobalTrack_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 //====================================================================================================================================================
9 // ESD description of an ALICE muon forward track, combining the information of the Muon Spectrometer and the Muon Forward Tracker
11 // Contact author: antonio.uras@cern.ch
13 //====================================================================================================================================================
17 #include "TDatabasePDG.h"
19 #include "TLorentzVector.h"
21 #include "AliVParticle.h"
26 //====================================================================================================================================================
28 class AliESDMuonGlobalTrack : public AliVParticle {
32 AliESDMuonGlobalTrack();
33 AliESDMuonGlobalTrack(Double_t px, Double_t py, Double_t pz);
34 virtual ~AliESDMuonGlobalTrack() {;}
35 AliESDMuonGlobalTrack(const AliESDMuonGlobalTrack& esdTrack);
36 AliESDMuonGlobalTrack& operator=(const AliESDMuonGlobalTrack& esdTrack);
37 virtual void Copy(TObject &obj) const;
39 void SetCharge(Int_t charge) { fCharge = charge; }
40 Short_t GetCharge() const { return fCharge; }
42 /* Double_t GetOffset(Double_t x, Double_t y, Double_t z); */
43 /* Double_t GetOffsetX(Double_t x, Double_t z); */
44 /* Double_t GetOffsetY(Double_t y, Double_t z); */
46 // Set and Get methods for kinematics at primary vertex
47 void SetPxPyPz(Double_t px, Double_t py, Double_t pz);
49 // Get and Set methods for global tracking info
50 Double_t GetChi2OverNdf() const { return fChi2OverNdf; } // chi2/ndf
51 void SetChi2OverNdf(Double_t chi2) { fChi2OverNdf = chi2; } // chi2/ndf
53 Double_t GetChi2MatchTrigger() const { return fChi2MatchTrigger; }
54 void SetChi2MatchTrigger(Double_t chi2MatchTrigger) { fChi2MatchTrigger = chi2MatchTrigger; }
56 // Get and Set methods for various info copied and pasted from the MUON track
57 UShort_t GetHitsPatternInTrigCh() const {return fHitsPatternInTrigCh;}
58 void SetHitsPatternInTrigCh(UShort_t hitsPatternInTrigCh) {fHitsPatternInTrigCh = hitsPatternInTrigCh;}
59 UInt_t GetHitsPatternInTrigChTrk() const {return fHitsPatternInTrigChTrk;}
60 void SetHitsPatternInTrigChTrk(UInt_t hitsPatternInTrigChTrk) {fHitsPatternInTrigChTrk = hitsPatternInTrigChTrk;}
61 UInt_t GetMuonClusterMap() const {return fMuonClusterMap;}
62 void SetMuonClusterMap(UInt_t muonClusterMap) {fMuonClusterMap = muonClusterMap;}
63 Int_t GetLoCircuit() const { return fLoCircuit; }
64 void SetLoCircuit(Int_t loCircuit) { fLoCircuit = loCircuit; }
65 Bool_t IsConnected() const { return fIsConnected; }
66 void Connected(Bool_t flag) { fIsConnected = flag; }
68 // Get and Set methods for trigger matching
69 void SetMatchTrigger(Int_t matchTrigger) { fMatchTrigger = matchTrigger; }
70 Int_t GetMatchTrigger() { return fMatchTrigger; }
72 void SetNMFTClusters(Int_t nMFTClusters) { fNMFTClusters = nMFTClusters; }
73 Short_t GetNMFTClusters() { return fNMFTClusters; }
75 void SetNWrongMFTClustersMC(Int_t nWrongMFTClustersMC) { fNWrongMFTClustersMC = nWrongMFTClustersMC; }
76 Short_t GetNWrongMFTClustersMC() { return fNWrongMFTClustersMC; }
78 void SetMFTClusterPattern(ULong_t mftClusterPattern) { fMFTClusterPattern = mftClusterPattern; }
79 ULong_t GetMFTClusterPattern() { return fMFTClusterPattern; }
82 Double_t Pt() const { return fPt; }
83 Double_t Eta() const { return fEta; }
84 Double_t Rapidity() const { return fRapidity; }
85 Double_t Px() const { return fPx; }
86 Double_t Py() const { return fPy; }
87 Double_t Pz() const { return fPz; }
88 Double_t P() const { return fP; }
90 Bool_t PxPyPz(Double_t p[3]) const { p[0] = Px(); p[1] = Py(); p[2] = Pz(); return kTRUE; }
92 void SetFirstTrackingPoint(Double_t x, Double_t y, Double_t z) {fFirstTrackingPointX = x; fFirstTrackingPointY = y; fFirstTrackingPointZ = z; }
93 void GetFirstTrackingPoint(Double_t x[3]) { x[0] = fFirstTrackingPointX; x[1] = fFirstTrackingPointY; x[2] = fFirstTrackingPointZ; }
95 void SetXYAtVertex(Double_t x, Double_t y) { fXAtVertex = x; fYAtVertex = y; }
96 void GetXYAtVertex(Double_t x[2]) { x[0] = fXAtVertex; x[1] = fYAtVertex; }
98 Double_t GetRAtAbsorberEnd() { return fRAtAbsorberEnd; }
99 void SetRAtAbsorberEnd(Double_t r) { fRAtAbsorberEnd = r; }
101 // Additional methods to comply with AliVParticle
102 Double_t Xv() const {return -999.;} // put reasonable values here
103 Double_t Yv() const {return -999.;} //
104 Double_t Zv() const {return -999.;} //
105 Bool_t XvYvZv(Double_t x[3]) const { x[0] = Xv(); x[1] = Yv(); x[2] = Zv(); return kTRUE; }
106 Double_t OneOverPt() const { return (Pt() != 0.) ? 1./Pt() : FLT_MAX; }
107 Double_t Phi() const { return TMath::Pi()+TMath::ATan2(-Py(), -Px()); }
108 Double_t Theta() const { return TMath::ATan2(Pt(), Pz()); }
109 Double_t E() const { return TMath::Sqrt(M()*M() + P()*P()); }
110 Double_t M() const { return TDatabasePDG::Instance()->GetParticle("mu-")->Mass(); }
111 Double_t Y() const { return Rapidity(); }
112 Short_t Charge() const { return fCharge; }
114 // Return kTRUE if the track contain tracker data
115 Bool_t ContainTrackerData() const {return (fMuonClusterMap>0) ? kTRUE : kFALSE;}
118 const Double_t *PID() const { return (Double_t*)0x0; }
119 Int_t PdgCode() const { return 0; }
121 // Set the corresponding MC track number
122 void SetLabel(Int_t label) { fLabel = label; }
123 // Return the corresponding MC track number
124 Int_t GetLabel() const { return fLabel; }
126 AliESDEvent* GetESDEvent() const { return fESDEvent; }
127 void SetESDEvent(AliESDEvent* evt) { fESDEvent = evt; }
131 Short_t fCharge, fMatchTrigger, fNMFTClusters, fNWrongMFTClustersMC;
132 ULong_t fMFTClusterPattern; // Tells us which MFT clusters are contained in the track, and which one is a good one (if MC)
134 // kinematics at vertex
135 Double_t fPx, fPy, fPz, fPt, fP, fEta, fRapidity;
137 // coordinates of the first tracking point
138 Double_t fFirstTrackingPointX, fFirstTrackingPointY, fFirstTrackingPointZ;
140 // transverse coordinates at DCA to the primary vertex (offset)
141 Double_t fXAtVertex, fYAtVertex;
143 Double_t fRAtAbsorberEnd;
145 // global tracking info
146 Double_t fChi2OverNdf; // chi2/ndf in the MUON+MFT track fit
147 Double_t fChi2MatchTrigger; // chi2 of trigger/track matching
149 Int_t fLabel; // point to the corresponding MC track
151 UInt_t fMuonClusterMap; // Map of clusters in MUON tracking chambers
152 UShort_t fHitsPatternInTrigCh; // Word containing info on the hits left in trigger chambers
153 UInt_t fHitsPatternInTrigChTrk; // Trigger hit map from tracker track extrapolation
157 AliESDEvent *fESDEvent; //! Pointer back to event to which the track belongs
159 ClassDef(AliESDMuonGlobalTrack,2) // MUON+MFT ESD track class
163 //====================================================================================================================================================