Commit 81c782632450fe575a3bae95887900ca27cea335

Authored by Jürgen Knödlseder
1 parent 0c22baed

Reorganise tutorials

doc/source/users/index.rst
@@ -8,9 +8,9 @@ This documentation will guide you in the process of using ctools. @@ -8,9 +8,9 @@ This documentation will guide you in the process of using ctools.
8 .. toctree:: 8 .. toctree::
9 :maxdepth: 1 9 :maxdepth: 1
10 10
11 - tips/index  
12 user_manual/index 11 user_manual/index
13 - tutorials/index  
14 reference_manual/index 12 reference_manual/index
  13 + tips/index
  14 + tutorials/index
15 user_contributed/index 15 user_contributed/index
16 glossary 16 glossary
doc/source/users/tutorials/beyond/beyond_tsmap.rst deleted
1 -.. _sec_tsmap:  
2 -  
3 -Generating a Test Statistic map  
4 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
5 -  
6 -In the above examples you have always considering that you knew exactly  
7 -where the source is located, but in real life situations this may not  
8 -necessarily be the case.  
9 -You thus need a means to search for significant excess emission in your data.  
10 -One possibility to accomplish this task is to compute the Test Statistic  
11 -for a specific source at a grid of trial positions.  
12 -The :ref:`cttsmap` tool will do exactly that job.  
13 -  
14 -The Test Statistic is defined as twice the log-likelihood difference  
15 -between fitting a source at a given position on top of a model or fitting  
16 -no source.  
17 -Roughly speaken, the square root of the Test Statistic value gives  
18 -the source detection significance in Gaussian sigmas, although the  
19 -exact relation depends somewhat on the formulation of the statistical  
20 -problem.  
21 -  
22 -Here an example of how to apply the :ref:`cttsmap` tool to the two  
23 -simulated observations of the Crab nebula in unbinned mode.  
24 -On input you provide a source model XML file and the name of the source  
25 -in the XML file that should be moved on a grid of test positions.  
26 -This means that the position of the source given in the XML file is  
27 -in fact ignored and replaced by the grid positions that are defined by  
28 -the user parameters.  
29 -In the example you defined a grid of 10 x 10 positions around the  
30 -nominal position of the Crab nebula with a grid spacing of 0.02°.  
31 -  
32 -.. code-block:: bash  
33 -  
34 - $ cttsmap  
35 - Input event list, counts cube or observation definition XML file [events.fits] obs.xml  
36 - Calibration database [prod2]  
37 - Instrument response function [South_0.5h]  
38 - Test source name [Crab]  
39 - Input model definition XML file [$CTOOLS/share/models/crab.xml]  
40 - First coordinate of image center in degrees (RA or galactic l) (0-360) [83.63]  
41 - Second coordinate of image center in degrees (DEC or galactic b) (-90-90) [22.01]  
42 - Projection method (AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN) [CAR]  
43 - Coordinate system (CEL - celestial, GAL - galactic) (CEL|GAL) [CEL]  
44 - Image scale (in degrees/pixel) [0.02]  
45 - Size of the X axis in pixels [200] 10  
46 - Size of the Y axis in pixels [200] 10  
47 - Output Test Statistic map file [tsmap.fits]  
48 -  
49 -:ref:`cttsmap` writes the Test Statistic map in the ``tsmap.fits`` file  
50 -that contains one extension for the Test Statistic value and further  
51 -extensions for the spectral parameters that have been fitted for the  
52 -source at each position of the grid.  
53 -The figure below show the Test Statistic map which reaches a maximum  
54 -value of 42622 near the centre of the map.  
55 -  
56 -.. figure:: tsmap-crab.png  
57 - :height: 400px  
58 - :align: center  
59 -  
60 - *Test Statistic map of the Crab region*  
61 -  
62 -.. note::  
63 - Similar to :ref:`ctlike` the :ref:`cttsmap` tool works either for unbinned,  
64 - binned or stacked analysis. On input it takes either a single event  
65 - list, a single counts cube, or an observation definition XML file that  
66 - allows a joint analysis of multiple observations.  
doc/source/users/tutorials/beyond/index.rst deleted
1 -.. _sec_beyond:  
2 -  
3 -Beyond the first steps  
4 -----------------------  
5 -  
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  
9 -picture about the capabilities of ctools.  
10 -And you should be ready for doing your own cutting edge CTA science data  
11 -analyses.  
12 -  
13 -.. toctree::  
14 - :maxdepth: 1  
15 -  
16 - combining-observations  
17 - stacked-analysis  
18 - beyond_tsmap  
19 - advanced-python-fitting  
20 - beyond_irf  
21 - beyond_model  
doc/source/users/tutorials/beyond/tsmap-crab.png deleted

73.4 KB

