Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:12:13

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 #include "Acts/Definitions/PdgParticle.hpp"
0012 #include "ActsFatras/Kernel/ContinuousProcess.hpp"
0013 #include "ActsFatras/Kernel/InteractionList.hpp"
0014 #include "ActsFatras/Physics/ElectroMagnetic/BetheBloch.hpp"
0015 #include "ActsFatras/Physics/ElectroMagnetic/BetheHeitler.hpp"
0016 #include "ActsFatras/Physics/ElectroMagnetic/Scattering.hpp"
0017 #include "ActsFatras/Selectors/KinematicCasts.hpp"
0018 #include "ActsFatras/Selectors/ParticleSelectors.hpp"
0019 #include "ActsFatras/Selectors/SelectorHelpers.hpp"
0020 
0021 namespace ActsFatras {
0022 namespace Casts {
0023 struct P;
0024 }  // namespace Casts
0025 
0026 namespace detail {
0027 
0028 /// Select electrons and positrons only.
0029 using SelectElectronLike = AbsPdgSelector<Acts::PdgParticle::eElectron>;
0030 /// Select particles above a minimum absolute momentum.
0031 using SelectPMin = Min<Casts::P>;
0032 
0033 /// Highland multiple scattering that applies to all charged particles.
0034 using StandardScattering =
0035     ContinuousProcess<HighlandScattering, ChargedSelector, EveryParticle,
0036                       EveryParticle>;
0037 /// Ionisation/excitation energy loss with a lower p cut on output particles.
0038 ///
0039 /// Bethe-Bloch generates no particles and the child selector has no effect.
0040 using StandardBetheBloch =
0041     ContinuousProcess<BetheBloch, ChargedSelector, SelectPMin, EveryParticle>;
0042 /// Electron Bremsstrahlung energy loss with a lower p cut on output particles.
0043 ///
0044 /// Only applies to electrons and positrons.
0045 using StandardBetheHeitler =
0046     ContinuousProcess<BetheHeitler, SelectElectronLike, SelectPMin, SelectPMin>;
0047 
0048 }  // namespace detail
0049 
0050 /// Standard set of electro-magnetic interactions for charged particles.
0051 ///
0052 /// Scattering must come first so it is computed with the unmodified initial
0053 /// energy before energy loss is applied.
0054 ///
0055 /// @warning The list has no cuts on input particle charge or kinematics, i.e.
0056 ///          it relies on the simulator to preselect relevant charged particles
0057 ///          before application.
0058 /// @todo Bethe-Bloch does not describe electrons; add correct ionisation loss
0059 ///       descriptions for electrons.
0060 /// @todo Bethe-Heitler is applied after energy loss and thus sees the wrong
0061 ///       input energy.
0062 using StandardChargedElectroMagneticInteractions =
0063     InteractionList<detail::StandardScattering, detail::StandardBetheBloch,
0064                     detail::StandardBetheHeitler>;
0065 
0066 /// Construct the standard electro-magnetic interactions for charged particles.
0067 ///
0068 /// @param minimumAbsMomentum lower p cut on output particles
0069 StandardChargedElectroMagneticInteractions
0070 makeStandardChargedElectroMagneticInteractions(double minimumAbsMomentum);
0071 
0072 }  // namespace ActsFatras