Moving PbPb multiplicity in the new directory structure
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / ChargedHadrons / multPbPb / AliAnalysisMultPbTrackHistoManager.h
1 #ifndef ALIANALYSISMULTPBTRACKHISTOMANAGER_H
2 #define ALIANALYSISMULTPBTRACKHISTOMANAGER_H
3
4 #include "AliHistoListWrapper.h"
5 #include "TH3D.h"
6
7 class TH3D;
8 class TH1D;
9 class TH1I;
10 class AliMCParticle;
11
12 //#define WEIGHTED_DCA
13 #define TRANSVERSE_DCA
14
15
16 //-------------------------------------------------------------------------
17 //                      AliAnalysisMultPbTrackHistoManager
18 // 
19 // 
20 //
21 //
22 // Author: Michele Floris, CERN
23 //-------------------------------------------------------------------------
24
25
26 class AliAnalysisMultPbTrackHistoManager : public AliHistoListWrapper {
27
28 public:
29
30   typedef enum {kHistoGen, kHistoRec, kHistoRecPrim, kHistoRecSecWeak, kHistoRecSecMat, kHistoRecFake, kHistoRecHighestMeanPt, kHistoRecLowestMeanPt, kNHistos} Histo_t;
31   typedef enum {kStatAll,  kStatCentr, kStatPhysSel, kStatVtx, kStatZDCCut, kStatVtxRangeCut, kNStatBins} Stat_t;
32   typedef enum {kPartPiPlus, kPartKPlus, kPartP, kPartLPlus, kPartPiMinus, kPartKMinus, kPartPBar, kPartLMinus, kPartOther, kNPart} Part_t;
33
34   // these bits define the behaviour at merging
35   // if kKeepMax(Mib)Mean is set, the histogram with the highest (lowest) mean is kept
36   enum {kKeepMaxMean = BIT(22), kKeepMinMean = BIT(23)};
37
38
39
40   AliAnalysisMultPbTrackHistoManager();
41   AliAnalysisMultPbTrackHistoManager(const char * name,const char * title);
42   AliAnalysisMultPbTrackHistoManager(const AliAnalysisMultPbTrackHistoManager& obj) ;
43   ~AliAnalysisMultPbTrackHistoManager();
44   
45   // Setters
46   void SetSuffix(const char * suffix) { fHNameSuffix = suffix;}
47
48   // Histo getters
49   TH3D * GetHistoPtEtaVz(Histo_t id, Int_t particle = -1);
50   TH1D * GetHistoPt (Histo_t id, Float_t minEta = -22222, Float_t maxEta = -22222, Float_t minVz  = -22222, Float_t maxVz  = -22222, Bool_t scaleWidth = kTRUE);
51   TH1D * GetHistoEta(Histo_t id, Float_t minPt  = -22222, Float_t maxPt  = -22222, Float_t minVz  = -22222, Float_t maxVz  = -22222, Bool_t scaleWidth = kTRUE);
52   TH1D * GetHistoVz (Histo_t id, Float_t minPt  = -22222, Float_t maxPt  = -22222, Float_t minEta = -22222, Float_t maxEta = -22222, Bool_t scaleWidth = kTRUE);
53   TH2D * GetHistoPtVz (Histo_t id, Float_t minEta = -22222, Float_t maxEta = -22222, Bool_t scaleWidth = kFALSE);
54
55   TH1I * GetHistoStats();
56   TH2D * GetHistoDCA(Histo_t id);
57   TH1D * GetHistoMult(Histo_t id);
58   TH2D * GetHistoV0vsNtracks(Histo_t id);
59
60
61   TH1D * GetHistoSpecies(Histo_t id);
62   TH1D * GetHistoProcess(Histo_t id);
63   TH1D * GetHistoVzEvent(Histo_t id);
64   TH1D * GetHistoPtEvent(Histo_t id);
65   TH1D * GetHistoMeanPt (Histo_t id);
66
67
68   // Misch utils
69   void ScaleHistos (Double_t nev, Option_t * option="");
70   Int_t GetLocalParticleID(AliMCParticle * part);
71   void FillParticleID(Histo_t id, AliMCParticle * part) { GetHistoSpecies(id)->Fill(GetLocalParticleID(part));}
72
73   // Histo bookers
74   TH3D * BookHistoPtEtaVz(const char * name, const char * title);
75   TH2D * BookHistoDCA(const char * name, const char * title);
76   TH1I * BookHistoStats();
77   TH1D * BookHistoMult(const char * name, const char * title);
78
79   // 
80   TH1 * GetHisto(const char * name);
81
82   virtual void Print(Option_t* option = "") const {fList->Print();}
83
84
85   Long64_t Merge(TCollection* list); // need to override this because of the mean pts
86
87 private:
88
89   static const char * kStatStepNames[];       // names of the step hist
90   static const char * kHistoPtEtaVzNames[];   // names of the 3D histograms pt/eta/vz
91   static const char * kHistoDCANames[];   // names of the DCA histograms 
92   static const char * kHistoPrefix[];   // prefix for histo names // FIXME: remove the others and keep only this 
93   static const char * kSpeciesName[];   // Particle species
94   TString fHNameSuffix; // Suffix added to all histo names. Useful if you have in the same session e.g. MC and data.
95
96   AliAnalysisMultPbTrackHistoManager& operator=(const AliAnalysisMultPbTrackHistoManager& task);
97   
98   ClassDef(AliAnalysisMultPbTrackHistoManager, 3)
99
100
101 };
102
103 #endif