9c16a37a2eac522cb887c695a0523b8caffc341d
[u/mrichter/AliRoot.git] / HLT / comp / AliL3Modeller.h
1 #ifndef AliL3_Modeller
2 #define AliL3_Modeller
3
4
5 #include "AliL3RootTypes.h"
6
7 class AliL3TrackArray;
8 class AliL3MemHandler;
9 class AliL3DigitRowData;
10 class AliL3Transform;
11 class AliL3ModelTrack;
12
13 struct Cluster {
14   UInt_t fCharge;
15   UInt_t fPad;
16   UInt_t fTime;
17   UInt_t fSigmaY2;
18   UInt_t fSigmaZ2;
19 };
20
21 struct Digit {
22   Short_t fCharge;
23   Bool_t fUsed;
24 };
25
26 class AliL3Modeller {
27   
28  private:
29   
30   AliL3TrackArray *fTracks; //!
31   AliL3MemHandler *fMemHandler; //!
32   AliL3DigitRowData *fRowData;//!
33   
34   AliL3Transform *fTransform; //!
35   Int_t fNClusters;
36   Int_t fMaxClusters;
37   
38   Float_t fPadOverlap;
39   Float_t fTimeOverlap;
40   Int_t fTrackThreshold; //minimum weigth track need in order to be included.(=Nhits/weight)
41   
42   Int_t fSlice;
43   Int_t fPatch;
44   
45   void FillCluster(AliL3ModelTrack *track,Cluster *cluster,Int_t row);
46   void CalcClusterWidth(Cluster *cl,Float_t &sigmaY2,Float_t &sigmaZ2);
47   void FillZeros(AliL3DigitRowData *digPt,Digit *row);
48
49  public:
50   
51   AliL3Modeller();
52   virtual ~AliL3Modeller();
53   
54   void Init(Int_t slice,Int_t patch,Char_t *path);
55   void FindClusters();
56   void CheckForOverlaps();
57   void CalculateCrossingPoints();
58   void WriteRemaining(Char_t *output);
59   
60   void SetInputData(AliL3DigitRowData *digits) {fRowData = digits;}
61   
62   AliL3TrackArray *GetTracks() {return fTracks;}
63     
64   ClassDef(AliL3Modeller,1) //Modeller class
65     
66 };
67
68 #endif