Commit a4a41902c10b0f650226daf461c773b8c3096e7e

Authored by Jürgen Knödlseder
2 parents 4065b3d9 b1ae56cb

Merge branch 'release' into devel

# Conflicts:
#	ChangeLog
#	NEWS
#	doc/source/reference_manual/cscaldb.rst
Showing 80 changed files with 2155 additions and 1636 deletions
ChangeLog
... ... @@ -7,11 +7,12 @@
7 7 Add csobs2caldb script (#1579)
8 8  
9 9  
10   -2015-11-19 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu>
  10 +2015-12-07 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu>
11 11  
12 12 * Version 1.0.0 released
13 13 ========================
14 14  
  15 + Update end-user documentation
15 16 Implement handling of stacked data in csspec (#1566)
16 17 Resolve Python test problem on El Capitan (#1563)
17 18  
... ...
... ... @@ -2,7 +2,7 @@ New Features and Important Changes in ctools 1.1.0
2 2  
3 3 Author(s) : Juergen Knoedlseder
4 4  
5   -24 November 2015
  5 +7 December 2015
6 6  
7 7  
8 8 1. Introduction
... ...
cscripts/cslightcrv.py
... ... @@ -98,15 +98,15 @@ class cslightcrv(ctools.cscript):
98 98  
99 99 # Create default parfile
100 100 pars = gammalib.GApplicationPars()
101   - pars.append(gammalib.GApplicationPar("inobs","f","a","events.fits","","","Event list, counts cube, or observation definition file"))
102   - pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Source model"))
  101 + pars.append(gammalib.GApplicationPar("inobs","f","a","events.fits","","","Input event list, counts cube, or observation definition XML file"))
  102 + pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Input model XML file"))
103 103 pars.append(gammalib.GApplicationPar("srcname","s","a","Crab","","","Source name"))
104   - pars.append(gammalib.GApplicationPar("outfile","f","a","lightcurve.fits","","","Output file name"))
105   - pars.append(gammalib.GApplicationPar("expcube","f","a","NONE","","","Exposure cube file (only needed for stacked analysis)"))
106   - pars.append(gammalib.GApplicationPar("psfcube","f","a","NONE","","","PSF cube file (only needed for stacked analysis)"))
107   - pars.append(gammalib.GApplicationPar("bkgcube","s","a","NONE","","","Background cube file (only needed for stacked analysis)"))
  104 + pars.append(gammalib.GApplicationPar("expcube","f","a","NONE","","","Input exposure cube file (only needed for stacked analysis)"))
  105 + pars.append(gammalib.GApplicationPar("psfcube","f","a","NONE","","","Input PSF cube file (only needed for stacked analysis)"))
  106 + pars.append(gammalib.GApplicationPar("bkgcube","s","a","NONE","","","Input background cube file (only needed for stacked analysis)"))
108 107 pars.append(gammalib.GApplicationPar("caldb","s","a","prod2","","","Calibration database"))
109   - pars.append(gammalib.GApplicationPar("irf","s","a","South_50h","","","Instrument response function"))
  108 + pars.append(gammalib.GApplicationPar("irf","s","a","South_0.5h","","","Instrument response function"))
  109 + pars.append(gammalib.GApplicationPar("outfile","f","a","lightcurve.fits","","","Output light curve file"))
110 110 pars.append(gammalib.GApplicationPar("tbinalg","s","a","GTI","FILE|LIN|GTI","", "Algorithm for defining time bins"))
111 111 pars.append(gammalib.GApplicationPar("tmin","r","a","51544.5","","days","Lightcurve start time [MJD]"))
112 112 pars.append(gammalib.GApplicationPar("tmax","r","a","51544.6","","days","Lightcurve stop time [MJD]"))
... ...
cscripts/csobsdef.py
... ... @@ -128,8 +128,8 @@ class csobsdef(ctools.cscript):
128 128  
129 129 # Create default parfile
130 130 pars = gammalib.GApplicationPars()
131   - pars.append(gammalib.GApplicationPar("inpnt","f","a","NONE","","","Pointing definition file"))
132   - pars.append(gammalib.GApplicationPar("outobs","f","a","obs.xml","","","Output observation definition file"))
  131 + pars.append(gammalib.GApplicationPar("inpnt","f","a","NONE","","","Input pointing definition file"))
  132 + pars.append(gammalib.GApplicationPar("outobs","f","a","obs.xml","","","Output observation definition XML file"))
133 133 pars.append(gammalib.GApplicationPar("duration","r","a","1800.0","","","Pointing duration (seconds)"))
134 134 pars.append(gammalib.GApplicationPar("caldb","s","h","","","","Calibration database"))
135 135 pars.append(gammalib.GApplicationPar("irf","s","h","","","","Instrument response function"))
... ...
cscripts/cspull.py
... ... @@ -101,13 +101,13 @@ class cspull(ctools.cscript):
101 101  
102 102 # Create default parfile
103 103 pars = gammalib.GApplicationPars()
104   - pars.append(gammalib.GApplicationPar("inobs","f","h","NONE","","","Event list, counts cube, or observation definition file"))
105   - pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Source model"))
106   - pars.append(gammalib.GApplicationPar("outfile","f","a","pull.dat","","","Output file name"))
  104 + pars.append(gammalib.GApplicationPar("inobs","f","h","NONE","","","Input event list, counts cube, or observation definition XML file"))
  105 + pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Input model XML file"))
107 106 pars.append(gammalib.GApplicationPar("caldb","s","a","prod2","","","Calibration database"))
108   - pars.append(gammalib.GApplicationPar("irf","s","a","South_50h","","","Instrument response function"))
109   - pars.append(gammalib.GApplicationPar("deadc","r","h","0.95","0","1","Deadtime correction factor"))
  107 + pars.append(gammalib.GApplicationPar("irf","s","a","South_0.5h","","","Instrument response function"))
110 108 pars.append(gammalib.GApplicationPar("edisp","b","h","no","","","Apply energy dispersion?"))
  109 + pars.append(gammalib.GApplicationPar("deadc","r","h","0.95","0","1","Deadtime correction factor"))
  110 + pars.append(gammalib.GApplicationPar("outfile","f","a","pull.dat","","","Output pull distribution file"))
111 111 pars.append(gammalib.GApplicationPar("profile","b","h","no","","","Use likelihood profile method for errors?"))
112 112 pars.append(gammalib.GApplicationPar("ntrials","i","a","10","","","Number of trials"))
113 113 pars.append(gammalib.GApplicationPar("ra","r","a","83.6331","0","360","RA of pointing (deg)"))
... ...
cscripts/csresmap.py
... ... @@ -103,16 +103,16 @@ class csresmap(ctools.cscript):
103 103  
104 104 # Create default parfile
105 105 pars = gammalib.GApplicationPars()
106   - pars.append(gammalib.GApplicationPar("inobs","f","a","events.fits","","","Event list, counts cube, or observation definition file"))
107   - pars.append(gammalib.GApplicationPar("modcube","f","a","NONE","","","Model cube file (generated with ctmodel)"))
108   - pars.append(gammalib.GApplicationPar("expcube","f","a","NONE","","","Exposure cube file (only needed for stacked analysis)"))
109   - pars.append(gammalib.GApplicationPar("psfcube","f","a","NONE","","","PSF cube file (only needed for stacked analysis)"))
110   - pars.append(gammalib.GApplicationPar("bkgcube","f","a","NONE","","","Background cube file (only needed for stacked analysis)"))
111   - pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Source model"))
112   - pars.append(gammalib.GApplicationPar("outmap","f","a","resmap.fits","","","Output residual map"))
113   - pars.append(gammalib.GApplicationPar("edisp","b","h","no","","","Apply energy dispersion?"))
  106 + pars.append(gammalib.GApplicationPar("inobs","f","a","events.fits","","","Input event list, counts cube, or observation definition XML file"))
  107 + pars.append(gammalib.GApplicationPar("modcube","f","a","NONE","","","Input model cube file (generated with ctmodel)"))
  108 + pars.append(gammalib.GApplicationPar("expcube","f","a","NONE","","","Input exposure cube file (only needed for stacked analysis)"))
  109 + pars.append(gammalib.GApplicationPar("psfcube","f","a","NONE","","","Input PSF cube file (only needed for stacked analysis)"))
  110 + pars.append(gammalib.GApplicationPar("bkgcube","f","a","NONE","","","Input background cube file (only needed for stacked analysis)"))
  111 + pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Input model XML file"))
114 112 pars.append(gammalib.GApplicationPar("caldb","s","a","prod2","","","Calibration database"))
115   - pars.append(gammalib.GApplicationPar("irf","s","a","South_50h","","","Instrument response function"))
  113 + pars.append(gammalib.GApplicationPar("irf","s","a","South_0.5h","","","Instrument response function"))
  114 + pars.append(gammalib.GApplicationPar("edisp","b","h","no","","","Apply energy dispersion?"))
  115 + pars.append(gammalib.GApplicationPar("outmap","f","a","resmap.fits","","","Output residual map file"))
116 116 pars.append(gammalib.GApplicationPar("ebinalg","s","h","LOG","LIN|LOG|FILE","","Binning algorithm"))
117 117 pars.append(gammalib.GApplicationPar("emin","r","h","0.1","","","Lower energy limit (TeV)"))
118 118 pars.append(gammalib.GApplicationPar("emax","r","h","100.0","","","Upper energy limit (TeV)"))
... ...
cscripts/cssens.py
... ... @@ -97,14 +97,14 @@ class cssens(ctools.cscript):
97 97  
98 98 # Create default parfile
99 99 pars = gammalib.GApplicationPars()
100   - pars.append(gammalib.GApplicationPar("inobs","f","h","NONE","","","Event list, counts cube, or observation definition file"))
101   - pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Source model"))
  100 + pars.append(gammalib.GApplicationPar("inobs","f","h","NONE","","","Input event list, counts cube, or observation definition XML file"))
  101 + pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Input model XML file"))
102 102 pars.append(gammalib.GApplicationPar("srcname","s","a","Crab","","","Source name"))
103   - pars.append(gammalib.GApplicationPar("offset","r","h","0.0","","","Source offset angle (deg)"))
104 103 pars.append(gammalib.GApplicationPar("caldb","s","a","prod2","","","Calibration database"))
105   - pars.append(gammalib.GApplicationPar("irf","s","a","South_50h","","","Instrument response function"))
  104 + pars.append(gammalib.GApplicationPar("irf","s","a","South_0.5h","","","Instrument response function"))
106 105 pars.append(gammalib.GApplicationPar("deadc","r","h","0.95","0","1","Deadtime correction factor"))
107   - pars.append(gammalib.GApplicationPar("outfile","f","h","sensitivity.dat","","","Output file name"))
  106 + pars.append(gammalib.GApplicationPar("outfile","f","h","sensitivity.dat","","","Output sensitivity ASCII file"))
  107 + pars.append(gammalib.GApplicationPar("offset","r","h","0.0","","","Source offset angle (deg)"))
108 108 pars.append(gammalib.GApplicationPar("duration","r","a","180000.0","","","Effective exposure time (s)"))
109 109 pars.append(gammalib.GApplicationPar("rad","r","a","5.0","","","Radius of ROI (deg)"))
110 110 pars.append(gammalib.GApplicationPar("edisp","b","h","no","","","Apply energy dispersion?"))
... ...
cscripts/csspec.py
... ... @@ -100,16 +100,16 @@ class csspec(ctools.cscript):
100 100  
101 101 # Create default parfile
102 102 pars = gammalib.GApplicationPars()
103   - pars.append(gammalib.GApplicationPar("inobs","f","a","events.fits","","","Event list, counts cube, or observation definition file"))
104   - pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Source model"))
  103 + pars.append(gammalib.GApplicationPar("inobs","f","a","events.fits","","","Input event list, counts cube, or observation definition XML file"))
  104 + pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Input model XML file"))
105 105 pars.append(gammalib.GApplicationPar("srcname","s","a","Crab","","","Source name"))
106   - pars.append(gammalib.GApplicationPar("outfile","f","a","spectrum.fits","","","Output file name"))
107   - pars.append(gammalib.GApplicationPar("expcube","f","a","NONE","","","Exposure cube file (only needed for stacked analysis)"))
108   - pars.append(gammalib.GApplicationPar("psfcube","f","a","NONE","","","PSF cube file (only needed for stacked analysis)"))
109   - pars.append(gammalib.GApplicationPar("bkgcube","f","a","NONE","","","Background cube file (only needed for stacked analysis)"))
  106 + pars.append(gammalib.GApplicationPar("expcube","f","a","NONE","","","Input exposure cube file (only needed for stacked analysis)"))
  107 + pars.append(gammalib.GApplicationPar("psfcube","f","a","NONE","","","Input PSF cube file (only needed for stacked analysis)"))
  108 + pars.append(gammalib.GApplicationPar("bkgcube","f","a","NONE","","","Input background cube file (only needed for stacked analysis)"))
110 109 pars.append(gammalib.GApplicationPar("caldb","s","a","prod2","","","Calibration database"))
111   - pars.append(gammalib.GApplicationPar("irf","s","a","South_50h","","","Instrument response function"))
  110 + pars.append(gammalib.GApplicationPar("irf","s","a","South_0.5h","","","Instrument response function"))
112 111 pars.append(gammalib.GApplicationPar("edisp","b","h","no","","","Apply energy dispersion?"))
  112 + pars.append(gammalib.GApplicationPar("outfile","f","a","spectrum.fits","","","Output spectrum file"))
113 113 pars.append(gammalib.GApplicationPar("emin","r","a","0.1","","","Lower energy limit for spectral points (TeV)"))
114 114 pars.append(gammalib.GApplicationPar("emax","r","a","100.0","","","Upper energy limit for spectral points (TeV)"))
115 115 pars.append(gammalib.GApplicationPar("enumbins","i","a","20","1","10000","Number of spectral points"))
... ...
cscripts/cstsdist.py
... ... @@ -94,17 +94,17 @@ class cstsdist(ctools.cscript):
94 94  
95 95 # Create default parfile
96 96 pars = gammalib.GApplicationPars()
97   - pars.append(gammalib.GApplicationPar("inobs","f","h","NONE","","","Event list, counts cube, or observation definition file"))
98   - pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Source model"))
  97 + pars.append(gammalib.GApplicationPar("inobs","f","h","NONE","","","Input event list, counts cube, or observation definition XML file"))
  98 + pars.append(gammalib.GApplicationPar("inmodel","f","a","$CTOOLS/share/models/crab.xml","","","Input model XML file"))
99 99 pars.append(gammalib.GApplicationPar("srcname","s","a","Crab","","","Source name"))
100   - pars.append(gammalib.GApplicationPar("outfile","f","a","ts.dat","","","Output file name"))
101   - pars.append(gammalib.GApplicationPar("expcube","s","a","NONE","","","Exposure cube file (only needed for stacked analysis)"))
102   - pars.append(gammalib.GApplicationPar("psfcube","s","a","NONE","","","PSF cube file (only needed for stacked analysis)"))
103   - pars.append(gammalib.GApplicationPar("bkgcube","s","a","NONE","","","Background cube file (only needed for stacked analysis)"))
  100 + pars.append(gammalib.GApplicationPar("expcube","s","a","NONE","","","Input exposure cube file (only needed for stacked analysis)"))
  101 + pars.append(gammalib.GApplicationPar("psfcube","s","a","NONE","","","Input PSF cube file (only needed for stacked analysis)"))
  102 + pars.append(gammalib.GApplicationPar("bkgcube","s","a","NONE","","","Input background cube file (only needed for stacked analysis)"))
104 103 pars.append(gammalib.GApplicationPar("caldb","s","a","prod2","","","Calibration database"))
105   - pars.append(gammalib.GApplicationPar("irf","s","a","South_50h","","","Instrument response function"))
  104 + pars.append(gammalib.GApplicationPar("irf","s","a","South_0.5h","","","Instrument response function"))
106 105 pars.append(gammalib.GApplicationPar("deadc","r","h","0.95","","","Deadtime correction factor"))
107 106 pars.append(gammalib.GApplicationPar("edisp","b","h","no","","","Apply energy dispersion?"))
  107 + pars.append(gammalib.GApplicationPar("outfile","f","a","ts.dat","","","Output Test Statistics distribution file"))
108 108 pars.append(gammalib.GApplicationPar("ntrials","i","a","10","","","Number of trials"))
109 109 pars.append(gammalib.GApplicationPar("ra","r","a","83.63","0","360","RA of pointing (deg)"))
110 110 pars.append(gammalib.GApplicationPar("dec","r","a","22.01","-90","90","Dec of pointing (deg)"))
... ...
doc/source/develop.rst
... ... @@ -8,12 +8,12 @@ to the development.
8 8 Contributions can come in any areas: writing C++ code, contributing Python
9 9 scripts, writing documentation, testing code, etc.
10 10  
11   -The ctools development is managed by a development platform that is
12   -accessible at `<https://cta-redmine.irap.omp.eu/projects/ctools/>`_.
  11 +The ctools software development is managed by a
  12 +`Redmine <https://cta-redmine.irap.omp.eu/projects/ctools/>`_ platform.
13 13 Please check out the
14 14 `Wiki <https://cta-redmine.irap.omp.eu/projects/ctools/wiki/Contributing_to_ctools>`_
15   -on that platform that contains information on how to contribute to the
16   -ctools development.
  15 +on that platform to learn how you can contribute to the ctools software
  16 +development.
17 17  
18 18 You may also want to get in the ctools information flow by subscribing to
19 19 the ctools@irap.omp.eu mailing list.
... ... @@ -24,5 +24,5 @@ to allow newcomers to get familiar with the code base and the coding
24 24 practices.
25 25 You are highly invited to join one of the next coding sprints.
26 26  
27   -You can also follow `@gammalib <https://twitter.com/gammalib>`_ on
28   -twitter to get informed about new release of GammaLib and ctools.
29 27 \ No newline at end of file
  28 +You can also follow `@ctools_software <https://twitter.com/ctools_software>`_ on
  29 +twitter to get informed about new ctools releases.
30 30 \ No newline at end of file
... ...
doc/source/download.rst
... ... @@ -13,7 +13,7 @@ bugs.
13 13 Releases
14 14 --------
15 15  
16   -The latest ctools release is ``ctools-0.10.0`` (1 November 2015).
  16 +The latest ctools release is ``ctools-1.0.0`` (6 December 2015).
17 17  
18 18 Below a table of ctools releases. Please note that at this stage of the
19 19 project there is a strict link between the ctools and gammalib versions.
... ... @@ -28,6 +28,9 @@ gammalib.
28 28 * - `ctools <http://cta.irap.omp.eu/ctools/releases/ctools/ChangeLog>`_
29 29 - `gammalib <http://cta.irap.omp.eu/ctools/releases/gammalib/ChangeLog>`_
30 30 - Mac OS X package
  31 + * - `1.0.0 <http://cta.irap.omp.eu/ctools/releases/ctools/ctools-1.0.0.tar.gz>`_
  32 + - `1.0.0 <http://cta.irap.omp.eu/ctools/releases/gammalib/gammalib-1.0.0.tar.gz>`_
  33 + - `ctools-1.0.0-macosx10.3.dmg <http://cta.irap.omp.eu/ctools/releases/ctools/ctools-1.0.0-macosx10.3.dmg>`_
31 34 * - `0.10.0 <http://cta.irap.omp.eu/ctools/releases/ctools/ctools-0.10.0.tar.gz>`_
32 35 - `0.11.0 <http://cta.irap.omp.eu/ctools/releases/gammalib/gammalib-0.11.0.tar.gz>`_
33 36 - `ctools-0.10.0-macosx10.3.dmg <http://cta.irap.omp.eu/ctools/releases/ctools/ctools-0.10.0-macosx10.3.dmg>`_
... ...
doc/source/help.rst
... ... @@ -3,8 +3,44 @@
3 3 Getting Help
4 4 ============
5 5  
6   -Any questions, bug reports, or suggested enhancements related to
7   -ctools should be submitted via the
8   -`issue tracker <https://cta-redmine.irap.omp.eu/projects/ctools/issues/new>`_
9   -or the
10   -`mailing list <mailto:ctools@irap.omp.eu>`_.
11 6 \ No newline at end of file
  7 +If you need help you should first check the
  8 +:ref:`Frequently Asked Questions <faq>` and the list of
  9 +:ref:`Known Issues <issues>`.
  10 +In case that you do not find an answer to your question you may post your
  11 +question on the ctools@irap.omp.eu mailing list.
  12 +To subscribe to this list you simply need to send an e-mail to
  13 +ctools-subscribe@irap.omp.eu (content is irrelevant).
  14 +
  15 +You can also use the `Redmine <https://cta-redmine.irap.omp.eu/projects/ctools>`_
  16 +system that we use for the ctools software development management to ask for
  17 +support, report a bug, or request a new feature. To use the system you
  18 +will first need to
  19 +`register <https://cta-redmine.irap.omp.eu/account/register>`_.
  20 +
  21 +Once registered, you can sign-in and ask for support by creating a
  22 +`support issue <https://cta-redmine.irap.omp.eu/projects/ctools/issues/new>`_.
  23 +Specify ``Support`` as Tracker, choose a short and meaningful subject,
  24 +and add an exhaustive description of your request.
  25 +
  26 +If you find a bug you should first check the
  27 +`list of bugs <https://cta-redmine.irap.omp.eu/projects/ctools/issues?utf8=?&set_filter=1&f%5B%5D=status_id&op%5Bstatus_id%5D=*&f%5B%5D=tracker_id&op%5Btracker_id%5D=%3D&v%5Btracker_id%5D%5B%5D=1&f%5B%5D=&c%5B%5D=tracker&c%5B%5D=status&c%5B%5D=priority&c%5B%5D=subject&c%5B%5D=assigned_to&c%5B%5D=updated_on&c%5B%5D=fixed_version&c%5B%5D=done_ratio&group_by=>`_
  28 +to see whether your bug is already known. If the bug is known, you may edit
  29 +the issue and add some information (e.g. a log file, screen shot, etc.).
  30 +If the bug is not yet known, please create a
  31 +`bug issue <https://cta-redmine.irap.omp.eu/projects/ctools/issues/new>`_.
  32 +Specify ``Bug`` as Tracker, provide a short and meaningful subject, and add
  33 +an exhaustive description of the bug. Include the ctools software version,
  34 +your operating system, and the conditions under which the bug occurred. Ideally
  35 +you should provide all files and the command sequence (or a script) that
  36 +will allow us to reproduce the bug.
  37 +
  38 +If you would like to suggest some enhancements to ctools you should create
  39 +a
  40 +`feature issue <https://cta-redmine.irap.omp.eu/projects/ctools/issues/new>`_.
  41 +Specify ``Feature`` as Tracker, choose a short and meaningful subject,
  42 +and add an exhaustive description of your feature request.
  43 +Also explain the motivation for your request and provide some hint on how
  44 +urgently you need the new feature.
  45 +
  46 +You may click on ``Watch`` in the top-right corner of the issue page to make sure
  47 +that you will receive an e-mail notification when the issue is updated.
12 48 \ No newline at end of file
... ...
doc/source/reference_manual/cscaldb.rst
1   -.. _cscaldb: cscaldb ======= Dumps all available instrument response functions into log file. Synopsis -------- This scripts dumps all instrument response functions that are available in the calibration database into the log file. If you want the information on the screen, add the ``debug=yes`` parameter. General parameters ------------------ None Standard parameters ------------------- ``(chatter = 2) [integer]`` Verbosity of the executable: chatter = 0: no information will be logged chatter = 1: only errors will be logged chatter = 2: errors and actions will be logged chatter = 3: report about the task execution chatter = 4: detailed report about the task execution ``(clobber = yes) [boolean]`` Specifies whether an existing output counts cube should be overwritten. ``(debug = no) [boolean]`` Enables debug mode. In debug mode the executable will dump any log file output to the console. ``(mode = ql) [string]`` Mode of automatic parameters (default is "ql", i.e. "query and learn"). Related tools ------------- None
2 1 \ No newline at end of file
  2 +.. _cscaldb:
  3 +
  4 +cscaldb
  5 +=======
  6 +
  7 +Dumps all available instrument response functions into log file.
  8 +
  9 +
  10 +Synopsis
  11 +--------
  12 +
  13 +This scripts dumps all instrument response functions that are available
  14 +in the calibration database into the log file. If you want the information
  15 +on the screen, add the ``debug=yes`` parameter.
  16 +
  17 +
  18 +General parameters
  19 +------------------
  20 +
  21 +None
  22 +
  23 +
  24 +Standard parameters
  25 +-------------------
  26 +
  27 +``(chatter = 2) [integer]``
  28 + Verbosity of the executable:
  29 + chatter = 0: no information will be logged
  30 +
  31 + chatter = 1: only errors will be logged
  32 +
  33 + chatter = 2: errors and actions will be logged
  34 +
  35 + chatter = 3: report about the task execution
  36 +
  37 + chatter = 4: detailed report about the task execution
  38 +
  39 +``(clobber = yes) [boolean]``
  40 + Specifies whether an existing output counts cube should be overwritten.
  41 +
  42 +``(debug = no) [boolean]``
  43 + Enables debug mode. In debug mode the executable will dump any log file output to the console.
  44 +
  45 +``(mode = ql) [string]``
  46 + Mode of automatic parameters (default is "ql", i.e. "query and learn").
  47 +
  48 +
  49 +Related tools of scripts
  50 +------------------------
  51 +
  52 +None
... ...
doc/source/reference_manual/csobsdef.rst
... ... @@ -46,8 +46,8 @@ Here some usage examples:
46 46 Creates observation definition file with a ROI radius of 5 deg.
47 47  
48 48 ``csobsdef caldb=prod2 irf=South_50h``
49   - Creates observation definition file using the "South_50h" IRF in the
50   - "prod2" calibration database.
  49 + Creates observation definition file using the ``South_50h`` IRF in the
  50 + ``prod2`` calibration database.
51 51  
52 52  
53 53 General parameters
... ...
doc/source/reference_manual/ctbin.rst
... ... @@ -3,18 +3,27 @@
3 3 ctbin
4 4 =====
5 5  
6   -Generate a counts cube for binned maximum likelihood analysis.
  6 +Generate counts cube from event list(s).
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -This tool computes the counts cube for use in a binned maximum likelihood
13   -analysis. The counts cubes are 3-dimensional data cubes spanned by Right
14   -Ascension or Galactic longitude, Declination or Galactic latitude, and energy.
15   -The energy binning may be either linear, logarithmic, or custom defined.
16   -If an observation definition XML file containing several observations is
17   -provided on input, the tool will stack all data into a single counts cube.
  12 +This tool creates a counts cube and fills it with events. A counts cube is
  13 +a 3-dimensional data cube spanned by Right Ascension or Galactic longitude,
  14 +Declination or Galactic latitude, and energy. The energy binning may be either
  15 +linear, logarithmic, or custom defined using an input file. The events are
  16 +either taken from a single event list file or from the event lists that are
  17 +specified in an observation definition file. In case that multiple event
  18 +lists are given in an observation definition file, the tool will loop over
  19 +all event lists and fill all events into a single counts cube.
  20 +
  21 +ctbin generates a counts cube FITS file comprising three extensions. The
  22 +primary extension contains a 3-dimensional image that contains the counts
  23 +cube values. The next extension named ``EBOUNDS`` contains a binary table
  24 +that defines the energy boundaries of the counts cube. The last extension
  25 +named ``GTI`` contains a binary table that defines the Good Time Intervals
  26 +of all event lists that have been filled into the counts cube.
18 27  
19 28  
20 29 General parameters
... ... @@ -94,7 +103,9 @@ Standard parameters
94 103 Name of log file.
95 104  
96 105  
97   -Related tools
98   --------------
  106 +Related tools or scripts
  107 +------------------------
99 108  
100   -None
  109 +:doc:`ctexpcube`
  110 +:doc:`ctpsfcube`
  111 +:doc:`ctbkgcube`
... ...
doc/source/reference_manual/ctbkgcube.rst
... ... @@ -3,36 +3,70 @@
3 3 ctbkgcube
4 4 =========
5 5  
6   -Generate a background cube for binned maximum likelihood analysis.
  6 +Generate background cube for a counts cube.
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -This tool generates a background cube for use in a binned maximum
13   -likelihood analysis.
  12 +This tool generates a background cube for a counts cube based on an input
  13 +model. A background cube is a 3-dimensional cube spanned by Right Ascension
  14 +or Galactic longitude, Declination or Galactic latitude, and energy. The
  15 +energy binning may be either linear, logarithmic, or custom defined using an
  16 +input file. The input model is used to predict the expected number of
  17 +background counts in each background cube bin.
  18 +
  19 +ctbkgcube requires on input the event list or observation definition file
  20 +that has been used in the generation of the counts cube using :doc:`ctbin`.
  21 +
  22 +To assure consistency between an existing counts cube and the
  23 +corresponding background cube, it is recommended to specify the counts
  24 +cube as ``incube`` parameter. This will instruct ctbkgcube to extract the
  25 +background cube definition (such as sky coordinates and projection, number
  26 +of pixels, pixel scale, energy binning) from the counts cube.
  27 +
  28 +ctbkgcube generates a background cube FITS file comprising two extensions.
  29 +The primary extension contains a 3-dimensional image that contains the
  30 +background cube values. The next extension named ``EBOUNDS`` contains a
  31 +binary table that defines the energy boundaries of the background cube.
  32 +
  33 +ctbkgcube generates also an output model XML file that can serve as input
  34 +for a maximum likelihood analysis. The output model XML file is a copy of
  35 +the input model XML file where the input background model has been replaced
  36 +by a background model of type ``CTACubeBackground``. The ``CTACubeBackground``
  37 +background model instructs any tool analysing binned data to extract
  38 +background information from a background cube. The ``CTACubeBackground``
  39 +model has a spectral component that can be adjusted in a maximum
  40 +likelihood fit to accomodate for uncertainties in the prediction of the
  41 +energy dependence of the background rate. ctbkgcube will use a power law
  42 +as spectral component, but you can replace this by any component of your
  43 +choice.
  44 +
14 45  
15 46  
16 47 General parameters
17 48 ------------------
18 49  
19 50 ``inobs [file]``
20   - Input event list, cube or observation definition XML file.
  51 + Input event list or observation definition XML file.
21 52  
22 53 ``inmodel [file]``
23   - Input (background) model XML file.
  54 + Input model XML file.
24 55  
25 56 ``incube [file]``
26   - Counts cube for background cube definition.
27   -
28   -``outcube [file]``
29   - Output background cube file.
  57 + Input counts cube file to extract background cube definition.
30 58  
31 59 ``caldb [string]``
32 60 Calibration database.
33 61  
34 62 ``irf [string]``
35   - Response function.
  63 + Instrument response function.
  64 +
  65 +``outcube [file]``
  66 + Output background cube file.
  67 +
  68 +``outmodel [file]``
  69 + Output model XML file.
36 70  
37 71 ``ebinalg <FILE|LIN|LOG> [string]``
38 72 Algorithm for defining energy bins.
... ... @@ -102,7 +136,7 @@ Standard parameters
102 136 Name of log file.
103 137  
104 138  
105   -Related tools
106   --------------
  139 +Related tools or scripts
  140 +------------------------
107 141  
108   -None
  142 +:doc:`ctbin`
... ...
doc/source/reference_manual/ctbutterfly.rst
... ... @@ -9,16 +9,31 @@ Computes butterfly diagram for a power law model.
9 9 Synopsis
10 10 --------
11 11  
12   -Calculates the confidence band of a power law model, taking into account the
13   -covariance matrix resulting from a maximum likelihood fit. The tool derives
14   -the envelope of all power law models whose prefactor and spectral index fall
15   -within the error ellipse that is associated with the covariance of the
16   -parameters. It outputs an ASCII file in column separated value (CSV) format
17   -containing the results. Each row in the result file corresponds to an energy.
18   -The columns give the energy in MeV, the fitted intensity in ph/cm2/s/MeV,
19   -and the minimum and maximum intensity that envelope the power law model
20   -with a given confidence (by default a confidence level of 68% is used, but
21   -the level can be adjusted using the ``confidence`` parameter).
  12 +This tool calculates a butterfly diagram for a specific source with power law
  13 +spectral model. The butterfly diagram is the envelope of all power law models
  14 +that are within a given confidence limit compatible with the data. By default
  15 +a confidence level of 68% is used, but the level can be adjusted using the
  16 +hidden ``confidence`` parameter. ctbutterfly computes this envelope by
  17 +evaluating for each energy the minimum and maximum intensity of all power law
  18 +models that fall within the error ellipse of the prefactor and index parameters.
  19 +The error ellipse is derived from the covariance matrix of a maximum likelihood
  20 +fit.
  21 +
  22 +ctbutterfly assumes that the input model (parameter ``inmodel``) has been
  23 +adjusted using :doc:`ctlike` to the data, but if this is not the case you
  24 +can request a maximum likelihood fit by setting the hidden parameter ``fit=yes``.
  25 +
  26 +ctbutterfly writes the butterfly diagram into an ASCII file with 4 columns
  27 +separated by a whitespace. Each row in the result file corresponds to a specific
  28 +energy. The meaning of the columns are:
  29 +
  30 +* Energy in MeV
  31 +* Fitted intensity for that energy in ph/cm2/s/MeV
  32 +* Minimum intensity for that energy in ph/cm2/s/MeV
  33 +* Maximum intensity for that energy in ph/cm2/s/MeV
  34 +
  35 +The butterfly diagram can be displayed using the ``show_butterfly.py`` script
  36 +in the example folder.
22 37  
23 38  
24 39 General parameters
... ... @@ -28,19 +43,19 @@ General parameters
28 43 Input event list, counts cube or observation definition XML file.
29 44  
30 45 ``inmodel [file]``
31   - Model XML file containing the source and background definitions.
  46 + Input model XML file.
32 47  
33 48 ``srcname [string]``
34   - Name of model component for which butterfly should be computed.
  49 + Name of source model for which the butterfly diagram should be computed.
35 50  
36 51 ``expcube [file]``
37   - Exposure cube file (only needed for stacked analysis).
  52 + Input exposure cube file (only needed for stacked analysis).
38 53  
39 54 ``psfcube [file]``
40   - PSF cube file (only needed for stacked analysis).
  55 + Input PSF cube file (only needed for stacked analysis).
41 56  
42 57 ``bkgcube [file]``
43   - Background cube file (only needed for stacked analysis).
  58 + Input background cube file (only needed for stacked analysis).
44 59  
45 60 ``caldb [string]``
46 61 Calibration database.
... ... @@ -54,8 +69,9 @@ General parameters
54 69 ``outfile [file]``
55 70 Output butterfly ASCII file name.
56 71  
57   -``(refit = no) [boolean]``
58   - Performs refitting of solution ignoring any provided covariance matrix.
  72 +``(fit = no) [boolean]``
  73 + Performs maximum likelihood fitting of input model ignoring any provided
  74 + covariance matrix.
59 75  
60 76 ``(confidence = 0.68) [real]``
61 77 Confidence level for error computation.
... ... @@ -107,8 +123,9 @@ Standard parameters
107 123 Name of log file.
108 124  
109 125  
110   -Related tools
111   --------------
  126 +Related tools or scripts
  127 +------------------------
112 128  
  129 +:doc:`ctlike`
113 130 :ref:`ctulimit`
114 131 :ref:`cterror`
... ...
doc/source/reference_manual/ctcubemask.rst
... ... @@ -3,14 +3,32 @@
3 3 ctcubemask
4 4 ==========
5 5  
6   -Filter a counts cube.
  6 +Mask out bins of a counts cube.
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12 12 This tool masks out specific regions from a counts cube by setting the
13   -corresponding pixels to negative values.
  13 +corresponding bin values to -1. Bins with negative values will be ignored
  14 +in a maximum likelihood analysis. A mask is applied spatially and spectrally.
  15 +
  16 +ctcubemask applies a spatial mask that is comprised of a circular selection
  17 +region and a list of circular exclusion regions. The circular selection region
  18 +is specified by the sky direction of the centre and the radius of the circle.
  19 +The circular exclusion regions are specified by an ASCII file in ds9 format.
  20 +The ASCII file contains one row per exclusion region, given in the format
  21 +
  22 +``circle(83.63, 21.5, 0.4)``
  23 +
  24 +where ``83.63`` and ``21.5`` are the Right Ascension and Declination of
  25 +the centre and ``0.4`` is the radius (in degrees) of the exclusion circle.
  26 +
  27 +ctcubemask also selects only counts cube energy layers that are fully comprised
  28 +in the energy interval specified by the ``emin`` and ``emax`` parameters.
  29 +
  30 +ctcubemask generates a counts cube FITS file that is a copy of the input
  31 +counts cube and for which all masked bins have been set to -1.
14 32  
15 33  
16 34 General parameters
... ... @@ -19,9 +37,6 @@ General parameters
19 37 ``inobs [file]``
20 38 Input counts cube or observation definition XML file.
21 39  
22   -``regfile [file]``
23   - Exclusion region file in ds9 format.
24   -
25 40 ``outcube [file]``
26 41 Output counts cube or observation definition XML file.
27 42  
... ... @@ -41,6 +56,9 @@ General parameters
41 56 ``rad [real]``
42 57 Radius of circular selection region (in degrees).
43 58  
  59 +``regfile [file]``
  60 + Input exclusion region file in ds9 format.
  61 +
44 62 ``emin [real]``
45 63 Lower energy limit (in TeV).
46 64  
... ... @@ -72,11 +90,11 @@ Standard parameters
72 90 ``(mode = ql) [string]``
73 91 Mode of automatic parameters (default is "ql", i.e. "query and learn").
74 92  
75   -``(logfile = ctexpcube.log) [string]``
  93 +``(logfile = ctcubemask.log) [string]``
76 94 Name of log file.
77 95  
78 96  
79   -Related tools
80   --------------
  97 +Related tools or scripts
  98 +------------------------
81 99  
82   -None
  100 +:doc:`ctbin`
... ...
doc/source/reference_manual/cterror.rst
... ... @@ -3,15 +3,26 @@
3 3 cterror
4 4 =======
5 5  
6   -Computes parameter errors for a specific sky model component using
7   -a likelihood profile method.
  6 +Computes parameter errors for a source model from the likelihood profiles.
8 7  
9 8  
10 9 Synopsis
11 10 --------
12 11  
13   -This tool computes the parameter errors for a specific sky model using
14   -a likelihood profile method.
  12 +This tool computes the parameter errors for a specific source model using
  13 +the likelihood profiles. Starting from the maximum likelihood model parameters,
  14 +the tool finds the minimum and maximum model parameters that lead to a decrease
  15 +of the likelihood that corresponds to a given confidence level. By default a
  16 +confidence level of 68% is used, but this level can be adjusted using the hidden
  17 +``confidence`` parameter.
  18 +
  19 +cterror generates an output model XML file that contains the values of the
  20 +best fitting model parameters. For all free parameters, an ``error`` attribute
  21 +is added that provides the statistical uncertainty in the parameter estimate
  22 +as obtained from the likelihood profile. While cterror computes asymmetrical
  23 +errors, which are written into the log file, the XML file will contain the
  24 +mean error that is obtained by computing the mean of the negative and the
  25 +positive parameter errors.
15 26  
16 27  
17 28 General parameters
... ... @@ -21,22 +32,19 @@ General parameters
21 32 Input event list, counts cube or observation definition XML file.
22 33  
23 34 ``inmodel [file]``
24   - Model XML file containing the source and background definitions.
25   -
26   -``outmodel [file]``
27   - Model XML file with updated error information.
  35 + Input model XML file.
28 36  
29 37 ``srcname [string]``
30   - Name of model component for which upper limit should be computed.
  38 + Name of source model for which the parameter errors should be computed.
31 39  
32 40 ``expcube [file]``
33   - Exposure cube file (only needed for stacked analysis).
  41 + Input exposure cube file (only needed for stacked analysis).
34 42  
35 43 ``psfcube [file]``
36   - PSF cube file (only needed for stacked analysis).
  44 + Input PSF cube file (only needed for stacked analysis).
37 45  
38 46 ``bkgcube [file]``
39   - Background cube file (only needed for stacked analysis).
  47 + Input background cube file (only needed for stacked analysis).
40 48  
41 49 ``caldb [string]``
42 50 Calibration database.
... ... @@ -47,6 +55,9 @@ General parameters
47 55 ``(edisp = no) [boolean]``
48 56 Applies energy dispersion to response computation.
49 57  
  58 +``outmodel [file]``
  59 + Output model XML file with updated error information.
  60 +
50 61 ``(confidence = 0.68) [real]``
51 62 Confidence level for error computation.
52 63  
... ... @@ -86,8 +97,9 @@ Standard parameters
86 97 Name of log file.
87 98  
88 99  
89   -Related tools
90   --------------
  100 +Related tools or scripts
  101 +------------------------
91 102  
  103 +:ref:`ctlike`
92 104 :ref:`ctulimit`
93 105 :ref:`ctbutterfly`
... ...
doc/source/reference_manual/ctexpcube.rst
... ... @@ -3,14 +3,39 @@
3 3 ctexpcube
4 4 =========
5 5  
6   -Generate an exposure cube for binned maximum likelihood analysis.
  6 +Generate exposure cube for a counts cube.
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -This tool generates an exposure cube for use in a binned maximum likelihood
13   -analysis.
  12 +This tool generates an exposure cube for a counts cube. An exposure cube is
  13 +a 3-dimensional cube spanned by Right Ascension or Galactic longitude,
  14 +Declination or Galactic latitude, and energy, that gives the exposure
  15 +as function of true sky direction and energy. The energy binning of the cube
  16 +may be either linear, logarithmic, or custom defined using an input file.
  17 +
  18 +ctexpcube requires on input the event list or observation definition file
  19 +that has been used in the generation of the counts cube using :doc:`ctbin`.
  20 +
  21 +For the user's convenience, the counts cube can be specified as ``incube``
  22 +parameter which will instruct ctexpcube to extract the exposure cube
  23 +definition (such as sky coordinates and projection, number of pixels, pixel
  24 +scale, energy binning) from the counts cube. Note, however, that the exposure
  25 +cube is defined in true sky coordinates and energy while the counts cube is
  26 +defined in measured sky coordinates and energy. Consequently, the sky area
  27 +and energy range covered by the exposure cube should be slightly larger than
  28 +that of the counts cube to accomodate for spill over of events due to the
  29 +point spread function and energy dispersion. By computing the exposure map
  30 +on the same grid as the counts cube, the spill over of events from sources at
  31 +the edge of cube will not be handled correctly.
  32 +
  33 +ctexpcube generates an exposure cube FITS file comprising three extensions.
  34 +The primary extension contains a 3-dimensional image that contains the
  35 +exposure values. The next extension named ``EBOUNDS`` contains a binary table
  36 +that defines the energy boundaries of the exposure cube. The last extension
  37 +named ``GTI`` contains a binary table that defines the Good Time Intervals
  38 +of the exposure cube.
14 39  
15 40  
16 41 General parameters
... ... @@ -20,20 +45,20 @@ General parameters
20 45 Input event list or observation definition XML file.
21 46  
22 47 ``incube [file]``
23   - Counts cube for PSF cube definition.
24   -
25   -``outcube [file]``
26   - Output exposure cube file.
  48 + Input counts cube file to extract exposure cube definition.
27 49  
28 50 ``caldb [string]``
29 51 Calibration database.
30 52  
31 53 ``irf [string]``
32   - Response function.
  54 + Instrument response function.
33 55  
34 56 ``(edisp = no) [boolean]``
35 57 Apply energy dispersion for response computation?
36 58  
  59 +``outcube [file]``
  60 + Output exposure cube file.
  61 +
37 62 ``ebinalg <FILE|LIN|LOG> [string]``
38 63 Algorithm for defining energy bins.
39 64  
... ... @@ -102,7 +127,7 @@ Standard parameters
102 127 Name of log file.
103 128  
104 129  
105   -Related tools
106   --------------
  130 +Related tools or scripts
  131 +------------------------
107 132  
108   -None
  133 +:doc:`ctbin`
... ...
doc/source/reference_manual/ctlike.rst
... ... @@ -3,26 +3,54 @@
3 3 ctlike
4 4 ======
5 5  
6   -Performs binned and unbinned maximum likelihood analysis of CTA data.
  6 +Perform maximum likelihood model fitting.
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -Determines the flux, spectral index, position or extent of gamma-ray
13   -sources using maximum likelihood model fitting of CTA data. The analysis
14   -can be done in a binned or an unbinned formulation of the log-likelihood
15   -function. For binned analysis, a counts cube produced by :doc:`ctbin` is
16   -required. If several observations have been stacked into a single counts
17   -cube, an exposure cube, a PSF cube and a background cube have to be
18   -provided. For a single observation it is sufficient to specify the
19   -instrument response function. For unbinned analysis, an event list
20   -processed by :doc:`ctselect` is required. Based on files specified on
21   -input, ctlike automatically selects between binned or unbinned analysis.
22   -The tool can also be applied to lists of observations, specified in form
23   -of an observation definition file in XML format. Events of each observation
24   -are kept separate, and are associated to their appropriate instrument
25   -response function.
  12 +This tool performs a maximum likelihood fitting of a model to unbinned or
  13 +binned data. All model parameters marked with the attribute ``free="1"``
  14 +in the input model XML file will be adjusted to the value that maximises
  15 +the probability that the observed data have been drawn from the model.
  16 +The tool can mix the analysis of unbinned and binned data, and is also able
  17 +to perform a joint maximum likelihood analysis of data collected in
  18 +separate observations or with different instruments.
  19 +
  20 +ctlike will automatically switch between unbinned, binned and joint analysis
  21 +on basis of the file provided on input (parameter ``inobs``). Providing an
  22 +event list will lead to an unbinned analysis while providing a counts cube
  23 +will lead to a binned analysis. If several observations have been stacked
  24 +into a single counts cube, an exposure cube, a point spread function cube and
  25 +a background cube need also to be provided. ctlike will automatically prompt
  26 +for these parameters in case that a counts cube is given. Answering ``NONE``
  27 +will ignore the exposure cube, point spread function cube and background cube
  28 +and handle the data as a single observation using the specified instrument
  29 +response function (parameters ``caldb`` and ``irf``).
  30 +
  31 +Multiple observations, including data collected with different instruments,
  32 +can be handled by specifying an observation definition file on input. Each of
  33 +the observations will be kept separatly and associated with its appropriate
  34 +instrument response functions, as opposed to a stacked analysis where average
  35 +response functions, computed using :doc:`ctexpcube`, :doc:`ctpsfcube` and :doc:`ctbkgcube`,
  36 +are used. If an observation definition file is provided, ctlike will use the
  37 +joint likelihood of all the observations for parameter optimisation.
  38 +
  39 +By default, ctlike will use the Poisson statistics for likelihood computation,
  40 +but for binned analysis also Gaussian statistics can be specified (parameter
  41 +``stat``). Optionally, a refit can be done after an initial fit (parameter ``refit``),
  42 +but normally this is not needed. For all model components that have the
  43 +``tscalc="1"`` attribute set, ctlike will also compute the Test Statistics
  44 +value that is a measure of the source significance. Optionally, the spatial
  45 +model parameters can be kept fixed during that computation (parameter
  46 +``fix_spat_for_ts``).
  47 +
  48 +ctlike generates an output model XML file that contains the values of the
  49 +best fitting model parameters. For all free parameters, an ``error`` attribute
  50 +is added that provides the statistical uncertainty in the parameter estimate.
  51 +If computation of the Test Statistics has been requested for a model component,
  52 +a ``ts`` attribute providing the Test Statistics value is added. The output
  53 +model can be used as an input model for other ctools.
26 54  
27 55  
28 56 General parameters
... ... @@ -32,16 +60,16 @@ General parameters
32 60 Input event list, counts cube or observation definition XML file.
33 61  
34 62 ``inmodel [string]``
35   - Source model input XML file.
  63 + Input model XML file.
36 64  
37 65 ``expcube [file]``
38   - Exposure cube file (only needed for stacked analysis).
  66 + Input exposure cube file (only needed for stacked analysis).
39 67  
40 68 ``psfcube [file]``
41   - PSF cube file (only needed for stacked analysis).
  69 + Input PSF cube file (only needed for stacked analysis).
42 70  
43 71 ``bkgcube [file]``
44   - Background cube file (only needed for stacked analysis).
  72 + Input background cube file (only needed for stacked analysis).
45 73  
46 74 ``caldb [string]``
47 75 Calibration database.
... ... @@ -49,16 +77,16 @@ General parameters
49 77 ``irf [string]``
50 78 Instrument response function.
51 79  
  80 +``(edisp = no) [boolean]``
  81 + Applies energy dispersion to response computation.
  82 +
52 83 ``outmodel [string]``
53   - Source model result XML file with values and uncertainties updated by
  84 + Output model XML file with values and uncertainties updated by
54 85 the maximum likelihood fit.
55 86  
56 87 ``(stat = POISSON) [string]``
57 88 Fitting statistics (POISSON or GAUSSIAN; only affects binned analysis).
58 89  
59   -``(edisp = no) [boolean]``
60   - Applies energy dispersion to response computation.
61   -
62 90 ``(refit = no) [boolean]``
63 91 Perform refitting of solution after initial fit.
64 92  
... ... @@ -95,7 +123,7 @@ Standard parameters
95 123 Name of log file.
96 124  
97 125  
98   -Related tools
99   --------------
  126 +Related tools or scripts
  127 +------------------------
100 128  
101 129 None
... ...
doc/source/reference_manual/ctmodel.rst
... ... @@ -3,48 +3,67 @@
3 3 ctmodel
4 4 =======
5 5  
6   -Computes model counts cube.
  6 +Generate model cube.
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -This tool computes a model counts cube based on an XML model. The counts
13   -cube is a 3-dimensional data cube spanned by Right Ascension or Galactic
14   -longitude, Declination or Galactic latitude, and energy.
  12 +This tool generates a model cube based on an input model. A model cube is
  13 +a 3-dimensional cube providing the number of predicted counts for a model as
  14 +function of Right Ascension or Galactic longitude, Declination or Galactic
  15 +latitude, and energy. The energy binning may be either linear, logarithmic,
  16 +or custom defined using an input file.
  17 +
  18 +ctmodel requires on input either a counts cube, an event list or an observation
  19 +definition file.
  20 +
  21 +If a counts cube is provided, ctmodel will use the definition of this cube
  22 +(such as sky coordinates and projection, number of pixels, pixel scale,
  23 +energy binning) to compute a model cube. In case that the counts cube combines
  24 +multiple observations (i.e. for a so-called "stacked cube"), an exposure cube,
  25 +a point spread function cube and a background cube have to be provided
  26 +(otherwise you may just enter ``NONE`` when the names of these files are
  27 +queried).
  28 +
  29 +If an event list is provided, ctmodel will query for a counts cube to
  30 +extract the model cube definition (parameter ``incube``). If no counts cube
  31 +is provided (``incube=NONE``), ctmodel tools will query for cube definition
  32 +parameters.
  33 +
  34 +If an observation definition file is provided, ctmodel will query for a counts
  35 +cube to extract the model cube definition, unless the observation definition
  36 +file contains a single binned observation (in that case, the counts cube of
  37 +that observation will be used to extract the model cube definition).
  38 +
  39 +ctmodel generates a model cube FITS file comprising three extensions. The
  40 +primary extension contains a 3-dimensional image that contains the model
  41 +cube values. The next extension named ``EBOUNDS`` contains a binary table
  42 +that defines the energy boundaries of the background cube. The last extension
  43 +named ``GTI`` contains a binary table that defines the Good Time Intervals
  44 +that are covered by the model cube.
15 45  
16 46  
17 47 General parameters
18 48 ------------------
19 49  
20   -``incube [file]``
21   - Input counts cube. If a filename is given the counts cube will be
22   - used to define the dimensions of the model cube. The content of
23   - the counts cube is not relevant.
  50 +``inobs [file]``
  51 + Input event list, counts cube or observation definition XML file.
24 52  
25 53 ``inmodel [string]``
26   - Source model XML file.
27   -
28   -``outcube [file]``
29   - Output model counts cube.
30   -
31   -``(edisp = no) [boolean]``
32   - Apply energy dispersion to response computation.
  54 + Input model XML file.
33 55  
34   -``inobs [file]``
35   - Input event list, counts cube or observation definition XML file.
36   - This information is needed to determine the observation information
37   - (number of observations, duration, liftime, pointing, eventually
38   - observation specific instrument response functions, etc.).
  56 +``incube [file]``
  57 + Input counts cube file to extract model cube definition.
39 58  
40 59 ``expcube [file]``
41   - Exposure cube file (only needed for stacked analysis).
  60 + Input exposure cube file (only needed for stacked analysis).
42 61  
43 62 ``psfcube [file]``
44   - PSF cube file (only needed for stacked analysis).
  63 + Input PSF cube file (only needed for stacked analysis).
45 64  
46 65 ``bkgcube [file]``
47   - Background cube file (only needed for stacked analysis).
  66 + Input background cube file (only needed for stacked analysis).
48 67  
49 68 ``caldb [string]``
50 69 Calibration database.
... ... @@ -52,6 +71,12 @@ General parameters
52 71 ``irf [string]``
53 72 Instrument response function.
54 73  
  74 +``(edisp = no) [boolean]``
  75 + Apply energy dispersion to response computation.
  76 +
  77 +``outcube [file]``
  78 + Output model cube file.
  79 +
55 80 ``ra [real]``
56 81 Right Ascension of pointing (J2000, in degrees).
57 82  
... ... @@ -138,7 +163,10 @@ Standard parameters
138 163 Name of log file.
139 164  
140 165  
141   -Related tools
142   --------------
  166 +Related tools or scripts
  167 +------------------------
143 168  
144   -None
  169 +:doc:`ctbin`
  170 +:doc:`ctexpcube`
  171 +:doc:`ctpsfcube`
  172 +:doc:`ctbkgcube`
... ...
doc/source/reference_manual/ctobssim.rst
... ... @@ -3,14 +3,39 @@
3 3 ctobssim
4 4 ========
5 5  
6   -Simulates CTA events.
  6 +Simulate event list(s).
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -Generate photon events from astrophysical sources and background events
13   -from an instrumental background model.
  12 +This tool simulates event list(s) using the instrument characteristics
  13 +specified by the instrument response function(s) and an input model. The
  14 +simulation includes photon events from astrophysical sources and background
  15 +events from an instrumental background model.
  16 +
  17 +By default, ctobssim creates a single event list. ctobssim queries a pointing
  18 +direction, the radius of the simulation region, a time interval, an energy
  19 +interval, an instrumental response function, and an input model. ctobssim uses
  20 +a numerical random number generator for the simulations with a seed value
  21 +provided by the hidden ``seed`` parameter. Changing this parameter for
  22 +subsequent runs will lead to different event samples.
  23 +
  24 +ctobssim performs a safety check on the maximum photon rate for all model
  25 +components to avoid that the tool locks up and requests huge memory
  26 +ressources, which may happen if a mistake was made in setting up the input
  27 +model (for example if an error in the flux units is made). The maximum allowed
  28 +photon rate is controlled by the hidden ``maxrate`` parameter, which by default
  29 +is set to 1e6.
  30 +
  31 +ctobssim can also generate multiple event lists if an observation definition
  32 +file is specified on input using the hidden ``inobs`` parameter. In that
  33 +case, simulation information will be gathered from the file, and for each
  34 +observation an event list will be created.
  35 +
  36 +For each event file, the simulation parameters will be written as data
  37 +selection keywords to the FITS header. These keywords are mandatory for any
  38 +unbinned maximum likelihood analysis of the event data.
14 39  
15 40  
16 41 General parameters
... ... @@ -23,14 +48,7 @@ General parameters
23 48 simulation.
24 49  
25 50 ``inmodel [file]``
26   - XML file that describes the astrophysical sources and the instrumental
27   - background model.
28   -
29   -``outevents [file]``
30   - Output event list or observation definition XML file.
31   -
32   -``(prefix = sim_events_) [string]``
33   - Prefix for event list in observation definition XML file.
  51 + Input model XML file.
34 52  
35 53 ``caldb [string]``
36 54 Calibration database.
... ... @@ -38,6 +56,15 @@ General parameters
38 56 ``irf [string]``
39 57 Instrumental response function.
40 58  
  59 +``(edisp = no) [boolean]``
  60 + Apply energy dispersion?
  61 +
  62 +``outevents [file]``
  63 + Output event list or observation definition XML file.
  64 +
  65 +``(prefix = sim_events_) [string]``
  66 + Prefix for event list in observation definition XML file.
  67 +
41 68 ``(seed = 1) [integer]``
42 69 Integer seed value to be used for Monte Carlo simulations. Keep this
43 70 parameter at the same value for repeatable simulations, or increment
... ... @@ -65,9 +92,6 @@ General parameters
65 92 ``emax [real]``
66 93 Upper energy limit of simulated events (in TeV).
67 94  
68   -``(edisp = no) [boolean]``
69   - Apply energy dispersion?
70   -
71 95 ``(deadc = 0.95) [real]``
72 96 Average deadtime correction factor.
73 97  
... ... @@ -107,7 +131,7 @@ Standard parameters
107 131 Name of log file.
108 132  
109 133  
110   -Related tools
111   --------------
  134 +Related tools or scripts
  135 +------------------------
112 136  
113   -None
  137 +:doc:`csobsdef`
... ...
doc/source/reference_manual/ctpsfcube.rst
... ... @@ -3,15 +3,39 @@
3 3 ctpsfcube
4 4 =========
5 5  
6   -Generate a point spread function cube for binned maximum likelihood
7   -analysis.
  6 +Generate point spread function cube for a counts cube.
8 7  
9 8  
10 9 Synopsis
11 10 --------
12 11  
13   -This tool generates a point spread function cube for use in a binned
14   -maximum likelihood analysis.
  12 +This tool generates a point spread function cube for a counts cube. A point
  13 +spread function cube is a 4-dimensional cube spanned by Right Ascension or
  14 +Galactic longitude, Declination or Galactic latitude, energy, and offset
  15 +angle between true and measured arrival direction of a photon. The energy
  16 +binning of the cube may be either linear, logarithmic, or custom defined
  17 +using an input file.
  18 +
  19 +ctpsfcube requires on input the event list or observation definition file
  20 +that has been used in the generation of the counts cube using :doc:`ctbin`.
  21 +
  22 +It is not recommended to use the counts cube for the point spread function
  23 +cube definition, although this is formally possibly by specifying the counts
  24 +cube as ``incube`` parameter. This leads however to a large FITS file on
  25 +output since the number of bins in the counts cube will be multiplied by
  26 +the number of offset angle bins (typically 200). Since the point spread
  27 +function varies only little over the field of fiew of the camera it is
  28 +recommended to use a rather coarse spatial binning to keep the file size
  29 +manageable (with a typical value of ``binsz=1.0``).
  30 +
  31 +ctpsfcube generates a point spread function cube FITS file comprising three
  32 +extensions. The primary extension contains a 3-dimensional image that contains
  33 +the point spread function values. The energy and offset angle dimensions
  34 +of the point spread function cube are folded into the 3rd dimension of the
  35 +FITS image. The next extension named ``EBOUNDS`` contains a binary table
  36 +that defines the energy boundaries of the exposure cube. The last extension
  37 +named ``DELTAS`` contains a binary table that defines the offset angles
  38 +between true and measured arrival direction of the photon.
15 39  
16 40  
17 41 General parameters
... ... @@ -21,20 +45,20 @@ General parameters
21 45 Input event list or observation definition XML file.
22 46  
23 47 ``incube [file]``
24   - Counts cube for PSF cube definition.
25   -
26   -``outcube [file]``
27   - Output PSF cube file.
  48 + Input counts cube file to extract point spread function cube definition.
28 49  
29 50 ``caldb [string]``
30 51 Calibration database.
31 52  
32 53 ``irf [string]``
33   - Response function.
  54 + Instrument response function.
34 55  
35 56 ``(edisp = no) [boolean]``
36 57 Apply energy dispersion for response computation.
37 58  
  59 +``outcube [file]``
  60 + Output point spread function cube file.
  61 +
38 62 ``ebinalg <FILE|LIN|LOG> [string]``
39 63 Algorithm for defining energy bins.
40 64  
... ... @@ -110,7 +134,7 @@ Standard parameters
110 134 Name of log file.
111 135  
112 136  
113   -Related tools
114   --------------
  137 +Related tools or scripts
  138 +------------------------
115 139  
116   -None
  140 +:doc:`ctbin`
... ...
doc/source/reference_manual/ctselect.rst
... ... @@ -3,14 +3,36 @@
3 3 ctselect
4 4 ========
5 5  
6   -Performs sub-selections of event data.
  6 +Select events from event list(s).
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -Creates a new FITS file of selected events from an input event list based
13   -on spatial, temporal, and energy cuts.
  12 +This tool selects events from one or several event lists. Event selection
  13 +is based on a circular acceptance region, a time interval and an energy
  14 +interval. In addition, any expression following the cfitsio syntax can be
  15 +used for event selection.
  16 +
  17 +Optionally, ctselect may also apply energy thresholds. If ``usethres=DEFAULT``
  18 +is specified, ctselect will extract any save thresholds from the instrument
  19 +response functions, and if they exist, will apply them to the respective
  20 +event list. Alternatively, if ``usethres=USER`` is specified, ctselect will
  21 +extract any user thresholds from the observation definition file (attributes
  22 +``emin`` and ``emax``), and if either of the attributes exists, will apply
  23 +them to the respective event list.
  24 +
  25 +If an event list is provided on input, ctselect creates a new FITS file on
  26 +output that contains only the selected events. In case that an observation
  27 +definition file is specified on input, ctselect creates for each event file
  28 +referenced in the observation definition file a new FITS file with the value
  29 +of ``prefix`` prepended to the file name that contains only the selected
  30 +events. In addition, a new observation definition file will be written
  31 +that references the new FITS files.
  32 +
  33 +For each event file, the event selection parameters will be writted as data
  34 +selection keywords to the FITS header. These keywords are mandatory for any
  35 +unbinned maximum likelihood analysis of the event data.
14 36  
15 37  
16 38 General parameters
... ... @@ -98,7 +120,7 @@ Standard parameters
98 120 Name of log file.
99 121  
100 122  
101   -Related tools
102   --------------
  123 +Related tools or scripts
  124 +------------------------
103 125  
104 126 None
... ...
doc/source/reference_manual/ctskymap.rst
... ... @@ -3,13 +3,18 @@
3 3 ctskymap
4 4 ========
5 5  
6   -Computes sky map from CTA data.
  6 +Generate sky map from event list(s).
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -This tool generates a sky map from CTA data.
  12 +This tool creates a sky map from either a single event list or event lists
  13 +provided in an observation definition file. The tool will loop over all event
  14 +lists that are provided and fill all events into a single sky map. Only events
  15 +within an energy interval spanned by ``emin`` and ``emax`` are considered.
  16 +
  17 +ctskymap generates a FITS file comprising a sky map as primary extension.
13 18  
14 19  
15 20 General parameters
... ... @@ -19,7 +24,7 @@ General parameters
19 24 Input event list or observation definition XML file.
20 25  
21 26 ``outmap [file]``
22   - Output sky map.
  27 + Output sky map file.
23 28  
24 29 ``emin [real]``
25 30 Minimum energy in map (in TeV).
... ... @@ -80,7 +85,7 @@ Standard parameters
80 85 Name of log file.
81 86  
82 87  
83   -Related tools
84   --------------
  88 +Related tools or scripts
  89 +------------------------
85 90  
86 91 None
... ...
doc/source/reference_manual/cttsmap.rst
... ... @@ -3,13 +3,25 @@
3 3 cttsmap
4 4 =======
5 5  
6   -Generate a Test Statistic map.
  6 +Generate a Test Statistic (TS) map.
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -This tool generates a Test Statistic map.
  12 +This tool generates a Test Statistic (TS) map for a specific source model.
  13 +cttsmap works for point, radial and elliptical source models. The tool
  14 +displaces the specified source on a grid of sky directions and computes for
  15 +each direction the TS value for the model. The TS value is defined as twice
  16 +the difference between the log-likelihood obtained for the full model
  17 +(including the specified source) and the log-likelihood obtained for a model
  18 +that excludes the specified source. The square-root of the TS values
  19 +corresponds roughly to the pre-trial detection signifiance of the source (in
  20 +Gaussian sigma).
  21 +
  22 +cttsmap generates a FITS file comprising a sky map of TS values followed by
  23 +one extension per free parameter that contains sky maps of the fitted
  24 +parameter values.
13 25  
14 26  
15 27 General parameters
... ... @@ -19,26 +31,25 @@ General parameters
19 31 Input event list, counts cube or observation definition XML file.
20 32  
21 33 ``inmodel [file]``
22   - Input source model XML file.
  34 + Input model XML file.
23 35  
24 36 ``srcname [string]``
25   - Name of the source in the source model XML file for which the Test
26   - Statistic map should be computed.
  37 + Name of source model for which the TS map should be computed.
27 38  
28 39 ``expcube [file]``
29   - Exposure cube file (only needed for stacked analysis).
  40 + Input exposure cube file (only needed for stacked analysis).
30 41  
31 42 ``psfcube [file]``
32   - PSF cube file (only needed for stacked analysis).
  43 + Input PSF cube file (only needed for stacked analysis).
33 44  
34 45 ``bkgcube [file]``
35   - Background cube file (only needed for stacked analysis).
  46 + Input background cube file (only needed for stacked analysis).
36 47  
37 48 ``caldb [string]``
38 49 Calibration database.
39 50  
40 51 ``irf [string]``
41   - Response function.
  52 + Instrumental response function.
42 53  
43 54 ``(edisp = no) [boolean]``
44 55 Applies energy dispersion to response computation.
... ...
doc/source/reference_manual/ctulimit.rst
1 1 .. _ctulimit:
2 2  
3 3 ctulimit
4   -===========
  4 +========
5 5  
6   -Computes upper limit for a specific sky model component.
  6 +Computes upper flux limit for a source model.
7 7  
8 8  
9 9 Synopsis
10 10 --------
11 11  
12   -Computes the upper limit flux of a given source.
  12 +This tools computes the upper flux limit for a specific source model. Except
  13 +of the node function, all spectral models are supported. Starting from the
  14 +maximum likelihood model parameters, the tool finds the model flux that leads
  15 +to a decrease of the likelihood that corresponds to a given confidence level.
  16 +By default a confidence level of 95% is used, but this level can be adjusted
  17 +using the hidden ``confidence`` parameter.
  18 +
  19 +ctulimit writes the differential upper flux limit at a given reference
  20 +energy (specified by the hidden parameter ``eref``) and the integrated
  21 +upper flux limit (specified by the hidden parameters ``emin`` and ``emax``)
  22 +into the log file.
  23 +
13 24  
14 25  
15 26 General parameters
... ... @@ -19,19 +30,19 @@ General parameters
19 30 Input event list, counts cube or observation definition XML file.
20 31  
21 32 ``inmodel [file]``
22   - Model XML file containing the source and background definitions.
  33 + Input model XML file.
23 34  
24 35 ``srcname [string]``
25   - Name of model component for which upper limit should be computed.
  36 + Name of source model for which the upper flux limit should be computed.
26 37  
27 38 ``expcube [file]``
28   - Exposure cube file (only needed for stacked analysis).
  39 + Input exposure cube file (only needed for stacked analysis).
29 40  
30 41 ``psfcube [file]``
31   - PSF cube file (only needed for stacked analysis).
  42 + Input PSF cube file (only needed for stacked analysis).
32 43  
33 44 ``bkgcube [file]``
34   - Background cube file (only needed for stacked analysis).
  45 + Input background cube file (only needed for stacked analysis).
35 46  
36 47 ``caldb [string]``
37 48 Calibration database.
... ... @@ -53,11 +64,14 @@ General parameters
53 64 Maximum boundary to start searching for upper limit value.
54 65 Number of standard deviations above best fit value
55 66  
  67 +``(eref = 1.0) [real])``
  68 + Reference energy for differential limit (in TeV).
  69 +
56 70 ``(emin = 1.0) [real])``
57   - Minimum energy of flux limits (in TeV).
  71 + Minimum energy for integral flux limit (in TeV).
58 72  
59 73 ``(emax = 100) [real]``
60   - Maximum energy of flux limits (in TeV).
  74 + Maximum energy for integral flux limit (in TeV).
61 75  
62 76 ``(tol = 1e-5) [real]``
63 77 Computation tolerance.
... ... @@ -98,4 +112,6 @@ Standard parameters
98 112 Related tools
99 113 -------------
100 114  
101   -:ref:`cterror`
102 115 \ No newline at end of file
  116 +:ref:`ctlike`
  117 +:ref:`cterror`
  118 +:ref:`ctbutterfly`
... ...
doc/source/user_manual/enhancing.rst deleted
1   -Enhancing ctools
2   -================
3   -
4   -Most ctools users will run the existing ctools or cscripts,
5   -which cover the most common simulation and analysis needs.
6   -
7   -Advanced users and developers can write their own tools and scripts.
8   -The following C++ and Python examples can help get you started:
9   -
10   -* :doxy:`ctlike`
11   -* :doxy:`obsutils`
12   -* :doxy:`cstsdist`
13   -
14   -Building your own cscripts
15   ---------------------------
16   -
17   -To be written ...
18   -
19   -
20   -Building your own ctools
21   -------------------------
22   -
23   -To be written ...
doc/source/user_manual/expert.rst deleted
1   -Behind the scenes
2   -=================
3   -
4   -CTA data structure
5   -------------------
6   -
7   -To be written ...
8   -
9   -
10   -Instrument response functions
11   ------------------------------
12   -
13   -To be written ...
14   -
15   -
16   -Maximum likelihood fitting
17   ---------------------------
18   -
19   -To be written ...
doc/source/user_manual/getting.rst
... ... @@ -29,15 +29,15 @@ No system administrator privileges are needed to install ctools.
29 29  
30 30 .. _sec_installing_gammalib:
31 31  
32   -Installing gammalib
  32 +Installing GammaLib
33 33 -------------------
34 34  
35   -ctools is built on top of gammalib, hence gammalib needs to be built,
  35 +ctools is built on top of GammaLib, hence GammaLib needs to be built,
36 36 installed and configured before ctools can be installed. In case that
37 37 ctools is already installed on your system you may skip reading this
38 38 section and continue with the :ref:`sec_building_ctools` section.
39 39  
40   -You will need the following to build the gammalib:
  40 +You will need the following to build the GammaLib:
41 41  
42 42 - About 200 MB of free disk space.
43 43  
... ... @@ -58,12 +58,12 @@ You will need the following to build the gammalib:
58 58 Furthermore it is recommended to have readline and ncurses installed
59 59 (including the developer packages).
60 60  
61   -After downloading the gammalib tarball (see :ref:`download`), save it
  61 +After downloading the GammaLib tarball (see :ref:`download`), save it
62 62 in an appropriate location (for example ``$HOME/builds``), and type
63 63  
64 64 .. code-block:: bash
65 65  
66   - $ tar xvfz gammalib-0.11.0.tar.gz
  66 + $ tar xvfz gammalib-1.0.0.tar.gz
67 67  
68 68 (the ``$`` symbol indicates the console prompt and is not part of the
69 69 command that you should type in).
... ... @@ -73,7 +73,7 @@ typing
73 73  
74 74 .. code-block:: bash
75 75  
76   - $ cd gammalib-0.11.0
  76 + $ cd gammalib-1.0.0
77 77 $ ./configure
78 78 $ make
79 79 $ make check
... ... @@ -82,6 +82,8 @@ typing
82 82 The last step may require system administator privileges. In this case,
83 83 use
84 84  
  85 +.. code-block:: bash
  86 +
85 87 $ sudo make install
86 88  
87 89 If you do not have system administrator privileges, change the install
... ... @@ -133,7 +135,7 @@ an appropriate location (for example ``$HOME/builds``), and type
133 135  
134 136 .. code-block:: bash
135 137  
136   - $ tar xvfz ctools-0.10.0.tar.gz
  138 + $ tar xvfz ctools-1.0.0.tar.gz
137 139  
138 140 (the ``$`` symbol indicates the console prompt and is not part of the
139 141 command that you should type in).
... ... @@ -142,7 +144,7 @@ Step in the directory and build the ctools by typing
142 144  
143 145 .. code-block:: bash
144 146  
145   - $ cd ctools-0.10.0
  147 + $ cd ctools-1.0.0
146 148 $ ./configure
147 149 $ make
148 150  
... ... @@ -181,7 +183,7 @@ following output at the end of the unit testing:
181 183 PASS: test_python.py
182 184 make[4]: Nothing to be done for `all'.
183 185 ============================================================================
184   - Testsuite summary for ctools 0.10.0
  186 + Testsuite summary for ctools 1.0.0
185 187 ============================================================================
186 188 # TOTAL: 3
187 189 # PASS: 3
... ... @@ -345,19 +347,8 @@ As a quick check that your setup is okay you can run ``csinfo check``:
345 347 ===> Your Gammalib / ctools setup is OK.
346 348  
347 349 If the setup is not okay, run the ``csinfo info`` command to print
348   -detailed information about your setup.
349   -There's also a ``csinfo list`` command to quickly list the available tools:
350   -
351   -.. code-block:: bash
352   -
353   - $ csinfo
354   -
355   - Print info about Gammalib and ctools to the console.
356   -
357   - Available commands:
358   - csinfo list List available ctools and cscripts
359   - csinfo check Check Gammalib / ctools setup
360   - csinfo info Print Gammalib / ctools setup info
  350 +detailed information about your setup. There's also a ``csinfo list``
  351 +command to quickly list the available tools.
361 352  
362 353  
363 354 .. _sec_known_problems:
... ...
doc/source/user_manual/getting_started/beyond.rst
... ... @@ -3,12 +3,12 @@
3 3 Beyond the first steps
4 4 ----------------------
5 5  
6   -Assuming that you have read the :ref:`quickstart <quickstart>` tutorial,
7   -here now some chapters to read if you intend to do more complex
8   -analyses.
9   -Once you have gone through these chapters you should have a pretty complete
  6 +Now that you are familiar with the ctools basics, here are some sections
  7 +to read if you intend to do more complex analyses.
  8 +Once you have gone through these sections you should have a pretty complete
10 9 picture about the capabilities of ctools.
11   -And you should be ready for doing your own cutting edge analyses.
  10 +And you should be ready for doing your own cutting edge CTA science data
  11 +analyses.
12 12  
13 13 .. toctree::
14 14 :maxdepth: 2
... ... @@ -19,11 +19,3 @@ And you should be ready for doing your own cutting edge analyses.
19 19 beyond_residual
20 20 beyond_irf
21 21 beyond_model
22   -
23   -
24   -
25   -
26   -
27   -
28   -
29   -
... ...
doc/source/user_manual/getting_started/beyond_combine.rst
... ... @@ -25,9 +25,9 @@ nebula, each offset by 0.5 deg from the nebula in opposite directions:
25 25 Lower energy limit (TeV) [0.1]
26 26 Upper energy limit (TeV) [100.0]
27 27 Calibration database [prod2]
28   - Instrument response function [South_50h]
29   - Model [$CTOOLS/share/models/crab.xml]
30   - Output event data file or observation definition file [events.fits] events1.fits
  28 + Instrument response function [South_0.5h]
  29 + Input model XML file [$CTOOLS/share/models/crab.xml]
  30 + Output event data file or observation definition XML file [events.fits] events1.fits
31 31  
32 32 .. code-block:: bash
33 33  
... ... @@ -40,16 +40,16 @@ nebula, each offset by 0.5 deg from the nebula in opposite directions:
40 40 Lower energy limit (TeV) [0.1]
41 41 Upper energy limit (TeV) [100.0]
42 42 Calibration database [prod2]
43   - Instrument response function [South_50h]
44   - Model [$CTOOLS/share/models/crab.xml]
45   - Output event data file or observation definition file [events1.fits] events2.fits
  43 + Instrument response function [South_0.5h]
  44 + Input model XML file [$CTOOLS/share/models/crab.xml]
  45 + Output event data file or observation definition XML file [events1.fits] events2.fits
46 46  
47 47 This will produce the two event files ``events1.fits`` and ``events2.fits``
48 48 on disk.
49 49  
50   -As next step we have to create an **observation definition XML file** that
  50 +As next step you have to create an **observation definition XML file** that
51 51 collects both observations in a list.
52   -Here is how such a file would look like:
  52 +Here is how that file looks like:
53 53  
54 54 .. code-block:: xml
55 55  
... ... @@ -86,116 +86,140 @@ ctools knows which instrument specific functions need to be called.**
86 86 Imaging Air Cherenkov Telescope in a joint analysis.
87 87 **Please recall that instrument strings are case sensitive.**
88 88  
89   -Now we are ready to do a joint maximum likelihood analysis using
90   -:ref:`ctlike`:
  89 +Now you are ready to do a joint maximum likelihood analysis using
  90 +:ref:`ctlike`. Type:
91 91  
92 92 .. code-block:: bash
93 93  
94   - $ ctlike
95   - Event list, counts cube or observation definition file [selected_events.fits] obs.xml
  94 + $ ctlike chatter=3
  95 + Input event list, counts cube or observation definition XML file [events.fits] obs.xml
96 96 Calibration database [prod2]
97   - Instrument response function [South_50h]
98   - Source model [$CTOOLS/share/models/crab.xml]
99   - Source model output file [crab_results.xml]
  97 + Instrument response function [South_0.5h]
  98 + Input model XML file [$CTOOLS/share/models/crab.xml]
  99 + Output model XML file [crab_results.xml]
100 100  
101   -Instead of providing an event list or a counts cube, we now provided the
  101 +Instead of providing an event list or a counts cube, you now provided the
102 102 filename of the observation definition XML file (here ``obs.xml``) as input
103   -parameter.
104   -:ref:`ctlike` recognises this format and automatically performs a
105   -joint analysis, as indicated in the log file:
  103 +parameter. :ref:`ctlike` recognises this format and automatically performs a
  104 +joint analysis. To see the result of this you needed to specify the
  105 +``chatter=3`` parameter so that the chattiness is increased in the log
  106 +file:
106 107  
107 108 .. code-block:: xml
108 109  
109   - 2015-05-22T20:17:07: +==============+
110   - 2015-05-22T20:17:07: | Observations |
111   - 2015-05-22T20:17:07: +==============+
112   - 2015-05-22T20:17:07: === GObservations ===
113   - 2015-05-22T20:17:07: Number of observations ....: 2
114   - 2015-05-22T20:17:07: Number of predicted events : 0
115   - 2015-05-22T20:17:07: === GCTAObservation ===
116   - 2015-05-22T20:17:07: Name ......................:
117   - 2015-05-22T20:17:07: Identifier ................: 00001
118   - 2015-05-22T20:17:07: Instrument ................: CTA
119   - 2015-05-22T20:17:07: Event file ................: events1.fits
120   - 2015-05-22T20:17:07: Event type ................: EventList
121   - 2015-05-22T20:17:07: Statistics ................: Poisson
122   - 2015-05-22T20:17:07: Ontime ....................: 1800 s
123   - 2015-05-22T20:17:07: Livetime ..................: 1710 s
124   - 2015-05-22T20:17:07: Deadtime correction .......: 0.95
125   - 2015-05-22T20:17:07: User energy range .........: undefined
126   - 2015-05-22T20:17:07: === GCTAPointing ===
127   - 2015-05-22T20:17:07: Pointing direction ........: (RA,Dec)=(83.63,21.51)
  110 + 2015-12-07T21:23:07: +==============+
  111 + 2015-12-07T21:23:07: | Observations |
  112 + 2015-12-07T21:23:07: +==============+
  113 + 2015-12-07T21:23:07: === GObservations ===
  114 + 2015-12-07T21:23:07: Number of observations ....: 2
  115 + 2015-12-07T21:23:07: Number of models ..........: 2
  116 + 2015-12-07T21:23:07: Number of predicted events : 0
  117 + 2015-12-07T21:23:07: === GCTAObservation ===
  118 + 2015-12-07T21:23:07: Name ......................: Crab
  119 + 2015-12-07T21:23:07: Identifier ................: 00001
  120 + 2015-12-07T21:23:07: Instrument ................: CTA
  121 + 2015-12-07T21:23:07: Event file ................: events1.fits
  122 + 2015-12-07T21:23:07: Event type ................: EventList
  123 + 2015-12-07T21:23:07: Statistics ................: Poisson
  124 + 2015-12-07T21:23:07: Ontime ....................: 1800 s
  125 + 2015-12-07T21:23:07: Livetime ..................: 1710 s
  126 + 2015-12-07T21:23:07: Deadtime correction .......: 0.95
  127 + 2015-12-07T21:23:07: User energy range .........: undefined
  128 + 2015-12-07T21:23:07: === GCTAPointing ===
  129 + 2015-12-07T21:23:07: Pointing direction ........: (RA,Dec)=(83.63,21.51)
  130 + 2015-12-07T21:23:07: === GCTAResponseIrf ===
  131 + 2015-12-07T21:23:07: Caldb mission .............: cta
  132 + 2015-12-07T21:23:07: Caldb instrument ..........: prod2
  133 + 2015-12-07T21:23:07: Response name .............: South_0.5h
  134 + 2015-12-07T21:23:07: Energy dispersion .........: Not used
  135 + 2015-12-07T21:23:07: Save energy range .........: undefined
  136 + 2015-12-07T21:23:07: === GCTAEventList ===
  137 + 2015-12-07T21:23:07: Number of events ..........: 22593
  138 + 2015-12-07T21:23:07: Time interval .............: 51544.5 - 51544.5 days
  139 + 2015-12-07T21:23:07: Energy interval ...........: 0.1 - 100 TeV
  140 + 2015-12-07T21:23:07: Region of interest ........: RA=83.63, DEC=21.51 [0,0] Radius=5 deg
  141 + 2015-12-07T21:23:07: === GCTAObservation ===
  142 + 2015-12-07T21:23:07: Name ......................: Crab
  143 + 2015-12-07T21:23:07: Identifier ................: 00002
  144 + 2015-12-07T21:23:07: Instrument ................: CTA
  145 + 2015-12-07T21:23:07: Event file ................: events2.fits
  146 + 2015-12-07T21:23:07: Event type ................: EventList
  147 + 2015-12-07T21:23:07: Statistics ................: Poisson
  148 + 2015-12-07T21:23:07: Ontime ....................: 1800 s
  149 + 2015-12-07T21:23:07: Livetime ..................: 1710 s
  150 + 2015-12-07T21:23:07: Deadtime correction .......: 0.95
  151 + 2015-12-07T21:23:07: User energy range .........: undefined
  152 + 2015-12-07T21:23:07: === GCTAPointing ===
  153 + 2015-12-07T21:23:07: Pointing direction ........: (RA,Dec)=(83.63,22.51)
  154 + 2015-12-07T21:23:07: === GCTAResponseIrf ===
  155 + 2015-12-07T21:23:07: Caldb mission .............: cta
  156 + 2015-12-07T21:23:07: Caldb instrument ..........: prod2
  157 + 2015-12-07T21:23:07: Response name .............: South_0.5h
  158 + 2015-12-07T21:23:07: Energy dispersion .........: Not used
  159 + 2015-12-07T21:23:07: Save energy range .........: undefined
  160 + 2015-12-07T21:23:07: === GCTAEventList ===
  161 + 2015-12-07T21:23:07: Number of events ..........: 22529
  162 + 2015-12-07T21:23:07: Time interval .............: 51544.5 - 51544.5 days
  163 + 2015-12-07T21:23:07: Energy interval ...........: 0.1 - 100 TeV
  164 + 2015-12-07T21:23:07: Region of interest ........: RA=83.63, DEC=22.51 [0,0] Radius=5 deg
128 165 ...
129   - 2015-05-22T20:17:07: === GCTAObservation ===
130   - 2015-05-22T20:17:07: Name ......................:
131   - 2015-05-22T20:17:07: Identifier ................: 00002
132   - 2015-05-22T20:17:07: Instrument ................: CTA
133   - 2015-05-22T20:17:07: Event file ................: events2.fits
134   - 2015-05-22T20:17:07: Event type ................: EventList
135   - 2015-05-22T20:17:07: Statistics ................: Poisson
136   - 2015-05-22T20:17:07: Ontime ....................: 1800 s
137   - 2015-05-22T20:17:07: Livetime ..................: 1710 s
138   - 2015-05-22T20:17:07: Deadtime correction .......: 0.95
139   - 2015-05-22T20:17:07: User energy range .........: undefined
140   - 2015-05-22T20:17:07: === GCTAPointing ===
141   - 2015-05-22T20:17:07: Pointing direction ........: (RA,Dec)=(83.63,22.51)
  166 + 2015-12-07T21:23:07: +=================================+
  167 + 2015-12-07T21:23:07: | Maximum likelihood optimisation |
  168 + 2015-12-07T21:23:07: +=================================+
  169 + 2015-12-07T21:23:07: >Iteration 0: -logL=304176.886, Lambda=1.0e-03
  170 + 2015-12-07T21:23:08: >Iteration 1: -logL=304161.799, Lambda=1.0e-03, delta=15.088, max(|grad|)=12.922804 [Index:3]
  171 + 2015-12-07T21:23:08: >Iteration 2: -logL=304161.783, Lambda=1.0e-04, delta=0.015, max(|grad|)=0.098155 [Index:3]
  172 + 2015-12-07T21:23:08: >Iteration 3: -logL=304161.783, Lambda=1.0e-05, delta=0.000, max(|grad|)=0.000598 [Index:3]
142 173 ...
143   - 2015-05-22T20:17:07: +=================================+
144   - 2015-05-22T20:17:07: | Maximum likelihood optimisation |
145   - 2015-05-22T20:17:07: +=================================+
146   - 2015-05-22T20:17:07: >Iteration 0: -logL=201836.657, Lambda=1.0e-03
147   - 2015-05-22T20:17:07: >Iteration 1: -logL=201829.438, Lambda=1.0e-03, delta=7.220, max(|grad|)=22.756507 [Index:7]
148   - 2015-05-22T20:17:07: >Iteration 2: -logL=201829.432, Lambda=1.0e-04, delta=0.005, max(|grad|)=0.086395 [Index:3]
149   - 2015-05-22T20:17:07: >Iteration 3: -logL=201829.432, Lambda=1.0e-05, delta=0.000, max(|grad|)=0.001287 [Index:3]
150   - 2015-05-22T20:17:07:
151   - 2015-05-22T20:17:07: +=========================================+
152   - 2015-05-22T20:17:07: | Maximum likelihood optimization results |
153   - 2015-05-22T20:17:07: +=========================================+
154   - 2015-05-22T20:17:07: === GOptimizerLM ===
155   - 2015-05-22T20:17:07: Optimized function value ..: 201829.432
156   - 2015-05-22T20:17:07: Absolute precision ........: 0.005
157   - 2015-05-22T20:17:07: Acceptable value decrease .: 2
158   - 2015-05-22T20:17:07: Optimization status .......: converged
159   - 2015-05-22T20:17:07: Number of parameters ......: 10
160   - 2015-05-22T20:17:07: Number of free parameters .: 4
161   - 2015-05-22T20:17:07: Number of iterations ......: 3
162   - 2015-05-22T20:17:07: Lambda ....................: 1e-06
163   - 2015-05-22T20:17:07: Maximum log likelihood ....: -201829.432
164   - 2015-05-22T20:17:07: Observed events (Nobs) ...: 31799.000
165   - 2015-05-22T20:17:07: Predicted events (Npred) ..: 31799.000 (Nobs - Npred = 2.67544e-06)
166   - 2015-05-22T20:17:07: === GModels ===
167   - 2015-05-22T20:17:07: Number of models ..........: 2
168   - 2015-05-22T20:17:07: Number of parameters ......: 10
169   - 2015-05-22T20:17:07: === GModelSky ===
170   - 2015-05-22T20:17:07: Name ......................: Crab
171   - 2015-05-22T20:17:07: Instruments ...............: all
172   - 2015-05-22T20:17:07: Instrument scale factors ..: unity
173   - 2015-05-22T20:17:07: Observation identifiers ...: all
174   - 2015-05-22T20:17:07: Model type ................: PointSource
175   - 2015-05-22T20:17:07: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
176   - 2015-05-22T20:17:07: Number of parameters ......: 6
177   - 2015-05-22T20:17:07: Number of spatial par's ...: 2
178   - 2015-05-22T20:17:07: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
179   - 2015-05-22T20:17:07: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
180   - 2015-05-22T20:17:07: Number of spectral par's ..: 3
181   - 2015-05-22T20:17:07: Prefactor ................: 5.8727e-16 +/- 8.04314e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
182   - 2015-05-22T20:17:07: Index ....................: -2.49825 +/- 0.0118418 [-0,-5] (free,scale=-1,gradient)
183   - 2015-05-22T20:17:07: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
184   - 2015-05-22T20:17:07: Number of temporal par's ..: 1
185   - 2015-05-22T20:17:07: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
186   - 2015-05-22T20:17:07: === GCTAModelIrfBackground ===
187   - 2015-05-22T20:17:07: Name ......................: CTABackgroundModel
188   - 2015-05-22T20:17:07: Instruments ...............: CTA
189   - 2015-05-22T20:17:07: Instrument scale factors ..: unity
190   - 2015-05-22T20:17:07: Observation identifiers ...: all
191   - 2015-05-22T20:17:07: Model type ................: "PowerLaw" * "Constant"
192   - 2015-05-22T20:17:07: Number of parameters ......: 4
193   - 2015-05-22T20:17:07: Number of spectral par's ..: 3
194   - 2015-05-22T20:17:07: Prefactor ................: 1.01608 +/- 0.0152751 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
195   - 2015-05-22T20:17:07: Index ....................: 0.0226023 +/- 0.0086794 [-5,5] (free,scale=1,gradient)
196   - 2015-05-22T20:17:07: PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
197   - 2015-05-22T20:17:07: Number of temporal par's ..: 1
198   - 2015-05-22T20:17:07: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
  174 +
  175 + 2015-12-07T21:23:08: +=========================================+
  176 + 2015-12-07T21:23:08: | Maximum likelihood optimisation results |
  177 + 2015-12-07T21:23:08: +=========================================+
  178 + 2015-12-07T21:23:08: === GOptimizerLM ===
  179 + 2015-12-07T21:23:08: Optimized function value ..: 304161.783
  180 + 2015-12-07T21:23:08: Absolute precision ........: 0.005
  181 + 2015-12-07T21:23:08: Acceptable value decrease .: 2
  182 + 2015-12-07T21:23:08: Optimization status .......: converged
  183 + 2015-12-07T21:23:08: Number of parameters ......: 10
  184 + 2015-12-07T21:23:08: Number of free parameters .: 4
  185 + 2015-12-07T21:23:08: Number of iterations ......: 3
  186 + 2015-12-07T21:23:08: Lambda ....................: 1e-06
  187 + 2015-12-07T21:23:08: Maximum log likelihood ....: -304161.783
  188 + 2015-12-07T21:23:08: Observed events (Nobs) ...: 45122.000
  189 + 2015-12-07T21:23:08: Predicted events (Npred) ..: 45122.000 (Nobs - Npred = 1.04131e-06)
  190 + 2015-12-07T21:23:08: === GModels ===
  191 + 2015-12-07T21:23:08: Number of models ..........: 2
  192 + 2015-12-07T21:23:08: Number of parameters ......: 10
  193 + 2015-12-07T21:23:08: === GModelSky ===
  194 + 2015-12-07T21:23:08: Name ......................: Crab
  195 + 2015-12-07T21:23:08: Instruments ...............: all
  196 + 2015-12-07T21:23:08: Instrument scale factors ..: unity
  197 + 2015-12-07T21:23:08: Observation identifiers ...: all
  198 + 2015-12-07T21:23:08: Model type ................: PointSource
  199 + 2015-12-07T21:23:08: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
  200 + 2015-12-07T21:23:08: Number of parameters ......: 6
  201 + 2015-12-07T21:23:08: Number of spatial par's ...: 2
  202 + 2015-12-07T21:23:08: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
  203 + 2015-12-07T21:23:08: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
  204 + 2015-12-07T21:23:08: Number of spectral par's ..: 3
  205 + 2015-12-07T21:23:08: Prefactor ................: 5.78382e-16 +/- 7.27218e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
  206 + 2015-12-07T21:23:08: Index ....................: -2.5314 +/- 0.0112546 [-0,-5] (free,scale=-1,gradient)
  207 + 2015-12-07T21:23:08: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
  208 + 2015-12-07T21:23:08: Number of temporal par's ..: 1
  209 + 2015-12-07T21:23:08: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
  210 + 2015-12-07T21:23:08: === GCTAModelIrfBackground ===
  211 + 2015-12-07T21:23:08: Name ......................: CTABackgroundModel
  212 + 2015-12-07T21:23:08: Instruments ...............: CTA
  213 + 2015-12-07T21:23:08: Instrument scale factors ..: unity
  214 + 2015-12-07T21:23:08: Observation identifiers ...: all
  215 + 2015-12-07T21:23:08: Model type ................: "PowerLaw" * "Constant"
  216 + 2015-12-07T21:23:08: Number of parameters ......: 4
  217 + 2015-12-07T21:23:08: Number of spectral par's ..: 3
  218 + 2015-12-07T21:23:08: Prefactor ................: 1.0008 +/- 0.00839192 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
  219 + 2015-12-07T21:23:08: Index ....................: 0.0102998 +/- 0.0051965 [-5,5] (free,scale=1,gradient)
  220 + 2015-12-07T21:23:08: PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
  221 + 2015-12-07T21:23:08: Number of temporal par's ..: 1
  222 + 2015-12-07T21:23:08: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
199 223  
200 224 The log file indicates that the fit converged quickly, the spectral
201 225 parameters of the Crab nebula have now been constrained using the events
... ...
doc/source/user_manual/getting_started/beyond_irf.rst
... ... @@ -6,9 +6,9 @@ Connecting observations to dedicated instrument response functions
6 6 So far the same instrument response function has been used for all
7 7 observations in our analysis examples.
8 8 You may have recognised that we always specified the calibration database
9   -``prod2`` and the instrument response function ``South_50h`` that
  9 +``prod2`` and the instrument response function ``South_0.5h`` that
10 10 are shipped with ctools.
11   -When combining multiple observations in a joint analysis we may however
  11 +When combining multiple observations in a joint analysis you may however
12 12 need to specify dedicated instrument response functions for the
13 13 different observations.
14 14  
... ... @@ -26,40 +26,40 @@ the northern array and the other with the southern array:
26 26 Lower energy limit (TeV) [0.1]
27 27 Upper energy limit (TeV) [100.0]
28 28 Calibration database [prod2]
29   - Instrument response function [South_50h] North_50h
30   - Model [$CTOOLS/share/models/crab.xml]
31   - Output event data file or observation definition file [events.fits] events1.fits
  29 + Instrument response function [South_0.5h] North_0.5h
  30 + Input model XML file [$CTOOLS/share/models/crab.xml]
  31 + Output event data file or observation definition XML file [events.fits] north.fits
32 32  
33 33 .. code-block:: bash
34 34  
35 35 $ ctobssim
36 36 RA of pointing (degrees) (0-360) [83.63]
37   - Dec of pointing (degrees) (-90-90) [22.01] 22.51
  37 + Dec of pointing (degrees) (-90-90) [21.51] 22.51
38 38 Radius of FOV (degrees) (0-180) [5.0]
39 39 Start time (MET in s) [0.0]
40 40 End time (MET in s) [1800.0]
41 41 Lower energy limit (TeV) [0.1]
42 42 Upper energy limit (TeV) [100.0]
43 43 Calibration database [prod2]
44   - Instrument response function [North_50h] South_50h
45   - Model [$CTOOLS/share/models/crab.xml]
46   - Output event data file or observation definition file [events1.fits] events2.fits
  44 + Instrument response function [North_0.5h] South_0.5h
  45 + Input model XML file [$CTOOLS/share/models/crab.xml]
  46 + Output event data file or observation definition XML file [north.fits] south.fits
47 47  
48   -Now we combine the information about these two observations in an
  48 +You now need to combine the information about these two observations in an
49 49 observation definition XML file:
50 50  
51 51 .. code-block:: xml
52 52  
53   - <?xml version="1.0" standalone="no"?>
54   - <observation_list title="observation library">
55   - <observation name="Crab" id="00001" instrument="CTA">
56   - <parameter name="EventList" file="events1.fits"/>
57   - <parameter name="Calibration" database="prod2" response="North_50h"/>
58   - </observation>
59   - <observation name="Crab" id="00002" instrument="CTA">
60   - <parameter name="EventList" file="events2.fits"/>
61   - <parameter name="Calibration" database="prod2" response="South_50h"/>
62   - </observation>
  53 + <?xml version="1.0" standalone="no"?>
  54 + <observation_list title="observation library">
  55 + <observation name="Crab" id="00001" instrument="CTA">
  56 + <parameter name="EventList" file="north.fits"/>
  57 + <parameter name="Calibration" database="prod2" response="North_0.5h"/>
  58 + </observation>
  59 + <observation name="Crab" id="00002" instrument="CTA">
  60 + <parameter name="EventList" file="south.fits"/>
  61 + <parameter name="Calibration" database="prod2" response="South_0.5h"/>
  62 + </observation>
63 63 </observation_list>
64 64  
65 65 Each observation now has a ``Calibration`` parameter with the attributes
... ... @@ -97,126 +97,136 @@ Within this database there are six response functions:
97 97 ``North_0.5h``, ``North_5h``, ``North_50h``,
98 98 ``South_0.5h``, ``South_5h``, and ``South_50h``.
99 99  
100   -We now jointly fit both observations using :ref:`ctlike`:
  100 +You now jointly fit both observations using :ref:`ctlike`:
101 101  
102 102 .. code-block:: bash
103 103  
104   - $ ctlike
105   - Event list, counts cube or observation definition file [obs.xml] obs_irf.xml
106   - Source model [$CTOOLS/share/models/crab.xml]
107   - Source model output file [crab_results.xml]
  104 + $ ctlike chatter=3
  105 + Input event list, counts cube or observation definition XML file [events.fits] obs_irf.xml
  106 + Input model XML file [$CTOOLS/share/models/crab.xml]
  107 + Output model XML file [crab_results.xml]
108 108  
109 109 To see the usage of the individual response functions you may inspect the
110   -log file. You will notice that each observation now has a specific response
  110 +log file (you need to set ``chatter=3`` to see the details of the
  111 +observations in the log file).
  112 +You will notice that each observation now has a specific response
111 113 function and that the filename of the response information differs for
112 114 both observations.
113 115  
114 116 .. code-block:: xml
115 117  
116   - 2015-05-22T22:06:43: +==============+
117   - 2015-05-22T22:06:43: | Observations |
118   - 2015-05-22T22:06:43: +==============+
119   - 2015-05-22T22:06:43: === GObservations ===
120   - 2015-05-22T22:06:43: Number of observations ....: 2
121   - 2015-05-22T22:06:43: Number of predicted events : 0
122   - 2015-05-22T22:06:43: === GCTAObservation ===
123   - 2015-05-22T22:06:43: Name ......................:
124   - 2015-05-22T22:06:43: Identifier ................: 00001
125   - 2015-05-22T22:06:43: Instrument ................: CTA
126   - 2015-05-22T22:06:43: Event file ................: events1.fits
127   - 2015-05-22T22:06:43: Event type ................: EventList
128   - 2015-05-22T22:06:43: Statistics ................: Poisson
129   - 2015-05-22T22:06:43: Ontime ....................: 1800 s
130   - 2015-05-22T22:06:43: Livetime ..................: 1710 s
131   - 2015-05-22T22:06:43: Deadtime correction .......: 0.95
132   - 2015-05-22T22:06:43: User energy range .........: undefined
133   - 2015-05-22T22:06:43: === GCTAPointing ===
134   - 2015-05-22T22:06:43: Pointing direction ........: (RA,Dec)=(83.63,21.51)
135   - 2015-05-22T22:06:43: === GCTAResponseIrf ===
136   - 2015-05-22T22:06:43: Caldb mission .............: cta
137   - 2015-05-22T22:06:43: Caldb instrument ..........: prod2
138   - 2015-05-22T22:06:43: Response name .............: North_50h
139   - 2015-05-22T22:06:43: Energy dispersion .........: Not used
140   - 2015-05-22T22:06:43: Save energy range .........: undefined
  118 + 2015-12-07T22:22:18: +==============+
  119 + 2015-12-07T22:22:18: | Observations |
  120 + 2015-12-07T22:22:18: +==============+
  121 + 2015-12-07T22:22:18: === GObservations ===
  122 + 2015-12-07T22:22:18: Number of observations ....: 2
  123 + 2015-12-07T22:22:18: Number of models ..........: 2
  124 + 2015-12-07T22:22:18: Number of predicted events : 0
  125 + 2015-12-07T22:22:18: === GCTAObservation ===
  126 + 2015-12-07T22:22:18: Name ......................: Crab
  127 + 2015-12-07T22:22:18: Identifier ................: 00001
  128 + 2015-12-07T22:22:18: Instrument ................: CTA
  129 + 2015-12-07T22:22:18: Event file ................: north.fits
  130 + 2015-12-07T22:22:18: Event type ................: EventList
  131 + 2015-12-07T22:22:18: Statistics ................: Poisson
  132 + 2015-12-07T22:22:18: Ontime ....................: 1800 s
  133 + 2015-12-07T22:22:18: Livetime ..................: 1710 s
  134 + 2015-12-07T22:22:18: Deadtime correction .......: 0.95
  135 + 2015-12-07T22:22:18: User energy range .........: undefined
  136 + 2015-12-07T22:22:18: === GCTAPointing ===
  137 + 2015-12-07T22:22:18: Pointing direction ........: (RA,Dec)=(83.63,21.51)
  138 + 2015-12-07T22:22:18: === GCTAResponseIrf ===
  139 + 2015-12-07T22:22:18: Caldb mission .............: cta
  140 + 2015-12-07T22:22:18: Caldb instrument ..........: prod2
  141 + 2015-12-07T22:22:18: Response name .............: North_0.5h
  142 + 2015-12-07T22:22:18: Energy dispersion .........: Not used
  143 + 2015-12-07T22:22:18: Save energy range .........: undefined
  144 + 2015-12-07T22:22:18: === GCTAEventList ===
  145 + 2015-12-07T22:22:18: Number of events ..........: 8469
  146 + 2015-12-07T22:22:18: Time interval .............: 51544.5 - 51544.5 days
  147 + 2015-12-07T22:22:18: Energy interval ...........: 0.1 - 100 TeV
  148 + 2015-12-07T22:22:18: Region of interest ........: RA=83.63, DEC=21.51 [0,0] Radius=5 deg
  149 + 2015-12-07T22:22:18: === GCTAObservation ===
  150 + 2015-12-07T22:22:18: Name ......................: Crab
  151 + 2015-12-07T22:22:18: Identifier ................: 00002
  152 + 2015-12-07T22:22:18: Instrument ................: CTA
  153 + 2015-12-07T22:22:18: Event file ................: south.fits
  154 + 2015-12-07T22:22:18: Event type ................: EventList
  155 + 2015-12-07T22:22:18: Statistics ................: Poisson
  156 + 2015-12-07T22:22:18: Ontime ....................: 1800 s
  157 + 2015-12-07T22:22:18: Livetime ..................: 1710 s
  158 + 2015-12-07T22:22:18: Deadtime correction .......: 0.95
  159 + 2015-12-07T22:22:18: User energy range .........: undefined
  160 + 2015-12-07T22:22:18: === GCTAPointing ===
  161 + 2015-12-07T22:22:18: Pointing direction ........: (RA,Dec)=(83.63,22.51)
  162 + 2015-12-07T22:22:18: === GCTAResponseIrf ===
  163 + 2015-12-07T22:22:18: Caldb mission .............: cta
  164 + 2015-12-07T22:22:18: Caldb instrument ..........: prod2
  165 + 2015-12-07T22:22:18: Response name .............: South_0.5h
  166 + 2015-12-07T22:22:18: Energy dispersion .........: Not used
  167 + 2015-12-07T22:22:18: Save energy range .........: undefined
  168 + 2015-12-07T22:22:18: === GCTAEventList ===
  169 + 2015-12-07T22:22:18: Number of events ..........: 22529
  170 + 2015-12-07T22:22:18: Time interval .............: 51544.5 - 51544.5 days
  171 + 2015-12-07T22:22:18: Energy interval ...........: 0.1 - 100 TeV
  172 + 2015-12-07T22:22:18: Region of interest ........: RA=83.63, DEC=22.51 [0,0] Radius=5 deg
141 173 ...
142   - 2015-05-22T22:06:43: === GCTAObservation ===
143   - 2015-05-22T22:06:43: Name ......................:
144   - 2015-05-22T22:06:43: Identifier ................: 00002
145   - 2015-05-22T22:06:43: Instrument ................: CTA
146   - 2015-05-22T22:06:43: Event file ................: events2.fits
147   - 2015-05-22T22:06:43: Event type ................: EventList
148   - 2015-05-22T22:06:43: Statistics ................: Poisson
149   - 2015-05-22T22:06:43: Ontime ....................: 1800 s
150   - 2015-05-22T22:06:43: Livetime ..................: 1710 s
151   - 2015-05-22T22:06:43: Deadtime correction .......: 0.95
152   - 2015-05-22T22:06:43: User energy range .........: undefined
153   - 2015-05-22T22:06:43: === GCTAPointing ===
154   - 2015-05-22T22:06:43: Pointing direction ........: (RA,Dec)=(83.63,22.51)
155   - 2015-05-22T22:06:43: === GCTAResponseIrf ===
156   - 2015-05-22T22:06:43: Caldb mission .............: cta
157   - 2015-05-22T22:06:43: Caldb instrument ..........: prod2
158   - 2015-05-22T22:06:43: Response name .............: South_50h
159   - 2015-05-22T22:06:43: Energy dispersion .........: Not used
160   - 2015-05-22T22:06:43: Save energy range .........: undefined
  174 + 2015-12-07T22:22:18: +=================================+
  175 + 2015-12-07T22:22:18: | Maximum likelihood optimisation |
  176 + 2015-12-07T22:22:18: +=================================+
  177 + 2015-12-07T22:22:18: >Iteration 0: -logL=214691.468, Lambda=1.0e-03
  178 + 2015-12-07T22:22:18: >Iteration 1: -logL=214679.380, Lambda=1.0e-03, delta=12.088, max(|grad|)=9.713100 [Index:3]
  179 + 2015-12-07T22:22:18: >Iteration 2: -logL=214679.365, Lambda=1.0e-04, delta=0.015, max(|grad|)=0.092975 [Index:3]
  180 + 2015-12-07T22:22:18: >Iteration 3: -logL=214679.365, Lambda=1.0e-05, delta=0.000, max(|grad|)=0.000749 [Index:3]
161 181 ...
162   - 2015-05-22T22:06:43: +=================================+
163   - 2015-05-22T22:06:43: | Maximum likelihood optimisation |
164   - 2015-05-22T22:06:43: +=================================+
165   - 2015-05-22T22:06:43: >Iteration 0: -logL=138039.472, Lambda=1.0e-03
166   - 2015-05-22T22:06:43: >Iteration 1: -logL=138035.501, Lambda=1.0e-03, delta=3.971, max(|grad|)=16.203761 [Index:7]
167   - 2015-05-22T22:06:43: >Iteration 2: -logL=138035.496, Lambda=1.0e-04, delta=0.005, max(|grad|)=-0.053284 [Index:7]
168   - 2015-05-22T22:06:43: >Iteration 3: -logL=138035.496, Lambda=1.0e-05, delta=0.000, max(|grad|)=0.001386 [Index:7]
169   - 2015-05-22T22:06:44:
170   - 2015-05-22T22:06:44: +=========================================+
171   - 2015-05-22T22:06:44: | Maximum likelihood optimization results |
172   - 2015-05-22T22:06:44: +=========================================+
173   - 2015-05-22T22:06:44: === GOptimizerLM ===
174   - 2015-05-22T22:06:44: Optimized function value ..: 138035.496
175   - 2015-05-22T22:06:44: Absolute precision ........: 0.005
176   - 2015-05-22T22:06:44: Acceptable value decrease .: 2
177   - 2015-05-22T22:06:44: Optimization status .......: converged
178   - 2015-05-22T22:06:44: Number of parameters ......: 10
179   - 2015-05-22T22:06:44: Number of free parameters .: 4
180   - 2015-05-22T22:06:44: Number of iterations ......: 3
181   - 2015-05-22T22:06:44: Lambda ....................: 1e-06
182   - 2015-05-22T22:06:44: Maximum log likelihood ....: -138035.496
183   - 2015-05-22T22:06:44: Observed events (Nobs) ...: 20814.000
184   - 2015-05-22T22:06:44: Predicted events (Npred) ..: 20814.000 (Nobs - Npred = 2.67698e-06)
185   - 2015-05-22T22:06:44: === GModels ===
186   - 2015-05-22T22:06:44: Number of models ..........: 2
187   - 2015-05-22T22:06:44: Number of parameters ......: 10
188   - 2015-05-22T22:06:44: === GModelSky ===
189   - 2015-05-22T22:06:44: Name ......................: Crab
190   - 2015-05-22T22:06:44: Instruments ...............: all
191   - 2015-05-22T22:06:44: Instrument scale factors ..: unity
192   - 2015-05-22T22:06:44: Observation identifiers ...: all
193   - 2015-05-22T22:06:44: Model type ................: PointSource
194   - 2015-05-22T22:06:44: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
195   - 2015-05-22T22:06:44: Number of parameters ......: 6
196   - 2015-05-22T22:06:44: Number of spatial par's ...: 2
197   - 2015-05-22T22:06:44: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
198   - 2015-05-22T22:06:44: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
199   - 2015-05-22T22:06:44: Number of spectral par's ..: 3
200   - 2015-05-22T22:06:44: Prefactor ................: 5.9184e-16 +/- 9.68924e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
201   - 2015-05-22T22:06:44: Index ....................: -2.49569 +/- 0.0145376 [-0,-5] (free,scale=-1,gradient)
202   - 2015-05-22T22:06:44: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
203   - 2015-05-22T22:06:44: Number of temporal par's ..: 1
204   - 2015-05-22T22:06:44: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
205   - 2015-05-22T22:06:44: === GCTAModelIrfBackground ===
206   - 2015-05-22T22:06:44: Name ......................: CTABackgroundModel
207   - 2015-05-22T22:06:44: Instruments ...............: CTA
208   - 2015-05-22T22:06:44: Instrument scale factors ..: unity
209   - 2015-05-22T22:06:44: Observation identifiers ...: all
210   - 2015-05-22T22:06:44: Model type ................: "PowerLaw" * "Constant"
211   - 2015-05-22T22:06:44: Number of parameters ......: 4
212   - 2015-05-22T22:06:44: Number of spectral par's ..: 3
213   - 2015-05-22T22:06:44: Prefactor ................: 1.02524 +/- 0.0182054 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
214   - 2015-05-22T22:06:44: Index ....................: 0.0229728 +/- 0.0104713 [-5,5] (free,scale=1,gradient)
215   - 2015-05-22T22:06:44: PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
216   - 2015-05-22T22:06:44: Number of temporal par's ..: 1
217   - 2015-05-22T22:06:44: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
218   -
219   -
  182 + 2015-12-07T22:22:18: +=========================================+
  183 + 2015-12-07T22:22:18: | Maximum likelihood optimisation results |
  184 + 2015-12-07T22:22:18: +=========================================+
  185 + 2015-12-07T22:22:18: === GOptimizerLM ===
  186 + 2015-12-07T22:22:18: Optimized function value ..: 214679.365
  187 + 2015-12-07T22:22:18: Absolute precision ........: 0.005
  188 + 2015-12-07T22:22:18: Acceptable value decrease .: 2
  189 + 2015-12-07T22:22:18: Optimization status .......: converged
  190 + 2015-12-07T22:22:18: Number of parameters ......: 10
  191 + 2015-12-07T22:22:18: Number of free parameters .: 4
  192 + 2015-12-07T22:22:18: Number of iterations ......: 3
  193 + 2015-12-07T22:22:18: Lambda ....................: 1e-06
  194 + 2015-12-07T22:22:18: Maximum log likelihood ....: -214679.365
  195 + 2015-12-07T22:22:18: Observed events (Nobs) ...: 30998.000
  196 + 2015-12-07T22:22:18: Predicted events (Npred) ..: 30998.000 (Nobs - Npred = 1.02755e-06)
  197 + 2015-12-07T22:22:18: === GModels ===
  198 + 2015-12-07T22:22:18: Number of models ..........: 2
  199 + 2015-12-07T22:22:18: Number of parameters ......: 10
  200 + 2015-12-07T22:22:18: === GModelSky ===
  201 + 2015-12-07T22:22:18: Name ......................: Crab
  202 + 2015-12-07T22:22:18: Instruments ...............: all
  203 + 2015-12-07T22:22:18: Instrument scale factors ..: unity
  204 + 2015-12-07T22:22:18: Observation identifiers ...: all
  205 + 2015-12-07T22:22:18: Model type ................: PointSource
  206 + 2015-12-07T22:22:18: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
  207 + 2015-12-07T22:22:18: Number of parameters ......: 6
  208 + 2015-12-07T22:22:18: Number of spatial par's ...: 2
  209 + 2015-12-07T22:22:18: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
  210 + 2015-12-07T22:22:18: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
  211 + 2015-12-07T22:22:18: Number of spectral par's ..: 3
  212 + 2015-12-07T22:22:18: Prefactor ................: 5.81237e-16 +/- 8.63534e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
  213 + 2015-12-07T22:22:18: Index ....................: -2.53954 +/- 0.0137432 [-0,-5] (free,scale=-1,gradient)
  214 + 2015-12-07T22:22:18: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
  215 + 2015-12-07T22:22:18: Number of temporal par's ..: 1
  216 + 2015-12-07T22:22:18: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
  217 + 2015-12-07T22:22:18: === GCTAModelIrfBackground ===
  218 + 2015-12-07T22:22:18: Name ......................: CTABackgroundModel
  219 + 2015-12-07T22:22:18: Instruments ...............: CTA
  220 + 2015-12-07T22:22:18: Instrument scale factors ..: unity
  221 + 2015-12-07T22:22:18: Observation identifiers ...: all
  222 + 2015-12-07T22:22:18: Model type ................: "PowerLaw" * "Constant"
  223 + 2015-12-07T22:22:18: Number of parameters ......: 4
  224 + 2015-12-07T22:22:18: Number of spectral par's ..: 3
  225 + 2015-12-07T22:22:18: Prefactor ................: 1.01067 +/- 0.0103997 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
  226 + 2015-12-07T22:22:18: Index ....................: 0.0135414 +/- 0.0064452 [-5,5] (free,scale=1,gradient)
  227 + 2015-12-07T22:22:18: PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
  228 + 2015-12-07T22:22:18: Number of temporal par's ..: 1
  229 + 2015-12-07T22:22:18: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
220 230  
221 231 A more fine grained control over the response function can be achieved by
222 232 specifying individual filenames for the various response components.
... ... @@ -228,18 +238,18 @@ This is definitely expert mode, to be used with utmost care.
228 238 <?xml version="1.0" standalone="no"?>
229 239 <observation_list title="observation library">
230 240 <observation name="Crab" id="00001" instrument="CTA">
231   - <parameter name="EventList" file="events1.fits"/>
232   - <parameter name="EffectiveArea" file="$(CALDB)/data/cta/prod2/bcf/North_50h/irf_file.fits.gz"/>
233   - <parameter name="PointSpreadFunction" file="$(CALDB)/data/cta/prod2/bcf/North_50h/irf_file.fits.gz"/>
234   - <parameter name="EnergyDispersion" file="$(CALDB)/data/cta/prod2/bcf/North_50h/irf_file.fits.gz"/>
235   - <parameter name="Background" file="$(CALDB)/data/cta/prod2/bcf/North_50h/irf_file.fits.gz"/>
  241 + <parameter name="EventList" file="north.fits"/>
  242 + <parameter name="EffectiveArea" file="$(CALDB)/data/cta/prod2/bcf/North_0.5h/irf_file.fits.gz"/>
  243 + <parameter name="PointSpreadFunction" file="$(CALDB)/data/cta/prod2/bcf/North_0.5h/irf_file.fits.gz"/>
  244 + <parameter name="EnergyDispersion" file="$(CALDB)/data/cta/prod2/bcf/North_0.5h/irf_file.fits.gz"/>
  245 + <parameter name="Background" file="$(CALDB)/data/cta/prod2/bcf/North_0.5h/irf_file.fits.gz"/>
236 246 </observation>
237 247 <observation name="Crab" id="00002" instrument="CTA">
238   - <parameter name="EventList" file="events2.fits"/>
239   - <parameter name="EffectiveArea" file="$(CALDB)/data/cta/prod2/bcf/South_50h/irf_file.fits.gz"/>
240   - <parameter name="PointSpreadFunction" file="$(CALDB)/data/cta/prod2/bcf/South_50h/irf_file.fits.gz"/>
241   - <parameter name="EnergyDispersion" file="$(CALDB)/data/cta/prod2/bcf/South_50h/irf_file.fits.gz"/>
242   - <parameter name="Background" file="$(CALDB)/data/cta/prod2/bcf/South_50h/irf_file.fits.gz"/>
  248 + <parameter name="EventList" file="south.fits"/>
  249 + <parameter name="EffectiveArea" file="$(CALDB)/data/cta/prod2/bcf/South_0.5h/irf_file.fits.gz"/>
  250 + <parameter name="PointSpreadFunction" file="$(CALDB)/data/cta/prod2/bcf/South_0.5h/irf_file.fits.gz"/>
  251 + <parameter name="EnergyDispersion" file="$(CALDB)/data/cta/prod2/bcf/South_0.5h/irf_file.fits.gz"/>
  252 + <parameter name="Background" file="$(CALDB)/data/cta/prod2/bcf/South_0.5h/irf_file.fits.gz"/>
243 253 </observation>
244 254 </observation_list>
245 255  
... ... @@ -264,5 +274,3 @@ file is given below:
264 274 <parameter name="BkgCube" file="bkgcube2.fits"/>
265 275 </observation>
266 276 </observation_list>
267   -
268   -
... ...
doc/source/user_manual/getting_started/beyond_model.rst
... ... @@ -26,20 +26,15 @@ specified by the following observation definition XML file:
26 26 </observation>
27 27 </observation_list>
28 28  
29   -Each observation has a **unique identifier string** and we can use this
30   -unique string to connect that observation to a specific model component.
  29 +Each observation has a **unique identifier string** and you can use this
  30 +unique string to connect an observation to a specific model component.
31 31 This is illustrated in the model XML file below that now has two background
32 32 components.
33   -**Model components in a XML file need to have a unique name**, for this
34   -reason we have named the components ``Background_00001`` and
35   -``Background_00002``.
36   -Both components now have an ``id`` attribute that ties the model to
37   -an observation.
38   -In other words, the model is only applicable to a specific observation
39   -(it will be ignored for all other observations).
40   -In our case, model ``Background_00001`` applies to the ``events1.fits``
41   -event list while model ``Background_00002`` applies to the ``events2.fits``
42   -event list.
  33 +Both components have an ``id`` attribute that ties the model to a specific
  34 +observation.
  35 +Using ``id="00001"``, the first background model is tied to the
  36 +``events1.fits`` file, using ``id="00002"``, the second background model is
  37 +tied to the ``events2.fits`` file.
43 38  
44 39 .. code-block:: xml
45 40  
... ... @@ -72,13 +67,21 @@ event list.
72 67 </source>
73 68 </source_library>
74 69  
75   -Note that both background model components distinguish in their event rate;
76   -component ``Background_00002`` has a ten times larger background rate than
77   -component ``Background_00001``.
78   -To illustrate this difference, we simulated two observations offset by
79   -+/- 2 degrees from the Crab nebulae using :ref:`ctobssim`.
80   -We then performed a joint fit of the observations using :ref:`ctlike`
81   -and created a resdiual map using :ref:`csresmap` that is shown below.
  70 +.. note::
  71 +
  72 + **Model components in a XML file need to have a unique name.**
  73 + For this reason the components are named here ``Background_00001``
  74 + and ``Background_00002``.
  75 +
  76 +Note that both background model components distinguish in their event rate.
  77 +``Background_00002`` has a ten times larger background rate than
  78 +``Background_00001``.
  79 +To illustrate this difference, two observations offset by +/- 2 degrees from
  80 +the Crab nebulae have been simulated using :ref:`ctobssim`.
  81 +A joint fit of the observations is then performed using :ref:`ctlike` and
  82 +a residual map is created using :ref:`csresmap`.
  83 +
  84 +The result is shown below.
82 85 Obviously, the upper observation has larger residuals owing to the ten
83 86 times larger background rate that was used in the simulation of the
84 87 associated data.
... ...
doc/source/user_manual/getting_started/beyond_residual.rst
... ... @@ -22,11 +22,11 @@ Suppose that you have done the following unbinned ``ctlike`` analysis:
22 22 .. code-block:: bash
23 23  
24 24 $ ctlike
25   - Event list, counts cube or observation definition file [events.fits] obs.xml
  25 + Input event list, counts cube or observation definition XML file [events.fits] obs.xml
26 26 Calibration database [prod2]
27   - Instrument response function [South_50h]
28   - Source model [$CTOOLS/share/models/crab.xml]
29   - Source model output file [crab_results.xml]
  27 + Instrument response function [South_0.5h]
  28 + Input model XML file [$CTOOLS/share/models/crab.xml]
  29 + Output model XML file [crab_results.xml]
30 30  
31 31 The :ref:`csresmap` script is then used as follows:
32 32  
... ... @@ -34,18 +34,19 @@ The :ref:`csresmap` script is then used as follows:
34 34  
35 35 $ csresmap
36 36 Parfile csresmap.par not found. Create default parfile.
37   - Event list, counts cube, or observation definition file [events.fits] obs.xml
  37 + Input event list, counts cube, or observation definition XML file [events.fits] obs.xml
38 38 Calibration database [prod2]
39   - Instrument response function [South_50h]
40   - Source model [$CTOOLS/share/models/crab.xml] crab_results.xml
41   - Output residual map [resmap.fits]
42   - First coordinate of image center in degrees (RA or galactic l) [83.63]
43   - Second coordinate of image center in degrees (DEC or galactic b) [22.01]
  39 + Instrument response function [South_0.5h]
  40 + Input model XML file [$CTOOLS/share/models/crab.xml] crab_results.xml
  41 + First coordinate of image center in degrees (RA or galactic l) (0-360) [83.63]
  42 + Second coordinate of image center in degrees (DEC or galactic b) (-90-90) [22.01]
44 43 Coordinate System (CEL|GAL) [CEL]
45   - Projection method e.g. AIT|AZP|CAR|MER|MOL|STG|TAN (AIT|AZP|CAR|MER|MOL|STG|TAN) [CAR]
  44 + Projection method (AIT|AZP|CAR|MER|MOL|STG|TAN) [CAR]
46 45 Size of the X axis in pixels [200]
47 46 Size of the Y axis in pixels [200]
48 47 Pixel size (deg/pixel) [0.02]
  48 + Output residual map file [resmap.fits]
  49 + Residual map computation algorithm (SUB|SUBDIV|SUBDIVSQRT) [SUBDIV]
49 50  
50 51 In our example, the map will cover a field of 4 x 4 degrees centred on the
51 52 Crab nebula at a pixel scale of 0.02 degrees per pixel.
... ...
doc/source/user_manual/getting_started/beyond_stacked.rst
... ... @@ -6,16 +6,15 @@ Performing a stacked analysis
6 6 A stacked analysis is a binned analysis where all data from multiple
7 7 observations are stacked into a single counts cube.
8 8 The event stacking is done using the :ref:`ctbin` tool.
9   -Instead of providing to :ref:`ctbin` an event list we
10   -now specify the observation definition XML file ``obs.xml``
11   -on input.
  9 +Instead of providing to :ref:`ctbin` an event list you should now
  10 +specify the observation definition XML file ``obs.xml`` on input.
12 11 :ref:`ctbin` will then loop over all observations and collect all events
13 12 into a single counts cube:
14 13  
15 14 .. code-block:: bash
16 15  
17 16 $ ctbin
18   - Event list or observation definition file [events.fits] obs.xml
  17 + Input event list or observation definition XML file [events.fits] obs.xml
19 18 First coordinate of image center in degrees (RA or galactic l) (0-360) [83.63]
20 19 Second coordinate of image center in degrees (DEC or galactic b) (-90-90) [22.01]
21 20 Projection method (AIT|AZP|CAR|MER|MOL|STG|TAN) [CAR]
... ... @@ -27,37 +26,37 @@ into a single counts cube:
27 26 Start value for first energy bin in TeV [0.1]
28 27 Stop value for last energy bin in TeV [100.0]
29 28 Number of energy bins [20]
30   - Output counts cube [cntcube.fits]
  29 + Output counts cube file [cntcube.fits]
31 30  
32   -We now have a stacked counts cube ``cntcube.fits`` on disk.
33   -Before we can use that counts cube in a maximum likelihood
34   -analysis, we have to compute the instrument response and the
  31 +You now have a stacked counts cube ``cntcube.fits`` on disk.
  32 +Before you can use that counts cube in a maximum likelihood
  33 +analysis, you have to compute the instrument response and the
35 34 background model that are needed to describe the stacked data.
36 35  
37   -For the former, we have to compute the total exposure for the stacked
  36 +For the former, you have to compute the total exposure for the stacked
38 37 cube (i.e. the sum of the effective areas for each observation multiplied
39 38 by the corresponding livetimes) and an effective point spread function
40 39 (i.e. the point spread function of the different observations weighted by
41 40 the corresponding exposures).
42   -To get both informations we use the :ref:`ctexpcube` and
  41 +To get both informations you use the :ref:`ctexpcube` and
43 42 :ref:`ctpsfcube` tools:
44 43  
45 44 .. code-block:: bash
46 45  
47 46 $ ctexpcube
48   - Event list or observation definition file [NONE] obs.xml
  47 + Input event list or observation definition XML file [NONE] obs.xml
49 48 Calibration database [prod2]
50   - Instrument response function [South_50h]
51   - Counts cube for exposure cube definition [NONE] cntcube.fits
  49 + Instrument response function [South_0.5h]
  50 + Input counts cube file to extract exposure cube definition [NONE] cntcube.fits
52 51 Output exposure cube file [expcube.fits]
53 52  
54 53 .. code-block:: bash
55 54  
56 55 $ ctpsfcube
57   - Event list or observation definition file [NONE] obs.xml
  56 + Input event list or observation definition XML file [NONE] obs.xml
58 57 Calibration database [prod2]
59   - Instrument response function [South_50h]
60   - Counts cube for psf cube definition [NONE]
  58 + Instrument response function [South_0.5h]
  59 + Input counts cube file to extract PSF cube definition [NONE]
61 60 First coordinate of image center in degrees (RA or galactic l) (0-360) [83.63]
62 61 Second coordinate of image center in degrees (DEC or galactic b) (-90-90) [22.01]
63 62 Projection method (AIT|AZP|CAR|MER|MOL|STG|TAN) [CAR]
... ... @@ -68,42 +67,41 @@ To get both informations we use the :ref:`ctexpcube` and
68 67 Lower energy limit (TeV) [0.1]
69 68 Upper energy limit (TeV) [100.0]
70 69 Number of energy bins [20]
71   - Output psf cube file [psfcube.fits]
72   -
73   -We provide the ``obs.xml`` file on input to inform both tools which
74   -observations have been combined.
75   -For :ref:`ctexpcube` we further provide the counts cube so that the
76   -tool can copy the exposure cube definition (number of spatial pixels
77   -and pixel size, number of energy bins) from the counts cube.
78   -This minimises the number of further user parameters that need to be
79   -provided and assures an exposure cube that is compatible with the counts
80   -cube.
81   -For :ref:`ctpsfcube` we do not use the counts cube for the PSF cube
82   -definition as this would lead to a hugh file owing to the fine spatial
  70 + Output PSF cube file [psfcube.fits]
  71 +
  72 +The ``obs.xml`` file has been provided on input to specify for both tools
  73 +which observations have been combined.
  74 +You further provided the counts cube on input so that :ref:`ctexpcube` can
  75 +read the cub definition from that file and apply it to the exposure cube.
  76 +This is a trick to reduce the number of user parameters that you need to
  77 +provide.
  78 +
  79 +You do not apply this trick when using :ref:`ctpsfcube` as this
  80 +would lead to a hugh output file owing to the fine spatial
83 81 pixelisation of the counts cube.
84   -Since the PSF evolves only slowly over the field of fiew, we provide a
85   -rather coarse spatial binning of 1 degree covering a grid of 10 x 10
86   -degrees around the centre of the counts cube.
87   -For the energy binning, we use the same logarithmic binning that has
88   -also been used for the counts cube.
  82 +Such a fine binning is not needed for the PSF cube, as the PSF evolves
  83 +only slowly over the field of view.
  84 +It is thus sufficient to compute a PSF cube with a rather coarse spatial
  85 +binning; here you used a spatial binning of 1 degree covering a grid of
  86 +10 x 10 degrees.
89 87  
90   -As final step of the analysis preparation, we need to generate a
  88 +As final step of the analysis preparation, you need to generate a
91 89 background cube using the :ref:`ctbkgcube` tool:
92 90  
93 91 .. code-block:: bash
94 92  
95 93 $ ctbkgcube
96   - Input event list or observation definition file [NONE] obs.xml
  94 + Input event list or observation definition XML file [NONE] obs.xml
97 95 Calibration database [prod2]
98   - Instrument response function [South_50h]
99   - Counts cube for background cube definition [NONE] cntcube.fits
  96 + Instrument response function [South_0.5h]
  97 + Input counts cube file to extract background cube definition [NONE] cntcube.fits
100 98 Input model XML file [NONE] $CTOOLS/share/models/crab.xml
101 99 Output background cube file [bkgcube.fits]
102 100 Output model XML file [NONE] model.xml
103 101  
104 102 The usage of :ref:`ctbkgcube` is very similar to that of :ref:`ctexpcube`,
105 103 yet it takes the model XML file as an additional input parameter.
106   -We here use the usual ``$CTOOLS/share/models/crab.xml`` model
  104 +You used here the usual ``$CTOOLS/share/models/crab.xml`` model
107 105 file that is shipped with the ctools.
108 106 :ref:`ctbkgcube` provides on output the background cube file
109 107 ``bkgcube.fits`` and the model XML file ``model.xml`` that can
... ... @@ -115,7 +113,7 @@ modelling works:
115 113  
116 114 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
117 115 <source_library title="source library">
118   - <source name="Crab" type="PointSource" tscalc="0">
  116 + <source name="Crab" type="PointSource">
119 117 <spectrum type="PowerLaw">
120 118 <parameter name="Prefactor" value="5.7" error="0" scale="1e-16" min="1e-07" max="1000" free="1" />
121 119 <parameter name="Index" value="2.48" error="0" scale="-1" min="0" max="5" free="1" />
... ... @@ -157,88 +155,88 @@ as an appropriate multiplicator to the background cube.
157 155 Using the same binning for the exposure cube, the background cube and
158 156 the counts cube is only a convenience.
159 157  
160   -Now we have all files at hand to launch a stacked maximum likelihood
  158 +Now you have all files at hand to perform a stacked maximum likelihood
161 159 analysis using the :ref:`ctlike` tool:
162 160  
163 161 .. code-block:: bash
164 162  
165 163 $ ctlike
166   - Event list, counts cube or observation definition file [obs.xml] cntcube.fits
167   - Exposure cube file (only needed for stacked analysis) [NONE] expcube.fits
168   - PSF cube file (only needed for stacked analysis) [NONE] psfcube.fits
169   - Background cube file (only needed for stacked analysis) [NONE] bkgcube.fits
170   - Source model [$CTOOLS/share/models/crab.xml] model.xml
171   - Source model output file [crab_results.xml]
  164 + Input event list, counts cube or observation definition XML file [obs.xml] cntcube.fits
  165 + Input exposure cube file (only needed for stacked analysis) [NONE] expcube.fits
  166 + Input PSF cube file (only needed for stacked analysis) [NONE] psfcube.fits
  167 + Input background cube file (only needed for stacked analysis) [NONE] bkgcube.fits
  168 + Input model XML file [$CTOOLS/share/models/crab.xml] model.xml
  169 + Output model XML file [crab_results.xml]
172 170  
173 171 :ref:`ctlike` recognises that a counts cube should be analysed and queries
174 172 for the exposure cube, the PSF cube, and the background cube file names.
175   -We specified the names of the files produced by the :ref:`ctexpcube`,
  173 +You specified here the names of the files produced by the :ref:`ctexpcube`,
176 174 the :ref:`ctpsfcube` and the :ref:`ctbkgcube` tools.
177   -Furthermore we provided as model the ``model.xml`` file that has been
  175 +Furthermore you provided as model the ``model.xml`` file that has been
178 176 generated by the :ref:`ctbkgcube` tool.
179 177  
180 178 The log file of the :ref:`ctlike` run is shown below.
181 179 Note that the spectral model that is multiplied with the background
182   -cube has a Prefactor of 1.09 +/- 0.02 and an Index of 0.03 +/- 0.01,
  180 +cube has a Prefactor of 0.998 +/- 0.011 and an Index of 0.006 +/- 0.007,
183 181 indicating a very small correction to the actual spectrum of the background
184 182 cube.
185 183 Real life situations may of course require larger correction factors.
186 184  
187 185 .. code-block:: xml
188 186  
189   - 2015-05-22T21:10:09: +=================================+
190   - 2015-05-22T21:10:09: | Maximum likelihood optimisation |
191   - 2015-05-22T21:10:09: +=================================+
192   - 2015-05-22T21:10:10: >Iteration 0: -logL=60663.798, Lambda=1.0e-03
193   - 2015-05-22T21:10:11: >Iteration 1: -logL=60642.413, Lambda=1.0e-03, delta=21.385, max(|grad|)=120.031102 [Index:7]
194   - 2015-05-22T21:10:13: >Iteration 2: -logL=60642.233, Lambda=1.0e-04, delta=0.180, max(|grad|)=1.139187 [Index:7]
195   - 2015-05-22T21:10:14: >Iteration 3: -logL=60642.233, Lambda=1.0e-05, delta=0.000, max(|grad|)=-0.001247 [Index:7]
196   - 2015-05-22T21:10:16:
197   - 2015-05-22T21:10:16: +=========================================+
198   - 2015-05-22T21:10:16: | Maximum likelihood optimization results |
199   - 2015-05-22T21:10:16: +=========================================+
200   - 2015-05-22T21:10:16: === GOptimizerLM ===
201   - 2015-05-22T21:10:16: Optimized function value ..: 60642.233
202   - 2015-05-22T21:10:16: Absolute precision ........: 0.005
203   - 2015-05-22T21:10:16: Acceptable value decrease .: 2
204   - 2015-05-22T21:10:16: Optimization status .......: converged
205   - 2015-05-22T21:10:16: Number of parameters ......: 10
206   - 2015-05-22T21:10:16: Number of free parameters .: 4
207   - 2015-05-22T21:10:16: Number of iterations ......: 3
208   - 2015-05-22T21:10:16: Lambda ....................: 1e-06
209   - 2015-05-22T21:10:16: Maximum log likelihood ....: -60642.233
210   - 2015-05-22T21:10:16: Observed events (Nobs) ...: 25963.000
211   - 2015-05-22T21:10:16: Predicted events (Npred) ..: 25963.000 (Nobs - Npred = 1.5749e-05)
212   - 2015-05-22T21:10:16: === GModels ===
213   - 2015-05-22T21:10:16: Number of models ..........: 2
214   - 2015-05-22T21:10:16: Number of parameters ......: 10
215   - 2015-05-22T21:10:16: === GModelSky ===
216   - 2015-05-22T21:10:16: Name ......................: Crab
217   - 2015-05-22T21:10:16: Instruments ...............: all
218   - 2015-05-22T21:10:16: Instrument scale factors ..: unity
219   - 2015-05-22T21:10:16: Observation identifiers ...: all
220   - 2015-05-22T21:10:16: Model type ................: PointSource
221   - 2015-05-22T21:10:16: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
222   - 2015-05-22T21:10:16: Number of parameters ......: 6
223   - 2015-05-22T21:10:16: Number of spatial par's ...: 2
224   - 2015-05-22T21:10:16: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
225   - 2015-05-22T21:10:16: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
226   - 2015-05-22T21:10:16: Number of spectral par's ..: 3
227   - 2015-05-22T21:10:16: Prefactor ................: 5.8499e-16 +/- 8.02289e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
228   - 2015-05-22T21:10:16: Index ....................: -2.49909 +/- 0.0118976 [-0,-5] (free,scale=-1,gradient)
229   - 2015-05-22T21:10:16: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
230   - 2015-05-22T21:10:16: Number of temporal par's ..: 1
231   - 2015-05-22T21:10:16: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
232   - 2015-05-22T21:10:16: === GCTAModelCubeBackground ===
233   - 2015-05-22T21:10:16: Name ......................: BackgroundModel
234   - 2015-05-22T21:10:16: Instruments ...............: CTA, HESS, MAGIC, VERITAS
235   - 2015-05-22T21:10:16: Instrument scale factors ..: unity
236   - 2015-05-22T21:10:16: Observation identifiers ...: all
237   - 2015-05-22T21:10:16: Model type ................: "PowerLaw" * "Constant"
238   - 2015-05-22T21:10:16: Number of parameters ......: 4
239   - 2015-05-22T21:10:16: Number of spectral par's ..: 3
240   - 2015-05-22T21:10:16: Prefactor ................: 1.08781 +/- 0.0212678 [0,infty[ ph/cm2/s/MeV (free,scale=1,gradient)
241   - 2015-05-22T21:10:16: Index ....................: 0.0269681 +/- 0.0111532 [-10,10] (free,scale=1,gradient)
242   - 2015-05-22T21:10:16: PivotEnergy ..............: 1e+06 MeV (fixed,scale=1e+06,gradient)
243   - 2015-05-22T21:10:16: Number of temporal par's ..: 1
244   - 2015-05-22T21:10:16: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
  187 + 2015-12-07T21:37:45: +=================================+
  188 + 2015-12-07T21:37:45: | Maximum likelihood optimisation |
  189 + 2015-12-07T21:37:45: +=================================+
  190 + 2015-12-07T21:37:46: >Iteration 0: -logL=83748.453, Lambda=1.0e-03
  191 + 2015-12-07T21:37:47: >Iteration 1: -logL=83736.039, Lambda=1.0e-03, delta=12.413, max(|grad|)=15.134616 [Index:3]
  192 + 2015-12-07T21:37:48: >Iteration 2: -logL=83736.021, Lambda=1.0e-04, delta=0.018, max(|grad|)=0.108613 [Index:3]
  193 + 2015-12-07T21:37:49: >Iteration 3: -logL=83736.021, Lambda=1.0e-05, delta=0.000, max(|grad|)=0.000570 [Index:3]
  194 + ...
  195 + 2015-12-07T21:37:51: +=========================================+
  196 + 2015-12-07T21:37:51: | Maximum likelihood optimisation results |
  197 + 2015-12-07T21:37:51: +=========================================+
  198 + 2015-12-07T21:37:51: === GOptimizerLM ===
  199 + 2015-12-07T21:37:51: Optimized function value ..: 83736.021
  200 + 2015-12-07T21:37:51: Absolute precision ........: 0.005
  201 + 2015-12-07T21:37:51: Acceptable value decrease .: 2
  202 + 2015-12-07T21:37:51: Optimization status .......: converged
  203 + 2015-12-07T21:37:51: Number of parameters ......: 10
  204 + 2015-12-07T21:37:51: Number of free parameters .: 4
  205 + 2015-12-07T21:37:51: Number of iterations ......: 3
  206 + 2015-12-07T21:37:51: Lambda ....................: 1e-06
  207 + 2015-12-07T21:37:51: Maximum log likelihood ....: -83736.021
  208 + 2015-12-07T21:37:51: Observed events (Nobs) ...: 35198.000
  209 + 2015-12-07T21:37:51: Predicted events (Npred) ..: 35198.000 (Nobs - Npred = 7.6773e-07)
  210 + 2015-12-07T21:37:51: === GModels ===
  211 + 2015-12-07T21:37:51: Number of models ..........: 2
  212 + 2015-12-07T21:37:51: Number of parameters ......: 10
  213 + 2015-12-07T21:37:51: === GModelSky ===
  214 + 2015-12-07T21:37:51: Name ......................: Crab
  215 + 2015-12-07T21:37:51: Instruments ...............: all
  216 + 2015-12-07T21:37:51: Instrument scale factors ..: unity
  217 + 2015-12-07T21:37:51: Observation identifiers ...: all
  218 + 2015-12-07T21:37:51: Model type ................: PointSource
  219 + 2015-12-07T21:37:51: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
  220 + 2015-12-07T21:37:51: Number of parameters ......: 6
  221 + 2015-12-07T21:37:51: Number of spatial par's ...: 2
  222 + 2015-12-07T21:37:51: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
  223 + 2015-12-07T21:37:51: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
  224 + 2015-12-07T21:37:51: Number of spectral par's ..: 3
  225 + 2015-12-07T21:37:51: Prefactor ................: 5.75289e-16 +/- 7.24749e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
  226 + 2015-12-07T21:37:51: Index ....................: -2.53122 +/- 0.0113068 [-0,-5] (free,scale=-1,gradient)
  227 + 2015-12-07T21:37:51: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
  228 + 2015-12-07T21:37:51: Number of temporal par's ..: 1
  229 + 2015-12-07T21:37:51: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
  230 + 2015-12-07T21:37:51: === GCTAModelCubeBackground ===
  231 + 2015-12-07T21:37:51: Name ......................: BackgroundModel
  232 + 2015-12-07T21:37:51: Instruments ...............: CTA, HESS, MAGIC, VERITAS
  233 + 2015-12-07T21:37:51: Instrument scale factors ..: unity
  234 + 2015-12-07T21:37:51: Observation identifiers ...: all
  235 + 2015-12-07T21:37:51: Model type ................: "PowerLaw" * "Constant"
  236 + 2015-12-07T21:37:51: Number of parameters ......: 4
  237 + 2015-12-07T21:37:51: Number of spectral par's ..: 3
  238 + 2015-12-07T21:37:51: Prefactor ................: 0.998055 +/- 0.0114979 [0.01,100] ph/cm2/s/MeV (free,scale=1,gradient)
  239 + 2015-12-07T21:37:51: Index ....................: 0.00648796 +/- 0.00697365 [-5,5] (free,scale=1,gradient)
  240 + 2015-12-07T21:37:51: PivotEnergy ..............: 1e+06 MeV (fixed,scale=1e+06,gradient)
  241 + 2015-12-07T21:37:51: Number of temporal par's ..: 1
  242 + 2015-12-07T21:37:51: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
... ...
doc/source/user_manual/getting_started/beyond_tsmap.rst
... ... @@ -3,13 +3,14 @@
3 3 Generating a Test Statistic map
4 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 5  
6   -In the above examples we were always considering that we knew exactly
  6 +In the above examples you have always considering that you knew exactly
7 7 where the source is located, but in real life situations this may not
8 8 necessarily be the case.
9   -We thus need a means to search for significant excess emission in our data.
  9 +You thus need a means to search for significant excess emission in your data.
10 10 One possibility to accomplish this task is to compute the Test Statistic
11 11 for a specific source at a grid of trial positions.
12 12 The :ref:`cttsmap` tool will exactly do that job.
  13 +
13 14 The Test Statistic is defined as twice the log-likelihood difference
14 15 between fitting a source at a given position on top of a model or fitting
15 16 no source.
... ... @@ -18,7 +19,7 @@ the source detection significance in Gaussian sigmas, although the
18 19 exact relation depends somewhat on the formulation of the statistical
19 20 problem.
20 21  
21   -Here an example where we apply the :ref:`cttsmap` tool to our two
  22 +Here an example of how to apply the :ref:`cttsmap` tool to the two
22 23 simulated observations of the Crab in unbinned mode.
23 24 On input we provide a source model XML file and the name of the source
24 25 in the XML file that should be moved on a grid of test positions.
... ... @@ -31,11 +32,11 @@ nominal position of the Crab nebula with a grid spacing of 0.02 degrees.
31 32 .. code-block:: bash
32 33  
33 34 $ cttsmap
34   - Input event list, counts cube or observation definition file [events.fits] obs.xml
  35 + Input event list, counts cube or observation definition XML file [events.fits] obs.xml
35 36 Calibration database [prod2]
36   - Instrument response function [South_50h]
37   - Source model [$CTOOLS/share/models/crab.xml]
38   - Test source [Crab]
  37 + Instrument response function [South_0.5h]
  38 + Input model XML file [$CTOOLS/share/models/crab.xml]
  39 + Test source name [Crab]
39 40 First coordinate of image center in degrees (RA or galactic l) (0-360) [83.63]
40 41 Second coordinate of image center in degrees (DEC or galactic b) (-90-90) [22.01]
41 42 Projection method (AIT|AZP|CAR|MER|MOL|STG|TAN) [CAR]
... ... @@ -43,14 +44,14 @@ nominal position of the Crab nebula with a grid spacing of 0.02 degrees.
43 44 Image scale (in degrees/pixel) [0.02]
44 45 Size of the X axis in pixels [200] 10
45 46 Size of the Y axis in pixels [200] 10
46   - Output Test Statistic map [tsmap.fits]
  47 + Output Test Statistic map file [tsmap.fits]
47 48  
48 49 :ref:`cttsmap` writes the Test Statistic map in the ``tsmap.fits`` file
49 50 that contains one extension for the Test Statistic value and further
50 51 extensions for the spectral parameters that have been fitted for the
51 52 source at each position of the grid.
52 53 The figure below show the Test Statistic map which reaches a maximum
53   -value of 37484 near the centre of the map.
  54 +value of 40733 near the centre of the map.
54 55  
55 56 .. figure:: tsmap-crab.png
56 57 :height: 400px
... ...
doc/source/user_manual/getting_started/binning.rst 0 → 100644
  1 +.. _sec_binning_cta:
  2 +
  3 +Binning CTA data
  4 +~~~~~~~~~~~~~~~~
  5 +
  6 +As next analysis step you will bin the data in a counts cube using
  7 +:ref:`ctbin`.
  8 +A counts cube is a 3 dimensional data cube, spanned by
  9 +Right Ascension (or Galactic longitude), Declination (or Galactic latitude),
  10 +and energy (typically logarithmically spaced, but this is under user
  11 +control).
  12 +
  13 +:ref:`ctbin` is executed by typing:
  14 +
  15 +.. code-block:: bash
  16 +
  17 + $ ctbin
  18 + Input event list or observation definition XML file [events.fits]
  19 + First coordinate of image center in degrees (RA or galactic l) (0-360) [83.63]
  20 + Second coordinate of image center in degrees (DEC or galactic b) (-90-90) [22.01]
  21 + Projection method (AIT|AZP|CAR|MER|MOL|STG|TAN) [CAR]
  22 + Coordinate system (CEL - celestial, GAL - galactic) (CEL|GAL) [CEL]
  23 + Image scale (in degrees/pixel) [0.02]
  24 + Size of the X axis in pixels [200]
  25 + Size of the Y axis in pixels [200]
  26 + Algorithm for defining energy bins (FILE|LIN|LOG) [LOG]
  27 + Start value for first energy bin in TeV [0.1]
  28 + Stop value for last energy bin in TeV [100.0]
  29 + Number of energy bins [20]
  30 + Output counts cube file [cntcube.fits]
  31 +
  32 +The counts cube will be centred on the location of the Crab (Right Ascension
  33 +83.63 degrees, Declination 22.01 degrees) and will be aligned in celestial
  34 +coordinates. A cartesian projection has been selected. The counts cube has
  35 +200 x 200 spatial pixels of 0.02 x 0.02 degrees in size, hence it covers a
  36 +total area of 4 x 4 degrees.
  37 +
  38 +The counts cube will contain 20 maps, which are logarithmically spaced
  39 +in energy, and which cover the energy range from 0.1 TeV to 100 TeV. In this
  40 +example, the counts cube will be saved as ``cntcube.fits`` in the working
  41 +directory. In addition to the counts cube, that is stored as the primary
  42 +image extension, the FITS file also contains an extension named ``EBOUNDS``
  43 +that defines the energy boundaries that were used, and an extension ``GTI``
  44 +that defines the Good Time Intervals that have been used. The following
  45 +image shows the resulting FITS file. The ``EBOUNDS`` table has 20 rows, one
  46 +for each energy bin, while the ``GTI`` table has just a single row, indicating
  47 +the start and stop time of the simulated data.
  48 +
  49 +.. figure:: cntmap-fits.jpg
  50 + :width: 600px
  51 + :align: center
  52 +
  53 + *Counts cube FITS file*
  54 +
  55 +
  56 +An image of the first bin, covering the energy range 100 - 141 GeV, is
  57 +shown below:
  58 +
  59 +.. figure:: cntmap-map.jpg
  60 + :height: 400px
  61 + :align: center
  62 +
  63 + *Counts cube for first energy bin*
  64 +
  65 +For illustration, the last few lines of the log file ``ctbin.log`` are
  66 +reproduced below:
  67 +
  68 +.. code-block:: xml
  69 +
  70 + 2015-12-07T20:52:41: +=================+
  71 + 2015-12-07T20:52:41: | Bin observation |
  72 + 2015-12-07T20:52:41: +=================+
  73 + 2015-12-07T20:52:41: === CTA observation ===
  74 + 2015-12-07T20:52:41: Events in list ............: 22685
  75 + 2015-12-07T20:52:41: Events in cube ............: 18195
  76 + 2015-12-07T20:52:41: Event bins outside RoI ....: 0
  77 + 2015-12-07T20:52:41: Events outside cube area ..: 4490
  78 + 2015-12-07T20:52:41: Events outside energy bins : 0
  79 +
  80 +From the 22685 events that have been simulated and stored in the
  81 +``events.fits`` file, 18195 lie within the cube boundaries and are thus put
  82 +into the resulting counts cube. The counts cube is stored in a cartesian
  83 +projection in a World Coordinate System (WCS) compliant format.
... ...
doc/source/user_manual/getting_started/butterfly.rst 0 → 100644
  1 +.. _sec_butterfly_cta:
  2 +
  3 +Calculating and visualising a butterfly diagram
  4 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5 +
  6 +To visualise the analysis results you can compute a butterfly diagram
  7 +which shows the confidence band of the spectral fit using the
  8 +:ref:`ctbutterfly` tool.
  9 +The butterfly diagram is the envelope of all power law models
  10 +that are within a given confidence limit compatible with the data.
  11 +By default a confidence level of 68% is used, but the level can be adjusted
  12 +using the hidden ``confidence`` parameter.
  13 +:ref:`ctbutterfly` computes this envelope by evaluating for each energy the
  14 +minimum and maximum intensity of all power law models that fall within the
  15 +error ellipse of the prefactor and index parameters.
  16 +The error ellipse is derived from the covariance matrix of a maximum
  17 +likelihood fit.
  18 +
  19 +The following example illustrates how you can use the :ref:`ctbutterfly`
  20 +tool:
  21 +
  22 +.. code-block:: bash
  23 +
  24 + $ ctbutterfly
  25 + Input event list, counts cube or observation definition XML file [events.fits]
  26 + Calibration database [prod2]
  27 + Instrument response function [South_0.5h]
  28 + Input model XML file [$CTOOLS/share/models/crab.xml] crab_results.xml
  29 + Source of interest [Crab]
  30 + Start value for first energy bin in TeV [0.1]
  31 + Stop value for last energy bin in TeV [100.0]
  32 + Output ASCII file [butterfly.txt]
  33 +
  34 +Now that you have computed the confidence band of the spectral fit and
  35 +that you will have an ASCII file named ``butterfly.txt`` on disk you can
  36 +visualise the butterfly using the script ``show_butterfly.py`` that is
  37 +in the ctools ``example`` folder. You will need matplotlib on your system
  38 +to make this work. To launch the script, type:
  39 +
  40 +.. code-block:: bash
  41 +
  42 + python $CTOOLS/share/examples/python/show_butterfly.py butterfly.txt
  43 +
  44 +This will result in a canvas which should look like the following:
  45 +
  46 +.. figure:: butterfly.jpg
  47 + :height: 400px
  48 + :align: center
  49 +
  50 + *Confidence band of the fit*
  51 +
0 52 \ No newline at end of file
... ...
doc/source/user_manual/getting_started/fitting.rst 0 → 100644
  1 +.. _sec_fitting_cta:
  2 +
  3 +Fitting CTA data
  4 +~~~~~~~~~~~~~~~~
  5 +
  6 +Now we are ready to fit the simulated data with a model. For simplicity
  7 +we use in this example the same model that we used to simulate the data
  8 +with :ref:`ctobssim`. Model fitting is done using the :ref:`ctlike` tool,
  9 +and we do the fit by typing:
  10 +
  11 +.. code-block:: bash
  12 +
  13 + $ ctlike
  14 + Input event list, counts cube or observation definition XML file [events.fits] cntcube.fits
  15 + Input exposure cube file (only needed for stacked analysis) [NONE]
  16 + Input PSF cube file (only needed for stacked analysis) [NONE]
  17 + Input background cube file (only needed for stacked analysis) [NONE]
  18 + Calibration database [prod2]
  19 + Instrument response function [South_0.5h]
  20 + Input model XML file [$CTOOLS/share/models/crab.xml]
  21 + Output model XML file [crab_results.xml]
  22 +
  23 +The data are fitted in *binned* mode, which means that the events
  24 +have been binned into a counts cube and the fit computes the log-likelihood
  25 +function by summing over all 200 x 200 x 20 bins of the counts cube. There is
  26 +an alternative method, the so called *unbinned* mode, where the events are
  27 +not binned into a counts cube and the log-likelihood is computed directly by
  28 +summing over all events. We will explore the *unbinned* mode later.
  29 +
  30 +One of the parameters of :ref:`ctlike` is a source model output file
  31 +(we specified ``crab_results.xml`` in the example), and this file will be
  32 +a copy of the source model input XML file where the parameter values have
  33 +been replaced by the fit results. In addition, the statistical uncertainties
  34 +are added for each fitted parameter using the attribute ``error``.
  35 +Below we show the XML result file that has been produced by the run:
  36 +
  37 +.. code-block:: xml
  38 +
  39 + <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  40 + <source_library title="source library">
  41 + <source name="Crab" type="PointSource">
  42 + <spectrum type="PowerLaw">
  43 + <parameter name="Prefactor" value="5.78443" error="0.101348" scale="1e-16" min="1e-07" max="1000" free="1" />
  44 + <parameter name="Index" value="2.50664" error="0.0153631" scale="-1" min="0" max="5" free="1" />
  45 + <parameter name="Scale" value="0.3" scale="1e+06" min="0.01" max="1000" free="0" />
  46 + </spectrum>
  47 + <spatialModel type="SkyDirFunction">
  48 + <parameter name="RA" value="83.6331" scale="1" min="-360" max="360" free="0" />
  49 + <parameter name="DEC" value="22.0145" scale="1" min="-90" max="90" free="0" />
  50 + </spatialModel>
  51 + </source>
  52 + <source name="CTABackgroundModel" type="CTAIrfBackground" instrument="CTA">
  53 + <spectrum type="PowerLaw">
  54 + <parameter name="Prefactor" value="0.993018" error="0.0160113" scale="1" min="0.001" max="1000" free="1" />
  55 + <parameter name="Index" value="0.00269761" error="0.00973921" scale="1" min="-5" max="5" free="1" />
  56 + <parameter name="Scale" value="1" scale="1e+06" min="0.01" max="1000" free="0" />
  57 + </spectrum>
  58 + </source>
  59 + </source_library>
  60 +
  61 +In this example, the ``Prefactor`` and ``Index`` of the spectral model for the
  62 +Crab as well as the ``Prefactor`` and ``Index`` of the background spectral
  63 +model have been fitted (all parameters having the attribute ``free="1"`` are
  64 +fitted). Now we see also the effect of having multiplied the background
  65 +model with a power law. In that way, the amplitude of the background as
  66 +well as it's spectral slope is adjusted by the fit. Obviously, in this
  67 +example the adjustment compensates only for the statistical fluctuations
  68 +of the background, but with real data, the adjustment may account also for
  69 +some of the systematic uncertainties.
  70 +
  71 +.. warning::
  72 +
  73 + As good practice, the amplitude of the background model should always be
  74 + left as a free parameter of the fit. Otherwise, any uncertainty in the
  75 + background rate will immediately propagate into the flux estimate of the
  76 + source.
  77 +
  78 +To get more details about the model fitting you can inspect the log file.
  79 +Below the last lines of the ctlike.log log file that has been produced by
  80 +this run:
  81 +
  82 +.. code-block:: xml
  83 +
  84 + 2015-12-07T20:55:32: +=================================+
  85 + 2015-12-07T20:55:32: | Maximum likelihood optimisation |
  86 + 2015-12-07T20:55:32: +=================================+
  87 + 2015-12-07T20:55:33: >Iteration 0: -logL=54877.412, Lambda=1.0e-03
  88 + 2015-12-07T20:55:35: >Iteration 1: -logL=54875.025, Lambda=1.0e-03, delta=2.387, max(|grad|)=1.856683 [Index:7]
  89 + 2015-12-07T20:55:36: >Iteration 2: -logL=54875.024, Lambda=1.0e-04, delta=0.001, max(|grad|)=-0.024661 [Index:3]
  90 + 2015-12-07T20:55:36:
  91 + ...
  92 + 2015-12-07T20:55:38: +=========================================+
  93 + 2015-12-07T20:55:38: | Maximum likelihood optimisation results |
  94 + 2015-12-07T20:55:38: +=========================================+
  95 + 2015-12-07T20:55:38: === GOptimizerLM ===
  96 + 2015-12-07T20:55:38: Optimized function value ..: 54875.024
  97 + 2015-12-07T20:55:38: Absolute precision ........: 0.005
  98 + 2015-12-07T20:55:38: Acceptable value decrease .: 2
  99 + 2015-12-07T20:55:38: Optimization status .......: converged
  100 + 2015-12-07T20:55:38: Number of parameters ......: 10
  101 + 2015-12-07T20:55:38: Number of free parameters .: 4
  102 + 2015-12-07T20:55:38: Number of iterations ......: 2
  103 + 2015-12-07T20:55:38: Lambda ....................: 1e-05
  104 + 2015-12-07T20:55:38: Maximum log likelihood ....: -54875.024
  105 + 2015-12-07T20:55:38: Observed events (Nobs) ...: 18195.000
  106 + 2015-12-07T20:55:38: Predicted events (Npred) ..: 18194.999 (Nobs - Npred = 0.00146383)
  107 + 2015-12-07T20:55:38: === GModels ===
  108 + 2015-12-07T20:55:38: Number of models ..........: 2
  109 + 2015-12-07T20:55:38: Number of parameters ......: 10
  110 + 2015-12-07T20:55:38: === GModelSky ===
  111 + 2015-12-07T20:55:38: Name ......................: Crab
  112 + 2015-12-07T20:55:38: Instruments ...............: all
  113 + 2015-12-07T20:55:38: Instrument scale factors ..: unity
  114 + 2015-12-07T20:55:38: Observation identifiers ...: all
  115 + 2015-12-07T20:55:38: Model type ................: PointSource
  116 + 2015-12-07T20:55:38: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
  117 + 2015-12-07T20:55:38: Number of parameters ......: 6
  118 + 2015-12-07T20:55:38: Number of spatial par's ...: 2
  119 + 2015-12-07T20:55:38: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
  120 + 2015-12-07T20:55:38: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
  121 + 2015-12-07T20:55:38: Number of spectral par's ..: 3
  122 + 2015-12-07T20:55:38: Prefactor ................: 5.78443e-16 +/- 1.01348e-17 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
  123 + 2015-12-07T20:55:38: Index ....................: -2.50664 +/- 0.0153631 [-0,-5] (free,scale=-1,gradient)
  124 + 2015-12-07T20:55:38: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
  125 + 2015-12-07T20:55:38: Number of temporal par's ..: 1
  126 + 2015-12-07T20:55:38: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
  127 + 2015-12-07T20:55:38: === GCTAModelIrfBackground ===
  128 + 2015-12-07T20:55:38: Name ......................: CTABackgroundModel
  129 + 2015-12-07T20:55:38: Instruments ...............: CTA
  130 + 2015-12-07T20:55:38: Instrument scale factors ..: unity
  131 + 2015-12-07T20:55:38: Observation identifiers ...: all
  132 + 2015-12-07T20:55:38: Model type ................: "PowerLaw" * "Constant"
  133 + 2015-12-07T20:55:38: Number of parameters ......: 4
  134 + 2015-12-07T20:55:38: Number of spectral par's ..: 3
  135 + 2015-12-07T20:55:38: Prefactor ................: 0.993018 +/- 0.0160113 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
  136 + 2015-12-07T20:55:38: Index ....................: 0.00269761 +/- 0.00973921 [-5,5] (free,scale=1,gradient)
  137 + 2015-12-07T20:55:38: PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
  138 + 2015-12-07T20:55:38: Number of temporal par's ..: 1
  139 + 2015-12-07T20:55:38: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
  140 +
  141 +The maximum likelihood optimizer required 2 iterations to converge. This
  142 +is pretty fast, but recall that we used the same model file for the simulation
  143 +and for fitting, hence the initial parameter values were already very close
  144 +to the best fitting values. To see the impact of the initial parameters on
  145 +the fit result, you may re-run :ref:`ctlike` using another copy of the model
  146 +XML file where you change the value attributes of the parameters that should be
  147 +fitted. You will see that the optimizer requires a couple of more iterations,
  148 +but it should converge to the same solution (provided that the initial values
  149 +are not too far from the best fitting values).
  150 +
  151 +.. note::
  152 +
  153 + As sanity check you should verify that the predicted number of events
  154 + (Npred) is equal to the observed number of events (Nobs). To facilitate
  155 + this comparison, :ref:`ctlike` provides the difference Nobs - Npred in
  156 + the log file. In real life situations, this difference may not always be
  157 + small, in particular if the source model is too constrained. You may
  158 + then free some of the model parameters so that the fit can correctly
  159 + describe the data.
  160 +
  161 +.. note::
  162 +
  163 + The :ref:`ctlike` tool has the ability to estimate the detection
  164 + significance for sources in the XML model. This is done by computing
  165 + the Test Statistic value which is defined as twice the log-likelihood
  166 + difference between fitting a source at a given position on top of a
  167 + (background) model or fitting no source. Roughly speaken, the square
  168 + root of the Test Statistic value gives the source detection significance
  169 + in Gaussian sigmas, although the exact relation depends somewhat on
  170 + the formulation of the statistical problem.
  171 +
  172 + To instruct :ref:`ctlike` to compute the Test Statistic value for a
  173 + given source you need to add the attribute ``tscalc="1"`` to the XML
  174 + file:
  175 +
  176 + .. code-block:: xml
  177 +
  178 + <source name="Crab" type="PointSource" tscalc="1">
  179 +
  180 + :ref:`ctlike` will then compute the Test Statistic value for that
  181 + source and dump the result in the log file:
  182 +
  183 + .. code-block:: xml
  184 +
  185 + 2015-12-07T20:58:45: === GModelSky ===
  186 + 2015-12-07T20:58:45: Name ......................: Crab
  187 + 2015-12-07T20:58:45: Instruments ...............: all
  188 + 2015-12-07T20:58:45: Test Statistic ............: 21164.4
  189 +
  190 + The Test Statistic value will also be added as new attribute
  191 + ``ts`` to the XML result file:
  192 +
  193 + .. code-block:: xml
  194 +
  195 + <source name="Crab" type="PointSource" ts="21164.384" tscalc="1">
... ...
doc/source/user_manual/getting_started/quickstart.rst
1 1 .. _quickstart:
2 2  
3   -A quick ctools tutorial
4   ------------------------
5   -
6 3 First steps with ctools
7   -~~~~~~~~~~~~~~~~~~~~~~~
8   -
9   -This section provides a step-by-step description of the CTA data analysis
10   -procedure implemented in ctools. In this example we will simulate data for
11   -the Crab nebula, observed on-axis, as a single source in the CTA field of
12   -view.
13   -
14   -The example consists of the following analysis steps:
15   -
16   -- :ref:`sec_simulating_cta`
17   -
18   -- :ref:`sec_binning_cta`
19   -
20   -- :ref:`sec_fitting_cta`
21   -
22   -- :ref:`sec_unbinned_cta`
23   -
24   -- :ref:`sec_butterfly_cta`
25   -
26   -
27   -.. _sec_simulating_cta:
28   -
29   -Simulating CTA data
30   -~~~~~~~~~~~~~~~~~~~
31   -
32   -CTA data are simulated using the :ref:`ctobssim` tool. To invoke the tool,
33   -type :ref:`ctobssim` at the console prompt (which is denoted by ``$``).
34   -:ref:`ctobssim` will query for a number of parameters:
35   -
36   -.. code-block:: bash
37   -
38   - $ ctobssim
39   - RA of pointing (degrees) (0-360) [83.63]
40   - Dec of pointing (degrees) (-90-90) [22.01]
41   - Radius of FOV (degrees) (0-180) [5.0]
42   - Start time (MET in s) [0.0]
43   - End time (MET in s) [1800.0]
44   - Lower energy limit (TeV) [0.1]
45   - Upper energy limit (TeV) [100.0]
46   - Calibration database [prod2]
47   - Instrument response function [South_50h]
48   - Model [$CTOOLS/share/models/crab.xml]
49   - Output event data file or observation definition file [events.fits]
50   -
51   -Each line represents a query for one parameter value.
52   -The line starts with a short description of the parameter, followed by
53   -the default value proposed by ctobssim in squared brackets ``[ ]``.
54   -**If no parameter is entered the default value will be used**
55   -(which is the case for all parameters shown here).
56   -Otherwise, the specified value will overwrite the default value.
57   -The round brackets ``( )`` indicate the range of possible parameter
58   -values (if applicable).
59   -
60   -
61   -You may have recognised that the environment variable ``$CTOOLS`` has
62   -been used in the path name of the model. ctools will automatically expand
63   -the environment variables in parameter inputs.
64   -
65   -The CTA instrument properties (effective area, PSF width) are taken from
66   -the prod2 database. The response for the southern array using the cuts
67   -optimised for 50 hours of observing time are used.
68   -
69   -.. note::
70   -
71   - ctools comes bundled with CTA response functions for the northern and
72   - the southern array. The response functions are based on a Prod2
73   - analysis with cuts optimised for 0.5 hours, 5 hours and 50 hours of
74   - observing time. The following Instrument Response Functions
75   - (IRFs) are available: ``North_0.5h``, ``North_5h``, ``North_50h``,
76   - ``South_0.5h``, ``South_5h``, and ``South_50h``.
77   -
78   -Events are simulated based on the instrument properties and based on a
79   -source and background model. Only events that fall within the specified
80   -region of interest (ROI), defined as a circle around a sky position in
81   -Right Ascension and Declination (in degrees), will be stored in the output
82   -event data file. The duration of the simulation is taken here to 30 minutes
83   -(or 1800 seconds). Events are simulated for energies between 0.1 and 100 TeV.
84   -
85   -The source and background model is defined by the XML file
86   -``$CTOOLS/share/models/crab.xml``:
87   -
88   -.. code-block:: xml
89   -
90   - <?xml version="1.0" standalone="no"?>
91   - <source_library title="source library">
92   - <source name="Crab" type="PointSource">
93   - <spectrum type="PowerLaw">
94   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
95   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
96   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
97   - </spectrum>
98   - <spatialModel type="SkyDirFunction">
99   - <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
100   - <parameter name="DEC" scale="1.0" value="22.0145" min="-90" max="90" free="0"/>
101   - </spatialModel>
102   - </source>
103   - <source name="CTABackgroundModel" type="CTAIrfBackground" instrument="CTA">
104   - <spectrum type="PowerLaw">
105   - <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-3" max="1e+3" free="1"/>
106   - <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
107   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
108   - </spectrum>
109   - </source>
110   - </source_library>
111   -
112   -The model consists of a source library that contains two components:
113   -the Crab nebula and an instrumental background model.
114   -
115   -The Crab nebula is modelled by a factorized sky model that has a spectral
116   -and a spatial component (tags ``<spectrum>`` and ``<spatialModel>``,
117   -respectively). The spectrum is modelled by a power law, which is defined by
118   -three parameters: the ``Prefactor``, the ``Index`` and the ``Scale``.
119   -The spatial model has two parameters: Right Ascension in degrees (``RA``), and
120   -Declination in degrees (``DEC``). Each parameter has a value and a scale factor,
121   -the real value of the parameter being the product ``value * scale``. Typically,
122   -``scale`` is chosen so that ``value`` is of the order of 1 (this is relevant for
123   -model fitting). In addition, ``value`` is bound by a minimum (``min``) and
124   -maximum (``max``) value, and a parameter may be free (``free="1"``) or fixed
125   -(``free="0"``). The ``min``, ``max``, and ``free`` attributes are not
126   -relevant here for the simulations, but they will be important for the model
127   -fitting later.
128   -
129   -The spectral intensity I(E) (in units of photons/cm2/s/MeV) of the power
130   -law is given by
131   -
132   -.. math::
133   - \frac{dN}{dE} = N_0 \left( \frac{E}{E_0} \right)^{\gamma}
134   -
135   -where the parameters in the XML definition have the following mappings:
136   -
137   -* :math:`N_0` = ``Prefactor``
138   -* :math:`\gamma` = ``Index``
139   -* :math:`E_0` = ``Scale``
140   -
141   -.. warning::
142   -
143   - Energies are given in the XML file in MeV units. This is a GammaLib
144   - convention that can not be modified. **So make sure you always use
145   - MeV as energy unit in an XML file.**
146   -
147   -The instrumental background of CTA is modelled using the background
148   -information provided in the IRF (``CTAIrfBackground``) multipled
149   -by a power law. As it is defined here, the power law represents a
150   -constant of 1, hence the background IRF will be used without any
151   -modification. The power law will become active when fitting the data
152   -later and allows a spectral adjustment of the background model that
153   -may account for uncertainties in the background information provided
154   -in the IRF.
155   -
156   -:ref:`ctobssim` has a couple of hidden parameters, the most important one being
157   -certainly ``seed``. ``seed`` is an integer that specifies the seed value
158   -for the random number generator, and changing this parameter will allow to
159   -generate statistically independent Monte Carlo samples of CTA event data.
160   -To use for example a seed value of 41 you should type:
161   -
162   -.. code-block:: bash
163   -
164   - $ ctobssim seed=41
165   -
166   -:ref:`ctobssim` will write 2 files in the working directory: ``events.fits``
167   -and ``ctobssim.log``. The first file contains the simulated events in FITS
168   -format and can be inspected using ``fv`` or ``ds9``. The FITS file will
169   -contain three extensions: an empty primary image, a binary table named
170   -``EVENTS`` that holds the events (one row per event), and a binary table
171   -named ``GTI`` holding the Good Time Intervals (for the moment a single row
172   -with 2 columns providing the start and the stop time of the simulated time
173   -interval).
174   -
175   -The second file produced by :ref:`ctobssim` is a human readable log file that
176   -contains information about the job execution. As example, the last lines
177   -from this file are shown here:
178   -
179   -.. code-block:: xml
180   -
181   - 2015-05-22T19:24:53: +======================+
182   - 2015-05-22T19:24:53: | Simulate observation |
183   - 2015-05-22T19:24:53: +======================+
184   - 2015-05-22T19:24:53: === Observation ===
185   - 2015-05-22T19:24:53: Simulation area ...........: 1.9635e+11 cm2
186   - 2015-05-22T19:24:53: Simulation cone ...........: RA=83.63 deg, Dec=22.01 deg, r=5.5 deg
187   - 2015-05-22T19:24:53: Time interval .............: 0 - 1800 s
188   - 2015-05-22T19:24:53: Photon energy range .......: 100 GeV - 100 TeV
189   - 2015-05-22T19:24:53: Event energy range ........: 100 GeV - 100 TeV
190   - 2015-05-22T19:24:53: MC source photons .........: 207547 [Crab]
191   - 2015-05-22T19:24:53: MC source events ..........: 2961 [Crab]
192   - 2015-05-22T19:24:53: MC source events ..........: 2961 (all source models)
193   - 2015-05-22T19:24:55: MC background events ......: 13003
194   - 2015-05-22T19:24:55: MC events .................: 15964 (all models)
195   -
196   -Each line starts with the UTC time at which the line has been written. In
197   -this run, 207547 Crab photons have been thrown over an area of 19.6 square
198   -kilometres during a time interval of 1800 seconds. 2961 of these photons have
199   -been registered by CTA as events. In the same time interval, 13003 background
200   -events have been registred by CTA.
201   -
202   -You may change the name of the log file using the hidden parameter
203   -``logfile``:
204   -
205   -.. code-block:: bash
206   -
207   - $ ctobssim logfile=my-private-log-file
208   -
209   -Furthermore, you may decide on the amount of information provided in the
210   -log file (the chattiness of the executable) using the hidden parameter
211   -``chatter``:
212   -
213   -.. code-block:: bash
214   -
215   - $ ctobssim chatter=4
216   -
217   -``chatter`` can vary between 0 and 4, 0 providing no information while 4
218   -provides the most detailed information. **By default, all ctools have a
219   -chatter level of 2.**
220   -
221   -You may also duplicate the log file information into the console by setting
222   -the hidden ``debug`` parameter to yes:
223   -
224   -.. code-block:: bash
225   -
226   - $ ctobssim debug=yes
227   -
228   -
229   -.. _sec_binning_cta:
230   -
231   -Binning CTA data
232   -~~~~~~~~~~~~~~~~
233   -
234   -As next analysis step you will bin the data in a counts cube using
235   -:ref:`ctbin`.
236   -A counts cube is a 3 dimensional data cube, spanned by
237   -Right Ascension (or Galactic longitude), Declination (or Galactic latitude),
238   -and energy (typically logarithmically spaced, but this is under user
239   -control).
240   -
241   -:ref:`ctbin` is executed by typing:
242   -
243   -.. code-block:: bash
244   -
245   - $ ctbin
246   - Event list or observation definition file [events.fits]
247   - First coordinate of image center in degrees (RA or galactic l) (0-360) [83.63]
248   - Second coordinate of image center in degrees (DEC or galactic b) (-90-90) [22.01]
249   - Projection method (AIT|AZP|CAR|MER|MOL|STG|TAN) [CAR]
250   - Coordinate system (CEL - celestial, GAL - galactic) (CEL|GAL) [CEL]
251   - Image scale (in degrees/pixel) [0.02]
252   - Size of the X axis in pixels [200]
253   - Size of the Y axis in pixels [200]
254   - Algorithm for defining energy bins (FILE|LIN|LOG) [LOG]
255   - Start value for first energy bin in TeV [0.1]
256   - Stop value for last energy bin in TeV [100.0]
257   - Number of energy bins [20]
258   - Output counts cube [cntcube.fits]
259   -
260   -The counts cube will be centred on the location of the Crab (Right Ascension
261   -83.63 degrees, Declination 22.01 degrees) and will be aligned in celestial
262   -coordinates. A cartesian projection has been selected. The counts cube has
263   -200 x 200 spatial pixels of 0.02 x 0.02 degrees in size, hence it covers a
264   -total area of 4 x 4 degrees.
265   -
266   -The counts cube will contain 20 maps, which are logarithmically spaced
267   -in energy, and which cover the energy range from 0.1 TeV to 100 TeV. In this
268   -example, the counts cube will be saved as ``cntcube.fits`` in the working
269   -directory. In addition to the counts cube, that is stored as the primary
270   -image extension, the FITS file also contains an extension named ``EBOUNDS``
271   -that defines the energy boundaries that were used, and an extension ``GTI``
272   -that defines the Good Time Intervals that have been used. The following
273   -image shows the resulting FITS file. The ``EBOUNDS`` table has 20 rows, one
274   -for each energy bin, while the ``GTI`` table has just a single row, indicating
275   -the start and stop time of the simulated data.
276   -
277   -.. figure:: cntmap-fits.jpg
278   - :width: 600px
279   - :align: center
280   -
281   - *Counts cube FITS file*
282   -
283   -
284   -An image of the first bin, covering the energy range 100 - 141 GeV, is
285   -shown below:
286   -
287   -.. figure:: cntmap-map.jpg
288   - :height: 400px
289   - :align: center
290   -
291   - *Counts cube for first energy bin*
292   -
293   -
294   -For illustration, the last few lines of the log file ``ctbin.log`` are
295   -reproduced below:
296   -
297   -.. code-block:: xml
298   -
299   - 2015-05-22T19:40:30: +=================+
300   - 2015-05-22T19:40:30: | Bin observation |
301   - 2015-05-22T19:40:30: +=================+
302   - 2015-05-22T19:40:30: === Observation ===
303   - 2015-05-22T19:40:30: Events in list ............: 15964
304   - 2015-05-22T19:40:30: Events in cube ............: 13360
305   - 2015-05-22T19:40:30: Event bins outside RoI ....: 0
306   - 2015-05-22T19:40:30: Events outside cube area ..: 2604
307   - 2015-05-22T19:40:30: Events outside energy bins : 0
308   -
309   -From the 15964 events that have been simulated and stored in the
310   -``events.fits`` file, 13360 lie within the cube boundaries and are thus put
311   -into the resulting counts cube. The counts cube is stored in a cartesian
312   -projection in a World Coordinate System (WCS) compliant format.
313   -
314   -
315   -.. _sec_fitting_cta:
316   -
317   -Fitting CTA data
318   -~~~~~~~~~~~~~~~~
319   -
320   -Now we are ready to fit the simulated data with a model. For simplicity
321   -we use in this example the same model that we used to simulate the data
322   -with :ref:`ctobssim`. Model fitting is done using the :ref:`ctlike` tool,
323   -and we do the fit by typing:
324   -
325   -.. code-block:: bash
326   -
327   - $ ctlike
328   - Event list, counts cube or observation definition file [events.fits] cntcube.fits
329   - Exposure cube file (only needed for stacked analysis) [NONE]
330   - PSF cube file (only needed for stacked analysis) [NONE]
331   - Background cube file (only needed for stacked analysis) [NONE]
332   - Calibration database [prod2]
333   - Instrument response function [South_50h]
334   - Source model [$CTOOLS/share/models/crab.xml]
335   - Source model output file [crab_results.xml]
336   -
337   -The data are fitted in *binned* mode, which means that the events
338   -have been binned into a counts cube and the fit computes the log-likelihood
339   -function by summing over all 200 x 200 x 20 bins of the counts cube. There is
340   -an alternative method, the so called *unbinned* mode, where the events are
341   -not binned into a counts cube and the log-likelihood is computed directly by
342   -summing over all events. We will explore the *unbinned* mode later.
343   -
344   -One of the parameters of :ref:`ctlike` is a source model output file
345   -(we specified ``crab_results.xml`` in the example), and this file will be
346   -a copy of the source model input XML file where the parameter values have
347   -been replaced by the fit results. In addition, the statistical uncertainties
348   -are added for each fitted parameter using the attribute ``error``.
349   -Below we show the XML result file that has been produced by the run:
350   -
351   -.. code-block:: xml
352   -
353   - <?xml version="1.0" encoding="UTF-8" standalone="no"?>
354   - <source_library title="source library">
355   - <source name="Crab" type="PointSource">
356   - <spectrum type="PowerLaw">
357   - <parameter name="Prefactor" value="5.78197" error="0.110889" scale="1e-16" min="1e-07" max="1000" free="1" />
358   - <parameter name="Index" value="2.49174" error="0.0164369" scale="-1" min="0" max="5" free="1" />
359   - <parameter name="Scale" value="0.3" scale="1e+06" min="0.01" max="1000" free="0" />
360   - </spectrum>
361   - <spatialModel type="SkyDirFunction">
362   - <parameter name="RA" value="83.6331" scale="1" min="-360" max="360" free="0" />
363   - <parameter name="DEC" value="22.0145" scale="1" min="-90" max="90" free="0" />
364   - </spatialModel>
365   - </source>
366   - <source name="CTABackgroundModel" type="CTAIrfBackground" instrument="CTA">
367   - <spectrum type="PowerLaw">
368   - <parameter name="Prefactor" value="1.02048" error="0.0280684" scale="1" min="0.001" max="1000" free="1" />
369   - <parameter name="Index" value="0.0197856" error="0.0156686" scale="1" min="-5" max="5" free="1" />
370   - <parameter name="Scale" value="1" scale="1e+06" min="0.01" max="1000" free="0" />
371   - </spectrum>
372   - </source>
373   - </source_library>
374   -
375   -In this example, the ``Prefactor`` and ``Index`` of the spectral model for the
376   -Crab as well as the ``Prefactor`` and ``Index`` of the background spectral
377   -model have been fitted (all parameters having the attribute ``free="1"`` are
378   -fitted). Now we see also the effect of having multiplied the background
379   -model with a power law. In that way, the amplitude of the background as
380   -well as it's spectral slope is adjusted by the fit. Obviously, in this
381   -example the adjustment compensates only for the statistical fluctuations
382   -of the background, but with real data, the adjustment may account also for
383   -some of the systematic uncertainties.
384   -
385   -.. warning::
386   -
387   - As good practice, the amplitude of the background model should always be
388   - left as a free parameter of the fit. Otherwise, any uncertainty in the
389   - background rate will immediately propagate into the flux estimate of the
390   - source.
391   -
392   -To get more details about the model fitting you can inspect the log file.
393   -Below the last lines of the ctlike.log log file that has been produced by
394   -this run:
395   -
396   -.. code-block:: xml
397   -
398   - 2015-05-22T19:45:15: +=================================+
399   - 2015-05-22T19:45:15: | Maximum likelihood optimisation |
400   - 2015-05-22T19:45:15: +=================================+
401   - 2015-05-22T19:45:16: >Iteration 0: -logL=39910.748, Lambda=1.0e-03
402   - 2015-05-22T19:45:18: >Iteration 1: -logL=39908.788, Lambda=1.0e-03, delta=1.960, max(|grad|)=6.701856 [Index:7]
403   - 2015-05-22T19:45:19: >Iteration 2: -logL=39908.787, Lambda=1.0e-04, delta=0.001, max(|grad|)=-0.057041 [Index:3]
404   - 2015-05-22T19:45:21:
405   - 2015-05-22T19:45:21: +=========================================+
406   - 2015-05-22T19:45:21: | Maximum likelihood optimization results |
407   - 2015-05-22T19:45:21: +=========================================+
408   - 2015-05-22T19:45:21: === GOptimizerLM ===
409   - 2015-05-22T19:45:21: Optimized function value ..: 39908.787
410   - 2015-05-22T19:45:21: Absolute precision ........: 0.005
411   - 2015-05-22T19:45:21: Acceptable value decrease .: 2
412   - 2015-05-22T19:45:21: Optimization status .......: converged
413   - 2015-05-22T19:45:21: Number of parameters ......: 10
414   - 2015-05-22T19:45:21: Number of free parameters .: 4
415   - 2015-05-22T19:45:21: Number of iterations ......: 2
416   - 2015-05-22T19:45:21: Lambda ....................: 1e-05
417   - 2015-05-22T19:45:21: Maximum log likelihood ....: -39908.787
418   - 2015-05-22T19:45:21: Observed events (Nobs) ...: 13360.000
419   - 2015-05-22T19:45:21: Predicted events (Npred) ..: 13359.998 (Nobs - Npred = 0.00180799)
420   - 2015-05-22T19:45:21: === GModels ===
421   - 2015-05-22T19:45:21: Number of models ..........: 2
422   - 2015-05-22T19:45:21: Number of parameters ......: 10
423   - 2015-05-22T19:45:21: === GModelSky ===
424   - 2015-05-22T19:45:21: Name ......................: Crab
425   - 2015-05-22T19:45:21: Instruments ...............: all
426   - 2015-05-22T19:45:21: Instrument scale factors ..: unity
427   - 2015-05-22T19:45:21: Observation identifiers ...: all
428   - 2015-05-22T19:45:21: Model type ................: PointSource
429   - 2015-05-22T19:45:21: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
430   - 2015-05-22T19:45:21: Number of parameters ......: 6
431   - 2015-05-22T19:45:21: Number of spatial par's ...: 2
432   - 2015-05-22T19:45:21: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
433   - 2015-05-22T19:45:21: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
434   - 2015-05-22T19:45:21: Number of spectral par's ..: 3
435   - 2015-05-22T19:45:21: Prefactor ................: 5.78197e-16 +/- 1.10889e-17 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
436   - 2015-05-22T19:45:21: Index ....................: -2.49174 +/- 0.0164369 [-0,-5] (free,scale=-1,gradient)
437   - 2015-05-22T19:45:21: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
438   - 2015-05-22T19:45:21: Number of temporal par's ..: 1
439   - 2015-05-22T19:45:21: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
440   - 2015-05-22T19:45:21: === GCTAModelIrfBackground ===
441   - 2015-05-22T19:45:21: Name ......................: CTABackgroundModel
442   - 2015-05-22T19:45:21: Instruments ...............: CTA
443   - 2015-05-22T19:45:21: Instrument scale factors ..: unity
444   - 2015-05-22T19:45:21: Observation identifiers ...: all
445   - 2015-05-22T19:45:21: Model type ................: "PowerLaw" * "Constant"
446   - 2015-05-22T19:45:21: Number of parameters ......: 4
447   - 2015-05-22T19:45:21: Number of spectral par's ..: 3
448   - 2015-05-22T19:45:21: Prefactor ................: 1.02048 +/- 0.0280684 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
449   - 2015-05-22T19:45:21: Index ....................: 0.0197856 +/- 0.0156686 [-5,5] (free,scale=1,gradient)
450   - 2015-05-22T19:45:21: PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
451   - 2015-05-22T19:45:21: Number of temporal par's ..: 1
452   - 2015-05-22T19:45:21: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
453   -
454   -The maximum likelihood optimizer required 2 iterations to converge. This
455   -is pretty fast, but recall that we used the same model file for the simulation
456   -and for fitting, hence the initial parameter values were already very close
457   -to the best fitting values. To see the impact of the initial parameters on
458   -the fit result, you may re-run :ref:`ctlike` using another copy of the model
459   -XML file where you change the value attributes of the parameters that should be
460   -fitted. You will see that the optimizer requires a couple of more iterations,
461   -but it should converge to the same solution (provided that the initial values
462   -are not too far from the best fitting values).
463   -
464   -.. note::
465   -
466   - As sanity check you should verify that the predicted number of events
467   - (Npred) is equal to the observed number of events (Nobs). To facilitate
468   - this comparison, :ref:`ctlike` provides the difference Nobs - Npred in
469   - the log file. In real life situations, this difference may not always be
470   - small, in particular if the source model is too constrained. You may
471   - then free some of the model parameters so that the fit can correctly
472   - describe the data.
473   -
474   -.. note::
475   -
476   - The :ref:`ctlike` tool has the ability to estimate the detection
477   - significance for sources in the XML model. This is done by computing
478   - the Test Statistic value which is defined as twice the log-likelihood
479   - difference between fitting a source at a given position on top of a
480   - (background) model or fitting no source. Roughly speaken, the square
481   - root of the Test Statistic value gives the source detection significance
482   - in Gaussian sigmas, although the exact relation depends somewhat on
483   - the formulation of the statistical problem.
484   -
485   - To instruct :ref:`ctlike` to compute the Test Statistic value for a
486   - given source you need to add the attribute ``tscalc="1"`` to the XML
487   - file:
488   -
489   - .. code-block:: xml
490   -
491   - <source name="Crab" type="PointSource" tscalc="1">
492   -
493   - :ref:`ctlike` will then compute the Test Statistic value for that
494   - source and dump the result in the log file:
495   -
496   - .. code-block:: xml
497   -
498   - 2015-05-22T19:58:43: === GModelSky ===
499   - 2015-05-22T19:58:43: Name ......................: Crab
500   - 2015-05-22T19:58:43: Instruments ...............: all
501   - 2015-05-22T19:58:43: Test Statistic ............: 18662.6
502   -
503   - The Test Statistic value will also be added as new attribute
504   - ``ts`` to the XML result file:
505   -
506   - .. code-block:: xml
507   -
508   - <source name="Crab" type="PointSource" ts="18662.576" tscalc="1">
509   -
510   -
511   -.. _sec_unbinned_cta:
512   -
513   -Doing an unbinned analysis
514   -~~~~~~~~~~~~~~~~~~~~~~~~~~
515   -
516   -As gamma-ray events are rare, the counts cubes generated by :ref:`ctbin`
517   -will in general be sparsly populated, having many empty pixels, in
518   -particular at high energies.
519   -An alternative analysis technique consists of working directly on the event
520   -list without binning the events in a counts cube. We will see the benefit of
521   -such an analysis later once you re-run :ref:`ctlike` in unbinned mode.
522   -
523   -For unbinned analysis you first have to define the data space region over
524   -which the analysis is done. This is similiar to the :ref:`ctbin` step for
525   -a binned analysis where you defined the size of the counts cube, the energy
526   -range, and the time interval. For unbinned analysis you have no such thing
527   -as a counts cube, but you have to define over which region of the data space
528   -the selected events are spread (because the ctools have to integrate over
529   -this region to compute the total number of predicted events in the data space
530   -that you analyse). Furthermore, you have to define what energy range is
531   -covered, and what time interval is spanned by the data. All this is done
532   -by the :ref:`ctselect` tool, which replaces the :ref:`ctbin` step in an
533   -unbinned analysis.
534   -
535   -:ref:`ctselect` performs an event selection by choosing only events within
536   -a given region-of-interest (ROI), within a given energy band, and within a
537   -given time interval from the input event list. The ROI is a circular region on
538   -the sky, for which you define the centre (in celestial coordinates) and the
539   -radius. Such a circular ROI is sometimes also called an acceptance cone. The
540   -following example shows how to run ctselect:
541   -
542   -.. code-block:: bash
543   -
544   - $ ctselect
545   - Input event list or observation definition file [events.fits]
546   - RA for ROI centre (degrees) (0-360) [83.63]
547   - Dec for ROI centre (degrees) (-90-90) [22.01]
548   - Radius of ROI (degrees) (0-180) [3.0]
549   - Start time (CTA MET in seconds) [0.0]
550   - End time (CTA MET in seconds) [0.0]
551   - Lower energy limit (TeV) [0.1]
552   - Upper energy limit (TeV) [100.0]
553   - Output event list or observation definition file [selected_events.fits]
554   -
555   -:ref:`ctselect` takes the input event list ``events.fits``, performs an
556   -event selection, and writes the selected event into the file
557   -``selected_events.fits``. The parameters it will query for are the centre
558   -of the ROI, the radius of the ROI, the start and stop time (in seconds),
559   -and the energy lower and upper limits (in TeV). The event selection information
560   -is also written as a set of data selection keywords to the output events
561   -file ``selected_events.fits``, by respecting the same syntax that has been
562   -implemented for Fermi/LAT. The following image is a screen dump of the data
563   -selection keywords that have been written to the ``EVENTS`` header in the
564   -file ``selected_events.fits``:
565   -
566   -.. figure:: dskeys.jpg
567   - :width: 400px
568   - :align: center
569   -
570   - *Data selection keywords*
571   -
572   -**It is mandatory for an unbinned analysis that these data selection keywords
573   -exist in the FITS file.**
574   -If they don't exist, :ref:`ctlike` will not execute in unbinned mode.
575   -
576   -Below some lines of the ``ctselect.log`` file that show the data selection
577   -part:
578   -
579   -.. code-block:: xml
580   -
581   - 2015-05-22T20:01:46: +=================+
582   - 2015-05-22T20:01:46: | Event selection |
583   - 2015-05-22T20:01:46: +=================+
584   - 2015-05-22T20:01:46: === Observation ===
585   - 2015-05-22T20:01:47: Selected energy range .....: 0.1 - 100 TeV
586   - 2015-05-22T20:01:47: Requested ROI .............: Centre(RA,DEC)=(83.63, 22.01) deg, Radius=3 deg
587   - 2015-05-22T20:01:47: ROI of data ...............: Centre(RA,DEC)=(83.63, 22.01) deg, Radius=5 deg
588   - 2015-05-22T20:01:47: Selected ROI ..............: Centre(RA,DEC)=(83.63, 22.01) deg, Radius=3 deg
589   - 2015-05-22T20:01:47: cfitsio selection .........: ENERGY >= 0.10000000 && ENERGY <= 100.00000000 && ANGSEP(83.630000,22.010000,RA,DEC) <= 3.000000
590   - 2015-05-22T20:01:47: FITS filename .............: /var/tmp/tmp.0.rRgLpO[EVENTS][ENERGY >= 0.10000000 && ENERGY <= 100.00000000 && ANGSEP(83.630000,22.010000,RA,DEC) <= 3.000000]
591   -
592   -.. note::
593   -
594   - :ref:`ctobssim` will also write data selection keywords in the event
595   - list FITS file, hence you can run :ref:`ctlike` directly on a FITS file
596   - produced by :ref:`ctobssim`. Any selection performed by :ref:`ctselect`
597   - needs to be fully enclosed within any previous selection, e.g. the ROI
598   - needs to be fully enclosed in the acceptance cone used for event
599   - simulation, the energy selection must be fully comprised in the
600   - range of simulated energies, the same applies for the temporal selection.
601   - :ref:`ctselect` will automatically adjust
602   - the selection parameters to guarantee full enclosure. To keep track of
603   - this adjustment, the :ref:`ctselect` log file quotes the requested
604   - selection, any existing selections, and the selection that was finally
605   - applied.
606   -
607   -.. warning::
608   -
609   - :ref:`ctselect` may of course also be used for event selection prior to
610   - binned analysis, for example to select events for a given period in
611   - time. **If you use** :ref:`ctselect` **however to make a spatial or energy
612   - selection, make sure that the counts cube is fully enclosed in the
613   - selection intervals.** Otherwise you will get empty zones in the counts
614   - cube of which the ctools are not aware of, and the subsequent analysis
615   - results will be wrong.
616   -
617   -Now that you have selected the events of interest, you can run ctlike in
618   -unbinned mode. To do this you have to specify the selected event list
619   -instead of the counts cube:
620   -
621   -.. code-block:: bash
622   -
623   - $ ctlike
624   - Event list, counts cube or observation definition file [cntcube.fits] selected_events.fits
625   - Calibration database [prod2]
626   - Instrument response function [South_50h]
627   - Source model [$CTOOLS/share/models/crab.xml]
628   - Source model output file [crab_results.xml]
629   -
630   -You will recognise that :ref:`ctlike` runs much faster in unbinned mode
631   -compared to binned mode.
632   -This is understandable as the selected event list contains
633   -only 15312 events, while the binned counts cube we used before had
634   -200 x 200 x 20 = 800000 pixels. As unbinned maximum likelihood fitting loops
635   -over the events (while binned maximum likelihood loops over the pixels),
636   -there are much less operations to perform in unbinned than in binned mode
637   -(there is some additional overhead in unbinned mode that comes from
638   -integrating the models over the region of interest, yet this is negligible
639   -compared to the operations needed when looping over all pixels). So as long
640   -as you work with small event lists, unbinned mode is faster (this
641   -typically holds up to 100 hours of observing time).
642   -Unbinned :ref:`ctlike` should also be more precise as no binning is performed,
643   -hence there is no loss of information due to histogramming.
644   -
645   -Below you see the corresponding output from the ctlike.log file. The fitted
646   -parameters are essentially identical to the ones found in binned mode.
647   -The slight difference with respect to the binned analysis may be explained
648   -by the different event sample that has been used for the analysis: while
649   -binned likelihood works on rectangular counts cubes, unbinned likelihood works
650   -on circular event selection regions. It is thus not possible to select exactly
651   -the same events for both analyses.
652   -
653   -.. code-block:: xml
654   -
655   - 2015-05-22T20:05:54: +=================================+
656   - 2015-05-22T20:05:54: | Maximum likelihood optimisation |
657   - 2015-05-22T20:05:54: +=================================+
658   - 2015-05-22T20:05:54: >Iteration 0: -logL=93854.543, Lambda=1.0e-03
659   - 2015-05-22T20:05:54: >Iteration 1: -logL=93848.595, Lambda=1.0e-03, delta=5.948, max(|grad|)=22.480581 [Index:7]
660   - 2015-05-22T20:05:54: >Iteration 2: -logL=93848.587, Lambda=1.0e-04, delta=0.008, max(|grad|)=-0.081846 [Index:3]
661   - 2015-05-22T20:05:54: >Iteration 3: -logL=93848.587, Lambda=1.0e-05, delta=0.000, max(|grad|)=-0.003485 [Index:3]
662   - 2015-05-22T20:05:54:
663   - 2015-05-22T20:05:54: +=========================================+
664   - 2015-05-22T20:05:54: | Maximum likelihood optimization results |
665   - 2015-05-22T20:05:54: +=========================================+
666   - 2015-05-22T20:05:54: === GOptimizerLM ===
667   - 2015-05-22T20:05:54: Optimized function value ..: 93848.587
668   - 2015-05-22T20:05:54: Absolute precision ........: 0.005
669   - 2015-05-22T20:05:54: Acceptable value decrease .: 2
670   - 2015-05-22T20:05:54: Optimization status .......: converged
671   - 2015-05-22T20:05:54: Number of parameters ......: 10
672   - 2015-05-22T20:05:54: Number of free parameters .: 4
673   - 2015-05-22T20:05:54: Number of iterations ......: 3
674   - 2015-05-22T20:05:54: Lambda ....................: 1e-06
675   - 2015-05-22T20:05:54: Maximum log likelihood ....: -93848.587
676   - 2015-05-22T20:05:54: Observed events (Nobs) ...: 15312.000
677   - 2015-05-22T20:05:54: Predicted events (Npred) ..: 15312.000 (Nobs - Npred = 3.03823e-06)
678   - 2015-05-22T20:05:54: === GModels ===
679   - 2015-05-22T20:05:54: Number of models ..........: 2
680   - 2015-05-22T20:05:54: Number of parameters ......: 10
681   - 2015-05-22T20:05:54: === GModelSky ===
682   - 2015-05-22T20:05:54: Name ......................: Crab
683   - 2015-05-22T20:05:54: Instruments ...............: all
684   - 2015-05-22T20:05:54: Instrument scale factors ..: unity
685   - 2015-05-22T20:05:54: Observation identifiers ...: all
686   - 2015-05-22T20:05:54: Model type ................: PointSource
687   - 2015-05-22T20:05:54: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
688   - 2015-05-22T20:05:54: Number of parameters ......: 6
689   - 2015-05-22T20:05:54: Number of spatial par's ...: 2
690   - 2015-05-22T20:05:54: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
691   - 2015-05-22T20:05:54: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
692   - 2015-05-22T20:05:54: Number of spectral par's ..: 3
693   - 2015-05-22T20:05:54: Prefactor ................: 5.80619e-16 +/- 1.11149e-17 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
694   - 2015-05-22T20:05:54: Index ....................: -2.49282 +/- 0.0163467 [-0,-5] (free,scale=-1,gradient)
695   - 2015-05-22T20:05:54: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
696   - 2015-05-22T20:05:54: Number of temporal par's ..: 1
697   - 2015-05-22T20:05:54: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
698   - 2015-05-22T20:05:54: === GCTAModelIrfBackground ===
699   - 2015-05-22T20:05:54: Name ......................: CTABackgroundModel
700   - 2015-05-22T20:05:54: Instruments ...............: CTA
701   - 2015-05-22T20:05:54: Instrument scale factors ..: unity
702   - 2015-05-22T20:05:54: Observation identifiers ...: all
703   - 2015-05-22T20:05:54: Model type ................: "PowerLaw" * "Constant"
704   - 2015-05-22T20:05:54: Number of parameters ......: 4
705   - 2015-05-22T20:05:54: Number of spectral par's ..: 3
706   - 2015-05-22T20:05:54: Prefactor ................: 1.03511 +/- 0.024311 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
707   - 2015-05-22T20:05:54: Index ....................: 0.0333176 +/- 0.0134386 [-5,5] (free,scale=1,gradient)
708   - 2015-05-22T20:05:54: PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
709   - 2015-05-22T20:05:54: Number of temporal par's ..: 1
710   - 2015-05-22T20:05:54: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
711   -
712   -
713   -.. _sec_butterfly_cta:
714   -
715   -Calculating and visualising a butterfly
716   -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
717   -
718   -To visualise the analysis results retrieved above, one can calculate the
719   -confidence band of the spectral fit.
720   -The :ref:`ctbutterfly` tool takes the optimised source model as input.
721   -It takes the covariance matrix from the fit to conduct a
722   -Gaussian error propagation for each energy value. It will write the
723   -butterfly information into an ASCII file.
724   -The following example shows how to compute such a butterfly from the command
725   -line.
726   -
727   -.. code-block:: bash
728   -
729   - $ ctbutterfly
730   - Input event list, counts cube or observation definition file [events.fits]
731   - Calibration database [prod2]
732   - Instrument response function [South_50h]
733   - Source model [$CTOOLS/share/models/crab.xml]
734   - Source of interest [Crab]
735   - Start value for first energy bin in TeV [0.1]
736   - Stop value for last energy bin in TeV [100.0]
737   - Output ascii file [butterfly.txt]
738   -
739   -Now that you have computed the confidence band of the spectral fit and
740   -that you will have an ASCII file named ``butterfly.txt`` on disk you can
741   -visualise the butterfly using the script ``show_butterfly.py`` that is
742   -in the ctools ``example`` folder. You will need matplotlib on your system
743   -to make this work. To launch the script, type:
744   -
745   -.. code-block:: bash
746   -
747   - python $CTOOLS/share/examples/python/show_butterfly.py butterfly.txt
748   -
749   -This will result in a canvas which should look like the following:
750   -
751   -.. figure:: butterfly.jpg
752   - :height: 400px
753   - :align: center
  4 +-----------------------
754 5  
755   - *Confidence band of the fit*
756   -
757 6 \ No newline at end of file
  7 +This section provides a step-by-step description of a simple CTA data
  8 +analysis example using the ctools. In this example we will simulate a
  9 +half an hour long CTA observation of the Crab nebula as the single
  10 +point source within the CTA field of view. You will learn how to bin the
  11 +event data into a counts cube and how to fit a spatial and spectral model
  12 +to the data. You will also learn how to analyse directly event lists
  13 +without binning the events into a counts cube. Finally we will show how
  14 +you can create a butterfly diagram that shows the confidence band of the
  15 +fitted spectral model.
  16 +
  17 +.. toctree::
  18 + :maxdepth: 2
  19 +
  20 + simulating
  21 + binning
  22 + fitting
  23 + unbinned
  24 + butterfly
... ...
doc/source/user_manual/getting_started/resmap-crab.png

251 KB | W: | H:

314 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
doc/source/user_manual/getting_started/response.rst
... ... @@ -99,7 +99,7 @@ Specifying the response function as input parameters
99 99 ctools that require instrument response functions have two parameters
100 100 to specify the calibration database name and the response function name.
101 101 The following example shows a ``ctobssim`` run using the ``prod2``
102   -calibration database and the ``South_50h`` response function:
  102 +calibration database and the ``South_0.5h`` response function:
103 103  
104 104 .. code-block:: bash
105 105  
... ... @@ -112,8 +112,9 @@ calibration database and the ``South_50h`` response function:
112 112 Lower energy limit (TeV) [0.1]
113 113 Upper energy limit (TeV) [100.0]
114 114 Calibration database [prod2]
115   - Instrument response function [South_50h]
116   - Model [$CTOOLS/share/models/crab.xml]
  115 + Instrument response function [South_0.5h]
  116 + Input model XML file [$CTOOLS/share/models/crab.xml]
  117 + Output event data file or observation definition XML file [events.fits]
117 118  
118 119 Running the other tools is equivalent.
119 120  
... ... @@ -131,7 +132,7 @@ definition file:
131 132 <observation_list title="observation library">
132 133 <observation name="Crab" id="00001" instrument="CTA">
133 134 <parameter name="EventList" file="events.fits"/>
134   - <parameter name="Calibration" database="prod2" response="South_50h"/>
  135 + <parameter name="Calibration" database="prod2" response="South_0.5h"/>
135 136 </observation>
136 137 </observation_list>
137 138  
... ... @@ -141,9 +142,9 @@ response name. You can then pass this file directly to, e.g., ``ctlike``:
141 142 .. code-block:: bash
142 143  
143 144 $ ctlike
144   - Event list, counts cube or observation definition file [events.fits] obs_irf.xml
145   - Source model [$CTOOLS/share/models/crab.xml]
146   - Source model output file [crab_results.xml]
  145 + Input event list, counts cube or observation definition XML file [events.fits] obs_irf.xml
  146 + Input model XML file [$CTOOLS/share/models/crab.xml]
  147 + Output model XML file [crab_results.xml]
147 148  
148 149 Note that ``ctlike`` does not ask for the calibration database and
149 150 response name as it found the relevant information in the XML file.
... ... @@ -181,11 +182,11 @@ and response name from within Python:
181 182 import gammalib
182 183 obs = gammalib.GCTAObservation()
183 184 caldb = gammalib.GCaldb("cta", "prod2")
184   - irf = "South_50h"
  185 + irf = "South_0.5h"
185 186 obs.response(irf, caldb)
186 187  
187 188 The calibration database is set by creating a ``GCaldb`` object. The
188 189 constructor takes as argument the mission (always ``cta``) and the
189 190 database name, in our case ``prod2``. The response function is then set
190   -by passing the response name (here ``South_50h``) and the calibration
  191 +by passing the response name (here ``South_0.5h``) and the calibration
191 192 database object to the ``response`` method.
... ...
doc/source/user_manual/getting_started/simulating.rst 0 → 100644
  1 +.. _sec_simulating_cta:
  2 +
  3 +Simulating CTA data
  4 +~~~~~~~~~~~~~~~~~~~
  5 +
  6 +You can simulate a CTA observation with the :ref:`ctobssim` tool.
  7 +
  8 +To invoke the tool, type :ref:`ctobssim` at the console prompt
  9 +(which is denoted by ``$``).
  10 +:ref:`ctobssim` will query for a number of parameters:
  11 +
  12 +.. code-block:: bash
  13 +
  14 + $ ctobssim
  15 + RA of pointing (degrees) (0-360) [83.63]
  16 + Dec of pointing (degrees) (-90-90) [22.01]
  17 + Radius of FOV (degrees) (0-180) [5.0]
  18 + Start time (MET in s) [0.0]
  19 + End time (MET in s) [1800.0]
  20 + Lower energy limit (TeV) [0.1]
  21 + Upper energy limit (TeV) [100.0]
  22 + Calibration database [prod2]
  23 + Instrument response function [South_0.5h]
  24 + Input model XML file [$CTOOLS/share/models/crab.xml]
  25 + Output event data file or observation definition XML file [events.fits]
  26 +
  27 +Each line represents a query for one parameter value.
  28 +The line starts with a short description of the parameter, followed by
  29 +the default value proposed by ctobssim in squared brackets ``[ ]``.
  30 +
  31 +**If no parameter is entered the default value will be used**
  32 +(which is the case for all parameters shown here).
  33 +Otherwise, the specified value will overwrite the default value.
  34 +The round brackets ``( )`` indicate the range of possible parameter
  35 +values (if applicable).
  36 +
  37 +
  38 +You may have recognised that the environment variable ``$CTOOLS`` has
  39 +been used in the path name of the model. ctools will automatically expand
  40 +the environment variables in parameter inputs.
  41 +
  42 +The CTA instrument properties (effective area, PSF width) are taken from
  43 +the prod2 database. The response for the southern array using the cuts
  44 +optimised for 50 hours of observing time are used.
  45 +
  46 +.. note::
  47 +
  48 + ctools comes bundled with CTA response functions for the northern and
  49 + the southern array. The response functions are based on a Prod2
  50 + analysis with cuts optimised for 0.5 hours, 5 hours and 50 hours of
  51 + observing time. The following Instrument Response Functions
  52 + (IRFs) are available: ``North_0.5h``, ``North_5h``, ``North_50h``,
  53 + ``South_0.5h``, ``South_5h``, and ``South_50h``.
  54 +
  55 +Events are simulated based on the instrument properties and based on a
  56 +source and background model. Only events that fall within the specified
  57 +region of interest (ROI), defined as a circle around a sky position in
  58 +Right Ascension and Declination (in degrees), will be stored in the output
  59 +event data file. The duration of the simulation is taken here to 30 minutes
  60 +(or 1800 seconds). Events are simulated for energies between 0.1 and 100 TeV.
  61 +
  62 +The source and background model is defined by the XML file
  63 +``$CTOOLS/share/models/crab.xml``:
  64 +
  65 +.. code-block:: xml
  66 +
  67 + <?xml version="1.0" standalone="no"?>
  68 + <source_library title="source library">
  69 + <source name="Crab" type="PointSource">
  70 + <spectrum type="PowerLaw">
  71 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  72 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  73 + <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  74 + </spectrum>
  75 + <spatialModel type="SkyDirFunction">
  76 + <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
  77 + <parameter name="DEC" scale="1.0" value="22.0145" min="-90" max="90" free="0"/>
  78 + </spatialModel>
  79 + </source>
  80 + <source name="CTABackgroundModel" type="CTAIrfBackground" instrument="CTA">
  81 + <spectrum type="PowerLaw">
  82 + <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-3" max="1e+3" free="1"/>
  83 + <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
  84 + <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  85 + </spectrum>
  86 + </source>
  87 + </source_library>
  88 +
  89 +The model consists of a source library that contains two components:
  90 +the Crab nebula and an instrumental background model.
  91 +
  92 +The Crab nebula is modelled by a factorized sky model that has a spectral
  93 +and a spatial component (tags ``<spectrum>`` and ``<spatialModel>``,
  94 +respectively). The spectrum is modelled by a power law, which is defined by
  95 +three parameters: the ``Prefactor``, the ``Index`` and the ``Scale``.
  96 +The spatial model has two parameters: Right Ascension in degrees (``RA``), and
  97 +Declination in degrees (``DEC``). Each parameter has a value and a scale factor,
  98 +the real value of the parameter being the product ``value * scale``. Typically,
  99 +``scale`` is chosen so that ``value`` is of the order of 1 (this is relevant for
  100 +model fitting). In addition, ``value`` is bound by a minimum (``min``) and
  101 +maximum (``max``) value, and a parameter may be free (``free="1"``) or fixed
  102 +(``free="0"``). The ``min``, ``max``, and ``free`` attributes are not
  103 +relevant here for the simulations, but they will be important for the model
  104 +fitting later.
  105 +
  106 +The spectral intensity I(E) (in units of photons/cm2/s/MeV) of the power
  107 +law is given by
  108 +
  109 +.. math::
  110 + \frac{dN}{dE} = N_0 \left( \frac{E}{E_0} \right)^{\gamma}
  111 +
  112 +where the parameters in the XML definition have the following mappings:
  113 +
  114 +* :math:`N_0` = ``Prefactor``
  115 +* :math:`\gamma` = ``Index``
  116 +* :math:`E_0` = ``Scale``
  117 +
  118 +.. warning::
  119 +
  120 + Energies are given in the XML file in MeV units. This is a GammaLib
  121 + convention that can not be modified. **So make sure you always use
  122 + MeV as energy unit in an XML file.**
  123 +
  124 +The instrumental background of CTA is modelled using the background
  125 +information provided in the IRF (``CTAIrfBackground``) multipled
  126 +by a power law. As it is defined here, the power law represents a
  127 +constant of 1, hence the background IRF will be used without any
  128 +modification. The power law will become active when fitting the data
  129 +later and allows a spectral adjustment of the background model that
  130 +may account for uncertainties in the background information provided
  131 +in the IRF.
  132 +
  133 +:ref:`ctobssim` has a couple of hidden parameters, the most important one being
  134 +certainly ``seed``. ``seed`` is an integer that specifies the seed value
  135 +for the random number generator, and changing this parameter will allow to
  136 +generate statistically independent Monte Carlo samples of CTA event data.
  137 +To use for example a seed value of 41 you should type:
  138 +
  139 +.. code-block:: bash
  140 +
  141 + $ ctobssim seed=41
  142 +
  143 +:ref:`ctobssim` will write 2 files in the working directory: ``events.fits``
  144 +and ``ctobssim.log``. The first file contains the simulated events in FITS
  145 +format and can be inspected using ``fv`` or ``ds9``. The FITS file will
  146 +contain three extensions: an empty primary image, a binary table named
  147 +``EVENTS`` that holds the events (one row per event), and a binary table
  148 +named ``GTI`` holding the Good Time Intervals (for the moment a single row
  149 +with 2 columns providing the start and the stop time of the simulated time
  150 +interval).
  151 +
  152 +The second file produced by :ref:`ctobssim` is a human readable log file that
  153 +contains information about the job execution. As example, the last lines
  154 +from this file are shown here:
  155 +
  156 +.. code-block:: xml
  157 +
  158 + 2015-12-07T20:48:30: +======================+
  159 + 2015-12-07T20:48:30: | Simulate observation |
  160 + 2015-12-07T20:48:30: +======================+
  161 + 2015-12-07T20:48:30: === CTA observation ===
  162 + 2015-12-07T20:48:30: Simulation area ...........: 1.9635e+11 cm2
  163 + 2015-12-07T20:48:30: Simulation cone ...........: RA=83.63 deg, Dec=22.01 deg, r=5.5 deg
  164 + 2015-12-07T20:48:30: Time interval .............: 0 - 1800 s
  165 + 2015-12-07T20:48:30: Photon energy range .......: 100 GeV - 100 TeV
  166 + 2015-12-07T20:48:30: Event energy range ........: 100 GeV - 100 TeV
  167 + 2015-12-07T20:48:30: Use model .................: Crab
  168 + 2015-12-07T20:48:30: Normalization .............: 1 [Crab]
  169 + 2015-12-07T20:48:30: Flux ......................: 5.87297e-10 [Crab] photons/cm2/s
  170 + 2015-12-07T20:48:30: Normalized flux ...........: 5.87297e-10 [Crab] photons/cm2/s
  171 + 2015-12-07T20:48:30: Photon rate ...............: 115.316 photons/s [Crab]
  172 + 2015-12-07T20:48:31: MC source photons .........: 207547 [Crab]
  173 + 2015-12-07T20:48:31: MC source events ..........: 3646 [Crab]
  174 + 2015-12-07T20:48:31: MC source events ..........: 3646 (all source models)
  175 + 2015-12-07T20:48:33: MC events outside ROI .....: 0
  176 + 2015-12-07T20:48:33: MC background events ......: 19039
  177 + 2015-12-07T20:48:33: MC events .................: 22685 (all models)
  178 +
  179 +Each line starts with the UTC time at which the line has been written. In
  180 +this run, 207547 Crab photons have been thrown over an area of 19.6 square
  181 +kilometres during a time interval of 1800 seconds. 3646 of these photons have
  182 +been registered by CTA as events. In the same time interval, 19039 background
  183 +events have been registred by CTA.
  184 +
  185 +You may change the name of the log file using the hidden parameter
  186 +``logfile``:
  187 +
  188 +.. code-block:: bash
  189 +
  190 + $ ctobssim logfile=my-private-log-file
  191 +
  192 +Furthermore, you may decide on the amount of information provided in the
  193 +log file (the chattiness of the executable) using the hidden parameter
  194 +``chatter``:
  195 +
  196 +.. code-block:: bash
  197 +
  198 + $ ctobssim chatter=4
  199 +
  200 +``chatter`` can vary between 0 and 4, 0 providing no information while 4
  201 +provides the most detailed information.
  202 +
  203 +**By default, all ctools have a chatter level of 2.**
  204 +
  205 +You may also duplicate the log file information into the console by setting
  206 +the hidden ``debug`` parameter to yes:
  207 +
  208 +.. code-block:: bash
  209 +
  210 + $ ctobssim debug=yes
... ...
doc/source/user_manual/getting_started/tsmap-crab.png

70.7 KB | W: | H:

73.4 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
doc/source/user_manual/getting_started/unbinned.rst 0 → 100644
  1 +.. _sec_unbinned_cta:
  2 +
  3 +Doing an unbinned analysis
  4 +~~~~~~~~~~~~~~~~~~~~~~~~~~
  5 +
  6 +As gamma-ray events are rare, the counts cubes generated by :ref:`ctbin`
  7 +will in general be sparsly populated, having many empty pixels, in
  8 +particular at high energies.
  9 +An alternative analysis technique consists of working directly on the event
  10 +list without binning the events in a counts cube. We will see the benefit of
  11 +such an analysis later once you re-run :ref:`ctlike` in unbinned mode.
  12 +
  13 +For unbinned analysis you first have to define the data space region over
  14 +which the analysis is done. This is similiar to the :ref:`ctbin` step for
  15 +a binned analysis where you defined the size of the counts cube, the energy
  16 +range, and the time interval. For unbinned analysis you have no such thing
  17 +as a counts cube, but you have to define over which region of the data space
  18 +the selected events are spread (because the ctools have to integrate over
  19 +this region to compute the total number of predicted events in the data space
  20 +that you analyse). Furthermore, you have to define what energy range is
  21 +covered, and what time interval is spanned by the data. All this is done
  22 +by the :ref:`ctselect` tool, which replaces the :ref:`ctbin` step in an
  23 +unbinned analysis.
  24 +
  25 +:ref:`ctselect` performs an event selection by choosing only events within
  26 +a given region-of-interest (ROI), within a given energy band, and within a
  27 +given time interval from the input event list. The ROI is a circular region on
  28 +the sky, for which you define the centre (in celestial coordinates) and the
  29 +radius. Such a circular ROI is sometimes also called an acceptance cone. The
  30 +following example shows how to run ctselect:
  31 +
  32 +.. code-block:: bash
  33 +
  34 + $ ctselect
  35 + Input event list or observation definition XML file [events.fits]
  36 + RA for ROI centre (degrees) (0-360) [83.63]
  37 + Dec for ROI centre (degrees) (-90-90) [22.01]
  38 + Radius of ROI (degrees) (0-180) [3.0]
  39 + Start time (CTA MET in seconds) [0.0]
  40 + End time (CTA MET in seconds) [0.0]
  41 + Lower energy limit (TeV) [0.1]
  42 + Upper energy limit (TeV) [100.0]
  43 + Output event list or observation definition XML file [selected_events.fits]
  44 +
  45 +:ref:`ctselect` takes the input event list ``events.fits``, performs an
  46 +event selection, and writes the selected event into the file
  47 +``selected_events.fits``. The parameters it will query for are the centre
  48 +of the ROI, the radius of the ROI, the start and stop time (in seconds),
  49 +and the energy lower and upper limits (in TeV). The event selection information
  50 +is also written as a set of data selection keywords to the output events
  51 +file ``selected_events.fits``, by respecting the same syntax that has been
  52 +implemented for Fermi/LAT. The following image is a screen dump of the data
  53 +selection keywords that have been written to the ``EVENTS`` header in the
  54 +file ``selected_events.fits``:
  55 +
  56 +.. figure:: dskeys.jpg
  57 + :width: 400px
  58 + :align: center
  59 +
  60 + *Data selection keywords*
  61 +
  62 +**It is mandatory for an unbinned analysis that these data selection keywords
  63 +exist in the FITS file.**
  64 +If they don't exist, :ref:`ctlike` will not execute in unbinned mode.
  65 +
  66 +Below some lines of the ``ctselect.log`` file that show the data selection
  67 +part:
  68 +
  69 +.. code-block:: xml
  70 +
  71 + 2015-12-06T23:44:52: +=================+
  72 + 2015-12-06T23:44:52: | Event selection |
  73 + 2015-12-06T23:44:52: +=================+
  74 + 2015-12-06T23:44:52: === CTA observation ===
  75 + 2015-12-06T23:44:52: Selected energy range .....: 0.1 - 100 TeV
  76 + 2015-12-06T23:44:52: Requested ROI .............: Centre(RA,DEC)=(83.63, 22.01) deg, Radius=3 deg
  77 + 2015-12-06T23:44:52: ROI of data ...............: Centre(RA,DEC)=(83.63, 22.01) deg, Radius=5 deg
  78 + 2015-12-06T23:44:52: Selected ROI ..............: Centre(RA,DEC)=(83.63, 22.01) deg, Radius=3 deg
  79 + 2015-12-06T23:44:52: cfitsio selection .........: ENERGY >= 0.10000000 && ENERGY <= 100.00000000 && ANGSEP(83.630000,22.010000,RA,DEC) <= 3.000000
  80 + 2015-12-06T23:44:52: FITS filename .............: /var/tmp/tmp.0.jHg5hJ[EVENTS][ENERGY >= 0.10000000 && ENERGY <= 100.00000000 && ANGSEP(83.630000,22.010000,RA,DEC) <= 3.000000]
  81 +
  82 +.. note::
  83 +
  84 + :ref:`ctobssim` will also write data selection keywords in the event
  85 + list FITS file, hence you can run :ref:`ctlike` directly on a FITS file
  86 + produced by :ref:`ctobssim`. Any selection performed by :ref:`ctselect`
  87 + needs to be fully enclosed within any previous selection, e.g. the ROI
  88 + needs to be fully enclosed in the acceptance cone used for event
  89 + simulation, the energy selection must be fully comprised in the
  90 + range of simulated energies, the same applies for the temporal selection.
  91 + :ref:`ctselect` will automatically adjust
  92 + the selection parameters to guarantee full enclosure. To keep track of
  93 + this adjustment, the :ref:`ctselect` log file quotes the requested
  94 + selection, any existing selections, and the selection that was finally
  95 + applied.
  96 +
  97 +.. warning::
  98 +
  99 + :ref:`ctselect` may of course also be used for event selection prior to
  100 + binned analysis, for example to select events for a given period in
  101 + time. **If you use** :ref:`ctselect` **however to make a spatial or energy
  102 + selection, make sure that the counts cube is fully enclosed in the
  103 + selection intervals.** Otherwise you will get empty zones in the counts
  104 + cube of which the ctools are not aware of, and the subsequent analysis
  105 + results will be wrong.
  106 +
  107 +Now that you have selected the events of interest, you can run ctlike in
  108 +unbinned mode. To do this you have to specify the selected event list
  109 +instead of the counts cube:
  110 +
  111 +.. code-block:: bash
  112 +
  113 + $ ctlike
  114 + Input event list, counts cube or observation definition XML file [cntcube.fits] selected_events.fits
  115 + Calibration database [prod2]
  116 + Instrument response function [South_0.5h]
  117 + Input model XML file [$CTOOLS/share/models/crab.xml]
  118 + Output model XML file [crab_results.xml]
  119 +
  120 +You will recognise that :ref:`ctlike` runs much faster in unbinned mode
  121 +compared to binned mode.
  122 +This is understandable as the selected event list contains
  123 +only 21203 events, while the binned counts cube we used before had
  124 +200 x 200 x 20 = 800000 pixels. As unbinned maximum likelihood fitting loops
  125 +over the events (while binned maximum likelihood loops over the pixels),
  126 +there are much less operations to perform in unbinned than in binned mode
  127 +(there is some additional overhead in unbinned mode that comes from
  128 +integrating the models over the region of interest, yet this is negligible
  129 +compared to the operations needed when looping over all pixels). So as long
  130 +as you work with small event lists, unbinned mode is faster (this
  131 +typically holds up to 100 hours of observing time).
  132 +Unbinned :ref:`ctlike` should also be more precise as no binning is performed,
  133 +hence there is no loss of information due to histogramming.
  134 +
  135 +Below you see the corresponding output from the ctlike.log file. The fitted
  136 +parameters are essentially identical to the ones found in binned mode.
  137 +The slight difference with respect to the binned analysis may be explained
  138 +by the different event sample that has been used for the analysis: while
  139 +binned likelihood works on rectangular counts cubes, unbinned likelihood works
  140 +on circular event selection regions. It is thus not possible to select exactly
  141 +the same events for both analyses.
  142 +
  143 +.. code-block:: xml
  144 +
  145 + 2015-12-07T21:02:17: +=================================+
  146 + 2015-12-07T21:02:17: | Maximum likelihood optimisation |
  147 + 2015-12-07T21:02:17: +=================================+
  148 + 2015-12-07T21:02:17: >Iteration 0: -logL=135278.644, Lambda=1.0e-03
  149 + 2015-12-07T21:02:17: >Iteration 1: -logL=135274.475, Lambda=1.0e-03, delta=4.168, max(|grad|)=5.806873 [Index:7]
  150 + 2015-12-07T21:02:17: >Iteration 2: -logL=135274.474, Lambda=1.0e-04, delta=0.001, max(|grad|)=-0.009463 [Index:7]
  151 + 2015-12-07T21:02:17:
  152 + ...
  153 + 2015-12-07T21:02:17: +=========================================+
  154 + 2015-12-07T21:02:17: | Maximum likelihood optimisation results |
  155 + 2015-12-07T21:02:17: +=========================================+
  156 + 2015-12-07T21:02:17: === GOptimizerLM ===
  157 + 2015-12-07T21:02:17: Optimized function value ..: 135274.474
  158 + 2015-12-07T21:02:17: Absolute precision ........: 0.005
  159 + 2015-12-07T21:02:17: Acceptable value decrease .: 2
  160 + 2015-12-07T21:02:17: Optimization status .......: converged
  161 + 2015-12-07T21:02:17: Number of parameters ......: 10
  162 + 2015-12-07T21:02:17: Number of free parameters .: 4
  163 + 2015-12-07T21:02:17: Number of iterations ......: 2
  164 + 2015-12-07T21:02:17: Lambda ....................: 1e-05
  165 + 2015-12-07T21:02:17: Maximum log likelihood ....: -135274.474
  166 + 2015-12-07T21:02:17: Observed events (Nobs) ...: 21203.000
  167 + 2015-12-07T21:02:17: Predicted events (Npred) ..: 21202.998 (Nobs - Npred = 0.00198937)
  168 + 2015-12-07T21:02:17: === GModels ===
  169 + 2015-12-07T21:02:17: Number of models ..........: 2
  170 + 2015-12-07T21:02:17: Number of parameters ......: 10
  171 + 2015-12-07T21:02:17: === GModelSky ===
  172 + 2015-12-07T21:02:17: Name ......................: Crab
  173 + 2015-12-07T21:02:17: Instruments ...............: all
  174 + 2015-12-07T21:02:17: Instrument scale factors ..: unity
  175 + 2015-12-07T21:02:17: Observation identifiers ...: all
  176 + 2015-12-07T21:02:17: Model type ................: PointSource
  177 + 2015-12-07T21:02:17: Model components ..........: "SkyDirFunction" * "PowerLaw" * "Constant"
  178 + 2015-12-07T21:02:17: Number of parameters ......: 6
  179 + 2015-12-07T21:02:17: Number of spatial par's ...: 2
  180 + 2015-12-07T21:02:17: RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)
  181 + 2015-12-07T21:02:17: DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)
  182 + 2015-12-07T21:02:17: Number of spectral par's ..: 3
  183 + 2015-12-07T21:02:17: Prefactor ................: 5.81583e-16 +/- 1.01727e-17 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)
  184 + 2015-12-07T21:02:17: Index ....................: -2.50611 +/- 0.0153542 [-0,-5] (free,scale=-1,gradient)
  185 + 2015-12-07T21:02:17: PivotEnergy ..............: 300000 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
  186 + 2015-12-07T21:02:17: Number of temporal par's ..: 1
  187 + 2015-12-07T21:02:17: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
  188 + 2015-12-07T21:02:17: === GCTAModelIrfBackground ===
  189 + 2015-12-07T21:02:17: Name ......................: CTABackgroundModel
  190 + 2015-12-07T21:02:17: Instruments ...............: CTA
  191 + 2015-12-07T21:02:17: Instrument scale factors ..: unity
  192 + 2015-12-07T21:02:17: Observation identifiers ...: all
  193 + 2015-12-07T21:02:17: Model type ................: "PowerLaw" * "Constant"
  194 + 2015-12-07T21:02:17: Number of parameters ......: 4
  195 + 2015-12-07T21:02:17: Number of spectral par's ..: 3
  196 + 2015-12-07T21:02:17: Prefactor ................: 0.990866 +/- 0.0136406 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
  197 + 2015-12-07T21:02:17: Index ....................: 0.00536014 +/- 0.00839916 [-5,5] (free,scale=1,gradient)
  198 + 2015-12-07T21:02:17: PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
  199 + 2015-12-07T21:02:17: Number of temporal par's ..: 1
  200 + 2015-12-07T21:02:17: Normalization ............: 1 (relative value) (fixed,scale=1,gradient)
... ...
doc/source/user_manual/glossary.rst
1 1 Glossary
2 2 ========
3 3  
4   -- **GammaLib** (`<http://gammalib.sourceforge.net/>`_)
  4 +- **GammaLib** (`<http://cta.irap.omp.eu/gammalib/>`_)
5 5  
6 6 A versatile toolbox for scientific analysis of astronomical
7 7 gamma-ray data.
... ...
doc/source/user_manual/index.rst
... ... @@ -8,8 +8,6 @@ User Manual
8 8 introduction
9 9 getting
10 10 getting_started/index
11   - enhancing
12   - expert
13 11 plotting
14 12 glossary
15 13  
... ...
doc/source/user_manual/introduction.rst
... ... @@ -22,6 +22,13 @@ also be specified as arguments separated by a whitespace to the ctool:
22 22  
23 23 $ ctobssim ra=83.63 dec=22.01 rad=5.0 tmin=0 tmax=1800 emin=0.1 emax=100.0 caldb=prod2 irf=South_50h inmodel=$CTOOLS/share/models/crab.xml outevents=events.fits
24 24  
  25 +If you need help about the usage of a ctool or a cscript, type the name of
  26 +the ctool or cscript followed by the ``--help`` option:
  27 +
  28 +.. code-block:: bash
  29 +
  30 + $ ctobssim --help
  31 +
25 32 ctools includes also a Python module that declares every ctool as a
26 33 Python class. The following example illustrates the usage:
27 34  
... ... @@ -47,7 +54,7 @@ command line or used as Python classes, as illustrated below:
47 54  
48 55 In this User Manual you will now learn how to install and use the ctools
49 56 package.
50   -If you encounter any problems, please read the :ref:`issues` section.
51   -If you're desperate, you may need :ref:`help`.
  57 +If you encounter any problems, please read the :ref:`faq` and :ref:`issues`
  58 +sections. If you're desperate, you may need :ref:`help`.
52 59 And you should read the :ref:`develop` section if you would like to
53 60 contribute to the ctools developments.
... ...
doc/source/user_manual/plotting.rst
1 1 Plotting
2 2 ========
3 3  
4   -Gammalib and ctools currently do not include classes and scripts to make plots.
  4 +Gammalib and ctools do not include classes and scripts to make plots.
5 5  
6   -This is intentional because creating and maintaining plotting tools that work on most user's machines
7   -and cover most user's needs is a big project in itself, and deciding to support a
8   -plotting package that is popular now as part of the CTA science tools could become very problematic in the future.
  6 +This is intentional because creating and maintaining plotting tools that
  7 +work on most user's machines and cover most user's needs is a big project
  8 +in itself, and deciding to support a plotting package that is popular now
  9 +as part of the CTA science tools could become very problematic in the
  10 +future.
  11 +
  12 +But we realise that most ctools users need to create plots for their
  13 +high-level science results, so on this page we provide a few pointers
  14 +to external packages and tools.
9 15  
10   -But we realise that most ctools users need to create plots for their high-level science results,
11   -so on this page we provide a few pointers to external packages and tools.
12 16  
13 17 General
14 18 -------
15 19  
16   -The most common way to create publication-quality astronomy plots at the moment is to use the `matplotlib`_
17   -Python plotting package. As illustrated by the `matplotlib gallery`_, virtually any plot can be constructed,
18   -but matplotlib doesn't have built-in easy-to-use classes or functions to create the common plots for gamma-ray
19   -astronomy, which are sky maps and spectra, so in the sections below we give some specific pointers for those.
  20 +The most common way to create publication-quality astronomy plots at the
  21 +moment is to use the `matplotlib`_ Python plotting package. As illustrated
  22 +by the `matplotlib gallery`_, virtually any plot can be constructed,
  23 +but matplotlib doesn't have built-in easy-to-use classes or functions to
  24 +create the common plots for gamma-ray astronomy, which are sky maps and
  25 +spectra, so in the sections below we give some specific pointers for those.
  26 +
20 27  
21 28 Sky maps
22 29 --------
23 30  
24   -For creating publication quality sky map plots via a Python script a good choice is to use `APLPy`_, `WCSAxes`_
25   -or `kapteyn`_, which are all based on matplotlib.
  31 +For creating publication quality sky map plots via a Python script a good
  32 +choice is to use `APLPy`_, `WCSAxes`_ or `kapteyn`_, which are all based on
  33 +matplotlib.
26 34  
27   -You can also use interactive astronomy image viewers like `DS9`_, `Aladin`_ or `Ginga`_
28   -which allow you to save the image to a PNG or PDF file after customising it interactively,
29   -but also contain command line options to create the plot, i.e. you can write a bash or Python script
30   -to make the plot reproducible (DS9 and Ginga also feature direct communication with Python,
31   -but that is a bit harder to use and usually used for interactive image analysis, not plotting scripts).
  35 +You can also use interactive astronomy image viewers like `DS9`_, `Aladin`_
  36 +or `Ginga`_ which allow you to save the image to a PNG or PDF file after
  37 +customising it interactively, but also contain command line options to create
  38 +the plot, i.e. you can write a bash or Python script to make the plot
  39 +reproducible (DS9 and Ginga also feature direct communication with Python,
  40 +but that is a bit harder to use and usually used for interactive image
  41 +analysis, not plotting scripts).
32 42  
33 43  
34 44 Spectra and light curves
35 45 ------------------------
36 46  
37   -To plot spectra or spectral energy distributions (including flux model curves, flux model error bands,
38   -flux points and residuals) and light curves, you can use matplotlib directly,
39   -or use the classes and scripts in `Gammapy`_.
40   -
41   -Another option is to use virtual observatory interactive spectrum tools like `IRIS`_, `CASSIS`_ or `VOSpec`_
42   -which allow you to save the plot to a PNG or PDF file after creating it interactively.
  47 +To plot spectra or spectral energy distributions (including flux model curves,
  48 +flux model error bands, flux points and residuals) and light curves, you can
  49 +use matplotlib directly, or use the classes and scripts in `Gammapy`_.
43 50  
  51 +Another option is to use virtual observatory interactive spectrum tools
  52 +like `IRIS`_, `CASSIS`_ or `VOSpec`_ which allow you to save the plot to a
  53 +PNG or PDF file after creating it interactively.
44 54  
45 55 .. _DS9: http://ds9.si.edu/
46 56 .. _Aladin: http://aladin.u-strasbg.fr/
... ...
pyext/ctool.i
... ... @@ -99,6 +99,8 @@ public:
99 99  
100 100 // Protected methods that check user parameters
101 101 void require_inobs(const std::string& method);
  102 + void require_inobs_nolist(const std::string& method);
  103 + void require_inobs_nocube(const std::string& method);
102 104  
103 105 // Protected support methods
104 106 void set_response(GObservations& obs);
... ...
src/ctbin/ctbin.cpp
... ... @@ -434,6 +434,9 @@ void ctbin::get_parameters(void)
434 434 // Throw exception if no input observation file is given
435 435 require_inobs(G_GET_PARAMETERS);
436 436  
  437 + // Throw exception if counts cube is given
  438 + require_inobs_nocube(G_GET_PARAMETERS);
  439 +
437 440 // Get observation container without response (not needed)
438 441 m_obs = get_observations(false);
439 442  
... ...
src/ctbin/ctbin.par
... ... @@ -17,8 +17,9 @@
17 17 #
18 18 # General parameters
19 19 #===================
20   -inobs, f, a, "events.fits",,, "Event list or observation definition file"
21   -outcube, f, a, "cntcube.fits",,, "Output counts cube"
  20 +inobs, f, a, "events.fits",,, "Input event list or observation definition XML file"
  21 +outcube, f, a, "cntcube.fits",,, "Output counts cube file"
  22 +
22 23 #
23 24 # Energy binning parameters
24 25 #==========================
... ... @@ -27,6 +28,7 @@ emin, r, a, 0.1,,, &quot;Start value for first energy bin in TeV&quot;
27 28 emax, r, a, 100.0,,, "Stop value for last energy bin in TeV"
28 29 enumbins, i, a, 20,,, "Number of energy bins"
29 30 ebinfile, f, a, "NONE",,, "Name of the file containing the energy bin definition"
  31 +
30 32 #
31 33 # Spatial binning parameters
32 34 #===========================
... ... @@ -38,6 +40,7 @@ coordsys, s, a, &quot;CEL&quot;, CEL|GAL,,&quot;Coordinate system (CEL - celestial, GAL - galac
38 40 xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)"
39 41 yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)"
40 42 proj, s, a, "CAR",AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method"
  43 +
