Commit 1c0d6ef39cee1ac38ae88d4df11a7e3585427430

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

Make example pipeline script compliant with Python coding conventions

examples/pipeline_binned_disk.py
1 1 #! /usr/bin/env python
2 2 # ==========================================================================
3   -# Perform binned CTA analysis based of simulated CTA data.
  3 +# Perform binned analysis of simulated CTA data.
4 4 #
5 5 # Copyright (C) 2015-2016 Juergen Knoedlseder
6 6 #
... ... @@ -30,26 +30,26 @@ def setup_observations(pattern='four', ra=83.63, dec=22.01, offset=1.5,
30 30 emin=0.1, emax=100.0, rad=5.0, duration=180.0,
31 31 deadc=0.95, caldb='prod2', irf='South_0.5h'):
32 32 """
33   - Returns an observation container.
  33 + Returns an observation container
34 34  
35 35 Parameters
36 36 ----------
37 37 pattern : str, optional
38 38 Pointing pattern, either 'single' or 'four'
39 39 ra : float, optional
40   - Right Ascension of pattern centre [deg]
  40 + Right Ascension of pattern centre (deg)
41 41 dec : float, optional
42   - Delication of pattern centre [deg]
  42 + Declination of pattern centre (deg)
43 43 offset : float, optional
44   - Offset between observations of pattern [deg]
  44 + Offset between observations of pattern (deg)
45 45 emin : float, optional
46   - Minimum energy [TeV]
  46 + Minimum energy (TeV)
47 47 emax : float, optional
48   - Maximum energy [TeV]
  48 + Maximum energy (TeV)
49 49 rad : float, optional
50   - ROI radius used for analysis [deg]
  50 + ROI radius used for analysis (deg)
51 51 duration : float, optional
52   - Duration of one CTA observation [seconds]
  52 + Duration of one CTA observation (s)
53 53 deadc : float, optional
54 54 Deadtime correction factor
55 55 caldb : str, optional
... ... @@ -86,7 +86,7 @@ def setup_observations(pattern='four', ra=83.63, dec=22.01, offset=1.5,
86 86 # =========== #
87 87 def setup_model(obs, model='data/crab.xml'):
88 88 """
89   - Setup model for analysis.
  89 + Setup model for analysis
90 90  
91 91 Parameters
92 92 ----------
... ... @@ -117,16 +117,16 @@ def run_pipeline(obs, emin=0.1, emax=100.0,
117 117 caldb='prod2', irf='South_0.5h',
118 118 debug=False):
119 119 """
120   - Simulation and binned analysis pipeline.
  120 + Simulation and binned analysis pipeline
121 121  
122 122 Parameters
123 123 ----------
124 124 obs : `~gammalib.GObservations`
125 125 Observation container
126 126 emin : float, optional
127   - Minimum energy [TeV]
  127 + Minimum energy (TeV)
128 128 emax : float, optional
129   - Maximum energy [TeV]
  129 + Maximum energy (TeV)
130 130 enumbins : int, optional
131 131 Number of energy bins
132 132 nxpix : int, optional
... ... @@ -134,7 +134,7 @@ def run_pipeline(obs, emin=0.1, emax=100.0,
134 134 nypix : int, optional
135 135 Number of pixels in Y axis
136 136 binsz : float, optional
137   - Pixel size [deg/pixel]
  137 + Pixel size (deg)
138 138 coordsys : str, optional
139 139 Coordinate system
140 140 proj : str, optional
... ...
examples/pipeline_binned_mem.py
1 1 #! /usr/bin/env python
2 2 # ==========================================================================
3   -# This script illustrates how to perform a binned CTA analysis based on
4   -# simulated CTA data. You may use and adapt this script to implement your
5   -# own pipeline.
  3 +# Perform binned in-memory analysis of simulated CTA data.
6 4 #
7   -# Usage:
8   -# ./pipeline_binned_mem.py
9   -#
10   -# ==========================================================================
11   -#
12   -# Copyright (C) 2015 Juergen Knoedlseder
  5 +# Copyright (C) 2015-2016 Juergen Knoedlseder
13 6 #
14 7 # This program is free software: you can redistribute it and/or modify
15 8 # it under the terms of the GNU General Public License as published by
... ... @@ -33,25 +26,41 @@ from cscripts import obsutils
33 26 # ================== #
34 27 # Setup observations #
35 28 # ================== #
36   -def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
  29 +def setup_observations(pattern='four', ra=83.63, dec=22.01, offset=1.5,
37 30 emin=0.1, emax=100.0, rad=5.0, duration=180.0,
38   - deadc=0.95,
39   - caldb="prod2", irf="South_50h"):
  31 + deadc=0.95, caldb='prod2', irf='South_0.5h'):
40 32 """
41   - Returns an observation container.
42   -
43   - Keywords:
44   - pattern - Pointing pattern, either "single" or "four"
45   - ra - RA of pattern centre [deg] (default: 83.6331)
46   - dec - DEC of pattern centre [deg] (default: 22.0145)
47   - offset - Offset between observations of pattern [deg] (default: 1.5)
48   - emin - Minimum energy [TeV] (default: 0.1)
49   - emax - Maximum energy [TeV] (default: 100.0)
50   - rad - ROI radius used for analysis [deg] (default: 5.0)
51   - duration - Duration of one CTA observation [seconds] (default: 1800.0)
52   - deadc - Deadtime correction factor (default: 0.95)
53   - caldb - Calibration database path (default: "dummy")
54   - irf - Instrument response function (default: cta_dummy_irf)
  33 + Returns an observation container
  34 +
  35 + Parameters
  36 + ----------
  37 + pattern : str, optional
  38 + Pointing pattern, either 'single' or 'four'
  39 + ra : float, optional
  40 + Right Ascension of pattern centre (deg)
  41 + dec : float, optional
  42 + Declination of pattern centre (deg)
  43 + offset : float, optional
  44 + Offset between observations of pattern (deg)
  45 + emin : float, optional
  46 + Minimum energy (TeV)
  47 + emax : float, optional
  48 + Maximum energy (TeV)
  49 + rad : float, optional
  50 + ROI radius used for analysis (deg)
  51 + duration : float, optional
  52 + Duration of one CTA observation (s)
  53 + deadc : float, optional
  54 + Deadtime correction factor
  55 + caldb : str, optional
  56 + Calibration database path
  57 + irf : str, optional
  58 + Instrument response function
  59 +
  60 + Returns
  61 + -------
  62 + obs : `~gammalib.GObservations`
  63 + Observation container
55 64 """
56 65 # Set list of observations
57 66 obs_def_list = obsutils.set_obs_patterns(pattern,
... ... @@ -77,10 +86,19 @@ def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
77 86 # =========== #
78 87 def setup_model(obs, model='data/crab.xml'):
79 88 """
80   - Setup model for analysis.
81   -
82   - Keywords:
83   - model - Model Xml file
  89 + Setup model for analysis
  90 +
  91 + Parameters
  92 + ----------
  93 + obs : `~gammalib.GObservations`
  94 + Observation container
  95 + model : str, optional
  96 + Model definition XML file
  97 +
  98 + Returns
  99 + -------
  100 + obs : `~gammalib.GObservations`
  101 + Observation container
