L3 becomes HLT
[u/mrichter/AliRoot.git] / HLT / comp / AliHLTClusterFitter.h
1 // @(#) $Id$
2
3 #ifndef AliHLT_ClusterFitter
4 #define AliHLT_ClusterFitter
5
6 #include "AliHLTModeller.h"
7 #include "AliHLTTransform.h"
8
9 class AliHLTModelTrack;
10 class AliHLTTrackArray;
11 class AliHLTSpacePointData;
12
13 class AliHLTClusterFitter : public AliHLTModeller {
14   
15  public:
16   AliHLTClusterFitter();
17   AliHLTClusterFitter(Char_t *path);
18   virtual ~AliHLTClusterFitter();
19   
20   void Init(Int_t slice,Int_t patch,Int_t *rowrange,AliHLTTrackArray *tracks);
21   void Init(Int_t slice,Int_t patch);
22   void LoadSeeds(Int_t *rowrange,Bool_t offline=kTRUE,Int_t eventnr=0,Float_t zvertex=0.0);
23   void LoadLocalSegments();
24   void FindClusters();
25   void AddClusters();
26   void WriteClusters(Bool_t global=kTRUE);
27   void WriteTracks(Int_t minHits);
28   void SetNmaxOverlaps(Int_t i) {fNmaxOverlaps=i;}
29   //void SetChiSqMax(Float_t f,Bool_t overlapping) {fChiSqMax[(Int_t)overlapping] = f;}
30   void SetChiSqMax(Float_t f,Int_t lpatch) {fChiSqMax[lpatch] = f;}
31   void SetInnerWidthFactor(Float_t y,Float_t z) {fYInnerWidthFactor=y; fZInnerWidthFactor=z;}
32   void SetOuterWidthFactor(Float_t y,Float_t z) {fYOuterWidthFactor=y; fZOuterWidthFactor=z;}
33   
34   Float_t GetYWidthFactor() const
35     {return fCurrentPadRow < AliHLTTransform::GetLastRow(1) ? fYInnerWidthFactor : fYOuterWidthFactor;}
36   Float_t GetZWidthFactor() const 
37     {return fCurrentPadRow < AliHLTTransform::GetLastRow(1) ? fZInnerWidthFactor : fZOuterWidthFactor;}
38   AliHLTTrackArray *GetSeeds() {return fSeeds;}
39   
40  private:
41   Int_t fNmaxOverlaps; // Max number of overlaps
42   Int_t fRowMin; // Minimal row number (?)
43   Int_t fRowMax; // Maximal row number (?)
44   Float_t fChiSqMax[3]; // Maximal chi2 (?)
45   Float_t fYInnerWidthFactor; // Inner width factor in Y
46   Float_t fZInnerWidthFactor; // Inner width factor in Z
47   Float_t fYOuterWidthFactor; // Outer width factor in Y
48   Float_t fZOuterWidthFactor; // Outer width factor in Z
49   Int_t fFitted; // Code for fitted (?)
50   Int_t fFailed; // Code for failed
51   static Int_t fgBadFitError; // Bad fit error
52   static Int_t fgFitError; // Fit Error
53   static Int_t fgResultError; // Result error
54   static Int_t fgFitRangeError; // Fit range error
55   Bool_t fSeeding; // Seeding (?)
56   Int_t fNMaxClusters; // Max number of clusters
57   Int_t fNClusters; // umver of clusters
58   Int_t fEvent; // Current event
59   AliHLTTrackArray *fSeeds; //! Array of seed
60   AliHLTTrackArray *fProcessTracks; //! Array of processed tracks
61   AliHLTSpacePointData *fClusters; //! Array of clusters
62   
63   void FitClusters(AliHLTModelTrack *track,Int_t *padrange,Int_t *timerange);
64   Bool_t CheckCluster(Int_t trackindex);
65   Bool_t IsMaximum(Int_t pad,Int_t time);
66   Bool_t SetFitRange(AliHLTModelTrack *track,Int_t *padrange,Int_t *timerange);
67   void SetClusterfitFalse(AliHLTModelTrack *track);
68   void CalculateWeightedMean(AliHLTModelTrack *track,Int_t *padrange,Int_t *timerange);
69   
70   ClassDef(AliHLTClusterFitter,1) 
71
72 };
73
74 typedef AliHLTClusterFitter AliL3ClusterFitter; // for backward compatibility
75
76 #endif