41 44 #
42 45 # Standard parameters
43 46 #====================
... ...
src/ctbkgcube/ctbkgcube.cpp
... ... @@ -450,6 +450,9 @@ void ctbkgcube::get_parameters(void)
450 450 // Throw exception if no input observation file is given
451 451 require_inobs(G_GET_PARAMETERS);
452 452  
  453 + // Throw exception if counts cube is given
  454 + require_inobs_nocube(G_GET_PARAMETERS);
  455 +
453 456 // Build observation container
454 457 m_obs = get_observations();
455 458  
... ...
src/ctbkgcube/ctbkgcube.par
... ... @@ -15,15 +15,16 @@
15 15 # #
16 16 #############################################################################
17 17 #
18   -# Observational parameters
  18 +# General parameters
19 19 #===================
20   -inobs, f, a, "NONE",,, "Input event list or observation definition file"
  20 +inobs, f, a, "NONE",,, "Input event list or observation definition XML file"
21 21 inmodel, f, a, "NONE",,, "Input model XML file"
22   -incube, f, a, "NONE",,, "Counts cube for background cube definition"
  22 +incube, f, a, "NONE",,, "Input counts cube file to extract background cube definition"
  23 +caldb, s, a, "prod2",,, "Calibration database"
  24 +irf, s, a, "South_0.5h",,, "Instrument response function"
