diff --git a/Framework/Units/PhysicalUnits.h b/Framework/Units/PhysicalUnits.h index 6bc71d708316fdfb22656b22b21b462104e50cd0..b1f1eb7420f3e5e19b9a5694c66e604323786a78 100644 --- a/Framework/Units/PhysicalUnits.h +++ b/Framework/Units/PhysicalUnits.h @@ -158,7 +158,7 @@ namespace phys { QUANTITY_DEFINE_SCALING_LITERALS(eV, hepenergy_d, 1) - QUANTITY_DEFINE_SCALING_LITERALS(barn, corsika::units::si::sigma_d, + QUANTITY_DEFINE_SCALING_LITERALS(b, corsika::units::si::sigma_d, magnitude(corsika::units::constants::barn)) } // namespace literals diff --git a/Framework/Units/testUnits.cc b/Framework/Units/testUnits.cc index e8f389a05818615475dd988cce1181f6bf66ba42..8788fd6f19d872c65445300baa25efa272c09425 100644 --- a/Framework/Units/testUnits.cc +++ b/Framework/Units/testUnits.cc @@ -59,7 +59,7 @@ TEST_CASE("PhysicalUnits", "[Units]") { REQUIRE(1_mol / 1_amol == Approx(1e18)); REQUIRE(1_K / 1_zK == Approx(1e21)); REQUIRE(1_K / 1_yK == Approx(1e24)); - REQUIRE(1_barn / 1_mbarn == Approx(1e3)); + REQUIRE(1_b / 1_mb == Approx(1e3)); REQUIRE(1_A / 1_hA == Approx(1e-2)); REQUIRE(1_m / 1_km == Approx(1e-3)); diff --git a/Processes/HadronicElasticModel/HadronicElasticModel.cc b/Processes/HadronicElasticModel/HadronicElasticModel.cc index f68e3141067fb4a7b0977c464568501ec43a868e..d04b8dcd60e7fa916aa092ce8d92253ac906d7a1 100644 --- a/Processes/HadronicElasticModel/HadronicElasticModel.cc +++ b/Processes/HadronicElasticModel/HadronicElasticModel.cc @@ -56,7 +56,7 @@ namespace corsika::process::HadronicElasticModel { auto const projectileEnergy = p.GetEnergy(); auto const avgCrossSection = [&]() { - CrossSectionType avgCrossSection = 0_barn; + CrossSectionType avgCrossSection = 0_b; for (size_t i = 0; i < fractions.size(); ++i) { auto const targetMass = particles::GetMass(components[i]); @@ -65,7 +65,7 @@ namespace corsika::process::HadronicElasticModel { avgCrossSection += CrossSection(s) * fractions[i]; } - std::cout << "avgCrossSection: " << avgCrossSection / 1_mbarn << " mb" + std::cout << "avgCrossSection: " << avgCrossSection / 1_mb << " mb" << std::endl; return avgCrossSection; @@ -200,8 +200,8 @@ namespace corsika::process::HadronicElasticModel { units::si::detail::static_pow<2>(sigmaTotal) / (16 * M_PI * ConvertHEPToSI<CrossSectionType::dimension_type>(B(s))); - std::cout << "HEM sigmaTot = " << sigmaTotal / 1_mbarn << " mb" << std::endl; - std::cout << "HEM sigmaElastic = " << sigmaElastic / 1_mbarn << " mb" << std::endl; + std::cout << "HEM sigmaTot = " << sigmaTotal / 1_mb << " mb" << std::endl; + std::cout << "HEM sigmaElastic = " << sigmaElastic / 1_mb << " mb" << std::endl; return sigmaElastic; } diff --git a/Processes/Pythia/Interaction.cc b/Processes/Pythia/Interaction.cc index 8c7d6d7527c6b0545dba8bb3872501ea3509ed71..a57d967c04f065054e4f656652aca03feec15c60 100644 --- a/Processes/Pythia/Interaction.cc +++ b/Processes/Pythia/Interaction.cc @@ -156,14 +156,14 @@ namespace corsika::process::pythia { const double sigEla = fSigma.sigmaEl(); const double sigProd = fSigma.sigmaTot() - sigEla; - return std::make_tuple(sigProd * 1_mbarn, sigEla * 1_mbarn); + return std::make_tuple(sigProd * 1_mb, sigEla * 1_mb); } else throw std::runtime_error("pythia cross section init failed"); } else { - return std::make_tuple(std::numeric_limits<double>::infinity() * 1_mbarn, - std::numeric_limits<double>::infinity() * 1_mbarn); + return std::make_tuple(std::numeric_limits<double>::infinity() * 1_mb, + std::numeric_limits<double>::infinity() * 1_mb); } } else { throw std::runtime_error("invalid target for pythia"); @@ -221,7 +221,7 @@ namespace corsika::process::pythia { // determine average interaction length // weighted sum int i = -1; - si::CrossSectionType weightedProdCrossSection = 0_mbarn; + si::CrossSectionType weightedProdCrossSection = 0_mb; // get weights of components from environment/medium const auto w = mediumComposition.GetFractions(); // loop over components in medium @@ -235,13 +235,13 @@ namespace corsika::process::pythia { elaCrossSection; // ONLY TO AVOID COMPILER WARNING cout << "Interaction: IntLength: pythia return (mb): " - << productionCrossSection / 1_mbarn << endl + << productionCrossSection / 1_mb << endl << "Interaction: IntLength: weight : " << w[i] << endl; weightedProdCrossSection += w[i] * productionCrossSection; } cout << "Interaction: IntLength: weighted CrossSection (mb): " - << weightedProdCrossSection / 1_mbarn << endl + << weightedProdCrossSection / 1_mb << endl << "Interaction: IntLength: average mass number: " << mediumComposition.GetAverageMassNumber() << endl; diff --git a/Processes/Sibyll/Interaction.cc b/Processes/Sibyll/Interaction.cc index b16d48332a76aaa84edd403ed1a3736487a0269e..7b2532ea661151ec029a109f740e55daae4e9686 100644 --- a/Processes/Sibyll/Interaction.cc +++ b/Processes/Sibyll/Interaction.cc @@ -114,7 +114,7 @@ namespace corsika::process::sibyll { sigProd = std::numeric_limits<double>::infinity(); sigEla = std::numeric_limits<double>::infinity(); } - return std::make_tuple(sigProd * 1_mbarn, sigEla * 1_mbarn); + return std::make_tuple(sigProd * 1_mb, sigEla * 1_mb); } template <> @@ -169,7 +169,7 @@ namespace corsika::process::sibyll { // determine average interaction length // weighted sum int i = -1; - si::CrossSectionType weightedProdCrossSection = 0_mbarn; + si::CrossSectionType weightedProdCrossSection = 0_mb; // get weights of components from environment/medium const auto& w = mediumComposition.GetFractions(); // loop over components in medium @@ -183,13 +183,13 @@ namespace corsika::process::sibyll { elaCrossSection; // ONLY TO AVOID COMPILER WARNING cout << "Interaction: " - << " IntLength: sibyll return (mb): " << productionCrossSection / 1_mbarn + << " IntLength: sibyll return (mb): " << productionCrossSection / 1_mb << endl; weightedProdCrossSection += w[i] * productionCrossSection; } cout << "Interaction: " << "IntLength: weighted CrossSection (mb): " - << weightedProdCrossSection / 1_mbarn << endl; + << weightedProdCrossSection / 1_mb << endl; // calculate interaction length in medium //#warning check interaction length units diff --git a/Processes/Sibyll/NuclearInteraction.cc b/Processes/Sibyll/NuclearInteraction.cc index 8b37868b6e879d5614cf88379b4222615f7ce140..d0db3df4a2e603fc403909e4f725d270df34f4e1 100644 --- a/Processes/Sibyll/NuclearInteraction.cc +++ b/Processes/Sibyll/NuclearInteraction.cc @@ -113,8 +113,8 @@ namespace corsika::process::sibyll { auto const protonId = Code::Proton; auto const [siginel, sigela] = fHadronicInteraction.GetCrossSection(protonId, protonId, Ecm); - const double dsig = siginel / 1_mbarn; - const double dsigela = sigela / 1_mbarn; + const double dsig = siginel / 1_mb; + const double dsigela = sigela / 1_mb; // loop over projectiles, mass numbers from 2 to fMaxNucleusAProjectile for (int j = 1; j < fMaxNucleusAProjectile; ++j) { const int jj = j + 1; @@ -169,7 +169,7 @@ namespace corsika::process::sibyll { cout << "ReadCrossSectionTable: " << ia << " " << ib << " " << e0 << endl; signuc2_(ia, ib, e0, sig); cout << "ReadCrossSectionTable: sig=" << sig << endl; - return sig * 1_mbarn; + return sig * 1_mb; } // TODO: remove elastic cross section? @@ -201,13 +201,13 @@ namespace corsika::process::sibyll { if (fHadronicInteraction.IsValidTarget(TargetId)) { auto const sigProd = ReadCrossSectionTable(iBeamA, TargetId, LabEnergyPerNuc); - cout << "cross section (mb): " << sigProd / 1_mbarn << endl; - return std::make_tuple(sigProd, 0_mbarn); + cout << "cross section (mb): " << sigProd / 1_mb << endl; + return std::make_tuple(sigProd, 0_mb); } else { throw std::runtime_error("target outside range."); } - return std::make_tuple(std::numeric_limits<double>::infinity() * 1_mbarn, - std::numeric_limits<double>::infinity() * 1_mbarn); + return std::make_tuple(std::numeric_limits<double>::infinity() * 1_mb, + std::numeric_limits<double>::infinity() * 1_mb); } template <> @@ -277,7 +277,7 @@ namespace corsika::process::sibyll { // determine average interaction length // weighted sum int i = -1; - si::CrossSectionType weightedProdCrossSection = 0_mbarn; + si::CrossSectionType weightedProdCrossSection = 0_mb; // get weights of components from environment/medium const auto w = mediumComposition.GetFractions(); // loop over components in medium @@ -290,13 +290,13 @@ namespace corsika::process::sibyll { [[maybe_unused]] auto elaCrossSectionCopy = elaCrossSection; cout << "NuclearInteraction: " - << "IntLength: nuclib return (mb): " << productionCrossSection / 1_mbarn + << "IntLength: nuclib return (mb): " << productionCrossSection / 1_mb << endl; weightedProdCrossSection += w[i] * productionCrossSection; } cout << "NuclearInteraction: " << "IntLength: weighted CrossSection (mb): " - << weightedProdCrossSection / 1_mbarn << endl; + << weightedProdCrossSection / 1_mb << endl; // calculate interaction length in medium GrammageType const int_length = mediumComposition.GetAverageMassNumber() * @@ -472,8 +472,8 @@ namespace corsika::process::sibyll { const auto protonId = particles::Proton::GetCode(); const auto [prodCrossSection, elaCrossSection] = fHadronicInteraction.GetCrossSection(protonId, protonId, EcmNN); - const double sigProd = prodCrossSection / 1_mbarn; - const double sigEla = elaCrossSection / 1_mbarn; + const double sigProd = prodCrossSection / 1_mb; + const double sigEla = elaCrossSection / 1_mb; // sample number of interactions (only input variables, output in common cnucms) // nuclear multiple scattering according to glauber (r.i.p.) int_nuc_(kATarget, kAProj, sigProd, sigEla);