Adding new functionality to the ComaprisonComponent
[u/mrichter/AliRoot.git] / PWG1 / AliComparisonEff.h
1 #ifndef ALICOMPARISONEFF_H
2 #define ALICOMPARISONEFF_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 AliMCInfo;
13 class AliESDRecInfo;
14 class AliESDEvent; 
15 class AliESD;
16 class AliESDfriend;
17 class AliRecInfoCuts;
18 class AliMCInfoCuts;
19 class TH1I;
20 class TH3F;
21 class TH3;
22 class TProfile;
23 class TProfile2D;
24 class TGraph2D;
25 class TGraph; 
26 class TGeoManager; 
27 class TString;
28 class TStatToolkit; 
29 class AliMagFMaps;
30 class AliESDVertex;
31
32 #include "TNamed.h"
33 #include "AliComparisonObject.h"
34
35 class AliComparisonEff : public AliComparisonObject {
36 public :
37   AliComparisonEff(); 
38   ~AliComparisonEff();
39
40   // Init data members
41   virtual void Init();
42
43   // Execute analysis 
44   virtual void Exec(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
45
46   // Merge output objects (needed by PROOF) 
47   virtual Long64_t Merge(TCollection* list);
48
49   // Analyse output histograms 
50   virtual void Analyse();
51
52   // Get analysis folder
53   virtual TFolder* GetAnalysisFolder() {return fAnalysisFolder;}
54
55   // Create folder for analysed histograms
56   TFolder *CreateFolder(TString folder = "folderEff",TString title = "Analysed Efficiency histograms");
57
58   // Export objects to folder
59   TFolder *ExportToFolder(TObjArray * array=0);
60
61   // Process events
62   void Process(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
63
64   // Selection cuts
65   void SetAliRecInfoCuts(AliRecInfoCuts* cuts=0) {fCutsRC = cuts;}
66   void SetAliMCInfoCuts(AliMCInfoCuts* cuts=0) {fCutsMC = cuts;} 
67   
68   // Getters
69   AliRecInfoCuts*  GetAliRecInfoCuts() const {return fCutsRC;} 
70   AliMCInfoCuts*   GetAliMCInfoCuts()  const {return fCutsMC;}
71
72    
73
74 private:
75
76   // Control histograms
77   TH1F *fMCPt;
78   TH1F *fMCRecPt;
79   TH1F *fMCRecPrimPt;
80   TH1F *fMCRecSecPt;
81   
82   TProfile* fEffTPCPt;      //->TPC efficiency as function of Pt (tan+-1)
83   TProfile* fEffTPCPtMC;    //->MC -TPC efficiency as function of Pt (tan+-1)
84   TProfile* fEffTPCPtF;     //->efficiency for findable tracks
85
86   TProfile* fEffTPCPt_P;    //->TPC efficiency as function of Pt (tan+-1) - Protons
87   TProfile* fEffTPCPtMC_P;  //->MC -TPC efficiency as function of Pt (tan+-1) - Protons
88   TProfile* fEffTPCPtF_P;   //->efficiency for findable tracks - Protons
89
90   TProfile* fEffTPCPt_Pi;   //->TPC efficiency as function of Pt (tan+-1) - Pions
91   TProfile* fEffTPCPtMC_Pi; //->MC -TPC efficiency as function of Pt (tan+-1) - Pions
92   TProfile* fEffTPCPtF_Pi;  //->efficiency for findable tracks - Pions
93
94   TProfile* fEffTPCPt_K;    //->TPC efficiency as function of Pt (tan+-1) - Kaons
95   TProfile* fEffTPCPtMC_K;  //->MC -TPC efficiency as function of Pt (tan+-1) - Kaons
96   TProfile* fEffTPCPtF_K;   //->efficiency for findable tracks - Kaons
97
98   //
99   TProfile* fEffTPCTan;     //->TPC efficiency as function of Tan (pt>0.15
100   TProfile* fEffTPCTanMC;   //->MC -TPC efficiency as function of Tan (pt>0.15)
101   TProfile* fEffTPCTanF;    //->efficiency for findable tracks Tan (pt>0.15)
102   //
103   TProfile2D* fEffTPCPtTan;    //->TPC efficiency as function of Pt and tan
104   TProfile2D* fEffTPCPtTanMC;  //->MC -TPC efficiency as function of Pt and tan
105   TProfile2D* fEffTPCPtTanF;   //->TPC efficiency as function of Pt and tan
106
107   // idx - 0 (isPrim), idx - 1 (isPrim && infoRC->GetStatus(1)==3)
108   // idx - 2 (infoRC->GetStatus(1)==3),  idx - 3 (infoRC->GetStatus(1)==3 && !isPrim )
109   //
110   
111   TH2F* fTPCPtDCASigmaIdeal[4]; //->TPC efficiency vs Pt vs DCA/Sigma (tan+-1)
112   TH2F* fTPCPtDCASigmaFull[4];  //->TPC efficiency vs Pt vs DCA/Sigma (tan+-1, full systematics)
113   TH2F* fTPCPtDCASigmaDay0[4];  //->TPC efficiency vs Pt vs DCA/Sigma (tan+-1, goofie systematics)
114
115   TH2F* fTPCPtDCAXY[4];     //->TPC efficiency as Pt vs DCA_XY (tan+-1)
116   TH2F* fTPCPtDCAZ[4];      //->TPC efficiency as Pt vs DCA_Z (tan+-1)
117
118   // Pid = 0 - electrons,  1 - muons, 2 - kaons, 3 - pions, 4 - protons   
119   TH3F* fTPCPtDCASigmaIdealPid[4]; //->TPC efficiency vs Pt vs DCA/Sigma (tan+-1)
120   TH3F* fTPCPtDCASigmaFullPid[4];  //->TPC efficiency vs Pt vs DCA/Sigma (tan+-1, full systematics)
121   TH3F* fTPCPtDCASigmaDay0Pid[4];  //->TPC efficiency vs Pt vs DCA/Sigma (tan+-1, goofie systematics)
122   TH3F* fTPCPtDCAXYPid[4];     //->TPC efficiency vs Pt vs DCA_XY (tan+-1)
123   TH3F* fTPCPtDCAZPid[4];      //->TPC efficiency vs Pt vs DCA_Z (tan+-1)
124
125   // Global cuts objects
126   AliRecInfoCuts* fCutsRC;     // selection cuts for reconstructed tracks
127   AliMCInfoCuts*  fCutsMC;     // selection cuts for MC tracks
128
129   // Magnet (needed for DCA calculations) 
130   AliESDVertex* fVertex;  //! 
131   
132   // analysis folder 
133   TFolder *fAnalysisFolder; // folder for analysed histograms
134
135   AliComparisonEff(const AliComparisonEff&); // not implemented
136   AliComparisonEff& operator=(const AliComparisonEff&); // not implemented
137
138   ClassDef(AliComparisonEff,1);
139 };
140
141 #endif