4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 /* $Id: AliUEHist.h 20164 2007-08-14 15:31:50Z morsch $ */
9 // encapsulate histogram and corrections for one underlying event histogram
20 class AliCFGridSparse;
22 class AliUEHist : public TObject
25 AliUEHist(const char* reqHist = "");
28 const Int_t fkRegions;
29 enum Region { kToward = 0, kAway, kMin, kMax };
31 static const Int_t fgkCFSteps;
32 enum CFStep { kCFStepAll = 0, kCFStepTriggered, kCFStepVertex, kCFStepAnaTopology, kCFStepTrackedOnlyPrim, kCFStepTracked, kCFStepReconstructed, kCFStepRealLeading, kCFStepBiasStudy, kCFStepBiasStudy2 };
34 const char* GetRegionTitle(Region region);
35 const char* GetStepTitle(CFStep step);
37 AliCFContainer* GetTrackHist(Region region) { return fTrackHist[region]; }
38 AliCFContainer* GetEventHist() { return fEventHist; }
39 AliCFContainer* GetTrackHistEfficiency() { return fTrackHistEfficiency; }
41 void SetTrackHist(Region region, AliCFContainer* hist) { fTrackHist[region] = hist; }
42 void SetEventHist(AliCFContainer* hist) { fEventHist = hist; }
43 void SetTrackHistEfficiency(AliCFContainer* hist) { fTrackHistEfficiency = hist; }
45 void CopyReconstructedData(AliUEHist* from);
47 TH1* GetUEHist(CFStep step, Region region, Float_t ptLeadMin = -1, Float_t ptLeadMax = -1, Int_t multBinBegin = 0, Int_t multBinEnd = -1, Bool_t twoD = kFALSE);
49 TH1* GetTrackEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Int_t source = 1);
50 TH1* GetEventEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Float_t ptLeadMin = -1, Float_t ptLeadMax = -1);
51 TH1* GetBias(CFStep step1, CFStep step2, Int_t region, const char* axis, Float_t leadPtMin = 0, Float_t leadPtMax = -1);
53 TH1D* GetTrackingEfficiency(Int_t axis);
54 TH2D* GetTrackingEfficiency();
56 TH1D* GetTrackingContamination(Int_t axis);
57 TH2D* GetTrackingContamination();
59 TH1D* GetTrackingCorrection(Int_t axis);
60 TH2D* GetTrackingCorrection();
62 TH1D* GetTrackingEfficiencyCorrection(Int_t axis);
63 TH2D* GetTrackingEfficiencyCorrection();
65 void ExtendTrackingEfficiency(Bool_t verbose = kFALSE);
67 void Correct(AliUEHist* corrections);
68 void CorrectTracks(CFStep step1, CFStep step2, TH1* trackCorrection, Int_t var1, Int_t var2 = -1);
69 void CorrectTracks(CFStep step1, CFStep step2, Int_t region, TH1* trackCorrection, Int_t var1, Int_t var2 = -1);
70 void CorrectEvents(CFStep step1, CFStep step2, TH1D* eventCorrection, Int_t var);
72 void SetCombineMinMax(Bool_t flag) { fCombineMinMax = flag; }
74 void SetEtaRange(Float_t etaMin, Float_t etaMax) { fEtaMin = etaMin; fEtaMax = etaMax; }
75 void SetPtRange(Float_t ptMin, Float_t ptMax) { fPtMin = ptMin; fPtMax = ptMax; }
77 void SetContaminationEnhancement(TH1F* hist) { fContaminationEnhancement = hist; }
79 void CountEmptyBins(AliUEHist::CFStep step, Float_t ptLeadMin, Float_t ptLeadMax);
81 void AdditionalDPhiCorrection(Int_t step);
83 void SetBinLimits(AliCFGridSparse* grid);
84 void ResetBinLimits(AliCFGridSparse* grid);
86 AliUEHist(const AliUEHist &c);
87 AliUEHist& operator=(const AliUEHist& corr);
88 virtual void Copy(TObject& c) const;
90 virtual Long64_t Merge(TCollection* list);
93 void SetStepNames(AliCFContainer* container);
94 void WeightHistogram(TH3* hist1, TH1* hist2);
96 AliCFContainer* fTrackHist[4]; // container for track level distributions in four regions (toward, away, min, max) and at four analysis steps
97 AliCFContainer* fEventHist; // container for event level distribution at four analysis steps
98 AliCFContainer* fTrackHistEfficiency; // container for tracking efficiency and contamination (all particles filled including leading one): axes: eta, pT, particle species
100 Float_t fEtaMin; // eta min for projections
101 Float_t fEtaMax; // eta max for projections
102 Float_t fPtMin; // pT min for projections (for track pT, not pT,lead)
103 Float_t fPtMax; // pT max for projections (for track pT, not pT,lead)
105 TH1F* fContaminationEnhancement; // histogram that contains the underestimation of secondaries in the MC as function of pT
107 Bool_t fCombineMinMax; // flag to combine min and max to a general towards region
109 AliCFContainer* fCache; //! cache variable for GetTrackEfficiency
111 ClassDef(AliUEHist, 3) // underlying event histogram container