Line data Source code
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 32 : virtual ~AliTrackerBase(){}
27 :
28 : void SetVertex(const Double_t *xyz, const Double_t *ers=0) {
29 116 : fX=xyz[0]; fY=xyz[1]; fZ=xyz[2];
30 116 : if (ers) { fSigmaX=ers[0]; fSigmaY=ers[1]; fSigmaZ=ers[2]; }
31 58 : }
32 20040 : Double_t GetX() const {return fX;}
33 20040 : Double_t GetY() const {return fY;}
34 54988 : Double_t GetZ() const {return fZ;}
35 784 : Double_t GetSigmaX() const {return fSigmaX;}
36 784 : Double_t GetSigmaY() const {return fSigmaY;}
37 784 : Double_t GetSigmaZ() const {return fSigmaZ;}
38 :
39 32 : UInt_t GetTimeStamp() const {return fTimeStamp;}
40 32 : Int_t GetRunNumber() const {return fRun;}
41 112 : void SetTimeStamp(UInt_t t) {fTimeStamp = t;}
42 112 : void SetRunNumber(int run) {fRun = run;}
43 :
44 : static Double_t GetTrackPredictedChi2(AliExternalTrackParam *track,
45 : Double_t mass, Double_t step,
46 : const AliExternalTrackParam *backup);
47 : static void UpdateTrack(AliExternalTrackParam&,
48 : const AliExternalTrackParam&);
49 : static
50 : Double_t MeanMaterialBudget(const Double_t *start, const Double_t *end,
51 : Double_t *mparam);
52 : static
53 : Bool_t PropagateTrackTo(AliExternalTrackParam *track, Double_t x, Double_t m,
54 : Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8, Int_t sign=0, Bool_t addTimeStep=kFALSE, Bool_t correctMaterialBudget=kTRUE);
55 : static Int_t PropagateTrackTo2(AliExternalTrackParam *track, Double_t x, Double_t m,
56 : Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8, Int_t sign=0, Bool_t addTimeStep=kFALSE, Bool_t correctMaterialBudget=kTRUE);
57 : static Bool_t PropagateTrackToBxByBz(AliExternalTrackParam *track, Double_t x, Double_t m,Double_t maxStep, Bool_t rotateTo=kTRUE,
58 : Double_t maxSnp=0.8,Int_t sign=0, Bool_t addTimeStep=kFALSE,Bool_t correctMaterialBudget=kTRUE);
59 : //
60 : static Bool_t PropagateTrackParamOnlyToBxByBz(AliExternalTrackParam *track,Double_t xToGo,Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8);
61 : static Bool_t PropagateTrackParamOnlyTo(AliExternalTrackParam *track,Double_t xToGo,Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8);
62 :
63 : static Double_t GetBz(const Double_t *r);
64 : static void GetBxByBz(const Double_t r[3], Double_t b[3]);
65 : static Double_t GetBz();
66 : static Bool_t UniformField();
67 :
68 :
69 : static Double_t MakeC(Double_t x1,Double_t y1,
70 : Double_t x2,Double_t y2,
71 : Double_t x3,Double_t y3);
72 : static Double_t MakeSnp(Double_t x1,Double_t y1,
73 : Double_t x2,Double_t y2,
74 : Double_t x3,Double_t y3);
75 : static Double_t MakeTgl(Double_t x1,Double_t y1,
76 : Double_t x2,Double_t y2,
77 : Double_t z1,Double_t z2);
78 : static Double_t MakeTgl(Double_t x1,Double_t y1,
79 : Double_t x2,Double_t y2,
80 : Double_t z1,Double_t z2,Double_t c);
81 : static AliExternalTrackParam *MakeSeed(AliTrackPoint &point0,
82 : AliTrackPoint &point1,
83 : AliTrackPoint &point2);
84 : static Double_t FitTrack(AliExternalTrackParam *trackParam,
85 : AliTrackPointArray *pointArray,
86 : Double_t mass, Double_t maxStep);
87 : //
88 :
89 : protected:
90 : AliTrackerBase(const AliTrackerBase &atr);
91 : private:
92 : AliTrackerBase & operator=(const AliTrackerBase & atr);
93 :
94 : Double_t fX; //X-coordinate of the primary vertex
95 : Double_t fY; //Y-coordinate of the primary vertex
96 : Double_t fZ; //Z-coordinate of the primary vertex
97 :
98 : Double_t fSigmaX; // error of the primary vertex position in X
99 : Double_t fSigmaY; // error of the primary vertex position in Y
100 : Double_t fSigmaZ; // error of the primary vertex position in Z
101 : UInt_t fTimeStamp; // event time stamp
102 : Int_t fRun; // run number
103 :
104 172 : ClassDef(AliTrackerBase,2) //base tracker
105 : };
106 :
107 : //__________________________________________________________________________
108 : inline Bool_t AliTrackerBase::UniformField()
109 : {
110 0 : AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
111 0 : return fld ? fld->IsUniform():kTRUE;
112 : }
113 :
114 : #endif
|