From c9b778c8a00709b51f53859c13066dd3fa23aa1b Mon Sep 17 00:00:00 2001 From: Nikos Karastathis <n.karastathis@kit.edu> Date: Tue, 20 Apr 2021 18:15:43 +0200 Subject: [PATCH] TimeCut class implemented --- corsika/detail/modules/TimeCut.inl | 29 ++++++++++++++++++++ corsika/modules/TimeCut.hpp | 44 ++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 corsika/detail/modules/TimeCut.inl create mode 100644 corsika/modules/TimeCut.hpp diff --git a/corsika/detail/modules/TimeCut.inl b/corsika/detail/modules/TimeCut.inl new file mode 100644 index 000000000..4bf2fa7dd --- /dev/null +++ b/corsika/detail/modules/TimeCut.inl @@ -0,0 +1,29 @@ +/* + * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu + * + * This software is distributed under the terms of the GNU General Public + * Licence version 3 (GPL Version 3). See file LICENSE for a full version of + * the license. + */ + +#pragma once + +#include <corsika/modules/TimeCut.hpp> + +namespace corsika { + + inline TimeCut::TimeCut(const TimeType time) + : time_(time) {} + + inline ProcessReturn TimeCut::doContinuous( + corsika::setup::Stack::particle_type& particle, corsika::setup::Trajectory const&, + bool const) { + CORSIKA_LOG_TRACE("TimeCut::doContinuous"); + if (particle.getTime() >= time_) { + CORSIKA_LOG_TRACE("stopping continuous process"); + return ProcessReturn::ParticleAbsorbed; + } + return ProcessReturn::Ok; + } + +} // namespace corsika diff --git a/corsika/modules/TimeCut.hpp b/corsika/modules/TimeCut.hpp new file mode 100644 index 000000000..ca622c5ce --- /dev/null +++ b/corsika/modules/TimeCut.hpp @@ -0,0 +1,44 @@ +/* + * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu + * + * This software is distributed under the terms of the GNU General Public + * Licence version 3 (GPL Version 3). See file LICENSE for a full version of + * the license. + */ + +#pragma once + +#include <corsika/framework/core/ParticleProperties.hpp> +#include <corsika/framework/core/PhysicalUnits.hpp> +#include <corsika/framework/process/ContinuousProcess.hpp> + +#include <corsika/setup/SetupStack.hpp> +#include <corsika/setup/SetupTrajectory.hpp> + +namespace corsika { + + /* + * Simple TimeCut process. Stops the sequence at the indicated time + */ + class TimeCut : public ContinuousProcess<TimeCut> { + + public: + TimeCut(TimeType const time); + + ProcessReturn doContinuous( + corsika::setup::Stack::particle_type& vParticle, + corsika::setup::Trajectory const& vTrajectory, + const bool limitFlag = false); // this is not used for TimeCut + LengthType getMaxStepLength(corsika::setup::Stack::particle_type const&, + corsika::setup::Trajectory const&) { + return meter * std::numeric_limits<double>::infinity(); + } + + private: + TimeType time_; + + }; + +} // namespace corsika + +#include <corsika/detail/modules/TimeCut.inl> -- GitLab