]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliKalmanTrack.h
A piece of new code to handle clusters constrained to planes arbitrarily oriented...
[u/mrichter/AliRoot.git] / STEER / AliKalmanTrack.h
1 #ifndef ALIKALMANTRACK_H
2 #define ALIKALMANTRACK_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 //-------------------------------------------------------------------------
10 //                          Class AliKalmanTrack
11 //      fixed the interface for the derived reconstructed track classes 
12 //            Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
13 //-------------------------------------------------------------------------
14
15 #include "AliExternalTrackParam.h"
16 #include "AliLog.h"
17 #include "AliPID.h"
18
19 class AliCluster;
20 class AliCluster3D;
21
22 class AliKalmanTrack : public AliExternalTrackParam {
23 public:
24   AliKalmanTrack();
25   AliKalmanTrack(const AliKalmanTrack &t);
26   virtual ~AliKalmanTrack(){};
27
28   void SetLabel(Int_t lab) {fLab=lab;}
29
30   virtual Double_t GetPredictedChi2(const AliCluster *c) const = 0;
31   virtual Double_t GetPredictedChi2(const AliCluster3D *c) const;
32   virtual Bool_t PropagateTo(Double_t xr, Double_t x0, Double_t rho) = 0;
33   virtual Bool_t Update(const AliCluster* c, Double_t chi2, Int_t index) = 0;
34
35   Bool_t   IsSortable() const {return kTRUE;}
36   Int_t    GetLabel()   const {return fLab;}
37   Double_t GetChi2()    const {return fChi2;}
38   Double_t GetMass()    const {return fMass;}
39   Int_t    GetNumberOfClusters() const {return fN;}
40   virtual Int_t GetClusterIndex(Int_t) const { //reserved for AliTracker
41     AliWarning("Method must be overloaded !\n");
42     return 0;
43   } 
44   virtual Double_t GetPIDsignal() const {
45     AliWarning("Method must be overloaded !\n");
46     return 0.;
47   }
48
49   virtual Int_t Compare(const TObject *) const {return 0;} 
50
51   void GetExternalParameters(Double_t &xr,Double_t p[5]) const {
52     xr=GetX();
53     for (Int_t i=0; i<5; i++) p[i]=GetParameter()[i];
54   }
55   void GetExternalCovariance(Double_t cov[15]) const {
56     for (Int_t i=0; i<15; i++) cov[i]=GetCovariance()[i];
57   }
58
59   static 
60   Double_t MeanMaterialBudget(Double_t *start,Double_t *end,Double_t *mparam);
61
62   // Time integration (S.Radomski@gsi.de)
63   void StartTimeIntegral();
64   void SetIntegratedLength(Double_t l) {fIntegratedLength=l;}
65   void SetIntegratedTimes(const Double_t *times);
66
67   Bool_t IsStartedTimeIntegral() const {return fStartTimeIntegral;}
68   void AddTimeStep(Double_t length);
69   void GetIntegratedTimes(Double_t *times) const;
70   Double_t GetIntegratedTime(Int_t pdg) const;
71   Double_t GetIntegratedLength() const {return fIntegratedLength;}
72
73   void SetNumberOfClusters(Int_t n) {fN=n;} 
74
75   void SetFakeRatio(Float_t ratio) {fFakeRatio=ratio;}
76   Float_t  GetFakeRatio()   const {return fFakeRatio;}
77   void SetMass(Double_t mass) {fMass=mass;}
78
79 protected:
80   void SetChi2(Double_t chi2) {fChi2=chi2;} 
81
82   Int_t fLab;             // track label
83   Float_t fFakeRatio;     // fake ratio
84   Double_t fChi2;         // total chi2 value for this track
85   Double_t fMass;         // mass hypothesis
86   Int_t fN;               // number of associated clusters
87
88 private:
89   // variables for time integration (S.Radomski@gsi.de)
90   Bool_t  fStartTimeIntegral;       // indicator wether integrate time
91   Double_t fIntegratedTime[AliPID::kSPECIES];       // integrated time
92   Double_t fIntegratedLength;        // integrated length
93   
94   ClassDef(AliKalmanTrack,6)    // Reconstructed track
95 };
96
97 #endif
98
99