/* Copyright (c) 2019, Anthony Latorre * * 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 . */ #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))); }