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