Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:10:54

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