IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 868471c8 authored by ralfulrich's avatar ralfulrich
Browse files

fixed staticsequence_example

parent ac66c5dd
No related branches found
No related tags found
No related merge requests found
...@@ -23,43 +23,43 @@ using namespace std; ...@@ -23,43 +23,43 @@ using namespace std;
const int nData = 10; const int nData = 10;
class Process1 : public BaseProcess<Process1> { class Process1 : public ContinuousProcess<Process1> {
public: public:
Process1() {} Process1() {}
template <typename D, typename T, typename S> template <typename D, typename T>
EProcessReturn DoContinuous(D& d, T&, S&) const { EProcessReturn DoContinuous(D& d, T&) const {
for (int i = 0; i < nData; ++i) d.p[i] += 1; for (int i = 0; i < nData; ++i) d.p[i] += 1;
return EProcessReturn::eOk; return EProcessReturn::eOk;
} }
}; };
class Process2 : public BaseProcess<Process2> { class Process2 : public ContinuousProcess<Process2> {
public: public:
Process2() {} Process2() {}
template <typename D, typename T, typename S> template <typename D, typename T>
inline EProcessReturn DoContinuous(D& d, T&, S&) const { inline EProcessReturn DoContinuous(D& d, T&) const {
for (int i = 0; i < nData; ++i) d.p[i] -= 0.1 * i; for (int i = 0; i < nData; ++i) d.p[i] -= 0.1 * i;
return EProcessReturn::eOk; return EProcessReturn::eOk;
} }
}; };
class Process3 : public BaseProcess<Process3> { class Process3 : public ContinuousProcess<Process3> {
public: public:
Process3() {} Process3() {}
template <typename D, typename T, typename S> template <typename D, typename T>
inline EProcessReturn DoContinuous(D&, T&, S&) const { inline EProcessReturn DoContinuous(D&, T&) const {
return EProcessReturn::eOk; return EProcessReturn::eOk;
} }
}; };
class Process4 : public BaseProcess<Process4> { class Process4 : public ContinuousProcess<Process4> {
public: public:
Process4(const double v) Process4(const double v)
: fV(v) {} : fV(v) {}
template <typename D, typename T, typename S> template <typename D, typename T>
inline EProcessReturn DoContinuous(D& d, T&, S&) const { inline EProcessReturn DoContinuous(D& d, T&) const {
for (int i = 0; i < nData; ++i) d.p[i] *= fV; for (int i = 0; i < nData; ++i) d.p[i] *= fV;
return EProcessReturn::eOk; return EProcessReturn::eOk;
} }
...@@ -78,25 +78,32 @@ struct DummyTrajectory {}; ...@@ -78,25 +78,32 @@ struct DummyTrajectory {};
void modular() { void modular() {
Process1 m1; // = 0
Process2 m2; Process1 m1; // + 1.0
Process3 m3; Process2 m2; // - (0.1*i)
Process4 m4(0.9); Process3 m3; // * 1.0
Process4 m4(1.5); // * 1.5
auto sequence = m1 % m2 % m3 % m4; auto sequence = m1 % m2 % m3 % m4;
DummyData particle; DummyData particle;
DummyTrajectory track; DummyTrajectory track;
const int n = 1000; double check[nData] = {0,0,0,0,0,0,0,0,0,0};
for (int i = 0; i < n; ++i) { sequence.DoContinuous(particle, track); }
const int nEv = 10;
for (int iEv = 0; iEv < nEv; ++iEv) { sequence.DoContinuous(particle, track);
for (int i = 0; i < nData; ++i) {
check[i] += 1. - 0.1*i;
check[i] *= 1.5;
}
}
for (int i = 0; i < nData; ++i) { for (int i = 0; i < nData; ++i) {
// cout << p.p[i] << endl; assert(particle.p[i] == check[i]);
assert(particle.p[i] == n-i*100);
} }
cout << " done (nothing...) " << endl; cout << " done (checking...) " << endl;
} }
int main() { int main() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment