]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/AliPerformanceEff.h
Prototype of the QA analysis mini-train. It uses AliAnalysisTaskCosmic from PWG1...
[u/mrichter/AliRoot.git] / PWG1 / 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   // Control histograms
85   THnSparseF *fEffHisto; //-> mceta:mcphi:mcpt:pid:isPrim:recStatus:findable
86   THnSparseF *fEffSecHisto; //-> mceta:mcphi:mcpt:pid:isPrim:recStatus:findable:mcR:mother_phi:mother_eta
87
88   // Global cuts objects
89   AliRecInfoCuts* fCutsRC;     // selection cuts for reconstructed tracks
90   AliMCInfoCuts*  fCutsMC;     // selection cuts for MC tracks
91
92   // analysis folder 
93   TFolder *fAnalysisFolder; // folder for analysed histograms
94
95   AliPerformanceEff(const AliPerformanceEff&); // not implemented
96   AliPerformanceEff& operator=(const AliPerformanceEff&); // not implemented
97
98   ClassDef(AliPerformanceEff,1);
99 };
100
101 #endif