- Three classes by MinJung Kweon AliHFEpriVtx, AliHFEsecVtx and AliHFEmcQA for primar...
[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
21 class AliKalmanTrack : public AliExternalTrackParam {
22 public:
23   AliKalmanTrack();
24   AliKalmanTrack(const AliKalmanTrack &t);
25   virtual ~AliKalmanTrack(){};
26   AliKalmanTrack& operator=(const AliKalmanTrack &o);
27   void SetLabel(Int_t lab) {fLab=lab;}
28
29   virtual Double_t GetPredictedChi2(const AliCluster *c) const = 0;
30   virtual Bool_t PropagateTo(Double_t xr, Double_t x0, Double_t rho) = 0;
31   virtual Bool_t Update(const AliCluster* c, Double_t chi2, Int_t index) = 0;
32
33   Bool_t   IsSortable() const {return kTRUE;}
34   Int_t    GetLabel()   const {return fLab;}
35   Double_t GetChi2()    const {return fChi2;}
36   Double_t GetMass()    const {return fMass;}
37   Int_t    GetNumberOfClusters() const {return fN;}
38   virtual Int_t GetClusterIndex(Int_t) const { //reserved for AliTracker
39     AliWarning("Method must be overloaded !\n");
40     return 0;
41   } 
42   virtual Int_t GetNumberOfTracklets() const {
43     AliWarning("Method must be overloaded !");
44     return 0;
45   }
46   virtual Int_t GetTrackletIndex(Int_t) const { //reserved for AliTracker
47     AliWarning("Method must be overloaded !");
48     return -1;
49   } 
50   virtual Double_t GetPIDsignal() const {
51     AliWarning("Method must be overloaded !\n");
52     return 0.;
53   }
54
55   virtual Int_t Compare(const TObject *) const {return 0;} 
56
57   void GetExternalParameters(Double_t &xr,Double_t p[5]) const {
58     xr=GetX();
59     for (Int_t i=0; i<5; i++) p[i]=GetParameter()[i];
60   }
61   void GetExternalCovariance(Double_t cov[15]) const {
62     for (Int_t i=0; i<15; i++) cov[i]=GetCovariance()[i];
63   }
64
65   // Time integration (S.Radomski@gsi.de)
66   void StartTimeIntegral();
67   void SetIntegratedLength(Double_t l) {fIntegratedLength=l;}
68   void SetIntegratedTimes(const Double_t *times);
69
70   Bool_t IsStartedTimeIntegral() const {return fStartTimeIntegral;}
71   void AddTimeStep(Double_t length);
72   void GetIntegratedTimes(Double_t *times) const;
73   Double_t GetIntegratedTime(Int_t pdg) const;
74   Double_t GetIntegratedLength() const {return fIntegratedLength;}
75
76   void SetNumberOfClusters(Int_t n) {fN=n;} 
77
78   void SetFakeRatio(Float_t ratio) {fFakeRatio=ratio;}
79   Float_t  GetFakeRatio()   const {return fFakeRatio;}
80   void SetMass(Double_t mass) {fMass=mass;}
81
82 protected:
83   void SetChi2(Double_t chi2) {fChi2=chi2;} 
84
85   Double32_t fFakeRatio;  // fake ratio
86   Double32_t fChi2;       // total chi2 value for this track
87   Double32_t fMass;       // mass hypothesis
88   Int_t fLab;             // track label
89   Int_t fN;               // number of associated clusters
90
91 private:
92   Bool_t  fStartTimeIntegral;       // indicator wether integrate time
93   // variables for time integration (S.Radomski@gsi.de)
94   Double32_t fIntegratedTime[AliPID::kSPECIES];       // integrated time
95   Double32_t fIntegratedLength;        // integrated length
96   
97   ClassDef(AliKalmanTrack,7)    // Reconstructed track
98 };
99
100 #endif
101
102