Adding abstract class for comparison components
[u/mrichter/AliRoot.git] / PWG1 / AliComparisonDEdx.h
1 #ifndef ALICOMPARISONDEdx_H
2 #define ALICOMPARISONDEdx_H
3
4 //------------------------------------------------------------------------------
5 // Class to keep information from comparison of 
6 // reconstructed and MC particle tracks (TPC dE/dx).   
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 TString;
27
28 #include "TNamed.h"
29 #include "AliComparisonObject.h"
30
31 //class AliComparisonDEdx : public TNamed {
32 class AliComparisonDEdx : public AliComparisonObject {
33 public :
34   AliComparisonDEdx(); 
35   ~AliComparisonDEdx();
36
37   // Init data members
38   virtual void Init();
39
40   // Execute analysis
41   virtual void Exec(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
42
43   // Merge output objects (needed by PROOF) 
44   virtual Long64_t Merge(TCollection* list);
45
46   // Analyse output histograms
47   virtual void Analyse();
48
49   // Get analysis folder
50   virtual TFolder* GetAnalysisFolder() {return fAnalysisFolder;}
51
52   // Create folder for analysed histograms
53   TFolder *CreateFolder(TString folder = "folderDEdx",TString title = "Analysed DEdx histograms");
54
55   // Process events
56   void      Process(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
57
58   // Selection cuts
59   void SetAliRecInfoCuts(AliRecInfoCuts* cuts=0) {fCutsRC = cuts;}
60   void SetAliMCInfoCuts(AliMCInfoCuts* cuts=0)   {fCutsMC = cuts;} 
61
62   void SetMCPtMin(const Float_t cuts=0) {fMCPtMin = cuts;} 
63   void SetMCAbsTanThetaMax(const Float_t cuts=1e99) {fMCAbsTanThetaMax = cuts;} 
64   void SetMCPdgCode(const Int_t cuts=0) {fMCPdgCode = cuts;} 
65
66   AliRecInfoCuts*  GetAliRecInfoCuts() const {return fCutsRC;}      
67   AliMCInfoCuts*   GetAliMCInfoCuts()  const {return fCutsMC;}     
68   Float_t GetMCPtMin() const {return fMCPtMin;}
69   Float_t GetMCAbsTanThetaMax() const {return fMCAbsTanThetaMax;}
70   Int_t GetMCPdgCode() const {return fMCPdgCode;} 
71
72   static TH1F*     MakeResol(TH2F * his, Int_t integ, Bool_t type); 
73
74 private:
75
76   // TPC dE/dx 
77   TH2F* fTPCSignalNormTan;    //-> TPC signal normalized to the calculated MC signal 
78   TH2F* fTPCSignalNormSPhi;   //-> TPC signal normalized to the calculated MC signal
79   TH2F* fTPCSignalNormTPhi;   //-> TPC signal normalized to the calculated MC signal
80   //
81   TH3F* fTPCSignalNormTanSPhi;   //-> TPC signal normalized to the calculated MC signal
82   TH3F* fTPCSignalNormTanTPhi;   //-> TPC signal normalized to the calculated MC signal
83   TH3F* fTPCSignalNormTanSPt;    //-> TPC signal normalized to the calculated MC signal
84   
85   // Selection cuts
86   AliRecInfoCuts*  fCutsRC; // selection cuts for reconstructed tracks
87   AliMCInfoCuts*   fCutsMC; // selection cuts for MC tracks
88
89   Float_t fMCPtMin;               // min. MC pt cut
90   Float_t fMCAbsTanThetaMax;      // max. MC abs[tan(theta)] cut
91   Int_t fMCPdgCode;               // selected particle with Pdg code
92
93   // analysis folder 
94   TFolder *fAnalysisFolder; // folder for analysed histograms
95
96   AliComparisonDEdx(const AliComparisonDEdx&); // not implemented
97   AliComparisonDEdx& operator=(const AliComparisonDEdx&); // not implemented
98
99   ClassDef(AliComparisonDEdx,1);
100 };
101
102 #endif