IAP GITLAB

Commit 5aad5074 authored by Ralf Ulrich's avatar Ralf Ulrich

interaction counter

parent a5319353
......@@ -29,23 +29,29 @@ namespace corsika {
template <typename TClass, typename TRet, typename... TArgs,
TRet (TClass::*TFuncPtr)(TArgs...), typename TTimer>
TRet ClassTimer<TRet (TClass::*)(TArgs...), TFuncPtr, TTimer>::call(TArgs... args) {
this->start_ = ClassTimerImpl<TClass,TTimer>::clock_type::now();
this->start_ = ClassTimerImpl<TClass, TTimer>::clock_type::now();
auto tmp = (this->obj_.*TFuncPtr)(std::forward<TArgs>(args)...);
this->timeDiff_ = std::chrono::duration_cast<typename ClassTimerImpl<TClass,TTimer>::duration_type>(ClassTimerImpl<TClass,TTimer>::clock_type::now() - this->start_);
this->timeDiff_ = std::chrono::duration_cast<
typename ClassTimerImpl<TClass, TTimer>::duration_type>(
ClassTimerImpl<TClass, TTimer>::clock_type::now() - this->start_);
return tmp;
}
// Specialisation 1
template <typename TClass, typename... TArgs, void (TClass::*TFuncPtr)(TArgs...), typename TTimer>
template <typename TClass, typename... TArgs, void (TClass::*TFuncPtr)(TArgs...),
typename TTimer>
ClassTimer<void (TClass::*)(TArgs...), TFuncPtr, TTimer>::ClassTimer(TClass& obj)
: ClassTimerImpl<TClass,TTimer>(obj) {}
: ClassTimerImpl<TClass, TTimer>(obj) {}
template <typename TClass, typename... TArgs, void (TClass::*TFuncPtr)(TArgs...), typename TTimer>
template <typename TClass, typename... TArgs, void (TClass::*TFuncPtr)(TArgs...),
typename TTimer>
void ClassTimer<void (TClass::*)(TArgs...), TFuncPtr, TTimer>::call(TArgs... args) {
this->start_ = ClassTimerImpl<TClass,TTimer>::clock_type::now();
this->start_ = ClassTimerImpl<TClass, TTimer>::clock_type::now();
(this->obj_.*TFuncPtr)(std::forward<TArgs>(args)...);
this->timeDiff_ = std::chrono::duration_cast<typename ClassTimerImpl<TClass,TTimer>::duration_type>(ClassTimerImpl<TClass,TTimer>::clock_type::now() - this->start_);
this->timeDiff_ = std::chrono::duration_cast<
typename ClassTimerImpl<TClass, TTimer>::duration_type>(
ClassTimerImpl<TClass, TTimer>::clock_type::now() - this->start_);
return;
}
......@@ -54,27 +60,35 @@ namespace corsika {
template <typename TClass, typename TRet, typename... TArgs,
TRet (TClass::*TFuncPtr)(TArgs...) const, typename TTimer>
ClassTimer<TRet (TClass::*)(TArgs...) const, TFuncPtr, TTimer>::ClassTimer(TClass& obj)
: ClassTimerImpl<TClass,TTimer>(obj) {}
: ClassTimerImpl<TClass, TTimer>(obj) {}
template <typename TClass, typename TRet, typename... TArgs,
TRet (TClass::*TFuncPtr)(TArgs...) const, typename TTimer>
TRet ClassTimer<TRet (TClass::*)(TArgs...) const, TFuncPtr, TTimer>::call(TArgs... args) {
this->start_ = ClassTimerImpl<TClass,TTimer>::clock_type::now();
TRet ClassTimer<TRet (TClass::*)(TArgs...) const, TFuncPtr, TTimer>::call(
TArgs... args) {
this->start_ = ClassTimerImpl<TClass, TTimer>::clock_type::now();
auto tmp = (this->obj_.*TFuncPtr)(std::forward<TArgs>(args)...);
this->timeDiff_ = std::chrono::duration_cast<typename ClassTimerImpl<TClass,TTimer>::duration_type>(ClassTimerImpl<TClass,TTimer>::clock_type::now() - this->start_);
this->timeDiff_ = std::chrono::duration_cast<
typename ClassTimerImpl<TClass, TTimer>::duration_type>(
ClassTimerImpl<TClass, TTimer>::clock_type::now() - this->start_);
return tmp;
}
/// Specialisation 3
template <typename TClass, typename... TArgs, void (TClass::*TFuncPtr)(TArgs...) const, typename TTimer>
template <typename TClass, typename... TArgs, void (TClass::*TFuncPtr)(TArgs...) const,
typename TTimer>
ClassTimer<void (TClass::*)(TArgs...) const, TFuncPtr, TTimer>::ClassTimer(TClass& obj)
: ClassTimerImpl<TClass,TTimer>(obj) {}
: ClassTimerImpl<TClass, TTimer>(obj) {}
template <typename TClass, typename... TArgs, void (TClass::*TFuncPtr)(TArgs...) const, typename TTimer>
void ClassTimer<void (TClass::*)(TArgs...) const, TFuncPtr, TTimer>::call(TArgs... args) {
this->start_ = ClassTimerImpl<TClass,TTimer>::clock_type::now();
template <typename TClass, typename... TArgs, void (TClass::*TFuncPtr)(TArgs...) const,
typename TTimer>
void ClassTimer<void (TClass::*)(TArgs...) const, TFuncPtr, TTimer>::call(
TArgs... args) {
this->start_ = ClassTimerImpl<TClass, TTimer>::clock_type::now();
(this->obj_.*TFuncPtr)(std::forward<TArgs>(args)...);
this->timeDiff_ = std::chrono::duration_cast<typename ClassTimerImpl<TClass,TTimer>::duration_type>(ClassTimerImpl<TClass,TTimer>::clock_type::now() - this->start_);
this->timeDiff_ = std::chrono::duration_cast<
typename ClassTimerImpl<TClass, TTimer>::duration_type>(
ClassTimerImpl<TClass, TTimer>::clock_type::now() - this->start_);
return;
}
......
This diff is collapsed.
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......@@ -43,16 +41,14 @@ namespace corsika {
// traverse pFrom
a = &pFrom;
while (a != b && a) {
a = a->getReferenceCS().get();
}
while (a != b && a) { a = a->getReferenceCS().get(); }
if (a == b) break;
b = b->getReferenceCS().get();
}
if (a!=b || a == nullptr) {
if (a != b || a == nullptr) {
throw std::runtime_error("no connection between coordinate systems found!");
}
......
......@@ -114,12 +114,11 @@ namespace corsika {
}
template <typename TTimeType, typename TSpaceVecType>
inline std::ostream& operator<<(std::ostream& os,
corsika::FourVector<TTimeType, TSpaceVecType> const qv) {
inline std::ostream& operator<<(
std::ostream& os, corsika::FourVector<TTimeType, TSpaceVecType> const qv) {
os << '(' << qv.timeLike_ << ", " << qv.spaceLike_ << ") ";
return os;
}
} // namespace corsika
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......@@ -22,20 +20,19 @@ namespace corsika {
rngs_[pStreamName] = std::move(rng);
}
inline RNGManager::prng_type& RNGManager::getRandomStream(string_type const& pStreamName) {
if (isRegistered(pStreamName)) {
return rngs_.at(pStreamName);
} else { // this stream name is not in the map
throw std::runtime_error("'" + pStreamName + "' is not a registered stream.");
}
}
inline RNGManager::prng_type& RNGManager::getRandomStream(
string_type const& pStreamName) {
if (isRegistered(pStreamName)) {
return rngs_.at(pStreamName);
} else { // this stream name is not in the map
throw std::runtime_error("'" + pStreamName + "' is not a registered stream.");
}
}
inline bool RNGManager::isRegistered(string_type const& pStreamName) const {
return rngs_.count(pStreamName) > 0;
}
inline std::stringstream RNGManager::dumpState() const {
std::stringstream buffer;
for (auto const& [streamName, rng] : rngs_) {
......@@ -61,5 +58,4 @@ namespace corsika {
}
}
} // namespace corsika
......@@ -8,7 +8,6 @@
#pragma once
#include <corsika/framework/logging/Logging.hpp>
#include <corsika/framework/core/ParticleProperties.hpp>
#include <corsika/framework/stack/Stack.hpp>
......@@ -16,87 +15,97 @@
namespace corsika {
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB, typename TStackIterator>
template <typename... TArgs1>
inline void CombinedParticleInterface<TParticleInterfaceA, TParticleInterfaceB, TStackIterator>::setParticleData(std::tuple<TArgs1...> const vA) {
pi_a_type::setParticleData(vA);
pi_b_type::setParticleData();
}
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB, typename TStackIterator>
template <typename... TArgs1, typename... TArgs2>
inline void CombinedParticleInterface<TParticleInterfaceA, TParticleInterfaceB, TStackIterator>::setParticleData(std::tuple<TArgs1...> const vA, std::tuple<TArgs2...> const vB) {
pi_a_type::setParticleData(vA);
pi_b_type::setParticleData(vB);
}
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB, typename TStackIterator>
template <typename... TArgs1>
inline void CombinedParticleInterface<TParticleInterfaceA, TParticleInterfaceB, TStackIterator>::setParticleData(pi_a_type& p, std::tuple<TArgs1...> const vA) {
// static_assert(MT<I>::has_not, "error");
pi_a_type::setParticleData(static_cast<pi_a_type&>(p), vA); // original stack
pi_b_type::setParticleData(static_cast<pi_b_type&>(p)); // addon stack
}
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB,typename TStackIterator>
template <typename... TArgs1, typename... TArgs2>
inline void CombinedParticleInterface<TParticleInterfaceA, TParticleInterfaceB, TStackIterator>::setParticleData(pi_c_type& p, std::tuple<TArgs1...> const vA,
std::tuple<TArgs2...> const vB) {
pi_a_type::setParticleData(static_cast<pi_a_type&>(p), vA);
pi_b_type::setParticleData(static_cast<pi_b_type&>(p), vB);
}
///@}
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB, typename TStackIterator>
inline std::string CombinedParticleInterface<TParticleInterfaceA, TParticleInterfaceB, TStackIterator>::asString() const {
return fmt::format("[[{}][{}]]", pi_a_type::asString(), pi_b_type::asString());
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB, typename TStackIterator>
template <typename... TArgs1>
inline void CombinedParticleInterface<
TParticleInterfaceA, TParticleInterfaceB,
TStackIterator>::setParticleData(std::tuple<TArgs1...> const vA) {
pi_a_type::setParticleData(vA);
pi_b_type::setParticleData();
}
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB, typename TStackIterator>
template <typename... TArgs1, typename... TArgs2>
inline void CombinedParticleInterface<
TParticleInterfaceA, TParticleInterfaceB,
TStackIterator>::setParticleData(std::tuple<TArgs1...> const vA,
std::tuple<TArgs2...> const vB) {
pi_a_type::setParticleData(vA);
pi_b_type::setParticleData(vB);
}
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB, typename TStackIterator>
template <typename... TArgs1>
inline void CombinedParticleInterface<
TParticleInterfaceA, TParticleInterfaceB,
TStackIterator>::setParticleData(pi_a_type& p, std::tuple<TArgs1...> const vA) {
// static_assert(MT<I>::has_not, "error");
pi_a_type::setParticleData(static_cast<pi_a_type&>(p), vA); // original stack
pi_b_type::setParticleData(static_cast<pi_b_type&>(p)); // addon stack
}
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB, typename TStackIterator>
template <typename... TArgs1, typename... TArgs2>
inline void CombinedParticleInterface<
TParticleInterfaceA, TParticleInterfaceB,
TStackIterator>::setParticleData(pi_c_type& p, std::tuple<TArgs1...> const vA,
std::tuple<TArgs2...> const vB) {
pi_a_type::setParticleData(static_cast<pi_a_type&>(p), vA);
pi_b_type::setParticleData(static_cast<pi_b_type&>(p), vB);
}
///@}
template <template <typename> class TParticleInterfaceA,
template <typename> class TParticleInterfaceB, typename TStackIterator>
inline std::string CombinedParticleInterface<TParticleInterfaceA, TParticleInterfaceB,
TStackIterator>::asString() const {
return fmt::format("[[{}][{}]]", pi_a_type::asString(), pi_b_type::asString());
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl<Stack1Impl, Stack2Impl>::clear() {
Stack1Impl::clear();
Stack2Impl::clear();
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl<Stack1Impl, Stack2Impl>::copy(const unsigned int i1,
const unsigned int i2) {
if (i1 >= getSize() || i2 >= getSize()) {
std::ostringstream err;
err << "CombinedStack: trying to access data beyond size of stack!";
throw std::runtime_error(err.str());
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl< Stack1Impl, Stack2Impl>::clear() {
Stack1Impl::clear();
Stack2Impl::clear();
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl< Stack1Impl, Stack2Impl>::copy(const unsigned int i1, const unsigned int i2) {
if (i1 >= getSize() || i2 >= getSize()) {
std::ostringstream err;
err << "CombinedStack: trying to access data beyond size of stack!";
throw std::runtime_error(err.str());
}
Stack1Impl::copy(i1, i2);
Stack2Impl::copy(i1, i2);
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl< Stack1Impl, Stack2Impl>::swap(const unsigned int i1, const unsigned int i2) {
if (i1 >= getSize() || i2 >= getSize()) {
std::ostringstream err;
err << "CombinedStack: trying to access data beyond size of stack!";
throw std::runtime_error(err.str());
}
Stack1Impl::swap(i1, i2);
Stack2Impl::swap(i1, i2);
Stack1Impl::copy(i1, i2);
Stack2Impl::copy(i1, i2);
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl<Stack1Impl, Stack2Impl>::swap(const unsigned int i1,
const unsigned int i2) {
if (i1 >= getSize() || i2 >= getSize()) {
std::ostringstream err;
err << "CombinedStack: trying to access data beyond size of stack!";
throw std::runtime_error(err.str());
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl< Stack1Impl, Stack2Impl>::incrementSize() {
Stack1Impl::incrementSize();
Stack2Impl::incrementSize();
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl< Stack1Impl, Stack2Impl>::decrementSize() {
Stack1Impl::decrementSize();
Stack2Impl::decrementSize();
}
Stack1Impl::swap(i1, i2);
Stack2Impl::swap(i1, i2);
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl<Stack1Impl, Stack2Impl>::incrementSize() {
Stack1Impl::incrementSize();
Stack2Impl::incrementSize();
}
template <typename Stack1Impl, typename Stack2Impl>
inline void CombinedStackImpl<Stack1Impl, Stack2Impl>::decrementSize() {
Stack1Impl::decrementSize();
Stack2Impl::decrementSize();
}
} // namespace corsika
/*
* (c) copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
*/
#pragma once
#include <corsika/framework/stack/Stack.hpp>
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
......@@ -7,7 +7,6 @@
*/
#pragma once
#include <cstdlib>
#include <stdexcept>
#include <string>
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
*/
/**
* Import public domain code
*
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
......@@ -21,12 +19,14 @@ namespace corsika {
std::make_unique<Universe>(coordinateSystem_))) {}
template <typename IEnvironmentModel>
typename Environment<IEnvironmentModel>::BaseNodeType::VTNUPtr& Environment<IEnvironmentModel>::getUniverse() {
typename Environment<IEnvironmentModel>::BaseNodeType::VTNUPtr&
Environment<IEnvironmentModel>::getUniverse() {
return universe_;
}
template <typename IEnvironmentModel>
typename Environment<IEnvironmentModel>::BaseNodeType::VTNUPtr const& Environment<IEnvironmentModel>::getUniverse() const {
typename Environment<IEnvironmentModel>::BaseNodeType::VTNUPtr const&
Environment<IEnvironmentModel>::getUniverse() const {
return universe_;
}
......@@ -38,7 +38,8 @@ namespace corsika {
// factory method for creation of VolumeTreeNodes
template <typename IEnvironmentModel>
template <class TVolumeType, typename... TVolumeArgs>
std::unique_ptr< VolumeTreeNode<IEnvironmentModel> > Environment<IEnvironmentModel>::createNode(TVolumeArgs&&... args) {
std::unique_ptr<VolumeTreeNode<IEnvironmentModel> >
Environment<IEnvironmentModel>::createNode(TVolumeArgs&&... args) {
static_assert(std::is_base_of_v<IVolume, TVolumeType>,
"unusable type provided, needs to be derived from "
"\"Volume\"");
......
/*
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
......
......@@ -21,7 +21,7 @@ namespace corsika {
InhomogeneousMedium<T, TDensityFunction>::InhomogeneousMedium(
NuclearComposition const& nuclComp, TArgs&&... rhoTArgs)
: nuclComp_(nuclComp)
, densityFunction_(rhoTArgs...){}
, densityFunction_(rhoTArgs...) {}
template <typename T, typename TDensityFunction>
MassDensityType InhomogeneousMedium<T, TDensityFunction>::getMassDensity(
......
/*
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
*/
#pragma once
namespace corsika {
......@@ -17,4 +25,4 @@ namespace corsika {
} // namespace detail
}
} // namespace corsika
/*
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
......
/*
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......
/*
* (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
*
* See file AUTHORS for a list of contributors.
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
......@@ -138,9 +136,9 @@ namespace corsika::hadronic_elastic_model {
}();
std::cout << "HadronicElasticInteraction: s = " << s * constants::invGeVsq
<< " GeV²; absT = " << absT * constants::invGeVsq