From 6473def5bf7fa14d901be473a69568a8b6884179 Mon Sep 17 00:00:00 2001 From: Jürgen Knödlseder Date: Fri, 12 Jan 2018 12:01:52 +0100 Subject: [PATCH] Integrate code --- AUTHORS | 1 + ChangeLog | 3 ++- NEWS | 7 ++++++- cscripts/csphagen.par | 42 +++++++++++++++++++++--------------------- cscripts/csphagen.py | 285 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------- cscripts/obsutils.py | 3 ++- doc/source/admin/release_history/1.5.rst | 2 ++ doc/source/users/reference_manual/csphagen.rst | 82 +++++++++++++++++++++++++++++++++++++++++----------------------------------------- test/test_csphagen.py | 17 ++++++++++++----- 9 files changed, 263 insertions(+), 179 deletions(-) diff --git a/AUTHORS b/AUTHORS index 42793a0..3a059d3 100644 --- a/AUTHORS +++ b/AUTHORS @@ -15,5 +15,6 @@ Michael Mayer (michael.mayer@physik.hu-berlin.de) Stefan Ohm (stefan.ohm81@gmail.com) David Sanchez (david.sanchez@lapp.in2p3.fr) Hubert Siejkowski (h.siejkowski@cyfronet.pl) +Andreas Specovius (andreas.specovius@fau.de) Luigi Tibaldo (luigi.tibaldo@irap.omp.eu) Alexander Ziegler (alexander.ziegler@fau.de) diff --git a/ChangeLog b/ChangeLog index e0d47a6..95f3e20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,9 @@ -2017-11-28 +2018-01-12 * Version 1.5.0 released ======================== + Add CUSTOM background method to csphagen script (#2284) Support On/Off analysis in cslightcrv and csphasecrv (#2273) Add tutorial for classical analysis (#2267) Fix chatter level handling in ctpsfcube (#2262) diff --git a/NEWS b/NEWS index 6f2e36c..8decf22 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,6 @@ New Features and Important Changes in ctools 1.5.0 -28 November 2017 +12 January 2018 Introduction @@ -219,6 +219,11 @@ None csphagen - Generate On/Off observations --------------------------------------- +The CUSTOM background method was added to allow specifying On and Off regions +from a region file or FITS WCS map. For multiple observations, a custom Off +region per observation can be specified in the observation definition XML file +using the OffRegions parameter (#2284). + The script was added to allow the generation of PHA, ARF and RMF datasets for classical On/Off IACT analysis (#2208). diff --git a/cscripts/csphagen.par b/cscripts/csphagen.par index 03810ea..9366518 100644 --- a/cscripts/csphagen.par +++ b/cscripts/csphagen.par @@ -26,27 +26,27 @@ prefix, s, h, onoff,,, "Prefix for output files" # # Script parameters #================== -emin, r, a, 0.1,,, "Lower energy limit (TeV)" -emax, r, a, 100.0,,, "Upper energy limit (TeV)" -enumbins, i, a, 120,,, "Number of energy bins" -ebinalg, s, a, LOG,LIN|LOG|FILE,, "Binning algorithm" -ebinfile, f, a, NONE,,, "Name of the file containing the energy bin definition" -srcshape, s, h, CIRCLE,CIRCLE,, "Shape of the source region" -coordsys, s, a, CEL,CEL|GAL,, "Coordinate system (CEL - celestial, GAL - galactic)" -ra, r, a, 83.63,0,360, "Right Ascension of source region centre (deg)" -dec, r, a, 22.01,-90,90, "Declination of source region centre (deg)" -glon, r, a, 184.56,0,360, "Galactic longitude of source region centre (deg)" -glat, r, a, -5.79,-90,90, "Galactic latitude of source region centre (deg)" -rad, r, a, 0.2,0,180, "Radius of source region circle (deg)" -bkgmethod, s, h, REFLECTED,REFLECTED|CUSTOM,, "Method for background estimation" -bkgregmin, i, h, 2,1,1000, "Minimum number of background regions" -maxoffset, r, h, 4.0,,, "Maximum offset of source from camera center to accept observation" -stack, b, a, no,,, "Stack multiple observations into single PHA, ARF and RMF files?" -etruemin, r, h, 0.01,,, "Minimum true energy (TeV)" -etruemax, r, h, 300.0,,, "Maximum true energy (TeV)" -etruebins, i, h, 30,,, "Number of bins per decade for true energy bins" -bkgreg, f, a, bkg.reg,,, "Background regions file (ds9 or FITS WCS)" -srcreg, f, a, on.reg,,, "Source region file (ds9 or FITS WCS)" +emin, r, a, 0.1,,, "Lower energy limit (TeV)" +emax, r, a, 100.0,,, "Upper energy limit (TeV)" +enumbins, i, a, 120,,, "Number of energy bins" +ebinalg, s, a, LOG,LIN|LOG|FILE,, "Binning algorithm" +ebinfile, f, a, NONE,,, "Name of the file containing the energy bin definition" +srcshape, s, h, CIRCLE,CIRCLE,, "Shape of the source region" +coordsys, s, a, CEL,CEL|GAL,, "Coordinate system (CEL - celestial, GAL - galactic)" +ra, r, a, 83.63,0,360, "Right Ascension of source region centre (deg)" +dec, r, a, 22.01,-90,90, "Declination of source region centre (deg)" +glon, r, a, 184.56,0,360, "Galactic longitude of source region centre (deg)" +glat, r, a, -5.79,-90,90, "Galactic latitude of source region centre (deg)" +rad, r, a, 0.2,0,180, "Radius of source region circle (deg)" +srcregfile, f, a, on.reg,,, "Source region file (ds9 or FITS WCS)" +bkgmethod, s, a, REFLECTED,REFLECTED|CUSTOM,, "Method for background estimation" +bkgregfile, f, a, bkg.reg,,, "Background regions file (ds9 or FITS WCS)" +bkgregmin, i, h, 2,1,1000, "Minimum number of background regions" +maxoffset, r, h, 4.0,,, "Maximum offset of source from camera center to accept observation" +stack, b, a, no,,, "Stack multiple observations into single PHA, ARF and RMF files?" +etruemin, r, h, 0.01,,, "Minimum true energy (TeV)" +etruemax, r, h, 300.0,,, "Maximum true energy (TeV)" +etruebins, i, h, 30,,, "Number of bins per decade for true energy bins" # # Standard parameters diff --git a/cscripts/csphagen.py b/cscripts/csphagen.py index 9761418..195ce25 100755 --- a/cscripts/csphagen.py +++ b/cscripts/csphagen.py @@ -3,7 +3,7 @@ # Computes the PHA spectra for source/background and ARF/RMF files using the # reflected region method # -# Copyright (C) 2017 Luigi Tibaldo +# Copyright (C) 2017-2018 Luigi Tibaldo # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -55,8 +55,9 @@ class csphagen(ctools.csobservation): # Return return + # Private methods - def __query_src_direction(self): + def _query_src_direction(self): """ Set up the source direction parameter. Query relevant parameters. @@ -72,101 +73,137 @@ class csphagen(ctools.csobservation): glat = self['glat'].real() self._src_dir.lb_deg(glon, glat) - def _get_parameters(self): + def _get_parameters_bkgmethod_reflected(self): """ - Get parameters from parfile and setup observations - - Raises - ------ - RuntimeError - Multiple On-Regions in on region file or missing Off-Regions files. + Get parameters for REFLECTED background method """ - # Setup observations (require response and allow event list, don't - # allow counts cube) - self._setup_observations(self.obs(), True, True, False) - - # Set energy bounds - self._ebounds = self._create_ebounds() - - # Initialize empty src regions container - self._src_reg = gammalib.GSkyRegions() + # Get source shape + self._srcshape = self['srcshape'].string() - # Query background estimation method and parameters - bkgmethod = self['bkgmethod'].string() - if bkgmethod == 'REFLECTED': + # Set source region (so far only CIRCLE is supported) + if self._srcshape == 'CIRCLE': - # Always query src direction - self.__query_src_direction() - - # Query region parameters - self._srcshape = self['srcshape'].string() - if self._srcshape == 'CIRCLE': - self._rad = self['rad'].real() - self._src_reg.append(gammalib.GSkyRegionCircle(self._src_dir, self._rad)) + # Query source direction + self._query_src_direction() + # Query minimum number of background regions self['bkgregmin'].integer() - elif bkgmethod == 'CUSTOM': + # Set circular source region + self._rad = self['rad'].real() + self._src_reg.append(gammalib.GSkyRegionCircle(self._src_dir, self._rad)) - # Set up src region. Only 1 region is allowed. - src_reg_file = self['srcreg'].filename() - self._src_reg = gammalib.GSkyRegions(src_reg_file) + # Return + return - if len(self._src_reg) != 1: - raise RuntimeError('Only 1 ON region is allowed.') + def _get_parameters_bkgmethod_custom(self): + """ + Get parameters for CUSTOM background method - # Set up src direction. Query if neccessary. - if isinstance(self._src_reg[0], gammalib.GSkyRegionCircle): - self._src_dir = self._src_reg[0].centre() - self._rad = self._src_reg[0].radius() + Raises + ------ + RuntimeError + Multiple On-Regions in on region file or missing Off-Regions files. + """ + # Set up source region + src_reg_file = self['srcregfile'].filename() + self._src_reg = gammalib.GSkyRegions(src_reg_file) + + # Raise an exception if there is more than one source region + if len(self._src_reg) != 1: + raise RuntimeError('Only 1 On region is allowed.') + + # Set up source direction. Query parameters if neccessary. + if isinstance(self._src_reg[0], gammalib.GSkyRegionCircle): + self._src_dir = self._src_reg[0].centre() + self._rad = self._src_reg[0].radius() + else: + self._query_src_direction() + + # Try opening file as XML file. If this files we have probably a FITS + # events file on input, hence we query later one background region + # file + try: + # Open observation definition XML file + obs_file = self['inobs'].filename() + xml = gammalib.GXml(obs_file) + + # Go through elements in + for elem in xml[0]: + + # Get observation id from header + obs_id = elem.attribute('id') + + # Get region file path from body + off_regions_file = '' + for entry in elem: + + # contains region file + if entry.attribute('name') == 'OffRegions': + off_regions_file = entry.attribute('file') + break + + # Store file paths + self._bkg_reg_files[obs_id] = gammalib.GFilename(off_regions_file) + + # Not existing background region files are set to None (for every obs) + if not self._bkg_reg_files[obs_id].exists(): + self._bkg_reg_files[obs_id] = None + + # XML file opening failed + except: + self._bkg_reg_files = {0: None} + + # Query missing background region file + if len([True for x in self._bkg_reg_files if self._bkg_reg_files[x] is None]) > 0: + if len(self._bkg_reg_files) > 1: + # Querying of multiple regions not supported + raise RuntimeError('There are missing bkg region files in the ' + 'observation definition XML file. Please ' + 'specify all background region files.') else: - self.__query_src_direction() - - # Set up bkg regions - obs_file = self['inobs'].filename() + # Query bkg region file for single observation + self._bkg_reg_files[self._bkg_reg_files.keys()[0]] = \ + self['bkgregfile'].filename() - # obs def XML: look for region files - if obs_file.file()[-3:] == 'xml': - # open and load XML obs definition file - xml = gammalib.GXml() - xml.load(obs_file) + # Return + return - # Go through elements in - for elem in xml[0]: + def _get_parameters_bkgmethod(self): + """ + Get background method parameters + """ + # Get background method + bkgmethod = self['bkgmethod'].string() - # Get observation id from header - obs_id = elem.attribute('id') + # Get background method dependent parameters + if bkgmethod == 'REFLECTED': + self._get_parameters_bkgmethod_reflected() + elif bkgmethod == 'CUSTOM': + self._get_parameters_bkgmethod_custom() - # Get region file path from body - off_regions_file = '' - for entry in elem: + # Query parameters that are needed for all background methods + self['maxoffset'].real() - # contains region file - if entry.attribute('name') == 'OffRegions': - off_regions_file = entry.attribute('file') + # Return + return - # Store file paths - self._bkg_reg_files[obs_id] = gammalib.GFilename(off_regions_file) + def _get_parameters(self): + """ + Get parameters from parfile and setup observations + """ + # Setup observations (require response and allow event list, don't + # allow counts cube) + self._setup_observations(self.obs(), True, True, False) - # Not existing bkg region files are set to None (for every obs) - if not self._bkg_reg_files[obs_id].exists(): - self._bkg_reg_files[obs_id] = None + # Set energy bounds + self._ebounds = self._create_ebounds() - else: - # event FITS files: query later 1 bkg region file - self._bkg_reg_files = {0:None} - - # Query missing bkg region file - if len([True for x in self._bkg_reg_files if self._bkg_reg_files[x] is None]) > 0: - if len(self._bkg_reg_files) > 1: - # Querying of multiple regions not supported - raise RuntimeError('There are missing bkg region files in the obs definition' - +' XML. Please specify all bkg region files!') - else: - # Query bkg region file for single observation - self._bkg_reg_files[self._bkg_reg_files.keys()[0]] = self['bkgreg'].filename() + # Initialize empty src regions container + self._src_reg = gammalib.GSkyRegions() - self['maxoffset'].real() + # Get background method parameters + self._get_parameters_bkgmethod() # Exclusion map if self['inexclusion'].filename().is_fits(): @@ -260,7 +297,9 @@ class csphagen(ctools.csobservation): def _regions_from_file(self, obs, file_path): """ - Read list of reflected regions for a single observation (pointing) from file. + Read list of reflected regions for a single observation (pointing) + from file. + Perform basic tests for circle shaped regions. Parameters @@ -278,12 +317,13 @@ class csphagen(ctools.csobservation): # Load regions from ds9 file of FITS WCS map regions = gammalib.GSkyRegions( file_path ) - # Do region tests only for circle shaped on-region. Else simply return list. + # Do region tests only for circle shaped on-region, simply return list + # for other shapes. on_region = self._src_reg[0] if isinstance(on_region, gammalib.GSkyRegionCircle): # Prepare parameters for comparison - pnt_dir = obs.pointing().dir() + pnt_dir = obs.pointing().dir() offset_on = pnt_dir.dist_deg(self._src_dir) radius_on = on_region.radius() @@ -297,27 +337,31 @@ class csphagen(ctools.csobservation): offset_off = pnt_dir.dist_deg(region.centre()) radius_off = region.radius() - # Warn: different radius + # Warning: different radius if radius_off != radius_on: - self._log_string(gammalib.EXPLICIT, 'Off region radius differs from on' - 'region radius: %.2f vs %.2f' % ((radius_off, radius_on))) + self._log_string(gammalib.EXPLICIT, 'Off region radius ' + 'differs from On region radius: %.2f ' + 'vs %.2f' % ((radius_off, radius_on))) - # Warn: offset is too small or too large + # Warning: offset is too small or too large if offset_off <= radius_on or offset_off >= self['maxoffset'].real(): - self._log_string(gammalib.EXPLICIT, 'Region offset invalid for observation ' - '%s (%.3f deg) ' % ((obs.id(), offset_off))) + self._log_string(gammalib.EXPLICIT, 'Region offset ' + 'invalid for observation %s ' + '(%.3f deg) ' % ((obs.id(), offset_off))) - # Warn: offset of off and on region differ + # Warning: offset of off and on region differ if offset_off != offset_on: - self._log_string(gammalib.EXPLICIT, 'Off region offset differs ' - '%.3f deg from on region offset' % (offset_off-offset_on)) + self._log_string(gammalib.EXPLICIT, 'Off region offset ' + 'differs %.3f deg from On region ' + 'offset' % (offset_off-offset_on)) # end: off-regions test for circle shaped regions # end: for loop iterating over off regions # end: do region tests only if on-region is circle shaped # Inform user how many regions were loaded - self._log_string(gammalib.NORMAL, 'Read %i regions from file %s.' % (regions.size(), file_path.url())) + self._log_string(gammalib.NORMAL, 'Read %i regions from file %s' % \ + (regions.size(), file_path.url())) # return list of regions return regions @@ -390,6 +434,45 @@ class csphagen(ctools.csobservation): # Return energy boundaries return ebounds + def _set_background_regions(self, obs): + """ + Set background regions for an observation + + Parameters + ---------- + obs : `~gammalib.GCTAObservation()` + CTA observation + + Returns + ------- + regions : `~gammalib.GSkyRegions()` + Background regions + """ + # Initialise empty background regions for this observation + bkg_reg = gammalib.GSkyRegions() + + # If reflected background is requested then created reflected + # background regions + if self['bkgmethod'].string() == 'REFLECTED': + bkg_reg = self._reflected_regions(obs) + + # ... otherwise if custom background is requested the get the background + # regions from a region file + elif self['bkgmethod'].string() == 'CUSTOM': + + # Get file path of background region file from dictionary + if len(self._bkg_reg_files) > 1: + bkg_reg_file = self._bkg_reg_files[obs.id()] + else: + # for inobs==event list no obs id is set. + bkg_reg_file = self._bkg_reg_files[self._bkg_reg_files.keys()[0]] + + # Load background regions from region file for current observation + bkg_reg = self._regions_from_file(obs, bkg_reg_file) + + # Return background regions + return bkg_reg + # Public methods def run(self): @@ -432,26 +515,10 @@ class csphagen(ctools.csobservation): # Log current observation self._log_string(gammalib.NORMAL, 'Process Observation %s' % (obs.id())) - # Initialise background regions for this observation - bkg_reg = gammalib.GSkyRegions() - - # If reflected background is requested then created reflected - # background regions - if self['bkgmethod'].string() == 'REFLECTED': - bkg_reg = self._reflected_regions(obs) - elif self['bkgmethod'].string() == 'CUSTOM': - # Get file path of bkg region file from dictionary - if len(self._bkg_reg_files) > 1: - bkg_reg_file = self._bkg_reg_files[obs.id()] - else: - # for inobs==event list no obs id is set. - bkg_reg_file = self._bkg_reg_files[self._bkg_reg_files.keys()[0]] - - # Load off regions from region file for current observation - bkg_reg = self._regions_from_file(obs, bkg_reg_file) - + # Set background regions for this observation + bkg_reg = self._set_background_regions(obs) - # If there are reflected regions then create On/Off observation + # If there are background regions then create On/Off observation # and append it to the output container if bkg_reg.size() >= self['bkgregmin'].integer(): onoff = gammalib.GCTAOnOffObservation(obs, self._src_dir, diff --git a/cscripts/obsutils.py b/cscripts/obsutils.py index 10af62c..cef3a76 100755 --- a/cscripts/obsutils.py +++ b/cscripts/obsutils.py @@ -1,7 +1,7 @@ # ========================================================================== # Utility functions for observation handling # -# Copyright (C) 2011-2017 Juergen Knoedlseder +# Copyright (C) 2011-2018 Juergen Knoedlseder # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -130,6 +130,7 @@ def sim(obs, log=False, debug=False, chatter=2, edisp=False, seed=0, phagen['rad'] = onrad phagen['stack'] = False phagen['inexclusion'] = 'NONE' + phagen['bkgmethod'] = 'REFLECTED' # Optionally open the log file if log: diff --git a/doc/source/admin/release_history/1.5.rst b/doc/source/admin/release_history/1.5.rst index 56d2c13..be47759 100644 --- a/doc/source/admin/release_history/1.5.rst +++ b/doc/source/admin/release_history/1.5.rst @@ -24,6 +24,8 @@ Bug fixes Improvements ------------ +* [`2284 `_] - + Add ``CUSTOM`` background method to :ref:`csphagen` script * [`2273 `_] - Support On/Off analysis in :ref:`cslightcrv` and :ref:`csphasecrv` * [`2267 `_] - diff --git a/doc/source/users/reference_manual/csphagen.rst b/doc/source/users/reference_manual/csphagen.rst index 9665840..9bcb5fe 100644 --- a/doc/source/users/reference_manual/csphagen.rst +++ b/doc/source/users/reference_manual/csphagen.rst @@ -31,50 +31,48 @@ General parameters ------------------ ``inobs [file]`` - Input event list or observation definition XML file. + Input event list or observation definition XML file ``caldb [string]`` - Calibration database. + Calibration database ``irf [string]`` - Instrument response function. + Instrument response function ``(inexclusion = NONE) [file]`` Optional FITS file containing a WCS map in the first hdu that defines sky - regions not to be used for background estimation (where map value != 0). + regions not to be used for background estimation (where map value != 0) ``outobs [string]`` - Output observation definition XML file. + Output observation definition XML file ``(prefix = onoff) [string]`` - Prefix of the file name for output PHA, ARF, RMF, XML, and DS9 region files. + Prefix of the file name for output PHA, ARF, RMF, XML, and DS9 region files ``emin [real]`` - Lower energy limit (TeV) if ``LIN`` or ``LOG`` binning algorithms are used. + Lower energy limit (TeV) if ``LIN`` or ``LOG`` binning algorithms are used ``emax [real]`` - Upper energy limit (TeV) if ``LIN`` or ``LOG`` binning algorithms are used. + Upper energy limit (TeV) if ``LIN`` or ``LOG`` binning algorithms are used ``enumbins [integer]`` Number of energy bins. At least 30 bins per decade are recommended for proper evaluation of the instrument response. -``ebinalg [string]`` - Energy binning algorithm: - ``LOG`` : logarithmically spaced energy bins; - ``LIN`` : linearly spaced energy bins; - ``FILE``: energy bounds retrieved from file. +``ebinalg [string]`` + Algorithm for defining energy bins (``FILE``: energy bounds retrieved from + file, see ``ebinfile`` parameter; ``LIN``: linearly spaced energy bins; + ``LOG``: logarithmically spaced energy bins) ``ebinfile [file]`` Name of the file containing the energy bin definition if ``FILE`` algorithm - is used. + is used -``(srcshape = CIRCLE) [string]`` - Shape of the source region. - ``CIRCLE``: circular region around given position. +``(srcshape = CIRCLE) [string]`` + Shape of the source region (``CIRCLE``: circular region around given position) -``coordsys [string]`` - Coordinate system (``CEL`` - celestial, ``GAL`` - galactic) +``coordsys [string]`` + Coordinate system (``CEL``: celestial; ``GAL``: galactic) ``ra [real]`` Right Ascension of source region centre (deg) @@ -91,17 +89,25 @@ General parameters ``rad [real]`` Radius of source region circle (deg) -``(bkgmethod = REFLECTED) [string]`` - Method for background estimation. - ``REFLECTED:`` background evaluated in regions with the same shape as - source region reflected w.r.t. pointing direction for each observation. - ``CUSTOM:`` background evaluated in regions specified by user. - For event list or single obs in an obs definition XML: region files can - be queried. - For multiple observations: those have to be specified in the obs def XML. - Here use parameter name="OffRegions" (per observation) with appropriate - entry. Files can be ds9 regions or FITS WCS maps. The on region - will always be queried. +``srcregfile [file]`` + Source region file (ds9 or FITS WCS map) + +``bkgmethod [string]`` + Method for background estimation: + + - ``REFLECTED``: background is evaluated in regions with the same shape as + the source region reflected w.r.t. pointing direction for each observation + + - ``CUSTOM``: background is evaluated in regions specified by user. For an + event list or a single observation in the observation definition XML file + a region file will be queried (see ``bkgregfile`` parameter). For multiple + observations specified in the observation definition XML file the name of + the region file will be extracted from the ``OffRegions`` parameter that + needs to be specified for each observation in the observation definition + XML file. Off region files can be either ds9 region files or FITS WCS maps. + +``bkgregfile [file]`` + Background regions file (ds9 or FITS WCS map) ``(bkgregmin = 2) [integer]`` Minimum number of background regions that are required for an observation. @@ -110,26 +116,20 @@ General parameters ``(maxoffset = 4.0) [real]`` Maximum offset in degrees of source from camera center to accept the - observation. + observation ``stack [boolean]`` Specifies whether multiple observations should be stacked (``yes``) or - whether run-wise PHA, ARF and RMF files should be produced (``no``). + whether run-wise PHA, ARF and RMF files should be produced (``no``) ``(etruemin = 0.01) [real]`` - Minimum true energy (TeV). + Minimum true energy (TeV) ``(etruemax = 0.01) [real]`` - Maximum true energy (TeV). + Maximum true energy (TeV) ``(etruebins = 30) [integer]`` - Number of bins per decade for true energy bins. - -``(bkgreg = bkg.reg) [file]`` - Background regions file (ds9 or FITS WCS map). - -``(srcreg = on.reg) [file]`` - Source region file (ds9 or FITS WCS map). + Number of bins per decade for true energy bins Standard parameters diff --git a/test/test_csphagen.py b/test/test_csphagen.py index a4aa762..265de68 100644 --- a/test/test_csphagen.py +++ b/test/test_csphagen.py @@ -92,7 +92,8 @@ class Test(test): ' coordsys="CEL" ra=83.633 dec=22.0145' + \ ' rad=0.2 stack="no" inexclusion="' + \ self._exclusion + \ - '" outobs="csphagen_cmd1.xml" prefix="csphagen_cmd1" ' + \ + '" bkgmethod="REFLECTED" '+ \ + 'outobs="csphagen_cmd1.xml" prefix="csphagen_cmd1" ' + \ 'logfile="csphagen_cmd1.log" chatter=2' # Check if execution of wrong command fails @@ -119,7 +120,8 @@ class Test(test): ' coordsys="CEL" ra=83.633 dec=22.0145' + \ ' rad=0.2 stack="no" inexclusion="' + \ self._exclusion + \ - '" outobs="csphagen_cmd2.xml" prefix="csphagen_cmd2" ' + \ + '" bkgmethod="REFLECTED" '+ \ + 'outobs="csphagen_cmd2.xml" prefix="csphagen_cmd2" ' + \ 'logfile="csphagen_cmd2.log" debug=yes chatter=1' # Check if execution failed @@ -151,6 +153,7 @@ class Test(test): phagen['rad'] = 0.2 phagen['stack'] = False phagen['inexclusion'] = self._exclusion + phagen['bkgmethod'] = 'REFLECTED' phagen['etruemin'] = 0.05 phagen['etruemax'] = 150.0 phagen['etruebins'] = 5 @@ -180,6 +183,7 @@ class Test(test): phagen['dec'] = 22.0145 phagen['rad'] = 0.2 phagen['stack'] = False + phagen['bkgmethod'] = 'REFLECTED' phagen['etruemin'] = 0.05 phagen['etruemax'] = 150.0 phagen['etruebins'] = 5 @@ -216,6 +220,7 @@ class Test(test): phagen['rad'] = 0.2 phagen['stack'] = False phagen['inexclusion'] = self._exclusion + phagen['bkgmethod'] = 'REFLECTED' phagen['etruemin'] = 0.05 phagen['etruemax'] = 150.0 phagen['etruebins'] = 5 @@ -246,6 +251,7 @@ class Test(test): phagen['rad'] = 0.2 phagen['stack'] = True phagen['inexclusion'] = self._exclusion + phagen['bkgmethod'] = 'REFLECTED' phagen['etruemin'] = 0.05 phagen['etruemax'] = 150.0 phagen['etruebins'] = 5 @@ -293,9 +299,10 @@ class Test(test): 'inexclusion="' + self._exclusion + '" ' + \ 'bkgmethod="CUSTOM" ' + \ 'rad=0.2 ' + \ - 'srcreg="' + self._regfile_src + '" ' + \ - 'bkgreg="' + self._regfile_bkg + '" ' + \ - 'outobs="csphagen_regfiles_cmd1.xml" prefix="csphagen_regfiles_cmd1" ' + \ + 'srcregfile="' + self._regfile_src + '" ' + \ + 'bkgregfile="' + self._regfile_bkg + '" ' + \ + 'outobs="csphagen_regfiles_cmd1.xml" ' + \ + 'prefix="csphagen_regfiles_cmd1" ' + \ 'logfile="csphagen_regfiles_cmd1.log" chatter=2 ' + \ 'coordsys="CEL" ra=83.633 dec=22.0145' -- libgit2 0.21.4