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)));
}
|