diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h index d83738c5e01bfff9ecd37bc93c9ff6ea213fac99..114c2149c6dc6844451aae1de759574ab7f470f4 100644 --- a/Framework/Cascade/Cascade.h +++ b/Framework/Cascade/Cascade.h @@ -145,8 +145,7 @@ namespace corsika::cascade { std::cout << "forced interaction!" << std::endl; auto vParticle = fStack.GetNextParticle(); TStackView secondaries(vParticle); - auto projectile = secondaries.GetProjectile(); - interaction(vParticle, projectile); + interaction(vParticle, secondaries); fProcessSequence.DoSecondaries(secondaries); vParticle.Delete(); // todo: this should be reviewed, see below } diff --git a/Framework/Cascade/testCascade.cc b/Framework/Cascade/testCascade.cc index 57f715ef5b0e6a71f541390e2fc96d49ebca9826..9db2c73ccba340df465f7ac75c518d163fef6cd2 100644 --- a/Framework/Cascade/testCascade.cc +++ b/Framework/Cascade/testCascade.cc @@ -69,18 +69,19 @@ public: return fX0; } - template <typename TProjectile> - corsika::process::EProcessReturn DoInteraction(TProjectile& vP) { + template <typename TSecondaryView> + corsika::process::EProcessReturn DoInteraction(TSecondaryView& view) { fCalls++; - const HEPEnergyType E = vP.GetEnergy(); - vP.AddSecondary( + auto const projectile = view.GetProjectile(); + const HEPEnergyType E = projectile.GetEnergy(); + view.AddSecondary( std::tuple<particles::Code, units::si::HEPEnergyType, corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{ - vP.GetPID(), E / 2, vP.GetMomentum(), vP.GetPosition(), vP.GetTime()}); - vP.AddSecondary( + projectile.GetPID(), E / 2, projectile.GetMomentum(), projectile.GetPosition(), projectile.GetTime()}); + view.AddSecondary( std::tuple<particles::Code, units::si::HEPEnergyType, corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{ - vP.GetPID(), E / 2, vP.GetMomentum(), vP.GetPosition(), vP.GetTime()}); + projectile.GetPID(), E / 2, projectile.GetMomentum(), projectile.GetPosition(), projectile.GetTime()}); return EProcessReturn::eInteracted; }