|
|
|||
File indexing completed on 2026-10-05 08:09:40
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 "Acts/Material/MaterialSlab.hpp" 0013 0014 namespace Acts { 0015 0016 /// Compute the mean energy loss due to ionisation and excitation. 0017 /// 0018 /// @param slab The traversed material and its properties 0019 /// @param m Particle mass 0020 /// @param qOverP Particle charge divided by absolute momentum 0021 /// @param absQ Absolute particle charge 0022 /// 0023 /// This computes the mean ionisation energy loss @f$-dE(x)@f$ of a particle 0024 /// traversing the material slab, 0025 /// 0026 /// @f[ 0027 /// -dE(x) = -\frac{dE}{dx}\, x, 0028 /// @f] 0029 /// 0030 /// where @f$-dE/dx@f$ is given by the Bethe formula 0031 /// @cite ParticleDataGroup:2018ovx (eq. 33.5), including the density-effect 0032 /// correction. The result is the magnitude of the loss (always @f$\geq 0@f$); 0033 /// The formula is valid for intermediate energies, 0034 /// roughly @f$0.1 \lesssim \beta\gamma \lesssim 1000@f$. 0035 /// 0036 /// @return Mean ionisation energy loss through the slab in native energy units 0037 /// @see @ref computeEnergyLossLandau for the most probable value, 0038 /// @ref computeEnergyLossRadiative for radiative losses, and 0039 /// @ref computeEnergyLossMean for the sum of both 0040 float computeEnergyLossBethe(const MaterialSlab& slab, float m, float qOverP, 0041 float absQ); 0042 /// Derivative of the Bethe energy loss with respect to q/p. 0043 /// 0044 /// @copydoc computeEnergyLossBethe 0045 /// @return Derivative of the mean ionisation energy loss with respect to q/p 0046 float deriveEnergyLossBetheQOverP(const MaterialSlab& slab, float m, 0047 float qOverP, float absQ); 0048 0049 /// Compute the most probable energy loss due to ionisation and excitation. 0050 /// 0051 /// @param slab The traversed material and its properties 0052 /// @param m Particle mass 0053 /// @param qOverP Particle charge divided by absolute momentum 0054 /// @param absQ Absolute particle charge 0055 /// 0056 /// This computes the most probable ionisation energy loss @f$-dE(x)@f$ through 0057 /// the material slab, i.e. the mode of the Landau-Vavilov-Bichsel distribution 0058 /// @cite ParticleDataGroup:2018ovx (eq. 33.12), including the density-effect 0059 /// correction. Unlike @ref computeEnergyLossBethe (which returns the mean), this is 0060 /// the most probable value, which for thin slabs is noticeably smaller than the 0061 /// mean because of the long tail of the distribution. The formula is valid for 0062 /// intermediate energies, roughly @f$0.1 \lesssim \beta\gamma \lesssim 1000@f$. 0063 /// 0064 /// @return Most probable ionisation energy loss through the slab in native 0065 /// energy units 0066 float computeEnergyLossLandau(const MaterialSlab& slab, float m, float qOverP, 0067 float absQ); 0068 /// Derivative of the most probable ionisation energy loss with respect to q/p. 0069 /// 0070 /// @copydoc computeEnergyLossLandau 0071 /// @return Derivative of the most probable ionisation energy loss with respect 0072 /// to q/p 0073 float deriveEnergyLossLandauQOverP(const MaterialSlab& slab, float m, 0074 float qOverP, float absQ); 0075 0076 /// Compute the Gaussian-equivalent sigma for the ionisation loss fluctuations. 0077 /// 0078 /// @see @ref computeEnergyLossBethe for parameters description 0079 /// 0080 /// This is the sigma parameter of a Gaussian distribution with the same 0081 /// full-width-half-maximum as the Landau-Vavilov-Bichsel distribution. The 0082 /// computations are valid for intermediate particle energies. 0083 /// @param slab The traversed material and its properties 0084 /// @param m Particle mass 0085 /// @param qOverP Particle charge divided by absolute momentum 0086 /// @param absQ Absolute particle charge 0087 /// @return Gaussian-equivalent sigma for energy loss fluctuations 0088 float computeEnergyLossLandauSigma(const MaterialSlab& slab, float m, 0089 float qOverP, float absQ); 0090 0091 /// Compute the full with half maximum of landau energy loss distribution 0092 /// 0093 /// @param slab The traversed material and its properties 0094 /// @param m Particle mass 0095 /// @param qOverP Particle charge divided by absolute momentum 0096 /// @param absQ Absolute particle charge 0097 /// @return Full width half maximum of the Landau distribution 0098 float computeEnergyLossLandauFwhm(const MaterialSlab& slab, float m, 0099 float qOverP, float absQ); 0100 0101 /// Compute the Gaussian-equivalent sigma of q/p due to ionisation fluctuations. 0102 /// 0103 /// @param slab The traversed material and its properties 0104 /// @param m Particle mass 0105 /// @param qOverP Particle charge divided by absolute momentum 0106 /// @param absQ Absolute particle charge 0107 /// 0108 /// This propagates the energy-loss straggling (the Gaussian-equivalent sigma 0109 /// @f$\sigma_E@f$ from @ref computeEnergyLossLandauSigma) into a standard deviation 0110 /// on @f$q/p@f$ using the Jacobian @f$d(q/p)/dE@f$, 0111 /// 0112 /// @f[ 0113 /// \sigma_{q/p} = \left|\frac{d(q/p)}{dE}\right|\, \sigma_E . 0114 /// @f] 0115 /// 0116 /// This is the quantity used as the @f$q/p@f$ process noise in the Kalman 0117 /// fitters. 0118 /// 0119 /// @return Gaussian-equivalent standard deviation of q/p 0120 float computeEnergyLossLandauSigmaQOverP(const MaterialSlab& slab, float m, 0121 float qOverP, float absQ); 0122 0123 /// Compute the mean energy loss due to radiative effects at high energies. 0124 /// 0125 /// @param slab The traversed material and its properties 0126 /// @param absPdg Absolute particle type PDG identifier 0127 /// @param m Particle mass 0128 /// @param qOverP Particle charge divided by absolute momentum 0129 /// @param absQ Absolute particle charge 0130 /// 0131 /// This computes the mean radiative energy loss @f$-dE(x)@f$ using the 0132 /// approximation of @cite Lund:2008ad. Bremsstrahlung, scaling with 0133 /// @f$(m_e/m)^2@f$, is always included; direct @f$e^+e^-@f$ pair production and 0134 /// photo-nuclear interactions are added only for muons above @f$8\,\mathrm{GeV}@f$. 0135 /// Like @ref computeEnergyLossBethe the result is the magnitude of the loss (always 0136 /// @f$\geq 0@f$). 0137 /// 0138 /// @return Mean radiative energy loss through the slab in native energy units 0139 float computeEnergyLossRadiative(const MaterialSlab& slab, PdgParticle absPdg, 0140 float m, float qOverP, float absQ); 0141 /// Derivative of the mean radiative energy loss with respect to q/p. 0142 /// 0143 /// @copydoc computeEnergyLossRadiative 0144 /// @return Derivative of radiative energy loss with respect to q/p 0145 float deriveEnergyLossRadiativeQOverP(const MaterialSlab& slab, 0146 PdgParticle absPdg, float m, float qOverP, 0147 float absQ); 0148 0149 /// Compute the combined mean energy loss. 0150 /// 0151 /// @param slab The traversed material and its properties 0152 /// @param absPdg Absolute particle type PDG identifier 0153 /// @param m Particle mass 0154 /// @param qOverP Particle charge divided by absolute momentum 0155 /// @param absQ Absolute particle charge 0156 /// 0157 /// This computes the combined mean energy loss -dE(x) including ionisation and 0158 /// radiative effects. The computations are valid over a wide range of particle 0159 /// energies. 0160 /// @return Combined mean energy loss through the material slab 0161 float computeEnergyLossMean(const MaterialSlab& slab, PdgParticle absPdg, 0162 float m, float qOverP, float absQ); 0163 /// Derivative of the combined mean energy loss with respect to q/p. 0164 /// 0165 /// @copydoc computeEnergyLossMean 0166 /// @return Derivative of combined mean energy loss with respect to q/p 0167 float deriveEnergyLossMeanQOverP(const MaterialSlab& slab, PdgParticle absPdg, 0168 float m, float qOverP, float absQ); 0169 0170 /// Compute the combined most probably energy loss. 0171 /// 0172 /// @copydoc computeEnergyLossMean 0173 /// @return Combined most probable energy loss through the material slab 0174 float computeEnergyLossMode(const MaterialSlab& slab, PdgParticle absPdg, 0175 float m, float qOverP, float absQ); 0176 /// Derivative of the combined most probable energy loss with respect to q/p. 0177 /// 0178 /// @copydoc computeEnergyLossMean 0179 /// @return Derivative of combined most probable energy loss with respect to q/p 0180 float deriveEnergyLossModeQOverP(const MaterialSlab& slab, PdgParticle absPdg, 0181 float m, float qOverP, float absQ); 0182 0183 /// Compute the core width of the projected planar scattering distribution. 0184 /// 0185 /// @param slab The traversed material and its properties 0186 /// @param absPdg Absolute particle type PDG identifier 0187 /// @param m Particle mass 0188 /// @param qOverP Particle charge divided by absolute momentum 0189 /// @param absQ Absolute particle charge 0190 /// 0191 /// The returned @f$\theta_0@f$ is the standard deviation of the central 0192 /// (Gaussian) part of the multiple-Coulomb-scattering angle, projected onto a 0193 /// plane. For all particles except electrons and positrons it is evaluated with 0194 /// the Highland formula @cite Highland:1975pq in the parametrisation of 0195 /// @cite ParticleDataGroup:2018ovx (eq. 33.15); for electrons and positrons the 0196 /// Rossi-Greisen form is used instead. 0197 /// 0198 /// @note This is the projected (single-plane) width; the width of the polar 0199 /// space angle is larger by a factor @f$\sqrt{2}@f$. 0200 /// @return Projected scattering angle standard deviation @f$\theta_0@f$ in radians 0201 /// @see @ref approximateHighlandScattering for a charge- and momentum-independent 0202 /// approximation 0203 float computeMultipleScatteringTheta0(const MaterialSlab& slab, 0204 PdgParticle absPdg, float m, float qOverP, 0205 float absQ); 0206 0207 /// Approximate the core width of the projected planar scattering distribution 0208 /// with Highland's formula. 0209 /// 0210 /// In contrast to @ref computeMultipleScatteringTheta0, this ignores the particle 0211 /// charge and velocity (assuming a singly-charged, ultra-relativistic particle 0212 /// with @f$q^2/\beta^2 = 1@f$) and does not divide by the momentum. It therefore 0213 /// returns @f$\theta_0 \cdot p@f$ rather than @f$\theta_0@f$ itself, which is 0214 /// convenient when the momentum is not yet known. 0215 /// 0216 /// @param xOverX0 The thickness of the material in radiation lengths 0217 /// @return The projected scattering angle scaled by momentum, 0218 /// @f$\theta_0 \cdot p@f$, in native units (radians times momentum) 0219 float approximateHighlandScattering(float xOverX0); 0220 0221 } // namespace Acts
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|