From a19727e552bdba306fc0b0bc1be8d81f81ecc62f Mon Sep 17 00:00:00 2001 From: Jürgen Knödlseder Date: Sat, 17 Oct 2020 14:55:36 +0200 Subject: [PATCH] Fix instrument response for LAT (#3203) --- inst/lat/include/GLATResponse.hpp | 8 ++++++++ inst/lat/src/GLATResponse.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/inst/lat/include/GLATResponse.hpp b/inst/lat/include/GLATResponse.hpp index 37ff636..ec0630c 100644 --- a/inst/lat/include/GLATResponse.hpp +++ b/inst/lat/include/GLATResponse.hpp @@ -110,6 +110,14 @@ private: void copy_members(const GLATResponse& rsp); void free_members(void); + // Overloaded virtual base class methods + virtual double irf_ptsrc(const GEvent& event, + const GSource& source, + const GObservation& obs) const; + virtual double irf_diffuse(const GEvent& event, + const GSource& source, + const GObservation& obs) const; + // Private members std::string m_rspname; //!< Name of the instrument response bool m_force_mean; //!< Use mean PSF in any case diff --git a/inst/lat/src/GLATResponse.cpp b/inst/lat/src/GLATResponse.cpp index 7317223..81cd76b 100644 --- a/inst/lat/src/GLATResponse.cpp +++ b/inst/lat/src/GLATResponse.cpp @@ -830,7 +830,7 @@ void GLATResponse::copy_members(const GLATResponse& rsp) for (int i = 0; i < rsp.m_aeff.size(); ++i) { m_aeff.push_back(rsp.m_aeff[i]->clone()); } - + // Clone Psf response components m_psf.clear(); for (int i = 0; i < rsp.m_psf.size(); ++i) { @@ -890,3 +890,63 @@ void GLATResponse::free_members(void) // Return return; } + + +/***********************************************************************//** + * @brief Return instrument response to point source + * + * @param[in] event Observed event. + * @param[in] source Source. + * @param[in] obs Observation. + * @return Instrument response to point source. + * + * Returns the instrument response to a point source. + ***************************************************************************/ +double GLATResponse::irf_ptsrc(const GEvent& event, + const GSource& source, + const GObservation& obs) const +{ + // Initialise IRF value + double irf = 0.0; + + // Get IRF value + if (event.is_atom()) { + irf = irf_spatial_atom(static_cast(event), source, obs); + } + else { + irf = irf_spatial_bin(static_cast(event), source, obs); + } + + // Return IRF value + return irf; +} + + +/***********************************************************************//** + * @brief Return instrument response to diffuse source + * + * @param[in] event Observed event. + * @param[in] source Source. + * @param[in] obs Observation. + * @return Instrument response to point source. + * + * Returns the instrument response to a diffuse source. + ***************************************************************************/ +double GLATResponse::irf_diffuse(const GEvent& event, + const GSource& source, + const GObservation& obs) const +{ + // Initialise IRF value + double irf = 0.0; + + // Get IRF value + if (event.is_atom()) { + irf = irf_spatial_atom(static_cast(event), source, obs); + } + else { + irf = irf_spatial_bin(static_cast(event), source, obs); + } + + // Return IRF value + return irf; +} -- libgit2 0.21.4