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