New Features and Important Changes in ctools 1.7.0

15 July 2020


Introduction
------------
This document briefly summarizes the changes that have been made in this
ctools release with respect to the precedent release.


Configuration
-------------
None


Documentation
-------------
Add Interface Manual to User documentation that provides links to the
ctools and GammaLib Doxygen documentation (#3163).

Add On/Off analysis to ctlike reference manual (#3154).

Update user manual to indicate where to get the latest CTA IRF (#3075).


Python interface
----------------
None


Support model
-------------
None


Base classes
------------
The headers in the log files created by cscripts that were derived from the
ctools.cscript base class were repeated. This repetition was not present in
the other base classes due to a reopening of the log file in those classes.
The logic was changed so that the cscripts now behave like the ctools. A log
file is not written by default in Python, the logFileOpen() method needs to
be called for that. And the header is only written once in the log file (#3066).


ctbin - CTA event binning
-------------------------
Add ebingamma parameter and support for POW binning (#2881).


ctbkgcube - CTA background cube generation
------------------------------------------
None


ctbutterfly - Generate butterfly diagrams
-----------------------------------------
None


ctcubemask - CTA cube filtering
-------------------------------
None


ctedispcube - CTA energy dispersion cube generation
---------------------------------------------------
Add ebingamma parameter and support for POW binning (#2881).


cterror - Likelihood profile error computation
----------------------------------------------
None


ctexpcube - CTA exposure cube generation
----------------------------------------
Add ebingamma parameter and support for POW binning (#2881).


ctfindvar - Variability search
------------------------------
None


ctlike - Maximum likelihood fitting
-----------------------------------
None


ctmapcube - CTA map cube generation
-----------------------------------
Add ebingamma parameter and support for POW binning (#2881).


ctmodel - CTA counts cube modelling
-----------------------------------
Add ebingamma parameter and support for POW binning (#2881).


ctobssim - CTA observation simulation
-------------------------------------
None


ctphase - Event phase computation
---------------------------------
None


ctprob - Event probability computation
--------------------------------------
None


ctpsfcube - CTA point spread function cube generation
-----------------------------------------------------
Add ebingamma parameter and support for POW binning (#2881).


ctselect - CTA event selection
------------------------------
None


ctskymap - CTA sky mapping
--------------------------
Added ctskymap::fits() method to allow access of FITS file object before
saving the object to disk. This allows manipulation of ctskymap results without
writing a FITS file (#2925).


cttsmap - Generation of Test Statistic map
------------------------------------------
Remove response cache for test source before fitting the source (#2973).


ctulimit - Compute upper limit
------------------------------
None


support - Support classes
-------------------------
None


csbkgmodel - Generate background model for 3D analysis
------------------------------------------------------
None


cscaldb - Inspect calibration database
--------------------------------------
None


csebins - Generate energy boundaries
------------------------------------
None


csfindobs - Find IACT observations
----------------------------------
None


csiactcopy - Copy IACT observations
-----------------------------------
None


csiactdata - Inspect IACT data store
------------------------------------
None


csiactobs - Inspect IACT observation definition XML file
--------------------------------------------------------
None


cslightcrv - Generate light curve
---------------------------------
None


csmodelinfo - Return model information
--------------------------------------
None


csmodelmerge - Merge models
---------------------------
None


csmodelselect - Select models
-----------------------------
None


csmodelsois - Puts selected sources in diffuse model cube
---------------------------------------------------------
None


csobs2caldb - Generate calibration database entry for an IACT observation
-------------------------------------------------------------------------
None


csobsdef - Generate observation definition XML file
---------------------------------------------------
None


csobsinfo - Return observation definition information
-----------------------------------------------------
None


csobsselect - Select observations
---------------------------------
None


csphagen - Generate On/Off observations
---------------------------------------
The handling of reflected regions in the presence of exclusion regions was
improved. In the presence of exclusion regions, the number of Off regions is
slighty shift in position (#2976).

Setting the exclusion map via csphagen.exclusion_map(object=<map>) will now
actually use the exclusion map even if the "inexclusion" parameter is not set.
Before, the only exclusion that would be used was the exclusion passed via the
"inexclusion" "parameter. If re-running csphagen using the "inexclusion"
parameter after setting the map with csphagen.exclusion_map() you should first
call csphagen.exclusion_map(object=gammalib.GSkyRegionMap()). This makes the
map empty and csphagen then checks the "inexclusion" "parameter (#2925).

Add ebingamma parameter and support for POW binning (#2881).


csphasecrv - Generate phase curve
---------------------------------
None


cspull - Generate pull distributions
------------------------------------
None


csresmap - Generate residual map
--------------------------------
Add ebingamma parameter and support for POW binning (#2881).


csresspec - Generate residual spectrum
--------------------------------------
Add ebingamma parameter and support for POW binning (#2881).


csroot2caldb - Generates calibration database from ROOT file
------------------------------------------------------------
None


csscs - Spectral component separation
-------------------------------------
Add new script that performs a spectral component separation analysis. A
tutorial and reference manual is included that explains how the script
works (#2961).


cssens - Computes sensitivity curve
-----------------------------------
Allow using spectral models without "Prefactor" parameter for sensitivity
computation (#1889).


csspec - Generates Spectral Energy Distribution
-----------------------------------------------
Support to generate Castro plots was added and the relevant information is
now sorted in the output FITS file (#2938).

Add ebingamma parameter and support for POW binning (#2881).


cssrcdetect - Detects sources in sky map
----------------------------------------
The using of a smoothing kernel in the _map_moments() method can lead to
negative squared standard deviations that lead to an exception when the square
root is taken. To avoid negative values, the minimum pixel values for the
standard deviation map is computed and, if the minimum value is negative,
subtracted from the standard deviation map. Therefore, by definition, the
standard deviation map is non negative for all pixels (#3261).


cstsdist - Computes Test Statistic distribution
-----------------------------------------------
Allow using spectral models without "Prefactor" parameter for computation of
TS distribution (#1889).


cstsmapmerge - Merge Test Statistic maps
----------------------------------------
None


cstsmapsplit - Prepare split Test Statistic computation
-------------------------------------------------------
None


csviscube - Generate visibility cube
------------------------------------
Moon contraints were added to compute a more accurate visibility cube. So far
there are two constraints:
- moonzenith, which specifies a minimum allow zenith angle for the Moon. In
  other words, if the Moon is higher in the sky than the specified zenith
  angle, the corresponding times are excluded from the visibility cube.
- maxfli, which specifies the maximum fraction of lunar illumination. If the
  Moon has an illumination that is equal or larger than this fraction, the
  corresponding times are excluded from the visibility cube.
(#3065).


csworkflow - Execute workflow
-----------------------------
None


calutils - Calibration utilities
--------------------------------
None


ioutils - Input/Output utilities
--------------------------------
None


modutils - Model utilities
--------------------------
Allow using spectral models without "Prefactor" parameter as test source in
test_source() function. Add normalisation_parameter() function to retrieve
spectral normalisation parameter from any model (#1889).


mputils - Multiprocessing utilities
-----------------------------------
None


obsutils - Observation utilities
--------------------------------
Fix numerical glitch in residual computation in residuals() function (#2765).


Examples
--------
In show_pull_histogram.py relpaced the call to mlab.normpdf() by a direct
computation of the normalisation, so that the code also works for matplotlib
> 3.1.0 (#3156).

The show_viscube.py script was added to display a visibility cube (#3065).

The example scripts show_butterfly.py, show_spectrum.py, show_residuals.py
and show_significance_distribution.py can now be run using objects that only
exist in memory (#2925).


caldb
-----
None


models
------
None
