diff --git a/COAST/CMakeLists.txt b/COAST/CMakeLists.txt index ae85a9176aee3e55efb226d3fae4df0ae5a7e212..2aae4eb262f78513a0bb5312a6c3e5b972c56bb1 100644 --- a/COAST/CMakeLists.txt +++ b/COAST/CMakeLists.txt @@ -43,9 +43,10 @@ target_link_libraries ( target_include_directories ( COAST PUBLIC - $ENV{COAST_DIR}/include $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include> $<INSTALL_INTERFACE:include/include> + SYSTEM + $ENV{COAST_DIR}/include ) install ( diff --git a/COAST/COASTStack.h b/COAST/COASTStack.h index d5ac8c738869f3680faaebed8117c9ccff9cfb26..60659cd394d9f20971ebca3721b4e8691c036a91 100644 --- a/COAST/COASTStack.h +++ b/COAST/COASTStack.h @@ -52,8 +52,8 @@ namespace corsika::coast { MomentumVector GetMomentum(const corsika::geometry::CoordinateSystem& cs) const { using namespace corsika::units::si; const HEPEnergyType mass = corsika::particles::GetMass(GetPID()); - auto P = sqrt((GetEnergy() - mass) * (GetEnergy() + mass)); - auto p = GetStackData().GetDirection(cs, GetIndex()); + const auto P = sqrt((GetEnergy() - mass) * (GetEnergy() + mass)); + const auto p = GetStackData().GetDirection(cs, GetIndex()); return p * P; } @@ -129,9 +129,9 @@ namespace corsika::coast { const corsika::geometry::CoordinateSystem& cs, const int) const { using namespace corsika::units::si; corsika::geometry::Point p1( - cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->y * 1_cm}); + cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->z * 1_cm}); corsika::geometry::Point p2( - cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->y * 1_cm}); + cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->z * 1_cm}); const corsika::geometry::Vector D = p2 - p1; const auto magD = D.norm(); const corsika::geometry::Vector dir = D / magD; @@ -143,12 +143,12 @@ namespace corsika::coast { corsika::geometry::Vector<corsika::units::si::dimensionless_d> dir = GetDirection(cs, 0); corsika::geometry::Point p1( - cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->y * 1_cm}); + cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->z * 1_cm}); corsika::geometry::Point p2( - cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->y * 1_cm}); + cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->z * 1_cm}); const corsika::geometry::Vector D = p2 - p1; const LengthType magD = D.norm(); - const TimeType deltaT = (fParticle2->time - fParticle1->time) * 1_ns; + const TimeType deltaT = GetTimeInterval(); return dir * magD / deltaT; } corsika::geometry::Point GetPosition(const corsika::geometry::CoordinateSystem& cs, diff --git a/COAST/ParticleConversion.cc b/COAST/ParticleConversion.cc index 9b1fd3f0e6d75daf45023d2cfb6b86560ce66880..489c4dbf4b20cbe53be854a5da2cbca894540402 100644 --- a/COAST/ParticleConversion.cc +++ b/COAST/ParticleConversion.cc @@ -20,6 +20,10 @@ using namespace std; namespace corsika::coast { + /** + Convert particle code, and check if it does exists. Throw exeption, if not! + */ + corsika::particles::Code ConvertFromCoast(CoastCode pCode) { if (coast2corsika.count(pCode) == 0) { ostringstream err; @@ -30,7 +34,5 @@ namespace corsika::coast { } return coast2corsika.find(pCode)->second; } - // process::sibyll::Sibyll2Corsika = { - // {PID::E_MINUS, InternalParticleCode::Electron}, - //}; + } // namespace corsika::coast diff --git a/COAST/ParticleConversion.h b/COAST/ParticleConversion.h index d9e87b8e38071051e527cf70640a10aa57c5caf1..8b7817e7b6e2b0379a66dc98074ff0046c62e10a 100644 --- a/COAST/ParticleConversion.h +++ b/COAST/ParticleConversion.h @@ -20,6 +20,9 @@ namespace corsika::coast { + /** + Here we define the original CORSIKA particle codes, see corsika manual + */ enum class CoastCode : int16_t { Gamma = 1, Positron = 2, @@ -90,14 +93,31 @@ namespace corsika::coast { Code95 = 95, Code96 = 96, + ProtonNucleus = 101, + Deuterium = 201, + Tritium = 301, + He3 = 302, Helium = 402, - Carbon = 612, - Nitrogen = 714, - Oxygen = 816, + Lithium = 603, + Beryllium = 904, + Boron = 1005, + Carbon = 1206, + Nitrogen = 1407, + Oxygen = 1608, + Neon = 2210, + Argon = 1838, Iron = 5628, + Xenon = 12854, + Radon = 13888, }; + using CoastCodeIntType = std::underlying_type<CoastCode>::type; + + /** + Here we convert CORSIKA7 to CORSIKA8 codes + */ + const std::map<corsika::coast::CoastCode, corsika::particles::Code> coast2corsika = { {CoastCode::Gamma, corsika::particles::Code::Gamma}, {CoastCode::Positron, corsika::particles::Code::Positron}, @@ -164,13 +184,24 @@ namespace corsika::coast { {CoastCode::Code95, corsika::particles::Code::Unknown}, {CoastCode::Code96, corsika::particles::Code::Unknown}, + {CoastCode::ProtonNucleus, corsika::particles::Code::Proton}, // 101 + {CoastCode::Deuterium, corsika::particles::Code::Deuterium}, + {CoastCode::Tritium, corsika::particles::Code::Tritium}, + {CoastCode::He3, corsika::particles::Code::Helium3}, {CoastCode::Helium, corsika::particles::Code::Helium}, // 402 + {CoastCode::Lithium, corsika::particles::Code::Lithium}, + {CoastCode::Beryllium, corsika::particles::Code::Beryllium}, + {CoastCode::Boron, corsika::particles::Code::Boron}, {CoastCode::Carbon, corsika::particles::Code::Carbon}, {CoastCode::Nitrogen, corsika::particles::Code::Nitrogen}, {CoastCode::Oxygen, corsika::particles::Code::Oxygen}, + {CoastCode::Neon, corsika::particles::Code::Neon}, + {CoastCode::Argon, corsika::particles::Code::Argon}, + {CoastCode::Xenon, corsika::particles::Code::Xenon}, + {CoastCode::Radon, corsika::particles::Code::Radon}, {CoastCode::Iron, corsika::particles::Code::Iron}, // 5628 - //{CoastCode::, corsika::particles::Code::} + //{CoastCode::, corsika::particles::Code::}, }; diff --git a/Framework/Particles/NuclearData.xml b/Framework/Particles/NuclearData.xml index c707f3a2716a6fbbe61e15df98fcdaaf0e3e71bb..e01f1ba6a8877ac65c58c4bac33110f3891ba047 100644 --- a/Framework/Particles/NuclearData.xml +++ b/Framework/Particles/NuclearData.xml @@ -12,6 +12,18 @@ <particle id="1000020040" name="helium" A="4" Z="2" > </particle> +<particle id="1000020030" name="helium3" A="3" Z="2" > +</particle> + +<particle id="1000020030" name="lithium" A="6" Z="3" > +</particle> + +<particle id="1000020030" name="beryllium" A="9" Z="4" > +</particle> + +<particle id="1000020030" name="boron" A="10" Z="5" > +</particle> + <particle id="1000060120" name="carbon" A="12" Z="6" > </particle> @@ -21,10 +33,22 @@ <particle id="1000080160" name="oxygen" A="16" Z="8" > </particle> +<particle id="1000180400" name="neon" A="22" Z="10" > +</particle> + <particle id="1000180400" name="argon" A="40" Z="18" > </particle> <particle id="1000280560" name="iron" A="56" Z="28" > </particle> +<particle id="1000180400" name="xenon" A="128" Z="54" > +</particle> + +<particle id="1000180400" name="radon" A="138" Z="88" > +</particle> + +<particle id="1000280560" name="lead" A="208" Z="82" > +</particle> + </chapter>