aboutsummaryrefslogtreecommitdiff
path: root/src/pdg.c
blob: 17a364748eaed96f22baa80b9100964accf9e516 (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* Copyright (c) 2019, Anthony Latorre <tlatorre at uchicago>
 *
 * This program is free software: you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the Free
 * Software Foundation, either version 3 of the License, or (at your option)
 * any later version.

 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.

 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <https://www.gnu.org/licenses/>.
 */

#include "pdg.h"
#include "math.h"
#include "sno.h"

double get_scattering_rms(double x, double p, double beta, double z)
{
    /* 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*WATER_DENSITY/RADIATION_LENGTH)*(1+0.038*log((x*z*z)/(RADIATION_LENGTH*beta*beta/WATER_DENSITY)));
}