]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/JetTasks/AliUEHist.h
New analysis devoted to shower shape studies
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliUEHist.h
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"
12
13 class AliCFContainer;
14 class TH1;
15 class TH1F;
16 class TH3;
17 class TH1D;
18 class TH2D;
19 class TCollection;
20 class AliCFGridSparse;
21
22 class AliUEHist : public TObject
23 {
24  public:
25   AliUEHist(const char* reqHist = "");
26   virtual ~AliUEHist();
27   
28   const Int_t fkRegions;
29   enum Region { kToward = 0, kAway, kMin, kMax };
30   
31   static const Int_t fgkCFSteps;
32   enum CFStep { kCFStepAll = 0, kCFStepTriggered, kCFStepVertex, kCFStepAnaTopology, kCFStepTrackedOnlyPrim, kCFStepTracked, kCFStepReconstructed, kCFStepRealLeading, kCFStepBiasStudy, kCFStepBiasStudy2 };
33   
34   const char* GetRegionTitle(Region region);
35   const char* GetStepTitle(CFStep step);
36   
37   AliCFContainer* GetTrackHist(Region region) { return fTrackHist[region]; }
38   AliCFContainer* GetEventHist() { return fEventHist; }
39   AliCFContainer* GetTrackHistEfficiency()     { return fTrackHistEfficiency; }
40   
41   void SetTrackHist(Region region, AliCFContainer* hist) { fTrackHist[region] = hist; }
42   void SetEventHist(AliCFContainer* hist) { fEventHist = hist; }
43   
44   void CopyReconstructedData(AliUEHist* from);
45   
46   TH1D* GetUEHist(CFStep step, Region region, Float_t ptLeadMin = -1, Float_t ptLeadMax = -1);
47   
48   TH1* GetTrackEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Int_t source = 1);
49   TH1* GetEventEfficiency(CFStep step1, CFStep step2, Int_t axis1, Int_t axis2 = -1, Float_t ptLeadMin = -1, Float_t ptLeadMax = -1);
50   TH1* GetBias(CFStep step1, CFStep step2, Int_t region, const char* axis, Float_t leadPtMin = 0, Float_t leadPtMax = 0);
51   
52   TH1D* GetTrackingEfficiency(Int_t axis);
53   TH2D* GetTrackingEfficiency();
54   
55   TH1D* GetTrackingContamination(Int_t axis);
56   TH2D* GetTrackingContamination();
57   
58   TH1D* GetTrackingCorrection(Int_t axis);
59   TH2D* GetTrackingCorrection();
60   
61   TH1D* GetTrackingEfficiencyCorrection(Int_t axis);
62   TH2D* GetTrackingEfficiencyCorrection();
63   
64   void Correct(AliUEHist* corrections);
65   void CorrectTracks(CFStep step1, CFStep step2, TH1* trackCorrection, Int_t var1, Int_t var2 = -1);
66   void CorrectTracks(CFStep step1, CFStep step2, Int_t region, TH1* trackCorrection, Int_t var1, Int_t var2 = -1);
67   void CorrectEvents(CFStep step1, CFStep step2, TH1D* eventCorrection, Int_t var);
68   
69   void SetCombineMinMax(Bool_t flag) { fCombineMinMax = flag; }
70   
71   void SetEtaRange(Float_t etaMin, Float_t etaMax) { fEtaMin = etaMin; fEtaMax = etaMax; }
72   void SetPtRange(Float_t ptMin, Float_t ptMax)    { fPtMin = ptMin; fPtMax = ptMax; }
73   
74   void SetContaminationEnhancement(TH1F* hist)    { fContaminationEnhancement = hist; }
75   
76   void CountEmptyBins(AliUEHist::CFStep step, Float_t ptLeadMin, Float_t ptLeadMax);
77   
78   AliUEHist(const AliUEHist &c);
79   AliUEHist& operator=(const AliUEHist& corr);
80   virtual void Copy(TObject& c) const;
81
82   virtual Long64_t Merge(TCollection* list);
83   
84 protected:
85   void SetStepNames(AliCFContainer* container);
86   void WeightHistogram(TH3* hist1, TH1* hist2);
87   void SetBinLimits(AliCFGridSparse* grid);
88   void ResetBinLimits(AliCFGridSparse* grid);
89
90   AliCFContainer* fTrackHist[4];      // container for track level distributions in four regions (toward, away, min, max) and at four analysis steps
91   AliCFContainer* fEventHist;         // container for event level distribution at four analysis steps
92   AliCFContainer* fTrackHistEfficiency; // container for tracking efficiency and contamination (all particles filled including leading one): axes: eta, pT, particle species
93   
94   Float_t fEtaMin;                    // eta min for projections
95   Float_t fEtaMax;                    // eta max for projections
96   Float_t fPtMin;                     // pT min for projections (for track pT, not pT,lead)
97   Float_t fPtMax;                     // pT max for projections (for track pT, not pT,lead)
98   
99   TH1F* fContaminationEnhancement;    // histogram that contains the underestimation of secondaries in the MC as function of pT
100   
101   Bool_t fCombineMinMax;              // flag to combine min and max to a general towards region
102   
103   AliCFContainer* fCache;             //! cache variable for GetTrackEfficiency
104   
105   ClassDef(AliUEHist, 3) // underlying event histogram container
106 };
107
108 #endif