]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/AliCorrectionMatrix3D.cxx
Protection aginst 0 returned by rndm as argument to log function
[u/mrichter/AliRoot.git] / PWG0 / AliCorrectionMatrix3D.cxx
CommitLineData
bf21645b 1/* $Id$ */
2
3// ------------------------------------------------------
4//
5// Class to handle 3d-corrections.
6//
7// ------------------------------------------------------
8//
9
10#include <TH3F.h>
11
12#include <AliLog.h>
13
14#include "AliCorrectionMatrix3D.h"
15
16//____________________________________________________________________
17ClassImp(AliCorrectionMatrix3D)
18
19//____________________________________________________________________
20AliCorrectionMatrix3D::AliCorrectionMatrix3D() :
21 AliCorrectionMatrix()
22{
23 // default constructor
24}
25
26//____________________________________________________________________
27AliCorrectionMatrix3D::AliCorrectionMatrix3D(const AliCorrectionMatrix3D& c)
28 : AliCorrectionMatrix(c)
29{
30 // copy constructor
31 ((AliCorrectionMatrix3D &)c).Copy(*this);
32}
33
34//____________________________________________________________________
35AliCorrectionMatrix3D::AliCorrectionMatrix3D(const Char_t* name, const Char_t* title,
36 Int_t nBinX, Float_t Xmin, Float_t Xmax,
37 Int_t nBinY, Float_t Ymin, Float_t Ymax,
38 Int_t nBinZ, Float_t Zmin, Float_t Zmax)
39 : AliCorrectionMatrix(name, title)
40{
41 //
42 // constructor
43 //
44
45 fhMeas = new TH3F(Form("meas_%s",name), Form("meas_%s",title), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax, nBinZ, Zmin, Zmax);
46 fhGene = new TH3F(Form("gene_%s",name), Form("gene_%s",title), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax, nBinZ, Zmin, Zmax);
47 fhCorr = new TH3F(Form("corr_%s",name), Form("corr_%s",title), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax, nBinZ, Zmin, Zmax);
48
49 fhMeas->Sumw2();
50 fhGene->Sumw2();
51 fhCorr->Sumw2();
52}
53
54//____________________________________________________________________
55AliCorrectionMatrix3D::~AliCorrectionMatrix3D()
56{
57 //
58 // destructor
59 //
60
61 // histograms already deleted in base class
62}
63
64//____________________________________________________________________
65TH3F* AliCorrectionMatrix3D::GetGeneratedHistogram()
66{
67 // return generated histogram casted to correct type
68 return dynamic_cast<TH3F*> (fhGene);
69}
70
71//____________________________________________________________________
72TH3F* AliCorrectionMatrix3D::GetMeasuredHistogram()
73{
74 // return measured histogram casted to correct type
75 return dynamic_cast<TH3F*> (fhMeas);
76}
77
78//____________________________________________________________________
79TH3F* AliCorrectionMatrix3D::GetCorrectionHistogram()
80{
81 // return correction histogram casted to correct type
82 return dynamic_cast<TH3F*> (fhCorr);
83}
84
85//____________________________________________________________________
86void AliCorrectionMatrix3D::FillMeas(Float_t ax, Float_t ay, Float_t az)
87{
88 // add value to measured histogram
89 GetMeasuredHistogram()->Fill(ax, ay, az);
90}
91
92//____________________________________________________________________
93void AliCorrectionMatrix3D::FillGene(Float_t ax, Float_t ay, Float_t az)
94{
95 // add value to generated histogram
96 GetGeneratedHistogram()->Fill(ax, ay, az);
97}
98
99//____________________________________________________________________
100Float_t AliCorrectionMatrix3D::GetCorrection(Float_t ax, Float_t ay, Float_t az) const
101{
102 // returns a value of the correction map
103 return fhCorr->GetBinContent(fhCorr->FindBin(ax, ay, az));
104}
105
106//____________________________________________________________________
107//void AliCorrectionMatrix3D::RemoveEdges(Float_t cut, Int_t nBinsXedge, Int_t nBinsYedge, Int_t nBinsZedge)
108void AliCorrectionMatrix3D::RemoveEdges(Float_t, Int_t, Int_t, Int_t)
109{
110 // so what do we do here...
111}
112
113//____________________________________________________________________
114void AliCorrectionMatrix3D::SaveHistograms()
115{
116 //
117 // saves the histograms
118 //
119
120 AliCorrectionMatrix::SaveHistograms();
121
122 WriteProjections(GetMeasuredHistogram());
123 WriteProjections(GetGeneratedHistogram());
124
125 if (GetCorrectionHistogram())
126 WriteProjections(GetCorrectionHistogram());
127}
128
129//____________________________________________________________________
130void AliCorrectionMatrix3D::WriteProjections(TH3F* hist)
131{
132 // write some projections to disk
133
134 TH1* proj = hist->Project3D("yx");
135 proj->SetXTitle(hist->GetXaxis()->GetTitle());
136 proj->SetYTitle(hist->GetYaxis()->GetTitle());
137
138 proj = hist->Project3D("zx");
139 proj->SetXTitle(hist->GetXaxis()->GetTitle());
140 proj->SetYTitle(hist->GetZaxis()->GetTitle());
141
142 proj = hist->Project3D("zy");
143 proj->SetXTitle(hist->GetYaxis()->GetTitle());
144 proj->SetYTitle(hist->GetZaxis()->GetTitle());
145}