New Features and Important Changes in ctools 1.7.0

17 February 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
-------------
None


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
-------------------------
None


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


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


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


ctedispcube - CTA energy dispersion cube generation
---------------------------------------------------
None


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


ctexpcube - CTA exposure cube generation
----------------------------------------
None


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


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


ctmapcube - CTA map cube generation
-----------------------------------
None


ctmodel - CTA counts cube modelling
-----------------------------------
None


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


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


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


ctpsfcube - CTA point spread function cube generation
-----------------------------------------------------
None


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
---------------------------------------
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).


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


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


csresmap - Generate residual map
--------------------------------
None


csresspec - Generate residual spectrum
--------------------------------------
None


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


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).


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. A filter was introduced that sets all small values
of mean and std to zero, avoiding thus the exception.


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
--------------------------------
None


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
