befa61c6863eadff5f477f058e015057cc460c99
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtCutAnalysis.h
1 #ifndef ALIDEDPTCUTANALYSIS_H
2 #define ALIDEDPTCUTANALYSIS_H
3
4 //------------------------------------------------------------------------------
5 // AlidNdPtCutAnalysis class. 
6 //
7 // a. functionality:
8 // - fills generic cut histograms
9 // - generates cuts (selection criteria)
10 //
11 // b. data members:
12 // - generic cut histograms
13 // - control histograms
14 //
15 // Author: J.Otwinowski 04/11/2008 
16 //------------------------------------------------------------------------------
17
18 class TProfile;
19 class TFolder;
20 class TObjArray;
21 class TString;
22
23 class AliESDtrackCuts;
24 class AliVertexerTracks;
25 class AliESD;
26 class AliESDfriend;
27 class AliESDfriendTrack;
28
29 #include "THnSparse.h"
30 #include "AlidNdPt.h"
31 #include "AlidNdPtHelper.h"
32
33 class AlidNdPtCutAnalysis : public AlidNdPt {
34 public :
35   AlidNdPtCutAnalysis(); 
36   AlidNdPtCutAnalysis(Char_t* name, Char_t* title);
37   ~AlidNdPtCutAnalysis();
38
39   // Init data members
40   virtual void Init();
41
42   // Process events
43   virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
44
45   // Merge output objects (needed by PROOF) 
46   virtual Long64_t Merge(TCollection* list);
47
48   // Analyse output histograms 
49   virtual void Analyse();
50
51   // Export objects to folder
52   virtual TFolder *ExportToFolder(TObjArray * array=0);
53
54   // Get analysis folder
55   TFolder* GetAnalysisFolder() {return fAnalysisFolder;}
56
57   // Create folder for analysed histograms
58   TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
59
60   // Fill histograms
61   void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack);
62
63   // Getters
64   THnSparseF *GetRecEventHist() {return fRecEventHist;}
65   THnSparseF *GetMCEventHist() {return fMCEventHist;}
66   THnSparseF *GetRecMCEventHist() {return fRecMCEventHist;}
67
68   //
69   THnSparseF *GetRecMCTrackHist() {return fRecMCTrackHist;}
70   
71   private:
72
73   // analysis folder 
74   TFolder *fAnalysisFolder; // folder for analysed histograms
75
76   //
77   // THnSparse event histograms
78   //
79   THnSparseF *fRecEventHist;   //-> Xv:Yv:Zv:ResZv:Mult
80   THnSparseF *fMCEventHist;    //-> mcXv:mcYv:mcZv
81   THnSparseF *fRecMCEventHist; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv:Mult
82
83   //
84   // THnSparse track histograms
85   //
86   THnSparseF *fRecMCTrackHist; //-> nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:isNotKink:isPrim
87
88   AlidNdPtCutAnalysis(const AlidNdPtCutAnalysis&); // not implemented
89   AlidNdPtCutAnalysis& operator=(const AlidNdPtCutAnalysis&); // not implemented
90
91   ClassDef(AlidNdPtCutAnalysis,1);
92 };
93
94 #endif