]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/TPC/AliPerformanceEff.h
dont create any files in place to avoid problems with eos
[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(const Char_t* name="AliPerformanceEff",const Char_t*title="AliPerformanceEff",Int_t analysisMode=0, Bool_t hptGenerator=kFALSE);
34   virtual ~AliPerformanceEff();
35
36   // Init data members
37   virtual void Init();
38
39   // Execute analysis 
40   virtual void  Exec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent, AliESDfriend *const esdFriend, const Bool_t bUseMC, const Bool_t bUseESDfriend);
41
42   // Merge output objects (needed by PROOF) 
43   virtual Long64_t Merge(TCollection* const list);
44
45   // Analyse output histograms 
46   virtual void Analyse();
47
48   // Get analysis folder
49   virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
50
51   // Create folder for analysed histograms
52   TFolder *CreateFolder(TString folder = "folderEff",TString title = "Analysed Efficiency histograms");
53
54   // Export objects to folder
55   TFolder *ExportToFolder(TObjArray *array=0);
56
57   // Process events
58   void ProcessTPC(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
59   void ProcessTPCITS(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
60   void ProcessConstrained(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
61   void ProcessTPCSec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
62
63   Bool_t IsRecTPC(AliESDtrack *track);
64   Bool_t IsRecTPCITS(AliESDtrack *track);
65   Bool_t IsRecConstrained(AliESDtrack *track);
66
67   Bool_t IsFindable(const AliMCEvent *mcEvent, Int_t label);
68   Int_t TransformToPID(TParticle *particle);
69
70   // Selection cuts
71   void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;}
72   void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;} 
73   
74   // Getters
75   AliRecInfoCuts*  GetAliRecInfoCuts() const {return fCutsRC;} 
76   AliMCInfoCuts*   GetAliMCInfoCuts()  const {return fCutsMC;}
77
78   THnSparseF* GetEffHisto() const {return fEffHisto;}
79   THnSparseF* GetEffSecHisto() const {return fEffSecHisto;}
80
81 private:
82
83   static const Int_t fgkMaxClones = 3, fgkMaxFakes = 3;
84   
85   // Helper Method
86   TH1D* AddHistoEff(Int_t axis, const Char_t *name, const Char_t* vsTitle, const Int_t type, const Int_t secondary = 0);
87
88   // Control histograms
89   THnSparseF *fEffHisto; //-> mceta:mcphi:mcpt:pid:isPrim:recStatus:findable:charge
90   THnSparseF *fEffSecHisto; //-> mceta:mcphi:mcpt:pid:isPrim:recStatus:findable:mcR:mother_phi:mother_eta:charge
91
92   // Global cuts objects
93   AliRecInfoCuts* fCutsRC;     // selection cuts for reconstructed tracks
94   AliMCInfoCuts*  fCutsMC;     // selection cuts for MC tracks
95
96   // analysis folder 
97   TFolder *fAnalysisFolder; // folder for analysed histograms
98
99   AliPerformanceEff(const AliPerformanceEff&); // not implemented
100   AliPerformanceEff& operator=(const AliPerformanceEff&); // not implemented
101
102   ClassDef(AliPerformanceEff,2);
103 };
104
105 #endif