Commit 9f8a8ffe071edd3f5e52f2dd9ffdb71191360e05
1 parent
8e9b4411
Add usepnt parameter and adapt to new GTime interface.
The usepnt parameter now signals when the pointing should be used as ROI centre. This allows arbitrary values for ra/dec (before, ra=0 and dec=0 signalled that the pointing should be used). The tool now uses the new GTime interface. In particular, the input time is now given in CTA reference time in seconds.
Showing
3 changed files
with
50 additions
and
34 deletions
src/ctselect/ctselect.cpp
| ... | ... | @@ -21,7 +21,7 @@ |
| 21 | 21 | /** |
| 22 | 22 | * @file ctselect.cpp |
| 23 | 23 | * @brief CTA data selection tool implementation |
| 24 | - * @author J. Knoedlseder | |
| 24 | + * @author Juergen Knoedlseder | |
| 25 | 25 | */ |
| 26 | 26 | |
| 27 | 27 | /* __ Includes ___________________________________________________________ */ |
| ... | ... | @@ -427,14 +427,17 @@ void ctselect::get_parameters(void) |
| 427 | 427 | } // endif: there was no observation in the container |
| 428 | 428 | |
| 429 | 429 | // Get parameters |
| 430 | - m_ra = (*this)["ra"].real(); | |
| 431 | - m_dec = (*this)["dec"].real(); | |
| 432 | - m_rad = (*this)["rad"].real(); | |
| 433 | - m_tmin = (*this)["tmin"].real(); | |
| 434 | - m_tmax = (*this)["tmax"].real(); | |
| 435 | - m_emin = (*this)["emin"].real(); | |
| 436 | - m_emax = (*this)["emax"].real(); | |
| 437 | - m_expr = (*this)["expr"].string(); | |
| 430 | + m_usepnt = (*this)["usepnt"].boolean(); | |
| 431 | + if (!m_usepnt) { | |
| 432 | + m_ra = (*this)["ra"].real(); | |
| 433 | + m_dec = (*this)["dec"].real(); | |
| 434 | + } | |
| 435 | + m_rad = (*this)["rad"].real(); | |
| 436 | + m_tmin = (*this)["tmin"].real(); | |
| 437 | + m_tmax = (*this)["tmax"].real(); | |
| 438 | + m_emin = (*this)["emin"].real(); | |
| 439 | + m_emax = (*this)["emax"].real(); | |
| 440 | + m_expr = (*this)["expr"].string(); | |
| 438 | 441 | |
| 439 | 442 | // Optionally read ahead parameters so that they get correctly |
| 440 | 443 | // dumped into the log file |
| ... | ... | @@ -443,9 +446,10 @@ void ctselect::get_parameters(void) |
| 443 | 446 | m_prefix = (*this)["prefix"].string(); |
| 444 | 447 | } |
| 445 | 448 | |
| 446 | - // Derive time interval | |
| 447 | - m_timemin.time(m_tmin, G_CTA_MJDREF, "days"); | |
| 448 | - m_timemax.time(m_tmax, G_CTA_MJDREF, "days"); | |
| 449 | + // Set time interval with input times given in CTA reference | |
| 450 | + // time (in seconds) | |
| 451 | + m_timemin.set(m_tmin, m_cta_ref); | |
| 452 | + m_timemax.set(m_tmax, m_cta_ref); | |
| 449 | 453 | |
| 450 | 454 | // Return |
| 451 | 455 | return; |
| ... | ... | @@ -490,7 +494,7 @@ void ctselect::select_events(GCTAObservation* obs, const std::string& filename) |
| 490 | 494 | // Set RA/DEC selection |
| 491 | 495 | double ra = m_ra; |
| 492 | 496 | double dec = m_dec; |
| 493 | - if (m_ra == 0.0 && m_dec == 0.0) { | |
| 497 | + if (m_usepnt) { | |
| 494 | 498 | const GCTAPointing *pnt = obs->pointing(); |
| 495 | 499 | ra = pnt->dir().ra_deg(); |
| 496 | 500 | dec = pnt->dir().dec_deg(); |
| ... | ... | @@ -514,9 +518,10 @@ void ctselect::select_events(GCTAObservation* obs, const std::string& filename) |
| 514 | 518 | // Make time selection |
| 515 | 519 | if (select_time) { |
| 516 | 520 | |
| 517 | - // Extract effective time interval in native MJD reference | |
| 518 | - double tmin = gti.tstart().time(); | |
| 519 | - double tmax = gti.tstop().time(); | |
| 521 | + // Extract effective time interval in CTA reference time. We need | |
| 522 | + // this reference for filtering. | |
| 523 | + double tmin = gti.tstart().convert(m_cta_ref); | |
| 524 | + double tmax = gti.tstop().convert(m_cta_ref); | |
| 520 | 525 | |
| 521 | 526 | // Format time with sufficient accuracy and add to selection string |
| 522 | 527 | sprintf(cmin, "%.8f", tmin); |
| ... | ... | @@ -663,13 +668,14 @@ void ctselect::init_members(void) |
| 663 | 668 | m_infile.clear(); |
| 664 | 669 | m_outfile.clear(); |
| 665 | 670 | m_prefix.clear(); |
| 666 | - m_ra = 0.0; | |
| 667 | - m_dec = 0.0; | |
| 668 | - m_rad = 0.0; | |
| 669 | - m_tmin = 0.0; | |
| 670 | - m_tmax = 0.0; | |
| 671 | - m_emin = 0.0; | |
| 672 | - m_emax = 0.0; | |
| 671 | + m_usepnt = false; | |
| 672 | + m_ra = 0.0; | |
| 673 | + m_dec = 0.0; | |
| 674 | + m_rad = 0.0; | |
| 675 | + m_tmin = 0.0; | |
| 676 | + m_tmax = 0.0; | |
| 677 | + m_emin = 0.0; | |
| 678 | + m_emax = 0.0; | |
| 673 | 679 | m_expr.clear(); |
| 674 | 680 | |
| 675 | 681 | // Initialise protected members |
| ... | ... | @@ -679,6 +685,11 @@ void ctselect::init_members(void) |
| 679 | 685 | m_timemax.clear(); |
| 680 | 686 | m_use_xml = false; |
| 681 | 687 | m_read_ahead = false; |
| 688 | + | |
| 689 | + // Set CTA time reference. G_CTA_MJDREF is the CTA reference MJD, | |
| 690 | + // which is defined in GCTALib.hpp. This is somehow a kluge. We need | |
| 691 | + // a better mechanism to implement the CTA reference MJD. | |
| 692 | + m_cta_ref.set(G_CTA_MJDREF, "s", "TT", "LOCAL"); | |
| 682 | 693 | |
| 683 | 694 | // Set logger properties |
| 684 | 695 | log.date(true); |
| ... | ... | @@ -699,6 +710,7 @@ void ctselect::copy_members(const ctselect& app) |
| 699 | 710 | m_infile = app.m_infile; |
| 700 | 711 | m_outfile = app.m_outfile; |
| 701 | 712 | m_prefix = app.m_prefix; |
| 713 | + m_usepnt = app.m_usepnt; | |
| 702 | 714 | m_ra = app.m_ra; |
| 703 | 715 | m_dec = app.m_dec; |
| 704 | 716 | m_rad = app.m_rad; |
| ... | ... | @@ -715,6 +727,7 @@ void ctselect::copy_members(const ctselect& app) |
| 715 | 727 | m_timemax = app.m_timemax; |
| 716 | 728 | m_use_xml = app.m_use_xml; |
| 717 | 729 | m_read_ahead = app.m_read_ahead; |
| 730 | + m_cta_ref = app.m_cta_ref; | |
| 718 | 731 | |
| 719 | 732 | // Return |
| 720 | 733 | return; | ... | ... |
src/ctselect/ctselect.hpp
| ... | ... | @@ -21,7 +21,7 @@ |
| 21 | 21 | /** |
| 22 | 22 | * @file ctselect.hpp |
| 23 | 23 | * @brief CTA data selection tool definition |
| 24 | - * @author J. Knoedlseder | |
| 24 | + * @author Juergen Knoedlseder | |
| 25 | 25 | */ |
| 26 | 26 | |
| 27 | 27 | #ifndef CTSELECT_HPP |
| ... | ... | @@ -35,7 +35,7 @@ |
| 35 | 35 | |
| 36 | 36 | /* __Definitions _________________________________________________________ */ |
| 37 | 37 | #define CTSELECT_NAME "ctselect" |
| 38 | -#define CTSELECT_VERSION "00-03-01" | |
| 38 | +#define CTSELECT_VERSION "00-04-00" | |
| 39 | 39 | |
| 40 | 40 | |
| 41 | 41 | /***********************************************************************//** |
| ... | ... | @@ -81,6 +81,7 @@ protected: |
| 81 | 81 | std::string m_infile; //!< Input event list or XML file |
| 82 | 82 | std::string m_outfile; //!< Output event list or XML file |
| 83 | 83 | std::string m_prefix; //!< Prefix for multiple event lists |
| 84 | + bool m_usepnt; //!< Use pointing instead of RA/DEC parameters | |
| 84 | 85 | double m_ra; //!< RA of ROI centre |
| 85 | 86 | double m_dec; //!< DEC of ROI centre |
| 86 | 87 | double m_rad; //!< ROI radius |
| ... | ... | @@ -97,6 +98,7 @@ protected: |
| 97 | 98 | GTime m_timemax; //!< Latest time |
| 98 | 99 | bool m_use_xml; //!< Use XML file instead of FITS file |
| 99 | 100 | bool m_read_ahead; //!< Read ahead parameters |
| 101 | + GTimeReference m_cta_ref; //!< CTA time reference | |
| 100 | 102 | }; |
| 101 | 103 | |
| 102 | 104 | #endif /* CTSELECT_HPP */ | ... | ... |
src/ctselect/ctselect.par
| ... | ... | @@ -5,7 +5,7 @@ |
| 5 | 5 | # ------------------------------------------------------------------------- # |
| 6 | 6 | # # |
| 7 | 7 | # File: ctselect.par # |
| 8 | -# Version: 00-03-00 # | |
| 8 | +# Version: 00-04-00 # | |
| 9 | 9 | # # |
| 10 | 10 | # Author: Jurgen Knodlseder # |
| 11 | 11 | # Jurgen.Knodlseder@irap.omp.eu # |
| ... | ... | @@ -23,14 +23,15 @@ prefix, s, h, "selected_",,,"Prefix for event lists in observation definition fi |
| 23 | 23 | # |
| 24 | 24 | # Selection parameters |
| 25 | 25 | #===================== |
| 26 | -ra, r, a, 83.63, 0,360, "RA for ROI centre (degrees)" | |
| 27 | -dec, r, a, 22.01, -90, 90, "Dec for ROI centre (degrees)" | |
| 28 | -rad, r, a, 3.0, 0,180, "Radius of ROI (degrees)" | |
| 29 | -tmin, r, a, 0.0, 0, , "Start time (CTA MJD in days)" | |
| 30 | -tmax, r, a, 10000.0, 0, , "End time (CTA MJD in days)" | |
| 31 | -emin, r, a, 0.1, 0, , "Lower energy limit (TeV)" | |
| 32 | -emax, r, a, 100.0, 0, , "Upper energy limit (TeV)" | |
| 33 | -expr, s, h, "", , , "Additional selection expression" | |
| 26 | +usepnt, b, h, no,,, "Use pointing instead of RA/DEC parameters?" | |
| 27 | +ra, r, a, 83.63, 0,360, "RA for ROI centre (degrees)" | |
| 28 | +dec, r, a, 22.01, -90, 90, "Dec for ROI centre (degrees)" | |
| 29 | +rad, r, a, 3.0, 0,180, "Radius of ROI (degrees)" | |
| 30 | +tmin, r, a, 0.0, 0, , "Start time (CTA MET in seconds)" | |
| 31 | +tmax, r, a, 0.0, 0, , "End time (CTA MET in seconds)" | |
| 32 | +emin, r, a, 0.1, 0, , "Lower energy limit (TeV)" | |
| 33 | +emax, r, a, 100.0, 0, , "Upper energy limit (TeV)" | |
| 34 | +expr, s, h, "", , , "Additional selection expression" | |
| 34 | 35 | # |
| 35 | 36 | # Standard parameters |
| 36 | 37 | #==================== | ... | ... |