From b40252100d4dc021503187104ebe38f5dacc63db Mon Sep 17 00:00:00 2001 From: Maximilian Sackel <maximilian.sackel@tu-dortmund.de> Date: Thu, 16 Jul 2020 07:39:03 +0000 Subject: [PATCH] enable continuous losses for gammas --- Processes/Proposal/ContinuousProcess.cc | 9 ++++----- Processes/Proposal/Interaction.cc | 3 +-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Processes/Proposal/ContinuousProcess.cc b/Processes/Proposal/ContinuousProcess.cc index 9b5cdb848..d95202e5d 100644 --- a/Processes/Proposal/ContinuousProcess.cc +++ b/Processes/Proposal/ContinuousProcess.cc @@ -32,9 +32,8 @@ namespace corsika::process::proposal { , fRNG(corsika::random::RNGManager::GetInstance().GetRandomStream("proposal")) { auto all_compositions = std::vector<const NuclearComposition*>(); _env.GetUniverse()->walk([&](auto& vtn) { - if (vtn.HasModelProperties()) { + if (vtn.HasModelProperties()) all_compositions.push_back(&vtn.GetModelProperties().GetNuclearComposition()); - } }); for (auto& ncarg : all_compositions) { auto comp_vec = std::vector<PROPOSAL::Components::Component>(); @@ -63,7 +62,7 @@ namespace corsika::process::proposal { template <> void ContinuousProcess::Scatter(SetupParticle& vP, HEPEnergyType const& loss, - GrammageType const& grammage) { + GrammageType const& grammage) { auto calc = GetCalculator(vP); auto d = vP.GetDirection().GetComponents(); auto direction = PROPOSAL::Vector3D(d.GetX().magnitude(), d.GetY().magnitude(), @@ -86,10 +85,10 @@ namespace corsika::process::proposal { template <> EProcessReturn ContinuousProcess::DoContinuous(SetupParticle& vP, SetupTrack const& vT) { - if (vP.GetChargeNumber() == 0) return process::EProcessReturn::eOk; + if (!CanInteract(vP.GetPID())) return process::EProcessReturn::eOk; auto dX = vP.GetNode()->GetModelProperties().IntegratedGrammage(vT, vT.GetLength()); auto energy_loss = TotalEnergyLoss(vP, dX); - Scatter(vP, energy_loss, dX); + if (vP.GetChargeNumber() != 0) Scatter(vP, energy_loss, dX); vP.SetEnergy(vP.GetEnergy() - energy_loss); if (vP.GetEnergy() < cut.GetECut()) return process::EProcessReturn::eParticleAbsorbed; vP.SetMomentum(vP.GetMomentum() * vP.GetEnergy() / vP.GetMomentum().GetNorm()); diff --git a/Processes/Proposal/Interaction.cc b/Processes/Proposal/Interaction.cc index 02b4b217e..fb567b398 100644 --- a/Processes/Proposal/Interaction.cc +++ b/Processes/Proposal/Interaction.cc @@ -32,9 +32,8 @@ namespace corsika::process::proposal { , fRNG(corsika::random::RNGManager::GetInstance().GetRandomStream("proposal")) { auto all_compositions = std::vector<const NuclearComposition*>(); _env.GetUniverse()->walk([&](auto& vtn) { - if (vtn.HasModelProperties()) { + if (vtn.HasModelProperties()) all_compositions.push_back(&vtn.GetModelProperties().GetNuclearComposition()); - } }); for (auto& ncarg : all_compositions) { auto comp_vec = std::vector<Component_PROPOSAL>(); -- GitLab