#include <TH2F.h>
#include <TMath.h>
#include <AliLog.h>
#include "AliCorrectionMatrix2D.h"
ClassImp(AliCorrectionMatrix2D)
AliCorrectionMatrix2D::AliCorrectionMatrix2D() :
AliCorrectionMatrix()
{
}
AliCorrectionMatrix2D::AliCorrectionMatrix2D(const AliCorrectionMatrix2D& c)
: AliCorrectionMatrix(c)
{
((AliCorrectionMatrix2D &)c).Copy(*this);
}
AliCorrectionMatrix2D &AliCorrectionMatrix2D::operator=(const AliCorrectionMatrix2D &c)
{
if (this != &c)
((AliCorrectionMatrix2D &) c).Copy(*this);
return *this;
}
AliCorrectionMatrix2D::AliCorrectionMatrix2D(const Char_t* name, const Char_t* title,
Int_t nBinX, Float_t Xmin, Float_t Xmax,
Int_t nBinY, Float_t Ymin, Float_t Ymax)
: AliCorrectionMatrix(name, title)
{
Bool_t oldStatus = TH1::AddDirectoryStatus();
TH1::AddDirectory(kFALSE);
fhMeas = new TH2F("measured", Form("%s measured", GetTitle()), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax);
fhGene = new TH2F("generated", Form("%s generated", GetTitle()), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax);
fhCorr = new TH2F("correction", Form("%s correction", GetTitle()), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax);
TH1::AddDirectory(oldStatus);
fhMeas->Sumw2();
fhGene->Sumw2();
fhCorr->Sumw2();
}
AliCorrectionMatrix2D::AliCorrectionMatrix2D(const Char_t* name, const Char_t* title,
Int_t nBinX, Float_t *X, Int_t nBinY, Float_t *Y)
: AliCorrectionMatrix(name, title)
{
Bool_t oldStatus = TH1::AddDirectoryStatus();
TH1::AddDirectory(kFALSE);
fhMeas = new TH2F("measured", Form("%s measured",title), nBinX, X, nBinY, Y);
fhGene = new TH2F("generated", Form("%s generated",title), nBinX, X, nBinY, Y);
fhCorr = new TH2F("correction", Form("%s correction",title), nBinX, X, nBinY, Y);
TH1::AddDirectory(oldStatus);
fhMeas->Sumw2();
fhGene->Sumw2();
fhCorr->Sumw2();
}
AliCorrectionMatrix2D::~AliCorrectionMatrix2D()
{
}
TH2* AliCorrectionMatrix2D::GetGeneratedHistogram() const
{
return dynamic_cast<TH2*> (fhGene);
}
TH2* AliCorrectionMatrix2D::GetMeasuredHistogram() const
{
return dynamic_cast<TH2*> (fhMeas);
}
TH1* AliCorrectionMatrix2D::Get1DCorrectionHistogram(const Char_t* opt, Float_t min, Float_t max, Bool_t binomialErrors)
{
TH1D* meas1D = 0;
TH1D* gene1D = 0;
if (strcmp(opt,"x")==0) {
Int_t binMin = fhMeas->GetYaxis()->FindBin(min);
Int_t binMax = fhGene->GetYaxis()->FindBin(max);
if (min>=max) {
meas1D = ((TH2F*)fhMeas)->ProjectionX();
gene1D = ((TH2F*)fhGene)->ProjectionX();
}
else {
Printf("Getting 1D map. Including y-bins %d to %d", binMin, binMax);
meas1D = ((TH2F*)fhMeas)->ProjectionX(Form("%s_x_pm", GetName()),binMin,binMax);
gene1D = ((TH2F*)fhGene)->ProjectionX(Form("%s_x_pg", GetName()),binMin,binMax);
}
}
else if (strcmp(opt,"y")==0) {
Int_t binMin = fhMeas->GetXaxis()->FindBin(min);
Int_t binMax = fhMeas->GetXaxis()->FindBin(max);
if (min>=max) {
meas1D = ((TH2F*)fhMeas)->ProjectionY();
gene1D = ((TH2F*)fhGene)->ProjectionY();
}
else {
Printf("Getting 1D map. Including x-bins %d to %d \n", binMin, binMax);
meas1D = ((TH2F*)fhMeas)->ProjectionY(Form("%s_y_pm", GetName()), binMin, binMax);
gene1D = ((TH2F*)fhGene)->ProjectionY(Form("%s_y_pg", GetName()), binMin, binMax);
}
}
else {
Printf("ERROR: Invalid option");
return 0;
}
if (!binomialErrors)
{
gene1D->Sumw2();
for (Int_t bin=0; bin <= gene1D->GetNbinsX()+1; bin++)
{
gene1D->SetBinError(bin, TMath::Sqrt(gene1D->GetBinContent(bin)));
meas1D->SetBinError(bin, 0);
}
}
gene1D->SetName(Form("corr_1D_%s",fName.Data()));
gene1D->SetTitle(Form("corr_1D_%s",fName.Data()));
TH1* divided = (TH1*) gene1D->Clone(Form("corr_1D_%s",fName.Data()));
divided->Reset();
divided->Divide(gene1D, meas1D, 1, 1, (binomialErrors) ? "B" : "");
Printf("%p %p", gene1D, meas1D);
return (TH1F*)divided;
}
void AliCorrectionMatrix2D::FillMeas(Float_t ax, Float_t ay)
{
((TH2F*)fhMeas)->Fill(ax, ay);
}
void AliCorrectionMatrix2D::FillGene(Float_t ax, Float_t ay)
{
((TH2F*)fhGene)->Fill(ax, ay);
}
Float_t AliCorrectionMatrix2D::GetCorrection(Float_t ax, Float_t ay) const
{
return fhCorr->GetBinContent(fhCorr->FindBin(ax,ay));
}
void AliCorrectionMatrix2D::RemoveEdges(Float_t cut, Int_t nBinsXedge, Int_t nBinsYedge)
{
Int_t nBinsX = fhCorr->GetNbinsX();
Int_t nBinsY = fhCorr->GetNbinsY();
for (Int_t bx=0; bx<=nBinsX; bx++) {
for (Int_t by=0; by<=nBinsY; by++) {
if (fhCorr->GetBinContent(bx,by)>cut) {
fhCorr->SetBinContent(bx,by,0);
fhCorr->SetBinError(bx,by,0);
}
}
}
TH2F* tmp = (TH2F*)fhCorr->Clone("tmp");
tmp->Reset();
Bool_t done = kFALSE;
Int_t nBinsXCount = 0;
Int_t nBinsYCount = 0;
while (!done) {
if (nBinsXCount<nBinsXedge)
for (Int_t bx=0; bx<=nBinsX; bx++) {
for (Int_t by=0; by<=nBinsY; by++) {
if ((fhCorr->GetBinContent(bx+1,by)==0)||
(fhCorr->GetBinContent(bx-1,by)==0))
tmp->SetBinContent(bx,by,1);
}
}
if (nBinsYCount<nBinsYedge)
for (Int_t bx=0; bx<=nBinsX; bx++) {
for (Int_t by=0; by<=nBinsY; by++) {
if ((fhCorr->GetBinContent(bx,by+1)==0)||
(fhCorr->GetBinContent(bx,by-1)==0))
tmp->SetBinContent(bx,by,1);
}
}
for (Int_t bx=0; bx<=nBinsX; bx++) {
for (Int_t by=0; by<=nBinsY; by++) {
if (tmp->GetBinContent(bx,by)==1) {
fhCorr->SetBinContent(bx,by,0);
fhCorr->SetBinError(bx,by,0);
}
}
}
nBinsXCount++;
nBinsYCount++;
if ((nBinsXCount>=nBinsXedge)&&(nBinsYCount>=nBinsYedge)) done=kTRUE;
}
tmp->Delete();
}
void AliCorrectionMatrix2D::Rebin(Int_t x, Int_t y)
{
GetGeneratedHistogram()->Rebin2D(x, y);
GetMeasuredHistogram()->Rebin2D(x, y);
GetCorrectionHistogram()->Rebin2D(x, y);
Divide();
}
AliCorrectionMatrix2D.cxx:1 AliCorrectionMatrix2D.cxx:2 AliCorrectionMatrix2D.cxx:3 AliCorrectionMatrix2D.cxx:4 AliCorrectionMatrix2D.cxx:5 AliCorrectionMatrix2D.cxx:6 AliCorrectionMatrix2D.cxx:7 AliCorrectionMatrix2D.cxx:8 AliCorrectionMatrix2D.cxx:9 AliCorrectionMatrix2D.cxx:10 AliCorrectionMatrix2D.cxx:11 AliCorrectionMatrix2D.cxx:12 AliCorrectionMatrix2D.cxx:13 AliCorrectionMatrix2D.cxx:14 AliCorrectionMatrix2D.cxx:15 AliCorrectionMatrix2D.cxx:16 AliCorrectionMatrix2D.cxx:17 AliCorrectionMatrix2D.cxx:18 AliCorrectionMatrix2D.cxx:19 AliCorrectionMatrix2D.cxx:20 AliCorrectionMatrix2D.cxx:21 AliCorrectionMatrix2D.cxx:22 AliCorrectionMatrix2D.cxx:23 AliCorrectionMatrix2D.cxx:24 AliCorrectionMatrix2D.cxx:25 AliCorrectionMatrix2D.cxx:26 AliCorrectionMatrix2D.cxx:27 AliCorrectionMatrix2D.cxx:28 AliCorrectionMatrix2D.cxx:29 AliCorrectionMatrix2D.cxx:30 AliCorrectionMatrix2D.cxx:31 AliCorrectionMatrix2D.cxx:32 AliCorrectionMatrix2D.cxx:33 AliCorrectionMatrix2D.cxx:34 AliCorrectionMatrix2D.cxx:35 AliCorrectionMatrix2D.cxx:36 AliCorrectionMatrix2D.cxx:37 AliCorrectionMatrix2D.cxx:38 AliCorrectionMatrix2D.cxx:39 AliCorrectionMatrix2D.cxx:40 AliCorrectionMatrix2D.cxx:41 AliCorrectionMatrix2D.cxx:42 AliCorrectionMatrix2D.cxx:43 AliCorrectionMatrix2D.cxx:44 AliCorrectionMatrix2D.cxx:45 AliCorrectionMatrix2D.cxx:46 AliCorrectionMatrix2D.cxx:47 AliCorrectionMatrix2D.cxx:48 AliCorrectionMatrix2D.cxx:49 AliCorrectionMatrix2D.cxx:50 AliCorrectionMatrix2D.cxx:51 AliCorrectionMatrix2D.cxx:52 AliCorrectionMatrix2D.cxx:53 AliCorrectionMatrix2D.cxx:54 AliCorrectionMatrix2D.cxx:55 AliCorrectionMatrix2D.cxx:56 AliCorrectionMatrix2D.cxx:57 AliCorrectionMatrix2D.cxx:58 AliCorrectionMatrix2D.cxx:59 AliCorrectionMatrix2D.cxx:60 AliCorrectionMatrix2D.cxx:61 AliCorrectionMatrix2D.cxx:62 AliCorrectionMatrix2D.cxx:63 AliCorrectionMatrix2D.cxx:64 AliCorrectionMatrix2D.cxx:65 AliCorrectionMatrix2D.cxx:66 AliCorrectionMatrix2D.cxx:67 AliCorrectionMatrix2D.cxx:68 AliCorrectionMatrix2D.cxx:69 AliCorrectionMatrix2D.cxx:70 AliCorrectionMatrix2D.cxx:71 AliCorrectionMatrix2D.cxx:72 AliCorrectionMatrix2D.cxx:73 AliCorrectionMatrix2D.cxx:74 AliCorrectionMatrix2D.cxx:75 AliCorrectionMatrix2D.cxx:76 AliCorrectionMatrix2D.cxx:77 AliCorrectionMatrix2D.cxx:78 AliCorrectionMatrix2D.cxx:79 AliCorrectionMatrix2D.cxx:80 AliCorrectionMatrix2D.cxx:81 AliCorrectionMatrix2D.cxx:82 AliCorrectionMatrix2D.cxx:83 AliCorrectionMatrix2D.cxx:84 AliCorrectionMatrix2D.cxx:85 AliCorrectionMatrix2D.cxx:86 AliCorrectionMatrix2D.cxx:87 AliCorrectionMatrix2D.cxx:88 AliCorrectionMatrix2D.cxx:89 AliCorrectionMatrix2D.cxx:90 AliCorrectionMatrix2D.cxx:91 AliCorrectionMatrix2D.cxx:92 AliCorrectionMatrix2D.cxx:93 AliCorrectionMatrix2D.cxx:94 AliCorrectionMatrix2D.cxx:95 AliCorrectionMatrix2D.cxx:96 AliCorrectionMatrix2D.cxx:97 AliCorrectionMatrix2D.cxx:98 AliCorrectionMatrix2D.cxx:99 AliCorrectionMatrix2D.cxx:100 AliCorrectionMatrix2D.cxx:101 AliCorrectionMatrix2D.cxx:102 AliCorrectionMatrix2D.cxx:103 AliCorrectionMatrix2D.cxx:104 AliCorrectionMatrix2D.cxx:105 AliCorrectionMatrix2D.cxx:106 AliCorrectionMatrix2D.cxx:107 AliCorrectionMatrix2D.cxx:108 AliCorrectionMatrix2D.cxx:109 AliCorrectionMatrix2D.cxx:110 AliCorrectionMatrix2D.cxx:111 AliCorrectionMatrix2D.cxx:112 AliCorrectionMatrix2D.cxx:113 AliCorrectionMatrix2D.cxx:114 AliCorrectionMatrix2D.cxx:115 AliCorrectionMatrix2D.cxx:116 AliCorrectionMatrix2D.cxx:117 AliCorrectionMatrix2D.cxx:118 AliCorrectionMatrix2D.cxx:119 AliCorrectionMatrix2D.cxx:120 AliCorrectionMatrix2D.cxx:121 AliCorrectionMatrix2D.cxx:122 AliCorrectionMatrix2D.cxx:123 AliCorrectionMatrix2D.cxx:124 AliCorrectionMatrix2D.cxx:125 AliCorrectionMatrix2D.cxx:126 AliCorrectionMatrix2D.cxx:127 AliCorrectionMatrix2D.cxx:128 AliCorrectionMatrix2D.cxx:129 AliCorrectionMatrix2D.cxx:130 AliCorrectionMatrix2D.cxx:131 AliCorrectionMatrix2D.cxx:132 AliCorrectionMatrix2D.cxx:133 AliCorrectionMatrix2D.cxx:134 AliCorrectionMatrix2D.cxx:135 AliCorrectionMatrix2D.cxx:136 AliCorrectionMatrix2D.cxx:137 AliCorrectionMatrix2D.cxx:138 AliCorrectionMatrix2D.cxx:139 AliCorrectionMatrix2D.cxx:140 AliCorrectionMatrix2D.cxx:141 AliCorrectionMatrix2D.cxx:142 AliCorrectionMatrix2D.cxx:143 AliCorrectionMatrix2D.cxx:144 AliCorrectionMatrix2D.cxx:145 AliCorrectionMatrix2D.cxx:146 AliCorrectionMatrix2D.cxx:147 AliCorrectionMatrix2D.cxx:148 AliCorrectionMatrix2D.cxx:149 AliCorrectionMatrix2D.cxx:150 AliCorrectionMatrix2D.cxx:151 AliCorrectionMatrix2D.cxx:152 AliCorrectionMatrix2D.cxx:153 AliCorrectionMatrix2D.cxx:154 AliCorrectionMatrix2D.cxx:155 AliCorrectionMatrix2D.cxx:156 AliCorrectionMatrix2D.cxx:157 AliCorrectionMatrix2D.cxx:158 AliCorrectionMatrix2D.cxx:159 AliCorrectionMatrix2D.cxx:160 AliCorrectionMatrix2D.cxx:161 AliCorrectionMatrix2D.cxx:162 AliCorrectionMatrix2D.cxx:163 AliCorrectionMatrix2D.cxx:164 AliCorrectionMatrix2D.cxx:165 AliCorrectionMatrix2D.cxx:166 AliCorrectionMatrix2D.cxx:167 AliCorrectionMatrix2D.cxx:168 AliCorrectionMatrix2D.cxx:169 AliCorrectionMatrix2D.cxx:170 AliCorrectionMatrix2D.cxx:171 AliCorrectionMatrix2D.cxx:172 AliCorrectionMatrix2D.cxx:173 AliCorrectionMatrix2D.cxx:174 AliCorrectionMatrix2D.cxx:175 AliCorrectionMatrix2D.cxx:176 AliCorrectionMatrix2D.cxx:177 AliCorrectionMatrix2D.cxx:178 AliCorrectionMatrix2D.cxx:179 AliCorrectionMatrix2D.cxx:180 AliCorrectionMatrix2D.cxx:181 AliCorrectionMatrix2D.cxx:182 AliCorrectionMatrix2D.cxx:183 AliCorrectionMatrix2D.cxx:184 AliCorrectionMatrix2D.cxx:185 AliCorrectionMatrix2D.cxx:186 AliCorrectionMatrix2D.cxx:187 AliCorrectionMatrix2D.cxx:188 AliCorrectionMatrix2D.cxx:189 AliCorrectionMatrix2D.cxx:190 AliCorrectionMatrix2D.cxx:191 AliCorrectionMatrix2D.cxx:192 AliCorrectionMatrix2D.cxx:193 AliCorrectionMatrix2D.cxx:194 AliCorrectionMatrix2D.cxx:195 AliCorrectionMatrix2D.cxx:196 AliCorrectionMatrix2D.cxx:197 AliCorrectionMatrix2D.cxx:198 AliCorrectionMatrix2D.cxx:199 AliCorrectionMatrix2D.cxx:200 AliCorrectionMatrix2D.cxx:201 AliCorrectionMatrix2D.cxx:202 AliCorrectionMatrix2D.cxx:203 AliCorrectionMatrix2D.cxx:204 AliCorrectionMatrix2D.cxx:205 AliCorrectionMatrix2D.cxx:206 AliCorrectionMatrix2D.cxx:207 AliCorrectionMatrix2D.cxx:208 AliCorrectionMatrix2D.cxx:209 AliCorrectionMatrix2D.cxx:210 AliCorrectionMatrix2D.cxx:211 AliCorrectionMatrix2D.cxx:212 AliCorrectionMatrix2D.cxx:213 AliCorrectionMatrix2D.cxx:214 AliCorrectionMatrix2D.cxx:215 AliCorrectionMatrix2D.cxx:216 AliCorrectionMatrix2D.cxx:217 AliCorrectionMatrix2D.cxx:218 AliCorrectionMatrix2D.cxx:219 AliCorrectionMatrix2D.cxx:220 AliCorrectionMatrix2D.cxx:221 AliCorrectionMatrix2D.cxx:222 AliCorrectionMatrix2D.cxx:223 AliCorrectionMatrix2D.cxx:224 AliCorrectionMatrix2D.cxx:225 AliCorrectionMatrix2D.cxx:226 AliCorrectionMatrix2D.cxx:227 AliCorrectionMatrix2D.cxx:228 AliCorrectionMatrix2D.cxx:229 AliCorrectionMatrix2D.cxx:230 AliCorrectionMatrix2D.cxx:231 AliCorrectionMatrix2D.cxx:232 AliCorrectionMatrix2D.cxx:233 AliCorrectionMatrix2D.cxx:234 AliCorrectionMatrix2D.cxx:235 AliCorrectionMatrix2D.cxx:236 AliCorrectionMatrix2D.cxx:237 AliCorrectionMatrix2D.cxx:238 AliCorrectionMatrix2D.cxx:239 AliCorrectionMatrix2D.cxx:240 AliCorrectionMatrix2D.cxx:241 AliCorrectionMatrix2D.cxx:242 AliCorrectionMatrix2D.cxx:243 AliCorrectionMatrix2D.cxx:244 AliCorrectionMatrix2D.cxx:245 AliCorrectionMatrix2D.cxx:246 AliCorrectionMatrix2D.cxx:247 AliCorrectionMatrix2D.cxx:248 AliCorrectionMatrix2D.cxx:249 AliCorrectionMatrix2D.cxx:250 AliCorrectionMatrix2D.cxx:251 AliCorrectionMatrix2D.cxx:252 AliCorrectionMatrix2D.cxx:253 AliCorrectionMatrix2D.cxx:254 AliCorrectionMatrix2D.cxx:255 AliCorrectionMatrix2D.cxx:256 AliCorrectionMatrix2D.cxx:257 AliCorrectionMatrix2D.cxx:258 AliCorrectionMatrix2D.cxx:259 AliCorrectionMatrix2D.cxx:260 AliCorrectionMatrix2D.cxx:261 AliCorrectionMatrix2D.cxx:262 AliCorrectionMatrix2D.cxx:263 AliCorrectionMatrix2D.cxx:264 AliCorrectionMatrix2D.cxx:265 AliCorrectionMatrix2D.cxx:266 AliCorrectionMatrix2D.cxx:267 AliCorrectionMatrix2D.cxx:268 AliCorrectionMatrix2D.cxx:269 AliCorrectionMatrix2D.cxx:270 AliCorrectionMatrix2D.cxx:271 AliCorrectionMatrix2D.cxx:272 AliCorrectionMatrix2D.cxx:273 AliCorrectionMatrix2D.cxx:274 AliCorrectionMatrix2D.cxx:275 AliCorrectionMatrix2D.cxx:276 AliCorrectionMatrix2D.cxx:277