Dear ROOT community,
I’m trying to fit a large number of Gaussians but find that this is compromised by the fact that the fitting process fails with TH1F::Fit(TF1). However, when I use the very same (“gaus”) fitting by right clicking the TH1F on the TCanvas and proceed to fit from the FitPanel, the fit converges without issue. Obviously, this is too slow for it to be repeatable for large numbers of fits.
I tried fixing reasonable parameters (going even so far as to provide the end parameters of the FitPanel Fit) but the fit still fails to converge. I tried fitting using the same commands as in the code in the root interpreter as well and it failed as well (as it should to be fair). Since I’m using default parameters for everything, I’m not sure what I am doing wrong and how the two fits are different.
Code:
TH1F *h1 = new TH1F("h1",";Charge [ADC];#",4096,0,4095);
TF1* f = new TF1("f","gaus",100,600);
for(int i=0;i<nev;i++){
mppc->GetEntry(i);
h1->Fill(chg[1]);
}
f->SetParameters(4500,333,102);
h1->Fit("f","W"); //I tried without this as well but was hoping it might help the convergence
h1->Fit("f");
TCanvas *c1 = new TCanvas("c1","c1",1600,900);
c1->SetLogy();
h1->Draw();
f->Draw("SAME"); //I tried drawing the function without the fit as well and it fits indeed
The terminal output:
****************************************
Invalid FitResult (status = 4 )
****************************************
Minimizer is Minuit / Migrad
Chi2 = 3.7226e+13
NDf = 1966
Edm = 6.47756e+14
NCalls = 254
Constant = 4.12274e+08 +/- 1.10094e+06
Mean = -6.68952 +/- 137604
Sigma = 2.74433 +/- 8.26948e+07 (limited)
FCN=1.87719e+07 FROM HESSE STATUS=FAILED 11 CALLS 130 TOTAL
EDM=0 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 100.0 per cent
EXT PARAMETER APPROXIMATE STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 Constant -1.14120e+08 1.41421e+00 0.00000e+00 0.00000e+00
2 Mean 1.37631e+05 1.41421e+00 0.00000e+00 0.00000e+00
3 Sigma 1.01437e+02 5.28128e+02 0.00000e+00 0.00000e+00
TFitEditor::DoFit - using function f 0x55921ab63a90
FCN=13582.4 FROM MIGRAD STATUS=CONVERGED 64 CALLS 65 TOTAL
EDM=7.07664e-13 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 2.2 per cent
EXT PARAMETER STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 Constant 4.56636e+03 5.74791e+00 4.70786e-03 3.45339e-07
2 Mean 3.35125e+02 1.25313e-01 -7.15758e-05 -1.97415e-06
3 Sigma 9.97904e+01 1.09393e-01 5.38063e-07 4.23371e-03
Both fits operate between 170 and 600 (the purpose being to fit all peaks for multiple files)
pics: at the top, the result after using the code, at the bottom the fit through the FitPanel: