Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /acts/Fatras/include/ActsFatras/Physics/StandardInteractions.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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/Kernel/PointLikeProcess.hpp"
0015 #include "ActsFatras/Physics/ElectroMagnetic/BetheBloch.hpp"
0016 #include "ActsFatras/Physics/ElectroMagnetic/BetheHeitler.hpp"
0017 #include "ActsFatras/Physics/ElectroMagnetic/PhotonConversion.hpp"
0018 #include "ActsFatras/Physics/ElectroMagnetic/Scattering.hpp"
0019 #include "ActsFatras/Selectors/KinematicCasts.hpp"
0020 #include "ActsFatras/Selectors/ParticleSelectors.hpp"
0021 #include "ActsFatras/Selectors/SelectorHelpers.hpp"
0022 
0023 namespace ActsFatras {
0024 namespace Casts {
0025 struct P;
0026 }  // namespace Casts
0027 
0028 namespace detail {
0029 
0030 /// Select electrons and positrons only.
0031 using SelectElectronLike = AbsPdgSelector<Acts::PdgParticle::eElectron>;
0032 /// Select photons only.
0033 using SelectPhotonLike = AbsPdgSelector<Acts::PdgParticle::eGamma>;
0034 /// Select particles above a minimum absolute momentum.
0035 using SelectPMin = Min<Casts::P>;
0036 
0037 /// Highland multiple scattering that applies to all charged particles.
0038 using StandardScattering =
0039     ContinuousProcess<HighlandScattering, ChargedSelector, EveryParticle,
0040                       EveryParticle>;
0041 /// Ionisation/excitation energy loss with a lower p cut on output particles.
0042 ///
0043 /// Bethe-Bloch generates no particles and the child selector has no effect.
0044 using StandardBetheBloch =
0045     ContinuousProcess<BetheBloch, ChargedSelector, SelectPMin, EveryParticle>;
0046 /// Electron Bremsstrahlung energy loss with a lower p cut on output particles.
0047 ///
0048 /// Only applies to electrons and positrons.
0049 using StandardBetheHeitler =
0050     ContinuousProcess<BetheHeitler, SelectElectronLike, SelectPMin, SelectPMin>;
0051 
0052 /// Handle photon conversions with a pair of an electron and a positron emitted.
0053 using StandardPhotonConversion =
0054     PointLikeProcess<PhotonConversion, SelectPhotonLike, SelectPMin,
0055                      SelectPMin>;
0056 }  // namespace detail
0057 
0058 /// Standard set of electro-magnetic interactions for charged particles.
0059 ///
0060 /// Scattering must come first so it is computed with the unmodified initial
0061 /// energy before energy loss is applied.
0062 ///
0063 /// @warning The list has no cuts on input particle charge or kinematics, i.e.
0064 ///          it relies on the simulator to preselect relevant charged particles
0065 ///          before application.
0066 /// @todo Bethe-Bloch does not describe electrons; add correct ionisation loss
0067 ///       descriptions for electrons.
0068 /// @todo Bethe-Heitler is applied after energy loss and thus sees the wrong
0069 ///       input energy.
0070 using StandardChargedElectroMagneticInteractions =
0071     InteractionList<detail::StandardScattering, detail::StandardBetheBloch,
0072                     detail::StandardBetheHeitler>;
0073 
0074 /// Construct the standard electro-magnetic interactions for charged particles.
0075 ///
0076 /// @param minimumAbsMomentum lower p cut on output particles
0077 StandardChargedElectroMagneticInteractions
0078 makeStandardChargedElectroMagneticInteractions(double minimumAbsMomentum);
0079 
0080 /// Standard set of electro-magnetic interactions for neutral particles.
0081 using StandardNeutralElectroMagneticInteractions =
0082     InteractionList<detail::StandardPhotonConversion>;
0083 
0084 /// Construct the standard electro-magnetic interactions for neutral particles.
0085 ///
0086 /// @warning The list has no cuts on input particle charge or kinematics, i.e.
0087 ///          it relies on the simulator to preselect relevant charged particles
0088 ///          before application.
0089 ///
0090 /// @param minimumAbsMomentum lower p cut on output particles
0091 StandardNeutralElectroMagneticInteractions
0092 makeStandardNeutralElectroMagneticInteractions(double minimumAbsMomentum);
0093 
0094 }  // namespace ActsFatras