]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/TPC/AliPerformanceEff.h
Coverity fix
[u/mrichter/AliRoot.git] / PWGPP / 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   static const Int_t fgkMaxClones = 3, fgkMaxFakes = 3;
85   
86   // Helper Method
87   TH1D* AddHistoEff(Int_t axis, const Char_t *name, const Char_t* vsTitle, const Int_t type, const Int_t secondary = 0);
88
89   // Control histograms
90   THnSparseF *fEffHisto; //-> mceta:mcphi:mcpt:pid:isPrim:recStatus:findable:charge
91   THnSparseF *fEffSecHisto; //-> mceta:mcphi:mcpt:pid:isPrim:recStatus:findable:mcR:mother_phi:mother_eta:charge
92
93   // Global cuts objects
94   AliRecInfoCuts* fCutsRC;     // selection cuts for reconstructed tracks
95   AliMCInfoCuts*  fCutsMC;     // selection cuts for MC tracks
96
97   // analysis folder 
98   TFolder *fAnalysisFolder; // folder for analysed histograms
99
100   AliPerformanceEff(const AliPerformanceEff&); // not implemented
101   AliPerformanceEff& operator=(const AliPerformanceEff&); // not implemented
102
103   ClassDef(AliPerformanceEff,2);
104 };
105
106 #endif