23 25 outcube, f, a, "bkgcube.fits",,, "Output background cube file"
24 26 outmodel, f, a, "NONE",,, "Output model XML file"
25   -caldb, s, a, "prod2",,, "Calibration database"
26   -irf, s, a, "South_50h",,, "Instrument response function"
  27 +
27 28 #
28 29 # Energy binning parameters
29 30 #==========================
... ... @@ -32,6 +33,7 @@ emin, r, a, 0.1,,, &quot;Lower energy limit (TeV)&quot;
32 33 emax, r, a, 100.0,,, "Upper energy limit (TeV)"
33 34 enumbins, i, a, 20,,, "Number of energy bins"
34 35 ebinfile, f, h, "NONE",,, "Name of the file containing the energy bin definition"
  36 +
35 37 #
36 38 # Spatial binning parameters
37 39 #===========================
... ... @@ -43,6 +45,7 @@ coordsys, s, a, &quot;CEL&quot;, CEL|GAL,,&quot;Coordinate system (CEL - celestial, GAL - galac
43 45 xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)"
44 46 yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)"
45 47 proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method"
  48 +
46 49 #
47 50 # Standard parameters
48 51 #====================
... ...
src/ctbutterfly/ctbutterfly.cpp
... ... @@ -241,8 +241,8 @@ void ctbutterfly::run(void)
241 241 log << m_obs << std::endl;
242 242 }
243 243  
244   - // If refit is selected then do maximum likelihood fit
245   - if (m_refit) {
  244 + // If fit is selected then do maximum likelihood fit
  245 + if (m_fit) {
246 246  
247 247 // Write header
248 248 if (logTerse()) {
... ... @@ -267,14 +267,14 @@ void ctbutterfly::run(void)
267 267 log << m_covariance << std::endl;
268 268 }
269 269  
270   - } // endif: refit selected
  270 + } // endif: fit selected
