102 double omega_min = -domega;
103 double omega_max = +domega;
111 if (
max > omega_min &&
min < omega_max) {
112 double interval_min =
min;
113 double interval_max =
max;
114 if (interval_min < omega_min) {
115 interval_min = omega_min;
117 if (interval_max > omega_max) {
118 interval_max = omega_max;
120 intervals.push_back(std::make_pair(interval_min,interval_max));
126 if (
max > omega_min_plus &&
min < omega_max_plus) {
127 double interval_min =
min;
128 double interval_max =
max;
129 if (interval_min < omega_min_plus) {
130 interval_min = omega_min_plus;
132 if (interval_max > omega_max_plus) {
133 interval_max = omega_max_plus;
135 intervals.push_back(std::make_pair(interval_min,interval_max));
141 if (
max > omega_min_minus &&
min < omega_max_minus) {
142 double interval_min =
min;
143 double interval_max =
max;
144 if (interval_min < omega_min_minus) {
145 interval_min = omega_min_minus;
147 if (interval_max > omega_max_minus) {
148 interval_max = omega_max_minus;
150 intervals.push_back(std::make_pair(interval_min,interval_max));
157 intervals.push_back(std::make_pair(
min,
max));
189 map = &(pmap->
map());
195 map = &(pcube->
cube());
200 if (pconst != NULL) {
211 double dx = std::abs(wcs->
cdelt(0));
212 double dy = std::abs(wcs->
cdelt(1));
265 phi * std::sin(delta);
268 #if defined(G_NAN_CHECK)
270 std::cout <<
"*** ERROR: cta_npsf_kern_rad_azsym::eval";
271 std::cout <<
" NaN/Inf encountered";
272 std::cout <<
" (value=" << value;
273 std::cout <<
", delta=" << delta;
274 std::cout <<
", phi=" << phi <<
")";
275 std::cout << std::endl;
304 double nroi = nroi_spatial * nroi_spectral * nroi_temporal;
354 double omega_min = -domega;
355 double omega_max = +domega;
360 if (rho_kludge < 0.0) {
368 #if defined(G_DEBUG_MODEL_ZERO)
370 std::cout <<
"*** WARNING: cta_irf_radial_kern_rho::eval";
371 std::cout <<
" zero model for (rho)=(";
374 std::cout <<
" radians" << std::endl;
383 double cos_rho = std::cos(rho);
384 double sin_rho = std::sin(rho);
412 #if defined(G_NAN_CHECK)
414 std::cout <<
"*** ERROR: cta_irf_radial_kern_rho";
415 std::cout <<
"(rho=" << rho <<
"):";
416 std::cout <<
" NaN/Inf encountered";
417 std::cout <<
" (irf=" << irf;
418 std::cout <<
", domega=" << domega;
419 std::cout <<
", model=" << model;
420 std::cout <<
", sin_rho=" << sin_rho <<
")";
421 std::cout << std::endl;
486 double azimuth = 0.0;
498 #if defined(G_NAN_CHECK)
500 std::cout <<
"*** ERROR: cta_irf_radial_kern_omega::eval";
501 std::cout <<
"(omega=" << omega <<
"):";
502 std::cout <<
" NaN/Inf encountered";
503 std::cout <<
" (irf=" << irf;
504 std::cout <<
", delta=" << delta;
505 std::cout <<
", offset=" << offset;
506 std::cout <<
", azimuth=" << azimuth <<
")";
507 std::cout << std::endl;
555 double omega_min =
m_omega0 - domega;
556 double omega_max =
m_omega0 + domega;
561 if (rho_kludge < 0.0) {
569 #if defined(G_DEBUG_MODEL_ZERO)
571 std::cout <<
"*** WARNING: cta_nroi_radial_kern_rho::eval";
572 std::cout <<
" zero model for (rho)=(";
575 std::cout <<
" radians" << std::endl;
583 double sin_rho = std::sin(rho);
584 double cos_rho = std::cos(rho);
604 #if defined(G_NAN_CHECK)
606 std::cout <<
"*** ERROR: cta_nroi_radial_kern_rho::eval";
607 std::cout <<
"(rho=" << rho <<
"):";
608 std::cout <<
" NaN/Inf encountered";
609 std::cout <<
" (nroi=" << nroi;
610 std::cout <<
", model=" << model;
611 std::cout <<
", omega=[" << omega_min <<
"," << omega_max <<
"]";
612 std::cout <<
", sin_rho=" << sin_rho;
613 std::cout <<
")" << std::endl;
640 double cos_omega = std::cos(omega);
641 double sin_omega = std::sin(omega);
658 #if defined(G_NAN_CHECK)
660 std::cout <<
"*** ERROR: cta_nroi_radial_kern_omega::eval";
661 std::cout <<
"(omega=" << omega <<
"):";
662 std::cout <<
" NaN/Inf encountered";
663 std::cout <<
" (nroi=" << nroi;
664 std::cout <<
", cos_omega=" << cos_omega;
665 std::cout <<
", sin_omega=" << sin_omega;
666 std::cout <<
")" << std::endl;
732 double cos_rho = std::cos(rho);
733 double sin_rho = std::sin(rho);
743 if (rho_kludge < 0.0) {
773 double omega_min = -domega;
774 double omega_max = +domega;
791 double omega_width = std::acos(std::sqrt(arg1/arg2));
794 if (omega_width > 0.0) {
811 double omega1_min = omega_0 - omega_width;
812 double omega1_max = omega_0 + omega_width;
826 for (
int i = 0; i < intervals1.size(); ++i) {
827 double min = intervals1[i].first;
828 double max = intervals1[i].second;
833 for (
int i = 0; i < intervals2.size(); ++i) {
834 double min = intervals2[i].first;
835 double max = intervals2[i].second;
844 #if defined(G_NAN_CHECK)
846 std::cout <<
"*** ERROR: cta_irf_elliptical_kern_rho";
847 std::cout <<
"(rho=" << rho <<
"):";
848 std::cout <<
" NaN/Inf encountered";
849 std::cout <<
" (irf=" << irf;
850 std::cout <<
", domega=" << domega;
851 std::cout <<
", sin_rho=" << sin_rho <<
")";
852 std::cout << std::endl;
919 #if defined(G_DEBUG_MODEL_ZERO)
924 double cosinus = std::cos(diff_angle);
925 double sinus = std::sin(diff_angle);
926 double arg1 = m_semiminor_rad * cosinus;
927 double arg2 = m_semimajor_rad * sinus;
928 double r_ellipse = m_semiminor_rad * m_semimajor_rad /
929 std::sqrt(arg1*arg1 + arg2*arg2);
930 std::cout <<
"*** WARNING: cta_irf_elliptical_kern_omega::eval:";
931 std::cout <<
" zero model for (rho,omega)=(";
934 std::cout <<
" semiminor=" << m_semiminor_rad;
935 std::cout <<
" semimajor=" << m_semimajor_rad;
938 std::cout <<
" rho/r_ellipse=" << (
m_rho/r_ellipse);
939 std::cout << std::endl;
968 #if defined(G_NAN_CHECK)
970 std::cout <<
"*** ERROR: cta_irf_elliptical_kern_omega::eval";
971 std::cout <<
"(omega=" << omega <<
"):";
972 std::cout <<
" NaN/Inf encountered";
973 std::cout <<
" (irf=" << irf;
974 std::cout <<
", model=" << model;
975 std::cout <<
", delta=" << delta;
976 std::cout <<
", theta=" << theta;
977 std::cout <<
", phi=" << phi <<
")";
978 std::cout << std::endl;
1038 double sin_rho = std::sin(rho);
1039 double cos_rho = std::cos(rho);
1045 if (rho_kludge < 0.0) {
1073 double omega_min = -domega;
1074 double omega_max = +domega;
1092 double omega_width = std::acos(std::sqrt(arg1/arg2));
1095 if (omega_width > 0.0) {
1111 double omega1_min = omega_0 - omega_width;
1112 double omega1_max = omega_0 + omega_width;
1126 for (
int i = 0; i < intervals1.size(); ++i) {
1127 double min = intervals1[i].first;
1128 double max = intervals1[i].second;
1133 for (
int i = 0; i < intervals2.size(); ++i) {
1134 double min = intervals2[i].first;
1135 double max = intervals2[i].second;
1144 #if defined(G_NAN_CHECK)
1146 std::cout <<
"*** ERROR: cta_nroi_elliptical_kern_rho::eval";
1147 std::cout <<
"(rho=" << rho <<
"):";
1148 std::cout <<
" NaN/Inf encountered";
1149 std::cout <<
" (nroi=" << nroi;
1150 std::cout <<
", sin_rho=" << sin_rho;
1151 std::cout <<
", cos_rho=" << cos_rho;
1152 std::cout <<
")" << std::endl;
1198 #if defined(G_DEBUG_MODEL_ZERO)
1203 double cosinus = std::cos(diff_angle);
1204 double sinus = std::sin(diff_angle);
1205 double arg1 = m_semiminor_rad * cosinus;
1206 double arg2 = m_semimajor_rad * sinus;
1207 double r_ellipse = m_semiminor_rad * m_semimajor_rad /
1208 std::sqrt(arg1*arg1 + arg2*arg2);
1209 std::cout <<
"*** WARNING: cta_nroi_elliptical_kern_omega::eval";
1210 std::cout <<
" zero model for (rho,omega)=(";
1213 std::cout <<
" rho-r_ellipse=" << (
m_rho-r_ellipse) <<
" radians";
1214 std::cout << std::endl;
1222 double cos_omega = std::cos(omega_model);
1223 double sin_omega = std::sin(omega_model);
1240 #if defined(G_NAN_CHECK)
1242 std::cout <<
"*** ERROR: cta_nroi_elliptical_kern_omega::eval";
1243 std::cout <<
"(omega=" << omega <<
"):";
1244 std::cout <<
" NaN/Inf encountered";
1245 std::cout <<
" (nroi=" << nroi;
1246 std::cout <<
", model=" << model;
1247 std::cout <<
", cos_omega=" << cos_omega;
1248 std::cout <<
", sin_omega=" << sin_omega;
1249 std::cout <<
")" << std::endl;
1308 double sin_theta = std::sin(theta);
1309 double cos_theta = std::cos(theta);
1338 #if defined(G_DEBUG_INTEGRAL)
1339 if (!integral.isvalid()) {
1340 std::cout <<
"cta_irf_diffuse_kern_theta(theta=";
1342 std::cout << psf <<
":" << std::endl;
1343 std::cout << integral.
print() << std::endl;
1348 #if defined(G_NAN_CHECK)
1350 std::cout <<
"*** ERROR: cta_irf_diffuse_kern_theta";
1351 std::cout <<
"(theta=" << theta <<
"):";
1352 std::cout <<
" NaN/Inf encountered";
1353 std::cout <<
" (irf=" << irf;
1354 std::cout <<
", psf=" << psf;
1355 std::cout <<
", sin_theta=" << sin_theta;
1356 std::cout <<
", cos_theta=" << cos_theta;
1357 std::cout <<
", sin_ph=" << sin_ph;
1358 std::cout <<
", cos_ph=" << cos_ph;
1360 std::cout << std::endl;
1407 double sin_phi = std::sin(phi);
1408 double cos_phi = std::cos(phi);
1431 if (intensity > 0.0) {
1437 double azimuth = 0.0;
1450 #if defined(G_NAN_CHECK)
1452 std::cout <<
"*** ERROR: cta_irf_diffuse_kern_phi::eval";
1453 std::cout <<
"(phi=" << phi <<
"):";
1454 std::cout <<
" NaN/Inf encountered";
1455 std::cout <<
" (irf=" << irf;
1456 std::cout <<
", intensity=" << intensity;
1457 std::cout <<
", offset=" << offset;
1458 std::cout <<
", azimuth=" << azimuth;
1460 std::cout << std::endl;
1506 double sin_theta = std::sin(theta);
1524 #if defined(G_DEBUG_INTEGRAL)
1525 if (!integral.isvalid()) {
1526 std::cout <<
"cta_nroi_diffuse_kern_theta(theta=";
1528 std::cout << integral.
print() << std::endl;
1533 #if defined(G_NAN_CHECK)
1535 std::cout <<
"*** ERROR: cta_nroi_radial_kern_theta::eval";
1536 std::cout <<
"(theta=" << theta <<
"):";
1537 std::cout <<
" NaN/Inf encountered";
1538 std::cout <<
" (nroi=" << nroi;
1539 std::cout <<
", sin_theta=" << sin_theta;
1540 std::cout <<
")" << std::endl;
1572 double cos_phi = std::cos(phi);
1573 double sin_phi = std::sin(phi);
1590 if (intensity > 0.0) {
1596 #if defined(G_NAN_CHECK)
1598 std::cout <<
"*** ERROR: cta_nroi_diffuse_kern_phi::eval";
1599 std::cout <<
"(phi=" << phi <<
"):";
1600 std::cout <<
" NaN/Inf encountered";
1601 std::cout <<
" (nroi=" << nroi;
1602 std::cout <<
", intensity=" << intensity;
1603 std::cout <<
", cos_phi=" << cos_phi;
1604 std::cout <<
", sin_phi=" << sin_phi;
1605 std::cout <<
")" << std::endl;
1669 if (rho_kludge < 0.0) {
1677 #if defined(G_DEBUG_MODEL_ZERO)
1679 std::cout <<
"*** WARNING: cta_psf_radial_kern_rho::eval";
1680 std::cout <<
" zero model for (rho)=(";
1683 std::cout <<
" radians" << std::endl;
1691 double omega_min = -domega;
1692 double omega_max = +domega;
1695 double cos_rho = std::cos(rho);
1696 double sin_rho = std::sin(rho);
1718 #if defined(G_NAN_CHECK)
1720 std::cout <<
"*** ERROR: cta_psf_radial_kern_rho";
1721 std::cout <<
"(rho=" << rho <<
"):";
1722 std::cout <<
" NaN/Inf encountered";
1723 std::cout <<
" (irf=" << irf;
1724 std::cout <<
", domega=" << domega;
1725 std::cout <<
", model=" << model;
1726 std::cout <<
", sin_rho=" << sin_rho <<
")";
1727 std::cout << std::endl;
1780 #if defined(G_NAN_CHECK)
1782 std::cout <<
"*** ERROR: cta_psf_radial_kern_omega::eval";
1783 std::cout <<
"(omega=" << omega <<
"):";
1784 std::cout <<
" NaN/Inf encountered";
1785 std::cout <<
" (irf=" << irf;
1786 std::cout <<
", delta=" << delta;
1787 std::cout <<
", omega=" << omega <<
")";
1788 std::cout << std::endl;
1847 double phi_min = -dphi;
1848 double phi_max = +dphi;
1851 double sin_delta = std::sin(delta);
1852 double cos_delta = std::cos(delta);
1872 #if defined(G_NAN_CHECK)
1874 std::cout <<
"*** ERROR: cta_psf_radial_kern_delta::eval";
1875 std::cout <<
"(delta=" << delta <<
"):";
1876 std::cout <<
" NaN/Inf encountered";
1877 std::cout <<
" (value=" << value;
1878 std::cout <<
")" << std::endl;
1921 double theta_kluge = theta - 1.0e-12;
1922 if (theta_kluge < 0.0) {
1930 #if defined(G_DEBUG_MODEL_ZERO)
1932 std::cout <<
"*** WARNING: cta_psf_radial_kern_phi::eval";
1933 std::cout <<
" zero model for (phi)=(";
1936 std::cout <<
" radians" << std::endl;
1941 #if defined(G_NAN_CHECK)
1943 std::cout <<
"*** ERROR: cta_psf_radial_kern_phi::eval";
1944 std::cout <<
"(phi=" << phi <<
"):";
1945 std::cout <<
" NaN/Inf encountered";
1946 std::cout <<
" (value=" << value;
1947 std::cout <<
")" << std::endl;
2004 double cos_rho = std::cos(rho);
2005 double sin_rho = std::sin(rho);
2013 if (rho_kludge < 0.0) {
2038 double omega_min = -domega;
2039 double omega_max = +domega;
2056 double omega_width = std::acos(std::sqrt(arg1/arg2));
2059 if (omega_width > 0.0) {
2076 double omega1_min = omega_0 - omega_width;
2077 double omega1_max = omega_0 + omega_width;
2091 for (
int i = 0; i < intervals1.size(); ++i) {
2092 double min = intervals1[i].first;
2093 double max = intervals1[i].second;
2098 for (
int i = 0; i < intervals2.size(); ++i) {
2099 double min = intervals2[i].first;
2100 double max = intervals2[i].second;
2109 #if defined(G_NAN_CHECK)
2111 std::cout <<
"*** ERROR: cta_psf_elliptical_kern_rho";
2112 std::cout <<
"(rho=" << rho <<
"):";
2113 std::cout <<
" NaN/Inf encountered";
2114 std::cout <<
" (irf=" << irf;
2115 std::cout <<
", domega=" << domega;
2116 std::cout <<
", sin_rho=" << sin_rho <<
")";
2117 std::cout << std::endl;
2172 #if defined(G_DEBUG_MODEL_ZERO)
2177 double cosinus = std::cos(diff_angle);
2178 double sinus = std::sin(diff_angle);
2179 double arg1 = semiminor_rad * cosinus;
2180 double arg2 = semimajor_rad * sinus;
2181 double r_ellipse = semiminor_rad * semimajor_rad /
2182 std::sqrt(arg1*arg1 + arg2*arg2);
2183 std::cout <<
"*** WARNING: cta_psf_elliptical_kern_omega::eval";
2184 std::cout <<
" zero model for (rho,omega)=";
2187 std::cout <<
" rho-r_ellipse=" << (
m_rho-r_ellipse) <<
" radians";
2188 std::cout << std::endl;
2202 #if defined(G_NAN_CHECK)
2204 std::cout <<
"*** ERROR: cta_psf_elliptical_kern_omega::eval";
2205 std::cout <<
"(omega=" << omega <<
"):";
2206 std::cout <<
" NaN/Inf encountered";
2207 std::cout <<
" (irf=" << irf;
2208 std::cout <<
", model=" << model;
2209 std::cout <<
", delta=" << delta;
2210 std::cout <<
", rho=" <<
m_rho;
2211 std::cout <<
", omega=" << omega <<
")";
2212 std::cout << std::endl;
2260 double sin_delta = std::sin(delta);
2261 double cos_delta = std::cos(delta);
2266 sin_delta, cos_delta);
2286 #if defined(G_NAN_CHECK)
2288 std::cout <<
"*** ERROR: cta_psf_diffuse_kern_delta::eval";
2289 std::cout <<
"(delta=" << delta <<
"):";
2290 std::cout <<
" NaN/Inf encountered";
2291 std::cout <<
" (value=" << value;
2292 std::cout <<
")" << std::endl;
2315 double cos_phi = std::cos(phi);
2316 double sin_phi = std::sin(phi);
2333 #if defined(G_NAN_CHECK)
2335 std::cout <<
"*** ERROR: cta_psf_diffuse_kern_phi::eval";
2336 std::cout <<
"(phi=" << phi <<
"):";
2337 std::cout <<
" NaN/Inf encountered";
2338 std::cout <<
" (value=" << value;
2339 std::cout <<
")" << std::endl;
Abstract CTA energy dispersion base class definition.
const double g_ellipse_kludge_radius
About 0.2 arc seconds.
const double g_kludge_radius
Tiny angle (radians)
CTA response helper classes definition.
std::vector< std::pair< double, double > > cta_omega_intervals
Definition of support function used by CTA classes.
Integration class interface definition.
Integration class for set of functions interface definition.
Mathematical function definitions.
Isotropic spatial model class interface definition.
Spatial map cube model class interface definition.
Spatial map model class interface definition.
const double g_kludge_radius
Tiny angle (radians)
double min(const GVector &vector)
Computes minimum vector element.
double max(const GVector &vector)
Computes maximum vector element.
Vector class interface definition.
Abstract world coordinate system base class definition.
const GCTACubePsf & psf(void) const
Return cube analysis point spread function.
const GCTAAeff * aeff(void) const
Return pointer to effective area response.
virtual bool use_edisp(void) const
Signal if response uses energy dispersion.
const GCTAPsf * psf(void) const
Return pointer to point spread function.
virtual double nroi(const GModelSky &model, const GEnergy &obsEng, const GTime &obsTime, const GObservation &obs) const
Return integral of event probability for a given sky model over ROI.
double nirf(const GPhoton &photon, const GEnergy &obsEng, const GTime &obsTime, const GObservation &obs) const
Return spatial integral of Instrument Response Function.
const GCTAEdisp * edisp(void) const
Return pointer to energy dispersion.
Class that handles energies in a unit independent way.
double log10TeV(void) const
Return log10 of energy in TeV.
double MeV(void) const
Return energy in MeV.
GIntegral class interface definition.
double romberg(std::vector< double > bounds, const int &order=5)
Perform Romberg integration.
void fixed_iter(const int &iter)
Set fixed number of iterations.
std::string print(const GChatter &chatter=NORMAL) const
Print integral information.
GModelSpectral * spectral(void) const
Return spectral model component.
GModelTemporal * temporal(void) const
Return temporal model component.
const GSkyMap & cube(void) const
Get map cube.
const GSkyMap & map(void) const
Get map.
double semimajor(void) const
Return semi-major axis of ellipse.
virtual double eval(const double &theta, const double &posangle, const GEnergy &energy, const GTime &time, const bool &gradients=false) const =0
double posangle(void) const
Return Position Angle of model.
double semiminor(void) const
Return semi-minor axis of ellipse.
virtual double theta_max(void) const =0
virtual double eval(const double &theta, const GEnergy &energy, const GTime &time, const bool &gradients=false) const =0
Abstract spatial model base class.
virtual double eval(const GPhoton &photon, const bool &gradients=false) const =0
virtual double eval(const GEnergy &srcEng, const GTime &srcTime=GTime(), const bool &gradients=false) const =0
virtual double eval(const GTime &srcTime, const bool &gradients=false) const =0
Class that handles photons.
const GTime & time(void) const
Return photon time.
const GSkyDir & dir(void) const
Return photon sky direction.
const GEnergy & energy(void) const
Return photon energy.
void celvector(const GVector &vector)
Set sky direction from 3D vector in celestial coordinates.
const GSkyProjection * projection(void) const
Returns pointer to sky projection.
Abstract world coordinate system base class.
double cdelt(const int &inx) const
Return pixel size.
Kernel for IRF azimuth angle integration of the diffuse source model.
double m_azimuth
Azimuth angle.
GTime m_srcTime
True photon arrival time.
double m_zenith
Zenith angle.
GVector m_native
Pre-allocate memory for native coordinates.
GPhoton m_photon
Pre-allocate memory for a photon object.
double m_cos_ph
Cosine term in angular distance equation.
double m_sin_theta
Sine of offset angle.
double m_srcLogEng
True photon log energy.
GEnergy m_obsEng
Measured event energy.
const GModelSpatial * m_model
Spatial model.
GEnergy m_srcEng
True photon energy.
const GMatrix * m_rot
Rotation matrix.
double m_sin_ph
Sine term in angular distance equation.
double m_cos_theta
Cosine of offset angle.
double eval(const double &phi)
Kernel for IRF azimuth angle integration of the diffuse source model.
const GCTAResponseIrf * m_rsp
CTA response.
const GCTAResponseIrf * m_rsp
CTA response.
double m_azimuth
Pointing azimuth angle.
double m_sin_eta
Sine of angular distance between.
double m_srcLogEng
True photon log energy.
double m_theta
Photon offset angle.
double m_phi
Photon azimuth angle.
GEnergy m_srcEng
True photon energy.
const GModelSpatial * m_model
Spatial model.
const GMatrix * m_rot
Rotation matrix.
double m_zenith
Pointing zenith angle.
double eval(const double &theta)
Kernel for IRF offest angle integration of the diffuse source model.
GTime m_srcTime
True photon arrival time.
double m_cos_eta
Cosine of angular distance between.
GEnergy m_obsEng
Measured event energy.
Kernel for ellitpical model azimuth angle IRF integration.
double m_sin_psf
Sine term for PSF offset angle computation.
GEnergy m_srcEng
True photon energy.
double m_omega_pnt
Azimuth of pointing in model system.
const GCTAResponseIrf * m_rsp
CTA response.
double m_zenith
Zenith angle.
double m_rho
Model zenith angle.
double m_cos_psf
Cosine term for PSF offset angle computation.
const GModelSpatialElliptical * m_model
Spatial model.
GEnergy m_obsEng
Measured event energy.
GTime m_srcTime
True photon time.
double m_posangle_obs
Measured photon position angle from model centre.
double m_azimuth
Azimuth angle.
double m_sin_ph
Sine term for photon offset angle computation.
double eval(const double &omega)
Kernel for elliptical model integration over model's azimuth angle.
double m_cos_ph
Cosine term for photon offset angle computation.
double m_rho_obs
Distance of model centre from measured photon.
double m_posangle_obs
Photon position angle measured from model centre.
double m_semiminor
Ellipse boundary semiminor axis.
const GCTAResponseIrf * m_rsp
CTA response.
double m_sin_rho_pnt
Sine of m_rho_pnt.
GEnergy m_obsEng
Measured event energy.
GEnergy m_srcEng
True photon energy.
GTime m_srcTime
True photon time.
double m_sin_rho_obs
Sine of m_rho_obs.
double m_cos_delta_max
Cosine of maximum PSF radius.
double m_semimajor
Ellipse boundary semimajor axis.
double m_posangle
Ellipse boundary position angle.
double m_zenith
Zenith angle.
double m_omega_pnt
Azimuth of pointing in model system.
int m_iter
Integration iterations.
const GModelSpatialElliptical * m_model
Elliptical model.
double eval(const double &rho)
Kernel for elliptical model integration over model's zenith angle.
double m_azimuth
Azimuth angle.
double m_cos_rho_pnt
Cosine of m_rho_pnt.
double m_delta_max
Maximum PSF radius.
double m_cos_rho_obs
Cosine of m_rho_obs.
Kernel for radial model azimuth angle IRF integration.
double m_sin_ph
Sine term for photon offset angle computation.
GEnergy m_srcEng
True photon energy.
double m_sin_psf
Sine term for PSF offset angle computation.
double m_cos_psf
Cosine term for PSF offset angle computation.
const GCTAResponseIrf * m_rsp
CTA response.
GEnergy m_obsEng
Measured event energy.
double m_cos_ph
Cosine term for photon offset angle computation.
double eval(const double &omega)
Kernel for radial model azimuth angle IRF integration.
double m_azimuth
Azimuth angle.
double m_omega0
Azimuth of pointing in model system.
double m_zenith
Zenith angle.
double m_cos_zeta
Cosine of zeta.
const GCTAResponseIrf * m_rsp
CTA response.
double m_sin_lambda
Sine of lambda.
double m_cos_lambda
Cosine of lambda.
GEnergy m_obsEng
Measured event energy.
double m_delta_max
Maximum PSF radius.
GTime m_srcTime
True photon time.
double m_zeta
Distance model centre - measured photon.
double m_zenith
Zenith angle.
int m_iter
Integration iterations.
GEnergy m_srcEng
True photon energy.
double m_lambda
Distance model centre - pointing.
double eval(const double &rho)
Kernel for radial model zenith angle integration of Irf.
const GModelSpatialRadial * m_model
Radial spatial model.
double m_azimuth
Azimuth angle.
double m_cos_delta_max
Cosine of maximum PSF radius.
double m_omega0
Azimuth of pointing in model system.
double m_sin_zeta
Sine of zeta.
double m_cospsf
Cosine of PSF-ROI centre distance.
double m_theta
Offset angle of source in camera system.
double m_roi
ROI radius in radians.
double m_logE
Log10 of true photon energy (E/TeV).
double m_sinpsf
Sine of PSF-ROI centre distance.
double m_cosroi
Cosine of ROI radius.
double m_zenith
Zenith angle of source in Earth system.
double m_azimuth
Azimuth angle of source in Earth system.
const GCTAResponseIrf * m_rsp
CTA response function.
double m_phi
Azimuth angle of source in camera system.
double eval(const double &delta)
Integration kernel for npsf() method.
double m_psf
PSF-ROI centre distance in radians.
Kernel for Nroi azimuth angle integration of diffuse model.
const GCTAResponseIrf * m_rsp
CTA response.
const GModelSpatial * m_model
Spatial model.
const GMatrix * m_rot
Rotation matrix.
const GCTAObservation * m_obs
CTA observation.
double eval(const double &phi)
Kernel for Nroi azimuth angle integration of diffuse model.
GTime m_obsTime
Observed photon arrival time.
double m_sin_theta
Sine of offset angle.
GEnergy m_obsEng
Observed photon energy.
GTime m_srcTime
True photon arrival time.
GEnergy m_srcEng
True photon energy.
double m_cos_theta
Cosine of offset angle.
GEnergy m_srcEng
True photon energy.
double eval(const double &theta)
Kernel for Nroi offest angle integration of diffuse model.
const GMatrix * m_rot
Rotation matrix.
const GModelSpatial * m_model
Spatial model.
const GCTAObservation * m_obs
CTA observation.
GTime m_srcTime
True photon arrival time.
const GCTAResponseIrf * m_rsp
CTA response.
GEnergy m_obsEng
Observed photon energy.
GTime m_obsTime
Observed photon arrival time.
int m_iter
Integration iterations.
Kernel for azimuth angle Nroi integration of elliptical model.
const GMatrix * m_rot
Rotation matrix.
GEnergy m_srcEng
True photon energy.
GEnergy m_obsEng
Observed photon energy.
double m_cos_rho
Cosine of offset angle.
const GCTAObservation * m_obs
CTA observation.
const GCTAResponseIrf * m_rsp
CTA response.
GTime m_obsTime
Observed photon arrival time.
double eval(const double &omega)
Kernel for azimuth angle Nroi integration of elliptical model.
GTime m_srcTime
True photon arrival time.
double m_posangle_roi
Position angle of ROI.
double m_sin_rho
Sine of offset angle.
const GModelSpatialElliptical * m_model
Elliptical model.
const GModelSpatialElliptical * m_model
Elliptical model.
const GMatrix * m_rot
Rotation matrix.
GTime m_srcTime
True photon arrival time.
double m_posangle
Ellipse boundary position angle.
GTime m_obsTime
Observed photon arrival time.
int m_iter
Integration iterations.
const GCTAResponseIrf * m_rsp
CTA response.
double m_cos_radius_roi
Cosine of m_radius_roi.
GEnergy m_srcEng
True photon energy.
double m_rho_roi
Distance between model and ROI centre.
double m_semiminor
Ellipse boundary semiminor axis.
double m_radius_roi
ROI+PSF radius.
double m_sin_rho_roi
Sine of m_rho_roi.
double m_posangle_roi
Position angle of ROI.
double m_semimajor
Ellipse boundary semimajor axis.
const GCTAObservation * m_obs
CTA observation.
double eval(const double &rho)
Kernel for zenith angle Nroi integration of elliptical model.
GEnergy m_obsEng
Observed photon energy.
double m_cos_rho_roi
Cosine of m_rho_roi.
const GModelSky * m_model
Sky model.
GTime m_obsTime
Measured arrival time.
const GCTAResponseIrf * m_rsp
CTA response function.
GEnergy m_obsEng
Measured energy.
GTime m_srcTime
True arrival time.
const GObservation * m_obs
Observation.
double eval(const double &etrue)
Integration kernel for GCTAResponseIrf::nroi method.
GEnergy m_srcEng
True photon energy.
GTime m_srcTime
True photon arrival time.
GEnergy m_obsEng
Observed photon energy.
const GCTAResponseIrf * m_rsp
CTA response.
const GCTAObservation * m_obs
CTA observation.
const GMatrix * m_rot
Rotation matrix.
GTime m_obsTime
Observed photon arrival time.
double m_cos_rho
Cosine of offset angle.
double eval(const double &omega)
Kernel for azimuth angle Nroi integration of radial model.
double m_sin_rho
Sine of offset angle.
const GModelSpatialRadial * m_model
Radial spatial model.
double m_dist
Distance model-ROI centre.
GTime m_obsTime
Observed photon arrival time.
GEnergy m_obsEng
Observed photon energy.
const GCTAObservation * m_obs
CTA observation.
int m_iter
Integration iterations.
const GMatrix * m_rot
Rotation matrix.
GTime m_srcTime
True photon arrival time.
double m_cos_dist
Cosine of distance model-ROI centre.
double m_radius
ROI+PSF radius.
double eval(const double &rho)
Kernel for zenith angle Nroi integration or radial model.
double m_cos_radius
Cosine of ROI+PSF radius.
double m_sin_dist
Sine of distance model-ROI centre.
GEnergy m_srcEng
True photon energy.
const GCTAResponseIrf * m_rsp
CTA response.
double m_omega0
Position angle of ROI.
int m_max_iter
Maximum number of Romberg iterations.
const GMatrix * m_rot
Rotation matrix.
GSkyDir m_srcDir
True photon arrival direction.
const GCTAResponseCube * m_rsp
Response cube.
double m_resolution
Spatial map resolution.
GTime m_srcTime
True photon arrival time.
int m_min_iter
Minimum number of Romberg iterations.
const GModelSpatial * m_model
Spatial model.
GEnergy m_srcEng
True photon energy.
double eval(const double &delta)
Kernel for PSF integration of spatial model.
Kernel for Psf phi angle integration used for stacked analysis.
const GMatrix * m_rot
Rotation matrix.
double m_cos_delta
cos(delta)
double eval(const double &phi)
Kernel for map integration of spatial model.
double m_sin_delta
sin(delta)
GTime m_srcTime
True photon arrival time.
const GModelSpatial * m_model
Spatial model.
GEnergy m_srcEng
True photon energy.
double eval(const double &omega)
Kernel for elliptical model integration over azimuth angle.
GSkyDir m_srcDir
True photon sky direction.
const GModelSpatialElliptical * m_model
Elliptical model.
GTime m_srcTime
True photon time.
double m_rho
Model zenith angle.
double m_posangle_obs
Measured photon position angle from model centre.
GEnergy m_srcEng
True photon energy.
double m_sin_psf
Sine term for PSF offset angle computation.
const GCTAResponseCube * m_rsp
CTA response.
double m_cos_psf
Cosine term for PSF offset angle computation.
GEnergy m_srcEng
True photon energy.
double m_rho_obs
Distance of model centre from measured photon.
double eval(const double &rho)
Kernel for elliptical model integration over zenith angle.
double m_cos_delta_max
Cosine of maximum PSF radius.
double m_semimajor
Ellipse boundary semimajor axis.
GTime m_srcTime
True photon time.
GSkyDir m_srcDir
True photon arrival direction.
double m_posangle
Ellipse boundary position angle.
double m_semiminor
Ellipse boundary semiminor axis.
double m_delta_max
Maximum PSF radius.
double m_sin_rho_obs
Sine of m_rho_obs.
const GCTAResponseCube * m_rsp
CTA response.
int m_iter
Integration iterations.
const GModelSpatialElliptical * m_model
Elliptical model.
double m_cos_rho_obs
Cosine of m_rho_obs.
double m_posangle_obs
Photon position angle measured from model centre.
double m_cos_theta_max
Cosine of m_theta_max.
double eval(const double &delta)
Kernel for PSF integration of radial model.
const GCTAResponseCube * m_rsp
Response cube.
GSkyDir m_srcDir
True photon arrival direction.
GTime m_srcTime
True photon arrival time.
GEnergy m_srcEng
True photon energy.
double m_cos_delta_mod
Cosine of m_delta_mod.
double m_delta_mod
Distance of model from Psf.
double m_sin_delta_mod
Sine of m_delta_mod.
int m_iter
Integration iterations.
double m_theta_max
Maximum model radius.
const GModelSpatialRadial * m_model
Radial model.
Kernel for radial model azimuth angle integration.
GEnergy m_srcEng
True photon energy.
const GCTAResponseCube * m_rsp
CTA response.
double m_sin_psf
Sine term for PSF offset angle computation.
double m_cos_psf
Cosine term for PSF offset angle computation.
GSkyDir m_srcDir
True photon sky direction.
double eval(const double &omega)
Kernel for radial model integration over azimuth angle.
Kernel for Psf phi angle integration used for stacked analysis.
double eval(const double &phi)
Kernel for azimuthal radial model integration.
GEnergy m_srcEng
True photon energy.
GTime m_srcTime
True photon arrival time.
const GModelSpatialRadial * m_model
Radial model.
double m_sin_fact
sin(delta)*sin(delta_mod)
double m_cos_fact
cos(delta)*cos(delta_mod)
const GCTAResponseCube * m_rsp
CTA response.
GEnergy m_srcEng
True photon energy.
double eval(const double &rho)
Kernel for radial model integration over zenith angle.
int m_iter
Integration iterations.
double m_cos_delta_max
Cosine of maximum PSF radius.
GTime m_srcTime
True photon time.
double m_rho_obs
Distance of model centre from measured photon.
GSkyDir m_srcDir
True photon arrival direction.
const GModelSpatialRadial * m_model
Radial model.
double m_cos_rho_obs
Cosine of m_rho_obs.
double m_delta_max
Maximum PSF radius.
double m_sin_rho_obs
Sine of m_rho_obs.
bool is_infinite(const double &x)
Signal if argument is infinite.
bool is_notanumber(const double &x)
Signal if argument is not a number.
double roi_arclength(const double &rad, const double &dist, const double &cosdist, const double &sindist, const double &roi, const double &cosroi)
Returns length of circular arc within circular ROI.
int iter_phi(const double &rho, const double &resolution, const int &iter_min, const int &iter_max)
Determine number of azimuthal Romberg iterations.
double resolution(const GModelSpatial *model)
Determine resolution of spatial model.
cta_omega_intervals limit_omega(const double &min, const double &max, const double &domega)
Limit omega interval.