diff --git a/Processes/Proposal/ContinuousProcess.h b/Processes/Proposal/ContinuousProcess.h index e123ee938f5a0c6a5e20b10489687fa419bccc93..58b19ec2910a61d84ef7965a6cdbe50a4d6ea58f 100644 --- a/Processes/Proposal/ContinuousProcess.h +++ b/Processes/Proposal/ContinuousProcess.h @@ -73,6 +73,31 @@ namespace corsika::process::proposal { calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)}); return insert_it; } + if (corsika_code == particles::Code::MuMinus) { + auto cross = GetStdCrossSections(PROPOSAL::MuMinusDef(), media.at(&comp), cut, true); + auto [insert_it, success] = + calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)}); + return insert_it; + } + if (corsika_code == particles::Code::MuPlus) { + auto cross = GetStdCrossSections(PROPOSAL::MuPlusDef(), media.at(&comp), cut, true); + auto [insert_it, success] = + calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)}); + return insert_it; + } + if (corsika_code == particles::Code::TauMinus) { + auto cross = GetStdCrossSections(PROPOSAL::TauMinusDef(), media.at(&comp), cut, true); + auto [insert_it, success] = + calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)}); + return insert_it; + } + if (corsika_code == particles::Code::TauPlus) { + auto cross = GetStdCrossSections(PROPOSAL::TauPlusDef(), media.at(&comp), cut, true); + auto [insert_it, success] = + calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)}); + return insert_it; + } + throw std::runtime_error("PROPOSAL could not find corresponding builder"); } template <typename Particle> diff --git a/Processes/Proposal/Interaction.h b/Processes/Proposal/Interaction.h index 48f3fbeb1b6a4524c9820d9c7fd90b1c362f5755..b95b6afdbe18133bf49f66c88adf69378d3d5fba 100644 --- a/Processes/Proposal/Interaction.h +++ b/Processes/Proposal/Interaction.h @@ -92,6 +92,55 @@ namespace corsika::process::proposal { PROPOSAL::make_displacement(cross, true))}); return insert_it; } + if (corsika_code == particles::Code::MuMinus) { + std::cout << "Build MuMinus tables" << std::endl; + auto cross = + GetStdCrossSections(PROPOSAL::MuMinusDef(), media.at(&comp), cut, true); + auto inter_types = PROPOSAL::CrossSectionVector::GetInteractionTypes(cross); + auto [insert_it, success] = calculators.insert( + {std::make_pair(&comp, corsika_code), make_tuple(PROPOSAL::make_secondaries( + inter_types, PROPOSAL::MuMinusDef(), media.at(&comp)), + PROPOSAL::make_interaction(cross, true), + PROPOSAL::make_displacement(cross, true))}); + return insert_it; + } + if (corsika_code == particles::Code::MuPlus) { + std::cout << "Build MuPlus tables" << std::endl; + auto cross = + GetStdCrossSections(PROPOSAL::MuPlusDef(), media.at(&comp), cut, true); + auto inter_types = PROPOSAL::CrossSectionVector::GetInteractionTypes(cross); + auto [insert_it, success] = calculators.insert( + {std::make_pair(&comp, corsika_code), make_tuple(PROPOSAL::make_secondaries( + inter_types, PROPOSAL::MuPlusDef(), media.at(&comp)), + PROPOSAL::make_interaction(cross, true), + PROPOSAL::make_displacement(cross, true))}); + return insert_it; + } + if (corsika_code == particles::Code::TauMinus) { + std::cout << "Build TauMinus tables" << std::endl; + auto cross = + GetStdCrossSections(PROPOSAL::TauMinusDef(), media.at(&comp), cut, true); + auto inter_types = PROPOSAL::CrossSectionVector::GetInteractionTypes(cross); + auto [insert_it, success] = calculators.insert( + {std::make_pair(&comp, corsika_code), make_tuple(PROPOSAL::make_secondaries( + inter_types, PROPOSAL::TauMinusDef(), media.at(&comp)), + PROPOSAL::make_interaction(cross, true), + PROPOSAL::make_displacement(cross, true))}); + return insert_it; + } + if (corsika_code == particles::Code::TauPlus) { + std::cout << "Build TauPlus tables" << std::endl; + auto cross = + GetStdCrossSections(PROPOSAL::TauPlusDef(), media.at(&comp), cut, true); + auto inter_types = PROPOSAL::CrossSectionVector::GetInteractionTypes(cross); + auto [insert_it, success] = calculators.insert( + {std::make_pair(&comp, corsika_code), make_tuple(PROPOSAL::make_secondaries( + inter_types, PROPOSAL::TauPlusDef(), media.at(&comp)), + PROPOSAL::make_interaction(cross, true), + PROPOSAL::make_displacement(cross, true))}); + return insert_it; + } + throw std::runtime_error("PROPOSAL could not find corresponding builder"); } // namespace corsika::process::proposal enum { SECONDARIES, INTERACTION, DISPLACEMENT };