]>
Commit | Line | Data |
---|---|---|
4811a3f4 | 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 | |
075f4221 | 11 | // Origin: Marian.Ivanov@cern.ch |
4811a3f4 | 12 | //------------------------------------------------------------------------- |
13 | ||
14 | #include <TObject.h> | |
15 | #include <TGeoGlobalMagField.h> | |
16 | ||
17 | #include "AliMagF.h" | |
18 | ||
19 | class AliExternalTrackParam; | |
075f4221 | 20 | class AliTrackPoint; |
21 | class AliTrackPointArray; | |
4811a3f4 | 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 | |
43 | Double_t MeanMaterialBudget(const Double_t *start, const Double_t *end, | |
44 | Double_t *mparam); | |
45 | static | |
46 | Bool_t PropagateTrackTo(AliExternalTrackParam *track, Double_t x, Double_t m, | |
47 | Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8, Double_t sign=1.); | |
48 | static Bool_t PropagateTrackToBxByBz(AliExternalTrackParam *track, Double_t x, | |
49 | Double_t m, | |
50 | Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8,Double_t sign=1.); | |
51 | // | |
52 | static Double_t GetBz(const Double_t *r); | |
53 | static void GetBxByBz(const Double_t r[3], Double_t b[3]); | |
54 | static Double_t GetBz(); | |
075f4221 | 55 | static Bool_t UniformField(); |
56 | ||
57 | ||
58 | static Double_t MakeC(Double_t x1,Double_t y1, | |
59 | Double_t x2,Double_t y2, | |
60 | Double_t x3,Double_t y3); | |
61 | static Double_t MakeSnp(Double_t x1,Double_t y1, | |
62 | Double_t x2,Double_t y2, | |
63 | Double_t x3,Double_t y3); | |
64 | static Double_t MakeTgl(Double_t x1,Double_t y1, | |
65 | Double_t x2,Double_t y2, | |
66 | Double_t z1,Double_t z2); | |
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,Double_t c); | |
70 | static AliExternalTrackParam *MakeSeed(AliTrackPoint &point0, | |
71 | AliTrackPoint &point1, | |
72 | AliTrackPoint &point2); | |
73 | static Double_t FitTrack(AliExternalTrackParam *trackParam, | |
74 | AliTrackPointArray *pointArray, | |
75 | Double_t mass, Double_t maxStep); | |
4811a3f4 | 76 | // |
77 | ||
78 | protected: | |
79 | AliTrackerBase(const AliTrackerBase &atr); | |
80 | private: | |
81 | AliTrackerBase & operator=(const AliTrackerBase & atr); | |
82 | ||
83 | Double_t fX; //X-coordinate of the primary vertex | |
84 | Double_t fY; //Y-coordinate of the primary vertex | |
85 | Double_t fZ; //Z-coordinate of the primary vertex | |
86 | ||
87 | Double_t fSigmaX; // error of the primary vertex position in X | |
88 | Double_t fSigmaY; // error of the primary vertex position in Y | |
89 | Double_t fSigmaZ; // error of the primary vertex position in Z | |
90 | ||
91 | ClassDef(AliTrackerBase,1) //base tracker | |
92 | }; | |
93 | ||
94 | //__________________________________________________________________________ | |
95 | inline Bool_t AliTrackerBase::UniformField() | |
96 | { | |
97 | AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField(); | |
98 | return fld ? fld->IsUniform():kTRUE; | |
99 | } | |
100 | ||
101 | #endif |