diff --git a/Processes/OnShellCheck/OnShellCheck.cc b/Processes/OnShellCheck/OnShellCheck.cc index a5662e4349ab1afb2d118320833da3c6a0d74a68..133af10c6a1bffe8ec439d785e28cc9c4d60d8e2 100644 --- a/Processes/OnShellCheck/OnShellCheck.cc +++ b/Processes/OnShellCheck/OnShellCheck.cc @@ -46,6 +46,9 @@ namespace corsika::process { const HEPEnergyType e_shifted = sqrt(p_original.GetSquaredNorm() + m_corsika * m_corsika); auto const e_shift_relative = (e_shifted / e_original - 1); + count_ = count_ + 1; + average_shift_ += abs(e_shift_relative); + if (abs(e_shift_relative) > max_shift_) max_shift_ = abs(e_shift_relative); /* For now we warn if the necessary shift is larger than 1%. we could promote this to an error. diff --git a/Processes/OnShellCheck/OnShellCheck.h b/Processes/OnShellCheck/OnShellCheck.h index f9a047324fda11f3d19f08f575e3c92a510d7feb..f1c588be018415476f70573f9c73163c74bd5b4b 100644 --- a/Processes/OnShellCheck/OnShellCheck.h +++ b/Processes/OnShellCheck/OnShellCheck.h @@ -19,12 +19,24 @@ namespace corsika::process { namespace on_shell_check { class OnShellCheck : public process::SecondariesProcess<OnShellCheck> { + double average_shift_ = 0; + double max_shift_ = 0; + double count_ = 0; public: OnShellCheck(const double vMassTolerance, const double vEnergyTolerance) : mass_tolerance_(vMassTolerance) , energy_tolerance_(vEnergyTolerance) {} + ~OnShellCheck() { + std::cout << "OnShellCheck: summary" << std::endl + << " particles shifted: " << int(count_) << std::endl; + if (count_) + std::cout << " average energy shift (%): " << average_shift_ / count_ * 100. + << std::endl + << " max. energy shift (%): " << max_shift_ * 100. << std::endl; + }; + EProcessReturn DoSecondaries(corsika::setup::StackView&); void Init();