3 // ------------------------------------------------------
5 // Class to handle 3d-corrections.
7 // ------------------------------------------------------
14 #include "AliCorrectionMatrix3D.h"
15 #include "AliPWG0Helper.h"
17 //____________________________________________________________________
18 ClassImp(AliCorrectionMatrix3D)
20 //____________________________________________________________________
21 AliCorrectionMatrix3D::AliCorrectionMatrix3D() :
24 // default constructor
27 //____________________________________________________________________
28 AliCorrectionMatrix3D::AliCorrectionMatrix3D(const AliCorrectionMatrix3D& c)
29 : AliCorrectionMatrix(c)
32 ((AliCorrectionMatrix3D &)c).Copy(*this);
35 //____________________________________________________________________
36 AliCorrectionMatrix3D &AliCorrectionMatrix3D::operator=(const AliCorrectionMatrix3D &c)
41 ((AliCorrectionMatrix3D &) c).Copy(*this);
46 //____________________________________________________________________
47 AliCorrectionMatrix3D::AliCorrectionMatrix3D(const Char_t* name, const Char_t* title,
48 Int_t nBinX, Float_t Xmin, Float_t Xmax,
49 Int_t nBinY, Float_t Ymin, Float_t Ymax,
50 Int_t nBinZ, Float_t Zmin, Float_t Zmax)
51 : AliCorrectionMatrix(name, title)
57 fhMeas = new TH3F(Form("meas_%s",name), Form("meas_%s",title), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax, nBinZ, Zmin, Zmax);
58 fhGene = new TH3F(Form("gene_%s",name), Form("gene_%s",title), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax, nBinZ, Zmin, Zmax);
59 fhCorr = new TH3F(Form("corr_%s",name), Form("corr_%s",title), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax, nBinZ, Zmin, Zmax);
66 AliCorrectionMatrix3D::AliCorrectionMatrix3D(const Char_t* name, const Char_t* title,
67 Int_t nBinX, Float_t Xmin, Float_t Xmax,
68 Int_t nBinY, Float_t Ymin, Float_t Ymax,
69 Int_t nBinZ, const Float_t* zbins)
70 : AliCorrectionMatrix(name, title)
72 // constructor with variable bin sizes
74 Float_t* binLimitsX = new Float_t[nBinX+1];
75 for (Int_t i=0; i<=nBinX; ++i)
76 binLimitsX[i] = Xmin + (Xmax - Xmin) / nBinX * i;
78 Float_t* binLimitsY = new Float_t[nBinY+1];
79 for (Int_t i=0; i<=nBinY; ++i)
80 binLimitsY[i] = Ymin + (Ymax - Ymin) / nBinY * i;
82 fhMeas = new TH3F(Form("meas_%s",name), Form("meas_%s",title), nBinX, binLimitsX, nBinY, binLimitsY, nBinZ, zbins);
83 fhGene = new TH3F(Form("gene_%s",name), Form("gene_%s",title), nBinX, binLimitsX, nBinY, binLimitsY, nBinZ, zbins);
84 fhCorr = new TH3F(Form("corr_%s",name), Form("corr_%s",title), nBinX, binLimitsX, nBinY, binLimitsY, nBinZ, zbins);
94 //____________________________________________________________________
95 AliCorrectionMatrix3D::~AliCorrectionMatrix3D()
101 // histograms already deleted in base class
104 //____________________________________________________________________
105 TH3F* AliCorrectionMatrix3D::GetGeneratedHistogram()
107 // return generated histogram casted to correct type
108 return dynamic_cast<TH3F*> (fhGene);
111 //____________________________________________________________________
112 TH3F* AliCorrectionMatrix3D::GetMeasuredHistogram()
114 // return measured histogram casted to correct type
115 return dynamic_cast<TH3F*> (fhMeas);
118 //____________________________________________________________________
119 TH3F* AliCorrectionMatrix3D::GetCorrectionHistogram()
121 // return correction histogram casted to correct type
122 return dynamic_cast<TH3F*> (fhCorr);
125 //____________________________________________________________________
126 void AliCorrectionMatrix3D::FillMeas(Float_t ax, Float_t ay, Float_t az)
128 // add value to measured histogram
129 GetMeasuredHistogram()->Fill(ax, ay, az);
132 //____________________________________________________________________
133 void AliCorrectionMatrix3D::FillGene(Float_t ax, Float_t ay, Float_t az)
135 // add value to generated histogram
136 GetGeneratedHistogram()->Fill(ax, ay, az);
139 //____________________________________________________________________
140 Float_t AliCorrectionMatrix3D::GetCorrection(Float_t ax, Float_t ay, Float_t az) const
142 // returns a value of the correction map
143 return fhCorr->GetBinContent(fhCorr->FindBin(ax, ay, az));
146 //____________________________________________________________________
147 //void AliCorrectionMatrix3D::RemoveEdges(Float_t cut, Int_t nBinsXedge, Int_t nBinsYedge, Int_t nBinsZedge)
148 void AliCorrectionMatrix3D::RemoveEdges(Float_t, Int_t, Int_t, Int_t)
150 // so what do we do here...
153 //____________________________________________________________________
154 void AliCorrectionMatrix3D::SaveHistograms()
157 // saves the histograms
160 AliCorrectionMatrix::SaveHistograms();
162 if (GetGeneratedHistogram() && GetMeasuredHistogram())
163 AliPWG0Helper::CreateDividedProjections(GetGeneratedHistogram(), GetMeasuredHistogram());