]>
Commit | Line | Data |
---|---|---|
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 |