84 102 """
85 103 # Append model from file to observation container
86 104 obs.models(gammalib.GModels(model))
... ... @@ -94,24 +112,36 @@ def setup_model(obs, model='data/crab.xml'):
94 112 # ================================ #
95 113 def run_pipeline(obs, emin=0.1, emax=100.0,
96 114 enumbins=20, nxpix=200, nypix=200, binsz=0.02,
97   - coordsys="CEL", proj="CAR", debug=False):
  115 + coordsys='CEL', proj='CAR', debug=False):
98 116 """
99   - Simulation and binned analysis pipeline.
100   -
101   - Keywords:
102   - emin - Minimum energy of cube [TeV] (default: 0.1)
103   - emax - Maximum energy of cube [TeV] (default: 100.0)
104   - enumbins - Number of energy bins in cube (default: 20)
105   - nxpix - Number of RA pixels in cube (default: 200)
106   - nypix - Number of DEC pixels in cube (default: 200)
107   - binsz - Spatial cube bin size [deg] (default: 0.02)
108   - coordsys - Cube coordinate system (CEL or GAL)
109   - proj - Cube World Coordinate System (WCS) projection
110   - debug - Enable debugging (default: False)
  117 + Simulation and binned analysis pipeline
  118 +
  119 + Parameters
  120 + ----------
  121 + obs : `~gammalib.GObservations`
  122 + Observation container
  123 + emin : float, optional
  124 + Minimum energy (TeV)
  125 + emax : float, optional
  126 + Maximum energy (TeV)
  127 + enumbins : int, optional
  128 + Number of energy bins
  129 + nxpix : int, optional
  130 + Number of pixels in X axis
  131 + nypix : int, optional
  132 + Number of pixels in Y axis
  133 + binsz : float, optional
  134 + Pixel size (deg)
  135 + coordsys : str, optional
  136 + Coordinate system
  137 + proj : str, optional
  138 + Coordinate projection
  139 + debug : bool, optional
  140 + Debug function
111 141 """
112 142 # Simulate events
113 143 sim = ctools.ctobssim(obs)
114   - sim["debug"] = debug
  144 + sim['debug'] = debug
115 145 sim.run()
116 146  
117 147 # Bin events by looping over all observations in the container
... ... @@ -125,16 +155,16 @@ def run_pipeline(obs, emin=0.1, emax=100.0,
125 155  
126 156 # Bin events for that observation
127 157 bin = ctools.ctbin(container)
128   - bin["ebinalg"] = "LOG"
129   - bin["emin"] = emin
130   - bin["emax"] = emax
131   - bin["enumbins"] = enumbins
132   - bin["nxpix"] = nxpix
133   - bin["nypix"] = nypix
134   - bin["binsz"] = binsz
135   - bin["coordsys"] = coordsys
136   - bin["usepnt"] = True
137   - bin["proj"] = proj
  158 + bin['ebinalg'] = 'LOG'
  159 + bin['emin'] = emin
  160 + bin['emax'] = emax
  161 + bin['enumbins'] = enumbins
  162 + bin['nxpix'] = nxpix
  163 + bin['nypix'] = nypix
  164 + bin['binsz'] = binsz
  165 + bin['coordsys'] = coordsys
  166 + bin['usepnt'] = True
  167 + bin['proj'] = proj
138 168 bin.run()
139 169  
140 170 # Append result to observations
... ... @@ -142,7 +172,7 @@ def run_pipeline(obs, emin=0.1, emax=100.0,
142 172  
143 173 # Perform maximum likelihood fitting
144 174 like = ctools.ctlike(obs)
145   - like["debug"] = True # Switch this always on for results in console
  175 + like['debug'] = True # Switch this always on for results in console
146 176 like.run()
147 177  
148 178 # Return
... ... @@ -155,9 +185,9 @@ def run_pipeline(obs, emin=0.1, emax=100.0,
155 185 if __name__ == '__main__':
156 186  
157 187 # Dump header
158   - print("********************************************")
159   - print("* CTA binned analysis pipeline *")
160   - print("********************************************")
  188 + print('********************************************')
  189 + print('* CTA binned analysis pipeline *')
  190 + print('********************************************')
161 191  
162 192 # Setup observations
163 193 obs = setup_observations()
... ...
examples/pipeline_stacked_disk.py
1 1 #! /usr/bin/env python
2 2 # ==========================================================================
3   -# This script illustrates how to perform a stacked CTA analysis based on
4   -# simulated CTA data. You may use and adapt this script to implement your
5   -# own pipeline.
  3 +# Perform stacked analysis of simulated CTA data.
6 4 #
7   -# Usage:
8   -# ./pipeline_stacked_disk.py
9   -#
10   -# ==========================================================================
11   -#
12   -# Copyright (C) 2015 Juergen Knoedlseder
  5 +# Copyright (C) 2015-2016 Juergen Knoedlseder
13 6 #
14 7 # This program is free software: you can redistribute it and/or modify
15 8 # it under the terms of the GNU General Public License as published by
... ... @@ -33,25 +26,41 @@ from cscripts import obsutils
33 26 # ================== #
34 27 # Setup observations #
35 28 # ================== #
36   -def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
  29 +def setup_observations(pattern='four', ra=83.63, dec=22.01, offset=1.5,
37 30 emin=0.1, emax=100.0, rad=5.0, duration=180.0,
38   - deadc=0.95,
39   - caldb="prod2", irf="South_50h"):
  31 + deadc=0.95, caldb='prod2', irf='South_0.5h'):
40 32 """
41   - Returns an observation container.
42   -
43   - Keywords:
44   - pattern - Pointing pattern, either "single" or "four"
45   - ra - RA of pattern centre [deg] (default: 83.6331)
46   - dec - DEC of pattern centre [deg] (default: 22.0145)
47   - offset - Offset between observations of pattern [deg] (default: 1.5)
48   - emin - Minimum energy [TeV] (default: 0.1)
49   - emax - Maximum energy [TeV] (default: 100.0)
50   - rad - ROI radius used for analysis [deg] (default: 5.0)
51   - duration - Duration of one CTA observation [seconds] (default: 1800.0)
52   - deadc - Deadtime correction factor (default: 0.95)
53   - caldb - Calibration database path (default: "dummy")
54   - irf - Instrument response function (default: cta_dummy_irf)
  33 + Returns an observation container
  34 +
  35 + Parameters
  36 + ----------
  37 + pattern : str, optional
  38 + Pointing pattern, either 'single' or 'four'
  39 + ra : float, optional
  40 + Right Ascension of pattern centre (deg)
  41 + dec : float, optional
  42 + Declination of pattern centre (deg)
  43 + offset : float, optional
  44 + Offset between observations of pattern (deg)
  45 + emin : float, optional
  46 + Minimum energy (TeV)
  47 + emax : float, optional
  48 + Maximum energy (TeV)
  49 + rad : float, optional
  50 + ROI radius used for analysis (deg)
  51 + duration : float, optional
  52 + Duration of one CTA observation (s)
  53 + deadc : float, optional
  54 + Deadtime correction factor
  55 + caldb : str, optional
  56 + Calibration database path
  57 + irf : str, optional
  58 + Instrument response function
  59 +
  60 + Returns
  61 + -------
  62 + obs : `~gammalib.GObservations`
  63 + Observation container
