11 #include "AliL3DigitData.h"
12 #include "AliL3RootTypes.h"
14 class AliL3SpacePointData;
15 class AliL3DigitRowData;
16 class AliL3TrackSegmentData;
18 class AliL3ConfMapper;
20 class AliL3VertexFinder;
21 class AliL3TrackMerger;
22 class AliL3GlobalMerger;
26 class AliL3ClustFinderNew;
28 class AliL3InterMerger;
31 class AliL3FileHandler;
33 class AliL3MemHandler;
40 class AliLevel3 : public TObject {
45 AliL3TrackSegmentData* fTrackData; //!
46 AliL3ConfMapper *fTracker; //!
47 AliL3Vertex *fVertex; //!
48 AliL3VertexFinder *fVertexFinder; //!
49 AliL3TrackMerger *fTrackMerger; //!
50 AliL3GlobalMerger *fGlobalMerger; //!
51 AliL3InterMerger *fInterMerger; //!
52 AliL3ClustFinderNew *fClusterFinder; //!
54 //AliL3FileHandler *fFileHandler; //!
56 AliL3MemHandler *fFileHandler; //!
58 AliL3Benchmark *fBenchmark;//!
68 Char_t *fInputFile;//!
74 Char_t fWriteOutPath[256];
85 Bool_t fClusterDeconv;
86 Float_t fXYClusterError;
87 Float_t fZClusterError;
90 void WriteSpacePoints(UInt_t npoints,AliL3SpacePointData *points,
91 Int_t slice,Int_t patch);
92 Int_t WriteTracks(char *filename,AliL3Merger *merger,char opt='o');
94 void FitGlobalTracks();
95 void SetPath(char *p){sprintf(fPath,"%s",p);}
99 AliLevel3(Char_t *infile);
100 //AliLevel3(TFile *in);
101 virtual ~AliLevel3();
102 enum EFileType {kBinary, kBinary8, kRoot, kRaw};
103 void Init(Char_t *path,EFileType filetype=kBinary,Int_t npatches=6);
104 //void Init(Char_t *path,Bool_t binary=kTRUE,Int_t npatches=6);
105 void SetMergerParameters(Double_t maxy=1.2,Double_t maxz=1.6,Double_t maxkappa=0.003,
106 Double_t maxpsi=0.02,Double_t maxtgl=0.03);
107 void SetTrackerParam(Int_t phi_segments=50,Int_t eta_segments=100,
108 Int_t trackletlength=3,Int_t tracklength=5,
109 Int_t rowscopetracklet=2,Int_t rowscopetrack=3,
110 Double_t min_pt_fit=0,Double_t maxangle=1.31,
111 Double_t goodDist=5,Double_t hitChi2Cut=10,
112 Double_t goodHitChi2=20,Double_t trackChi2Cut=50,
113 Int_t maxdist=50,Double_t maxphi=0.1,Double_t maxeta=0.1,
114 Bool_t vertexconstraint=kTRUE);
115 void SetClusterFinderParam(Float_t fXYError=0.2,Float_t fZError=0.3,Bool_t deconv=kTRUE);
117 void ProcessEvent(Int_t first,Int_t last,Int_t event=0);
118 void ProcessSlice(Int_t slice);
120 void DoMc(char* file="point_mc.dat");
121 void DoNonVertexTracking() {fDoNonVertex=kTRUE;}
122 void FindVertex() {fFindVertex=kTRUE;}
123 void DoBench(char* name="benchmark");
124 void DoPileup() {fPileUp = kTRUE;}
125 void NoCF() {fNoCF=kTRUE;}
126 void DoRoi(Float_t e0=0.4,Float_t e1=0.5){fEta[0]=e0;fEta[1]=e1;fDoRoi=kTRUE;}
127 void WriteFiles(Char_t *path="./"){fWriteOut = kTRUE; sprintf(fWriteOutPath,"%s",path);}
128 //void UseBinaryInput(char *path){SetPath(path);fUseBinary=kTRUE;}
130 ClassDef(AliLevel3,1) //Interface class for Level3-tracking