Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-07-05 08:11:05

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 energy loss -dE(x) through a material with
0024 /// the given properties, i.e. it computes
0025 ///
0026 ///     -dE(x) = -dE/dx * x
0027 ///
0028 /// where -dE/dx is given by the Bethe formula. The computations are valid
0029 /// for intermediate particle energies.
0030 float computeEnergyLossBethe(const MaterialSlab& slab, float m, float qOverP,
0031                              float absQ);
0032 /// Derivative of the Bethe energy loss with respect to q/p.
0033 ///
0034 /// @copydoc computeEnergyLossBethe
0035 float deriveEnergyLossBetheQOverP(const MaterialSlab& slab, float m,
0036                                   float qOverP, float absQ);
0037 
0038 /// Compute the most propable energy loss due to ionisation and excitation.
0039 ///
0040 /// @copydoc computeEnergyLossBethe
0041 ///
0042 /// This computes the most probable energy loss -dE(x) through a material of
0043 /// the given properties and thickness as described by the mode of the
0044 /// Landau-Vavilov-Bichsel distribution. The computations are valid
0045 /// for intermediate particle energies.
0046 float computeEnergyLossLandau(const MaterialSlab& slab, float m, float qOverP,
0047                               float absQ);
0048 /// Derivative of the most probable ionisation energy loss with respect to q/p.
0049 ///
0050 /// @copydoc computeEnergyLossBethe
0051 float deriveEnergyLossLandauQOverP(const MaterialSlab& slab, float m,
0052                                    float qOverP, float absQ);
0053 
0054 /// Compute the Gaussian-equivalent sigma for the ionisation loss fluctuations.
0055 ///
0056 /// @see computeEnergyLossBethe for parameters description
0057 ///
0058 /// This is the sigma parameter of a Gaussian distribution with the same
0059 /// full-width-half-maximum as the Landau-Vavilov-Bichsel distribution. The
0060 /// computations are valid for intermediate particle energies.
0061 float computeEnergyLossLandauSigma(const MaterialSlab& slab, float m,
0062                                    float qOverP, float absQ);
0063 
0064 /// Compute the full with half maximum of landau energy loss distribution
0065 ///
0066 /// @see computeEnergyLossBethe for parameters description
0067 float computeEnergyLossLandauFwhm(const MaterialSlab& slab, float m,
0068                                   float qOverP, float absQ);
0069 
0070 /// Compute q/p Gaussian-equivalent sigma due to ionisation loss fluctuations.
0071 ///
0072 /// @copydoc computeEnergyLossBethe
0073 float computeEnergyLossLandauSigmaQOverP(const MaterialSlab& slab, float m,
0074                                          float qOverP, float absQ);
0075 
0076 /// Compute the mean energy loss due to radiative effects at high energies.
0077 ///
0078 /// @param slab      The traversed material and its properties
0079 /// @param absPdg    Absolute particle type PDG identifier
0080 /// @param m         Particle mass
0081 /// @param qOverP    Particle charge divided by absolute momentum
0082 /// @param absQ      Absolute particle charge
0083 ///
0084 /// This computes the mean energy loss -dE(x) using an approximative formula.
0085 /// Bremsstrahlung is always included; direct e+e- pair production and
0086 /// photo-nuclear interactions only for muons.
0087 float computeEnergyLossRadiative(const MaterialSlab& slab, PdgParticle absPdg,
0088                                  float m, float qOverP, float absQ);
0089 /// Derivative of the mean radiative energy loss with respect to q/p.
0090 ///
0091 /// @copydoc computeEnergyLossRadiative
0092 float deriveEnergyLossRadiativeQOverP(const MaterialSlab& slab,
0093                                       PdgParticle absPdg, float m, float qOverP,
0094                                       float absQ);
0095 
0096 /// Compute the combined mean energy loss.
0097 ///
0098 /// @param slab      The traversed material and its properties
0099 /// @param absPdg    Absolute particle type PDG identifier
0100 /// @param m         Particle mass
0101 /// @param qOverP    Particle charge divided by absolute momentum
0102 /// @param absQ      Absolute particle charge
0103 ///
0104 /// This computes the combined mean energy loss -dE(x) including ionisation and
0105 /// radiative effects. The computations are valid over a wide range of particle
0106 /// energies.
0107 float computeEnergyLossMean(const MaterialSlab& slab, PdgParticle absPdg,
0108                             float m, float qOverP, float absQ);
0109 /// Derivative of the combined mean energy loss with respect to q/p.
0110 ///
0111 /// @copydoc computeEnergyLossMean
0112 float deriveEnergyLossMeanQOverP(const MaterialSlab& slab, PdgParticle absPdg,
0113                                  float m, float qOverP, float absQ);
0114 
0115 /// Compute the combined most probably energy loss.
0116 ///
0117 /// @copydoc computeEnergyLossMean
0118 float computeEnergyLossMode(const MaterialSlab& slab, PdgParticle absPdg,
0119                             float m, float qOverP, float absQ);
0120 /// Derivative of the combined most probable energy loss with respect to q/p.
0121 ///
0122 /// @copydoc computeEnergyLossMean
0123 float deriveEnergyLossModeQOverP(const MaterialSlab& slab, PdgParticle absPdg,
0124                                  float m, float qOverP, float absQ);
0125 
0126 /// Compute the core width of the projected planar scattering distribution.
0127 ///
0128 /// @param slab      The traversed material and its properties
0129 /// @param absPdg    Absolute particle type PDG identifier
0130 /// @param m         Particle mass
0131 /// @param qOverP    Particle charge divided by absolute momentum
0132 /// @param absQ      Absolute particle charge
0133 float computeMultipleScatteringTheta0(const MaterialSlab& slab,
0134                                       PdgParticle absPdg, float m, float qOverP,
0135                                       float absQ);
0136 
0137 /// Approximate the core width of the projected planar scattering distribution
0138 /// with highland's formula.
0139 ///
0140 /// @param xOverX0  The thickness of the material in radiation lengths
0141 /// @return         The approximate scattering angle times momentum in radians*GeV
0142 float approximateHighlandScattering(float xOverX0);
0143 
0144 }  // namespace Acts