diff --git a/Processes/ParticleCut/ParticleCut.cc b/Processes/ParticleCut/ParticleCut.cc index 5bf4e64101613d431b7482dd7379eef7d73d7587..1616f6248740d7b8e6f23a8c31405f57fff16eb8 100644 --- a/Processes/ParticleCut/ParticleCut.cc +++ b/Processes/ParticleCut/ParticleCut.cc @@ -27,9 +27,9 @@ namespace corsika::process { if (vP.GetPID() == particles::Code::Nucleus) { // calculate energy per nucleon auto const ElabNuc = energyLab / vP.GetNuclearA(); - return (ElabNuc < fECut); + return (ElabNuc <= fECut); } else { - return (energyLab < fECut); + return (energyLab <= fECut); } } @@ -65,15 +65,15 @@ namespace corsika::process { C8LOG_DEBUG(fmt::format("ParticleCut: checking {}, E= {} GeV, EcutTot={} GeV", pid, energy / 1_GeV, (fEmEnergy + fInvEnergy + fEnergy) / 1_GeV)); - if (bCutEm &&ParticleIsEmParticle(pid)) { + if (bCutEm && ParticleIsEmParticle(pid)) { C8LOG_DEBUG("removing em. particle..."); fEmEnergy += energy; - fEmCount += 1; + uiEmCount += 1; return true; } else if (bCutInv && ParticleIsInvisible(pid)) { C8LOG_DEBUG("removing inv. particle..."); fInvEnergy += energy; - fInvCount += 1; + uiInvCount += 1; return true; } else if (ParticleIsBelowEnergyCut(particle)) { C8LOG_DEBUG("removing low en. particle..."); @@ -99,7 +99,9 @@ namespace corsika::process { return EProcessReturn::eOk; } - process::EProcessReturn ParticleCut::DoContinuous(Particle& particle, Track const&) { + process::EProcessReturn ParticleCut::DoContinuous( + corsika::setup::Stack::ParticleType& particle, + corsika::setup::Trajectory const&) { C8LOG_TRACE("ParticleCut::DoContinuous"); if (checkCutParticle(particle)) { C8LOG_TRACE("removing during continuous"); @@ -114,20 +116,18 @@ namespace corsika::process { , bCutInv(inv) { fEmEnergy = 0_GeV; uiEmCount = 0; - finvEnergy = 0_GeV; + fInvEnergy = 0_GeV; uiInvCount = 0; fEnergy = 0_GeV; } - void ParticleCut::ShowResults() { + void ParticleCut::ShowResults() const { C8LOG_INFO(fmt::format( " ******************************\n" " ParticleCut: \n" - if (bCutEm) - " energy in em. component (GeV): {}\n" + " energy in em. component (GeV): {}\n" " no. of em. particles injected: {}\n" - if (bCutInv) - " energy in inv. component (GeV): {}\n" + " energy in inv. component (GeV): {}\n" " no. of inv. particles injected: {}\n" " energy below particle cut (GeV): {}\n" " ******************************", diff --git a/Processes/ParticleCut/ParticleCut.h b/Processes/ParticleCut/ParticleCut.h index 21a6181f0da6caf1171caeca2ea3af0d1ce16204..57315bf4ec36c73a9aecbde0245d65cbde702dfb 100644 --- a/Processes/ParticleCut/ParticleCut.h +++ b/Processes/ParticleCut/ParticleCut.h @@ -19,7 +19,7 @@ namespace corsika::process { class ParticleCut : public process::SecondariesProcess<ParticleCut>, public corsika::process::ContinuousProcess<ParticleCut> { - units::si::HEPEnergyType const fECut_; + units::si::HEPEnergyType const fECut; bool bCutEm; bool bCutInv; @@ -34,14 +34,24 @@ namespace corsika::process { EProcessReturn DoSecondaries(corsika::setup::StackView&); - EProcessReturn DoContinuous(Particle& vParticle, Track const& vTrajectory); + EProcessReturn DoContinuous(corsika::setup::Stack::ParticleType& vParticle, + corsika::setup::Trajectory const& vTrajectory); corsika::units::si::LengthType MaxStepLength( corsika::setup::Stack::ParticleType const&, corsika::setup::Trajectory const&) { return units::si::meter * std::numeric_limits<double>::infinity(); } - void ShowResults(); + + units::si::HEPEnergyType GetECut() const { return fECut; } + units::si::HEPEnergyType GetInvEnergy() const { return fInvEnergy; } + units::si::HEPEnergyType GetCutEnergy() const { return fEnergy; } + units::si::HEPEnergyType GetEmEnergy() const { return fEmEnergy; } + unsigned int GetNumberEmParticles() const { return uiEmCount; } + unsigned int GetNumberInvParticles() const { return uiInvCount; } + + void ShowResults() const; + void Reset(); protected: template <typename TParticle> @@ -51,16 +61,9 @@ namespace corsika::process { bool ParticleIsBelowEnergyCut(TParticle const&) const; bool ParticleIsEmParticle(particles::Code) const; + bool ParticleIsInvisible(particles::Code) const; - void ShowResults() const; - void Reset(); - units::si::HEPEnergyType GetECut() const { return fECut; } - units::si::HEPEnergyType GetInvEnergy() const { return fInvEnergy; } - units::si::HEPEnergyType GetCutEnergy() const { return fEnergy; } - units::si::HEPEnergyType GetEmEnergy() const { return fEmEnergy; } - unsigned int GetNumberEmParticles() const { return uiEmCount; } - unsigned int GetNumberInvParticles() const { return fInvCount; } }; } // namespace particle_cut } // namespace corsika::process diff --git a/Processes/Proposal/ContinuousProcess.cc b/Processes/Proposal/ContinuousProcess.cc index fbc5dba475110ee89145eded9d102b2c577e4133..59ec7e87f56d92cc4433abf090d838ccd24fc6c7 100644 --- a/Processes/Proposal/ContinuousProcess.cc +++ b/Processes/Proposal/ContinuousProcess.cc @@ -114,7 +114,6 @@ namespace corsika::process::proposal { vP.SetMomentum(vP.GetMomentum() * vP.GetEnergy() / vP.GetMomentum().GetNorm()); return process::EProcessReturn::eParticleAbsorbed; } - if (final_energy <= emCut_) { vP.SetEnergy(emCut_); vP.SetMomentum(vP.GetMomentum() * vP.GetEnergy() / vP.GetMomentum().GetNorm());