55 64 """
56 65 # Set list of observations
57 66 obs_def_list = obsutils.set_obs_patterns(pattern,
... ... @@ -75,12 +84,21 @@ def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
75 84 # =========== #
76 85 # Setup model #
77 86 # =========== #
78   -def setup_model(obs, model="data/crab.xml"):
  87 +def setup_model(obs, model='data/crab.xml'):
79 88 """
80   - Setup model for analysis.
  89 + Setup model for analysis
  90 +
  91 + Parameters
  92 + ----------
  93 + obs : `~gammalib.GObservations`
  94 + Observation container
  95 + model : str, optional
  96 + Model definition XML file
81 97  
82   - Keywords:
83   - model - Model Xml file
  98 + Returns
  99 + -------
  100 + obs : `~gammalib.GObservations`
  101 + Observation container
84 102 """
85 103 # Append model from file to observation container
86 104 obs.models(gammalib.GModels(model))
... ... @@ -94,126 +112,146 @@ def setup_model(obs, model="data/crab.xml"):
94 112 # ================================ #
95 113 def run_pipeline(obs, ra=83.63, dec=22.01, emin=0.1, emax=100.0,
96 114 enumbins=20, nxpix=200, nypix=200, binsz=0.02,
97   - coordsys="CEL", proj="CAR",
98   - model="data/crab.xml",
99   - caldb="prod2", irf="South_50h",
  115 + coordsys='CEL', proj='CAR',
  116 + model='data/crab.xml',
  117 + caldb='prod2', irf='South_0.5h',
100 118 debug=False):
101 119 """
102   - Simulation and stacked analysis pipeline.
103   -
104   - Keywords:
105   - ra - RA of cube centre [deg] (default: 83.6331)
106   - dec - DEC of cube centre [deg] (default: 22.0145)
107   - emin - Minimum energy of cube [TeV] (default: 0.1)
108   - emax - Maximum energy of cube [TeV] (default: 100.0)
109   - enumbins - Number of energy bins in cube (default: 20)
110   - nxpix - Number of RA pixels in cube (default: 200)
111   - nypix - Number of DEC pixels in cube (default: 200)
112   - binsz - Spatial cube bin size [deg] (default: 0.02)
113   - coordsys - Cube coordinate system (CEL or GAL)
114   - proj - Cube World Coordinate System (WCS) projection
115   - debug - Enable debugging (default: False)
  120 + Simulation and stacked analysis pipeline
  121 +
  122 + Parameters
  123 + ----------
  124 + obs : `~gammalib.GObservations`
  125 + Observation container
  126 + ra : float, optional
  127 + Right Ascension of counts cube centre (deg)
  128 + dec : float, optional
  129 + Declination of Region of counts cube centre (deg)
  130 + emin : float, optional
  131 + Minimum energy (TeV)
  132 + emax : float, optional
  133 + Maximum energy (TeV)
  134 + enumbins : int, optional
  135 + Number of energy bins
  136 + nxpix : int, optional
  137 + Number of pixels in X axis
  138 + nypix : int, optional
  139 + Number of pixels in Y axis
  140 + binsz : float, optional
  141 + Pixel size (deg)
  142 + coordsys : str, optional
  143 + Coordinate system
  144 + proj : str, optional
  145 + Coordinate projection
  146 + model : str, optional
  147 + Model definition XML file
  148 + caldb : str, optional
  149 + Calibration database path
  150 + irf : str, optional
  151 + Instrument response function
  152 + debug : bool, optional
  153 + Debug function
