diff --git a/Framework/Utilities/COMBoost.cc b/Framework/Utilities/COMBoost.cc index 1bf8f839f1818fb12aa5c813ee166504e3351bd1..b12180b30db8082f35a6382d79d85f81e517cee9 100644 --- a/Framework/Utilities/COMBoost.cc +++ b/Framework/Utilities/COMBoost.cc @@ -22,10 +22,13 @@ COMBoost::COMBoost(HEPEnergyType eProjectile, COMBoost::MomentumVector const& pP auto const a = (pProjectile / pProjNorm).GetComponents().eVector; if (a(0) == 0 && a(1) == 0) { - // if pProjectile ~ (0, 0, -1), the standard formula for the rotation matrix breaks - // down but we can easily define a suitable rotation manually. We just need some SO(3) - // matrix that reverses the z-axis and I like this one: - fRotation << 1, 0, 0, 0, -1, 0, 0, 0, -1; + if (a(2) < 0) { + // if pProjectile ~ (0, 0, -1), the standard formula for the rotation matrix breaks + // down but we can easily define a suitable rotation manually. We just need some + // SO(3) matrix that reverses the z-axis and I like this one: + + fRotation << 1, 0, 0, 0, -1, 0, 0, 0, -1; + } } else { Eigen::Vector3d const b{0, 0, 1}; auto const v = a.cross(b);