]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/src/AliL3Evaluate.h
Cosmetic changes for the integration of doxygen
[u/mrichter/AliRoot.git] / HLT / src / AliL3Evaluate.h
1 #ifndef ALIL3_Evaluate
2 #define ALIL3_Evaluate
3
4 #include <TObject.h>
5 #include <TH1.h>
6 #include <TTree.h>
7 #include <TNtuple.h>
8 #include "AliSimDigits.h"
9
10
11 struct GoodTrack 
12 {
13   Int_t label;
14   Double_t eta;
15   Int_t code;
16   Double_t px,py,pz;
17   Double_t pt;
18 };
19 typedef struct GoodTrack GoodTrack;
20
21
22 class AliL3Track;
23 class TClonesArray;
24 class TFile;
25 class AliL3TrackArray;
26 class AliL3SpacePointData;
27 class TH1F;
28 class AliL3Transform;
29 class AliTPCParam;
30 class TTree;
31 class AliSimDigits;
32 class TObjArray;
33 class TParticle;
34
35 class AliL3Evaluate : public TObject {
36
37  private:
38
39   TFile *fDigitsFile;
40   TFile *fMCclusterfile;  //If you run the fast simulator.
41   TFile *fEventFile;
42   GoodTrack fGoodTracks[15000]; //!
43   TObjArray *fParticles;
44   AliL3TrackArray *fTracks; //!
45   AliTPCParam *fParam;
46   AliL3SpacePointData *fClusters[36][6]; //!
47   AliL3Transform *fTransform; //!
48   AliSimDigits *fDigits;
49   TTree *fDigitsTree;
50   Int_t fMinSlice;
51   Int_t fMaxSlice;
52   UInt_t fNcl[36][6];
53   Int_t fRowid[36][176];
54   Int_t fMinPointsOnTrack;  //Minimum points on track to be considered.
55   Bool_t fIsSlow;
56   Bool_t fNoOverlap;
57   Int_t fNFastPoints;
58   UInt_t *fMcIndex;//!
59   Int_t *fMcId;//!
60   Int_t fGoodFound;
61   Int_t fGoodGen;
62   Double_t fMinGoodPt;
63
64   //Histograms
65   TNtuple *fNtuppel;
66   TH1F *fPtRes;
67   TH1F *fNGoodTracksPt;
68   TH1F *fNFoundTracksPt;
69   TH1F *fNFakeTracksPt;
70   TH1F *fTrackEffPt;
71   TH1F *fFakeTrackEffPt;
72   TH1F *fNGoodTracksEta;
73   TH1F *fNFoundTracksEta;
74   TH1F *fNFakeTracksEta;
75   TH1F *fTrackEffEta;
76   TH1F *fFakeTrackEffEta;
77   
78   void FillEffHistos();
79   void CalcEffHistos();
80   void AssignIDs();
81   Bool_t InitMC();
82   void DefineGoodTracks(Int_t *slice,Int_t *padrow,Int_t good_number,Char_t *fname="good_tracks_tpc");
83   Int_t GetMCTrackLabel(AliL3Track *track);
84   Int_t **GetClusterIDs(AliL3Track *track);
85   void GetFastClusterIDs(Char_t *path);
86   
87  public:
88   AliL3Evaluate();
89   AliL3Evaluate(Char_t *mcfile,Int_t *slice);
90   AliL3Evaluate(Int_t *slice);
91
92   virtual ~AliL3Evaluate();
93
94   void SetupFast(Char_t *trackfile,Char_t *mcClusterfile,Char_t *path=".");
95   void SetupSlow(Char_t *trackfile,Char_t *digitsfile,Char_t *path=".");
96   void Setup(Char_t *trackfile,Char_t *path);
97   void CreateHistos(Int_t nbin=20,Int_t xlow=0,Int_t xup=4);
98   void EvaluatePatch(Int_t slice,Int_t patch,Int_t min_points,Int_t good_number);
99   void EvaluateSlice(Int_t slice,Int_t min_points,Int_t good_number);
100   void EvaluateGlobal(Int_t min_points,Int_t good_number,Char_t *fname);
101   void Write2File(Char_t *outputfile);
102     
103   TH1F *GetTrackEffPt() {return fTrackEffPt;}
104   TH1F *GetTrackEffEta() {return fTrackEffEta;}
105   TH1F *GetPtRes() {return fPtRes;}
106
107   void SetMinPoints(Int_t f) {fMinPointsOnTrack = f;}
108   void SetMinGoodPt(Double_t f) {fMinGoodPt = f;}
109   void DoSingleTracks() {fNoOverlap = kTRUE;}
110   Int_t GetNGoodTracks() {return fGoodGen;}
111   Int_t GetNFoundTracks() {return fGoodFound;}
112   
113   TNtuple *CalculateResiduals();
114   TNtuple *EvaluatePoints(Char_t *rootfile);
115   Bool_t GetParticleCrossingPoint(TParticle *part,Int_t slice,Int_t padrow,Float_t *xyz);
116   void GetCFeff(Char_t *outfile);
117
118   ClassDef(AliL3Evaluate,1) //Tracking evaluation class
119 };
120
121 #endif