From 09dc609e4f942e75c2bf56b77d7554719811cbec Mon Sep 17 00:00:00 2001 From: Jürgen Knödlseder Date: Mon, 16 Feb 2015 18:37:48 +0100 Subject: [PATCH] Integrate code and update documentation --- ChangeLog | 3 ++- NEWS | 5 +++-- doc/source/reference_manual/ctselect.rst | 14 ++++++++++++++ src/ctselect/ctselect.cpp | 42 +++++++++++++++++++++++++++--------------- src/ctselect/ctselect.hpp | 14 +++++++------- 5 files changed, 53 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4af419f..19f9e82 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,11 @@ -2015-02-02 Juergen Knoedlseder +2015-02-16 Juergen Knoedlseder * Version 1.0.0 released ======================== Adapt to GammaLib 1.0.0 interface Do not import automatically Python scripts + Support INDEF/NONE/UNDEF/UNDEFINED parameters in ctselect 2015-01-08 Juergen Knoedlseder diff --git a/NEWS b/NEWS index 1e8a6be..05b9f98 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,7 @@ New Features and Important Changes in ctools 1.0.0 Author(s) : Juergen Knoedlseder -2 February 2015 +16 February 2015 1. Introduction @@ -38,7 +38,8 @@ None 6. ctselect - CTA event selection --------------------------------- -None +If INDEF, UNDEF, NONE or UNDEFINED are passed for the selection parameters, no +selection will be performed. 7. ctbin - CTA event binning diff --git a/doc/source/reference_manual/ctselect.rst b/doc/source/reference_manual/ctselect.rst index 41c9e22..92e45ba 100644 --- a/doc/source/reference_manual/ctselect.rst +++ b/doc/source/reference_manual/ctselect.rst @@ -30,24 +30,38 @@ General parameters ``ra [real]`` Right Ascension of acceptance cone (or ROI) centre (J2000, in degrees). + If INDEF, NONE, UNDEF or UNDEFINED is passed as value, not ROI + selection will be performed. ``dec [real]`` Declination of acceptance cone (or ROI) centre (J2000, in degrees). + If INDEF, NONE, UNDEF or UNDEFINED is passed as value, not ROI + selection will be performed. ``rad [real]`` Radius of acceptance cone (or ROI) centre (in degrees). + If INDEF, NONE, UNDEF or UNDEFINED is passed as value, not ROI + selection will be performed. ``tmin [real]`` CTA mission elapsed start time defining the earliest event (in seconds). + If INDEF, NONE, UNDEF or UNDEFINED is passed as value, not time + selection will be performed. ``tmax [real]`` CTA mission elapsed stop time defining the latest event (in seconds). + If INDEF, NONE, UNDEF or UNDEFINED is passed as value, not time + selection will be performed. ``emin [real]`` Lower energy limit of events (in TeV). + If INDEF, NONE, UNDEF or UNDEFINED is passed as value, not energy + selection will be performed. ``emax [real]`` Upper energy limit of events (in TeV). + If INDEF, NONE, UNDEF or UNDEFINED is passed as value, not energy + selection will be performed. ``(expr = "") [string]`` Additional event selection expression (cfitsio syntax). diff --git a/src/ctselect/ctselect.cpp b/src/ctselect/ctselect.cpp index 1d8431f..735195d 100644 --- a/src/ctselect/ctselect.cpp +++ b/src/ctselect/ctselect.cpp @@ -406,8 +406,8 @@ void ctselect::init_members(void) m_timemin.clear(); m_timemax.clear(); m_select_energy = true; - m_select_roi = true; - m_select_time = true; + m_select_roi = true; + m_select_time = true; // Return return; @@ -436,13 +436,13 @@ void ctselect::copy_members(const ctselect& app) m_usethres = app.m_usethres; // Copy protected members - m_obs = app.m_obs; - m_infiles = app.m_infiles; - m_timemin = app.m_timemin; - m_timemax = app.m_timemax; + m_obs = app.m_obs; + m_infiles = app.m_infiles; + m_timemin = app.m_timemin; + m_timemax = app.m_timemax; m_select_energy = app.m_select_energy; - m_select_roi = app.m_select_roi; - m_select_time = app.m_select_time; + m_select_roi = app.m_select_roi; + m_select_time = app.m_select_time; // Return return; @@ -471,6 +471,11 @@ void ctselect::free_members(void) ***************************************************************************/ void ctselect::get_parameters(void) { + // Initialise selection flags + m_select_energy = true; + m_select_roi = true; + m_select_time = true; + // If there are no observations in container then load them via user // parameters if (m_obs.size() == 0) { @@ -489,8 +494,8 @@ void ctselect::get_parameters(void) // Check RA/DEC parameters for validity to read if ((*this)["ra"].is_valid() && (*this)["dec"].is_valid()) { - m_ra = (*this)["ra"].real(); - m_dec = (*this)["dec"].real(); + m_ra = (*this)["ra"].real(); + m_dec = (*this)["dec"].real(); m_select_roi = true; } else { @@ -500,7 +505,7 @@ void ctselect::get_parameters(void) // Check if radius is vaild for a RoI selection if (m_select_roi && (*this)["rad"].is_valid()) { - m_rad = (*this)["rad"].real(); + m_rad = (*this)["rad"].real(); } else { m_select_roi = false; @@ -508,13 +513,18 @@ void ctselect::get_parameters(void) // Check for sanity of time selection parameters if ((*this)["tmin"].is_valid() && (*this)["tmax"].is_valid()) { - m_tmin = (*this)["tmin"].real(); - m_tmax = (*this)["tmax"].real(); + + // Get User parameters + m_tmin = (*this)["tmin"].real(); + m_tmax = (*this)["tmax"].real(); // Additional check for time values if (m_tmin >= m_tmax) { m_select_time = false; } + else { + m_select_time = true; + } } else { m_select_time = false; @@ -522,13 +532,15 @@ void ctselect::get_parameters(void) // Check for sanity of energy selection parameters if ((*this)["emin"].is_valid() && (*this)["emax"].is_valid()) { - m_emin = (*this)["emin"].real(); - m_emax = (*this)["emax"].real(); + m_emin = (*this)["emin"].real(); + m_emax = (*this)["emax"].real(); + m_select_energy = true; } else { m_select_energy = false; } + // Get other User parameters m_expr = (*this)["expr"].string(); m_usethres = (*this)["usethres"].string(); diff --git a/src/ctselect/ctselect.hpp b/src/ctselect/ctselect.hpp index 28f6299..eb61e1d 100644 --- a/src/ctselect/ctselect.hpp +++ b/src/ctselect/ctselect.hpp @@ -96,13 +96,13 @@ protected: std::string m_usethres; //!< Energy threshold type // Protected members - GObservations m_obs; //!< Observations container - std::vector m_infiles; //!< Input event filenames - GTime m_timemin; //!< Earliest time - GTime m_timemax; //!< Latest time - bool m_select_energy; //!< Flag that signals to perform energy selection - bool m_select_roi; //!< Flag that signals to perform energy selection - bool m_select_time; //!< Flag that signals to perform energy selection + GObservations m_obs; //!< Observations container + std::vector m_infiles; //!< Input event filenames + GTime m_timemin; //!< Earliest time + GTime m_timemax; //!< Latest time + bool m_select_energy; //!< Perform energy selection + bool m_select_roi; //!< Perform ROI selection + bool m_select_time; //!< Perform time selection }; -- libgit2 0.21.4