|
|
|||
File indexing completed on 2026-05-16 07:36:43
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 /// @return Configured interaction list for charged particles 0078 StandardChargedElectroMagneticInteractions 0079 makeStandardChargedElectroMagneticInteractions(double minimumAbsMomentum); 0080 0081 /// Standard set of electro-magnetic interactions for neutral particles. 0082 using StandardNeutralElectroMagneticInteractions = 0083 InteractionList<detail::StandardPhotonConversion>; 0084 0085 /// Construct the standard electro-magnetic interactions for neutral particles. 0086 /// 0087 /// @warning The list has no cuts on input particle charge or kinematics, i.e. 0088 /// it relies on the simulator to preselect relevant charged particles 0089 /// before application. 0090 /// 0091 /// @param minimumAbsMomentum lower p cut on output particles 0092 /// @return Configured interaction list for neutral particles 0093 StandardNeutralElectroMagneticInteractions 0094 makeStandardNeutralElectroMagneticInteractions(double minimumAbsMomentum); 0095 0096 } // namespace ActsFatras
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|