Line data Source code
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 49232 : virtual ~AliKalmanTrack(){};
26 : AliKalmanTrack& operator=(const AliKalmanTrack &o);
27 51502 : 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 1462 : Bool_t IsSortable() const {return kTRUE;}
34 16698 : Int_t GetLabel() const {return fLab;}
35 297832 : Double_t GetChi2() const {return fChi2;}
36 354684 : Double_t GetMass() const {return fMass;}
37 1326300 : Int_t GetNumberOfClusters() const {return fN;}
38 : virtual Int_t GetClusterIndex(Int_t) const { //reserved for AliTracker
39 0 : AliWarning("Method must be overloaded !\n");
40 0 : return 0;
41 : }
42 : virtual Int_t GetNumberOfTracklets() const {
43 0 : AliWarning("Method must be overloaded !");
44 0 : return 0;
45 : }
46 : virtual Int_t GetTrackletIndex(Int_t) const { //reserved for AliTracker
47 0 : AliWarning("Method must be overloaded !");
48 0 : return -1;
49 : }
50 : virtual Double_t GetPIDsignal() const {
51 0 : AliWarning("Method must be overloaded !\n");
52 0 : return 0.;
53 : }
54 :
55 0 : virtual Int_t Compare(const TObject *) const {return 0;}
56 :
57 : void GetExternalParameters(Double_t &xr,Double_t p[5]) const {
58 127908 : xr=GetX();
59 767448 : for (Int_t i=0; i<5; i++) p[i]=GetParameter()[i];
60 63954 : }
61 : void GetExternalCovariance(Double_t cov[15]) const {
62 8250 : for (Int_t i=0; i<15; i++) cov[i]=GetCovariance()[i];
63 250 : }
64 :
65 : // Time integration (S.Radomski@gsi.de)
66 : void StartTimeIntegral();
67 2528 : void SetIntegratedLength(Double_t l) {fIntegratedLength=l;}
68 : void SetIntegratedTimes(const Double_t *times);
69 :
70 369828 : virtual Bool_t IsStartedTimeIntegral() const {return fStartTimeIntegral;}
71 : virtual void AddTimeStep(Double_t length);
72 : void GetIntegratedTimes(Double_t *times, Int_t nspec=AliPID::kSPECIESC) const;
73 : Double_t GetIntegratedTime(Int_t pdg) const;
74 69694 : Double_t GetIntegratedLength() const {return fIntegratedLength;}
75 :
76 235480 : void SetNumberOfClusters(Int_t n) {fN=n;}
77 :
78 9198 : void SetFakeRatio(Float_t ratio) {fFakeRatio=ratio;}
79 356 : Float_t GetFakeRatio() const {return fFakeRatio;}
80 3184 : void SetMass(Double_t mass) {fMass=mass;}
81 229616 : void SetChi2(Double_t chi2) {fChi2=chi2;}
82 :
83 : protected:
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::kSPECIESC]; // integrated time
95 : Double32_t fIntegratedLength; // integrated length
96 :
97 180 : ClassDef(AliKalmanTrack,8) // Reconstructed track
98 : };
99 :
100 : #endif
101 :
102 :
|