trigger class selection and more histograms added
[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
32 class AlidNdPtCutAnalysis : public AlidNdPt {
33 public :
34   AlidNdPtCutAnalysis(); 
35   AlidNdPtCutAnalysis(Char_t* name, Char_t* title);
36   ~AlidNdPtCutAnalysis();
37
38   // Init data members
39   virtual void Init();
40
41   // Process events
42   virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
43
44   // Merge output objects (needed by PROOF) 
45   virtual Long64_t Merge(TCollection* list);
46
47   // Analyse output histograms 
48   virtual void Analyse();
49
50   // Export objects to folder
51   virtual TFolder *ExportToFolder(TObjArray * array=0);
52
53   // Get analysis folder
54   TFolder* GetAnalysisFolder() {return fAnalysisFolder;}
55
56   // Create folder for analysed histograms
57   TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
58
59   // Fill histograms
60   void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack);
61
62   // Getters
63   THnSparseF *GetEventCount()   {return fEventCount;}
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 *fEventCount; //-> trig, trig + vertex
80
81   THnSparseF *fRecEventHist;   //-> Xv:Yv:Zv:ResZv:Mult
82   THnSparseF *fMCEventHist;    //-> mcXv:mcYv:mcZv
83   THnSparseF *fRecMCEventHist; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv:Mult
84
85   //
86   // THnSparse track histograms
87   //
88   THnSparseF *fRecMCTrackHist; //-> nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:isNotKink:isPrim
89
90   AlidNdPtCutAnalysis(const AlidNdPtCutAnalysis&); // not implemented
91   AlidNdPtCutAnalysis& operator=(const AlidNdPtCutAnalysis&); // not implemented
92
93   ClassDef(AlidNdPtCutAnalysis,1);
94 };
95
96 #endif