Int_t AliUnfolding::fgSkipBinsBegin = 0;
Float_t AliUnfolding::fgMinuitStepSize = 0.1; // (usually not needed to be changed) step size in minimization
Float_t AliUnfolding::fgMinuitPrecision = 1e-6; // minuit precision
+Int_t AliUnfolding::fgMinuitMaxIterations = 5000; // minuit maximum number of iterations
Bool_t AliUnfolding::fgMinimumInitialValue = kFALSE; // set all initial values at least to the smallest value among the initial values
Float_t AliUnfolding::fgMinimumInitialValueFix = -1;
Bool_t AliUnfolding::fgNormalizeInput = kFALSE; // normalize input spectrum
// set precision
minuit->SetPrecision(fgMinuitPrecision);
+ minuit->SetMaxIterations(fgMinuitMaxIterations);
+
for (Int_t i=0; i<fgMaxParams; i++)
(*fgEntropyAPriori)[i] = 1;
{
results[i] = minuit->GetParameter(i);
Double_t value = results[i] * results[i];
- // error is : (relError) * (value) = (minuit->GetParError(i) / minuit->GetParameter(i)) * (minuit->GetParameter(i) * minuit->GetParameter(i))
+ // error is : 2 * (relError on results[i]) * (value) = 2 * (minuit->GetParError(i) / minuit->GetParameter(i)) * (minuit->GetParameter(i) * minuit->GetParameter(i))
Double_t error = 0;
if (TMath::IsNaN(minuit->GetParError(i)))
Printf("WARNING: Parameter %d error is nan", i);
else
- error = minuit->GetParError(i) * results[i];
+ error = 2 * minuit->GetParError(i) * results[i];
if (efficiency)
{
result->SetBinContent(i+1, value);
result->SetBinError(i+1, error);
}
-
- fgCallCount = 0;
+
+ Int_t tmpCallCount = fgCallCount;
+ fgCallCount = 0; // needs to be 0 so that the Chi2Function prints its output
Chi2Function(dummy, 0, chi2, results, 0);
- Printf("AliUnfolding::UnfoldWithMinuit: Chi2 of final parameters is = %f", chi2);
+
+ Printf("AliUnfolding::UnfoldWithMinuit: iterations %d. Chi2 of final parameters is = %f", tmpCallCount, chi2);
delete[] results;
//meas2->GetXaxis()->SetLimits(0,fgMaxInput);
meas2->SetBit(kCannotPick);
DrawGuess(params, presult, pres, ppen, reuseHists,unfolded);
+ delete [] params;
}
//____________________________________________________________________
void AliUnfolding::RedrawInteractive() {
Double_t* params = new Double_t[fgMaxParams];
for (Int_t i=0; i<TMath::Min(fgMaxParams, corrected->GetNbinsX()); i++)
- params[i] = TMath::Sqrt(fabs(corrected->GetBinContent(i+1)*(*fgEfficiency)(i)));
+ params[i] = TMath::Sqrt(TMath::Abs(corrected->GetBinContent(i+1)*(*fgEfficiency)(i)));
- return GetResidualsPlot(params);
+ TH1 * plot = GetResidualsPlot(params);
+ delete [] params;
+ return plot;
}
//____________________________________________________________________