class AliUEHist : public TObject
{
public:
- AliUEHist(const char* reqHist = "");
+ AliUEHist(const char* reqHist = "", const char* binning = 0);
virtual ~AliUEHist();
const UInt_t fkRegions;
void CopyReconstructedData(AliUEHist* from);
void DeepCopy(AliUEHist* from);
- 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);
+ 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, Long64_t* normEvents = 0);
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);
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);
void GetHistsZVtx(AliUEHist::CFStep step, AliUEHist::Region region, Float_t ptLeadMin, Float_t ptLeadMax, Int_t multBinBegin, Int_t multBinEnd, TH3** trackHist, TH1** eventHist);
void GetHistsZVtxMult(AliUEHist::CFStep step, AliUEHist::Region region, Float_t ptLeadMin, Float_t ptLeadMax, THnBase** trackHist, TH2** eventHist);
- TH2* GetSumOfRatios2(AliUEHist* mixed, AliUEHist::CFStep step, AliUEHist::Region region, Float_t ptLeadMin, Float_t ptLeadMax, Int_t multBinBegin, Int_t multBinEnd);
+ TH2* GetSumOfRatios2(AliUEHist* mixed, AliUEHist::CFStep step, AliUEHist::Region region, Float_t ptLeadMin, Float_t ptLeadMax, Int_t multBinBegin, Int_t multBinEnd, Bool_t normalizePerTrigger = kTRUE);
+
+ TH1* GetTriggersAsFunctionOfMultiplicity(AliUEHist::CFStep step, Float_t ptLeadMin, Float_t ptLeadMax);
TH1* GetTrackEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Int_t source = 1, Int_t axis3 = -1);
THnBase* GetTrackEfficiencyND(CFStep step1, CFStep step2);
void CondenseBin(THnSparse* grid, THnSparse* target, Int_t axis, Float_t targetValue, Float_t from, Float_t to);
void CondenseBin(CFStep step, Int_t trackAxis, Int_t eventAxis, Float_t targetValue, Float_t from = 0, Float_t to = -1, CFStep tmpStep = AliUEHist::kCFStepBiasStudy2);
+ void SymmetrizepTBins();
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 SetPartSpecies(Int_t species) { fPartSpecies = species;}
void SetCentralityRange(Float_t min, Float_t max) { fCentralityMin = min; fCentralityMax = max; }
void SetZVtxRange(Float_t min, Float_t max) { fZVtxMin = min; fZVtxMax = max; }
+ Float_t GetTrackEtaCut() { return fTrackEtaCut; }
+ void SetTrackEtaCut(Float_t value) { fTrackEtaCut = value; }
+ void SetWeightPerEvent(Bool_t flag) { fWeightPerEvent = flag; }
+ void SetSkipScaleMixedEvent(Bool_t flag) { fSkipScaleMixedEvent = flag; }
+
void SetContaminationEnhancement(TH1F* hist) { fContaminationEnhancement = hist; }
void SetHistogramType(const char* histogramType) { fHistogramType = histogramType; }
THnBase* ChangeToThn(THnBase* sparse);
protected:
+ Double_t* GetBinning(const char* configuration, const char* tag, Int_t& nBins);
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
+ AliCFContainer* fTrackHist[4]; // container for track level distributions in four regions (toward, away, min, max) and at all analysis steps
+ AliCFContainer* fEventHist; // container for event level distribution at all analysis steps
AliCFContainer* fTrackHistEfficiency; // container for tracking efficiency and contamination (all particles filled including leading one): axes: eta, pT, particle species
TH3F* fFakePt;
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)
+ Int_t fPartSpecies; // Particle species for projections
Float_t fCentralityMin; // centrality min for projections
Float_t fCentralityMax; // centrality max for projections
Float_t fZVtxMin; // z vtx min for projections
TH1F* fContaminationEnhancement; // histogram that contains the underestimation of secondaries in the MC as function of pT
Bool_t fCombineMinMax; // flag to combine min and max to a general towards region
+ Float_t fTrackEtaCut; // cut used during production of histograms (needed for finite bin correction in GetSumOfRatios)
+ Bool_t fWeightPerEvent; // weight with the number of trigger particles per event
+ Bool_t fSkipScaleMixedEvent; // scale the mixed event with (0, 0) plus finite bin correction (default: kTRUE)
AliCFContainer* fCache; //! cache variable for GetTrackEfficiency
TString fHistogramType; // what is stored in this histogram
- ClassDef(AliUEHist, 10) // underlying event histogram container
+ ClassDef(AliUEHist, 14) // underlying event histogram container
};
#endif