IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 412f44aa authored by ralfulrich's avatar ralfulrich
Browse files

rebase with master

parent a1556502
No related branches found
No related tags found
No related merge requests found
...@@ -229,7 +229,7 @@ int main() { ...@@ -229,7 +229,7 @@ int main() {
// setup processes, decays and interactions // setup processes, decays and interactions
tracking_line::TrackingLine<setup::Stack> tracking(env); tracking_line::TrackingLine<setup::Stack> tracking(env);
stack_inspector::StackInspector<setup::Stack> p0(true); stack_inspector::StackInspector<setup::Stack> p0(true);
corsika::random::RNGManager::GetInstance().RegisterRandomStream("s_rndm"); corsika::random::RNGManager::GetInstance().RegisterRandomStream("s_rndm");
corsika::process::sibyll::Interaction sibyll(env); corsika::process::sibyll::Interaction sibyll(env);
corsika::process::sibyll::Decay decay; corsika::process::sibyll::Decay decay;
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
namespace corsika::environment { namespace corsika::environment {
using BaseNodeType = VolumeTreeNode<corsika::setup::IEnvironmentModel>; using BaseNodeType = VolumeTreeNode<corsika::setup::IEnvironmentModel>;
struct Universe : public corsika::geometry::Sphere { struct Universe : public corsika::geometry::Sphere {
Universe(corsika::geometry::CoordinateSystem const& pCS) Universe(corsika::geometry::CoordinateSystem const& pCS)
: corsika::geometry::Sphere( : corsika::geometry::Sphere(
......
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
#include <corsika/geometry/Line.h> #include <corsika/geometry/Line.h>
#include <corsika/geometry/Point.h> #include <corsika/geometry/Point.h>
#include <corsika/geometry/Trajectory.h> #include <corsika/geometry/Trajectory.h>
#include <random>
#include <corsika/units/PhysicalUnits.h> #include <corsika/units/PhysicalUnits.h>
#include <random>
namespace corsika::environment { namespace corsika::environment {
...@@ -39,18 +39,19 @@ namespace corsika::environment { ...@@ -39,18 +39,19 @@ namespace corsika::environment {
corsika::units::si::GrammageType) const = 0; corsika::units::si::GrammageType) const = 0;
virtual NuclearComposition const& GetNuclearComposition() const = 0; virtual NuclearComposition const& GetNuclearComposition() const = 0;
template <class TRNG> template <class TRNG>
corsika::particles::Code SampleTarget( corsika::particles::Code SampleTarget(
std::vector<corsika::units::si::CrossSectionType> const& sigma, TRNG& randomStream) const { std::vector<corsika::units::si::CrossSectionType> const& sigma,
TRNG& randomStream) const {
using namespace corsika::units::si; using namespace corsika::units::si;
auto const& nuclComp = GetNuclearComposition(); auto const& nuclComp = GetNuclearComposition();
auto const& fractions = nuclComp.GetFractions(); auto const& fractions = nuclComp.GetFractions();
assert(sigma.size() == fractions.size()); assert(sigma.size() == fractions.size());
std::vector<float> weights(fractions.size()); std::vector<float> weights(fractions.size());
for (size_t i = 0; i < fractions.size(); ++i) { for (size_t i = 0; i < fractions.size(); ++i) {
std::cout << "HomogeneousMedium: fraction: " << fractions[i] << std::endl; std::cout << "HomogeneousMedium: fraction: " << fractions[i] << std::endl;
weights[i] = fractions[i] * sigma[i].magnitude(); weights[i] = fractions[i] * sigma[i].magnitude();
......
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
#define _include_NuclearComposition_h #define _include_NuclearComposition_h
#include <corsika/particles/ParticleProperties.h> #include <corsika/particles/ParticleProperties.h>
#include <cassert>
#include <numeric> #include <numeric>
#include <stdexcept> #include <stdexcept>
#include <cassert>
#include <vector> #include <vector>
namespace corsika::environment { namespace corsika::environment {
...@@ -29,7 +29,7 @@ namespace corsika::environment { ...@@ -29,7 +29,7 @@ namespace corsika::environment {
std::vector<float> pFractions) std::vector<float> pFractions)
: fNumberFractions(pFractions) : fNumberFractions(pFractions)
, fComponents(pComponents) { , fComponents(pComponents) {
assert(pComponents.size() == pFractions.size()); assert(pComponents.size() == pFractions.size());
auto const sumFractions = auto const sumFractions =
std::accumulate(pFractions.cbegin(), pFractions.cend(), 0.f); std::accumulate(pFractions.cbegin(), pFractions.cend(), 0.f);
......
...@@ -56,7 +56,7 @@ namespace corsika::cascade { ...@@ -56,7 +56,7 @@ namespace corsika::cascade {
} }
} }
private: private:
void Step(Particle& particle) { void Step(Particle& particle) {
using namespace corsika::units::si; using namespace corsika::units::si;
......
...@@ -43,11 +43,9 @@ namespace corsika::geometry { ...@@ -43,11 +43,9 @@ namespace corsika::geometry {
"(e.g. GeV) or [E/c]=[p]"); "(e.g. GeV) or [E/c]=[p]");
public: public:
FourVector(const TimeType& eT, const SpaceVecType& eS)
FourVector(const TimeType& eT, const SpaceVecType& eS)
: fTimeLike(eT) : fTimeLike(eT)
, fSpaceLike(eS) { , fSpaceLike(eS) {}
}
TimeType GetTime() { return fTimeLike; } TimeType GetTime() { return fTimeLike; }
...@@ -137,21 +135,25 @@ namespace corsika::geometry { ...@@ -137,21 +135,25 @@ namespace corsika::geometry {
/// the friends: math operators /// the friends: math operators
template <typename T, typename U> template <typename T, typename U>
friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type> operator+(const FourVector<T, U>&, const FourVector<T, U>&); friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
operator+(const FourVector<T, U>&, const FourVector<T, U>&);
template <typename T, typename U> template <typename T, typename U>
friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type> operator-(const FourVector<T, U>&, const FourVector<T, U>&); friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
operator-(const FourVector<T, U>&, const FourVector<T, U>&);
template <typename T, typename U> template <typename T, typename U>
friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type> operator*(const FourVector<T, U>&, const double); friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
operator*(const FourVector<T, U>&, const double);
template <typename T, typename U> template <typename T, typename U>
friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type> operator/(const FourVector<T, U>&, const double); friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
operator/(const FourVector<T, U>&, const double);
}; };
/** /**
The math operator+ The math operator+
*/ */
template <typename TimeType, typename SpaceVecType> template <typename TimeType, typename SpaceVecType>
inline FourVector<typename std::decay<TimeType>::type, inline FourVector<typename std::decay<TimeType>::type,
typename std::decay<SpaceVecType>::type> typename std::decay<SpaceVecType>::type>
...@@ -161,7 +163,7 @@ namespace corsika::geometry { ...@@ -161,7 +163,7 @@ namespace corsika::geometry {
typename std::decay<SpaceVecType>::type>( typename std::decay<SpaceVecType>::type>(
a.fTimeLike + b.fTimeLike, a.fSpaceLike + b.fSpaceLike); a.fTimeLike + b.fTimeLike, a.fSpaceLike + b.fSpaceLike);
} }
/** /**
The math operator- The math operator-
*/ */
...@@ -181,11 +183,10 @@ namespace corsika::geometry { ...@@ -181,11 +183,10 @@ namespace corsika::geometry {
template <typename TimeType, typename SpaceVecType> template <typename TimeType, typename SpaceVecType>
inline FourVector<typename std::decay<TimeType>::type, inline FourVector<typename std::decay<TimeType>::type,
typename std::decay<SpaceVecType>::type> typename std::decay<SpaceVecType>::type>
operator*(const FourVector<TimeType, SpaceVecType>& a, operator*(const FourVector<TimeType, SpaceVecType>& a, const double b) {
const double b) {
return FourVector<typename std::decay<TimeType>::type, return FourVector<typename std::decay<TimeType>::type,
typename std::decay<SpaceVecType>::type>( typename std::decay<SpaceVecType>::type>(a.fTimeLike * b,
a.fTimeLike * b, a.fSpaceLike * b); a.fSpaceLike * b);
} }
/** /**
...@@ -194,11 +195,10 @@ namespace corsika::geometry { ...@@ -194,11 +195,10 @@ namespace corsika::geometry {
template <typename TimeType, typename SpaceVecType> template <typename TimeType, typename SpaceVecType>
inline FourVector<typename std::decay<TimeType>::type, inline FourVector<typename std::decay<TimeType>::type,
typename std::decay<SpaceVecType>::type> typename std::decay<SpaceVecType>::type>
operator/(const FourVector<TimeType, SpaceVecType>& a, operator/(const FourVector<TimeType, SpaceVecType>& a, const double b) {
const double b) {
return FourVector<typename std::decay<TimeType>::type, return FourVector<typename std::decay<TimeType>::type,
typename std::decay<SpaceVecType>::type>( typename std::decay<SpaceVecType>::type>(a.fTimeLike / b,
a.fTimeLike / b, a.fSpaceLike / b); a.fSpaceLike / b);
} }
} // namespace corsika::geometry } // namespace corsika::geometry
......
...@@ -162,7 +162,7 @@ TEST_CASE("four vectors") { ...@@ -162,7 +162,7 @@ TEST_CASE("four vectors") {
it merely provides the physical/mathematical wrapper around the it merely provides the physical/mathematical wrapper around the
data. data.
*/ */
SECTION("Use as wrapper") { SECTION("Use as wrapper") {
TimeType T = 10_m / corsika::units::constants::c; TimeType T = 10_m / corsika::units::constants::c;
...@@ -171,22 +171,23 @@ TEST_CASE("four vectors") { ...@@ -171,22 +171,23 @@ TEST_CASE("four vectors") {
const TimeType T_c = 10_m / corsika::units::constants::c; const TimeType T_c = 10_m / corsika::units::constants::c;
const Vector<length_d> P_c(rootCS, {10_m, 5_m, 5_m}); const Vector<length_d> P_c(rootCS, {10_m, 5_m, 5_m});
//FourVector<TimeType&, Vector<length_d>&> p0(T_c, P_c); // this does not compile, and it shoudn't! // FourVector<TimeType&, Vector<length_d>&> p0(T_c, P_c); // this does not compile,
// and it shoudn't!
FourVector<TimeType&, Vector<length_d>&> p1(T, P); FourVector<TimeType&, Vector<length_d>&> p1(T, P);
FourVector<const TimeType&, const Vector<length_d>&> p2(T, P); FourVector<const TimeType&, const Vector<length_d>&> p2(T, P);
FourVector<const TimeType&, const Vector<length_d>&> p3(T_c, P_c); FourVector<const TimeType&, const Vector<length_d>&> p3(T_c, P_c);
std::cout << type_id_with_cvr<decltype(p1)>().pretty_name() << std::endl; std::cout << type_id_with_cvr<decltype(p1)>().pretty_name() << std::endl;
std::cout << type_id_with_cvr<decltype(p2)>().pretty_name() << std::endl; std::cout << type_id_with_cvr<decltype(p2)>().pretty_name() << std::endl;
std::cout << type_id_with_cvr<decltype(p3)>().pretty_name() << std::endl; std::cout << type_id_with_cvr<decltype(p3)>().pretty_name() << std::endl;
p1 *= 10; p1 *= 10;
//p2 *= 10; // this does not compile, and it shoudn't ! // p2 *= 10; // this does not compile, and it shoudn't !
//p3 *= 10; // this does not compile, and it shoudn't !! // p3 *= 10; // this does not compile, and it shoudn't !!
const double check = 10 * 10 - 10 * 10 - 5 * 5 - 5 * 5; // for dummies... const double check = 10 * 10 - 10 * 10 - 5 * 5 - 5 * 5; // for dummies...
REQUIRE(p1.GetNormSqr()/(1_m * 1_m) == Approx(10.*10. * check)); REQUIRE(p1.GetNormSqr() / (1_m * 1_m) == Approx(10. * 10. * check));
REQUIRE(p2.GetNorm()/1_m == Approx(10*sqrt(abs(check)))); REQUIRE(p2.GetNorm() / 1_m == Approx(10 * sqrt(abs(check))));
REQUIRE(p3.GetNorm()/1_m == Approx(sqrt(abs(check)))); REQUIRE(p3.GetNorm() / 1_m == Approx(sqrt(abs(check))));
} }
} }
...@@ -95,14 +95,6 @@ namespace phys { ...@@ -95,14 +95,6 @@ namespace phys {
QUANTITY_DEFINE_SCALING_LITERALS(barn, corsika::units::si::sigma_d, QUANTITY_DEFINE_SCALING_LITERALS(barn, corsika::units::si::sigma_d,
magnitude(corsika::units::constants::barn)) magnitude(corsika::units::constants::barn))
/**
* add additional literals missing in the original library:
*
*/
QUANTITY_DEFINE_SCALING_LITERALS(gram, mass_d, 1e-3)
} // namespace literals } // namespace literals
} // namespace units } // namespace units
} // namespace phys } // namespace phys
......
...@@ -167,11 +167,6 @@ namespace corsika::process { ...@@ -167,11 +167,6 @@ namespace corsika::process {
using corsika::geometry::Point; using corsika::geometry::Point;
using namespace corsika::units::si; using namespace corsika::units::si;
// TODO: this should be done in a central, common place. Not here..
#ifndef CORSIKA_OSX
feenableexcept(FE_INVALID);
#endif
fCount++; fCount++;
SibStack ss; SibStack ss;
ss.Clear(); ss.Clear();
...@@ -217,11 +212,6 @@ namespace corsika::process { ...@@ -217,11 +212,6 @@ namespace corsika::process {
} }
// empty sibyll stack // empty sibyll stack
ss.Clear(); ss.Clear();
// TODO: this should be done in a central, common place. Not here..
#ifndef CORSIKA_OSX
fedisableexcept(FE_INVALID);
#endif
} }
}; };
} // namespace sibyll } // namespace sibyll
......
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