1. Using the THnSparse instead of THx and TProfiles
[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 AliMCInfo;
12 class AliESDRecInfo;
13 class AliESDEvent; 
14 class AliRecInfoCuts;
15 class AliMCInfoCuts;
16 class TString;
17 class TNamed;
18 class TCanvas;
19
20 #include "THnSparse.h"
21 #include "AliComparisonObject.h"
22
23 class AliComparisonDEdx : public AliComparisonObject {
24 public :
25   AliComparisonDEdx(); 
26   AliComparisonDEdx(Char_t* name, Char_t* title, Int_t analysisMode, Bool_t hptGenerator);
27   ~AliComparisonDEdx();
28
29   // Init data members
30   virtual void Init();
31
32   // Execute analysis
33   virtual void Exec(AliMCInfo* const infoMC, AliESDRecInfo *const infoRC);
34
35   // Merge output objects (needed by PROOF) 
36   virtual Long64_t Merge(TCollection* const list);
37
38   // Analyse output histograms
39   virtual void Analyse();
40
41   // Get analysis folder
42   virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
43
44   // Create folder for analysed histograms
45   TFolder *CreateFolder(TString folder = "folderDEdx",TString title = "Analysed DEdx histograms");
46
47   // Export objects to folder
48   TFolder *ExportToFolder(TObjArray * array=0);
49
50   // Process events
51   void  ProcessTPC(AliMCInfo* const infoMC, AliESDRecInfo *const infoRC);
52   void  ProcessTPCITS(AliMCInfo* const infoMC, AliESDRecInfo *const infoRC); // not implemented
53   void  ProcessConstrained(AliMCInfo* const infoMC, AliESDRecInfo *const infoRC); // not implemented
54
55   // Selection cuts
56   void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;}
57   void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0)   {fCutsMC = cuts;} 
58
59   AliRecInfoCuts*  GetAliRecInfoCuts() const {return fCutsRC;}      
60   AliMCInfoCuts*   GetAliMCInfoCuts()  const {return fCutsMC;}     
61
62   static TH1F*     MakeResol(TH2F * his, Int_t integ, Bool_t type); 
63
64   //
65   // TPC dE/dx 
66   //
67   THnSparse* GetDeDxHisto() const {return fDeDxHisto;}
68
69 private:
70
71   // TPC dE/dx 
72   THnSparseF *fDeDxHisto; //-> signal:alpha:y:z:snp:tgl:ncls:pid:p
73   
74   // Selection cuts
75   AliRecInfoCuts*  fCutsRC; // selection cuts for reconstructed tracks
76   AliMCInfoCuts*   fCutsMC; // selection cuts for MC tracks
77
78   // analysis folder 
79   TFolder *fAnalysisFolder; // folder for analysed histograms
80
81   AliComparisonDEdx(const AliComparisonDEdx&); // not implemented
82   AliComparisonDEdx& operator=(const AliComparisonDEdx&); // not implemented
83
84   ClassDef(AliComparisonDEdx,1);
85 };
86
87 #endif