fixed error handling in order to make it coherent
This commit is contained in:
parent
13c48c72f0
commit
0508e8173d
@ -70,6 +70,7 @@ PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection) :
|
||||
// init class variables
|
||||
fFitterFcn = 0;
|
||||
fFcnMin = 0;
|
||||
fMnUserParamState = 0;
|
||||
|
||||
// check msr minuit commands
|
||||
if (!CheckCommands()) {
|
||||
@ -324,6 +325,12 @@ bool PFitter::ExecuteHesse()
|
||||
return false;
|
||||
}
|
||||
|
||||
// keep the user parameter state
|
||||
if (fMnUserParamState) {
|
||||
delete fMnUserParamState;
|
||||
}
|
||||
fMnUserParamState = new ROOT::Minuit2::MnUserParameterState(mnState);
|
||||
|
||||
// fill parabolic errors
|
||||
for (unsigned int i=0; i<fParams.size(); i++) {
|
||||
fRunInfo->SetMsrParamStep(i, mnState.Error(i));
|
||||
@ -368,6 +375,12 @@ bool PFitter::ExecuteMigrad()
|
||||
}
|
||||
fFcnMin = new ROOT::Minuit2::FunctionMinimum(min);
|
||||
|
||||
// keep user parameter state
|
||||
if (fMnUserParamState) {
|
||||
delete fMnUserParamState;
|
||||
}
|
||||
fMnUserParamState = new ROOT::Minuit2::MnUserParameterState(min.UserState());
|
||||
|
||||
// fill run info
|
||||
for (unsigned int i=0; i<fParams.size(); i++) {
|
||||
fRunInfo->SetMsrParamValue(i, min.UserState().Value(i));
|
||||
@ -427,6 +440,12 @@ cout << endl << "maxfcn=" << maxfcn << endl;
|
||||
}
|
||||
fFcnMin = new ROOT::Minuit2::FunctionMinimum(min);
|
||||
|
||||
// keep user parameter state
|
||||
if (fMnUserParamState) {
|
||||
delete fMnUserParamState;
|
||||
}
|
||||
fMnUserParamState = new ROOT::Minuit2::MnUserParameterState(min.UserState());
|
||||
|
||||
// fill run info
|
||||
for (unsigned int i=0; i<fParams.size(); i++) {
|
||||
fRunInfo->SetMsrParamValue(i, min.UserState().Value(i));
|
||||
@ -568,7 +587,7 @@ bool PFitter::ExecuteSave()
|
||||
fout.setf(ios::left, ios::adjustfield);
|
||||
fout.precision(6);
|
||||
fout.width(11);
|
||||
fout << mnState.Error(i);
|
||||
fout << fMnUserParamState->Error(i);
|
||||
// write minos errors
|
||||
if (fParams[i].fPosErrorPresent) {
|
||||
fout.setf(ios::left, ios::adjustfield);
|
||||
|
@ -992,7 +992,6 @@ bool PMsrHandler::HandleFitParameterEntry(PMsrLines &lines)
|
||||
cout << endl;
|
||||
} else { // everything is OK, therefore add the parameter to the parameter list
|
||||
fParam.push_back(param);
|
||||
cout << endl << ">> PMsrHandler::HandleFitParameterEntry: i=" << fParam.size() << ", param.fLowerBoundary=" << param.fLowerBoundary << ", param.fUpperBoundary=" << param.fUpperBoundary;
|
||||
}
|
||||
|
||||
// clean up
|
||||
|
@ -82,7 +82,8 @@ class PFitter
|
||||
|
||||
PFitterFcn *fFitterFcn;
|
||||
ROOT::Minuit2::MnUserParameters fMnUserParams; ///< minuit2 input parameter list
|
||||
ROOT::Minuit2::FunctionMinimum *fFcnMin; ///<
|
||||
ROOT::Minuit2::FunctionMinimum *fFcnMin; ///< function minimum object
|
||||
ROOT::Minuit2::MnUserParameterState *fMnUserParamState; ///< keeps the current user parameter state
|
||||
|
||||
bool CheckCommands();
|
||||
bool SetParameters();
|
||||
|
Loading…
x
Reference in New Issue
Block a user