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