Commit 0a50ee54974102f39bdd7ce5f7b930cd908b410a
Merge branch 'integration' into devel
# Conflicts: # ChangeLog
Showing
10 changed files
with
370 additions
and
3 deletions
ChangeLog
| @@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
| 3 | * Version 1.5.0 released | 3 | * Version 1.5.0 released |
| 4 | ======================== | 4 | ======================== |
| 5 | 5 | ||
| 6 | + Add tutorial for classical analysis (#2267) | ||
| 6 | Fix chatter level handling in ctpsfcube (#2262) | 7 | Fix chatter level handling in ctpsfcube (#2262) |
| 7 | Handle On/Off observations by cspull (#2260) | 8 | Handle On/Off observations by cspull (#2260) |
| 8 | Add "statistic" parameter to all likelihood tools and scripts (#2237) | 9 | Add "statistic" parameter to all likelihood tools and scripts (#2237) |
cscripts/csspec.py
| @@ -192,7 +192,7 @@ class csspec(ctools.csobservation): | @@ -192,7 +192,7 @@ class csspec(ctools.csobservation): | ||
| 192 | if self._binned_mode: | 192 | if self._binned_mode: |
| 193 | cube_ebounds = self.obs()[0].events().ebounds() | 193 | cube_ebounds = self.obs()[0].events().ebounds() |
| 194 | else: | 194 | else: |
| 195 | - cube_ebounds = self.obs()[0].rmf().etrue() | 195 | + cube_ebounds = self.obs()[0].rmf().emeasured() |
| 196 | 196 | ||
| 197 | # Loop over user energy boundaries and collect all energy bins | 197 | # Loop over user energy boundaries and collect all energy bins |
| 198 | # that overlap | 198 | # that overlap |
doc/source/admin/release_history/1.5.rst
| @@ -24,6 +24,8 @@ Bug fixes | @@ -24,6 +24,8 @@ Bug fixes | ||
| 24 | Improvements | 24 | Improvements |
| 25 | ------------ | 25 | ------------ |
| 26 | 26 | ||
| 27 | +* [`2267 <https://cta-redmine.irap.omp.eu/issues/2267>`_] - | ||
| 28 | + Add tutorial for classical analysis | ||
| 27 | * [`2260 <https://cta-redmine.irap.omp.eu/issues/2260>`_] - | 29 | * [`2260 <https://cta-redmine.irap.omp.eu/issues/2260>`_] - |
| 28 | Handle On/Off observations by :ref:`cspull` | 30 | Handle On/Off observations by :ref:`cspull` |
| 29 | * [`2237 <https://cta-redmine.irap.omp.eu/issues/2237>`_] - | 31 | * [`2237 <https://cta-redmine.irap.omp.eu/issues/2237>`_] - |
doc/source/users/reference_manual/ctskymap.rst
| @@ -22,7 +22,7 @@ Instrument Response Functions will be used for background subtraction. | @@ -22,7 +22,7 @@ Instrument Response Functions will be used for background subtraction. | ||
| 22 | 22 | ||
| 23 | ctskymap generates a FITS file comprising a sky map as primary extension. | 23 | ctskymap generates a FITS file comprising a sky map as primary extension. |
| 24 | If a background subtraction method was selected, the FITS file will contain | 24 | If a background subtraction method was selected, the FITS file will contain |
| 25 | -the additional extensions ``BACKGRAOUND`` and ``SIGNIFICANCE`` that contain | 25 | +the additional extensions ``BACKGROUND`` and ``SIGNIFICANCE`` that contain |
| 26 | the background map and a significance map, respectively. For the latter, the | 26 | the background map and a significance map, respectively. For the latter, the |
| 27 | significance of the signal is computed for each sky map pixel. | 27 | significance of the signal is computed for each sky map pixel. |
| 28 | 28 | ||
| @@ -90,7 +90,7 @@ Background subtraction configuration parameters | @@ -90,7 +90,7 @@ Background subtraction configuration parameters | ||
| 90 | ``outradius [real]`` | 90 | ``outradius [real]`` |
| 91 | Outer ring radius for RING subtraction (in degrees). | 91 | Outer ring radius for RING subtraction (in degrees). |
| 92 | 92 | ||
| 93 | -``(regfile = NONE) [file]`` | 93 | +``(inexclusion = NONE) [file]`` |
| 94 | Exclusion region file as either a FITS map or DS9 region file. | 94 | Exclusion region file as either a FITS map or DS9 region file. |
| 95 | 95 | ||
| 96 | 96 |
doc/source/users/tutorials/1dc/classic_analysis_SED.png
0 → 100644
88.2 KB
doc/source/users/tutorials/1dc/classic_analysis_skymap.png
0 → 100644
66.3 KB
doc/source/users/tutorials/1dc/classic_analysis_skymap_exclusion.png
0 → 100644
66.3 KB
doc/source/users/tutorials/1dc/classic_analysis_skymap_onoff.png
0 → 100644
172 KB
doc/source/users/tutorials/1dc/classical_analysis.rst
0 → 100644
| 1 | +.. _classical_analysis: | ||
| 2 | + | ||
| 3 | +Performing a classical (On/Off) analysis | ||
| 4 | +---------------------------------------- | ||
| 5 | + | ||
| 6 | + .. admonition:: What you will learn | ||
| 7 | + | ||
| 8 | + You will learn how to perform a *classical* analysis | ||
| 9 | + of a source. In thys type of analysis you do not need to have a 3D (spatial | ||
| 10 | + and spectral) model of the residual hadronic background. First you create a | ||
| 11 | + skymap to identify a source region. Then, you extract the measured counts | ||
| 12 | + from the source region and from one or more background regions, and perform | ||
| 13 | + a 1D maximum likelihood analysis to derive the source's spectrum. | ||
| 14 | + | ||
| 15 | +We will derive the spectrum of a source with known position, i.e., the supernova | ||
| 16 | +remnants Cassiopeia A. First, you want to use the :ref:`csobsselect` script to | ||
| 17 | +preselect observations around our source of interest. | ||
| 18 | + | ||
| 19 | +.. code-block:: bash | ||
| 20 | + | ||
| 21 | + csobsselect | ||
| 22 | + Input event list or observation definition XML file [obs.xml] $CTA_DATA/obs/obs_gps_baseline.xml | ||
| 23 | + Pointing selection region shape (CIRCLE|BOX) [CIRCLE] | ||
| 24 | + Coordinate system (CEL - celestial, GAL - galactic) (CEL|GAL) [CEL] | ||
| 25 | + Right Ascension of selection centre (deg) (0-360) [83.63] 350.85 | ||
| 26 | + Declination of selection centre (deg) (-90-90) [22.01] 58.815 | ||
| 27 | + Radius of selection circle (deg) (0-180) [5.0] 2.5 | ||
| 28 | + Output observation definition XML file [outobs.xml] obs.xml | ||
| 29 | + | ||
| 30 | +.. note:: | ||
| 31 | + | ||
| 32 | + We are limiting the offset between pointing and source directions to 2.5 deg | ||
| 33 | + for the sake of a faster execution time for the tutorial. You can/should use | ||
| 34 | + all observations for which the source is within the CTA field of view. | ||
| 35 | + | ||
| 36 | +Next, you want to create a skymap to identify the source | ||
| 37 | +region. You can do this using the :ref:`ctskymap` tool. | ||
| 38 | + | ||
| 39 | +.. code-block:: bash | ||
| 40 | + | ||
| 41 | + $ ctskymap | ||
| 42 | + Input event list or observation definition XML file [events.fits] obs.xml | ||
| 43 | + First coordinate of image center in degrees (RA or galactic l) (0-360) [83.63] 350.85 | ||
| 44 | + Second coordinate of image center in degrees (DEC or galactic b) (-90-90) [22.01] 58.815 | ||
| 45 | + Projection method (AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN) [CAR] TAN | ||
| 46 | + Coordinate system (CEL - celestial, GAL - galactic) (CEL|GAL) [CEL] | ||
| 47 | + Image scale (in degrees/pixel) [0.02] | ||
| 48 | + Size of the X axis in pixels [200] 250 | ||
| 49 | + Size of the Y axis in pixels [200] 250 | ||
| 50 | + Lower energy limit (TeV) [0.1] | ||
| 51 | + Upper energy limit (TeV) [100.0] 50. | ||
| 52 | + Background subtraction method (NONE|IRF|RING) [NONE] RING | ||
| 53 | + Source region radius for estimating on-counts (degrees) [0.0] 0.2 | ||
| 54 | + Inner ring radius (degrees) [0.6] | ||
| 55 | + Outer ring radius (degrees) [0.8] | ||
| 56 | + Output skymap file [skymap.fits] | ||
| 57 | + | ||
| 58 | +In the spirit of the classical analysis we have chosen to derive the background | ||
| 59 | +using the RING method (e.g., Berge et al. 2007 A&A 466 1219B), in which for each | ||
| 60 | +point in the map (trial source position) the background is derived from a ring | ||
| 61 | +centered at the same position. The RING method is fast and robust against linear | ||
| 62 | +gradients of the background rates, but requires a model (from the :ref:`instrument response functions <glossary_irf>` | ||
| 63 | +) of the background acceptance as a function of position in the camera. You | ||
| 64 | +need to choose inner/outer radii such that you avoid emission from a source when | ||
| 65 | +deriving the background. This means that the inner radius must be larger | ||
| 66 | +than the source's size, or the instrument PSF for a pointlike source. This has | ||
| 67 | +produced a FITS file ``skymap.fits`` that contains three images of the region | ||
| 68 | +around the source. The primary image shows the excess counts, i.e., the total | ||
| 69 | +number of counts minus the estimated background counts. The BACKGROUND image | ||
| 70 | +shows the number of estimated background counts. Finally, the SIGNIFICANCE image | ||
| 71 | +shows the significance of the excess, calculated according to Li&Ma 1983 ApJ 272 | ||
| 72 | +317, Eq. 17. We can visualize the resulting map using `ds9 <http://ds9.si.edu>`_. | ||
| 73 | + | ||
| 74 | +.. figure:: classic_analysis_skymap.png | ||
| 75 | + :width: 400px | ||
| 76 | + :align: center | ||
| 77 | + | ||
| 78 | + *Sky map of the significance of a gamma-ray excess around Cas A. The green circle shows a circular region with 0.2 deg radius centered at the source's position.* | ||
| 79 | + | ||
| 80 | +You can note that there is a ring with negative significance (i.e., | ||
| 81 | +a count deficit) at offsets between 0.6 deg and 0.8 deg from the source. This is | ||
| 82 | +an artefact due to the fact that when computing the background for a trial | ||
| 83 | +source in this area the region around Cas A was falling into the ring used for | ||
| 84 | +the background estimation. | ||
| 85 | + | ||
| 86 | +We will recompute the skymap addressing this issue. We will provide an input | ||
| 87 | +exclusion region to avoid Cas A when calculating the background for any trial | ||
| 88 | +source position. To this end you can use two exclusion formats: a `ds9 <http://ds9.si.edu>`_ region | ||
| 89 | +file, or a FITS WCS map. For this example we will use a circular region with | ||
| 90 | +radius 0.2 dec centered on Cas A. This is what the corresponding ds9 region | ||
| 91 | +file looks like. | ||
| 92 | + | ||
| 93 | +.. code-block:: bash | ||
| 94 | + | ||
| 95 | + # Region file format: DS9 version 4.1 | ||
| 96 | + global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 | ||
| 97 | + fk5 | ||
| 98 | + circle(350.85,58.815,720.000") | ||
| 99 | + | ||
| 100 | +In fact we could have done this from the beginning since Cas A is a know source. | ||
| 101 | +In general you will need to iterate until you have found all the significant | ||
| 102 | +gamma-ray emission regions and added them to the exlusion regions/map, which is | ||
| 103 | +then necessary for spectral extraction. | ||
| 104 | + | ||
| 105 | +We rerun :ref:`ctskymap` with the exclusion region. | ||
| 106 | + | ||
| 107 | +.. code-block:: bash | ||
| 108 | + | ||
| 109 | + $ ctskymap inexclusion=CasA-exclusion.reg | ||
| 110 | + Input event list or observation definition XML file [obs.xml] | ||
| 111 | + First coordinate of image center in degrees (RA or galactic l) (0-360) [350.85] | ||
| 112 | + Second coordinate of image center in degrees (DEC or galactic b) (-90-90) [58.815] | ||
| 113 | + Projection method (AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN) [TAN] | ||
| 114 | + Coordinate system (CEL - celestial, GAL - galactic) (CEL|GAL) [CEL] | ||
| 115 | + Image scale (in degrees/pixel) [0.02] | ||
| 116 | + Size of the X axis in pixels [250] | ||
| 117 | + Size of the Y axis in pixels [250] | ||
| 118 | + Lower energy limit (TeV) [0.1] | ||
| 119 | + Upper energy limit (TeV) [50.] | ||
| 120 | + Background subtraction method (NONE|IRF|RING) [RING] | ||
| 121 | + Source region radius for estimating on-counts (degrees) [0.2] 0.2 | ||
| 122 | + Inner ring radius (degrees) [0.6] | ||
| 123 | + Outer ring radius (degrees) [0.8] 0.8 | ||
| 124 | + Output skymap file [skymap.fits] skymap-exclusion.fits | ||
| 125 | + | ||
| 126 | +Below you can see the new significance map with the source/exclusion region. | ||
| 127 | + | ||
| 128 | +.. figure:: classic_analysis_skymap_exclusion.png | ||
| 129 | + :width: 400px | ||
| 130 | + :align: center | ||
| 131 | + | ||
| 132 | + *Sky map of the significance of a gamma-ray excess around Cas A. The green circle shows a circular region with 0.2 deg radius centered at the source's position, that is excluded from the background estimation.* | ||
| 133 | + | ||
| 134 | +For a classical spectral analysis we need to derive count spectra for the source | ||
| 135 | +region and for background regions. This is accomplished by the :ref:`csphagen` | ||
| 136 | +script. This script saves the source (On) and background (Off) count spectra | ||
| 137 | +in `OGIP format <https://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/spectra/ogip_92_007/node5.html>`_, | ||
| 138 | +along with the relevant information from the :ref:`instrument response functions <glossary_irf>` | ||
| 139 | +refashioned according to this format conventions. | ||
| 140 | + | ||
| 141 | +:ref:`csphagen` calculates the background counts using the REFLECTED algorithm | ||
| 142 | +(e.g., Berge et al. 2007 A&A 466 1219B), in which, for each individual | ||
| 143 | +observation the background regions have the same shape as the source region, and | ||
| 144 | +are rotated around the center of the camera keeping the same offset. As many | ||
| 145 | +reflected regions as possible are used, excluding the area of the camera near | ||
| 146 | +the source position. Since the background rates are expected to be approximately | ||
| 147 | +radially symmetric in camera coordinates, this method minimizes the impact of | ||
| 148 | +the background rate modeling from Monte Carlo. An optional exclusion map (in | ||
| 149 | +FITS WCS format) can be provided as input through the ``inexclusion`` hidden | ||
| 150 | +parameter if other regions of significant gamma-ray emission ought to be | ||
| 151 | +excluded from the background computation. | ||
| 152 | + | ||
| 153 | +.. code-block:: bash | ||
| 154 | + | ||
| 155 | + $ csphagen | ||
| 156 | + Input event list or observation definition XML file [obs.xml] | ||
| 157 | + Binning algorithm (LIN|LOG|FILE) [LOG] | ||
| 158 | + Lower energy limit (TeV) [0.1] | ||
| 159 | + Upper energy limit (TeV) [100.0] 50. | ||
| 160 | + Number of energy bins [120] 30 | ||
| 161 | + Coordinate system (CEL - celestial, GAL - galactic) (CEL|GAL) [CEL] | ||
| 162 | + Right Ascension of source region centre (deg) (0-360) [83.63] 350.85 | ||
| 163 | + Declination of source region centre (deg) (-90-90) [22.01] 58.815 | ||
| 164 | + Radius of source region circle (deg) (0-180) [0.2] | ||
| 165 | + Stack multiple observations into single PHA, ARF and RMF files? [no] yes | ||
| 166 | + Output observation definition XML file [onoff_obs.xml] | ||
| 167 | + | ||
| 168 | +This has produced in output several files. An xml observations file lists | ||
| 169 | +the On/Off observations. Since we have decided to stack multiple observations we | ||
| 170 | +have only one output On/Off observation. Alternatively, we can keep an On/Off | ||
| 171 | +observation for each of the original observations. This is what the xml file | ||
| 172 | +looks like. | ||
| 173 | + | ||
| 174 | +.. code-block:: bash | ||
| 175 | + | ||
| 176 | + <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 177 | + <observation_list title="observation list"> | ||
| 178 | + <observation name="" id="" instrument="CTAOnOff" statistic="cstat"> | ||
| 179 | + <parameter name="Pha_on" file="onoff_stacked_pha_on.fits" /> | ||
| 180 | + <parameter name="Pha_off" file="onoff_stacked_pha_off.fits" /> | ||
| 181 | + <parameter name="Arf" file="onoff_stacked_arf.fits" /> | ||
| 182 | + <parameter name="Rmf" file="onoff_stacked_rmf.fits" /> | ||
| 183 | + </observation> | ||
| 184 | + </observation_list> | ||
| 185 | + | ||
| 186 | +The observation entails four FITS files. ``onoff_stacked_pha_on.fits`` and | ||
| 187 | +``onoff_stacked_pha_off.fits`` contain the On and Off spectra, respectively. | ||
| 188 | +These are stored in the SPECTRUM extension of the FITS file, along with ancillary | ||
| 189 | +information, notably the scaling factor to be applied to the background spectrum, | ||
| 190 | +BACKSCAL. The third extension, EBOUNDS, contains the boundaries of the energy | ||
| 191 | +bins, as defined by the binning parameters in input to csphagen. The file | ||
| 192 | +``onoff_stacked_arf.fits`` contains the spectral response of the instrument | ||
| 193 | +extracted fromt the :ref:`instrument response functions <glossary_irf>`, | ||
| 194 | +including effective area for gamma-ray detection and background rates, in the | ||
| 195 | +SPECRESP extension. The file ``onoff_stacked_rmf.fits`` contains the remaining | ||
| 196 | +part of the instrument response, i.e., an energy redistribution matrix (MATRIX), | ||
| 197 | +as well as another instance of the EBOUNDS table. Note that we are performing a | ||
| 198 | +1D analysis: the effect of the PSF is already folded into the effective area | ||
| 199 | +computation. | ||
| 200 | + | ||
| 201 | +.. note:: | ||
| 202 | + | ||
| 203 | + The parameters specified control the energy binning of the count spectra in | ||
| 204 | + *reconstructed* energy. For the computation of the instrument response we | ||
| 205 | + need a fine binning in *true* energy, which is controlled by the hidden | ||
| 206 | + parameters ``etruemin``, ``etruemax``, and ``etruebins``. | ||
| 207 | + | ||
| 208 | +.. note:: | ||
| 209 | + | ||
| 210 | + The first part of the FITS files names (and a full path to the desired | ||
| 211 | + location) can be set using the hidden ``prefix`` parameter of | ||
| 212 | + :ref:`csphagen`. If you decide not to stack multiple observations the string | ||
| 213 | + ``stacked`` with be replaced in the file names by the observation id for | ||
| 214 | + each of the original observations. | ||
| 215 | + | ||
| 216 | +There are also come ancillary `ds9 <http://ds9.si.edu>`_ region files, that show | ||
| 217 | +the On region and the Off regions for each observation, ``onoff_on.reg`` and | ||
| 218 | +``onoff_xxx_off.reg`` (with xxx observation id), respectively. Below there is | ||
| 219 | +a skymap where you can see the pointing directions along with the position of | ||
| 220 | +the On and Off regions for a few observations (extracted using the | ||
| 221 | +:ref:`csobsinfo` script). | ||
| 222 | + | ||
| 223 | +.. figure:: classic_analysis_skymap_onoff.png | ||
| 224 | + :width: 400px | ||
| 225 | + :align: center | ||
| 226 | + | ||
| 227 | + *Sky map of the event counts in a larger region around Cas A (not background subtracted). The green crosses show the pointing directions, the magenta circles the Off regions, and the white circle the On region.* | ||
| 228 | + | ||
| 229 | +.. note:: | ||
| 230 | + | ||
| 231 | + If you wish to limit the number of observations considered to those pointed | ||
| 232 | + closer to the source, you can do this either at the observation selection | ||
| 233 | + level (see :ref:`csobsselect`), or directly in :ref:`csphagen` via the | ||
| 234 | + hidden ``maxoffset`` parameter. | ||
| 235 | + | ||
| 236 | +Next we need a model to be fit to the observations. It must contain a model for the | ||
| 237 | +source, and, optionally, a model for the background. Here is what such a | ||
| 238 | +model looks like. | ||
| 239 | + | ||
| 240 | +.. code-block:: bash | ||
| 241 | + | ||
| 242 | + <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 243 | + <source_library title="source library"> | ||
| 244 | + <source name="Cassiopeia A" type="PointSource"> | ||
| 245 | + <spectrum type="PowerLaw"> | ||
| 246 | + <parameter name="Prefactor" value="144.9999950838" error="0" scale="1e-20" min="0" free="1" /> | ||
| 247 | + <parameter name="Index" value="2.75" error="-0" scale="-1" min="-10" max="10" free="1" /> | ||
| 248 | + <parameter name="PivotEnergy" value="1" scale="1000000" free="0" /> | ||
| 249 | + </spectrum> | ||
| 250 | + <spatialModel type="PointSource"> | ||
| 251 | + <parameter name="RA" value="350.850006001541" error="0" scale="1" free="0" /> | ||
| 252 | + <parameter name="DEC" value="58.8150032295771" error="0" scale="1" free="0" /> | ||
| 253 | + </spatialModel> | ||
| 254 | + </source> | ||
| 255 | + <source name="Background model" type="CTAIrfBackground" instrument="CTAOnOff"> | ||
| 256 | + <spectrum type="PowerLaw"> | ||
| 257 | + <parameter name="Prefactor" value="1" error="0" scale="1" min="0.001" max="1000" free="1" /> | ||
| 258 | + <parameter name="Index" value="0" error="0" scale="1" min="-5" max="5" free="1" /> | ||
| 259 | + <parameter name="Scale" value="1" scale="1000000" min="0.01" max="1000" free="0" /> | ||
| 260 | + </spectrum> | ||
| 261 | + </source> | ||
| 262 | + | ||
| 263 | +We can now fit the model to the data using :ref:`ctlike`. | ||
| 264 | + | ||
| 265 | +.. code-block:: bash | ||
| 266 | + | ||
| 267 | + $ ctlike | ||
| 268 | + Input event list, counts cube or observation definition XML file [events.fits] onoff_obs.xml | ||
| 269 | + Input model definition XML file [$CTOOLS/share/models/crab.xml] model.xml | ||
| 270 | + Output model definition XML file [crab_results.xml] CasA_results.xml | ||
| 271 | + | ||
| 272 | +The output file ``CasA_results.xml`` contains the best fit parameter values. | ||
| 273 | + | ||
| 274 | +.. code-block:: bash | ||
| 275 | + | ||
| 276 | + <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 277 | + <source_library title="source library"> | ||
| 278 | + <source name="Cassiopeia A" type="PointSource"> | ||
| 279 | + <spectrum type="PowerLaw"> | ||
| 280 | + <parameter name="Prefactor" value="145.578961369814" error="4.93849616822191" scale="1e-20" min="0" free="1" /> | ||
| 281 | + <parameter name="Index" value="2.73210299568622" error="0.0232463328680207" scale="-1" min="-10" max="10" free="1" /> | ||
| 282 | + <parameter name="PivotEnergy" value="1" scale="1000000" free="0" /> | ||
| 283 | + </spectrum> | ||
| 284 | + <spatialModel type="PointSource"> | ||
| 285 | + <parameter name="RA" value="350.850006001541" scale="1" free="0" /> | ||
| 286 | + <parameter name="DEC" value="58.8150032295771" scale="1" free="0" /> | ||
| 287 | + </spatialModel> | ||
| 288 | + </source> | ||
| 289 | + <source name="Background model" type="CTAIrfBackground" instrument="CTAOnOff"> | ||
| 290 | + <spectrum type="PowerLaw"> | ||
| 291 | + <parameter name="Prefactor" value="1.01524362954036" error="0.0084255502742701" scale="1" min="0.001" max="1000" free="1" /> | ||
| 292 | + <parameter name="Index" value="0.00464866003911358" error="0.00484378659736716" scale="1" min="-5" max="5" free="1" /> | ||
| 293 | + <parameter name="Scale" value="1" scale="1000000" min="0.01" max="1000" free="0" /> | ||
| 294 | + </spectrum> | ||
| 295 | + </source> | ||
| 296 | + </source_library> | ||
| 297 | + | ||
| 298 | +.. note:: | ||
| 299 | + | ||
| 300 | + Check the :ref:`ctlike` log file (by default ``ctlike.log``) to learn | ||
| 301 | + about the fit convergence and investigate any issues. | ||
| 302 | + | ||
| 303 | +:ref:`ctlike` has a hidden parameter called ``statistic`` that sets the | ||
| 304 | +statistic used for the fit. | ||
| 305 | + | ||
| 306 | +- The DEFAULT for OnOff osbervations is CSTAT, i.e., Poisson signal and Poisson | ||
| 307 | + background. A spectral model for the signal and a spectral model for the | ||
| 308 | + background are jointly fit to the On and Off spectra. | ||
| 309 | +- WSTAT is a special case of CSTAT, Poisson signal with Poisson background, in | ||
| 310 | + which you do not need to have a spectral model for the background and | ||
| 311 | + free parameters associated with it. The number of background counts in each | ||
| 312 | + energy bin is treated as a nuisance parameter, derived from the On and Off | ||
| 313 | + counts by profiling the likelihood function. In this case the only assumption | ||
| 314 | + is that the background rate spectrum is the same in the On and Off regions. | ||
| 315 | + | ||
| 316 | +.. warning:: | ||
| 317 | + Beware that the profiling may yield unphysical results (negative background | ||
| 318 | + counts) if the number of events in the Off spectra are zero. In this case a | ||
| 319 | + null number of expected background events must be enforced, | ||
| 320 | + which can result in a bias on the source's parameters. You can address this | ||
| 321 | + issue by stacking multiple observations, using a coarser energy binning, or | ||
| 322 | + using CSTAT instead (if you have a spectral model for the background that is | ||
| 323 | + good enough). See the `XSPEC manual Appendix B <https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XSappendixStatistics.html>`_ | ||
| 324 | + for more information. | ||
| 325 | + | ||
| 326 | +- You can also use CHI2, a classical chi square, i.e., a Gaussian signal and | ||
| 327 | + Gaussian background. As for CSTAT, a spectral model for the signal and a | ||
| 328 | + spectral model for the background are jointly fit to the On and Off spectra. | ||
| 329 | + | ||
| 330 | +The :ref:`ctbutterfly` tool and :ref:`csspec` script can now be used to extract | ||
| 331 | +the best-fit source spectrum. | ||
| 332 | + | ||
| 333 | +.. code-block:: bash | ||
| 334 | + | ||
| 335 | + $ ctbutterfly | ||
| 336 | + Input event list, counts cube or observation definition XML file [events.fits] onoff_obs.xml | ||
| 337 | + Source of interest [Crab] Cassiopeia A | ||
| 338 | + Input model definition XML file [$CTOOLS/share/models/crab.xml] CasA_results.xml | ||
| 339 | + Lower energy limit (TeV) [0.1] | ||
| 340 | + Upper energy limit (TeV) [100.0] 50. | ||
| 341 | + Output ASCII file [butterfly.txt] | ||
| 342 | + | ||
| 343 | +.. code-block:: bash | ||
| 344 | + | ||
| 345 | + $ csspec | ||
| 346 | + Input event list, counts cube, or observation definition XML file [events.fits] onoff_obs.xml | ||
| 347 | + Input model definition XML file [$CTOOLS/share/models/crab.xml] CasA_results.xml | ||
| 348 | + Source name [Crab] Cassiopeia A | ||
| 349 | + Spectrum generation method (SLICE|NODES|AUTO) [AUTO] | ||
| 350 | + Binning algorithm (LIN|LOG|FILE) [LOG] | ||
| 351 | + Lower energy limit (TeV) [0.1] | ||
| 352 | + Upper energy limit (TeV) [100.0] 50. | ||
| 353 | + Number of energy bins [20] 30 | ||
| 354 | + Output spectrum file [spectrum.fits] CasA-spectrum.fits | ||
| 355 | + | ||
| 356 | +The plot below displays the derived spectrum (using the python module | ||
| 357 | +matplotlib). | ||
| 358 | + | ||
| 359 | +.. figure:: classic_analysis_SED.png | ||
| 360 | + :width: 400px | ||
| 361 | + :align: center | ||
| 362 | + | ||
| 363 | + *Spectral Energy Distribution of the source: the best-fit function over the whole energy range and its uncertainty range, along with the spectral points in energy bins.* | ||
| 0 | \ No newline at end of file | 364 | \ No newline at end of file |
doc/source/users/tutorials/1dc/first.rst