116 154 """
117 155 # Simulate events
118 156 sim = ctools.ctobssim(obs)
119   - sim["debug"] = debug
120   - sim["outevents"] = "obs.xml"
  157 + sim['debug'] = debug
  158 + sim['outevents'] = 'obs.xml'
121 159 sim.execute()
122 160  
123 161 # Bin events into counts map
124 162 bin = ctools.ctbin()
125   - bin["inobs"] = "obs.xml"
126   - bin["outcube"] = "cntcube.fits"
127   - bin["ebinalg"] = "LOG"
128   - bin["emin"] = emin
129   - bin["emax"] = emax
130   - bin["enumbins"] = enumbins
131   - bin["nxpix"] = nxpix
132   - bin["nypix"] = nypix
133   - bin["binsz"] = binsz
134   - bin["coordsys"] = coordsys
135   - bin["proj"] = proj
136   - bin["xref"] = ra
137   - bin["yref"] = dec
138   - bin["debug"] = debug
  163 + bin['inobs'] = 'obs.xml'
  164 + bin['outcube'] = 'cntcube.fits'
  165 + bin['ebinalg'] = 'LOG'
  166 + bin['emin'] = emin
  167 + bin['emax'] = emax
  168 + bin['enumbins'] = enumbins
  169 + bin['nxpix'] = nxpix
  170 + bin['nypix'] = nypix
  171 + bin['binsz'] = binsz
  172 + bin['coordsys'] = coordsys
  173 + bin['proj'] = proj
  174 + bin['xref'] = ra
  175 + bin['yref'] = dec
  176 + bin['debug'] = debug
139 177 bin.execute()
140 178  
141 179 # Create exposure cube
142 180 expcube = ctools.ctexpcube()
143   - expcube["inobs"] = "obs.xml"
144   - expcube["incube"] = "cntcube.fits"
145   - expcube["outcube"] = "expcube.fits"
146   - expcube["caldb"] = caldb
147   - expcube["irf"] = irf
148   - expcube["ebinalg"] = "LOG"
149   - expcube["emin"] = emin
150   - expcube["emax"] = emax
151   - expcube["enumbins"] = enumbins
152   - expcube["nxpix"] = nxpix
153   - expcube["nypix"] = nypix
154   - expcube["binsz"] = binsz
155   - expcube["coordsys"] = coordsys
156   - expcube["proj"] = proj
157   - expcube["xref"] = ra
158   - expcube["yref"] = dec
159   - expcube["debug"] = debug
  181 + expcube['inobs'] = 'obs.xml'
  182 + expcube['incube'] = 'cntcube.fits'
  183 + expcube['outcube'] = 'expcube.fits'
  184 + expcube['caldb'] = caldb
  185 + expcube['irf'] = irf
  186 + expcube['ebinalg'] = 'LOG'
  187 + expcube['emin'] = emin
  188 + expcube['emax'] = emax
  189 + expcube['enumbins'] = enumbins
  190 + expcube['nxpix'] = nxpix
  191 + expcube['nypix'] = nypix
  192 + expcube['binsz'] = binsz
  193 + expcube['coordsys'] = coordsys
  194 + expcube['proj'] = proj
  195 + expcube['xref'] = ra
  196 + expcube['yref'] = dec
  197 + expcube['debug'] = debug
160 198 expcube.execute()
161 199  
162 200 # Create PSF cube
163 201 psfcube = ctools.ctpsfcube()
164   - psfcube["inobs"] = "obs.xml"
165   - psfcube["incube"] = "NONE"
166   - psfcube["outcube"] = "psfcube.fits"
167   - psfcube["caldb"] = caldb
168   - psfcube["irf"] = irf
169   - psfcube["ebinalg"] = "LOG"
170   - psfcube["emin"] = emin
171   - psfcube["emax"] = emax
172   - psfcube["enumbins"] = enumbins
173   - psfcube["nxpix"] = 10
174   - psfcube["nypix"] = 10
175   - psfcube["binsz"] = 1.0
176   - psfcube["coordsys"] = coordsys
177   - psfcube["proj"] = proj
178   - psfcube["xref"] = ra
179   - psfcube["yref"] = dec
180   - psfcube["debug"] = debug
  202 + psfcube['inobs'] = 'obs.xml'
  203 + psfcube['incube'] = 'NONE'
  204 + psfcube['outcube'] = 'psfcube.fits'
  205 + psfcube['caldb'] = caldb
  206 + psfcube['irf'] = irf
  207 + psfcube['ebinalg'] = 'LOG'
  208 + psfcube['emin'] = emin
  209 + psfcube['emax'] = emax
  210 + psfcube['enumbins'] = enumbins
  211 + psfcube['nxpix'] = 10
  212 + psfcube['nypix'] = 10
  213 + psfcube['binsz'] = 1.0
  214 + psfcube['coordsys'] = coordsys
  215 + psfcube['proj'] = proj
  216 + psfcube['xref'] = ra
  217 + psfcube['yref'] = dec
  218 + psfcube['debug'] = debug
181 219 psfcube.execute()
182 220  
183 221 # Create background cube
184 222 bkgcube = ctools.ctbkgcube()
185   - bkgcube["inobs"] = "obs.xml"
186   - bkgcube["inmodel"] = model
187   - bkgcube["incube"] = "cntcube.fits"
188   - bkgcube["outcube"] = "bkgcube.fits"
189   - bkgcube["outmodel"] = "model_bkg.xml"
190   - bkgcube["caldb"] = caldb
191   - bkgcube["irf"] = irf
192   - bkgcube["ebinalg"] = "LOG"
193   - bkgcube["emin"] = emin
194   - bkgcube["emax"] = emax
195   - bkgcube["enumbins"] = enumbins
196   - bkgcube["nxpix"] = 10
197   - bkgcube["nypix"] = 10
198   - bkgcube["binsz"] = 1.0
199   - bkgcube["coordsys"] = coordsys
200   - bkgcube["proj"] = proj
201   - bkgcube["xref"] = ra
202   - bkgcube["yref"] = dec
203   - bkgcube["debug"] = debug
  223 + bkgcube['inobs'] = 'obs.xml'
  224 + bkgcube['inmodel'] = model
  225 + bkgcube['incube'] = 'NONE'
  226 + bkgcube['outcube'] = 'bkgcube.fits'
  227 + bkgcube['outmodel'] = 'model_bkg.xml'
  228 + bkgcube['caldb'] = caldb
  229 + bkgcube['irf'] = irf
  230 + bkgcube['ebinalg'] = 'LOG'
  231 + bkgcube['emin'] = emin
  232 + bkgcube['emax'] = emax
  233 + bkgcube['enumbins'] = enumbins
  234 + bkgcube['nxpix'] = 10
  235 + bkgcube['nypix'] = 10
  236 + bkgcube['binsz'] = 1.0
  237 + bkgcube['coordsys'] = coordsys
  238 + bkgcube['proj'] = proj
  239 + bkgcube['xref'] = ra
  240 + bkgcube['yref'] = dec
  241 + bkgcube['debug'] = debug
204 242 bkgcube.execute()
205 243  
206 244 # Perform maximum likelihood fitting
207 245 like = ctools.ctlike()
208   - like["inobs"] = "cntcube.fits"
209   - like["inmodel"] = "model_bkg.xml"
210   - like["outmodel"] = "fit_results.xml"
211   - like["expcube"] = "expcube.fits"
212   - like["psfcube"] = "psfcube.fits"
213   - like["bkgcube"] = "bkgcube.fits"
214   - like["caldb"] = caldb
215   - like["irf"] = irf
216   - like["debug"] = True # Switch this always on for results in console
  246 + like['inobs'] = 'cntcube.fits'
  247 + like['inmodel'] = 'model_bkg.xml'
  248 + like['outmodel'] = 'fit_results.xml'
  249 + like['expcube'] = 'expcube.fits'
  250 + like['psfcube'] = 'psfcube.fits'
  251 + like['bkgcube'] = 'bkgcube.fits'
  252 + like['caldb'] = caldb
  253 + like['irf'] = irf
  254 + like['debug'] = True # Switch this always on for results in console
217 255 like.execute()
218 256  
219 257 # Return
... ... @@ -226,9 +264,9 @@ def run_pipeline(obs, ra=83.63, dec=22.01, emin=0.1, emax=100.0,
226 264 if __name__ == '__main__':
227 265  
228 266 # Dump header
229   - print("********************************************")
230   - print("* CTA stacked analysis pipeline *")
231   - print("********************************************")
  267 + print('********************************************')
  268 + print('* CTA stacked analysis pipeline *')
  269 + print('********************************************')
232 270  
233 271 # Setup observations
234 272 obs = setup_observations()
... ...
examples/pipeline_stacked_mem.py
1 1 #! /usr/bin/env python
2 2 # ==========================================================================
3   -# This script illustrates how to perform a stacked CTA analysis based on
4   -# simulated CTA data. You may use and adapt this script to implement your
5   -# own pipeline.
  3 +# Perform stacked in-memory analysis of simulated CTA data
6 4 #
7   -# Usage:
8   -# ./pipeline_stacked_mem.py
9   -#
10   -# ==========================================================================
11   -#
12   -# Copyright (C) 2014-2015 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
13 6 #
14 7 # This program is free software: you can redistribute it and/or modify
15 8 # it under the terms of the GNU General Public License as published by
... ... @@ -33,25 +26,41 @@ from cscripts import obsutils
33 26 # ================== #
34 27 # Setup observations #
35 28 # ================== #
36   -def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
  29 +def setup_observations(pattern='four', ra=83.63, dec=22.01, offset=1.5,
37 30 emin=0.1, emax=100.0, rad=5.0, duration=180.0,
38   - deadc=0.95,
39   - caldb="prod2", irf="South_50h"):
  31 + deadc=0.95, caldb='prod2', irf='South_0.5h'):
40 32 """
41   - Returns an observation container.
42   -
43   - Keywords:
44   - pattern - Pointing pattern, either "single" or "four"
45   - ra - RA of pattern centre [deg] (default: 83.6331)
46   - dec - DEC of pattern centre [deg] (default: 22.0145)
47   - offset - Offset between observations of pattern [deg] (default: 1.5)
48   - emin - Minimum energy [TeV] (default: 0.1)
49   - emax - Maximum energy [TeV] (default: 100.0)
50   - rad - ROI radius used for analysis [deg] (default: 5.0)
51   - duration - Duration of one CTA observation [seconds] (default: 1800.0)
52   - deadc - Deadtime correction factor (default: 0.95)
53   - caldb - Calibration database path (default: "dummy")
54   - irf - Instrument response function (default: cta_dummy_irf)
  33 + Returns an observation container
  34 +
  35 + Parameters
  36 + ----------
  37 + pattern : str, optional
  38 + Pointing pattern, either 'single' or 'four'
  39 + ra : float, optional
  40 + Right Ascension of pattern centre (deg)
  41 + dec : float, optional
  42 + Declination of pattern centre (deg)
  43 + offset : float, optional
  44 + Offset between observations of pattern (deg)
  45 + emin : float, optional
  46 + Minimum energy (TeV)
  47 + emax : float, optional
  48 + Maximum energy (TeV)
  49 + rad : float, optional
  50 + ROI radius used for analysis (deg)
  51 + duration : float, optional
  52 + Duration of one CTA observation (s)
  53 + deadc : float, optional
  54 + Deadtime correction factor
  55 + caldb : str, optional
  56 + Calibration database path
  57 + irf : str, optional
  58 + Instrument response function
  59 +
  60 + Returns
  61 + -------
  62 + obs : `~gammalib.GObservations`
  63 + Observation container
