]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/ESD/AliTrackerBase.h
ALIROOT-5643 Detector AD. The list of detectors was reordered an EMPTY detector
[u/mrichter/AliRoot.git] / STEER / ESD / AliTrackerBase.h
1 #ifndef ALITRACKERBASE_H
2 #define ALITRACKERBASE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id: AliTrackerBase.h 38069 2009-12-24 16:56:18Z belikov $ */
7
8 //-------------------------------------------------------------------------
9 //                          class AliTrackerBase
10 //        This is the base tracker class, independent on STEER 
11 //                      Origin: Marian.Ivanov@cern.ch
12 //-------------------------------------------------------------------------
13
14 #include <TObject.h>
15 #include <TGeoGlobalMagField.h>
16
17 #include "AliMagF.h"
18
19 class AliExternalTrackParam;
20 class AliTrackPoint;
21 class AliTrackPointArray;
22
23 class AliTrackerBase : public TObject {
24 public:
25   AliTrackerBase();
26   virtual ~AliTrackerBase(){}
27
28   void SetVertex(const Double_t *xyz, const Double_t *ers=0) { 
29      fX=xyz[0]; fY=xyz[1]; fZ=xyz[2];
30      if (ers) { fSigmaX=ers[0]; fSigmaY=ers[1]; fSigmaZ=ers[2]; } 
31   }
32   Double_t GetX() const {return fX;}
33   Double_t GetY() const {return fY;}
34   Double_t GetZ() const {return fZ;}
35   Double_t GetSigmaX() const {return fSigmaX;}
36   Double_t GetSigmaY() const {return fSigmaY;}
37   Double_t GetSigmaZ() const {return fSigmaZ;}
38
39   static Double_t GetTrackPredictedChi2(AliExternalTrackParam *track,
40                                         Double_t mass, Double_t step, 
41                                   const AliExternalTrackParam *backup);
42   static void UpdateTrack(AliExternalTrackParam&, 
43                           const AliExternalTrackParam&);
44   static 
45   Double_t MeanMaterialBudget(const Double_t *start, const Double_t *end, 
46   Double_t *mparam);
47   static
48   Bool_t PropagateTrackTo(AliExternalTrackParam *track, Double_t x, Double_t m,
49                           Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8, Int_t sign=0, Bool_t addTimeStep=kFALSE, Bool_t correctMaterialBudget=kTRUE);
50   static Int_t PropagateTrackTo2(AliExternalTrackParam *track, Double_t x, Double_t m,
51                           Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8, Int_t sign=0, Bool_t addTimeStep=kFALSE, Bool_t correctMaterialBudget=kTRUE);
52   static Bool_t PropagateTrackToBxByBz(AliExternalTrackParam *track, Double_t x, 
53                                        Double_t m,Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8,Int_t sign=0, Bool_t addTimeStep=kFALSE);  
54   //
55   static Double_t GetBz(const Double_t *r);
56   static void GetBxByBz(const Double_t r[3], Double_t b[3]);
57   static Double_t GetBz();
58   static Bool_t UniformField();
59
60
61   static Double_t MakeC(Double_t x1,Double_t y1,
62                         Double_t x2,Double_t y2,
63                         Double_t x3,Double_t y3);
64   static Double_t MakeSnp(Double_t x1,Double_t y1,
65                         Double_t x2,Double_t y2,
66                         Double_t x3,Double_t y3);
67   static Double_t MakeTgl(Double_t x1,Double_t y1,
68                         Double_t x2,Double_t y2,
69                         Double_t z1,Double_t z2);
70   static Double_t MakeTgl(Double_t x1,Double_t y1,
71                         Double_t x2,Double_t y2,
72                         Double_t z1,Double_t z2,Double_t c);
73   static AliExternalTrackParam *MakeSeed(AliTrackPoint &point0, 
74                                          AliTrackPoint &point1, 
75                                          AliTrackPoint &point2);
76   static Double_t FitTrack(AliExternalTrackParam *trackParam, 
77                            AliTrackPointArray *pointArray, 
78                            Double_t mass, Double_t maxStep);  
79   //
80
81 protected:
82   AliTrackerBase(const AliTrackerBase &atr);
83 private:
84   AliTrackerBase & operator=(const AliTrackerBase & atr);
85
86   Double_t fX;  //X-coordinate of the primary vertex
87   Double_t fY;  //Y-coordinate of the primary vertex
88   Double_t fZ;  //Z-coordinate of the primary vertex
89  
90   Double_t fSigmaX; // error of the primary vertex position in X
91   Double_t fSigmaY; // error of the primary vertex position in Y
92   Double_t fSigmaZ; // error of the primary vertex position in Z
93   
94   ClassDef(AliTrackerBase,1) //base tracker
95 };
96
97 //__________________________________________________________________________
98 inline Bool_t AliTrackerBase::UniformField()
99 {
100   AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
101   return fld ? fld->IsUniform():kTRUE;
102 }
103
104 #endif