NEWS 7.08 KB
New Features and Important Changes in GammaLib 1.3.0.dev1

14 April 2017


1. Introduction
---------------
This document briefly summarizes module by module the most important changes
made since the last release of GammaLib.


2. Public interface modifications
---------------------------------
The following classes have been added:
- GPhases
- GWcsGLS
- GWcsSFL
- GModelSpectralSmoothBrokenPlaw

The following classes have been removed:
- ...

The following classes have been renamed:
- ...

The following methods have been added:
- GEbounds::set(GEnergies&)
- GEbounds::emin(int&, GEnergy&)
- GEbounds::emax(int&, GEnergy&)
- GEnergies::set(GEbounds&)
- GFilename::type()
- GMatrix::operator+(double&)
- GMatrix::operator-(double&)
- GMatrix::operator+=(double&)
- GMatrix::operator-=(double&)
- GMatrixSymmetric::operator+(double&)
- GMatrixSymmetric::operator-(double&)
- GMatrixSymmetric::operator+=(double&)
- GMatrixSymmetric::operator-=(double&)
- GMatrixSparse::operator+(double&)
- GMatrixSparse::operator-(double&)
- GMatrixSparse::operator+=(double&)
- GMatrixSparse::operator-=(double&)
- GCTAResponseIrf::rspname()
- GCTARoi::contains(GCTAInstDir&)
- GCTAEdisp2D::fetch()
- GCTAAeff::ebounds()
- GCTAAeff2D::ebounds()
- GCTAAeffArf::ebounds()
- GCTAAeffPerfTable::ebounds()
- GCTAEventList::append_column(GFitsTableCol&)
- GCTAEventList::has_phase(bool&)
- GCTAEventList::has_phase()
- GCTAEventList::has_detxy(bool&)
- GCTAEventList::has_detxy()
- GCTAEventList::has_mc_id(bool&)
- GCTAEventList::has_mc_id()
- GCTAEventList::set_mc_id_names(std::vector<int>&, std::vector<std::string>&)
- GCTAEventAtom::mc_id(int&)
- GCTAEventAtom::mc_id()

The following methods have been removed:
- ...

The following methods have been renamed:
- ...

The arguments for the following methods have been changed:
- ...

The return value of the following methods has been changed:
- ...


3. Configuration
-----------------
The Python unit tests now raise exceptions instead of exiting with a non-
zero return code so that the user is not thrown out of Python after calling
gammalib.test() (#1983).

If the code originates from the Git repository the configuration now switches
to developer mode which implies that the Python bindings are always built.
This solves the problem that occured for developers that could not get rid
of existing Python wrappers, even if they modified the Python interface
(#1985).

The shared libraries needed by the Python wrappers are now copied into a
build/gammalib directory for unit testing instead of creating a symbolic
link since on shared VM file systems symbolic links may not work (#1987).


4. Application module
---------------------
None


5. Base module
--------------
None


6. FITS I/O Interface
---------------------
FITS image type conversion constructors have been added to convert a FITS
image of any type into a specific storage class (#1986).


7. Linear algebra module
------------------------
Add operators for addition and subtraction of scalars to all matrix classes
(#1990).


8. Model module
---------------
The GModelSpectralNodes class now throws an exception if the energy or
intensity of a node is set to a non-positive value (#990).

The GModelSpectralSmoothBrokenPlaw class that implements a smoothly broken
power law spectrum has been added (#1948).

The scale of the composite spatial models can now be fitted by adding the
free_scale="1" attribute to the XML file (#1992).


9. Numerics module
------------------
None


10. Observation module
----------------------
A set() method has been added to GEbounds and GEnergies to allow converting
energy boundaries into an energy container and vice versa. In addition,
conversion constructors have been added (#1977).

The GEbounds::set_lin() and GEbounds::set_log() method now throw exceptions
if the minimum energy is larger than the maximum energy. In addition, the
GEbounds::set_log() method throws an exception if either the minimum or
maximum energy are zero. Furthermore, the methods clear the energy boundaries
if the requested number of intervals is non-zero (#1989). 

The GPhases class has been added to handle phase selections of events (#1996).


11. Optimization module
-----------------------
None


12. Sky module
--------------
The GWcsGLS and GWcsSFL classes have been added to support the GLS and SFL
World Coordinate System projections (#1851).

The GWcs base class now also supports CD keywords instead of CDELT keywords
(#1951).


13. Support module
------------------
A GFilename::type() method has been added that returns the type of the file
based on the file type extension (e.g. ".fits") (#1863).


14. XML module
--------------
None


15. VO module
-------------
None


16. Xspec module
----------------
None


17. Test module
---------------
None


18. Multi-wavelength interface
------------------------------
None


19. Fermi-LAT interface
----------------------
None


20. CTA interface
-----------------
Correct the containment radius computation in GCTAPsf2D (#1876).

The GCTAResponseIrf::rspname() method has been added that returns the name
of the response function (attribute m_rspname).

Do no longer interpret a CTA calibration database as a file path in the
GCTAResponseIrf::read() method (#1969).

Add GCTARoi::contains() method that checks whether an instrument direction
is contained within the region of interest.

Lazy loading of the energy dispersion in GCTAEdisp2D has been implemented by
adding a fetch() method to the class. Now the energy dispersion is only loaded
when needed, for example for function evaluation or Monte Carlo sampling (#1940).

The GCTAEdisp2D::compute_ebounds_src() method now loops over the migration to
enhance the precision in the true energy boundaries that are returned by this
method. In addition, the validity range of the table is now stored in members
of the class, and a non-zero energy dispersion is only returned for valid
elements of the response table.

An GCTAAeff::ebounds() method has been added to the abstract interface for
effective area responses to return the valid energy range of the effective
area (#1989).

The GCTAModelAeffBackground::mc() could get stuck in the rejection loop if the
effective area returned is always zero. A counter has been added that leads to
the exit of the loop in case that 1000 subsequent zero values are returned
(#1988).

A GCTAEventList::append_column() method has been added to allow appending of
FITS columns to an event list. The method checks whether the length of the
FITS column is compatible with the number of events that are present in the
event list (#1991).

Add GCTAEventList::has_phase() and GCTAEventList::has_detxy() getter and setter
methods to manipulate the event list information flags (#1982).

Add GCTAEventList::has_mc_id() and GCTAEventAtom::mc_id() getter and setter methods
to set the Monte Carlo identifier of a given event. This allows to attribute a
Monte Carlo simulated event to a specific model (#1483).

Add GCTAEventList::set_mc_id_names() method to store Monte Carlo metadata into an
event list and to write this information into the FITS header. Furthermore, the
information is read back when loading an event list (#1483).


21. COMPTEL interface
---------------------
None