You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 2
Next »
- Energy Dispersion approximations
- Current (ST-09-25-02 and earlier) latResponse::Edisp2 does not interpolate the energy dispersion parameters from the IRF tables. This is because the parameters do not vary smoothly from bin to bin in log10(E)-cos(theta) space.
- It does apply a scale factor to the fractional energy difference, (Emeas - E)/E, that is a continuous function of log10(E) and cos(theta):
scaleFactor = p0*log10(E)**2 + p1*cos(theta)**2 + p2*log10(E) + p3*cos(theta) + p4*log10(E)*cos(theta) + p5
The p0-5 are determined empirically (and hardcoded since P6 at least!) to make the 68% containment "radius" in energy space be approximately 1, independent of energy.
- This forces the standard implementation to renormalize the Edisp2 function for every function call that requests a log10(E)-cos(theta) pair that differs from the previous function call. This is computationally costly, but did not matter much for just making performance plots (but presumably would impact running gtrspgen.)
- The calls to Edisp2 are contained within the DRM generation, and that step can take a substantial amount of time, so to speed that up the scaleFactor(log10(E), cos(theta)) function is only evaluated at the grid points, the normalization parameters in the Edisp tables are adjusted, and when function calls to Edisp2 are made, the nearest log10(E)-cos(theta) grid points are used, just as for the Edisp parameters themselves.
- Here is the impact on one of the standard performance plots:
black=Front, red=Back, both with scaleFactor as a continuous function of log10(E), cos(theta); green=Front, red=Back, both with scaleFactor evaluated at the nearest log10(E)-cos(theta) grid point.
- Detector Response Matrix (DRM) implementation
- Convolution approximations