Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.
  • Wiki Markup
    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 p\[0-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:
    Image Modified
    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

Performance