Newer
Older
#include <iomanip>
#include <iostream>
#include <corsika/process/ProcessSequence.h>
using namespace corsika::process;
class Process1 : public corsika::process::BaseProcess<Process1> {
template <typename D>
void DoContinuous(D& d) const {
for (int i = 0; i < 10; ++i) d.p[i] += 1;
class Process2 : public corsika::process::BaseProcess<Process2> {
template <typename D>
inline void DoContinuous(D& d) const {
// for (int i=0; i<10; ++i) d.p[i] *= 2;
class Process3 : public BaseProcess<Process3> {
// Process3(const int v) :fV(v) {}
template <typename D>
inline void DoContinuous(D& d) const {
// for (int i=0; i<10; ++i) d.p[i] += fV;
class Process4 : public BaseProcess<Process4> {
// Process4(const int v) : fV(v) {}
Process4() {}
template <typename D>
inline void DoContinuous(D& d) const {
// for (int i=0; i<10; ++i) d.p[i] /= fV;
std::array<double, 10> p{{0.}};
Process1 m1;
Process2 m2;
Process3 m3;
Process4 m4;
const auto sequence = m1 + m2 + m3 + m4;
for (int i = 0; i < n; ++i) { sequence.DoContinuous(d0); }
for (int i = 0; i < 10; ++i) { s += d0.p[i]; }
cout << scientific << " v=" << s << " n=" << n << endl;
}