- use_newio switch removed from libAliHLTTPC, always on; not removed in
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPC.h
1 // @(#) $Id$
2 // Original: AliLevel3.h,v 1.24 2004/06/11 16:06:33 loizides 
3
4 #ifndef ALIHLTTPC_H
5 #define ALIHLTTPC_H
6
7 #ifndef no_root
8 #include <TObject.h>
9 #include <TFile.h>
10 #endif
11
12 class AliRunLoader;
13
14 #include "AliHLTTPCDigitData.h"
15 #include "AliHLTTPCRootTypes.h"
16
17 class AliHLTTPCSpacePointData;
18 class AliHLTTPCDigitRowData;
19 class AliHLTTPCTrackSegmentData;
20 class AliHLTTPCDigitData;
21 class AliHLTTPCConfMapper;
22 class AliHLTTPCVertex;
23 class AliHLTTPCVertexFinder;
24 class AliHLTTPCTrackMerger;
25 class AliHLTTPCGlobalMerger;
26 #ifndef no_root
27 class TDirectory;
28 #endif
29 class AliHLTTPCClusterFinder;
30 class AliHLTTPCDigitReaderUnpacked;
31 class AliHLTTPCMerger;
32 class AliHLTTPCInterMerger;
33 class AliHLTTPCFileHandler;
34 class AliHLTTPCMemHandler;
35 class AliHLTTPCBenchmark;
36
37 #ifdef no_root
38 class AliHLTTPC {
39 #else
40 class AliHLTTPC : public TObject {
41 #endif
42
43  private:
44   UInt_t fNTrackData; //count data
45   AliHLTTPCTrackSegmentData* fTrackData; //!
46   AliHLTTPCConfMapper *fTracker; //!
47   AliHLTTPCVertex *fVertex; //! 
48   AliHLTTPCVertexFinder *fVertexFinder; //!
49   AliHLTTPCTrackMerger *fTrackMerger; //!
50   AliHLTTPCGlobalMerger *fGlobalMerger; //!
51   AliHLTTPCInterMerger *fInterMerger; //!
52   AliHLTTPCClusterFinder *fClusterFinder; //! 
53   AliHLTTPCDigitReaderUnpacked* fDigitReader; //!
54   AliHLTTPCMemHandler *fFileHandler; //!
55   AliHLTTPCBenchmark *fBenchmark;//!
56
57   Int_t fEvent;    //event number
58   Int_t fNPatch;   //number of patches
59   Int_t fRow[6][2];//rows
60   Float_t fEta[2]; //eta
61   
62   Char_t *fInputFile;//!
63   AliRunLoader *fRunLoader; //runloader
64   Char_t fPath[256]; //path to aliroot
65   Char_t fWriteOutPath[256]; //path to store
66   
67   Bool_t fDoRoi; //do region of interest
68   Bool_t fFindVertex; //find vertex
69   Bool_t fDoNonVertex;//do non vertex pass
70   Bool_t fPileUp; //do pileup
71   Bool_t fNoCF; //dont do cluster finder
72   
73   Bool_t fUseBinary; //use binary input
74   Bool_t fWriteOut; //write tracks
75   
76   static Bool_t fgDoVertexFit; //do vertex fix
77
78   Bool_t fClusterDeconv; //do cluster deconv
79   Float_t fXYClusterError; //Cluster error
80   Float_t fZClusterError; //Cluster error
81
82   void WriteSpacePoints(UInt_t npoints,AliHLTTPCSpacePointData *points,
83                         Int_t slice,Int_t patch) const;
84   Int_t WriteTracks(char *filename,AliHLTTPCMerger *merger,char opt='o') const;  
85   void WriteResults();
86   void FitGlobalTracks();
87   void SetPath(char *p){sprintf(fPath,"%s",p);}
88
89  public:
90   AliHLTTPC ();
91   AliHLTTPC(Char_t *infile);
92   AliHLTTPC(AliRunLoader *rl);
93   virtual ~AliHLTTPC();
94   enum EFileType {kBinary, kBinary8, kRoot, kRaw, kDate, kRunLoader};
95   void Init(Char_t *path,EFileType filetype=kBinary,Int_t npatches=6);
96   void SetMergerParameters(Double_t maxy=1.2,Double_t maxz=1.6,Double_t maxkappa=0.003,
97                            Double_t maxpsi=0.02,Double_t maxtgl=0.03);
98   void SetTrackerParam(Int_t phi_segments=50,Int_t eta_segments=100,
99                        Int_t trackletlength=3,Int_t tracklength=5,
100                        Int_t rowscopetracklet=2,Int_t rowscopetrack=3,
101                        Double_t min_pt_fit=0,Double_t maxangle=1.31,
102                        Double_t goodDist=5,Double_t hitChi2Cut=10,
103                        Double_t goodHitChi2=20,Double_t trackChi2Cut=50,
104                        Int_t maxdist=50,Double_t maxphi=0.1,Double_t maxeta=0.1,
105                        Bool_t vertexconstraint=kTRUE);
106   void SetClusterFinderParam(Float_t fXYError=0.2,Float_t fZError=0.3,Bool_t deconv=kTRUE);
107
108   void ProcessEvent(Int_t first,Int_t last,Int_t event=0);
109   void ProcessSlice(Int_t slice);
110
111   void DoMc(char* file="point_mc.dat");
112   void DoNonVertexTracking() {fDoNonVertex=kTRUE;}
113   void FindVertex() {fFindVertex=kTRUE;}
114   void DoBench(char* name="benchmark");
115   void DoPileup() {fPileUp = kTRUE;}
116   void NoCF() {fNoCF=kTRUE;}
117   void DoRoi(Float_t e0=0.4,Float_t e1=0.5){fEta[0]=e0;fEta[1]=e1;fDoRoi=kTRUE;}
118   void WriteFiles(Char_t *path="./"){fWriteOut = kTRUE; sprintf(fWriteOutPath,"%s",path);}
119   
120   static void SetVertexFit(Bool_t f)   {fgDoVertexFit=f;}
121   static Bool_t DoVertexFit()          {return fgDoVertexFit;}
122
123   ClassDef(AliHLTTPC,1) //Interface class for HLTTPC-tracking
124 };
125
126 #endif
127
128
129
130
131