diff --git a/corsika/detail/framework/geometry/CoordinateSystem.inl b/corsika/detail/framework/geometry/CoordinateSystem.inl index 12e914ba9d4131209d4be8fa7eec066e9961a97a..f8297585599d2b448a2daa2e00fa3e3f4132409b 100644 --- a/corsika/detail/framework/geometry/CoordinateSystem.inl +++ b/corsika/detail/framework/geometry/CoordinateSystem.inl @@ -81,7 +81,13 @@ namespace corsika { template <typename TDim> inline CoordinateSystemPtr make_rotationToZ(CoordinateSystemPtr const& cs, Vector<TDim> const& vVec) { - auto const a = vVec.normalized().getComponents(cs).getEigenVector(); + auto const vVecComp = vVec.getComponents(cs); + if (vVecComp.getX().magnitude() == 0 && vVecComp.getY().magnitude() == 0 && + vVecComp.getZ().magnitude() == 0) { + return cs; + } + + auto const a = vVecComp.normalized().getEigenVector(); auto const a1 = a(0), a2 = a(1), a3 = a(2); Eigen::Matrix3d A, B; diff --git a/corsika/framework/utility/COMBoost.hpp b/corsika/framework/utility/COMBoost.hpp index 76cbe20d7dbb1799c6c39c0d7265ffda2c34a881..f797debd2f4d909951c0684f5028face4d1f847c 100644 --- a/corsika/framework/utility/COMBoost.hpp +++ b/corsika/framework/utility/COMBoost.hpp @@ -86,7 +86,7 @@ namespace corsika { //! internal method void setBoost(double const coshEta, double const sinhEta); - private: + public: Eigen::Matrix2d boost_; Eigen::Matrix2d inverseBoost_; CoordinateSystemPtr const originalCS_;