Changed all Float_t/Double_t to Double32_t, some with ranges (e.g. PID) reordering...
[u/mrichter/AliRoot.git] / STEER / AliESDMuonTrack.h
CommitLineData
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 20class TLorentzVector;
21
ad85871a 22class AliESDMuonTrack : public AliVParticle {
5ec1b3bc 23public:
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;}
4f036e6e 68 UChar_t GetNHit(void) const {return fNHit;}
39b8d0dd 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 117protected:
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
60765b06 144 Double32_t fChi2MatchTrigger; ///< chi2 of trigger/track matching
4f036e6e 145 Int_t fLocalTrigger; ///< packed local trigger information
146
60765b06 147 UInt_t fMuonClusterMap; ///< Map of clusters in tracking chambers
4f036e6e 148 UShort_t fHitsPatternInTrigCh; ///< Word containing info on the hits left in trigger chambers
149 UChar_t fNHit; ///< number of hit in the track
5ec1b3bc 150
61402fa9 151
4f036e6e 152 ClassDef(AliESDMuonTrack,8) // MUON ESD track class
672b5f43 153};
154
155#endif