bc191e8c89390b076716ff10f2ec93f18ad74822
[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 x,y,z;
18   Int_t nhits;
19   Int_t sector;
20 };
21 typedef struct GoodTrack GoodTrack;
22
23
24 class AliL3Track;
25 class TClonesArray;
26 class TFile;
27 class AliL3TrackArray;
28 class AliL3SpacePointData;
29 class TH1F;
30 class AliTPCParam;
31 class TTree;
32 class AliSimDigits;
33 class TObjArray;
34 class TParticle;
35 class TNtupleD;
36
37 class AliL3Evaluate {
38
39  private:
40
41   AliL3TrackArray *fTracks; //!
42   AliTPCParam *fParam;
43   AliL3SpacePointData *fClusters[36][6]; //!
44   AliSimDigits *fDigits;
45   TTree *fDigitsTree;
46   Int_t fMinSlice;
47   Int_t fMaxSlice;
48   UInt_t fNcl[36][6];
49   Int_t fRowid[36][176];
50   Int_t fMinPointsOnTrack;  //Minimum points on track to be considered.
51   Int_t fMinHitsFromParticle;
52   GoodTrack *fGoodTracks; //!
53   Float_t fMaxFalseClusters;
54   
55   Int_t fNFastPoints;
56   UInt_t *fMcIndex;//!
57   Int_t *fMcId;//!
58   Int_t fGoodFound;
59   Int_t fGoodGen;
60   Double_t fMinGoodPt;
61
62   //Histograms
63   TNtuple *fNtuppel;
64   TH1F *fPtRes;
65   TH1F *fNGoodTracksPt;
66   TH1F *fNFoundTracksPt;
67   TH1F *fNFakeTracksPt;
68   TH1F *fTrackEffPt;
69   TH1F *fFakeTrackEffPt;
70   TH1F *fNGoodTracksEta;
71   TH1F *fNFoundTracksEta;
72   TH1F *fNFakeTracksEta;
73   TH1F *fTrackEffEta;
74   TH1F *fFakeTrackEffEta;
75   
76   
77   
78  public:
79   AliL3Evaluate();
80   AliL3Evaluate(Char_t *path,Int_t min_clusters,Int_t minhits,Double_t minpt=0.1,Int_t *slice=0);
81   virtual ~AliL3Evaluate();
82
83   void CreateHistos(Int_t nbin=20,Float_t xlow=0,Float_t xup=4);
84   void Write2File(Char_t *outputfile);
85   void FillEffHistos();
86   void FillEffHistosNAIVE();
87   void CalcEffHistos();
88   void AssignIDs();
89   void GetGoodParticles(Char_t *particle_file,Bool_t sector=kFALSE);
90   void GetFastClusterIDs(Char_t *path);
91   void GetCFeff(Char_t *outfile);
92   Int_t GetMCTrackLabel(AliL3Track *track);
93   TNtupleD *CalculateResiduals(Char_t *datapath);
94   TNtuple *EvaluatePoints(Char_t *rootfile);
95   
96   void SetMinPoints(Int_t f) {fMinPointsOnTrack = f;}
97   void SetMinGoodPt(Double_t f) {fMinGoodPt = f;}
98   void SetMaxFalseClusters(Float_t f) {fMaxFalseClusters = f;}
99
100   Int_t GetNGoodTracks() {return fGoodGen;}
101   Int_t GetNFoundTracks() {return fGoodFound;}
102   TH1F *GetTrackEffPt() {return fTrackEffPt;}
103   TH1F *GetTrackEffEta() {return fTrackEffEta;}
104   TH1F *GetFakeEffEta() {return fFakeTrackEffEta;}
105   TH1F *GetFakeEffPt() {return fFakeTrackEffPt;}
106   TH1F *GetPtRes() {return fPtRes;}
107
108   
109   ClassDef(AliL3Evaluate,1) //Tracking evaluation class
110 };
111
112 #endif