55 64 """
56 65 # Set list of observations
57 66 obs_def_list = obsutils.set_obs_patterns(pattern,
... ... @@ -75,12 +84,21 @@ def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
75 84 # =========== #
76 85 # Setup model #
77 86 # =========== #
78   -def setup_model(obs, model="data/crab.xml"):
  87 +def setup_model(obs, model='data/crab.xml'):
79 88 """
80   - Setup model for analysis.
81   -
82   - Keywords:
83   - model - Model Xml file
  89 + Setup model for analysis
  90 +
  91 + Parameters
  92 + ----------
  93 + obs : `~gammalib.GObservations`
  94 + Observation container
  95 + model : str, optional
  96 + Model definition XML file
  97 +
  98 + Returns
  99 + -------
  100 + obs : `~gammalib.GObservations`
  101 + Observation container
84 102 """
85 103 # Append model from file to observation container
86 104 obs.models(gammalib.GModels(model))
... ... @@ -94,93 +112,107 @@ def setup_model(obs, model="data/crab.xml"):
94 112 # ================================ #
95 113 def run_pipeline(obs, ra=83.63, dec=22.01, emin=0.1, emax=100.0,
96 114 enumbins=20, nxpix=200, nypix=200, binsz=0.02,
97   - coordsys="CEL", proj="CAR", debug=False):
  115 + coordsys='CEL', proj='CAR', debug=False):
98 116 """
99   - Simulation and stacked analysis pipeline.
100   -
101   - Keywords:
102   - ra - RA of cube centre [deg] (default: 83.6331)
103   - dec - DEC of cube centre [deg] (default: 22.0145)
104   - emin - Minimum energy of cube [TeV] (default: 0.1)
105   - emax - Maximum energy of cube [TeV] (default: 100.0)
106   - enumbins - Number of energy bins in cube (default: 20)
107   - nxpix - Number of RA pixels in cube (default: 200)
108   - nypix - Number of DEC pixels in cube (default: 200)
109   - binsz - Spatial cube bin size [deg] (default: 0.02)
110   - coordsys - Cube coordinate system (CEL or GAL)
111   - proj - Cube World Coordinate System (WCS) projection
112   - debug - Enable debugging (default: False)
  117 + Simulation and stacked analysis pipeline
  118 +
  119 + Parameters
  120 + ----------
  121 + obs : `~gammalib.GObservations`
  122 + Observation container
  123 + ra : float, optional
  124 + Right Ascension of counts cube centre (deg)
  125 + dec : float, optional
  126 + Declination of Region of counts cube centre (deg)
  127 + emin : float, optional
  128 + Minimum energy (TeV)
  129 + emax : float, optional
  130 + Maximum energy (TeV)
  131 + enumbins : int, optional
  132 + Number of energy bins
  133 + nxpix : int, optional
  134 + Number of pixels in X axis
  135 + nypix : int, optional
  136 + Number of pixels in Y axis
  137 + binsz : float, optional
  138 + Pixel size (deg)
  139 + coordsys : str, optional
  140 + Coordinate system
  141 + proj : str, optional
  142 + Coordinate projection
  143 + debug : bool, optional
  144 + Debug function