doc/source/users/tutorials/beyond/advanced-python-fitting.ipynb renamed to doc/source/users/tutorials/howto/howto_advanced_python_fitting.ipynb
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 "cell_type": "markdown", 4 "cell_type": "markdown",
5 "metadata": {}, 5 "metadata": {},
6 "source": [ 6 "source": [
7 - "# Advanced model manipulation and fitting in Python" 7 + "# How to do advanced model manipulation and fitting in Python?"
8 ] 8 ]
9 }, 9 },
10 { 10 {
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 "source": [ 20 "source": [
21 "In this tutorial you will learn to perform some more advanced model manipulation and fitting from Python. You can use these methods in an interactive Python session to explore your dataset and improve the known model of the sky. You can also use them in a Python pipeline to test multiple model hypotheses and select the one that is most appropriate.\n", 21 "In this tutorial you will learn to perform some more advanced model manipulation and fitting from Python. You can use these methods in an interactive Python session to explore your dataset and improve the known model of the sky. You can also use them in a Python pipeline to test multiple model hypotheses and select the one that is most appropriate.\n",
22 "\n", 22 "\n",
23 - "As usual we start by importing the gammalib, ctools, and cscripts Python modules." 23 + "As usual start by importing the gammalib, ctools, and cscripts Python modules."
24 ] 24 ]
25 }, 25 },
26 { 26 {
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 "cell_type": "markdown", 38 "cell_type": "markdown",
39 "metadata": {}, 39 "metadata": {},
40 "source": [ 40 "source": [
41 - "For this tutorial we will also use the matplotlib package for plotting." 41 + "Now import the matplotlib package for plotting."
42 ] 42 ]
43 }, 43 },
44 { 44 {
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 "source": [ 57 "source": [
58 "## Simulated dataset\n", 58 "## Simulated dataset\n",
59 "\n", 59 "\n",
60 - "For the tutorial we will simulate a small dataset. We start by defining the Instrument Response Function and energy range that we will use all along." 60 + "For the tutorial you will simulate a small dataset. Start by defining the Instrument Response Function and energy range that will be used all along."
61 ] 61 ]
62 }, 62 },
63 { 63 {
@@ -76,7 +76,7 @@ @@ -76,7 +76,7 @@
76 "cell_type": "markdown", 76 "cell_type": "markdown",
77 "metadata": {}, 77 "metadata": {},
78 "source": [ 78 "source": [
79 - "Now we proceed to simulate the dataset. It consists of an hour of observations of the Crab nebula region, as usual pointed at a slightly offset position from the target. The input model is different from the one you have been using so far and contains some surprises. Don't look at it until you have completed the exercises at the end of the tutorial." 79 + "Now proceed to simulate the dataset. It consists of an hour of observations of the Crab nebula region, as usual pointed at a slightly offset position from the target. The input model is different from the one you have been using so far and contains some surprises. Don't look at it until you have completed the exercises at the end of the tutorial."
80 ] 80 ]
81 }, 81 },
82 { 82 {
@@ -105,9 +105,9 @@ @@ -105,9 +105,9 @@
105 "cell_type": "markdown", 105 "cell_type": "markdown",
106 "metadata": {}, 106 "metadata": {},
107 "source": [ 107 "source": [
108 - "We have saved the events on disk in the file `events.fits`. In this way you can easily re-use the code below by substituting `events.fits` with your own event list of observation definition XML file.\n", 108 + "You have saved the events on disk in the file `events.fits`. In this way you can easily re-use the code below by substituting `events.fits` with your own event list or observation definition XML file.\n",
109 "\n", 109 "\n",
110 - "We will peek at the simulated dataset by displaying a skymap." 110 + "Let's first peek at the simulated dataset by displaying a skymap."
111 ] 111 ]
112 }, 112 },
113 { 113 {
@@ -150,7 +150,7 @@ @@ -150,7 +150,7 @@
150 } 150 }
151 ], 151 ],
152 "source": [ 152 "source": [
153 - "# We slightly smooth the map for display to suppress statistical fluctuations\n", 153 + "# Slightly smooth the map for display to suppress statistical fluctuations\n",
154 "skymap.skymap().smooth('GAUSSIAN',0.02)\n", 154 "skymap.skymap().smooth('GAUSSIAN',0.02)\n",
155 "\n", 155 "\n",
156 "from matplotlib.colors import SymLogNorm\n", 156 "from matplotlib.colors import SymLogNorm\n",
@@ -174,7 +174,7 @@ @@ -174,7 +174,7 @@
174 "source": [ 174 "source": [
175 "## Model fitting and residual inspection\n", 175 "## Model fitting and residual inspection\n",
176 "\n", 176 "\n",
177 - "First, we will fit the usual Crab model to the data. We will be using a 3D unbinned analysis." 177 + "First, fit the usual Crab model to the data using a 3D unbinned analysis."
178 ] 178 ]
179 }, 179 },
180 { 180 {
@@ -195,7 +195,7 @@ @@ -195,7 +195,7 @@
195 "cell_type": "markdown", 195 "cell_type": "markdown",
196 "metadata": {}, 196 "metadata": {},
197 "source": [ 197 "source": [
198 - "As usual it is wise to look at the output from the optimizer. We will also store the best-fit minus log-likelihood value for later usage." 198 + "As usual it is wise to look at the output from the optimizer. Store the best-fit minus log-likelihood value for later usage."
199 ] 199 ]
200 }, 200 },
201 { 201 {
@@ -286,7 +286,7 @@ @@ -286,7 +286,7 @@
286 "source": [ 286 "source": [
287 "The background model reproduces well the data, since its best-fit normalization is 1 and the index/tilt is 0. The Crab nebula has a best-fit spectral index of 2.28.\n", 287 "The background model reproduces well the data, since its best-fit normalization is 1 and the index/tilt is 0. The Crab nebula has a best-fit spectral index of 2.28.\n",
288 "\n", 288 "\n",
289 - "To assess whether the model reproduces well the data spatially we will calculate a residual map." 289 + "To assess whether the model reproduces well the data spatially generate a residual map."
290 ] 290 ]
291 }, 291 },
292 { 292 {
@@ -313,7 +313,7 @@ @@ -313,7 +313,7 @@
313 "cell_type": "markdown", 313 "cell_type": "markdown",
314 "metadata": {}, 314 "metadata": {},
315 "source": [ 315 "source": [
316 - "We will be inspecting several of these residual maps along the tutorial, so we define a function to plot them, and apply it to our latest run." 316 + "To easily inspecting the residual maps along the tutorial, define a function to plot them, and apply it to the latest run."
317 ] 317 ]
318 }, 318 },
319 { 319 {
@@ -323,15 +323,15 @@ @@ -323,15 +323,15 @@
323 "outputs": [], 323 "outputs": [],
324 "source": [ 324 "source": [
325 "def plot_residuals(resid):\n", 325 "def plot_residuals(resid):\n",
326 - " # We slightly smooth the map for display to suppress statistical fluctuations\n", 326 + " # Slightly smooth the map for display to suppress statistical fluctuations\n",
327 " resid.smooth('GAUSSIAN',0.04)\n", 327 " resid.smooth('GAUSSIAN',0.04)\n",
328 - " #plotting\n", 328 + " # Plotting\n",
329 " fig = plt.figure()\n", 329 " fig = plt.figure()\n",
330 " ax = plt.subplot()\n", 330 " ax = plt.subplot()\n",
331 " plt.imshow(resid.array(),origin='lower',\n", 331 " plt.imshow(resid.array(),origin='lower',\n",
332 " cmap='bwr',vmin=-3,vmax=3,\n", 332 " cmap='bwr',vmin=-3,vmax=3,\n",
333 " extent=[83.63+0.02*20,83.63-0.02*20,22.01-0.02*20,22.01+0.02*20])\n", 333 " extent=[83.63+0.02*20,83.63-0.02*20,22.01-0.02*20,22.01+0.02*20])\n",
334 - " # boundaries of the coord grid\n", 334 + " # Boundaries of the coord grid\n",
335 " ax.set_xlabel('R.A. (deg)')\n", 335 " ax.set_xlabel('R.A. (deg)')\n",
336 " ax.set_ylabel('Dec (deg)')\n", 336 " ax.set_ylabel('Dec (deg)')\n",
337 " cbar = plt.colorbar()\n", 337 " cbar = plt.colorbar()\n",
@@ -364,7 +364,7 @@ @@ -364,7 +364,7 @@
364 "source": [ 364 "source": [
365 "## Adding model components\n", 365 "## Adding model components\n",
366 "\n", 366 "\n",
367 - "The residual map shows a cluster of positive residuals on the South-West of the Crab nebula. Is this another source? To test this hypothesis we will add a point source at the position that we can guess from the residual map." 367 + "The residual map shows a cluster of positive residuals on the South-West of the Crab nebula. Is this another source? To test this hypothesis add a point source at the position that you can guess from the residual map."
368 ] 368 ]
369 }, 369 },
370 { 370 {
@@ -382,13 +382,13 @@ @@ -382,13 +382,13 @@
382 "cell_type": "markdown", 382 "cell_type": "markdown",
383 "metadata": {}, 383 "metadata": {},
384 "source": [ 384 "source": [
385 - "We have defined a sky model object that has three components:\n", 385 + "You have defined a sky model object that has three components:\n",
386 "\n", 386 "\n",
387 "- a spatial model, which is a point source at the position guessed from the residual map;\n", 387 "- a spatial model, which is a point source at the position guessed from the residual map;\n",
388 "- a spectral model which is a power law with spectral index 2, and a flux which approximately 1/10 of the Crab nebula;\n", 388 "- a spectral model which is a power law with spectral index 2, and a flux which approximately 1/10 of the Crab nebula;\n",
389 "- a temporal model which is a constant.\n", 389 "- a temporal model which is a constant.\n",
390 "\n", 390 "\n",
391 - "We will name this source Src1, and free its position (fixed by default when a new source is created), so that we can fit it to the data." 391 + "Name this source `Src1`, and free its position (fixed by default when a new source is created), so that you can fit it to the data:"
392 ] 392 ]
393 }, 393 },
394 { 394 {
@@ -406,7 +406,7 @@ @@ -406,7 +406,7 @@
406 "cell_type": "markdown", 406 "cell_type": "markdown",
407 "metadata": {}, 407 "metadata": {},
408 "source": [ 408 "source": [
409 - "Finally we append the new source to the model" 409 + "Finally append the new source to the model container"
410 ] 410 ]
411 }, 411 },
412 { 412 {
@@ -433,7 +433,7 @@ @@ -433,7 +433,7 @@
433 "cell_type": "markdown", 433 "cell_type": "markdown",
434 "metadata": {}, 434 "metadata": {},
435 "source": [ 435 "source": [
436 - "and we fit the model including the new source to the data." 436 + "and fit the model including the new source to the data."
437 ] 437 ]
438 }, 438 },
439 { 439 {
@@ -449,7 +449,7 @@ @@ -449,7 +449,7 @@
449 "cell_type": "markdown", 449 "cell_type": "markdown",
450 "metadata": {}, 450 "metadata": {},
451 "source": [ 451 "source": [
452 - "Does the addition of the new source provide a better fit to the data? We can quantify this using the test statistic (TS) given by twice the log-likelihood difference." 452 + "Does the addition of the new source provide a better fit to the data? You can quantify this using the test statistic (TS) given by twice the log-likelihood difference."
453 ] 453 ]
454 }, 454 },
455 { 455 {
@@ -475,9 +475,9 @@ @@ -475,9 +475,9 @@
475 "cell_type": "markdown", 475 "cell_type": "markdown",
476 "metadata": {}, 476 "metadata": {},
477 "source": [ 477 "source": [
478 - "TS is expected to be distributed as a $\\chi^2$ with n degrees of freedom, where n is the additional number of degrees of freedom in the model including the new source, in our case 4 (RA, Dec, Prefactor, and Index). The integral of the $\\chi^2$ from TS to $\infty$ is the chance probability that the likelihood improved by that much due to statistical fluctuations. A large value, like the one we got, means that the chance probability is very low, thus we are likely to have found a new source.\n", 478 + "TS is expected to be distributed as a $\\chi^2_n$ with n degrees of freedom, where n is the additional number of degrees of freedom in the model including the new source, in our case 4 (RA, Dec, Prefactor, and Index). The integral of the $\\chi^2_n$ from TS to $\infty$ is the chance probability that the likelihood improved by that much due to statistical fluctuations. A large value, like the one we got, means that the chance probability is very low, thus we are likely to have found a new source.\n",
479 "\n", 479 "\n",
480 - "To make sure the new source improves the data/model agreement we will look again at the residual map." 480 + "To make sure the new source improves the data/model agreement look again at the residual map."
481 ] 481 ]
482 }, 482 },
483 { 483 {
@@ -506,7 +506,7 @@ @@ -506,7 +506,7 @@
506 "cell_type": "markdown", 506 "cell_type": "markdown",
507 "metadata": {}, 507 "metadata": {},
508 "source": [ 508 "source": [
509 - "The addition of the new point source has flattened the spatial residuals, even though the fit is not perfect yet obviously. From now on we will fix the position of Scr1." 509 + "The addition of the new point source has flattened the spatial residuals, even though the fit is obviously not perfect yet. From now on fix the position of `Src1`."
510 ] 510 ]
511 }, 511 },
512 { 512 {
@@ -527,7 +527,7 @@ @@ -527,7 +527,7 @@
527 "source": [ 527 "source": [
528 "## Modifying the spectral models\n", 528 "## Modifying the spectral models\n",
529 "\n", 529 "\n",
530 - "Next we will check if the model agrees well with the data at all energies. We will start by defining a function to make and plot residual maps in separate energy ranges." 530 + "Next check if the model agrees well with the data at all energies. Start by defining a function to make and plot residual maps in separate energy ranges."
531 ] 531 ]
532 }, 532 },
533 { 533 {
@@ -583,15 +583,15 @@ @@ -583,15 +583,15 @@
583 ], 583 ],
584 "source": [ 584 "source": [
585 "resmap_erange([[emin,1.],\n", 585 "resmap_erange([[emin,1.],\n",
586 - " [1.,10.],\n",  
587 - " [10.,emax]])" 586 + " [1.,10.],\n",
  587 + " [10.,emax]])"
588 ] 588 ]
589 }, 589 },
590 { 590 {
591 "cell_type": "markdown", 591 "cell_type": "markdown",
592 "metadata": {}, 592 "metadata": {},
593 "source": [ 593 "source": [
594 - "The most obvious problem is a negative residual cluster at the position of the Crab nebula at the highest energies. We will change the spectral model of the crab nebula and test if this improves the fit. We will use an exponentially cutoff power-law rather than a simple power law. We will use as starting values for the Prefactor and Index the current best-fit values and tentatively set the cutoff energy at 1 TeV." 594 + "The most obvious problem is a negative residual cluster at the position of the Crab nebula at the highest energies. Change the spectral model of the Crab nebula and test if this improves the fit. Try for example an exponentially cutoff power-law rather than a simple power law. Let's use as starting values for the Prefactor and Index the current best-fit values and tentatively set the cutoff energy at 1 TeV."
595 ] 595 ]
596 }, 596 },
597 { 597 {
@@ -613,7 +613,7 @@ @@ -613,7 +613,7 @@
613 "cell_type": "markdown", 613 "cell_type": "markdown",
614 "metadata": {}, 614 "metadata": {},
615 "source": [ 615 "source": [
616 - "We will now fit the modified model to the data" 616 + "Now fit the modified model to the data"
617 ] 617 ]
618 }, 618 },
619 { 619 {
@@ -629,7 +629,7 @@ @@ -629,7 +629,7 @@
629 "cell_type": "markdown", 629 "cell_type": "markdown",
630 "metadata": {}, 630 "metadata": {},
631 "source": [ 631 "source": [
632 - "and use TS to quantify the model improvement (in this case we have only one additional degree of freedom, the ctuoff energy)." 632 + "and use TS to quantify the model improvement (in this case there is only one additional degree of freedom, the ctuoff energy)."
633 ] 633 ]
634 }, 634 },
635 { 635 {
@@ -696,7 +696,7 @@ @@ -696,7 +696,7 @@
696 "cell_type": "markdown", 696 "cell_type": "markdown",
697 "metadata": {}, 697 "metadata": {},
698 "source": [ 698 "source": [
699 - "The best-fit cutoff energy is 3.3 TeV, which seems consistent with the behavior in the energy-bands residual maps above. Note that this has changed significantly the Index value, that now is 1.83. We will check the residual maps again to make sure." 699 + "The best-fit cutoff energy is 3.3 TeV, which seems consistent with the behavior in the energy-bands residual maps above. Note that this has changed significantly the Index value, that now is 1.83. Check the residual maps again to make sure that the residuals are reduced."
700 ] 700 ]
701 }, 701 },
702 { 702 {
@@ -737,15 +737,15 @@ @@ -737,15 +737,15 @@
737 ], 737 ],
738 "source": [ 738 "source": [
739 "resmap_erange([[emin,1.],\n", 739 "resmap_erange([[emin,1.],\n",
740 - " [1.,10.],\n",  
741 - " [10.,emax]])" 740 + " [1.,10.],\n",
  741 + " [10.,emax]])"
742 ] 742 ]
743 }, 743 },
744 { 744 {
745 "cell_type": "markdown", 745 "cell_type": "markdown",
746 "metadata": {}, 746 "metadata": {},
747 "source": [ 747 "source": [
748 - "Now we actually have an excess at the highest energies. In spite of the significant likelihood improvement the model is not quite perfect yet. Is there perhaps a new spectral component appearing at high energies? We will test if the addition of a power-law spectral component with a hard index (2). It will be added to the exponentially-cutoff power law in a composite spectral model." 748 + "Now you actually have an excess at the highest energies. In spite of the significant likelihood improvement the model is not quite perfect yet. Is there perhaps a new spectral component appearing at high energies? Test if the addition of a power-law spectral component with a hard index (2) improves things. To do this, add the hard spectral component to the exponentially-cutoff power law using a composite spectral model."
749 ] 749 ]
750 }, 750 },
751 { 751 {
@@ -793,7 +793,7 @@ @@ -793,7 +793,7 @@
793 "cell_type": "markdown", 793 "cell_type": "markdown",
794 "metadata": {}, 794 "metadata": {},
795 "source": [ 795 "source": [
796 - "The likelihood improvement is again significant, but did we already find the best possible model of the sky?" 796 + "The likelihood improvement is again significant, but is this the best possible model of the sky?"
797 ] 797 ]
798 }, 798 },
799 { 799 {
doc/source/users/tutorials/beyond/combining-observations.ipynb renamed to doc/source/users/tutorials/howto/howto_combine_observations.ipynb
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 "cell_type": "markdown", 4 "cell_type": "markdown",
5 "metadata": {}, 5 "metadata": {},
6 "source": [ 6 "source": [
7 - "# Combining observations" 7 + "# How to combine observations?"
8 ] 8 ]
9 }, 9 },
10 { 10 {
@@ -133,7 +133,7 @@ @@ -133,7 +133,7 @@
133 "cell_type": "markdown", 133 "cell_type": "markdown",
134 "metadata": {}, 134 "metadata": {},
135 "source": [ 135 "source": [
136 - "The file contains a single `observation_list` tag that contains two observation tags that each define an observation. Each observation has a `name`, an `id` and an `instrument` attribute. The name attribute can have any arbitrary value, and may be the same for all observations. However, **the id attribute needs to be a unique character string for any given instrument**. The instrument attribute is a case-sensitive string that identifies the instrument with which the observation was taken. Please make sure that the instrument string is set correctly so that ctools knows which instrument specific functions need to be called.\n", 136 + "The file contains a single `observation_list` tag that contains two `observation` tags that each define an observation. Each observation has a `name`, an `id` and an `instrument` attribute. The name attribute can have any arbitrary value, and may be the same for all observations. However, **the id attribute needs to be a unique character string for any given instrument**. The instrument attribute is a case-sensitive string that identifies the instrument with which the observation was taken. Please make sure that the instrument string is set correctly so that ctools knows which instrument specific functions need to be called.\n",
137 "\n", 137 "\n",
138 "**Note:** the instrument string for a CTA observation is unsurprisingly `CTA`. In case that you want to analyse data from an existing Imaging Air Cherenkov Telescope you can also set the instrument string to HESS, MAGIC, or VERITAS. You may also combine observations from different telescopes for a joint analysis in an observation definition file. Please recall that instrument strings are case sensitive.\n", 138 "**Note:** the instrument string for a CTA observation is unsurprisingly `CTA`. In case that you want to analyse data from an existing Imaging Air Cherenkov Telescope you can also set the instrument string to HESS, MAGIC, or VERITAS. You may also combine observations from different telescopes for a joint analysis in an observation definition file. Please recall that instrument strings are case sensitive.\n",
139 "\n", 139 "\n",
doc/source/users/tutorials/beyond/beyond_irf.rst renamed to doc/source/users/tutorials/howto/howto_connect_irfs.rst
1 -.. _sec_connecting_irf: 1 +.. _howto_connect_irfs:
  2 +
  3 +How to connect observations to dedicated instrument response functions?
  4 +-----------------------------------------------------------------------
  5 +
  6 + .. admonition:: What you will learn
  7 +
  8 + You will learn how to **connect individual observations to dedicated
  9 + Instrument Response Functions**.
2 10
3 -Connecting observations to dedicated instrument response functions  
4 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
5 11
6 So far you used the same instrument response function for all observations. 12 So far you used the same instrument response function for all observations.
7 You always specified the calibration database ``prod2`` and the instrument 13 You always specified the calibration database ``prod2`` and the instrument
doc/source/users/tutorials/beyond/resmap-bkg.png renamed to doc/source/users/tutorials/howto/howto_connect_models.png

261 KB

doc/source/users/tutorials/beyond/beyond_model.rst renamed to doc/source/users/tutorials/howto/howto_connect_models.rst
1 -.. _sec_connecting_model: 1 +.. _howto_connect_models:
2 2
3 -Connecting observations to specific models  
4 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 +How to connecting observations to specific models?
  4 +--------------------------------------------------
  5 +
  6 + .. admonition:: What you will learn
  7 +
  8 + You will learn how to **connect individual observations to specific
  9 + model components**.
5 10
6 In the previous examples there was always a single background model 11 In the previous examples there was always a single background model
7 component to describe the residual particle background in the 12 component to describe the residual particle background in the
@@ -68,7 +73,6 @@ tied to the ``events2.fits`` file. @@ -68,7 +73,6 @@ tied to the ``events2.fits`` file.
68 </source_library> 73 </source_library>
69 74
70 .. note:: 75 .. note::
71 -  
72 **Model components in a XML file need to have a unique name.** 76 **Model components in a XML file need to have a unique name.**
73 For this reason the components are named here ``Background_00001`` 77 For this reason the components are named here ``Background_00001``
74 and ``Background_00002``. 78 and ``Background_00002``.
@@ -86,7 +90,7 @@ Obviously, the upper observation has larger residuals owing to the ten @@ -86,7 +90,7 @@ Obviously, the upper observation has larger residuals owing to the ten
86 times larger background rate that was used in the simulation of the 90 times larger background rate that was used in the simulation of the
87 associated data. 91 associated data.
88 92
89 -.. figure:: resmap-bkg.png 93 +.. figure:: howto_connect_models.png
90 :height: 400px 94 :height: 400px
91 :align: center 95 :align: center
92 96
@@ -128,8 +132,3 @@ This is illustrated in the model definition file below where component @@ -128,8 +132,3 @@ This is illustrated in the model definition file below where component
128 </spectrum> 132 </spectrum>
129 </source> 133 </source>
130 </source_library> 134 </source_library>
131 -  
132 -  
133 -  
134 -  
135 -  
doc/source/users/tutorials/howto/howto_display.rst
@@ -21,21 +21,27 @@ included in the ctools package that rely on the @@ -21,21 +21,27 @@ included in the ctools package that rely on the
21 Python module. You can find these scripts in the 21 Python module. You can find these scripts in the
22 ``$CTOOLS/share/examples/python`` folder. The following scripts are available: 22 ``$CTOOLS/share/examples/python`` folder. The following scripts are available:
23 23
24 - +------------------------+-----------------------------+  
25 - | Script | Usage |  
26 - +========================+=============================+  
27 - | ``show_butterfly.py`` | Display a butterfly diagram |  
28 - +------------------------+-----------------------------+  
29 - | ``show_lightcurve.py`` | Display a light curve |  
30 - +------------------------+-----------------------------+  
31 - | ``show_obs.py`` | Display observation summary |  
32 - +------------------------+-----------------------------+  
33 - | ``show_pointings.py`` | Display pointing directions |  
34 - +------------------------+-----------------------------+  
35 - | ``show_phases.py`` | Display event phases |  
36 - +------------------------+-----------------------------+  
37 - | ``show_spectrum.py`` | Display a spectrum |  
38 - +------------------------+-----------------------------+ 24 + +------------------------+--------------------------------------+
  25 + | Script | Usage |
  26 + +========================+======================================+
  27 + | ``show_butterfly.py`` | Display a butterfly diagram |
  28 + +------------------------+--------------------------------------+
  29 + | ``show_irf.py`` | Display Instrument Response Function |
  30 + +------------------------+--------------------------------------+
  31 + | ``show_lightcurve.py`` | Display a light curve |
  32 + +------------------------+--------------------------------------+
  33 + | ``show_obs.py`` | Display observation summary |
  34 + +------------------------+--------------------------------------+
  35 + | ``show_phases.py`` | Display event phases |
  36 + +------------------------+--------------------------------------+
  37 + | ``show_pointings.py`` | Display pointing directions |
  38 + +------------------------+--------------------------------------+
  39 + | ``show_residuals.py`` | Display spectral residuals |
  40 + +------------------------+--------------------------------------+
  41 + | ``show_spectrum.py`` | Display a spectrum |
  42 + +------------------------+--------------------------------------+
  43 +
  44 +**Do not hesitate to copy and adapt these scripts to your needs.**
39 45
40 Below some usage examples and the expected output. 46 Below some usage examples and the expected output.
41 47
@@ -44,7 +50,7 @@ show_butterfly.py @@ -44,7 +50,7 @@ show_butterfly.py
44 50
45 .. code-block:: bash 51 .. code-block:: bash
46 52
47 - $ $CTOOLS/share/examples/python/show_butterfly.py butterfly_src001.txt 53 + $ $CTOOLS/share/examples/python/show_butterfly.py butterfly.txt
48 54
49 .. figure:: howto_display_butterfly.png 55 .. figure:: howto_display_butterfly.png
50 :width: 600px 56 :width: 600px
@@ -53,6 +59,20 @@ show_butterfly.py @@ -53,6 +59,20 @@ show_butterfly.py
53 *Butterfly diagram displayed with show_butterfly.py* 59 *Butterfly diagram displayed with show_butterfly.py*
54 60
55 61
  62 +show_irf.py
  63 +^^^^^^^^^^^
  64 +
  65 +.. code-block:: bash
  66 +
  67 + $ $CTOOLS/share/examples/python/show_irf.py prod2 South_50h
  68 +
  69 +.. figure:: howto_display_irf.png
  70 + :width: 800px
  71 + :align: center
  72 +
  73 + *Instrument Response Function displayed with show_irf.py*
  74 +
  75 +
56 show_lightcurve.py 76 show_lightcurve.py
57 ^^^^^^^^^^^^^^^^^^ 77 ^^^^^^^^^^^^^^^^^^
58 78
@@ -72,7 +92,7 @@ show_obs.py @@ -72,7 +92,7 @@ show_obs.py
72 92
73 .. code-block:: bash 93 .. code-block:: bash
74 94
75 - $ $CTOOLS/share/examples/python/show_obs.py obs_selected.xml 95 + $ $CTOOLS/share/examples/python/show_obs.py obs.xml
76 96
77 .. figure:: howto_display_obs.png 97 .. figure:: howto_display_obs.png
78 :width: 600px 98 :width: 600px
@@ -81,32 +101,46 @@ show_obs.py @@ -81,32 +101,46 @@ show_obs.py
81 *Observation summary displayed with show_obs.py* 101 *Observation summary displayed with show_obs.py*
82 102
83 103
  104 +show_phases.py
  105 +^^^^^^^^^^^^^^
  106 +
  107 +.. code-block:: bash
  108 +
  109 + $ $CTOOLS/share/examples/python/show_phases.py -n 50 events_phased.fits
  110 +
  111 +.. figure:: howto_display_phases.png
  112 + :width: 600px
  113 + :align: center
  114 +
  115 + *Event phases displayed with show_phases.py*
  116 +
  117 +
84 show_pointings.py 118 show_pointings.py
85 ^^^^^^^^^^^^^^^^^ 119 ^^^^^^^^^^^^^^^^^
86 120
87 .. code-block:: bash 121 .. code-block:: bash
88 122
89 - $ $CTOOLS/share/examples/python/show_pointings.py obs_selected.xml 123 + $ $CTOOLS/share/examples/python/show_pointings.py obs.xml
90 124
91 .. figure:: howto_display_pointings.png 125 .. figure:: howto_display_pointings.png
92 :width: 600px 126 :width: 600px
93 :align: center 127 :align: center
94 128
95 - *Observation summary displayed with show_pointings.py (zoomed in)* 129 + *Pointings displayed with show_pointings.py (zoomed in)*
96 130
97 131
98 -show_phases.py  
99 -^^^^^^^^^^^^^^ 132 +show_residuals.py
  133 +^^^^^^^^^^^^^^^^^
100 134
101 .. code-block:: bash 135 .. code-block:: bash
102 136
103 - $ $CTOOLS/share/examples/python/show_phases.py -n 50 events_phased.fits 137 + $ $CTOOLS/share/examples/python/show_residuals.py residual.fits
104 138
105 -.. figure:: howto_display_phases.png 139 +.. figure:: howto_display_residuals.png
106 :width: 600px 140 :width: 600px
107 :align: center 141 :align: center
108 142
109 - *Event phases displayed with show_phases.py* 143 + *Spectral residuals displayed with show_residuals.py*
110 144
111 145
112 show_spectrum.py 146 show_spectrum.py
@@ -114,12 +148,10 @@ show_spectrum.py @@ -114,12 +148,10 @@ show_spectrum.py
114 148
115 .. code-block:: bash 149 .. code-block:: bash
116 150
117 - $ $CTOOLS/share/examples/python/show_spectrum.py spectrum_src001.fits 151 + $ $CTOOLS/share/examples/python/show_spectrum.py spectrum.fits
118 152
119 .. figure:: howto_display_spectrum.png 153 .. figure:: howto_display_spectrum.png
120 :width: 600px 154 :width: 600px
121 :align: center 155 :align: center
122 156
123 - *Observation summary displayed with show_spectrum.py*  
124 -  
125 - 157 + *Spectrum displayed with show_spectrum.py*
doc/source/users/tutorials/howto/howto_display_irf.png 0 → 100644

147 KB

doc/source/users/tutorials/howto/howto_display_residuals.png 0 → 100644

35.4 KB

doc/source/users/tutorials/beyond/stacked-analysis.ipynb renamed to doc/source/users/tutorials/howto/howto_stacked_analysis.ipynb
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 "cell_type": "markdown", 4 "cell_type": "markdown",
5 "metadata": {}, 5 "metadata": {},
6 "source": [ 6 "source": [
7 - "# Performing a stacked analysis" 7 + "# How to perform a stacked analysis?"
8 ] 8 ]
9 }, 9 },
10 { 10 {
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 "cell_type": "markdown", 38 "cell_type": "markdown",
39 "metadata": {}, 39 "metadata": {},
40 "source": [ 40 "source": [
41 - "The data and observation definition XML file obs.xml used here are those produced in the previous tutorial **Combining observations**.\n", 41 + "The data and observation definition XML file `obs.xml` used here are those produced in the previous tutorial [How to combine observations?](howto_combine_observations.ipynb)\n",
42 "\n", 42 "\n",
43 "## Stacking Events\n", 43 "## Stacking Events\n",
44 "\n", 44 "\n",
@@ -215,7 +215,7 @@ @@ -215,7 +215,7 @@
215 "cell_type": "markdown", 215 "cell_type": "markdown",
216 "metadata": {}, 216 "metadata": {},
217 "source": [ 217 "source": [
218 - "The Crab source component is the same that is also present in `$CTOOLS/share/models/crab.xml` and is not modified. The background component, however, has been replaced by a model of type \"CTACubeBackground\". This model is a 3-dimensional data cube that describes the expected background rate as function of spatial position and energy. The data cube is multiplied by a power law spectrum that allows to adjust the normalization and slope of the background spectrum in the fit. This power law could be replaced by any spectral model that is found as an appropriate multiplicator to the background cube.\n", 218 + "The Crab source component is the same that is also present in `$CTOOLS/share/models/crab.xml` and is not modified. The background component, however, has been replaced by a model of type `CTACubeBackground`. This model is a 3-dimensional data cube that describes the expected background rate as function of spatial position and energy. The data cube is multiplied by a power law spectrum that allows to adjust the normalization and slope of the background spectrum in the fit. This power law could be replaced by any spectral model that is found as an appropriate multiplicator to the background cube.\n",
219 "\n", 219 "\n",
220 "**There is no constraint on providing the same spatial binning or the same energy binning for an exposure cube, a PSF cube, an energy dispersion cube, a background cube and a counts cube**. ctools interpolates internally all response cubes hence any arbitrary appropriate binning may be used. Using the same binning for the exposure cube, the background cube and the counts cube is only a convenience.\n", 220 "**There is no constraint on providing the same spatial binning or the same energy binning for an exposure cube, a PSF cube, an energy dispersion cube, a background cube and a counts cube**. ctools interpolates internally all response cubes hence any arbitrary appropriate binning may be used. Using the same binning for the exposure cube, the background cube and the counts cube is only a convenience.\n",
221 "\n", 221 "\n",
doc/source/users/tutorials/howto/iact/high_level.rst
@@ -266,7 +266,7 @@ In case a model cube can be provided, :ref:`csresmap` simply collapses both cube @@ -266,7 +266,7 @@ In case a model cube can be provided, :ref:`csresmap` simply collapses both cube
266 Compute a test statistics (TS) map 266 Compute a test statistics (TS) map
267 ---------------------------------- 267 ----------------------------------
268 The test statistics quantity is a more precise measurement of statistic than the ``SUBDIVSQRT`` option in :ref:`csresmap`. 268 The test statistics quantity is a more precise measurement of statistic than the ``SUBDIVSQRT`` option in :ref:`csresmap`.
269 -To get familiar with the concept of this procedure, :ref:`read more about TS maps <sec_tsmap>`. 269 +To get familiar with the concept of this procedure, :ref:`read more about TS maps <howto_ts>`.
270 270
271 .. code-block:: bash 271 .. code-block:: bash
272 272
doc/source/users/tutorials/howto/index.rst
1 .. _howto: 1 .. _howto:
2 2
3 -Analysis cookbook  
4 -================= 3 +ctools How-tos
  4 +==============
5 5
6 The following sections teach you how to use ctools to address some typical 6 The following sections teach you how to use ctools to address some typical
7 -science analysis. The sections provide examples that are based on the data  
8 -distributed within the CTA Consortium for the  
9 -:ref:`first CTA Data Challenge <glossary_1dc>`.  
10 -These examples can be easily adapted to any data you have at your disposal. 7 +science analysis.
  8 +
  9 +CTA data analysis
  10 +-----------------
11 11
12 .. toctree:: 12 .. toctree::
13 :maxdepth: 1 13 :maxdepth: 1
14 14
15 - howto_display 15 + howto_combine_observations
  16 + howto_stacked_analysis
  17 + howto_advanced_python_fitting
  18 + howto_connect_irfs
  19 + howto_connect_models
16 howto_ts 20 howto_ts
17 howto_tsmap 21 howto_tsmap
18 howto_extent 22 howto_extent
@@ -21,8 +25,13 @@ These examples can be easily adapted to any data you have at your disposal. @@ -21,8 +25,13 @@ These examples can be easily adapted to any data you have at your disposal.
21 howto_lightcurve 25 howto_lightcurve
22 howto_phasecurve 26 howto_phasecurve
23 howto_exclude 27 howto_exclude
  28 + howto_display
24 howto_vo 29 howto_vo
25 30
  31 +
  32 +Analysis of data from other instruments
  33 +---------------------------------------
  34 +
26 .. toctree:: 35 .. toctree::
27 :maxdepth: 1 36 :maxdepth: 1
28 37
doc/source/users/tutorials/index.rst
@@ -7,7 +7,6 @@ Tutorials @@ -7,7 +7,6 @@ Tutorials
7 :maxdepth: 1 7 :maxdepth: 1
8 8
9 quickstart/index 9 quickstart/index
10 - beyond/index  
11 howto/index 10 howto/index
12 notebooks 11 notebooks
13 1dc/index 12 1dc/index
doc/source/users/tutorials/notebooks.rst
@@ -15,6 +15,6 @@ it on your computer. All notebooks are also available for download from @@ -15,6 +15,6 @@ it on your computer. All notebooks are also available for download from
15 this page. 15 this page.
16 16
17 * :download:`Using ctools from Python <quickstart/ctools-from-python.ipynb>` 17 * :download:`Using ctools from Python <quickstart/ctools-from-python.ipynb>`
18 -* :download:`Combining observations <beyond/combining-observations.ipynb>`  
19 -* :download:`Performing a stacked analysis <beyond/stacked-analysis.ipynb>`  
20 -* :download:`Advanced model manipulation and fitting in Python <beyond/advanced-python-fitting.ipynb>` 18 +* :download:`Combining observations <howto/howto_combine_observations.ipynb>`
  19 +* :download:`Performing a stacked analysis <howto/howto_stacked_analysis.ipynb>`
  20 +* :download:`Advanced model manipulation and fitting in Python <howto/howto_advanced_python_fitting.ipynb>`
doc/source/users/tutorials/quickstart/ctools-from-python.ipynb
@@ -29,10 +29,8 @@ @@ -29,10 +29,8 @@
29 }, 29 },
30 { 30 {
31 "cell_type": "code", 31 "cell_type": "code",
32 - "execution_count": 2,  
33 - "metadata": {  
34 - "collapsed": true  
35 - }, 32 + "execution_count": 1,
  33 + "metadata": {},
36 "outputs": [], 34 "outputs": [],
37 "source": [ 35 "source": [
38 "import gammalib\n", 36 "import gammalib\n",
@@ -51,24 +49,22 @@ @@ -51,24 +49,22 @@
51 }, 49 },
52 { 50 {
53 "cell_type": "code", 51 "cell_type": "code",
54 - "execution_count": 3,  
55 - "metadata": {  
56 - "collapsed": true  
57 - }, 52 + "execution_count": 2,
  53 + "metadata": {},
58 "outputs": [], 54 "outputs": [],
59 "source": [ 55 "source": [
60 "sim = ctools.ctobssim()\n", 56 "sim = ctools.ctobssim()\n",
61 - "sim['inmodel'] = '${CTOOLS}/share/models/crab.xml'\n", 57 + "sim['inmodel'] = '${CTOOLS}/share/models/crab.xml'\n",
62 "sim['outevents'] = 'events.fits'\n", 58 "sim['outevents'] = 'events.fits'\n",
63 - "sim['caldb'] = 'prod2'\n",  
64 - "sim['irf'] = 'South_0.5h'\n",  
65 - "sim['ra'] = 83.5\n",  
66 - "sim['dec'] = 22.8\n",  
67 - "sim['rad'] = 5.0\n",  
68 - "sim['tmin'] = '2020-01-01T00:00:00'\n",  
69 - "sim['tmax'] = '2020-01-01T01:00:00'\n",  
70 - "sim['emin'] = 0.03\n",  
71 - "sim['emax'] = 200.0\n", 59 + "sim['caldb'] = 'prod2'\n",
  60 + "sim['irf'] = 'South_0.5h'\n",
  61 + "sim['ra'] = 83.5\n",
  62 + "sim['dec'] = 22.8\n",
  63 + "sim['rad'] = 5.0\n",
  64 + "sim['tmin'] = '2020-01-01T00:00:00'\n",
  65 + "sim['tmax'] = '2020-01-01T01:00:00'\n",
  66 + "sim['emin'] = 0.03\n",
  67 + "sim['emax'] = 150.0\n",
72 "sim.execute()" 68 "sim.execute()"
73 ] 69 ]
74 }, 70 },
@@ -83,7 +79,7 @@ @@ -83,7 +79,7 @@
83 }, 79 },
84 { 80 {
85 "cell_type": "code", 81 "cell_type": "code",
86 - "execution_count": 4, 82 + "execution_count": 3,
87 "metadata": {}, 83 "metadata": {},
88 "outputs": [ 84 "outputs": [
89 { 85 {
@@ -112,7 +108,7 @@ @@ -112,7 +108,7 @@
112 "provided by the hidden seed parameter. Changing this parameter for\r\n", 108 "provided by the hidden seed parameter. Changing this parameter for\r\n",
113 "subsequent runs will lead to different event samples.\r\n", 109 "subsequent runs will lead to different event samples.\r\n",
114 "\r\n", 110 "\r\n",
115 - "ctobssim performs a safety check on the maximum photon rate for all model \r\n", 111 + "ctobssim performs a safety check on the maximum photon rate for all model\r\n",
116 "components to avoid that the tool locks up and requests huge memory \r\n", 112 "components to avoid that the tool locks up and requests huge memory \r\n",
117 "resources, which may happen if a mistake was made in setting up the input \r\n", 113 "resources, which may happen if a mistake was made in setting up the input \r\n",
118 "model (for example if an error in the flux units is made). The maximum allowed\r\n", 114 "model (for example if an error in the flux units is made). The maximum allowed\r\n",
@@ -140,19 +136,19 @@ @@ -140,19 +136,19 @@
140 "\r\n", 136 "\r\n",
141 "inmodel [file]\r\n", 137 "inmodel [file]\r\n",
142 " Input model XML file.\r\n", 138 " Input model XML file.\r\n",
143 - " \t \t \r\n", 139 + "\r\n",
144 "caldb [string]\r\n", 140 "caldb [string]\r\n",
145 " Calibration database.\r\n", 141 " Calibration database.\r\n",
146 - " \t \t \r\n", 142 + "\r\n",
147 "irf [string]\r\n", 143 "irf [string]\r\n",
148 " Instrumental response function.\r\n", 144 " Instrumental response function.\r\n",
149 - " \t \t \r\n", 145 + "\r\n",
150 "(edisp = no) [boolean]\r\n", 146 "(edisp = no) [boolean]\r\n",
151 " Apply energy dispersion?\r\n", 147 " Apply energy dispersion?\r\n",
152 - " \t \t \r\n", 148 + "\r\n",
153 "outevents [file]\r\n", 149 "outevents [file]\r\n",
154 " Output event list or observation definition XML file.\r\n", 150 " Output event list or observation definition XML file.\r\n",
155 - " \t \t \r\n", 151 + "\r\n",
156 "(prefix = sim_events_) [string]\r\n", 152 "(prefix = sim_events_) [string]\r\n",
157 " Prefix for event list in observation definition XML file.\r\n", 153 " Prefix for event list in observation definition XML file.\r\n",
158 "\r\n", 154 "\r\n",
@@ -164,28 +160,29 @@ @@ -164,28 +160,29 @@
164 " parameter at the same value for repeatable simulations, or increment \r\n", 160 " parameter at the same value for repeatable simulations, or increment \r\n",
165 " this value for subsequent runs if non-repeatable simulations are\r\n", 161 " this value for subsequent runs if non-repeatable simulations are\r\n",
166 " required.\r\n", 162 " required.\r\n",
167 - " \t \t \r\n", 163 + "\r\n",
168 "ra [real]\r\n", 164 "ra [real]\r\n",
169 " Right Ascension of CTA pointing (J2000, in degrees).\r\n", 165 " Right Ascension of CTA pointing (J2000, in degrees).\r\n",
170 - " \t \t \r\n", 166 + "\r\n",
171 "dec [real]\r\n", 167 "dec [real]\r\n",
172 " Declination of CTA pointing (J2000, in degrees).\r\n", 168 " Declination of CTA pointing (J2000, in degrees).\r\n",
173 - " \t \t \r\n", 169 + "\r\n",
174 "rad [real]\r\n", 170 "rad [real]\r\n",
175 " Radius of CTA field of view (simulation cone radius) (in degrees).\r\n", 171 " Radius of CTA field of view (simulation cone radius) (in degrees).\r\n",
176 - " \t \t \r\n", 172 + "\r\n",
177 "tmin [time]\r\n", 173 "tmin [time]\r\n",
178 " Start time (UTC string, JD, MJD or MET in seconds).\r\n", 174 " Start time (UTC string, JD, MJD or MET in seconds).\r\n",
179 - " \t \t \r\n", 175 + "\r\n",
180 "tmax [time]\r\n", 176 "tmax [time]\r\n",
181 " Stop time (UTC string, JD, MJD or MET in seconds).\r\n", 177 " Stop time (UTC string, JD, MJD or MET in seconds).\r\n",
  178 + "\r",
182 "\r\n", 179 "\r\n",
183 "emin [real]\r\n", 180 "emin [real]\r\n",
184 " Lower energy limit of simulated events (in TeV).\r\n", 181 " Lower energy limit of simulated events (in TeV).\r\n",
185 - " \t \t \r\n", 182 + "\r\n",
186 "emax [real]\r\n", 183 "emax [real]\r\n",
187 " Upper energy limit of simulated events (in TeV).\r\n", 184 " Upper energy limit of simulated events (in TeV).\r\n",
188 - " \t \t \r\n", 185 + "\r\n",
189 "(deadc = 0.95) [real]\r\n", 186 "(deadc = 0.95) [real]\r\n",
190 " Average deadtime correction factor.\r\n", 187 " Average deadtime correction factor.\r\n",
191 "\r\n", 188 "\r\n",
@@ -206,23 +203,23 @@ @@ -206,23 +203,23 @@
206 "(chatter = 2) [integer]\r\n", 203 "(chatter = 2) [integer]\r\n",
207 " Verbosity of the executable:\r\n", 204 " Verbosity of the executable:\r\n",
208 " chatter = 0: no information will be logged\r\n", 205 " chatter = 0: no information will be logged\r\n",
209 - " \r\n", 206 + "\r\n",
210 " chatter = 1: only errors will be logged\r\n", 207 " chatter = 1: only errors will be logged\r\n",
211 - " \r\n", 208 + "\r\n",
212 " chatter = 2: errors and actions will be logged\r\n", 209 " chatter = 2: errors and actions will be logged\r\n",
213 - " \r\n", 210 + "\r\n",
214 " chatter = 3: report about the task execution\r\n", 211 " chatter = 3: report about the task execution\r\n",
215 - " \r\n", 212 + "\r\n",
216 " chatter = 4: detailed report about the task execution\r\n", 213 " chatter = 4: detailed report about the task execution\r\n",
217 - " \t \t \r\n", 214 + "\r\n",
218 "(clobber = yes) [boolean]\r\n", 215 "(clobber = yes) [boolean]\r\n",
219 " Specifies whether existing files should be overwritten.\r\n", 216 " Specifies whether existing files should be overwritten.\r\n",
220 - " \t \t \r\n", 217 + "\r\n",
221 "(debug = no) [boolean]\r\n", 218 "(debug = no) [boolean]\r\n",
222 " Enables debug mode. In debug mode the executable will dump any log file output to the console.\r\n", 219 " Enables debug mode. In debug mode the executable will dump any log file output to the console.\r\n",
223 - " \t \t \r\n", 220 + "\r\n",
224 "(mode = ql) [string]\r\n", 221 "(mode = ql) [string]\r\n",
225 - " Mode of automatic parameters (default is \"ql\", i.e. \"query and learn\").\r\n", 222 + " Mode of automatic parameters (default is ql, i.e. \"query and learn\").\r\n",
226 "\r\n", 223 "\r\n",
227 "(logfile = ctobssim.log) [string]\r\n", 224 "(logfile = ctobssim.log) [string]\r\n",
228 " Name of log file.\r\n", 225 " Name of log file.\r\n",
@@ -250,10 +247,8 @@ @@ -250,10 +247,8 @@
250 }, 247 },
251 { 248 {
252 "cell_type": "code", 249 "cell_type": "code",
253 - "execution_count": 5,  
254 - "metadata": {  
255 - "collapsed": true  
256 - }, 250 + "execution_count": 4,
  251 + "metadata": {},
257 "outputs": [], 252 "outputs": [],
258 "source": [ 253 "source": [
259 "sim.run()" 254 "sim.run()"
@@ -270,7 +265,7 @@ @@ -270,7 +265,7 @@
270 }, 265 },
271 { 266 {
272 "cell_type": "code", 267 "cell_type": "code",
273 - "execution_count": 6, 268 + "execution_count": 5,
274 "metadata": {}, 269 "metadata": {},
275 "outputs": [ 270 "outputs": [
276 { 271 {
@@ -280,7 +275,7 @@ @@ -280,7 +275,7 @@
280 "=== GObservations ===\n", 275 "=== GObservations ===\n",
281 " Number of observations ....: 1\n", 276 " Number of observations ....: 1\n",
282 " Number of models ..........: 2\n", 277 " Number of models ..........: 2\n",
283 - " Number of observed events .: 202766\n", 278 + " Number of observed events .: 200741\n",
284 " Number of predicted events : 0\n" 279 " Number of predicted events : 0\n"
285 ] 280 ]
286 } 281 }
@@ -298,7 +293,7 @@ @@ -298,7 +293,7 @@
298 }, 293 },
299 { 294 {
300 "cell_type": "code", 295 "cell_type": "code",
301 - "execution_count": 7, 296 + "execution_count": 6,
302 "metadata": {}, 297 "metadata": {},
303 "outputs": [ 298 "outputs": [
304 { 299 {
@@ -307,7 +302,7 @@ @@ -307,7 +302,7 @@
307 "text": [ 302 "text": [
308 "=== GCTAObservation ===\n", 303 "=== GCTAObservation ===\n",
309 " Name ......................: \n", 304 " Name ......................: \n",
310 - " Identifier ................: \n", 305 + " Identifier ................: 000001\n",
311 " Instrument ................: CTA\n", 306 " Instrument ................: CTA\n",
312 " Event file ................: events.fits\n", 307 " Event file ................: events.fits\n",
313 " Event type ................: EventList\n", 308 " Event type ................: EventList\n",
@@ -317,7 +312,7 @@ @@ -317,7 +312,7 @@
317 " Deadtime correction .......: 0.98\n", 312 " Deadtime correction .......: 0.98\n",
318 " User energy range .........: undefined\n", 313 " User energy range .........: undefined\n",
319 "=== GCTAPointing ===\n", 314 "=== GCTAPointing ===\n",
320 - " Pointing direction ........: (RA,Dec)=(83.63,22.01)\n", 315 + " Pointing direction ........: (RA,Dec)=(83.5,22.8)\n",
321 "=== GCTAResponseIrf ===\n", 316 "=== GCTAResponseIrf ===\n",
322 " Caldb mission .............: cta\n", 317 " Caldb mission .............: cta\n",
323 " Caldb instrument ..........: prod2\n", 318 " Caldb instrument ..........: prod2\n",
@@ -325,10 +320,12 @@ @@ -325,10 +320,12 @@
325 " Energy dispersion .........: Not used\n", 320 " Energy dispersion .........: Not used\n",
326 " Save energy range .........: undefined\n", 321 " Save energy range .........: undefined\n",
327 "=== GCTAEventList ===\n", 322 "=== GCTAEventList ===\n",
328 - " Number of events ..........: 202766 (disposed in \"events.fits\")\n", 323 + " Number of events ..........: 200741 (disposed in \"events.fits\")\n",
329 " Time interval .............: 58849.0008007407 - 58849.0424674074 days\n", 324 " Time interval .............: 58849.0008007407 - 58849.0424674074 days\n",
330 - " Energy interval ...........: 0.03 - 200 TeV\n",  
331 - " Region of interest ........: RA=83.63, DEC=22.01 [0,0] Radius=5 deg\n" 325 + " Energy interval ...........: 0.03 - 150 TeV\n",
  326 + " Region of interest ........: RA=83.5, DEC=22.8 [0,0] Radius=5 deg\n",
  327 + "=== GSkyRegions ===\n",
  328 + " Number of regions .........: 0\n"
332 ] 329 ]
333 } 330 }
334 ], 331 ],
@@ -345,14 +342,14 @@ @@ -345,14 +342,14 @@
345 }, 342 },
346 { 343 {
347 "cell_type": "code", 344 "cell_type": "code",
348 - "execution_count": 8, 345 + "execution_count": 7,
349 "metadata": {}, 346 "metadata": {},
350 "outputs": [ 347 "outputs": [
351 { 348 {
352 "name": "stdout", 349 "name": "stdout",
353 "output_type": "stream", 350 "output_type": "stream",
354 "text": [ 351 "text": [
355 - "Dir=RA=83.6182556152344, DEC=22.2843074798584 [0.00478756989312195,-0.000189682185722814] Energy=63.157357275486 GeV Time=315532804.699509 s (TT)\n" 352 + "Dir=RA=83.7821807861328, DEC=22.0288944244385 [-0.0134540141482956,0.00456559645656115] Energy=36.9588024914265 GeV Time=315532804.286922 s (TT)\n"
356 ] 353 ]
357 } 354 }
358 ], 355 ],
@@ -371,14 +368,14 @@ @@ -371,14 +368,14 @@
371 }, 368 },
372 { 369 {
373 "cell_type": "code", 370 "cell_type": "code",
374 - "execution_count": 9, 371 + "execution_count": 8,
375 "metadata": {}, 372 "metadata": {},
376 "outputs": [ 373 "outputs": [
377 { 374 {
378 "data": { 375 "data": {
379 - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEKCAYAAAAcgp5RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEpJJREFUeJzt3X2wXVV5x/HvryBaXwpVqCIQgwbRdGwRr2jVdqC+BTFi\nrS9knCotNaUWR6vOmI5Oa2dsB23HjlaqTYWiHQ2iRZtILFWrg61oCRgUpGjK4BDGmiiK0lot+vSP\ns6On1/ty7j3n3H2z+H5m7mSftffZ+8ma3Cf7PHudtVJVSJLa9VN9ByBJmi4TvSQ1zkQvSY0z0UtS\n40z0ktQ4E70kNc5EL0mNM9FLUuNM9JLUuEP7DgDgyCOPrLVr1/YdhiQdVK655pqvV9VRix23KhL9\n2rVr2bVrV99hSNJBJclXRjmu19JNko1Jtt5xxx19hiFJTes10VfVjqrafPjhh/cZhiQ1zYexktQ4\nE70kNc5EL0mNM9FLUuNM9JLUOBO9JDVuVXxhahxrt1ze27VvOf+M3q4tSaPyjl6SGjfxRJ/k1CSf\nSvKOJKdO+vySpKUZKdEnuSjJviTXz2rfkOSmJHuSbOmaC7gTuBewd7LhSpKWatQ7+ouBDcMNSQ4B\nLgBOB9YDm5KsBz5VVacDrwH+eHKhSpKWY6REX1VXArfPaj4F2FNVN1fV94FLgDOr6ofd/m8C95xY\npJKkZRln1M0xwK1Dr/cCj0vyHODpwBHA2+Z7c5LNwGaANWvWjBGGJGkhEx9eWVWXAZeNcNxWYCvA\nzMxMTToOSdLAOKNubgOOG3p9bNc2Muejl6TpGyfRXw2ckOT4JIcBZwHbl3IC56OXpOkbdXjlNuAq\n4MQke5OcU1V3AecBVwA3ApdW1Q3TC1WStBwj1eiratM87TuBncu9eJKNwMZ169Yt9xSSpEW4lKAk\nNc65biSpcb0mekfdSNL0WbqRpMZZupGkxlm6kaTGWbqRpMZZupGkxpnoJalx1uglqXHW6CWpcZZu\nJKlxJnpJatzEV5haioN99sq1Wy7v5bq3nH9GL9eVdHCyRi9JjbN0I0mNM9FLUuNM9JLUOBO9JDXO\nb8ZKUuMcdSNJjbN0I0mNM9FLUuNM9JLUOBO9JDXORC9JjTPRS1LjTPSS1Di/MCVJjfMLU5LUOEs3\nktQ4E70kNc5EL0mNM9FLUuN6XRxcy9PXouTgwuTSwcg7eklqnIlekhpnopekxpnoJalxU0n0Se6T\nZFeSZ07j/JKk0Y2U6JNclGRfkutntW9IclOSPUm2DO16DXDpJAOVJC3PqHf0FwMbhhuSHAJcAJwO\nrAc2JVmf5KnAF4F9E4xTkrRMI42jr6ork6yd1XwKsKeqbgZIcglwJnBf4D4Mkv93k+ysqh9OLGJJ\n0pKM84WpY4Bbh17vBR5XVecBJDkb+Pp8ST7JZmAzwJo1a8YIQ5K0kKmNuqmqi6vqwwvs31pVM1U1\nc9RRR00rDEm62xsn0d8GHDf0+tiubWQuPCJJ0zdOor8aOCHJ8UkOA84Cti/lBC48IknTN1KNPsk2\n4FTgyCR7gT+qqguTnAdcARwCXFRVNyzl4kk2AhvXrVu3tKjVm74mVHMyNWn5Rh11s2me9p3AzuVe\nvKp2ADtmZmZestxzSJIW5hQIktS4XhO9D2Mlafp6TfQ+jJWk6bN0I0mNs3QjSY2zdCNJjbN0I0mN\nM9FLUuOs0UtS46zRS1LjLN1IUuNM9JLUOBO9JDXOh7GS1DgfxkpS4yzdSFLjRlp4ROqbK1tJy+cd\nvSQ1zkQvSY1z1I0kNc5RN5LUOEs3ktQ4E70kNc5EL0mNM9FLUuNM9JLUOBO9JDXOcfSS1Lhe57qp\nqh3AjpmZmZf0GYc0n77m2AHn2dHkWLqRpMaZ6CWpcSZ6SWqciV6SGmeil6TGmeglqXEmeklqnIle\nkhpnopekxk080Sd5ZJJ3JPlAkt+d9PklSUszUqJPclGSfUmun9W+IclNSfYk2QJQVTdW1bnA84En\nTj5kSdJSjHpHfzGwYbghySHABcDpwHpgU5L13b5nAZcDOycWqSRpWUZK9FV1JXD7rOZTgD1VdXNV\nfR+4BDizO357VZ0OvHCSwUqSlm6c2SuPAW4der0XeFySU4HnAPdkgTv6JJuBzQBr1qwZIwxJ0kIm\nPk1xVX0S+OQIx20FtgLMzMzUpOOQDnZ9TZHs9MjtGWfUzW3AcUOvj+3aRubCI5I0feMk+quBE5Ic\nn+Qw4Cxg+1JOUFU7qmrz4YcfPkYYkqSFjDq8chtwFXBikr1Jzqmqu4DzgCuAG4FLq+qG6YUqSVqO\nkWr0VbVpnvadjDGEMslGYOO6deuWewpJ0iJ6nQLB0o0kTZ9z3UhS43pN9I66kaTps3QjSY2zdCNJ\njbN0I0mNs3QjSY2zdCNJjTPRS1LjrNFLUuOs0UtS4yzdSFLjTPSS1Dhr9JLUOGv0ktQ4SzeS1DgT\nvSQ1zkQvSY0z0UtS4xx1I0mNc9SNJDXO0o0kNc5EL0mNM9FLUuMO7TsASavL2i2X93btW84/o7dr\nt8w7eklqnIlekhpnopekxvmFKUlqnF+YkqTGWbqRpMaZ6CWpcSZ6SWqciV6SGmeil6TGmeglqXEm\neklqnIlekhpnopekxk1lmuIkzwbOAH4GuLCq/mka15EkLW7kO/okFyXZl+T6We0bktyUZE+SLQBV\n9aGqeglwLvCCyYYsSVqKpZRuLgY2DDckOQS4ADgdWA9sSrJ+6JDXdfslST0ZOdFX1ZXA7bOaTwH2\nVNXNVfV94BLgzAy8EfhIVV071/mSbE6yK8mu/fv3Lzd+SdIixn0Yewxw69DrvV3by4CnAM9Ncu5c\nb6yqrVU1U1UzRx111JhhSJLmM5WHsVX1VuCt0zi3JGlpxr2jvw04buj1sV3bSFx4RJKmb9xEfzVw\nQpLjkxwGnAVsH/XNLjwiSdO3lOGV24CrgBOT7E1yTlXdBZwHXAHcCFxaVTcs4Zze0UvSlI1co6+q\nTfO07wR2LufiVbUD2DEzM/OS5bxfkrQ4p0CQpMb1mugt3UjS9PWa6H0YK0nTZ+lGkhpn6UaSGmfp\nRpIaZ+lGkhpnopekxlmjl6TGWaOXpMZZupGkxpnoJalxJnpJapwPYyWpcT6MlaTGWbqRpMZNZXFw\nSVqOtVsu7+W6t5x/Ri/XXSne0UtS40z0ktQ4R91IUuMcdSNJjbN0I0mNM9FLUuNM9JLUOBO9JDXO\nRC9JjTPRS1LjHEcvSY1zHL0kNc7SjSQ1zkQvSY0z0UtS40z0ktQ4E70kNc5EL0mNM9FLUuNM9JLU\nOBO9JDVu4ok+yUOTXJjkA5M+tyRp6UZK9EkuSrIvyfWz2jckuSnJniRbAKrq5qo6ZxrBSpKW7tAR\nj7sYeBvw7gMNSQ4BLgCeCuwFrk6yvaq+OOkgJWma1m65vLdr33L+GVO/xkh39FV1JXD7rOZTgD3d\nHfz3gUuAMyccnyRpTOPU6I8Bbh16vRc4JskDkrwDeHSSP5jvzUk2J9mVZNf+/fvHCEOStJBRSzcj\nq6pvAOeOcNxWYCvAzMxMTToOSdLAOHf0twHHDb0+tmsbmQuPSNL0jZPorwZOSHJ8ksOAs4DtSzmB\nC49I0vSNOrxyG3AVcGKSvUnOqaq7gPOAK4AbgUur6obphSpJWo6RavRVtWme9p3AzuVePMlGYOO6\ndeuWewpJ0iJcM1aSGtdrovdhrCRNX6r6H9mYZD/wlTFPcyTw9QmEM23GOVnGOVnGOVnTjvMhVXXU\nYgetikQ/CUl2VdVM33Esxjgnyzgnyzgna7XE6TTFktQ4E70kNa6lRL+17wBGZJyTZZyTZZyTtSri\nbKZGL0maW0t39JKkORy0iT7J85LckOSHSeZ9qp3kliRfSLI7ya6VjLG7/qhx/sRqXSspyf2TfDTJ\nl7s/f3ae43rpz8X6JwNv7fZ/PsnJKxXbEmI8NckdXd/tTvKHKx1jF8ecK8YN7e+9L7s4Fouz9/5M\nclySTyT5Yvd7/vI5jum/P6vqoPwBHgmcCHwSmFnguFuAI1dznMAhwH8ADwUOA64D1q9wnG8CtnTb\nW4A3rpb+HKV/gGcAHwECPB747CqM8VTgw339WxyK41eAk4Hr59nfa18uIc7e+xM4Gji5274f8KXV\n9m+zqg7eO/qqurGqbuo7jsWMGOdqWK3rTOBd3fa7gGev8PUXMkr/nAm8uwY+AxyR5OhVFuOqUHOv\nGDes774ERoqzd1X11aq6ttv+DoMJHo+ZdVjv/XnQJvolKOBjSa5JsrnvYOYx52pdKxzDA6vqq932\nfwIPnOe4PvpzlP7puw9Hvf4Tuo/vH0ny8ysT2pL13ZdLsWr6M8la4NHAZ2ft6r0/J77C1CQl+Rjw\noDl2vbaq/mHE0zypqm5L8nPAR5P8e3enMDETinPqFopz+EVVVZL5hmNNvT8bdi2wpqruTPIM4EPA\nCT3HdDBbNf2Z5L7A3wOvqKpv9xHDQlZ1oq+qp0zgHLd1f+5L8kEGH7EnmpgmEOfYq3WNYqE4k3wt\nydFV9dXuY+W+ec4x9f6cwyj9syJ9uIBFrz+cAKpqZ5K/SnJkVa22OVv67suRrJb+THIPBkn+PVV1\n2RyH9N6fTZduktwnyf0ObANPA+Z8gt+zsVfrmoDtwIu77RcDP/FJpMf+HKV/tgMv6kY4PB64Y6gU\ntRIWjTHJg5Kk2z6Fwe/fN1YwxlH13ZcjWQ392V3/QuDGqnrzPIf13599PrEe5wf4NQa1ru8BXwOu\n6NofDOzsth/KYPTDdcANDEopqy7O+vGT+S8xGLnRR5wPAD4OfBn4GHD/1dSfc/UPg0Xoz+22A1zQ\n7f8CC4zE6jHG87p+uw74DPCElY6xi2Mb8FXgf7t/m+estr4cMc7e+xN4EoPnVp8Hdnc/z1ht/ek3\nYyWpcU2XbiRJJnpJap6JXpIaZ6KXpMaZ6CWpcSZ6TUWSOyd0nn9M8q0kH57VfnySz3YzAr6vG7t+\nYN+zD8xkmOT1SW4bmuFwd5IjJhHbOJKcnWR/kncmefpQbHdmMAPm7iTvnue9SfKVJA+b1f62JK9K\nclo3m+Lurv1H/aG7J4dXaiqS3FlV953AeZ4M3Bv4nap65lD7pcBlVXVJkncA11XV27t9nwaeVVVf\nT/J64M6q+vNxY5kV1yFV9YMx3n82g/HU581q/yTw6qpacAroJG9i8MWbPzkQD4P5VE6pqr1J1gEf\nqKqTui/1fA54fFX9z3Jj1sHLO3qtmCRrk/xzNwnVx5Os6dofluQzGcxz/4bhTwNV9XHgO7POE+BX\ngQ90TT+abTPJw4Hv1SJfg+/uqC/rPjF8uUucB/Y9LclVSa5N8v4M5jE5MBf/G5NcCzwvyWO7v8vu\nJH+Wbt70JFcmOWnofP+S5BeX2WeHJnlzkn/rrvXb3a5tDL59e8BpwJerau/sc9Tgbu5TDL7Io7sh\nE71W0l8C76qqXwDeA7y1a38L8JaqehSDb0Au5gHAt6rqru718GyAT2Qw2dWw3x8qjXxiqP0k4AXA\no4AXZLCIxJHA64CnVNXJwC7glUPv+UZVnVxVlwB/y+CTxknA8N39hcDZ8KP/eO5VVdeN8Peay2Zg\nX1WdAjwW+L0ka6rqc8A9kqzvjjuLQfKfzy7gl5cZgw5yJnqtpF8C3ttt/x2Dr48faH9/t/3e2W9a\noqOB/bPa/qKqTup+Thtq/3hV3dGVM74IPITBwhDrgX/tatwv7toPeB9AV+e/X1VdNUfc7weemcFk\nV78FXDzG3+dpwG92sXwWOIIfz9C4DdjUXWcjP/6EM5d9DKaz0N3Qqp69UprHNxgs3nBod1c/PBvg\nd4HDRzzP94a2f8Dg9yHAR6tq0zzv+a/FTlpV/53kowwWnHg+8JgR45lLgJd2JazZtgEfZvAfwDWL\nlKvuxaBvdDfkHb1W0qf5cV35hQzqxjCYkOrXu+2zZr9ptq7m/AnguV3T8GybNwLrxojxM8ATu4eZ\nB2bsfPgcMXwL+E6Sx80T9zsZlKaurqpvjhHPFcBLkxzaxXNikp/uYvgSg+cXb2Dhsg3Aw1mdM7dq\nBZjoNS33TrJ36OeVwMsYlCE+D/wGcGAh5VcAr+za1wF3HDhJkk8xKIU8uTvP07tdr+nes4dBzf7C\nrv1K4NHdA9sDhmv0uzNYCWhOVbWfQX19WxfPVcAj5jn8HOBvurLKfYbjrqprgG8zqOOP468ZzCi6\nu3vY+3b+/yfxbQzWJP7QIuc5Dbh8zFh0kHJ4pXqX5N7Ad6uqkpwFbKqqZa+3muQtwI6q+tjEgpz7\nOvetqju77S3A0VX18u71gxksCP+IqvrhHO89mzmGV04wtuHhlQ8GLq6qp03jWlr9vKPXavAYBnes\nnwdeCrxqzPP9KYOx99N2RvcJ4XoGI1reAJDkRQzq5q+dK8l3vgucnuSdkw4qyWnAB4EDNfvjgFdP\n+jo6eHhHL0mN845ekhpnopekxpnoJalxJnpJapyJXpIaZ6KXpMb9H8jQkiomH+TPAAAAAElFTkSu\nQmCC\n", 376 + "image/png": "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\nYII=\n",
380 "text/plain": [ 377 "text/plain": [
381 - "<matplotlib.figure.Figure at 0x114dbb128>" 378 + "<matplotlib.figure.Figure at 0x108a56950>"
382 ] 379 ]
383 }, 380 },
384 "metadata": {}, 381 "metadata": {},
@@ -412,10 +409,8 @@ @@ -412,10 +409,8 @@
412 }, 409 },
413 { 410 {
414 "cell_type": "code", 411 "cell_type": "code",
415 - "execution_count": 10,  
416 - "metadata": {  
417 - "collapsed": true  
418 - }, 412 + "execution_count": 9,
  413 + "metadata": {},
419 "outputs": [], 414 "outputs": [],
420 "source": [ 415 "source": [
421 "like = ctools.ctlike(sim.obs())\n", 416 "like = ctools.ctlike(sim.obs())\n",
@@ -437,7 +432,7 @@ @@ -437,7 +432,7 @@
437 }, 432 },
438 { 433 {
439 "cell_type": "code", 434 "cell_type": "code",
440 - "execution_count": 11, 435 + "execution_count": 10,
441 "metadata": {}, 436 "metadata": {},
442 "outputs": [ 437 "outputs": [
443 { 438 {
@@ -445,7 +440,7 @@ @@ -445,7 +440,7 @@
445 "output_type": "stream", 440 "output_type": "stream",
446 "text": [ 441 "text": [
447 "=== GOptimizerLM ===\n", 442 "=== GOptimizerLM ===\n",
448 - " Optimized function value ..: 757618.425\n", 443 + " Optimized function value ..: 755051.482\n",
449 " Absolute precision ........: 0.005\n", 444 " Absolute precision ........: 0.005\n",
450 " Acceptable value decrease .: 2\n", 445 " Acceptable value decrease .: 2\n",
451 " Optimization status .......: converged\n", 446 " Optimization status .......: converged\n",
@@ -469,7 +464,7 @@ @@ -469,7 +464,7 @@
469 }, 464 },
470 { 465 {
471 "cell_type": "code", 466 "cell_type": "code",
472 - "execution_count": 12, 467 + "execution_count": 11,
473 "metadata": {}, 468 "metadata": {},
474 "outputs": [ 469 "outputs": [
475 { 470 {
@@ -491,8 +486,8 @@ @@ -491,8 +486,8 @@
491 " RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)\n", 486 " RA .......................: 83.6331 [-360,360] deg (fixed,scale=1)\n",
492 " DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)\n", 487 " DEC ......................: 22.0145 [-90,90] deg (fixed,scale=1)\n",
493 " Number of spectral par's ..: 3\n", 488 " Number of spectral par's ..: 3\n",
494 - " Prefactor ................: 5.73901839854211e-16 +/- 5.75150678022232e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)\n",  
495 - " Index ....................: -2.46442704108736 +/- 0.00738985717701118 [-0,-5] (free,scale=-1,gradient)\n", 489 + " Prefactor ................: 5.69396634052842e-16 +/- 6.14427401423559e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)\n",
  490 + " Index ....................: -2.4703556883579 +/- 0.00792538918685176 [-0,-5] (free,scale=-1,gradient)\n",
496 " PivotEnergy ..............: 300000 [10000,1000000000] MeV (fixed,scale=1000000,gradient)\n", 491 " PivotEnergy ..............: 300000 [10000,1000000000] MeV (fixed,scale=1000000,gradient)\n",
497 " Number of temporal par's ..: 1\n", 492 " Number of temporal par's ..: 1\n",
498 " Normalization ............: 1 (relative value) (fixed,scale=1,gradient)\n", 493 " Normalization ............: 1 (relative value) (fixed,scale=1,gradient)\n",
@@ -504,8 +499,8 @@ @@ -504,8 +499,8 @@
504 " Model type ................: \"PowerLaw\" * \"Constant\"\n", 499 " Model type ................: \"PowerLaw\" * \"Constant\"\n",
505 " Number of parameters ......: 4\n", 500 " Number of parameters ......: 4\n",
506 " Number of spectral par's ..: 3\n", 501 " Number of spectral par's ..: 3\n",
507 - " Prefactor ................: 0.995734795709415 +/- 0.00725726198557001 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)\n",  
508 - " Index ....................: -0.00198344390952578 +/- 0.00257263793207067 [-5,5] (free,scale=1,gradient)\n", 502 + " Prefactor ................: 0.9951294839032 +/- 0.00725734189801964 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)\n",
  503 + " Index ....................: -0.00197954530750781 +/- 0.00257407441298647 [-5,5] (free,scale=1,gradient)\n",
509 " PivotEnergy ..............: 1000000 [10000,1000000000] MeV (fixed,scale=1000000,gradient)\n", 504 " PivotEnergy ..............: 1000000 [10000,1000000000] MeV (fixed,scale=1000000,gradient)\n",
510 " Number of temporal par's ..: 1\n", 505 " Number of temporal par's ..: 1\n",
511 " Normalization ............: 1 (relative value) (fixed,scale=1,gradient)\n" 506 " Normalization ............: 1 (relative value) (fixed,scale=1,gradient)\n"
@@ -520,19 +515,19 @@ @@ -520,19 +515,19 @@
520 "cell_type": "markdown", 515 "cell_type": "markdown",
521 "metadata": {}, 516 "metadata": {},
522 "source": [ 517 "source": [
523 - "For example, in this way we can fetch the minimum of the optimized function (the opposite of the likelihood logarithm) to compare different model hypotheses." 518 + "For example, in this way we can fetch the minimum of the optimized function (the negative of the natural logarithm of the likelihood) to compare different model hypotheses."
524 ] 519 ]
525 }, 520 },
526 { 521 {
527 "cell_type": "code", 522 "cell_type": "code",
528 - "execution_count": 13, 523 + "execution_count": 12,
529 "metadata": {}, 524 "metadata": {},
530 "outputs": [ 525 "outputs": [
531 { 526 {
532 "name": "stdout", 527 "name": "stdout",
533 "output_type": "stream", 528 "output_type": "stream",
534 "text": [ 529 "text": [
535 - "757618.4249159902\n" 530 + "755051.481962\n"
536 ] 531 ]
537 } 532 }
538 ], 533 ],
@@ -550,7 +545,7 @@ @@ -550,7 +545,7 @@
550 }, 545 },
551 { 546 {
552 "cell_type": "code", 547 "cell_type": "code",
553 - "execution_count": 14, 548 + "execution_count": 13,
554 "metadata": {}, 549 "metadata": {},
555 "outputs": [ 550 "outputs": [
556 { 551 {
@@ -569,11 +564,11 @@ @@ -569,11 +564,11 @@
569 " Model components ..........: \"PointSource\" * \"PowerLaw\" * \"Constant\"\n", 564 " Model components ..........: \"PointSource\" * \"PowerLaw\" * \"Constant\"\n",
570 " Number of parameters ......: 6\n", 565 " Number of parameters ......: 6\n",
571 " Number of spatial par's ...: 2\n", 566 " Number of spatial par's ...: 2\n",
572 - " RA .......................: 83.6334964430607 +/- 0.000614768905318078 [-360,360] deg (free,scale=1)\n",  
573 - " DEC ......................: 22.0149467750683 +/- 0.000559548446961086 [-90,90] deg (free,scale=1)\n", 567 + " RA .......................: 83.6324977668637 +/- 0.000645834980167342 [-360,360] deg (free,scale=1)\n",
  568 + " DEC ......................: 22.0156097018479 +/- 0.000603833638486857 [-90,90] deg (free,scale=1)\n",
574 " Number of spectral par's ..: 3\n", 569 " Number of spectral par's ..: 3\n",
575 - " Prefactor ................: 5.73898570353797e-16 +/- 5.75155055360256e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)\n",  
576 - " Index ....................: -2.46439956654049 +/- 0.00739170138357582 [-0,-5] (free,scale=-1,gradient)\n", 570 + " Prefactor ................: 5.69123259664292e-16 +/- 6.14234382363775e-18 [1e-23,1e-13] ph/cm2/s/MeV (free,scale=1e-16,gradient)\n",
  571 + " Index ....................: -2.47037429659339 +/- 0.00792634862711166 [-0,-5] (free,scale=-1,gradient)\n",
577 " PivotEnergy ..............: 300000 [10000,1000000000] MeV (fixed,scale=1000000,gradient)\n", 572 " PivotEnergy ..............: 300000 [10000,1000000000] MeV (fixed,scale=1000000,gradient)\n",
578 " Number of temporal par's ..: 1\n", 573 " Number of temporal par's ..: 1\n",
579 " Normalization ............: 1 (relative value) (fixed,scale=1,gradient)\n", 574 " Normalization ............: 1 (relative value) (fixed,scale=1,gradient)\n",
@@ -585,8 +580,8 @@ @@ -585,8 +580,8 @@
585 " Model type ................: \"PowerLaw\" * \"Constant\"\n", 580 " Model type ................: \"PowerLaw\" * \"Constant\"\n",
586 " Number of parameters ......: 4\n", 581 " Number of parameters ......: 4\n",
587 " Number of spectral par's ..: 3\n", 582 " Number of spectral par's ..: 3\n",
588 - " Prefactor ................: 0.995729516865969 +/- 0.0072572344873009 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)\n",  
589 - " Index ....................: -0.00198584806013523 +/- 0.00257264072051407 [-5,5] (free,scale=1,gradient)\n", 583 + " Prefactor ................: 0.995120900180708 +/- 0.00725727612144389 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)\n",
  584 + " Index ....................: -0.00198038808966019 +/- 0.00257407550475833 [-5,5] (free,scale=1,gradient)\n",
590 " PivotEnergy ..............: 1000000 [10000,1000000000] MeV (fixed,scale=1000000,gradient)\n", 585 " PivotEnergy ..............: 1000000 [10000,1000000000] MeV (fixed,scale=1000000,gradient)\n",
591 " Number of temporal par's ..: 1\n", 586 " Number of temporal par's ..: 1\n",
592 " Normalization ............: 1 (relative value) (fixed,scale=1,gradient)\n" 587 " Normalization ............: 1 (relative value) (fixed,scale=1,gradient)\n"
@@ -609,20 +604,20 @@ @@ -609,20 +604,20 @@
609 }, 604 },
610 { 605 {
611 "cell_type": "code", 606 "cell_type": "code",
612 - "execution_count": 16, 607 + "execution_count": 14,
613 "metadata": {}, 608 "metadata": {},
614 "outputs": [ 609 "outputs": [
615 { 610 {
616 "name": "stdout", 611 "name": "stdout",
617 "output_type": "stream", 612 "output_type": "stream",
618 "text": [ 613 "text": [
619 - "1.0637600922491401\n" 614 + "4.27571920515\n"
620 ] 615 ]
621 } 616 }
622 ], 617 ],
623 "source": [ 618 "source": [
624 "like2 = like.opt().value()\n", 619 "like2 = like.opt().value()\n",
625 - "ts = -2 * (like2 - like1)\n", 620 + "ts = -2.0 * (like2 - like1)\n",
626 "print(ts)" 621 "print(ts)"
627 ] 622 ]
628 }, 623 },
@@ -630,27 +625,34 @@ @@ -630,27 +625,34 @@
630 "cell_type": "markdown", 625 "cell_type": "markdown",
631 "metadata": {}, 626 "metadata": {},
632 "source": [ 627 "source": [
633 - "The test statistic TS is expected to be distributed as a chi square with a number of degrees of freedom equal to the additional number of degrees of freedom of the (second) more complex model with respect to the (first) more parsimonious one, for our case two degrees of freedom. The chance probability that the likelihood improved that much because of pure statistical fluctuations is the integral from TS to infinity of the chi square with two degrees of freedom. In this case the improvement is negligible (i.e., the chance probability is very high), as expected since in the model the source is already at the true position." 628 + "The test statistic (TS) is expected to be distributed as a $\\chi^2_n$ with a number of degrees of freedom $n$ equal to the additional number of degrees of freedom of the (second) more complex model with respect to the (first) more parsimonious one, for our case two degrees of freedom. The chance probability that the likelihood improved that much because of pure statistical fluctuations is the integral from TS to infinity of the chi square with two degrees of freedom. In this case the improvement is negligible (i.e., the chance probability is very high), as expected since in the model the source is already at the true position."
634 ] 629 ]
  630 + },
  631 + {
  632 + "cell_type": "code",
  633 + "execution_count": null,
  634 + "metadata": {},
  635 + "outputs": [],
  636 + "source": []
635 } 637 }
636 ], 638 ],
637 "metadata": { 639 "metadata": {
638 "kernelspec": { 640 "kernelspec": {
639 - "display_name": "Python 3", 641 + "display_name": "Python 2",
640 "language": "python", 642 "language": "python",
641 - "name": "python3" 643 + "name": "python2"
642 }, 644 },
643 "language_info": { 645 "language_info": {
644 "codemirror_mode": { 646 "codemirror_mode": {
645 "name": "ipython", 647 "name": "ipython",
646 - "version": 3 648 + "version": 2
647 }, 649 },
648 "file_extension": ".py", 650 "file_extension": ".py",
649 "mimetype": "text/x-python", 651 "mimetype": "text/x-python",
650 "name": "python", 652 "name": "python",
651 "nbconvert_exporter": "python", 653 "nbconvert_exporter": "python",
652 - "pygments_lexer": "ipython3",  
653 - "version": "3.6.2" 654 + "pygments_lexer": "ipython2",
  655 + "version": "2.7.11"
654 } 656 }
655 }, 657 },
656 "nbformat": 4, 658 "nbformat": 4,
doc/source/users/user_contributed/index.rst
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 User Contributed Material 3 User Contributed Material
4 ========================= 4 =========================
5 5
6 -This section of the manual provides examples and Jupyter Notebooks contributed  
7 -by ctools users. 6 +This section provides examples and Jupyter Notebooks contributed by ctools
  7 +users. Feel free to send your material to ctools@irap.omp.eu so that it can
  8 +be integrated into the documentation.
8 9
models/crab_beyond.xml
@@ -3,17 +3,17 @@ @@ -3,17 +3,17 @@
3 <source name="Crab" type="PointSource"> 3 <source name="Crab" type="PointSource">
4 <spectrum type="Composite"> 4 <spectrum type="Composite">
5 <spectrum type="LogParabola"> 5 <spectrum type="LogParabola">
6 - <parameter name="Prefactor" scale="1e-17" value="3.0" min="1e-07" max="1000.0" free="1"/>  
7 - <parameter name="Index" scale="-1" value="2.5" min="0.0" max="+5.0" free="1"/>  
8 - <parameter name="Curvature" scale="-1" value="0.45" min="-5.0" max="+5.0" free="1"/>  
9 - <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/> 6 + <parameter name="Prefactor" scale="1e-17" value="3.0" min="1e-07" max="1000.0" free="1"/>
  7 + <parameter name="Index" scale="-1" value="2.5" min="0.0" max="+5.0" free="1"/>
  8 + <parameter name="Curvature" scale="-1" value="0.45" min="-5.0" max="+5.0" free="1"/>
  9 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
10 </spectrum> 10 </spectrum>
11 <spectrum type="PowerLaw"> 11 <spectrum type="PowerLaw">
12 - <parameter name="Prefactor" scale="1e-18" value="2.9" min="1.e-7" max="1000.0" free="1"/>  
13 - <parameter name="Index" scale="-1" value="2.05" min="0.0" max="+5.0" free="1"/>  
14 - <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/> 12 + <parameter name="Prefactor" scale="1e-18" value="2.9" min="1.e-7" max="1000.0" free="1"/>
  13 + <parameter name="Index" scale="-1" value="2.05" min="0.0" max="+5.0" free="1"/>
  14 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
15 </spectrum> 15 </spectrum>
16 - </spectrum> 16 + </spectrum>
17 <spatialModel type="PointSource"> 17 <spatialModel type="PointSource">
18 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/> 18 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
19 <parameter name="DEC" scale="1.0" value="22.0145" min="-90" max="90" free="0"/> 19 <parameter name="DEC" scale="1.0" value="22.0145" min="-90" max="90" free="0"/>
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 <parameter name="Prefactor" scale="1e-15" value="1.8" min="1e-07" max="1000.0" free="1"/> 24 <parameter name="Prefactor" scale="1e-15" value="1.8" min="1e-07" max="1000.0" free="1"/>
25 <parameter name="Index" scale="-1" value="2.35" min="0.0" max="+5.0" free="1"/> 25 <parameter name="Index" scale="-1" value="2.35" min="0.0" max="+5.0" free="1"/>
26 <parameter name="CutoffEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="1"/> 26 <parameter name="CutoffEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="1"/>
27 - <parameter name="PivotEnergy" scale="1e6" value="0.1" min="0.01" max="1000.0" free="0"/> 27 + <parameter name="PivotEnergy" scale="1e6" value="0.1" min="0.01" max="1000.0" free="0"/>
28 </spectrum> 28 </spectrum>
29 <spatialModel type="PointSource"> 29 <spatialModel type="PointSource">
30 <parameter name="RA" scale="1.0" value="83.72" min="-360" max="360" free="0"/> 30 <parameter name="RA" scale="1.0" value="83.72" min="-360" max="360" free="0"/>