]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliESDMuonTrack.h
Add inheritance from AliVParticle (Markus)
[u/mrichter/AliRoot.git] / STEER / AliESDMuonTrack.h
1 #ifndef ALIESDMUONTRACK_H
2 #define ALIESDMUONTRACK_H
3
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
14 #include <TMath.h>
15
16 #include "AliVParticle.h"
17
18 class TLorentzVector;
19
20 class AliESDMuonTrack : public AliVParticle {
21 public:
22   AliESDMuonTrack(); //Constructor
23   virtual ~AliESDMuonTrack(){} // Destructor
24   AliESDMuonTrack(const AliESDMuonTrack& esdm);
25   AliESDMuonTrack& operator=(const AliESDMuonTrack& esdm);
26
27
28  // Get and Set methods for data at vertex
29   Double_t GetInverseBendingMomentum(void) const {return fInverseBendingMomentum;}
30   void     SetInverseBendingMomentum(Double_t InverseBendingMomentum) 
31                 {fInverseBendingMomentum = InverseBendingMomentum;}
32   Double_t GetThetaX(void) const {return fThetaX;}
33   void     SetThetaX(Double_t ThetaX) {fThetaX = ThetaX;}
34   Double_t GetThetaY(void) const {return fThetaY;}
35   void     SetThetaY(Double_t ThetaY) {fThetaY = ThetaY;}
36   Double_t GetZ(void) const {return fZ;}
37   void     SetZ(Double_t Z) {fZ = Z;}
38   Double_t GetBendingCoor(void) const {return fBendingCoor;}
39   void     SetBendingCoor(Double_t BendingCoor) {fBendingCoor = BendingCoor;}
40   Double_t GetNonBendingCoor(void) const {return fNonBendingCoor;}
41   void     SetNonBendingCoor(Double_t NonBendingCoor) {fNonBendingCoor = NonBendingCoor;}
42   
43  // Get and Set methods for data at first station
44   Double_t GetInverseBendingMomentumUncorrected(void) const {return fInverseBendingMomentumUncorrected;}
45   void     SetInverseBendingMomentumUncorrected(Double_t InverseBendingMomentum) 
46                 {fInverseBendingMomentumUncorrected = InverseBendingMomentum;}
47   Double_t GetThetaXUncorrected(void) const {return fThetaXUncorrected;}
48   void     SetThetaXUncorrected(Double_t ThetaX) {fThetaXUncorrected = ThetaX;}
49   Double_t GetThetaYUncorrected(void) const {return fThetaYUncorrected;}
50   void     SetThetaYUncorrected(Double_t ThetaY) {fThetaYUncorrected = ThetaY;}
51   Double_t GetZUncorrected(void) const {return fZUncorrected;}
52   void     SetZUncorrected(Double_t Z) {fZUncorrected = Z;}
53   Double_t GetBendingCoorUncorrected(void) const {return fBendingCoorUncorrected;}
54   void     SetBendingCoorUncorrected(Double_t BendingCoor) {fBendingCoorUncorrected = BendingCoor;}
55   Double_t GetNonBendingCoorUncorrected(void) const {return fNonBendingCoorUncorrected;}
56   void     SetNonBendingCoorUncorrected(Double_t NonBendingCoor) {fNonBendingCoorUncorrected = NonBendingCoor;}
57   
58  // Get and Set methods for global tracking info
59   Double_t GetChi2(void) const {return fChi2;}
60   void     SetChi2(Double_t Chi2) {fChi2 = Chi2;}
61   UInt_t   GetNHit(void) const {return fNHit;}
62   void     SetNHit(UInt_t NHit) {fNHit = NHit;}
63
64  // Get and Set methods for trigger matching
65   Int_t    GetMatchTrigger() const;
66   Double_t GetChi2MatchTrigger() const {return fChi2MatchTrigger;}
67   void     SetChi2MatchTrigger(Double_t Chi2MatchTrigger) {fChi2MatchTrigger = Chi2MatchTrigger;}
68   UShort_t GetHitsPatternInTrigCh() const {return fHitsPatternInTrigCh;}
69   void     SetHitsPatternInTrigCh(UShort_t hitsPatternInTrigCh) {fHitsPatternInTrigCh = hitsPatternInTrigCh;}
70   void     SetLocalTrigger(Int_t locTrig) { fLocalTrigger = locTrig; }
71   Int_t    LoCircuit(void) const
72   { Int_t circ = fLocalTrigger & 0xFF; return (circ == 234) ? -1 : circ; }
73   Int_t    LoStripX(void) const  { return fLocalTrigger >>  8 & 0x1F; }
74   Int_t    LoStripY(void) const  { return fLocalTrigger >> 13 & 0x0F; }
75   Int_t    LoDev(void)    const  { return fLocalTrigger >> 17 & 0x1F; }
76   Int_t    LoLpt(void)    const  { return fLocalTrigger >> 22 & 0x03; }
77   Int_t    LoHpt(void)    const  { return fLocalTrigger >> 24 & 0x03; }
78   
79  // Methods to compute track momentum
80   Double_t Px() const;
81   Double_t Py() const;
82   Double_t Pz() const;
83   Double_t P() const;
84   void     LorentzP(TLorentzVector& vP) const;
85   Double_t PxUncorrected() const;
86   Double_t PyUncorrected() const;
87   Double_t PzUncorrected() const;
88   Double_t PUncorrected() const;
89   void     LorentzPUncorrected(TLorentzVector& vP) const;
90   
91   // additional methods to comply with AliVParticle
92   Double_t Pt() const { return TMath::Sqrt(Px()*Px() + Py()*Py()); }
93   Double_t OneOverPt() const { return 1./Pt(); }
94   Double_t Phi() const { return TMath::ATan2(Py(), Px()); }
95   Double_t Theta() const { return TMath::ATan2(Pt(), Pz()); }
96   Double_t E() const { return -999.; }
97   Double_t M() const { return -999.; }
98   Double_t Eta() const { return -TMath::Log(TMath::Tan(0.5 * Theta()));}
99   Double_t Y() const { return -999.; }
100   Short_t Charge() const { return (Short_t)TMath::Sign(1., GetInverseBendingMomentum()); }
101   const Double_t *PID() const { return (Double_t*)0x0; }
102     
103   
104 protected:
105  // parameters at vertex
106   Double32_t fInverseBendingMomentum; // Inverse bending momentum (GeV/c ** -1) times the charge 
107   Double32_t fThetaX;               // Angle of track at vertex in X direction (rad)
108   Double32_t fThetaY;               // Angle of track at vertex in Y direction (rad)
109   Double32_t fZ;                            // Z coordinate (cm)
110   Double32_t fBendingCoor;          // bending coordinate (cm)
111   Double32_t fNonBendingCoor;       // non bending coordinate (cm)
112   
113  // parameters at first tracking station
114   Double32_t fInverseBendingMomentumUncorrected; // Inverse bending momentum (GeV/c ** -1) times the charge 
115   Double32_t fThetaXUncorrected;                       // Angle of track at vertex in X direction (rad)
116   Double32_t fThetaYUncorrected;                       // Angle of track at vertex in Y direction (rad)
117   Double32_t fZUncorrected;                    // Z coordinate (cm)
118   Double32_t fBendingCoorUncorrected;          // bending coordinate (cm)
119   Double32_t fNonBendingCoorUncorrected;               // non bending coordinate (cm)
120   
121  // global tracking info
122   Double32_t fChi2; // chi2 in the MUON track fit
123   UInt_t   fNHit; // number of hit in the track
124
125   Int_t fLocalTrigger;    ///< packed local trigger information
126   
127   Double32_t fChi2MatchTrigger; // chi2 of trigger/track matching
128   
129   UShort_t fHitsPatternInTrigCh; ///< Word containing info on the hits left in trigger chambers
130
131
132   ClassDef(AliESDMuonTrack,6)  //MUON ESD track class 
133 };
134
135 #endif