// divides generated by measured to get the correction
//
- if (!fhMeas || !fhGene || !fhCorr)
+ if (!fhMeas || !fhGene || !fhCorr) {
+ AliDebug(AliLog::kError, "measured or generated histograms not available");
return;
+ }
fhCorr->Divide(fhGene, fhMeas, 1, 1, "B");
fhGene->Multiply(fhMeas, fhCorr, 1, 1, "B");
}
+//____________________________________________________________________
+void AliCorrectionMatrix::Add(AliCorrectionMatrix* aMatrixToAdd, Float_t c) {
+ //
+ // adds the measured and generated of aMatrixToAdd to measured and generated of this
+ //
+ // NB: the correction will naturally stay the same
+
+ fhMeas->Add(aMatrixToAdd->GetMeasuredHistogram(), c);
+ fhGene->Add(aMatrixToAdd->GetGeneratedHistogram(), c);
+}
+
+
//____________________________________________________________________
Bool_t AliCorrectionMatrix::LoadHistograms(const Char_t* dir)
{
if (!fhCorr)
return;
- for (Int_t x=1; x<=fhCorr->GetNbinsX(); ++x)
- for (Int_t y=1; y<=fhCorr->GetNbinsY(); ++y)
- for (Int_t z=1; z<=fhCorr->GetNbinsZ(); ++z)
+ for (Int_t x=0; x<=fhCorr->GetNbinsX()+1; ++x)
+ for (Int_t y=0; y<=fhCorr->GetNbinsY()+1; ++y)
+ for (Int_t z=0; z<=fhCorr->GetNbinsZ()+1; ++z)
+ {
fhCorr->SetBinContent(x, y, z, 1);
+ fhCorr->SetBinError(x, y, z, 0);
+ }
+}
+
+//____________________________________________________________________
+void AliCorrectionMatrix::Scale(Double_t factor)
+{
+ // scales the generated and measured histogram with the given factor
+
+ Printf("Scaling histograms with %f", factor);
+
+ fhMeas->Scale(factor);
+ fhGene->Scale(factor);
+}
+
+//____________________________________________________________________
+void AliCorrectionMatrix::ResetErrorsOnCorrections()
+{
+ // set the errors on the correction matrix to 0
+
+ if (!fhCorr)
+ return;
+
+ for (Int_t x=0; x<=fhCorr->GetNbinsX()+1; ++x)
+ for (Int_t y=0; y<=fhCorr->GetNbinsY()+1; ++y)
+ for (Int_t z=0; z<=fhCorr->GetNbinsZ()+1; ++z)
+ fhCorr->SetBinError(x, y, z, 0);
}