]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/src/AliL3Evaluate.h
Introduction of the online monitoring code into the alimdc package. Fixed some memory...
[u/mrichter/AliRoot.git] / HLT / src / AliL3Evaluate.h
1 // @(#) $Id$
2
3 #ifndef ALIL3_Evaluate
4 #define ALIL3_Evaluate
5
6
7 class AliL3Track;
8 class TClonesArray;
9 class TFile;
10 class AliL3TrackArray;
11 class AliL3SpacePointData;
12 class TH1F;
13 class AliTPCParam;
14 class TTree;
15 class AliSimDigits;
16 class TObjArray;
17 class TParticle;
18 class AliL3FileHandler;
19 class TClonesArray;
20 class TNtuple;
21 class TH1F;
22 //#include <TNtuple.h>
23 //#include <TH1F.h>
24
25 class AliL3Evaluate {
26
27 struct AliGoodTrack 
28 {
29   Int_t flabel;  //label
30   Double_t feta; //eta
31   Int_t fcode;   //pcode
32   Double_t fpx,fpy,fpz; //momentum
33   Double_t fx,fy,fz;    //pos at entrance 
34   Int_t fnhits;  //nhits
35   Int_t fsector; //sector number
36 };
37 typedef struct AliGoodTrack AliGoodTrack;
38
39 struct AliS 
40 {
41   Int_t flab; //lab
42   Int_t fmax; //max
43 };
44 typedef struct AliS AliS;
45
46  private:
47
48   AliL3TrackArray *fTracks; //!
49   AliL3SpacePointData *fClusters[36][6]; //!
50   AliL3FileHandler *fClustersFile[36][6]; //!
51   Char_t fPath[1024];      //path
52   Int_t fMinSlice;         //min slice
53   Int_t fMaxSlice;         //max slice
54   UInt_t fNcl[36][6];      //cluster numbers
55   Int_t fRowid[36][176];   //row ids
56   Int_t fMinPointsOnTrack;    //minimum points on track to be considered.
57   Int_t fMinHitsFromParticle; //minimums hits a particle has to create
58   AliGoodTrack *fGoodTracks; //!
59   Float_t fMaxFalseClusters;  //maximum number of false assigned clusters
60   
61   Int_t fNFastPoints; //fast access to points
62   UInt_t *fMcIndex;//!
63   Int_t *fMcId;//!
64   Int_t fGoodFound;    //good found
65   Int_t fGoodGen;      //good generated found
66   Double_t fMinGoodPt; //min pt
67   Double_t fMaxGoodPt; //max pt
68   
69   //Histograms
70   TNtuple *fNtuppel;//!
71   TH1F *fPtRes;//!
72   TH1F *fNGoodTracksPt;//!
73   TH1F *fNFoundTracksPt;//!
74   TH1F *fNFakeTracksPt;//!
75   TH1F *fTrackEffPt;//!
76   TH1F *fFakeTrackEffPt;//!
77   TH1F *fNGoodTracksEta;//!
78   TH1F *fNFoundTracksEta;//!
79   TH1F *fNFakeTracksEta;//!
80   TH1F *fTrackEffEta;//!
81   TH1F *fFakeTrackEffEta;//!
82   TNtuple *fNtupleRes;//!
83   Bool_t fStandardComparison; // take standard macro
84   
85   void Clear();
86  public:
87   AliL3Evaluate();
88   AliL3Evaluate(Char_t *path,Int_t min_clusters,Int_t minhits,Double_t minpt=0.1,Double_t maxpt=4.,Int_t *slice=0);
89   virtual ~AliL3Evaluate();
90   
91   void LoadData(Int_t event=-1,Bool_t sp=kFALSE);
92   void CreateHistos(Int_t nbin=20,Float_t xlow=0,Float_t xup=4);
93   void Write2File(Char_t *outputfile);
94   void FillEffHistos();
95   void FillEffHistosNAIVE();
96   void CalcEffHistos();
97   void AssignPIDs();
98   void AssignIDs();
99   void GetGoodParticles(Char_t *particlefile,Int_t event=-1,Int_t *padrowrange=0);
100   void GetFastClusterIDs(Char_t *path);
101   void GetCFeff(Char_t *path,Char_t *outfile,Int_t nevent=0,Bool_t sp=kFALSE);
102   Int_t GetMCTrackLabel(AliL3Track *track);
103   Float_t GetTrackPID(AliL3Track *track);
104   void CalculateResiduals();
105   void EvaluatePoints(Char_t *rootfile,Char_t *exactfile,Char_t *tofile,Int_t nevent=1,Bool_t offline=kFALSE,Bool_t sp=kFALSE);
106   Float_t GetCrossingAngle(TParticle *part,Int_t slice,Int_t padrow,Float_t *xyz);
107   Int_t FindPrimaries(Int_t nparticles);
108   void SetMinPoints(Int_t f) {fMinPointsOnTrack = f;}
109   void SetMinGoodPt(Double_t f) {fMinGoodPt = f;}
110   void SetMaxFalseClusters(Float_t f) {fMaxFalseClusters = f;}
111   void SetStandardComparison(Bool_t b) {fStandardComparison = b;}  
112   TNtuple *GetNtuple();
113   Int_t GetNGoodTracks() const {return fGoodGen;}
114   Int_t GetNFoundTracks() const {return fGoodFound;}
115   TH1F *GetTrackEffPt() {return fTrackEffPt;}
116   TH1F *GetTrackEffEta() {return fTrackEffEta;}
117   TH1F *GetFakeEffEta() {return fFakeTrackEffEta;}
118   TH1F *GetFakeEffPt() {return fFakeTrackEffPt;}
119   TH1F *GetPtRes() {return fPtRes;}
120   AliL3TrackArray *GetTracks() {return fTracks;}
121   
122   ClassDef(AliL3Evaluate,1) //Tracking evaluation class
123 };
124
125 #endif