IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 6c372dbe authored by Maximilian Reininghaus's avatar Maximilian Reininghaus :vulcan:
Browse files

finally compiling again

parent cce55ccc
No related branches found
No related tags found
2 merge requests!91Resolve "define further classes of processes (MaintenanceProcess?)",!76Resolve "Handling of boundary crossings in geometry tree"
Pipeline #427 failed
...@@ -223,7 +223,7 @@ struct MyBoundaryCrossingProcess ...@@ -223,7 +223,7 @@ struct MyBoundaryCrossingProcess
MyBoundaryCrossingProcess() {} MyBoundaryCrossingProcess() {}
//~ MyBoundaryCrossingProcess(environment::BaseNodeType const& a, //~ MyBoundaryCrossingProcess(environment::BaseNodeType const& a,
//environment::BaseNodeType const& b) : fA(a), fB(b) {} // environment::BaseNodeType const& b) : fA(a), fB(b) {}
template <typename Particle> template <typename Particle>
EProcessReturn DoBoundaryCrossing(Particle& p, EProcessReturn DoBoundaryCrossing(Particle& p,
...@@ -241,6 +241,19 @@ struct MyBoundaryCrossingProcess ...@@ -241,6 +241,19 @@ struct MyBoundaryCrossingProcess
void Init() {} 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 // The example main program for a particle cascade
// //
...@@ -254,24 +267,25 @@ int main() { ...@@ -254,24 +267,25 @@ int main() {
EnvType env; EnvType env;
auto& universe = *(env.GetUniverse()); auto& universe = *(env.GetUniverse());
auto outerMedium = environment::Environment<EnvType>::CreateNode<Sphere>( auto outerMedium =
Point{env.GetCoordinateSystem(), 0_m, 0_m, 0_m}, EnvType::CreateNode<Sphere>(Point{env.GetCoordinateSystem(), 0_m, 0_m, 0_m},
1_km * std::numeric_limits<double>::infinity()); 1_km * std::numeric_limits<double>::infinity());
// fraction of oxygen // fraction of oxygen
const float fox = 0.20946; const float fox = 0.20946;
using MyHomogeneousModel = environment::HomogeneousMedium<setup::IEnvironmentModel>; outerMedium->SetModelProperties<
outerMedium->SetModelProperties<setup::IEnvironmentModel>( TheNameModel<environment::HomogeneousMedium<setup::IEnvironmentModel>>>(
"outer", 1_kg / (1_m * 1_m * 1_m), "outer", 1_kg / (1_m * 1_m * 1_m),
environment::NuclearComposition( environment::NuclearComposition(
std::vector<particles::Code>{particles::Code::Nitrogen, std::vector<particles::Code>{particles::Code::Nitrogen,
particles::Code::Oxygen}, particles::Code::Oxygen},
std::vector<float>{(float)1. - fox, fox})); 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); 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), "inner", 1_kg / (1_m * 1_m * 1_m),
environment::NuclearComposition( environment::NuclearComposition(
std::vector<particles::Code>{particles::Code::Nitrogen, std::vector<particles::Code>{particles::Code::Nitrogen,
...@@ -285,17 +299,17 @@ int main() { ...@@ -285,17 +299,17 @@ int main() {
const CoordinateSystem& rootCS = env.GetCoordinateSystem(); const CoordinateSystem& rootCS = env.GetCoordinateSystem();
// setup processes, decays and interactions // 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); stack_inspector::StackInspector<setup::Stack> p0(true);
random::RNGManager::GetInstance().RegisterRandomStream("s_rndm"); random::RNGManager::GetInstance().RegisterRandomStream("s_rndm");
process::sibyll::Interaction sibyll(env); process::sibyll::Interaction sibyll;
process::sibyll::NuclearInteraction sibyllNuc(env, sibyll); process::sibyll::NuclearInteraction sibyllNuc(sibyll);
process::sibyll::Decay decay; process::sibyll::Decay decay;
ProcessCut cut(20_GeV); ProcessCut cut(20_GeV);
random::RNGManager::GetInstance().RegisterRandomStream("HadronicElasticModel"); random::RNGManager::GetInstance().RegisterRandomStream("HadronicElasticModel");
process::HadronicElasticModel::HadronicElasticInteraction hadronicElastic(env); process::HadronicElasticModel::HadronicElasticInteraction hadronicElastic;
process::TrackWriter::TrackWriter trackWriter("tracks.dat"); process::TrackWriter::TrackWriter trackWriter("tracks.dat");
......
...@@ -18,16 +18,8 @@ namespace corsika::environment { ...@@ -18,16 +18,8 @@ namespace corsika::environment {
template <typename T> template <typename T>
struct NameModel : public T { struct NameModel : public T {
virtual std::string const& GetName() const = 0;
template <typename... Args> virtual ~NameModel() = default;
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;
}; };
} // namespace corsika::environment } // namespace corsika::environment
......
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