diff --git a/TrackingTools/GsfTracking/src/TsosGaussianStateConversions.cc b/TrackingTools/GsfTracking/src/TsosGaussianStateConversions.cc index d4c6e1b11d244..1692614f23389 100644 --- a/TrackingTools/GsfTracking/src/TsosGaussianStateConversions.cc +++ b/TrackingTools/GsfTracking/src/TsosGaussianStateConversions.cc @@ -40,12 +40,15 @@ namespace GaussianStateConversions { std::vector components; components.reserve(singleStates.size()); for (auto const& ic : singleStates) { - components.emplace_back((*ic).weight(), - LocalTrajectoryParameters((*ic).mean(), pzSign, charged), - LocalTrajectoryError((*ic).covariance()), - surface, - field, - side); + //require states to be positive-definite + if (double det = 0; (*ic).covariance().Det2(det) && det > 0) { + components.emplace_back((*ic).weight(), + LocalTrajectoryParameters((*ic).mean(), pzSign, charged), + LocalTrajectoryError((*ic).covariance()), + surface, + field, + side); + } } return TrajectoryStateOnSurface((BasicTrajectoryState*)new BasicMultiTrajectoryState(components)); }