diff --git a/src/SLHAinterface.cc b/src/SLHAinterface.cc index cbb0f12e8f1..c438a9f57d4 100644 --- a/src/SLHAinterface.cc +++ b/src/SLHAinterface.cc @@ -410,6 +410,13 @@ bool SLHAinterface::initSLHA(Settings& settings, "for unknown id = {" + idCode.str() + "}", true); continue; } + // Catch multiple re-inits of SLHA data + if ( mass != particleDataPtr-> m0(id) && ( + ( particleDataPtr->hasChangedMMin(id) && + particleDataPtr->mMin(id) > mass ) || + ( particleDataPtr->hasChangedMMax(id) && + particleDataPtr->mMax(id) < mass ) ) ) + particleDataPtr->findParticle(id)->setHasChanged(false); particleDataPtr->m0(id,mass); idModified[id] = true; importMass.push_back(id); @@ -722,7 +729,9 @@ bool SLHAinterface::initSLHA(Settings& settings, else { // mMin: lower cutoff on Breit-Wigner; see above. // Increase minimum if needed to ensure at least one channel on shell - double mMin = max(mSumMin, particlePtr->mMin()); + double mMin1 = particlePtr->mMin(); + double mMin0 = (mMin1 < m0 ) ? mMin1 : min(m0-0.5*wid,0.5*m0); + double mMin = max(mSumMin, mMin0); particlePtr->setMMin(mMin); } }