113 145 """
114 146 # Simulate events
115 147 sim = ctools.ctobssim(obs)
116   - sim["debug"] = debug
  148 + sim['debug'] = debug
117 149 sim.run()
118 150  
119 151 # Bin events into counts map
120 152 bin = ctools.ctbin(sim.obs())
121   - bin["ebinalg"] = "LOG"
122   - bin["emin"] = emin
123   - bin["emax"] = emax
124   - bin["enumbins"] = enumbins
125   - bin["nxpix"] = nxpix
126   - bin["nypix"] = nypix
127   - bin["binsz"] = binsz
128   - bin["coordsys"] = coordsys
129   - bin["proj"] = proj
130   - bin["xref"] = ra
131   - bin["yref"] = dec
132   - bin["debug"] = debug
  153 + bin['ebinalg'] = 'LOG'
  154 + bin['emin'] = emin
  155 + bin['emax'] = emax
  156 + bin['enumbins'] = enumbins
  157 + bin['nxpix'] = nxpix
  158 + bin['nypix'] = nypix
  159 + bin['binsz'] = binsz
  160 + bin['coordsys'] = coordsys
  161 + bin['proj'] = proj
  162 + bin['xref'] = ra
  163 + bin['yref'] = dec
  164 + bin['debug'] = debug
133 165 bin.run()
134 166  
135 167 # Create exposure cube
136 168 expcube = ctools.ctexpcube(sim.obs())
137   - expcube["incube"] = "NONE"
138   - expcube["ebinalg"] = "LOG"
139   - expcube["emin"] = emin
140   - expcube["emax"] = emax
141   - expcube["enumbins"] = enumbins
142   - expcube["nxpix"] = nxpix
143   - expcube["nypix"] = nypix
144   - expcube["binsz"] = binsz
145   - expcube["coordsys"] = coordsys
146   - expcube["proj"] = proj
147   - expcube["xref"] = ra
148   - expcube["yref"] = dec
149   - expcube["debug"] = debug
  169 + expcube['incube'] = 'NONE'
  170 + expcube['ebinalg'] = 'LOG'
  171 + expcube['emin'] = emin
  172 + expcube['emax'] = emax
  173 + expcube['enumbins'] = enumbins
  174 + expcube['nxpix'] = nxpix
  175 + expcube['nypix'] = nypix
  176 + expcube['binsz'] = binsz
  177 + expcube['coordsys'] = coordsys
  178 + expcube['proj'] = proj
  179 + expcube['xref'] = ra
  180 + expcube['yref'] = dec
  181 + expcube['debug'] = debug
150 182 expcube.run()
151 183  
152 184 # Create PSF cube
153 185 psfcube = ctools.ctpsfcube(sim.obs())
154   - psfcube["incube"] = "NONE"
155   - psfcube["ebinalg"] = "LOG"
156   - psfcube["emin"] = emin
157   - psfcube["emax"] = emax
158   - psfcube["enumbins"] = enumbins
159   - psfcube["nxpix"] = 10
160   - psfcube["nypix"] = 10
161   - psfcube["binsz"] = 1.0
162   - psfcube["coordsys"] = coordsys
163   - psfcube["proj"] = proj
164   - psfcube["xref"] = ra
165   - psfcube["yref"] = dec
166   - psfcube["debug"] = debug
  186 + psfcube['incube'] = 'NONE'
  187 + psfcube['ebinalg'] = 'LOG'
  188 + psfcube['emin'] = emin
  189 + psfcube['emax'] = emax
  190 + psfcube['enumbins'] = enumbins
  191 + psfcube['nxpix'] = 10
  192 + psfcube['nypix'] = 10
  193 + psfcube['binsz'] = 1.0
  194 + psfcube['coordsys'] = coordsys
  195 + psfcube['proj'] = proj
  196 + psfcube['xref'] = ra
  197 + psfcube['yref'] = dec
  198 + psfcube['debug'] = debug
167 199 psfcube.run()
168 200  
169 201 # Create background cube
170 202 bkgcube = ctools.ctbkgcube(sim.obs())
171   - bkgcube["incube"] = "NONE"
172   - bkgcube["ebinalg"] = "LOG"
173   - bkgcube["emin"] = emin
174   - bkgcube["emax"] = emax
175   - bkgcube["enumbins"] = enumbins
176   - bkgcube["nxpix"] = 10
177   - bkgcube["nypix"] = 10
178   - bkgcube["binsz"] = 1.0
179   - bkgcube["coordsys"] = coordsys
180   - bkgcube["proj"] = proj
181   - bkgcube["xref"] = ra
182   - bkgcube["yref"] = dec
183   - bkgcube["debug"] = debug
  203 + bkgcube['incube'] = 'NONE'
  204 + bkgcube['ebinalg'] = 'LOG'
  205 + bkgcube['emin'] = emin
  206 + bkgcube['emax'] = emax
  207 + bkgcube['enumbins'] = enumbins
  208 + bkgcube['nxpix'] = 10
  209 + bkgcube['nypix'] = 10
  210 + bkgcube['binsz'] = 1.0
  211 + bkgcube['coordsys'] = coordsys
  212 + bkgcube['proj'] = proj
  213 + bkgcube['xref'] = ra
  214 + bkgcube['yref'] = dec
  215 + bkgcube['debug'] = debug
184 216 bkgcube.run()
185 217  
186 218 # Attach background model to observation container
... ... @@ -192,7 +224,7 @@ def run_pipeline(obs, ra=83.63, dec=22.01, emin=0.1, emax=100.0,
192 224  
193 225 # Perform maximum likelihood fitting
194 226 like = ctools.ctlike(bin.obs())
195   - like["debug"] = True # Switch this always on for results in console
  227 + like['debug'] = True # Switch this always on for results in console
196 228 like.run()
197 229  
198 230 # Return
... ... @@ -205,9 +237,9 @@ def run_pipeline(obs, ra=83.63, dec=22.01, emin=0.1, emax=100.0,
205 237 if __name__ == '__main__':
206 238  
207 239 # Dump header
208   - print("********************************************")
209   - print("* CTA stacked analysis pipeline *")
210   - print("********************************************")
  240 + print('********************************************')
  241 + print('* CTA stacked analysis pipeline *')
  242 + print('********************************************')
211 243  
212 244 # Setup observations
213 245 obs = setup_observations()
... ...
examples/pipeline_unbinned_disk.py
1 1 #! /usr/bin/env python
2 2 # ==========================================================================
3   -# This script illustrates how to perform an unbinned CTA analysis based on
4   -# simulated CTA data. You may use and adapt this script to implement your
5   -# own pipeline.
  3 +# Perform unbinned analysis of simulated CTA data.
6 4 #
7   -# Usage:
8   -# ./pipeline_unbinned_disk.py
9   -#
10   -# ==========================================================================
11   -#
12   -# Copyright (C) 2015 Juergen Knoedlseder
  5 +# Copyright (C) 2015-2016 Juergen Knoedlseder
13 6 #
14 7 # This program is free software: you can redistribute it and/or modify
15 8 # it under the terms of the GNU General Public License as published by
... ... @@ -33,25 +26,41 @@ from cscripts import obsutils
33 26 # ================== #
34 27 # Setup observations #
35 28 # ================== #
36   -def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
  29 +def setup_observations(pattern='four', ra=83.63, dec=22.01, offset=1.5,
37 30 emin=0.1, emax=100.0, rad=5.0, duration=180.0,
38   - deadc=0.95,
39   - caldb="prod2", irf="South_50h"):
  31 + deadc=0.95, caldb='prod2', irf='South_0.5h'):
40 32 """
41   - Returns an observation container.
42   -
43   - Keywords:
44   - pattern - Pointing pattern, either "single" or "four"
45   - ra - RA of pattern centre [deg] (default: 83.6331)
46   - dec - DEC of pattern centre [deg] (default: 22.0145)
47   - offset - Offset between observations of pattern [deg] (default: 1.5)
48   - emin - Minimum energy [TeV] (default: 0.1)
49   - emax - Maximum energy [TeV] (default: 100.0)
50   - rad - ROI radius used for analysis [deg] (default: 5.0)
51   - duration - Duration of one CTA observation [seconds] (default: 1800.0)
52   - deadc - Deadtime correction factor (default: 0.95)
53   - caldb - Calibration database path (default: "dummy")
54   - irf - Instrument response function (default: cta_dummy_irf)
  33 + Returns an observation container
  34 +
  35 + Parameters
  36 + ----------
  37 + pattern : str, optional
  38 + Pointing pattern, either 'single' or 'four'
  39 + ra : float, optional
  40 + Right Ascension of pattern centre (deg)
  41 + dec : float, optional
  42 + Declination of pattern centre (deg)
  43 + offset : float, optional
  44 + Offset between observations of pattern (deg)
  45 + emin : float, optional
  46 + Minimum energy (TeV)
  47 + emax : float, optional
  48 + Maximum energy (TeV)
  49 + rad : float, optional
  50 + ROI radius used for analysis (deg)
  51 + duration : float, optional
  52 + Duration of one CTA observation (s)
  53 + deadc : float, optional
  54 + Deadtime correction factor
  55 + caldb : str, optional
  56 + Calibration database path
  57 + irf : str, optional
  58 + Instrument response function
  59 +
  60 + Returns
  61 + -------
  62 + obs : `~gammalib.GObservations`
  63 + Observation container
