]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/src/AliL3Evaluate.h
Major changes in the AliL3Transform class. The class has been made completely
[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 AliTPCParam;
29 class TTree;
30 class AliSimDigits;
31 class TObjArray;
32 class TParticle;
33
34 class AliL3Evaluate : public TObject {
35
36  private:
37
38   TFile *fDigitsFile;
39   TFile *fMCclusterfile;  //If you run the fast simulator.
40   TFile *fEventFile;
41   GoodTrack fGoodTracks[15000]; //!
42   TObjArray *fParticles;
43   AliL3TrackArray *fTracks; //!
44   AliTPCParam *fParam;
45   AliL3SpacePointData *fClusters[36][6]; //!
46   AliSimDigits *fDigits;
47   TTree *fDigitsTree;
48   Int_t fMinSlice;
49   Int_t fMaxSlice;
50   UInt_t fNcl[36][6];
51   Int_t fRowid[36][176];
52   Int_t fMinPointsOnTrack;  //Minimum points on track to be considered.
53   Bool_t fIsSlow;
54   Bool_t fNoOverlap;
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   void FillEffHistos();
77   void CalcEffHistos();
78   void AssignIDs();
79   Bool_t InitMC();
80   void DefineGoodTracks(Int_t *slice,Int_t *padrow,Int_t good_number,Char_t *fname="good_tracks_tpc");
81   Int_t GetMCTrackLabel(AliL3Track *track);
82   Int_t **GetClusterIDs(AliL3Track *track);
83   void GetFastClusterIDs(Char_t *path);
84   
85  public:
86   AliL3Evaluate();
87   AliL3Evaluate(Char_t *mcfile,Int_t *slice);
88   AliL3Evaluate(Int_t *slice);
89
90   virtual ~AliL3Evaluate();
91
92   void SetupFast(Char_t *trackfile,Char_t *mcClusterfile,Char_t *path=".");
93   void SetupSlow(Char_t *trackfile,Char_t *digitsfile,Char_t *path=".");
94   void Setup(Char_t *trackfile,Char_t *path);
95   void CreateHistos(Int_t nbin=20,Int_t xlow=0,Int_t xup=4);
96   void EvaluatePatch(Int_t slice,Int_t patch,Int_t min_points,Int_t good_number);
97   void EvaluateSlice(Int_t slice,Int_t min_points,Int_t good_number);
98   void EvaluateGlobal(Int_t min_points,Int_t good_number,Char_t *fname);
99   void Write2File(Char_t *outputfile);
100     
101   TH1F *GetTrackEffPt() {return fTrackEffPt;}
102   TH1F *GetTrackEffEta() {return fTrackEffEta;}
103   TH1F *GetPtRes() {return fPtRes;}
104
105   void SetMinPoints(Int_t f) {fMinPointsOnTrack = f;}
106   void SetMinGoodPt(Double_t f) {fMinGoodPt = f;}
107   void DoSingleTracks() {fNoOverlap = kTRUE;}
108   Int_t GetNGoodTracks() {return fGoodGen;}
109   Int_t GetNFoundTracks() {return fGoodFound;}
110   
111   TNtuple *CalculateResiduals();
112   TNtuple *EvaluatePoints(Char_t *rootfile);
113   Bool_t GetParticleCrossingPoint(TParticle *part,Int_t slice,Int_t padrow,Float_t *xyz);
114   void GetCFeff(Char_t *outfile);
115
116   ClassDef(AliL3Evaluate,1) //Tracking evaluation class
117 };
118
119 #endif