handle err==0 for rounding.

This commit is contained in:
2025-07-03 10:19:09 +02:00
parent 7451800295
commit f9ddb4e668

View File

@@ -2311,6 +2311,17 @@ Bool_t PFitter::ExecuteSave(Bool_t firstSave)
// CalcExpectedChiSquare handles both, chisq and mlh // CalcExpectedChiSquare handles both, chisq and mlh
Bool_t ok; Bool_t ok;
PDoubleVector par_r = ParamRound(param, err, ok); PDoubleVector par_r = ParamRound(param, err, ok);
std::cout << "debug> ok=" << ok << std::endl;
std::cout << "debug> param=";
for (auto p : param) std::cout << p << ", ";
std::cout << std::endl;
std::cout << "debug> err=";
for (auto e : param) std::cout << e << ", ";
std::cout << std::endl;
std::cout << "debug> par_r=";
for (auto p : par_r) std::cout << p << ", ";
std::cout << std::endl;
if (!ok) if (!ok)
par_r = param; par_r = param;
if (fDKSReady) if (fDKSReady)
@@ -3198,9 +3209,13 @@ PDoubleVector PFitter::ParamRound(const PDoubleVector &par, const PDoubleVector
int exp; int exp;
double dval; double dval;
for (unsigned int i=0; i<par.size(); i++) { for (unsigned int i=0; i<par.size(); i++) {
exp = round(log10(fabs(err[i])))-2; if (err[i] != 0.0) {
dval = round(par[i]*pow(10.0, -exp))/pow(10.0, -exp); exp = round(log10(fabs(err[i])))-2;
par_r[i] = dval; dval = round(par[i]*pow(10.0, -exp))/pow(10.0, -exp);
par_r[i] = dval;
} else {
par_r[i] = par[i];
}
} }
return par_r; return par_r;