15 #include <corsika/framework/process/InteractionProcess.hpp> 25 template <
class TUnderlyingProcess>
30 static auto constexpr non_modifying_functor = [](
GrammageType original, corsika::Code,
43 std::function<functor_signature> modifier);
46 template <
typename TSecondaryView>
50 template <
typename TParticle>
58 TUnderlyingProcess process_;
59 std::function<functor_signature>
const modifier_{non_modifying_functor};
66 #include <corsika/detail/framework/process/InteractionLengthModifier.inl> GrammageType getInteractionLength(TParticle const &particle)
! returns underlying process getInteractionLength modified
GrammageType(GrammageType, corsika::Code, HEPEnergyType) functor_signature
The signature of the modifying functor. Arguments are original int. length, PID, energy.
Import and extend the phys::units package.
`, since they are used everywhere as integral part of the framework.
InteractionLengthModifier(TUnderlyingProcess &&process, std::function< functor_signature > modifier)
Create wrapper around InteractionProcess.
TUnderlyingProcess const & getProcess() const
! obtain reference to wrapped process
Interface to particle properties.
void doInteraction(TSecondaryView &view)
wrapper around internal process doInteraction
Process describing the interaction of particles.