1. Using the THnSparse instead of THx and TProfiles
[u/mrichter/AliRoot.git] / PWG1 / AliComparisonDCA.h
1 #ifndef ALICOMPARISONDCA_H
2 #define ALICOMPARISONDCA_H
3
4 //------------------------------------------------------------------------------
5 // Class to keep information from comparison of 
6 // reconstructed and MC particle tracks (DCA - Distance of Closest Approach 
7 // to the vertex).   
8 // 
9 // Author: J.Otwinowski 04/02/2008 
10 //------------------------------------------------------------------------------
11
12 class AliMCInfo;
13 class AliESDRecInfo;
14 class AliESDEvent; 
15 class AliRecInfoCuts;
16 class AliMCInfoCuts;
17 class AliESDVertex;
18 class TH3F;
19 class TH3;
20 class TString;
21 class TNamed;
22
23 #include "THnSparse.h"
24 #include "AliComparisonObject.h"
25
26 class AliComparisonDCA : public AliComparisonObject {
27 public :
28   AliComparisonDCA(); 
29   AliComparisonDCA(Char_t* name, Char_t* title, Int_t analysisMode, Bool_t hptGenerator);
30   ~AliComparisonDCA();
31
32   // Init data members
33   virtual void Init();
34
35   // Execute analysis
36   virtual void Exec(AliMCInfo* const infoMC, AliESDRecInfo *const infoRC);
37
38   // Merge output objects (needed by PROOF) 
39   virtual Long64_t Merge(TCollection* const list);
40
41   // Analyse output histograms
42   virtual void Analyse();
43
44   // Get analysis folder
45   virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
46
47   // Create folder for analysed histograms
48   TFolder *CreateFolder(TString folder = "folderDCA",TString title = "Analysed DCA histograms");
49
50   // Export objects to folder
51   TFolder *ExportToFolder(TObjArray * array=0);
52
53   // Process events
54   void  ProcessTPC(AliMCInfo* const infoMC, AliESDRecInfo* const infoRC);
55   void  ProcessTPCITS(AliMCInfo* const infoMC, AliESDRecInfo* const infoRC);
56   void  ProcessConstrained(AliMCInfo* const infoMC, AliESDRecInfo* const infoRC); // not implemented
57
58   // Selection cuts
59   void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;}
60   void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;}  
61
62   AliRecInfoCuts*  GetAliRecInfoCuts() const {return fCutsRC;}
63   AliMCInfoCuts*   GetAliMCInfoCuts()  const {return fCutsMC;}
64
65   // getters
66   /*
67   TH3F  *GetD0TanSPtTPCITS() const {return fD0TanSPtTPCITS;}
68   TH3F  *GetD1TanSPtTPCITS() const {return fD1TanSPtTPCITS;}
69   TH3F  *GetD0TanSPt() const {return fD0TanSPt;}
70   TH3F  *GetD1TanSPt() const {return fD1TanSPt;}
71   TH3F  *GetD0TanSPtTPC() const {return fD0TanSPtTPC;}
72   TH3F  *GetD1TanSPtTPC() const {return fD1TanSPtTPC;}
73   */
74
75   // DCA
76   THnSparse* GetDCAHisto() const {return fDCAHisto;}
77
78 private:
79
80   // DCA histograms
81   THnSparseF *fDCAHisto; //-> dca_r:dca_z:eta:pt 
82  
83   /*
84   TH3F  *fD0TanSPtTPCITS; //-> distance to vertex y (TPC+ITS clusters) 
85   TH3F  *fD1TanSPtTPCITS; //-> distance to vertex z (TPC+ITS clusters) 
86   TH3F  *fD0TanSPt;     //-> distance to vertex y  
87   TH3F  *fD1TanSPt;     //-> distance to vertex z 
88   TH3F  *fD0TanSPtTPC;  //-> distance to vertex y (only TPC track parameters) 
89   TH3F  *fD1TanSPtTPC;  //-> distance to vertex z (only TPC track parameters)
90   */
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   AliComparisonDCA(const AliComparisonDCA&); // not implemented
100   AliComparisonDCA& operator=(const AliComparisonDCA&); // not implemented
101
102   ClassDef(AliComparisonDCA,1);
103 };
104
105 #endif