IAP GITLAB

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • AirShowerPhysics/corsika
  • rulrich/corsika
  • AAAlvesJr/corsika
  • Andre/corsika
  • arrabito/corsika
  • Nikos/corsika
  • olheiser73/corsika
  • AirShowerPhysics/papers/corsika
  • pranav/corsika
9 results
Show changes
Commits on Source (3)
......@@ -1065,3 +1065,184 @@ TEST_CASE("ProcessSequence Indexing", "ProcessSequence") {
<< std::endl;
}
}
TEST_CASE("SwitchProcessSequence Indexing", "ProcessSequence") {
// see issue https://gitlab.iap.kit.edu/AirShowerPhysics/corsika/-/issues/573
// and issue https://gitlab.iap.kit.edu/AirShowerPhysics/corsika/-/issues/586
logging::set_level(logging::level::info);
CoordinateSystemPtr rootCS = get_root_CoordinateSystem();
struct SwitchSelect {
bool operator()(DummyData const& p) const { return (p.data_[0] > 0); }
};
SwitchSelect select1;
auto cp1 = ContinuousProcess1(0, 0_m);
auto cp2 = ContinuousProcess1(0, 0_m);
auto cp3 = ContinuousProcess1(0, 0_m);
auto cp4 = ContinuousProcess1(0, 0_m);
auto switch_sequence = make_select(select1, cp1, cp2);
auto sequence = make_sequence(switch_sequence, cp3, cp4);
CHECK(sequence.getNumberOfProcesses() == 4);
CHECK(switch_sequence.getNumberOfProcesses() == 2);
DummyData particle;
DummyTrajectory track;
DummyView view(particle);
Step step(particle, track);
// cp1 selected
cp1.setStep(1_m);
cp2.setStep(100_m);
cp3.setStep(100_m);
cp4.setStep(100_m);
particle.data_[0] = 1; // positive so that cp1 is selected
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
CHECK_FALSE(cp4.getFlag());
ContinuousProcessStepLength continuousMaxStep =
sequence.getMaxStepLength(particle, track);
sequence.doContinuous(step, continuousMaxStep.getIndex());
CHECK(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
CHECK_FALSE(cp4.getFlag());
cp1.resetFlag();
cp2.resetFlag();
cp3.resetFlag();
cp4.resetFlag();
// cp2 selected
cp1.setStep(100_m);
cp2.setStep(1_m);
cp3.setStep(100_m);
cp4.setStep(100_m);
particle.data_[0] = -1; // negative so that cp2 is selected
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
CHECK_FALSE(cp4.getFlag());
continuousMaxStep = sequence.getMaxStepLength(particle, track);
sequence.doContinuous(step, continuousMaxStep.getIndex());
CHECK_FALSE(cp1.getFlag());
CHECK(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
CHECK_FALSE(cp4.getFlag());
cp1.resetFlag();
cp2.resetFlag();
cp3.resetFlag();
cp4.resetFlag();
// cp3 selected
cp1.setStep(100_m);
cp2.setStep(100_m);
cp3.setStep(1_m);
cp4.setStep(100_m);
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
CHECK_FALSE(cp4.getFlag());
continuousMaxStep = sequence.getMaxStepLength(particle, track);
sequence.doContinuous(step, continuousMaxStep.getIndex());
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK(cp3.getFlag());
CHECK_FALSE(cp4.getFlag());
cp1.resetFlag();
cp2.resetFlag();
cp3.resetFlag();
cp4.resetFlag();
// cp4 selected
cp1.setStep(100_m);
cp2.setStep(100_m);
cp3.setStep(100_m);
cp4.setStep(1_m);
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
CHECK_FALSE(cp4.getFlag());
continuousMaxStep = sequence.getMaxStepLength(particle, track);
sequence.doContinuous(step, continuousMaxStep.getIndex());
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
CHECK(cp4.getFlag());
cp1.resetFlag();
cp2.resetFlag();
cp3.resetFlag();
cp4.resetFlag();
}
TEST_CASE("Nested ProcessSequence", "ProcessSequence") {
//
logging::set_level(logging::level::info);
CoordinateSystemPtr rootCS = get_root_CoordinateSystem();
auto cp1 = ContinuousProcess1(0, 0_m);
auto cp2 = ContinuousProcess1(0, 0_m);
auto cp3 = ContinuousProcess1(0, 0_m);
auto sequence = make_sequence(make_sequence(cp1, cp2), cp3);
CHECK(sequence.getNumberOfProcesses() == 3);
DummyData particle;
DummyTrajectory track;
DummyView view(particle);
Step step(particle, track);
// cp1 selected
cp1.setStep(1_m);
cp2.setStep(100_m);
cp3.setStep(100_m);
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
ContinuousProcessStepLength continuousMaxStep =
sequence.getMaxStepLength(particle, track);
sequence.doContinuous(step, continuousMaxStep.getIndex());
CHECK(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
cp1.resetFlag();
cp2.resetFlag();
cp3.resetFlag();
// cp2 selected
cp1.setStep(100_m);
cp2.setStep(1_m);
cp3.setStep(100_m);
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
continuousMaxStep = sequence.getMaxStepLength(particle, track);
sequence.doContinuous(step, continuousMaxStep.getIndex());
CHECK_FALSE(cp1.getFlag());
CHECK(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
cp1.resetFlag();
cp2.resetFlag();
cp3.resetFlag();
// cp3 selected
cp1.setStep(100_m);
cp2.setStep(100_m);
cp3.setStep(1_m);
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK_FALSE(cp3.getFlag());
continuousMaxStep = sequence.getMaxStepLength(particle, track);
sequence.doContinuous(step, continuousMaxStep.getIndex());
CHECK_FALSE(cp1.getFlag());
CHECK_FALSE(cp2.getFlag());
CHECK(cp3.getFlag());
}