Update to the current version in the Bergen CVS. Most important
[u/mrichter/AliRoot.git] / HLT / comp / AliL3ModelTrack.h
1 // @(#) $Id$
2
3 #ifndef AliL3Model_Track
4 #define AliL3Model_Track
5
6 #include "AliL3Track.h"
7 #include "AliL3Models.h"
8
9 class AliL3ModelTrack : public AliL3Track {
10
11  private:
12   
13   Short_t fClusterCharge; //Average cluster charge
14   AliL3ClusterModel *fClusters; //!
15   AliL3TrackModel *fTrackModel; //!
16   Short_t fNClusters;
17   Int_t fMaxOverlaps;
18   Int_t *fNoverlaps; //!
19   Int_t **fOverlap; //!
20   Float_t *fParSigmaY2;    //!
21   Float_t *fParSigmaZ2;    //!
22   Float_t *fCrossingAngle; //!
23   Int_t fPatch;
24
25   //Crossing points with padrows
26   Float_t *fPad; //!
27   Float_t *fTime; //!
28   
29   Float_t QuantizePad(Int_t row,Float_t pad);
30   Float_t QuantizeTime(Int_t row,Float_t time);
31   Float_t QuantizeSigmaY2(Int_t row,Float_t dsigmaY2);
32   Float_t QuantizeSigmaZ2(Int_t row,Float_t dsigmaZ2);
33   Float_t RetrievePad(Int_t row,Float_t dpad);
34   Float_t RetrieveTime(Int_t row,Float_t time);
35   Float_t RetrieveSigmaY2(Int_t row,Float_t dsigmaY2);
36   Float_t RetrieveSigmaZ2(Int_t row,Float_t dsigmaZ2);
37   
38  public:
39   AliL3ModelTrack();
40   virtual ~AliL3ModelTrack();
41   
42   void Init(Int_t slice,Int_t patch);
43   void CalculateClusterWidths(Int_t row,Bool_t parametrize=kFALSE);
44   void SetCluster(Int_t row,Float_t dpad,Float_t dtime,Float_t charge,Float_t sigmaY2,Float_t sigmaZ2,Int_t npads);
45   void FillModel();
46   void FillTrack();
47   void Print(Bool_t everything=kTRUE);
48   void Set(AliL3Track *tpt);
49
50   void SetPadHit(Int_t row,Float_t f);
51   void SetTimeHit(Int_t row,Float_t f);
52   void SetCrossingAngleLUT(Int_t row,Float_t angle);
53   void SetOverlap(Int_t row,Int_t id);
54   void SetClusterLabel(Int_t row,Int_t *trackID);
55   void SetNClusters(Int_t i) {fNClusters = i;}
56   
57   Int_t GetNPresentClusters();
58   Bool_t IsPresent(Int_t row);
59   Bool_t IsSet(Int_t row);
60   
61   AliL3ClusterModel *GetClusters() {return fClusters;}
62   AliL3TrackModel *GetModel() {return fTrackModel;}
63   AliL3ClusterModel *GetClusterModel(Int_t row);
64   Int_t *GetOverlaps(Int_t row);
65   Int_t GetNOverlaps(Int_t row);
66   Int_t GetNPads(Int_t row);
67   Int_t GetSlice(Int_t row);
68   Float_t GetPadHit(Int_t row);
69   Float_t GetTimeHit(Int_t row);
70   Float_t GetCrossingAngleLUT(Int_t row);
71   Float_t GetParSigmaY2(Int_t row);
72   Float_t GetParSigmaZ2(Int_t row);
73   Bool_t GetPad(Int_t row,Float_t &pad);
74   Bool_t GetTime(Int_t row,Float_t &time);
75   Bool_t GetClusterCharge(Int_t row,Int_t &charge);
76   Bool_t GetXYWidth(Int_t row,Float_t &width);
77   Bool_t GetZWidth(Int_t row,Float_t &width);
78   Bool_t GetPadResidual(Int_t row,Float_t &res);
79   Bool_t GetTimeResidual(Int_t row,Float_t &res);
80   Bool_t GetXYWidthResidual(Int_t row,Float_t &res);
81   Bool_t GetZWidthResidual(Int_t row,Float_t &res);
82   Int_t GetNClusters() {return fNClusters;}
83   void GetClusterLabel(Int_t row,Int_t *trackID);
84     
85   ClassDef(AliL3ModelTrack,1)
86
87 };
88
89 #endif