271 271  
272 272 // Get model instance for further computations
273 273 GModels models = m_obs.models();
274 274  
275   - // If no refit is selected and no covariance matrix has been specified
  275 + // If no fit is selected and no covariance matrix has been specified
276 276 // then compute now the covariance matrix
277   - if (!m_refit && m_covariance.size() == 0) {
  277 + if (!m_fit && m_covariance.size() == 0) {
278 278  
279 279 // Write header
280 280 if (logTerse()) {
... ... @@ -542,7 +542,7 @@ void ctbutterfly::init_members(void)
542 542 m_confidence = 0.68;
543 543 m_max_iter = 50;
544 544 m_apply_edisp = false;
545   - m_refit = false;
  545 + m_fit = false;
546 546 m_ebounds.clear();
547 547 m_outfile.clear();
548 548  
... ... @@ -576,7 +576,7 @@ void ctbutterfly::copy_members(const ctbutterfly&amp; app)
576 576 m_confidence = app.m_confidence;
577 577 m_max_iter = app.m_max_iter;
578 578 m_apply_edisp = app.m_apply_edisp;
579   - m_refit = app.m_refit;
  579 + m_fit = app.m_fit;
580 580 m_ebounds = app.m_ebounds;
581 581 m_outfile = app.m_outfile;
582 582  
... ... @@ -668,7 +668,7 @@ void ctbutterfly::get_parameters(void)
668 668  
669 669 // Read other parameters
670 670 m_confidence = (*this)["confidence"].real();
671   - m_refit = (*this)["refit"].boolean();
  671 + m_fit = (*this)["fit"].boolean();
672 672  
673 673 // Optionally read ahead parameters so that they get correctly
674 674 // dumped into the log file
... ...
src/ctbutterfly/ctbutterfly.hpp
... ... @@ -93,7 +93,7 @@ protected:
93 93 double m_confidence; //!< Confidence level
94 94 int m_max_iter; //!< Maximum number of iterations
95 95 bool m_apply_edisp; //!< Apply energy dispersion?
96   - bool m_refit; //!< Do refit?
  96 + bool m_fit; //!< Do fit?
97 97 GEbounds m_ebounds; //!< Energy binning definition
98 98 std::string m_outfile; //!< Output ascii file
99 99  
... ...
src/ctbutterfly/ctbutterfly.par
... ... @@ -17,17 +17,21 @@
17 17 #
18 18 # General parameters
19 19 #===================
20   -inobs, f, a, "events.fits",,,"Input event list, counts cube or observation definition file"
21   -inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Source model"
  20 +inobs, f, a, "events.fits",,,"Input event list, counts cube or observation definition XML file"
  21 +inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Input model XML file"
22 22 srcname, s, a, "Crab",,,"Source of interest"
23   -expcube, f, a, "NONE",,, "Exposure cube file (only needed for stacked analysis)"
24   -psfcube, f, a, "NONE",,, "PSF cube file (only needed for stacked analysis)"
25   -bkgcube, f, a, "NONE",,, "Background cube file (only needed for stacked analysis)"
  23 +expcube, f, a, "NONE",,, "Input exposure cube file (only needed for stacked analysis)"
  24 +psfcube, f, a, "NONE",,, "Input PSF cube file (only needed for stacked analysis)"
  25 +bkgcube, f, a, "NONE",,, "Input background cube file (only needed for stacked analysis)"
26 26 caldb, s, a, "prod2",,, "Calibration database"
27   -irf, s, a, "South_50h",,, "Instrument response function"
  27 +irf, s, a, "South_0.5h",,, "Instrument response function"
28 28 edisp, b, h, no,,, "Apply energy dispersion?"
29   -outfile, f, a, "butterfly.txt",,, "Output ascii file"
30   -refit, b, h, no,,, "Do refitting?"
  29 +outfile, f, a, "butterfly.txt",,, "Output ASCII file"
  30 +
  31 +#
  32 +# Butterfly parameters
  33 +#=====================
  34 +fit, b, h, no,,, "Perform maximum likelihood fitting?"
31 35 confidence, r, h, 0.68,0.0,1.0, "Confidence level"
32 36 matrix, f, h, "NONE",,, "Input covariance Matrix FITS file"
33 37  
... ...
src/ctcubemask/ctcubemask.cpp
... ... @@ -357,16 +357,11 @@ void ctcubemask::get_parameters(void)
357 357 // parameters
358 358 if (m_obs.size() == 0) {
359 359  
360   - // Throw exception if no infile is given
361   - if ((*this)["inobs"].filename() == "NONE" ||
362   - (*this)["inobs"].filename() == "") {
363   - std::string msg = "A valid file needs to be specified for the "
364   - "\"inobs\" parameter, yet \""+
365   - (*this)["inobs"].filename()+"\" was given."
366   - " Specify a valid observation definition or "
367   - "event list FITS file to proceed.";
368   - throw GException::invalid_value(G_GET_PARAMETERS, msg);
369   - }
  360 + // Throw exception if no input observation file is given
  361 + require_inobs(G_GET_PARAMETERS);
  362 +
  363 + // Throw exception if event list is given
  364 + require_inobs_nolist(G_GET_PARAMETERS);
370 365  
371 366 // Build observation container without response (not needed)
372 367 m_obs = get_observations(false);
... ... @@ -389,7 +384,7 @@ void ctcubemask::get_parameters(void)
389 384 }
390 385 }
391 386  
392   - // Check if radius is vaild for a RoI selection
  387 + // Check if radius is valid for a RoI selection
393 388 if (m_select_roi && (*this)["rad"].is_valid()) {
394 389 m_rad = (*this)["rad"].real();
395 390 }
... ...
src/ctcubemask/ctcubemask.par
... ... @@ -15,21 +15,23 @@
15 15 # #
16 16 #############################################################################
17 17 #
18   -# File information
19   -#=================
20   -inobs, f, a, "cntmap.fits",,, "Input counts cube or observation definition file"
21   -regfile, f, a, "NONE",,, "Exclusion region file in ds9 format"
22   -outcube, f, a, "filtered_cube.fits",,, "Output counts cube or observation definition file"
23   -prefix, s, h, "filtered_",,, "Prefix for counts cube in observation definition file"
  18 +# General parameters
  19 +#===================
  20 +inobs, f, a, "cntmap.fits",,, "Input counts cube or observation definition XML file"
  21 +outcube, f, a, "filtered_cube.fits",,, "Output counts cube or observation definition XML file"
  22 +prefix, s, h, "filtered_",,, "Prefix for counts cube in observation definition XML file"
  23 +
24 24 #
25 25 # Selection parameters
26 26 #=====================
27   -usepnt, b, h, no,,, "Use pointing instead of RA/DEC parameters?"
28   -ra, r, a, 83.63,0,360, "RA for ROI centre (degrees)"
29   -dec, r, a, 22.01,-90,90, "Dec for ROI centre (degrees)"
30   -rad, r, a, 3.0,0,180, "Radius of ROI (degrees)"
31   -emin, r, a, 0.1,,, "Lower energy limit (TeV)"
32   -emax, r, a, 100.0,,, "Upper energy limit (TeV)"
  27 +usepnt, b, h, no,,, "Use pointing instead of RA/DEC parameters?"
  28 +ra, r, a, 83.63,0,360, "RA for ROI centre (degrees)"
  29 +dec, r, a, 22.01,-90,90, "Dec for ROI centre (degrees)"
  30 +rad, r, a, 3.0,0,180, "Radius of ROI (degrees)"
  31 +regfile, f, a, "NONE",,, "Input exclusion region file in ds9 format"
  32 +emin, r, a, 0.1,,, "Lower energy limit (TeV)"
  33 +emax, r, a, 100.0,,, "Upper energy limit (TeV)"
  34 +
33 35 #
34 36 # Standard parameters
35 37 #====================
... ...
src/cterror/cterror.par
... ... @@ -18,16 +18,16 @@
18 18 #
19 19 # General parameters
20 20 #===================
21   -inobs, f, a, "events.fits",,, "Input event list, counts cube or observation definition file"
22   -inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Source model"
23   -outmodel, f, a, "results.xml",,, "Source model output file"
  21 +inobs, f, a, "events.fits",,, "Input event list, counts cube or observation definition XML file"
  22 +inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Input model XML file"
24 23 srcname, s, a, "Crab",,, "Source of interest"
25   -expcube, f, a, "NONE",,, "Exposure cube file (only needed for stacked analysis)"
26   -psfcube, f, a, "NONE",,, "PSF cube file (only needed for stacked analysis)"
27   -bkgcube, f, a, "NONE",,, "Background cube file (only needed for stacked analysis)"
  24 +expcube, f, a, "NONE",,, "Input exposure cube file (only needed for stacked analysis)"
  25 +psfcube, f, a, "NONE",,, "Input PSF cube file (only needed for stacked analysis)"
  26 +bkgcube, f, a, "NONE",,, "Input background cube file (only needed for stacked analysis)"
28 27 caldb, s, a, "prod2",,, "Calibration database"
29   -irf, s, a, "South_50h",,, "Instrument response function"
  28 +irf, s, a, "South_0.5h",,, "Instrument response function"
30 29 edisp, b, h, no,,, "Apply energy dispersion?"
  30 +outmodel, f, a, "results.xml",,, "Output model XML file"
31 31  
32 32 #
33 33 # Error calculation parameters
... ...
src/cterror/main.cpp
... ... @@ -19,7 +19,7 @@
19 19 * *
20 20 ***************************************************************************/
21 21 /**
22   - * @file main.cpp
  22 + * @file cterror/main.cpp
23 23 * @brief CTA parameter error calculation
24 24 * @author Florent Forest
25 25 */
... ...
src/ctexpcube/ctexpcube.cpp
... ... @@ -354,6 +354,9 @@ void ctexpcube::get_parameters(void)
354 354 // Throw exception if no input observation file is given
355 355 require_inobs(G_GET_PARAMETERS);
356 356  
  357 + // Throw exception if counts cube is given
  358 + require_inobs_nocube(G_GET_PARAMETERS);
  359 +
357 360 // Build observation container
358 361 m_obs = get_observations();
359 362  
... ...
src/ctexpcube/ctexpcube.par
... ... @@ -15,14 +15,15 @@
15 15 # #
16 16 #############################################################################
17 17 #
18   -# Observational parameters
  18 +# General parameters
19 19 #===================
20   -inobs, f, a, "NONE",,, "Event list or observation definition file"
21   -incube, f, a, "NONE",,, "Counts cube for exposure cube definition"
22   -outcube, f, a, "expcube.fits",,, "Output exposure cube file"
  20 +inobs, f, a, "NONE",,, "Input event list or observation definition XML file"
  21 +incube, f, a, "NONE",,, "Input counts cube file to extract exposure cube definition"
23 22 caldb, s, a, "prod2",,, "Calibration database"
24   -irf, s, a, "South_50h",,, "Instrument response function"
  23 +irf, s, a, "South_0.5h",,, "Instrument response function"
25 24 edisp, b, h, no,,, "Apply energy dispersion?"
  25 +outcube, f, a, "expcube.fits",,, "Output exposure cube file"
  26 +
26 27 #
27 28 # Energy binning parameters
28 29 #==========================
... ... @@ -31,6 +32,7 @@ emin, r, a, 0.1,,,&quot;Lower energy limit (TeV)&quot;
31 32 emax, r, a, 100.0,,, "Upper energy limit (TeV)"
32 33 enumbins, i, a, 20,,, "Number of energy bins"
33 34 ebinfile, f, h, "NONE",,, "Name of the file containing the energy bin definition"
  35 +
34 36 #
35 37 # Spatial binning parameters
36 38 #===========================
... ... @@ -42,6 +44,7 @@ coordsys, s, a, &quot;CEL&quot;, CEL|GAL,,&quot;Coordinate system (CEL - celestial, GAL - galac
42 44 xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)"
43 45 yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)"
44 46 proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method"
  47 +
45 48 #
46 49 # Standard parameters
47 50 #====================
... ...
src/ctlike/ctlike.cpp
... ... @@ -310,7 +310,7 @@ void ctlike::run(void)
310 310 // Write results into logger
311 311 if (logTerse()) {
312 312 log << std::endl;
313   - log.header1("Maximum likelihood optimization results");
  313 + log.header1("Maximum likelihood optimisation results");
314 314 log << *m_opt << std::endl;
315 315 log << gammalib::parformat("Maximum log likelihood");
316 316 log << gammalib::str(m_logL,3) << std::endl;
... ... @@ -545,7 +545,7 @@ double ctlike::reoptimize_lm(void)
545 545 log.indent(0);
546 546 if (logTerse()) {
547 547 log << std::endl;
548   - log.header1("Maximum likelihood re-optimization results");
  548 + log.header1("Maximum likelihood re-optimisation results");
549 549 log << *m_opt << std::endl;
550 550 }
551 551  
... ...
src/ctlike/ctlike.par
... ... @@ -17,18 +17,22 @@
17 17 #
18 18 # General parameters
19 19 #===================
20   -inobs, f, a, "events.fits",,, "Event list, counts cube or observation definition file"
21   -inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Source model"
22   -expcube, f, a, "NONE",,, "Exposure cube file (only needed for stacked analysis)"
23   -psfcube, f, a, "NONE",,, "PSF cube file (only needed for stacked analysis)"
24   -bkgcube, f, a, "NONE",,, "Background cube file (only needed for stacked analysis)"
  20 +inobs, f, a, "events.fits",,, "Input event list, counts cube or observation definition XML file"
  21 +inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Input model XML file"
  22 +expcube, f, a, "NONE",,, "Input exposure cube file (only needed for stacked analysis)"
  23 +psfcube, f, a, "NONE",,, "Input PSF cube file (only needed for stacked analysis)"
  24 +bkgcube, f, a, "NONE",,, "Input background cube file (only needed for stacked analysis)"
25 25 caldb, s, a, "prod2",,, "Calibration database"
26   -irf, s, a, "South_50h",,, "Instrument response function"
27   -outmodel, f, a, "crab_results.xml",,, "Source model output file"
28   -stat, s, h, "POISSON",,, "Optimization statistics"
  26 +irf, s, a, "South_0.5h",,, "Instrument response function"
29 27 edisp, b, h, no,,, "Apply energy dispersion?"
  28 +outmodel, f, a, "crab_results.xml",,, "Output model XML file"
  29 +
  30 +#
  31 +# Maximisation parameters
  32 +#========================
  33 +stat, s, h, "POISSON",,, "Optimization statistics"
30 34 refit, b, h, no,,, "Do refitting?"
31   -fix_spat_for_ts, b, h, no,,,"Fix spatial parameters for TS computation?"
  35 +fix_spat_for_ts, b, h, no,,, "Fix spatial parameters for TS computation?"
32 36  
33 37 #
34 38 # Standard parameters
... ...
src/ctmodel/ctmodel.par
... ... @@ -17,25 +17,27 @@
17 17 #
18 18 # General parameters
19 19 #===================
20   -incube, f, a, "NONE",,, "Input counts cube"
21   -inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Source model"
22   -outcube, f, a, "modcube.fits",,, "Output model cube"
  20 +inobs, f, a, "NONE",,, "Input event list, counts cube or observation definition XML file"
  21 +incube, f, a, "NONE",,, "Input counts cube file to extract model cube definition"
  22 +inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Input model XML file"
  23 +expcube, f, a, "NONE",,, "Input exposure cube file (only needed for stacked analysis)"
  24 +psfcube, f, a, "NONE",,, "Input PSF cube file (only needed for stacked analysis)"
  25 +bkgcube, f, a, "NONE",,, "Input background cube file (only needed for stacked analysis)"
  26 +caldb, s, a, "prod2",,, "Calibration database"
  27 +irf, s, a, "South_0.5h",,, "Instrument response function"
23 28 edisp, b, h, no,,, "Apply energy dispersion?"
  29 +outcube, f, a, "modcube.fits",,, "Output model cube file"
  30 +
24 31 #
25 32 # Observation parameters
26 33 #=======================
27   -inobs, f, a, "NONE",,, "Event list, counts cube or observation definition file"
28   -expcube, f, a, "NONE",,, "Exposure cube file (only needed for stacked analysis)"
29   -psfcube, f, a, "NONE",,, "PSF cube file (only needed for stacked analysis)"
30   -bkgcube, f, a, "NONE",,, "Background cube file (only needed for stacked analysis)"
31   -caldb, s, a, "prod2",,, "Calibration database"
32   -irf, s, a, "South_50h",,, "Instrument response function"
33 34 ra, r, a, 83.63,0,360, "RA of pointing (degrees)"
34 35 dec, r, a, 22.01,-90,90, "Dec of pointing (degrees)"
35 36 rad, r, a, 5.0,0,180, "Radius of FOV (degrees)"
36 37 tmin, r, a, 0.0,,, "Start time (MET in s)"
37 38 tmax, r, a, 1800.0,,, "End time (MET in s)"
38 39 deadc, r, h, 0.95,0,1, "Average deadtime correction factor"
  40 +
39 41 #
40 42 # Energy binning parameters
41 43 #==========================
... ... @@ -44,6 +46,7 @@ emin, r, a, 0.1,,, &quot;Start value for first energy bin in TeV&quot;
44 46 emax, r, a, 100.0,,, "Stop value for last energy bin in TeV"
45 47 enumbins, i, a, 20,,, "Number of energy bins"
46 48 ebinfile, f, h, "NONE",,, "Name of the file containing the energy bin definition"
  49 +
47 50 #
48 51 # Spatial binning parameters
49 52 #===========================
... ... @@ -55,6 +58,7 @@ coordsys, s, a, &quot;CEL&quot;, CEL|GAL,,&quot;Coordinate system (CEL - celestial, GAL - galac
55 58 xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)"
56 59 yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)"
57 60 proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method"
  61 +
58 62 #
59 63 # Standard parameters
60 64 #====================
... ...
src/ctobssim/ctobssim.cpp
... ... @@ -33,6 +33,7 @@
33 33 #include "GTools.hpp"
34 34  
35 35 /* __ Method name definitions ____________________________________________ */
  36 +#define G_GET_PARAMETERS "ctobssim::get_parameters()"
36 37 #define G_SIMULATE_SOURCE "ctobssim::simulate_source(GCTAObservation*, "\
37 38 "GModels&, GRan&, GLog*)"
38 39  
... ... @@ -577,7 +578,13 @@ void ctobssim::get_parameters(void)
577 578 // If there are no observations in container then load them via user
578 579 // parameters
579 580 if (m_obs.size() == 0) {
  581 +
  582 + // Throw exception if counts cube is given
  583 + require_inobs_nocube(G_GET_PARAMETERS);
  584 +
  585 + // Get observation container
580 586 m_obs = get_observations();
  587 +
581 588 }
582 589  
583 590 // ... otherwise make sure that observation boundaries are set
... ... @@ -984,6 +991,8 @@ void ctobssim::simulate_source(GCTAObservation* obs, const GModels&amp; models,
984 991 * @param[in] emax Maximum energy.
985 992 * @param[in] centre Centre of region for photon rate determination.
986 993 * @param[in] radius Radius of region for photon rate determination (degrees).
  994 + * @param[in] indent Indent for logging.
  995 + * @param[in,out] wrklog Pointer to logger (default: NULL).
987 996 * @return Model flux (photons/cm2/sec).
988 997 ***************************************************************************/
989 998 double ctobssim::get_model_flux(const GModelSky* model,
... ...
src/ctobssim/ctobssim.par
... ... @@ -15,17 +15,16 @@
15 15 # #
16 16 #############################################################################
17 17 #
18   -# File information
19   -#=================
20   -inobs, f, h, "NONE",,, "Input event list or observation definition file"
21   -inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Model"
22   -outevents, f, a, "events.fits",,, "Output event data file or observation definition file"
23   -prefix, s, h, "sim_events_",,, "Prefix for event lists in observation definition file"
24   -#
25   -# Observation parameters
26   -#=======================
27   -caldb, s, a, "prod2",,, "Calibration database"
28   -irf, s, a, "South_50h",,, "Instrument response function"
  18 +# General parameters
  19 +#===================
  20 +inobs, f, h, "NONE",,, "Input event list or observation definition XML file"
  21 +inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Input model XML file"
  22 +caldb, s, a, "prod2",,, "Calibration database"
  23 +irf, s, a, "South_0.5h",,, "Instrument response function"
  24 +edisp, b, h, no,,, "Apply energy dispersion?"
  25 +outevents, f, a, "events.fits",,, "Output event data file or observation definition XML file"
  26 +prefix, s, h, "sim_events_",,, "Prefix for event lists in observation definition XML file"
  27 +
29 28 #
30 29 # Simulation parameters
31 30 #======================
... ... @@ -37,9 +36,9 @@ tmin, r, a, 0.0,,, &quot;Start time (MET in s)&quot;
37 36 tmax, r, a, 1800.0,,, "End time (MET in s)"
38 37 emin, r, a, 0.1,,, "Lower energy limit (TeV)"
39 38 emax, r, a, 100.0,,, "Upper energy limit (TeV)"
40   -edisp, b, h, no,,, "Apply energy dispersion?"
41 39 deadc, r, h, 0.95,0,1, "Average deadtime correction factor"
42 40 maxrate, r, h, 1.0e6,,, "Maximum photon rate"
  41 +
43 42 #
44 43 # Standard parameters
45 44 #====================
... ...
src/ctpsfcube/ctpsfcube.cpp
... ... @@ -353,6 +353,9 @@ void ctpsfcube::get_parameters(void)
353 353 // Throw exception if no input observation file is given
354 354 require_inobs(G_GET_PARAMETERS);
355 355  
  356 + // Throw exception if counts cube is given
  357 + require_inobs_nocube(G_GET_PARAMETERS);
  358 +
356 359 // Build observation container
357 360 m_obs = get_observations();
358 361  
... ...
src/ctpsfcube/ctpsfcube.par
... ... @@ -17,12 +17,13 @@
17 17 #
18 18 # Observational parameters
19 19 #===================
20   -inobs, f, a, "NONE",,, "Event list or observation definition file"
21   -incube, f, a, "NONE",,, "Counts cube for psf cube definition"
22   -outcube, f, a, "psfcube.fits",,, "Output psf cube file"
  20 +inobs, f, a, "NONE",,, "Input event list or observation definition XML file"
  21 +incube, f, a, "NONE",,, "Input counts cube file to extract PSF cube definition"
23 22 caldb, s, a, "prod2",,, "Calibration database"
24   -irf, s, a, "South_50h",,, "Instrument response function"
  23 +irf, s, a, "South_0.5h",,, "Instrument response function"
25 24 edisp, b, h, no,,, "Apply energy dispersion?"
  25 +outcube, f, a, "psfcube.fits",,, "Output PSF cube file"
  26 +
26 27 #
27 28 # Energy binning parameters
28 29 #==========================
... ... @@ -31,6 +32,7 @@ emin, r, a, 0.1,,, &quot;Lower energy limit (TeV)&quot;
31 32 emax, r, a, 100.0,,, "Upper energy limit (TeV)"
32 33 enumbins, i, a, 20,,, "Number of energy bins"
33 34 ebinfile, f, h, "NONE",,, "Name of the file containing the energy bin definition"
  35 +
34 36 #
35 37 # Spatial binning parameters
36 38 #===========================
... ... @@ -42,11 +44,13 @@ coordsys, s, a, &quot;CEL&quot;, CEL|GAL,,&quot;Coordinate system (CEL - celestial, GAL - galac
42 44 xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)"
43 45 yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)"
44 46 proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method"
  47 +
45 48 #
46 49 # Angular separation binning parameters
47 50 #======================================
48 51 amax, r, h, 0.3,,, "Upper bound of angular separation between true and measued photon direction (degrees)"
49 52 anumbins, i, h, 200,,, "Number of angular separation bins"
  53 +
50 54 #
51 55 # Standard parameters
52 56 #====================
... ...
src/ctselect/ctselect.cpp
... ... @@ -510,6 +510,9 @@ void ctselect::get_parameters(void)
510 510 // Throw exception if no input observation file is given
511 511 require_inobs(G_GET_PARAMETERS);
512 512  
  513 + // Throw exception if counts cube is given
  514 + require_inobs_nocube(G_GET_PARAMETERS);
  515 +
513 516 // Get observation container without response (not needed)
514 517 m_obs = get_observations(false);
515 518  
... ... @@ -571,14 +574,6 @@ void ctselect::get_parameters(void)
571 574 m_expr = (*this)["expr"].string();
572 575 m_usethres = (*this)["usethres"].string();
573 576  
574   - // Check parameters (Kluge as the parfile interface does not yet check
575   - // parameters; this can be removed once this is done properly)
576   - if (m_usethres != "NONE" && m_usethres != "DEFAULT" && m_usethres != "USER") {
577   - std::string msg = "Parameter \"usethres\" must be one of \"NONE\", "
578   - "\"DEFAULT\" or \"USER\".";
579   - throw GException::invalid_value(G_GET_PARAMETERS, msg);
580   - }
581   -
582 577 // Optionally read ahead parameters so that they get correctly
583 578 // dumped into the log file
584 579 if (read_ahead()) {
... ...
src/ctselect/ctselect.par
... ... @@ -15,11 +15,12 @@
15 15 # #
16 16 #############################################################################
17 17 #
18   -# File information
19   -#=================
20   -inobs, f, a, "events.fits",,, "Input event list or observation definition file"
21   -outobs, f, a, "selected_events.fits",,, "Output event list or observation definition file"
22   -prefix, s, h, "selected_",,, "Prefix for event lists in observation definition file"
  18 +# General parameters
  19 +#===================
  20 +inobs, f, a, "events.fits",,, "Input event list or observation definition XML file"
  21 +outobs, f, a, "selected_events.fits",,, "Output event list or observation definition XML file"
  22 +prefix, s, h, "selected_",,, "Prefix for event lists in observation definition XML file"
  23 +
23 24 #
24 25 # Selection parameters
25 26 #=====================
... ... @@ -33,6 +34,7 @@ emin, r, a, 0.1,,, &quot;Lower energy limit (TeV)&quot;
33 34 emax, r, a, 100.0,,, "Upper energy limit (TeV)"
34 35 expr, s, h, "",,, "Additional selection expression"
35 36 usethres,s, h, "NONE",NONE|DEFAULT|USER,, "Energy threshold type"
  37 +
36 38 #
37 39 # Standard parameters
38 40 #====================
... ...
src/ctskymap/ctskymap.cpp
... ... @@ -347,6 +347,9 @@ void ctskymap::get_parameters(void)
347 347 // Throw exception if no input observation file is given
348 348 require_inobs(G_GET_PARAMETERS);
349 349  
  350 + // Throw exception if counts cube is given
  351 + require_inobs_nocube(G_GET_PARAMETERS);
  352 +
350 353 // Get observation container without response (not needed)
351 354 m_obs = get_observations(false);
352 355  
... ...
src/ctskymap/ctskymap.par
... ... @@ -17,13 +17,15 @@
17 17 #
18 18 # General parameters
19 19 #===================
20   -inobs, f, a, "events.fits",,, "Event list or observation definition file"
21   -outmap, f, a, "skymap.fits",,, "Output file name"
  20 +inobs, f, a, "events.fits",,, "Input event list or observation definition XML file"
  21 +outmap, f, a, "skymap.fits",,, "Output skymap file"
  22 +
22 23 #
23 24 # Event selection parameters
24 25 #===========================
25 26 emin, r, a, 0.1,,, "Lower energy limit (TeV)"
26 27 emax, r, a, 100.0,,, "Upper energy limit (TeV)"
  28 +
27 29 #
28 30 # Spatial binning parameters
29 31 #===========================
... ...
src/cttsmap/cttsmap.par
... ... @@ -17,16 +17,16 @@
17 17 #
18 18 # General parameters
19 19 #===================
20   -inobs, f, a, "events.fits",,, "Input event list, counts cube or observation definition file"
21   -inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Source model"
22   -srcname, s, a, "Crab",,, "Test source"
23   -expcube, f, a, "NONE",,, "Exposure cube file (only needed for stacked analysis)"
24   -psfcube, f, a, "NONE",,, "PSF cube file (only needed for stacked analysis)"
25   -bkgcube, f, a, "NONE",,, "Background cube file (only needed for stacked analysis)"
  20 +inobs, f, a, "events.fits",,, "Input event list, counts cube or observation definition XML file"
  21 +inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Input model XML file"
  22 +srcname, s, a, "Crab",,, "Test source name"
  23 +expcube, f, a, "NONE",,, "Input exposure cube file (only needed for stacked analysis)"
  24 +psfcube, f, a, "NONE",,, "Input PSF cube file (only needed for stacked analysis)"
  25 +bkgcube, f, a, "NONE",,, "Input background cube file (only needed for stacked analysis)"
26 26 caldb, s, a, "prod2",,, "Calibration database"
27   -irf, s, a, "South_50h",,, "Instrument response function"
  27 +irf, s, a, "South_0.5h",,, "Instrument response function"
28 28 edisp, b, h, no,,, "Apply energy dispersion?"
29   -outmap, f, a, "tsmap.fits",,, "Output Test Statistic map"
  29 +outmap, f, a, "tsmap.fits",,, "Output Test Statistic map file"
30 30  
31 31 #
32 32 # Spatial binning parameters
... ... @@ -47,7 +47,6 @@ binmin, i, h, -1,,, &quot;First bin to compute&quot;
47 47 binmax, i, h, -1,,, "Last bin to compute"
48 48 logL0, r, h, 0.0,,, "LogLikelihood value of null hypothesis"
49 49  
50   -
51 50 #
52 51 # Standard parameters
53 52 #====================
... ...
src/ctulimit/ctulimit.par
... ... @@ -17,14 +17,14 @@
17 17 #
18 18 # General parameters
19 19 #===================
20   -inobs, f, a, "events.fits",,, "Input event list, counts cube or observation definition file"
21   -inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Source model"
  20 +inobs, f, a, "events.fits",,, "Input event list, counts cube or observation definition XML file"
  21 +inmodel, f, a, "$CTOOLS/share/models/crab.xml",,, "Input model XML file"
22 22 srcname, s, a, "Crab",,, "Source of interest"
23   -expcube, f, a, "NONE",,, "Exposure cube file (only needed for stacked analysis)"
24   -psfcube, f, a, "NONE",,, "PSF cube file (only needed for stacked analysis)"
25   -bkgcube, f, a, "NONE",,, "Background cube file (only needed for stacked analysis)"
  23 +expcube, f, a, "NONE",,, "Input exposure cube file (only needed for stacked analysis)"
  24 +psfcube, f, a, "NONE",,, "Input PSF cube file (only needed for stacked analysis)"
  25 +bkgcube, f, a, "NONE",,, "Input background cube file (only needed for stacked analysis)"
26 26 caldb, s, a, "prod2",,, "Calibration database"
27   -irf, s, a, "South_50h",,, "Instrument response function"
  27 +irf, s, a, "South_0.5h",,, "Instrument response function"
28 28 edisp, b, h, no,,, "Apply energy dispersion?"
29 29  
30 30 #
... ... @@ -33,9 +33,9 @@ edisp, b, h, no,,, &quot;Apply energy dispersion?&quot;
33 33 confidence, r, h, 0.95,0.0,1.0, "Confidence level"
34 34 sigma_min, r, h, 0.0,,, "Start minimum value (multiple sigmas above fit value)"
35 35 sigma_max, r, h, 10.0,,, "Start maximum value (multiple sigmas above fit value)"
36   -eref, r, h, 1.0,,, "Reference energy for differential limits (TeV)"
37   -emin, r, h, 1.0,,, "Minimum energy for flux limits (TeV)"
38   -emax, r, h, 100.0,,, "Maximum energy for flux limits (TeV)"
  36 +eref, r, h, 1.0,,, "Reference energy for differential limit (TeV)"
  37 +emin, r, h, 1.0,,, "Minimum energy for integral flux limit (TeV)"
  38 +emax, r, h, 100.0,,, "Maximum energy for integral flux limit (TeV)"
39 39 tol, r, h, 1e-5,,, "Computation tolerance"
40 40 max_iter, i, h, 50,,, "Maximum number of iterations"
41 41  
... ...
src/support/ctool.cpp
... ... @@ -656,18 +656,23 @@ GCTAObservation ctool::create_cta_obs(void)
656 656  
657 657  
658 658 /***********************************************************************//**
659   - * @brief Throws exception in inobs parameter is not valid
  659 + * @brief Throws exception if inobs parameter is not valid
660 660 *
661 661 * @param[in] method Method name.
  662 + *
  663 + * Throw an exception if the inobs parameter is either NONE or an empty
  664 + * string.
662 665 ***************************************************************************/
663 666 void ctool::require_inobs(const std::string& method)
664 667 {
  668 + // Get inobs filename
  669 + std::string filename = (*this)["inobs"].filename();
  670 +
665 671 // Throw exception if no infile is given
666   - if ((*this)["inobs"].filename() == "NONE" ||
667   - (*this)["inobs"].filename() == "") {
  672 + if (filename == "NONE" || gammalib::strip_whitespace(filename) == "") {
668 673 std::string msg = "A valid file needs to be specified for the "
669   - "\"inobs\" parameter, yet \""+
670   - (*this)["inobs"].filename()+"\" was given."
  674 + "\"inobs\" parameter, yet \""+filename+
  675 + "\" was given."
671 676 " Specify a valid observation definition or "
672 677 "FITS file to proceed.";
673 678 throw GException::invalid_value(method, msg);
... ... @@ -679,6 +684,110 @@ void ctool::require_inobs(const std::string&amp; method)
679 684  
680 685  
681 686 /***********************************************************************//**
  687 + * @brief Throws exception if inobs parameter is an event list
  688 + *
  689 + * @param[in] method Method name.
  690 + *
  691 + * Throw an exception if the inobs parameter is an event list.
  692 + ***************************************************************************/
  693 +void ctool::require_inobs_nolist(const std::string& method)
  694 +{
  695 + // Get inobs filename
  696 + std::string filename = (*this)["inobs"].filename();
  697 +
  698 + // Continue only if we have a FITS file
  699 + if (gammalib::is_fits(filename)) {
  700 +
  701 + // Signal no list
  702 + bool is_list = false;
  703 +
  704 + // Try loading file as counts cube. If this is successful then
  705 + // throw an exception
  706 + try {
  707 +
  708 + // Load list from file
  709 + GCTAEventList list(filename);
  710 +
  711 + // If we're still alive then signal that we have a list
  712 + is_list = true;
  713 +
  714 + }
  715 +
  716 + // Catch any exceptions
  717 + catch (...) {
  718 + ;
  719 + }
  720 +
  721 + // If we have an event list then throw an exception
  722 + if (is_list) {
  723 + std::string msg = "An event list has been specified for the "
  724 + "\"inobs\" parameter, yet no event list "
  725 + "can be specified as input observation."
  726 + " Instead, specify a counts cube or an "
  727 + "observation definition file.";
  728 + throw GException::invalid_value(method, msg);
  729 + }
  730 +
  731 + } // endif: we had a FITS file
  732 +
  733 + // Return
  734 + return;
  735 +}
  736 +
  737 +
  738 +/***********************************************************************//**
  739 + * @brief Throws exception if inobs parameter is a counts cube
  740 + *
  741 + * @param[in] method Method name.
  742 + *
  743 + * Throw an exception if the inobs parameter is a counts cube.
  744 + ***************************************************************************/
  745 +void ctool::require_inobs_nocube(const std::string& method)
  746 +{
  747 + // Get inobs filename
  748 + std::string filename = (*this)["inobs"].filename();
  749 +
  750 + // Continue only if we have a FITS file
  751 + if (gammalib::is_fits(filename)) {
  752 +
  753 + // Signal no cube
  754 + bool is_cube = false;
  755 +
  756 + // Try loading file as counts cube. If this is successful then
  757 + // throw an exception
  758 + try {
  759 +
  760 + // Load cube from file
  761 + GCTAEventCube cube(filename);
  762 +
  763 + // If we're still alive then signal that we have a cube
  764 + is_cube = true;
  765 +
  766 + }
  767 +
  768 + // Catch any exceptions
  769 + catch (...) {
  770 + ;
  771 + }
  772 +
  773 + // If we have a counts cube then throw an exception
  774 + if (is_cube) {
  775 + std::string msg = "A counts cube has been specified for the "
  776 + "\"inobs\" parameter, yet no counts cube "
  777 + "can be specified as input observation."
  778 + " Instead, specify an event list or an "
  779 + "observation definition file.";
  780 + throw GException::invalid_value(method, msg);
  781 + }
  782 +
  783 + } // endif: we had a FITS file
  784 +
  785 + // Return
  786 + return;
  787 +}
  788 +
  789 +
  790 +/***********************************************************************//**
682 791 * @brief Set response for all CTA observations in container
683 792 *
684 793 * @param[in,out] obs Observation container
... ...
src/support/ctool.hpp
... ... @@ -81,6 +81,8 @@ protected:
81 81  
82 82 // Protected methods that check user parameters
83 83 void require_inobs(const std::string& method);
  84 + void require_inobs_nolist(const std::string& method);
  85 + void require_inobs_nocube(const std::string& method);
84 86  
85 87 // Protected support methods
86 88 void set_response(GObservations& obs);
... ...