]>
Commit | Line | Data |
---|---|---|
a75aacd6 | 1 | #ifndef AliUEHist_H |
2 | #define AliUEHist_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | /* $Id: AliUEHist.h 20164 2007-08-14 15:31:50Z morsch $ */ | |
8 | ||
9 | // encapsulate histogram and corrections for one underlying event histogram | |
10 | ||
11 | #include "TObject.h" | |
c7245604 | 12 | #include "TString.h" |
a75aacd6 | 13 | |
14 | class AliCFContainer; | |
15 | class TH1; | |
144bd037 | 16 | class TH1F; |
a75aacd6 | 17 | class TH3; |
18 | class TH1D; | |
2a910c25 | 19 | class TH2; |
a75aacd6 | 20 | class TH2D; |
21 | class TCollection; | |
22 | class AliCFGridSparse; | |
c32a0ca9 | 23 | class THnSparse; |
a75aacd6 | 24 | |
25 | class AliUEHist : public TObject | |
26 | { | |
27 | public: | |
28 | AliUEHist(const char* reqHist = ""); | |
29 | virtual ~AliUEHist(); | |
30 | ||
ff458f69 | 31 | const UInt_t fkRegions; |
a75aacd6 | 32 | enum Region { kToward = 0, kAway, kMin, kMax }; |
33 | ||
34 | static const Int_t fgkCFSteps; | |
35 | enum CFStep { kCFStepAll = 0, kCFStepTriggered, kCFStepVertex, kCFStepAnaTopology, kCFStepTrackedOnlyPrim, kCFStepTracked, kCFStepReconstructed, kCFStepRealLeading, kCFStepBiasStudy, kCFStepBiasStudy2 }; | |
36 | ||
37 | const char* GetRegionTitle(Region region); | |
38 | const char* GetStepTitle(CFStep step); | |
39 | ||
40 | AliCFContainer* GetTrackHist(Region region) { return fTrackHist[region]; } | |
41 | AliCFContainer* GetEventHist() { return fEventHist; } | |
b1831bcb | 42 | AliCFContainer* GetTrackHistEfficiency() { return fTrackHistEfficiency; } |
a75aacd6 | 43 | |
44 | void SetTrackHist(Region region, AliCFContainer* hist) { fTrackHist[region] = hist; } | |
45 | void SetEventHist(AliCFContainer* hist) { fEventHist = hist; } | |
ada1a03f | 46 | void SetTrackHistEfficiency(AliCFContainer* hist) { fTrackHistEfficiency = hist; } |
a75aacd6 | 47 | |
b1831bcb | 48 | void CopyReconstructedData(AliUEHist* from); |
0ffdaf17 | 49 | void DeepCopy(AliUEHist* from); |
b1831bcb | 50 | |
44af28f9 | 51 | TH1* GetUEHist(CFStep step, Region region, Float_t ptLeadMin = -1, Float_t ptLeadMax = -1, Int_t multBinBegin = 0, Int_t multBinEnd = -1, Int_t twoD = 0, Bool_t etaNorm = kTRUE, Int_t* normEvents = 0); |
c7245604 | 52 | TH1* GetPtHist(CFStep step, Region region, Float_t ptLeadMin, Float_t ptLeadMax, Int_t multBinBegin, Int_t multBinEnd, Float_t phiMin, Float_t phiMax, Float_t etaMin, Float_t etaMax, Bool_t skipPhiNormalization = kFALSE); |
44af28f9 | 53 | TH2* GetSumOfRatios(AliUEHist* mixed, CFStep step, Region region, Float_t ptLeadMin, Float_t ptLeadMax, Int_t multBinBegin, Int_t multBinEnd, Bool_t etaNorm = kTRUE, Bool_t useVertexBins = kFALSE); |
52c83678 | 54 | |
55 | void GetHistsZVtx(AliUEHist::CFStep step, AliUEHist::Region region, Float_t ptLeadMin, Float_t ptLeadMax, Int_t multBinBegin, Int_t multBinEnd, TH3** trackHist, TH1** eventHist); | |
56 | TH2* GetSumOfRatios2(AliUEHist* mixed, AliUEHist::CFStep step, AliUEHist::Region region, Float_t ptLeadMin, Float_t ptLeadMax, Int_t multBinBegin, Int_t multBinEnd); | |
44af28f9 | 57 | |
2a910c25 | 58 | TH1* GetTrackEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Int_t source = 1, Int_t axis3 = -1); |
a75aacd6 | 59 | TH1* GetEventEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Float_t ptLeadMin = -1, Float_t ptLeadMax = -1); |
c7245604 | 60 | TH1* GetBias(CFStep step1, CFStep step2, Int_t region, const char* axis, Float_t leadPtMin = 0, Float_t leadPtMax = -1, Int_t weighting = 0); |
a75aacd6 | 61 | |
62 | TH1D* GetTrackingEfficiency(Int_t axis); | |
63 | TH2D* GetTrackingEfficiency(); | |
2a910c25 | 64 | TH2D* GetTrackingEfficiencyCentrality(); |
a75aacd6 | 65 | |
66 | TH1D* GetTrackingContamination(Int_t axis); | |
67 | TH2D* GetTrackingContamination(); | |
2a910c25 | 68 | TH2D* GetTrackingContaminationCentrality(); |
a75aacd6 | 69 | |
70 | TH1D* GetTrackingCorrection(Int_t axis); | |
71 | TH2D* GetTrackingCorrection(); | |
72 | ||
144bd037 | 73 | TH1D* GetTrackingEfficiencyCorrection(Int_t axis); |
74 | TH2D* GetTrackingEfficiencyCorrection(); | |
2a910c25 | 75 | TH2D* GetTrackingEfficiencyCorrectionCentrality(); |
76 | ||
77 | TH2* GetCorrelatedContamination(); | |
6f803f6c | 78 | |
df269636 | 79 | void ExtendTrackingEfficiency(Bool_t verbose = kFALSE); |
144bd037 | 80 | |
a75aacd6 | 81 | void Correct(AliUEHist* corrections); |
82 | void CorrectTracks(CFStep step1, CFStep step2, TH1* trackCorrection, Int_t var1, Int_t var2 = -1); | |
144bd037 | 83 | void CorrectTracks(CFStep step1, CFStep step2, Int_t region, TH1* trackCorrection, Int_t var1, Int_t var2 = -1); |
2a910c25 | 84 | void CorrectEvents(CFStep step1, CFStep step2, TH1* eventCorrection, Int_t var1, Int_t var2 = -1); |
85 | void CorrectCorrelatedContamination(CFStep step1, Int_t region, TH1* trackCorrection); | |
a75aacd6 | 86 | |
87 | void SetCombineMinMax(Bool_t flag) { fCombineMinMax = flag; } | |
88 | ||
89 | void SetEtaRange(Float_t etaMin, Float_t etaMax) { fEtaMin = etaMin; fEtaMax = etaMax; } | |
90 | void SetPtRange(Float_t ptMin, Float_t ptMax) { fPtMin = ptMin; fPtMax = ptMax; } | |
2a910c25 | 91 | void SetCentralityRange(Float_t min, Float_t max) { fCentralityMin = min; fCentralityMax = max; } |
85bfac17 | 92 | void SetZVtxRange(Float_t min, Float_t max) { fZVtxMin = min; fZVtxMax = max; } |
a75aacd6 | 93 | |
144bd037 | 94 | void SetContaminationEnhancement(TH1F* hist) { fContaminationEnhancement = hist; } |
95 | ||
2a910c25 | 96 | void SetHistogramType(const char* histogramType) { fHistogramType = histogramType; } |
97 | ||
144bd037 | 98 | void CountEmptyBins(AliUEHist::CFStep step, Float_t ptLeadMin, Float_t ptLeadMax); |
99 | ||
e741fadd | 100 | void AdditionalDPhiCorrection(Int_t step); |
101 | ||
ada1a03f | 102 | void SetBinLimits(AliCFGridSparse* grid); |
103 | void ResetBinLimits(AliCFGridSparse* grid); | |
104 | ||
d1c75d06 | 105 | AliUEHist(const AliUEHist &c); |
a75aacd6 | 106 | AliUEHist& operator=(const AliUEHist& corr); |
107 | virtual void Copy(TObject& c) const; | |
108 | ||
109 | virtual Long64_t Merge(TCollection* list); | |
c7245604 | 110 | void Scale(Double_t factor); |
111 | void Reset(); | |
a75aacd6 | 112 | |
113 | protected: | |
114 | void SetStepNames(AliCFContainer* container); | |
115 | void WeightHistogram(TH3* hist1, TH1* hist2); | |
c32a0ca9 | 116 | void MultiplyHistograms(THnSparse* grid, THnSparse* target, TH1* histogram, Int_t var1, Int_t var2); |
a75aacd6 | 117 | |
118 | AliCFContainer* fTrackHist[4]; // container for track level distributions in four regions (toward, away, min, max) and at four analysis steps | |
119 | AliCFContainer* fEventHist; // container for event level distribution at four analysis steps | |
b1831bcb | 120 | AliCFContainer* fTrackHistEfficiency; // container for tracking efficiency and contamination (all particles filled including leading one): axes: eta, pT, particle species |
a75aacd6 | 121 | |
122 | Float_t fEtaMin; // eta min for projections | |
123 | Float_t fEtaMax; // eta max for projections | |
124 | Float_t fPtMin; // pT min for projections (for track pT, not pT,lead) | |
125 | Float_t fPtMax; // pT max for projections (for track pT, not pT,lead) | |
2a910c25 | 126 | Float_t fCentralityMin; // centrality min for projections |
127 | Float_t fCentralityMax; // centrality max for projections | |
85bfac17 | 128 | Float_t fZVtxMin; // z vtx min for projections |
129 | Float_t fZVtxMax; // z vtx max for projections | |
a75aacd6 | 130 | |
144bd037 | 131 | TH1F* fContaminationEnhancement; // histogram that contains the underestimation of secondaries in the MC as function of pT |
132 | ||
a75aacd6 | 133 | Bool_t fCombineMinMax; // flag to combine min and max to a general towards region |
134 | ||
135 | AliCFContainer* fCache; //! cache variable for GetTrackEfficiency | |
136 | ||
c7245604 | 137 | TString fHistogramType; // what is stored in this histogram |
138 | ||
85bfac17 | 139 | ClassDef(AliUEHist, 8) // underlying event histogram container |
a75aacd6 | 140 | }; |
141 | ||
142 | #endif |