13 #include <type_traits> 33 template <
typename TDerived>
45 TDerived& getRef() {
return static_cast<TDerived&
>(*this); }
46 const TDerived& getRef()
const {
return static_cast<const TDerived&
>(*this); }
50 static bool const is_process_sequence =
false;
51 static bool const is_switch_process_sequence =
false;
63 template <
typename TProcess>
66 std::enable_if_t<std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess>>,
67 typename std::decay_t<TProcess>>>>
73 template <
typename TProcess,
int N>
76 typename std::enable_if_t<is_process_v<std::decay_t<TProcess>> &&
77 !std::decay_t<TProcess>::is_process_sequence>> {
78 static size_t constexpr count = N + 1;
traits class to count any type of Process, general version.
The ObservationVolume writes PDG codes, kinetic energy, position, and direction of particles in the o...
A traits marker to identify BaseProcess, thus any type of process.
Each process in C8 must derive from BaseProcess.
`, since they are used everywhere as integral part of the framework.
static size_t constexpr getNumberOfProcesses()
Default number of processes is just one, obviously.