]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/src/AliLevel3.h
Added virtual function Init for setting the slice, patch and n_eta_seg information...
[u/mrichter/AliRoot.git] / HLT / src / AliLevel3.h
1 #ifndef ALILEVEL3_H
2 #define ALILEVEL3_H
3
4 #ifndef no_root
5 #include <TObject.h>
6 #include <TFile.h>
7 #endif
8
9 #include "AliL3DigitData.h"
10 #include "AliL3RootTypes.h"
11
12 class AliL3SpacePointData;
13 class AliL3DigitRowData;
14 class AliL3TrackSegmentData;
15 class AliL3DigitData;
16 class AliL3ConfMapper;
17 class AliL3Vertex;
18 class AliL3VertexFinder;
19 class AliL3TrackMerger;
20 class AliL3GlobalMerger;
21 #ifndef no_root
22 class TDirectory;
23 #endif
24 class AliL3ClustFinderNew;
25 class AliL3Merger;
26 class AliL3InterMerger;
27
28 #ifdef use_aliroot
29 class AliL3FileHandler;
30 #else
31 class AliL3MemHandler;
32 #endif
33 class AliL3Benchmark;
34
35 #ifdef no_root
36 class AliLevel3 {
37 #else
38 class AliLevel3 : public TObject {
39 #endif
40
41  private:
42   UInt_t fNTrackData;
43   AliL3TrackSegmentData* fTrackData; //!
44   AliL3ConfMapper *fTracker; //!
45   AliL3Vertex *fVertex; //! 
46   AliL3VertexFinder *fVertexFinder; //!
47   AliL3TrackMerger *fTrackMerger; //!
48   AliL3GlobalMerger *fGlobalMerger; //!
49   AliL3InterMerger *fInterMerger; //!
50   AliL3ClustFinderNew *fClusterFinder; //! 
51 #ifdef use_aliroot
52   AliL3FileHandler *fFileHandler; //!
53 #else
54   AliL3MemHandler *fFileHandler; //!
55 #endif
56   AliL3Benchmark *fBenchmark;//!
57
58   Int_t fEvent;
59   Int_t fNPatch;
60   Int_t fRow[6][2];
61   Float_t fEta[2];
62   
63 #ifdef no_root
64   FILE *fInputFile;
65 #else
66   TDirectory *savedir;
67   TFile *fInputFile;
68 #endif
69
70   Char_t fPath[256];
71   Char_t fWriteOutPath[256];
72
73   Bool_t fDoRoi;
74   Bool_t fFindVertex;
75   Bool_t fDoNonVertex;
76
77   Bool_t fUseBinary;
78   Bool_t fWriteOut;
79
80   Bool_t fClusterDeconv;
81   Float_t fXYClusterError;
82   Float_t fZClusterError;
83
84
85   void WriteSpacePoints(UInt_t npoints,AliL3SpacePointData *points,
86                                           Int_t slice,Int_t patch);
87   Int_t WriteTracks(char *filename,AliL3Merger *merger,char opt='o');  
88   void WriteResults();
89
90   void SetPath(char *p){sprintf(fPath,"%s",p);}
91
92  public:
93   AliLevel3 ();
94   AliLevel3(Char_t *infile);
95 #ifndef no_root
96   AliLevel3(TFile *in);
97 #endif
98   virtual ~AliLevel3();
99   
100   void Init(Char_t *path,Bool_t binary=kTRUE,Int_t npatches=6);
101   void SetTrackerParam(Int_t phi_segments=50,Int_t eta_segments=100,
102                        Int_t trackletlength=3,Int_t tracklength=5,
103                        Int_t rowscopetracklet=2,Int_t rowscopetrack=3,
104                        Double_t min_pt_fit=0,Double_t maxangle=1.31,
105                        Double_t goodDist=5,Double_t hitChi2Cut=10,
106                        Double_t goodHitChi2=20,Double_t trackChi2Cut=50,
107                        Int_t maxdist=50,Double_t maxphi=0.1,Double_t maxeta=0.1,
108                        Bool_t vertexconstraint=kTRUE);
109   void SetClusterFinderParam(Float_t fXYError=0.2,Float_t fZError=0.3,Bool_t deconv=kTRUE);
110
111   void ProcessEvent(Int_t first,Int_t last,Int_t event=0);
112   void ProcessSlice(Int_t slice);
113
114   void DoMc(char* file="point_mc.dat");
115   void DoNonVertexTracking() {fDoNonVertex=kTRUE;}
116   void FindVertex() {fFindVertex=kTRUE;}
117   void DoBench(char* name="benchmark");
118   void DoRoi(Float_t e0=0.4,Float_t e1=0.5){fEta[0]=e0;fEta[1]=e1;fDoRoi=kTRUE;}
119   void WriteFiles(Char_t *path="./"){fWriteOut = kTRUE; sprintf(fWriteOutPath,"%s",path);}
120   //void UseBinaryInput(char *path){SetPath(path);fUseBinary=kTRUE;}
121
122   ClassDef(AliLevel3,1) //Interface class for Level3-tracking
123 };
124
125 #endif
126
127
128
129
130