55 64 """
56 65 # Set list of observations
57 66 obs_def_list = obsutils.set_obs_patterns(pattern,
... ... @@ -75,12 +84,21 @@ def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
75 84 # =========== #
76 85 # Setup model #
77 86 # =========== #
78   -def setup_model(obs, model="data/crab.xml"):
  87 +def setup_model(obs, model='data/crab.xml'):
79 88 """
80   - Setup model for analysis.
81   -
82   - Keywords:
83   - model - Model Xml file
  89 + Setup model for analysis
  90 +
  91 + Parameters
  92 + ----------
  93 + obs : `~gammalib.GObservations`
  94 + Observation container
  95 + model : str, optional
  96 + Model definition XML file
  97 +
  98 + Returns
  99 + -------
  100 + obs : `~gammalib.GObservations`
  101 + Observation container
84 102 """
85 103 # Append model from file to observation container
86 104 obs.models(gammalib.GModels(model))
... ... @@ -95,55 +113,69 @@ def setup_model(obs, model="data/crab.xml"):
95 113 def run_pipeline(obs, ra=83.63, dec=22.01, rad=3.0,
96 114 emin=0.1, emax=100.0,
97 115 tmin=0.0, tmax=0.0,
98   - model="data/crab.xml",
99   - caldb="prod2", irf="South_50h",
  116 + model='data/crab.xml',
  117 + caldb='prod2', irf='South_0.5h',
100 118 debug=False):
101 119 """
102   - Simulation and unbinned analysis pipeline.
103   -
104   - Keywords:
105   - ra - RA of cube centre [deg] (default: 83.63)
106   - dec - DEC of cube centre [deg] (default: 22.01)
107   - rad - Selection radius [deg] (default: 3.0)
108   - emin - Minimum energy of cube [TeV] (default: 0.1)
109   - emax - Maximum energy of cube [TeV] (default: 100.0)
110   - tmin - Start time [MET] (default: 0.0)
111   - tmax - Stop time [MET] (default: 0.0)
112   - model - Model Xml file
113   - caldb - Calibration database path (default: "dummy")
114   - irf - Instrument response function (default: cta_dummy_irf)
115   - debug - Enable debugging (default: False)
  120 + Simulation and unbinned analysis pipeline
  121 +
  122 + Parameters
  123 + ----------
  124 + obs : `~gammalib.GObservations`
  125 + Observation container
  126 + ra : float, optional
  127 + Right Ascension of Region of Interest centre (deg)
  128 + dec : float, optional
  129 + Declination of Region of Interest centre (deg)
  130 + rad : float, optional
  131 + Radius of Region of Interest (deg)
  132 + emin : float, optional
  133 + Minimum energy (TeV)
  134 + emax : float, optional
  135 + Maximum energy (TeV)
  136 + tmin : float, optional
  137 + Start time (s)
  138 + tmax : float, optional
  139 + Stop time (s)
  140 + model : str, optional
  141 + Model definition XML file
  142 + caldb : str, optional
  143 + Calibration database path
  144 + irf : str, optional
  145 + Instrument response function
  146 + debug : bool, optional
  147 + Debug function
116 148 """
117 149 # Get model
118 150  
119 151 # Simulate events
120 152 sim = ctools.ctobssim(obs)
121   - sim["debug"] = debug
122   - sim["outevents"] = "obs.xml"
  153 + sim['debug'] = debug
  154 + sim['outevents'] = 'obs.xml'
123 155 sim.execute()
124 156  
125 157 # Select events
126 158 select = ctools.ctselect()
127   - select["inobs"] = "obs.xml"
128   - select["outobs"] = "obs_selected.xml"
129   - select["ra"] = ra
130   - select["dec"] = dec
131   - select["rad"] = rad
132   - select["emin"] = emin
133   - select["emax"] = emax
134   - select["tmin"] = tmin
135   - select["tmax"] = tmax
136   - select["debug"] = debug
  159 + select['inobs'] = 'obs.xml'
  160 + select['outobs'] = 'obs_selected.xml'
  161 + select['ra'] = ra
  162 + select['dec'] = dec
  163 + select['rad'] = rad
  164 + select['emin'] = emin
  165 + select['emax'] = emax
  166 + select['tmin'] = tmin
  167 + select['tmax'] = tmax
  168 + select['debug'] = debug
137 169 select.execute()
138 170  
139 171 # Perform maximum likelihood fitting
140 172 like = ctools.ctlike()
141   - like["inobs"] = "obs_selected.xml"
142   - like["inmodel"] = model
143   - like["outmodel"] = "fit_results.xml"
144   - like["caldb"] = caldb
145   - like["irf"] = irf
146   - like["debug"] = True # Switch this always on for results in console
  173 + like['inobs'] = 'obs_selected.xml'
  174 + like['inmodel'] = model
  175 + like['outmodel'] = 'fit_results.xml'
  176 + like['caldb'] = caldb
  177 + like['irf'] = irf
  178 + like['debug'] = True # Switch this always on for results in console
147 179 like.execute()
148 180  
149 181 # Return
... ... @@ -156,9 +188,9 @@ def run_pipeline(obs, ra=83.63, dec=22.01, rad=3.0,
156 188 if __name__ == '__main__':
157 189  
158 190 # Dump header
159   - print("********************************************")
160   - print("* CTA unbinned analysis pipeline *")
161   - print("********************************************")
  191 + print('********************************************')
  192 + print('* CTA unbinned analysis pipeline *')
  193 + print('********************************************')
162 194  
163 195 # Setup observations
164 196 obs = setup_observations()
... ...
examples/pipeline_unbinned_mem.py
1 1 #! /usr/bin/env python
2 2 # ==========================================================================
3   -# This script illustrates how to perform an unbinned CTA analysis based on
4   -# simulated CTA data. You may use and adapt this script to implement your
5   -# own pipeline.
  3 +# Perform unbinned in-memory analysis of simulated CTA data
6 4 #
7   -# Usage:
8   -# ./pipeline_unbinned_mem.py
9   -#
10   -# ==========================================================================
11   -#
12   -# Copyright (C) 2015 Juergen Knoedlseder
  5 +# Copyright (C) 2015-2016 Juergen Knoedlseder
13 6 #
14 7 # This program is free software: you can redistribute it and/or modify
15 8 # it under the terms of the GNU General Public License as published by
... ... @@ -33,25 +26,41 @@ from cscripts import obsutils
33 26 # ================== #
34 27 # Setup observations #
35 28 # ================== #
36   -def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
  29 +def setup_observations(pattern='four', ra=83.63, dec=22.01, offset=1.5,
37 30 emin=0.1, emax=100.0, rad=5.0, duration=180.0,
38   - deadc=0.95,
39   - caldb="prod2", irf="South_50h"):
  31 + deadc=0.95, caldb='prod2', irf='South_0.5h'):
40 32 """
41   - Returns an observation container.
42   -
43   - Keywords:
44   - pattern - Pointing pattern, either "single" or "four"
45   - ra - RA of pattern centre [deg] (default: 83.6331)
46   - dec - DEC of pattern centre [deg] (default: 22.0145)
47   - offset - Offset between observations of pattern [deg] (default: 1.5)
48   - emin - Minimum energy [TeV] (default: 0.1)
49   - emax - Maximum energy [TeV] (default: 100.0)
50   - rad - ROI radius used for analysis [deg] (default: 5.0)
51   - duration - Duration of one CTA observation [seconds] (default: 1800.0)
52   - deadc - Deadtime correction factor (default: 0.95)
53   - caldb - Calibration database path (default: "dummy")
54   - irf - Instrument response function (default: cta_dummy_irf)
  33 + Returns an observation container
  34 +
  35 + Parameters
  36 + ----------
  37 + pattern : str, optional
  38 + Pointing pattern, either 'single' or 'four'
  39 + ra : float, optional
  40 + Right Ascension of pattern centre (deg)
  41 + dec : float, optional
  42 + Declination of pattern centre (deg)
  43 + offset : float, optional
  44 + Offset between observations of pattern (deg)
  45 + emin : float, optional
  46 + Minimum energy (TeV)
  47 + emax : float, optional
  48 + Maximum energy (TeV)
  49 + rad : float, optional
  50 + ROI radius used for analysis (deg)
  51 + duration : float, optional
  52 + Duration of one CTA observation (s)
  53 + deadc : float, optional
  54 + Deadtime correction factor
  55 + caldb : str, optional
  56 + Calibration database path
  57 + irf : str, optional
  58 + Instrument response function
  59 +
  60 + Returns
  61 + -------
  62 + obs : `~gammalib.GObservations`
  63 + Observation container
