L3 becomes HLT
[u/mrichter/AliRoot.git] / HLT / comp / AliHLTModelTrack.h
1 // @(#) $Id$
2
3 #ifndef AliHLTModel_Track
4 #define AliHLTModel_Track
5
6 #include "AliHLTTrack.h"
7 #include "AliHLTModels.h"
8
9 class AliHLTModelTrack : public AliHLTTrack {
10
11  public:
12   AliHLTModelTrack();
13   virtual ~AliHLTModelTrack();
14   
15   void Init(Int_t slice,Int_t patch);
16   void CalculateClusterWidths(Int_t row,Bool_t parametrize=kFALSE);
17   void SetCluster(Int_t row,Float_t dpad,Float_t dtime,Float_t charge,Float_t sigmaY2,Float_t sigmaZ2,Int_t npads);
18   void FillModel();
19   void FillTrack();
20   void Print(Bool_t everything=kTRUE);
21   void Set(AliHLTTrack *tpt);
22
23   void SetPadHit(Int_t row,Float_t f);
24   void SetTimeHit(Int_t row,Float_t f);
25   void SetCrossingAngleLUT(Int_t row,Float_t angle);
26   void SetOverlap(Int_t row,Int_t id);
27   void SetClusterLabel(Int_t row,Int_t *trackID);
28   void SetNClusters(Int_t i) {fNClusters = i;}
29   
30   Int_t GetNPresentClusters();
31   Bool_t IsPresent(Int_t row);
32   Bool_t IsSet(Int_t row);
33   
34   AliHLTClusterModel *GetClusters() {return fClusters;}
35   AliHLTTrackModel *GetModel() {return fTrackModel;}
36   AliHLTClusterModel *GetClusterModel(Int_t row);
37   Int_t *GetOverlaps(Int_t row);
38   Int_t GetNOverlaps(Int_t row);
39   Int_t GetNPads(Int_t row);
40   Int_t GetSlice(Int_t row);
41   Float_t GetPadHit(Int_t row);
42   Float_t GetTimeHit(Int_t row);
43   Float_t GetCrossingAngleLUT(Int_t row);
44   Float_t GetParSigmaY2(Int_t row);
45   Float_t GetParSigmaZ2(Int_t row);
46   Bool_t GetPad(Int_t row,Float_t &pad);
47   Bool_t GetTime(Int_t row,Float_t &time);
48   Bool_t GetClusterCharge(Int_t row,Int_t &charge);
49   Bool_t GetSigmaY2(Int_t row,Float_t &sigma2);
50   Bool_t GetSigmaZ2(Int_t row,Float_t &sigma2);
51   Bool_t GetPadResidual(Int_t row,Float_t &res);
52   Bool_t GetTimeResidual(Int_t row,Float_t &res);
53   Bool_t GetSigmaYResidual(Int_t row,Float_t &res);
54   Bool_t GetSigmaZResidual(Int_t row,Float_t &res);
55   Int_t GetNClusters() const {return fNClusters;}
56   void GetClusterLabel(Int_t row,Int_t *trackID);
57     
58  private:
59   
60   Short_t fClusterCharge; //Average cluster charge
61   AliHLTClusterModel *fClusters; //! Clusters
62   AliHLTTrackModel *fTrackModel; //! Track model
63   Short_t fNClusters; // Number of clusters
64   Int_t fMaxOverlaps; // Max overlaps (?)
65   Int_t *fNoverlaps; //! Number of overlaps
66   Int_t **fOverlap; //! Table of overlaps(?)
67   Float_t *fParSigmaY2;    //! Parameter SigmaY2 (?)
68   Float_t *fParSigmaZ2;    //! Parameter SigmaZ2 (?)
69   Float_t *fCrossingAngle; //! Crossing angle
70   Int_t fPatch; // Current patch
71   Bool_t fArraysCreated; // Flag if arrays were created
72
73   //Crossing points with padrows
74   Float_t *fPad;  //! Current pad
75   Float_t *fTime;  //! Current time
76   
77   void DeleteArrays();
78   
79   ClassDef(AliHLTModelTrack,1)
80
81 };
82
83 typedef AliHLTModelTrack AliL3ModelTrack; // for backward compatibility
84
85 #endif