diff --git a/KMatrixExtract/TMatrixErrorExtr.cc b/KMatrixExtract/TMatrixErrorExtr.cc index 35efa682a9d085f5d577fb3229d08fb74c403134..bdb25d0c0e948ed4e9a2150fdb16604d2accaf1d 100644 --- a/KMatrixExtract/TMatrixErrorExtr.cc +++ b/KMatrixExtract/TMatrixErrorExtr.cc @@ -213,23 +213,26 @@ std::complex<double> TMatrixErrorExtr::CalcMassWidth(std::shared_ptr<AbsPawianPa InfoMsg <<"Start Migrad "<< endmsg; FunctionMinimum min = migrad(); + InfoMsg <<"refit with current parameters"<< endmsg; + MnUserParameters upar1a; + upar1a.Add("eReal", min.UserState().Value("eReal"), 0.001, _energyMin.real(), _energyMax.real()); + upar1a.Add("eImag", min.UserState().Value("eImag"), 0.001, _energyMin.imag(), _energyMax.imag()); + MnMigrad migrad1a(fitFcn, upar1a); + min = migrad1a(); + if(!min.IsValid()) { - // Try with higher strategy - InfoMsg <<"FM is invalid, try with strategy = 2."<< endmsg; - MnMigrad migrad2(fitFcn, min.UserState(), MnStrategy(2)); - min = migrad2(); + // Try again with current params = start params + // InfoMsg <<"FM is invalid, try again with strategy = 1. and current parameters"<< endmsg; + // MnMigrad migrad1a(fitFcn, min.UserState(), MnStrategy(1)); + // min = migrad1a(); + // if(!min.IsValid()) { + // Try with higher strategy + InfoMsg <<"FM is still invalid, try now with strategy = 2."<< endmsg; + MnMigrad migrad2(fitFcn, min.UserState(), MnStrategy(2)); + min = migrad2(); + // } } - //start second iteration - // MnMigrad migrad1a(fitFcn, min.UserState(), MnStrategy(1)); - // min = migrad1a(); - // if(!min.IsValid()) { - // // Try with higher strategy - // InfoMsg <<"FM is invalid, try with strategy = 2."<< endmsg; - // MnMigrad migrad2a(fitFcn, min.UserState(), MnStrategy(2)); - // min = migrad2a(); - // } - // Save final fit parameters and their errors in variables double final_eReal = min.UserState().Value("eReal"); double final_eImag = min.UserState().Value("eImag"); diff --git a/KMatrixExtract/TMatrixExtrFcn.cc b/KMatrixExtract/TMatrixExtrFcn.cc index 2acdd4fab7aaa236f9fc65e2c0d142b93c4e6d4b..25c4e149b16666ba79c36e76cdd2a339dae1469e 100644 --- a/KMatrixExtract/TMatrixExtrFcn.cc +++ b/KMatrixExtract/TMatrixExtrFcn.cc @@ -56,6 +56,7 @@ double TMatrixExtrFcn::operator()(const std::vector<double>& par) const double TMatrixExtrFcn::Up() const { - return 1.; + // return 1.; + return 0.5; }