// encapsulate histogram and corrections for one underlying event histogram
#include "TObject.h"
+#include "TString.h"
class AliCFContainer;
class TH1;
class TH1F;
class TH3;
class TH1D;
+class TH2;
class TH2D;
class TCollection;
class AliCFGridSparse;
+class THnSparse;
class AliUEHist : public TObject
{
AliUEHist(const char* reqHist = "");
virtual ~AliUEHist();
- const Int_t fkRegions;
+ const UInt_t fkRegions;
enum Region { kToward = 0, kAway, kMin, kMax };
static const Int_t fgkCFSteps;
void CopyReconstructedData(AliUEHist* from);
- TH1D* GetUEHist(CFStep step, Region region, Float_t ptLeadMin = -1, Float_t ptLeadMax = -1);
+ 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);
+ 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);
- TH1* GetTrackEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Int_t source = 1);
+ TH1* GetTrackEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Int_t source = 1, Int_t axis3 = -1);
TH1* GetEventEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Float_t ptLeadMin = -1, Float_t ptLeadMax = -1);
- TH1* GetBias(CFStep step1, CFStep step2, Int_t region, const char* axis, Float_t leadPtMin = 0, Float_t leadPtMax = -1);
+ TH1* GetBias(CFStep step1, CFStep step2, Int_t region, const char* axis, Float_t leadPtMin = 0, Float_t leadPtMax = -1, Int_t weighting = 0);
TH1D* GetTrackingEfficiency(Int_t axis);
TH2D* GetTrackingEfficiency();
+ TH2D* GetTrackingEfficiencyCentrality();
TH1D* GetTrackingContamination(Int_t axis);
TH2D* GetTrackingContamination();
+ TH2D* GetTrackingContaminationCentrality();
TH1D* GetTrackingCorrection(Int_t axis);
TH2D* GetTrackingCorrection();
TH1D* GetTrackingEfficiencyCorrection(Int_t axis);
TH2D* GetTrackingEfficiencyCorrection();
+ TH2D* GetTrackingEfficiencyCorrectionCentrality();
+
+ TH2* GetCorrelatedContamination();
- void ExtendTrackingEfficiency();
+ void ExtendTrackingEfficiency(Bool_t verbose = kFALSE);
void Correct(AliUEHist* corrections);
void CorrectTracks(CFStep step1, CFStep step2, TH1* trackCorrection, Int_t var1, Int_t var2 = -1);
void CorrectTracks(CFStep step1, CFStep step2, Int_t region, TH1* trackCorrection, Int_t var1, Int_t var2 = -1);
- void CorrectEvents(CFStep step1, CFStep step2, TH1D* eventCorrection, Int_t var);
+ void CorrectEvents(CFStep step1, CFStep step2, TH1* eventCorrection, Int_t var1, Int_t var2 = -1);
+ void CorrectCorrelatedContamination(CFStep step1, Int_t region, TH1* trackCorrection);
void SetCombineMinMax(Bool_t flag) { fCombineMinMax = flag; }
void SetEtaRange(Float_t etaMin, Float_t etaMax) { fEtaMin = etaMin; fEtaMax = etaMax; }
void SetPtRange(Float_t ptMin, Float_t ptMax) { fPtMin = ptMin; fPtMax = ptMax; }
+ void SetCentralityRange(Float_t min, Float_t max) { fCentralityMin = min; fCentralityMax = max; }
+ void SetZVtxRange(Float_t min, Float_t max) { fZVtxMin = min; fZVtxMax = max; }
void SetContaminationEnhancement(TH1F* hist) { fContaminationEnhancement = hist; }
+ void SetHistogramType(const char* histogramType) { fHistogramType = histogramType; }
+
void CountEmptyBins(AliUEHist::CFStep step, Float_t ptLeadMin, Float_t ptLeadMax);
+ void AdditionalDPhiCorrection(Int_t step);
+
void SetBinLimits(AliCFGridSparse* grid);
void ResetBinLimits(AliCFGridSparse* grid);
virtual void Copy(TObject& c) const;
virtual Long64_t Merge(TCollection* list);
+ void Scale(Double_t factor);
+ void Reset();
protected:
void SetStepNames(AliCFContainer* container);
void WeightHistogram(TH3* hist1, TH1* hist2);
+ void MultiplyHistograms(THnSparse* grid, THnSparse* target, TH1* histogram, Int_t var1, Int_t var2);
AliCFContainer* fTrackHist[4]; // container for track level distributions in four regions (toward, away, min, max) and at four analysis steps
AliCFContainer* fEventHist; // container for event level distribution at four analysis steps
Float_t fEtaMax; // eta max for projections
Float_t fPtMin; // pT min for projections (for track pT, not pT,lead)
Float_t fPtMax; // pT max for projections (for track pT, not pT,lead)
+ Float_t fCentralityMin; // centrality min for projections
+ Float_t fCentralityMax; // centrality max for projections
+ Float_t fZVtxMin; // z vtx min for projections
+ Float_t fZVtxMax; // z vtx max for projections
TH1F* fContaminationEnhancement; // histogram that contains the underestimation of secondaries in the MC as function of pT
AliCFContainer* fCache; //! cache variable for GetTrackEfficiency
- ClassDef(AliUEHist, 3) // underlying event histogram container
+ TString fHistogramType; // what is stored in this histogram
+
+ ClassDef(AliUEHist, 8) // underlying event histogram container
};
#endif