]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/TPC/AliPerformanceEff.h
coverity fix
[u/mrichter/AliRoot.git] / PWG1 / TPC / AliPerformanceEff.h
1 #ifndef ALIPERFORMANCEEFF_H
2 #define ALIPERFORMANCEEFF_H
3
4 //------------------------------------------------------------------------------
5 // Class to keep information from comparison of 
6 // reconstructed and MC particle tracks (TPC efficiency).   
7 // 
8 // Author: J.Otwinowski 04/02/2008 
9 //------------------------------------------------------------------------------
10
11 class TFile;
12 class TParticle;
13 class TString;
14 class TNamed;
15 class THnSparse;
16 class AliMCInfo;
17 class AliESDRecInfo;
18 class AliESDEvent; 
19 class AliESDfriend; 
20 class AliMCEvent; 
21 class AliESDEvent; 
22 class AliMCParticle; 
23 class AliESDtrack;
24 class AliESD;
25 class AliRecInfoCuts;
26 class AliMCInfoCuts;
27 class AliESDVertex;
28
29 #include "AliPerformanceObject.h"
30
31 class AliPerformanceEff : public AliPerformanceObject {
32 public :
33   AliPerformanceEff(); 
34   AliPerformanceEff(Char_t* name, Char_t* title, Int_t analysisMode, Bool_t hptGenerator);
35   ~AliPerformanceEff();
36
37   // Init data members
38   virtual void Init();
39
40   // Execute analysis 
41   virtual void  Exec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent, AliESDfriend *const esdFriend, const Bool_t bUseMC, const Bool_t bUseESDfriend);
42
43   // Merge output objects (needed by PROOF) 
44   virtual Long64_t Merge(TCollection* const list);
45
46   // Analyse output histograms 
47   virtual void Analyse();
48
49   // Get analysis folder
50   virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
51
52   // Create folder for analysed histograms
53   TFolder *CreateFolder(TString folder = "folderEff",TString title = "Analysed Efficiency histograms");
54
55   // Export objects to folder
56   TFolder *ExportToFolder(TObjArray *array=0);
57
58   // Process events
59   void ProcessTPC(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
60   void ProcessTPCITS(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
61   void ProcessConstrained(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
62   void ProcessTPCSec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
63
64   Bool_t IsRecTPC(AliESDtrack *track);
65   Bool_t IsRecTPCITS(AliESDtrack *track);
66   Bool_t IsRecConstrained(AliESDtrack *track);
67
68   Bool_t IsFindable(const AliMCEvent *mcEvent, Int_t label);
69   Int_t TransformToPID(TParticle *particle);
70
71   // Selection cuts
72   void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;}
73   void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;} 
74   
75   // Getters
76   AliRecInfoCuts*  GetAliRecInfoCuts() const {return fCutsRC;} 
77   AliMCInfoCuts*   GetAliMCInfoCuts()  const {return fCutsMC;}
78
79   THnSparseF* GetEffHisto() const {return fEffHisto;}
80   THnSparseF* GetEffSecHisto() const {return fEffSecHisto;}
81
82 private:
83   
84   // Helper Method
85   TH1D* AddHistoEff(Int_t axis, const Char_t *name, const Char_t* vsTitle);
86
87   // Control histograms
88   THnSparseF *fEffHisto; //-> mceta:mcphi:mcpt:pid:isPrim:recStatus:findable:charge
89   THnSparseF *fEffSecHisto; //-> mceta:mcphi:mcpt:pid:isPrim:recStatus:findable:mcR:mother_phi:mother_eta:charge
90
91   // Global cuts objects
92   AliRecInfoCuts* fCutsRC;     // selection cuts for reconstructed tracks
93   AliMCInfoCuts*  fCutsMC;     // selection cuts for MC tracks
94
95   // analysis folder 
96   TFolder *fAnalysisFolder; // folder for analysed histograms
97
98   AliPerformanceEff(const AliPerformanceEff&); // not implemented
99   AliPerformanceEff& operator=(const AliPerformanceEff&); // not implemented
100
101   ClassDef(AliPerformanceEff,2);
102 };
103
104 #endif