From 6c372dbecfa98cbcbd7ae7daf6999722a0bc117b Mon Sep 17 00:00:00 2001 From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu> Date: Fri, 22 Mar 2019 17:06:31 -0300 Subject: [PATCH] finally compiling again --- Documentation/Examples/cascade_example.cc | 38 ++++++++++++++++------- Environment/NameModel.h | 12 ++----- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc index 8b1f90be..555b64c0 100644 --- a/Documentation/Examples/cascade_example.cc +++ b/Documentation/Examples/cascade_example.cc @@ -223,7 +223,7 @@ struct MyBoundaryCrossingProcess MyBoundaryCrossingProcess() {} //~ MyBoundaryCrossingProcess(environment::BaseNodeType const& a, - //environment::BaseNodeType const& b) : fA(a), fB(b) {} + // environment::BaseNodeType const& b) : fA(a), fB(b) {} template <typename Particle> EProcessReturn DoBoundaryCrossing(Particle& p, @@ -241,6 +241,19 @@ struct MyBoundaryCrossingProcess void Init() {} }; +template <class T> +class TheNameModel : public T { + std::string const fName; + +public: + template <typename... Args> + TheNameModel(std::string const& name, Args&&... args) + : T(std::forward<Args>(args)...) + , fName(name) {} + + std::string const& GetName() const override { return fName; } +}; + // // The example main program for a particle cascade // @@ -254,24 +267,25 @@ int main() { EnvType env; auto& universe = *(env.GetUniverse()); - auto outerMedium = environment::Environment<EnvType>::CreateNode<Sphere>( - Point{env.GetCoordinateSystem(), 0_m, 0_m, 0_m}, - 1_km * std::numeric_limits<double>::infinity()); + auto outerMedium = + EnvType::CreateNode<Sphere>(Point{env.GetCoordinateSystem(), 0_m, 0_m, 0_m}, + 1_km * std::numeric_limits<double>::infinity()); // fraction of oxygen const float fox = 0.20946; - using MyHomogeneousModel = environment::HomogeneousMedium<setup::IEnvironmentModel>; - outerMedium->SetModelProperties<setup::IEnvironmentModel>( + outerMedium->SetModelProperties< + TheNameModel<environment::HomogeneousMedium<setup::IEnvironmentModel>>>( "outer", 1_kg / (1_m * 1_m * 1_m), environment::NuclearComposition( std::vector<particles::Code>{particles::Code::Nitrogen, particles::Code::Oxygen}, std::vector<float>{(float)1. - fox, fox})); - auto innerMedium = environment::Environment<EnvType>::CreateNode<Sphere>( + auto innerMedium = EnvType::CreateNode<Sphere>( Point{env.GetCoordinateSystem(), 0_m, 0_m, 0_m}, 2000_m); - innerMedium->SetModelProperties<setup::IEnvironmentModel>( + innerMedium->SetModelProperties< + TheNameModel<environment::HomogeneousMedium<setup::IEnvironmentModel>>>( "inner", 1_kg / (1_m * 1_m * 1_m), environment::NuclearComposition( std::vector<particles::Code>{particles::Code::Nitrogen, @@ -285,17 +299,17 @@ int main() { const CoordinateSystem& rootCS = env.GetCoordinateSystem(); // setup processes, decays and interactions - tracking_line::TrackingLine<setup::Stack, setup::Trajectory> tracking(env); + tracking_line::TrackingLine tracking; stack_inspector::StackInspector<setup::Stack> p0(true); random::RNGManager::GetInstance().RegisterRandomStream("s_rndm"); - process::sibyll::Interaction sibyll(env); - process::sibyll::NuclearInteraction sibyllNuc(env, sibyll); + process::sibyll::Interaction sibyll; + process::sibyll::NuclearInteraction sibyllNuc(sibyll); process::sibyll::Decay decay; ProcessCut cut(20_GeV); random::RNGManager::GetInstance().RegisterRandomStream("HadronicElasticModel"); - process::HadronicElasticModel::HadronicElasticInteraction hadronicElastic(env); + process::HadronicElasticModel::HadronicElasticInteraction hadronicElastic; process::TrackWriter::TrackWriter trackWriter("tracks.dat"); diff --git a/Environment/NameModel.h b/Environment/NameModel.h index 29321e5c..458c0781 100644 --- a/Environment/NameModel.h +++ b/Environment/NameModel.h @@ -18,16 +18,8 @@ namespace corsika::environment { template <typename T> struct NameModel : public T { - - template <typename... Args> - NameModel(std::string const& name, Args&&... args) : T(std::forward<Args>(args)...), fName(name) {} - - std::string const& GetName() const { - return fName; - } - - private: - std::string fName; + virtual std::string const& GetName() const = 0; + virtual ~NameModel() = default; }; } // namespace corsika::environment -- GitLab