aboutsummaryrefslogtreecommitdiff
path: root/src/pdg.c
blob: 780fbc8767bc6dbdc7c58e4d9e1bef4a944343ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "pdg.h"
#include "math.h"

double get_scattering_rms(double x, double p, double beta, double z, double rho)
{
    /* Returns the RMS width of the scattering angle for a particle deflected
     * by many small-angle scatters after a distance `x`. `p` is the momentum
     * of the particle in MeV, `beta` is the speed of the particle in units of
     * the speed of light, `z` is the charge of the particle in units of the
     * electron charge, and `rho` is the density of the water in units of
     * g/cm^3.
     *
     * `x` should be in cm.
     *
     * Note: I'm not sure if this will work for particles other than electrons
     * since the radiation length is only discussed in terms of an
     * electromagnetic shower induced by electrons (see Section 33.4.2).
     *
     * Update: MicroBooNE uses this formula for muons in this paper:
     * https://arxiv.org/abs/1703.06187.
     *
     * See Equation 33.15 in
     * http://pdg.lbl.gov/2018/reviews/rpp2018-rev-passage-particles-matter.pdf. */
    if (x == 0.0) return 0.0;
    return (13.6/(beta*p))*z*sqrt(x*rho/RADIATION_LENGTH)*(1+0.038*log((x*z*z)/(RADIATION_LENGTH*beta*beta/rho)));
}