1 #ifndef ALITRDTRACKONLINE_H
2 #define ALITRDTRACKONLINE_H
7 #include "Math/IFunction.h"
8 #include "Math/Minimizer.h"
10 #include "AliTRDgeometry.h"
11 #include "AliTRDpadPlane.h"
13 class AliVTrdTracklet;
14 class AliTRDtrackPosition;
15 class AliTRDtrackOnline;
18 class AliTRDtrackParametrization : public TNamed
21 AliTRDtrackParametrization(const char* name = "", const char* title = "");
22 ~AliTRDtrackParametrization() {}
24 virtual void SetParams(ROOT::Math::Minimizer * minim) = 0;
25 virtual void GetParams(ROOT::Math::Minimizer * minim) = 0;
26 virtual void SetValues(const Double_t *par) = 0;
27 virtual Int_t GetNDim() const = 0;
29 virtual void UpdateTitle() {}
31 virtual AliTRDtrackPosition ExtrapolateToLayer(Int_t layer) = 0;
32 virtual AliTRDtrackPosition ExtrapolateToX(Float_t x) = 0;
34 Bool_t IsFitGood() const { return fFitGood; }
39 ClassDef(AliTRDtrackParametrization, 1);
43 class AliTRDtrackParametrizationStraightLine : public AliTRDtrackParametrization
46 AliTRDtrackParametrizationStraightLine();
47 AliTRDtrackParametrizationStraightLine(Double_t offsetY, Double_t slopeY,
48 Double_t offsetZ, Double_t slopeZ);
50 virtual void SetParams(ROOT::Math::Minimizer * minim);
51 virtual void GetParams(ROOT::Math::Minimizer * minim);
52 virtual void SetValues(const Double_t *par);
53 virtual Int_t GetNDim() const { return 4; }
55 AliTRDtrackPosition ExtrapolateToLayer(Int_t layer);
56 AliTRDtrackPosition ExtrapolateToX(Float_t x);
58 Double_t GetOffsetY() const { return fOffsetY; }
59 Double_t GetOffsetZ() const { return fOffsetZ; }
60 Double_t GetSlopeY() const { return fSlopeY; }
61 Double_t GetSlopeZ() const { return fSlopeZ; }
63 void Print(Option_t *option = "") const;
71 ClassDef(AliTRDtrackParametrizationStraightLine, 1);
75 class AliTRDtrackParametrizationCurved : public AliTRDtrackParametrization
78 AliTRDtrackParametrizationCurved();
80 virtual void SetParams(ROOT::Math::Minimizer * minim);
81 virtual void GetParams(ROOT::Math::Minimizer * minim);
82 virtual void SetValues(const Double_t *par);
83 virtual Int_t GetNDim() const { return 4; }
85 AliTRDtrackPosition ExtrapolateToLayer(Int_t layer);
86 AliTRDtrackPosition ExtrapolateToX(Float_t x);
88 Float_t GetY(Float_t x);
90 void Print(Option_t *option = "") const;
102 ClassDef(AliTRDtrackParametrizationCurved, 1);
106 class AliTRDtrackOnline : public TObject
110 ~AliTRDtrackOnline();
112 void AddTracklet(AliVTrdTracklet *trkl);
114 Bool_t Fit(ROOT::Math::Minimizer *minim);
116 Int_t GetNTracklets() const { return fNTracklets; }
117 AliVTrdTracklet* GetTracklet(Int_t i) const { return i < fNTracklets ? (AliVTrdTracklet*) fTracklets[i] : 0x0; }
119 AliTRDtrackPosition ExtrapolateToLayer(Int_t layer);
121 void AddParametrization(AliTRDtrackParametrization *param) { fTrackParametrizations.Add(param); }
122 const TList& GetParametrizations() const { return fTrackParametrizations; }
124 void Print(Option_t *option = "") const;
126 static Float_t GetX(AliVTrdTracklet *trkl) { return fgGeometry->GetTime0(trkl->GetDetector() % 6); }
127 static Float_t GetZ(AliVTrdTracklet *trkl) { return fgGeometry->GetPadPlane((trkl->GetDetector() % 6), (trkl->GetDetector()/6) % 5)->GetRowPos(trkl->GetBinZ()) -
128 fgGeometry->GetPadPlane((trkl->GetDetector() % 6), (trkl->GetDetector()/6) % 5)->GetRowSize(trkl->GetBinZ()); }
129 static AliTRDgeometry *fgGeometry;
132 static const Int_t fgkMaxTracklets = 10;
135 TObjArray fTracklets;
137 TList fTrackParametrizations;
139 ClassDef(AliTRDtrackOnline, 1);
143 class AliTRDtrackPosition : public TObject
146 AliTRDtrackPosition(Float_t y, Float_t z, Float_t dy = 0.);
147 ~AliTRDtrackPosition();
149 Float_t GetY() const { return fY; }
150 Float_t GetZ() const { return fZ; }
151 Float_t GetdY() const { return fDy; }
153 Float_t Distance(AliVTrdTracklet *trkl) const;
160 ClassDef(AliTRDtrackPosition, 1);
164 class AliTRDtrackResiduals : public ROOT::Math::IBaseFunctionMultiDim
167 AliTRDtrackResiduals(const AliTRDtrackOnline *track, AliTRDtrackParametrization *param);
168 AliTRDtrackResiduals(const AliTRDtrackResiduals &rhs);
169 AliTRDtrackResiduals& operator=(const AliTRDtrackResiduals &rhs);
170 ~AliTRDtrackResiduals() {}
172 AliTRDtrackResiduals* Clone() const;
173 UInt_t NDim() const { return fParam->GetNDim(); }
174 Double_t DoEval(const Double_t *par) const;
177 const AliTRDtrackOnline *fTrack; // reference to track being fitted
178 AliTRDtrackParametrization *fParam; // reference to the used parametrization
180 static AliTRDgeometry *fgGeometry;