55 64 """
56 65 # Set list of observations
57 66 obs_def_list = obsutils.set_obs_patterns(pattern,
... ... @@ -75,12 +84,21 @@ def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5,
75 84 # =========== #
76 85 # Setup model #
77 86 # =========== #
78   -def setup_model(obs, model="data/crab.xml"):
  87 +def setup_model(obs, model='data/crab.xml'):
79 88 """
80   - Setup model for analysis.
81   -
82   - Keywords:
83   - model - Model Xml file
  89 + Setup model for analysis
  90 +
  91 + Parameters
  92 + ----------
  93 + obs : `~gammalib.GObservations`
  94 + Observation container
  95 + model : str, optional
  96 + Model definition XML file
  97 +
  98 + Returns
  99 + -------
  100 + obs : `~gammalib.GObservations`
  101 + Observation container
84 102 """
85 103 # Append model from file to observation container
86 104 obs.models(gammalib.GModels(model))
... ... @@ -97,38 +115,49 @@ def run_pipeline(obs, ra=83.63, dec=22.01, rad=3.0,
97 115 tmin=0.0, tmax=0.0,
98 116 debug=False):
99 117 """
100   - Simulation and unbinned analysis pipeline.
101   -
102   - Keywords:
103   - ra - RA of cube centre [deg] (default: 83.63)
104   - dec - DEC of cube centre [deg] (default: 22.01)
105   - rad - Selection radius [deg] (default: 3.0)
106   - emin - Minimum energy of cube [TeV] (default: 0.1)
107   - emax - Maximum energy of cube [TeV] (default: 100.0)
108   - tmin - Start time [MET] (default: 0.0)
109   - tmax - Stop time [MET] (default: 0.0)
110   - debug - Enable debugging (default: False)
  118 + Simulation and binned analysis pipeline
  119 +
  120 + Parameters
  121 + ----------
  122 + obs : `~gammalib.GObservations`
  123 + Observation container
  124 + ra : float, optional
  125 + Right Ascension of Region of Interest centre (deg)
  126 + dec : float, optional
  127 + Declination of Region of Interest centre (deg)
  128 + rad : float, optional
  129 + Radius of Region of Interest (deg)
  130 + emin : float, optional
  131 + Minimum energy (TeV)
  132 + emax : float, optional
  133 + Maximum energy (TeV)
  134 + tmin : float, optional
  135 + Start time (s)
  136 + tmax : float, optional
  137 + Stop time (s)
  138 + debug : bool, optional
  139 + Debug function
111 140 """
112 141 # Simulate events
113 142 sim = ctools.ctobssim(obs)
114   - sim["debug"] = debug
  143 + sim['debug'] = debug
115 144 sim.run()
116 145  
117 146 # Select events
118 147 select = ctools.ctselect(sim.obs())
119   - select["ra"] = ra
120   - select["dec"] = dec
121   - select["rad"] = rad
122   - select["emin"] = emin
123   - select["emax"] = emax
124   - select["tmin"] = tmin
125   - select["tmax"] = tmax
126   - select["debug"] = debug
  148 + select['ra'] = ra
  149 + select['dec'] = dec
  150 + select['rad'] = rad
  151 + select['emin'] = emin
  152 + select['emax'] = emax
  153 + select['tmin'] = tmin
  154 + select['tmax'] = tmax
  155 + select['debug'] = debug
127 156 select.run()
128 157  
129 158 # Perform maximum likelihood fitting
130 159 like = ctools.ctlike(select.obs())
131   - like["debug"] = True # Switch this always on for results in console
  160 + like['debug'] = True # Switch this always on for results in console
132 161 like.run()
133 162  
134 163 # Return
... ... @@ -141,9 +170,9 @@ def run_pipeline(obs, ra=83.63, dec=22.01, rad=3.0,
141 170 if __name__ == '__main__':
142 171  
143 172 # Dump header
144   - print("********************************************")
145   - print("* CTA unbinned analysis pipeline *")
146   - print("********************************************")
  173 + print('********************************************')
  174 + print('* CTA unbinned analysis pipeline *')
  175 + print('********************************************')
147 176  
148 177 # Setup observations
149 178 obs = setup_observations()
... ...