Commit f748897372c220551364d9bce4e0a760e28b5843

Authored by Michael Mayer
2 parents 8ac139ce c4bf507e

Merge branch 'devel' of https://cta-gitlab.irap.omp.eu/ctools/ctools into 1646-write-iact-docs

Showing 89 changed files with 973 additions and 344 deletions
ChangeLog
1   -2016-02-17 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu>
  1 +2016-02-24 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu>
2 2  
3 3 * Version 1.1.0 released
4 4 ========================
5 5  
  6 + Add publish() methods to tools producing images (#1710)
  7 + Read ahead output filename in cterror (#1700)
6 8 Subdivide simulation energy range in ctobssim (#1673)
7 9 Delete existing events before simulation in ctobssim (#1663)
8 10 Add csiactcopy script (#1661)
... ...
... ... @@ -2,7 +2,7 @@ New Features and Important Changes in ctools 1.1.0
2 2  
3 3 Author(s) : Juergen Knoedlseder
4 4  
5   -17 February 2016
  5 +24 February 2016
6 6  
7 7  
8 8 1. Introduction
... ... @@ -81,7 +81,8 @@ Intervals) extensions.
81 81  
82 82 7. ctbin - CTA event binning
83 83 ----------------------------
84   -None
  84 +Add publish() method to publish the counts cube via a SAMP Hub to Virtual
  85 +Observatory interoperable tools (e.g. Aladin).
85 86  
86 87  
87 88 8. ctlike - Maximum likelihood fitting
... ... @@ -89,24 +90,28 @@ None
89 90 None
90 91  
91 92  
92   -9. cttsmap - Generation of Test Statistics map
93   -----------------------------------------------
94   -None
  93 +9. cttsmap - Generation of Test Statistic map
  94 +---------------------------------------------
  95 +Add publish() method to publish the Test Statistic map via a SAMP Hub to
  96 +Virtual Observatory interoperable tools (e.g. Aladin).
95 97  
96 98  
97 99 10. ctskymap - CTA sky mapping
98 100 ------------------------------
99   -None
  101 +Add publish() method to publish the sky map via a SAMP Hub to Virtual
  102 +Observatory interoperable tools (e.g. Aladin).
100 103  
101 104  
102 105 11. ctmodel - CTA counts cube modelling
103 106 ---------------------------------------
104   -None
  107 +Add publish() method to publish the model cube via a SAMP Hub to Virtual
  108 +Observatory interoperable tools (e.g. Aladin).
105 109  
106 110  
107 111 12. ctexpcube - CTA exposure cube generation
108 112 --------------------------------------------
109   -None
  113 +Add publish() method to publish the exposure cube via a SAMP Hub to
  114 +Virtual Observatory interoperable tools (e.g. Aladin).
110 115  
111 116  
112 117 13. ctpsfcube - CTA point spread function cube generation
... ... @@ -116,12 +121,14 @@ None
116 121  
117 122 14. ctbkgcube - CTA background cube generation
118 123 ----------------------------------------------
119   -None
  124 +Add publish() method to publish the background cube via a SAMP Hub to
  125 +Virtual Observatory interoperable tools (e.g. Aladin).
120 126  
121 127  
122 128 15. ctcubemask - CTA cube filtering
123 129 -----------------------------------
124   -None
  130 +Add publish() method to publish the masked counts cube via a SAMP Hub
  131 +to Virtual Observatory interoperable tools (e.g. Aladin).
125 132  
126 133  
127 134 16. ctbutterfly - Generate butterfly diagrams
... ... @@ -136,7 +143,8 @@ None
136 143  
137 144 18. cterror - Likelihood profile error computation
138 145 --------------------------------------------------
139   -None
  146 +The output filename is now read ahead in case that the tool is executed
  147 +(#1700).
140 148  
141 149  
142 150 19. cscripts
... ... @@ -144,6 +152,9 @@ None
144 152 Added the csiactcopy script that copies IACT data from a remote machine to
145 153 the user's machine (#1661).
146 154  
  155 +Add csresmap::publish() method to publish the residual map via a SAMP Hub
  156 +to Virtual Observatory interoperable tools (e.g. Aladin).
  157 +
147 158  
148 159 20. Examples
149 160 ------------
... ...
cscripts/csresmap.py
... ... @@ -36,18 +36,19 @@ class csresmap(ctools.cscript):
36 36 """
37 37 Constructor.
38 38 """
39   -
40 39 # Set name
41 40 self.name = "csresmap"
42   - self.version = "1.0.0"
  41 + self.version = "1.1.0"
43 42  
44 43 # Initialise some members
45 44 self.obs = None
46 45 self.algorithm = "SUB"
47 46 self.resmap = None
48 47 self.m_modcube = "None"
  48 + self.m_outmap = "None"
49 49 self.m_use_maps = False
50 50 self.m_skip_binning = False
  51 + self.m_publish = False
51 52  
52 53 # Initialise some members
53 54 if len(argv) > 0 and isinstance(argv[0],gammalib.GObservations):
... ... @@ -126,6 +127,7 @@ class csresmap(ctools.cscript):
126 127 pars.append(gammalib.GApplicationPar("nypix","i","a","200","","","Size of the Y axis in pixels"))
127 128 pars.append(gammalib.GApplicationPar("binsz","r","a","0.02","","","Pixel size (deg/pixel)"))
128 129 pars.append(gammalib.GApplicationPar("algorithm","s","a","SUBDIV","SUB|SUBDIV|SUBDIVSQRT","","Residual map computation algorithm"))
  130 + pars.append(gammalib.GApplicationPar("publish","b","h","no","","","Publish residual map on VO Hub?"))
129 131 pars.append_standard()
130 132 pars.append(gammalib.GApplicationPar("logfile","f","h","csresmap.log","","","Log filename"))
131 133 pars.save(parfile)
... ... @@ -193,18 +195,22 @@ class csresmap(ctools.cscript):
193 195 self.m_binsz = self["binsz"].real()
194 196  
195 197 # Read energy dispersion flag
196   - self.m_edisp = self["edisp"].boolean()
  198 + self.m_edisp = self["edisp"].boolean()
197 199  
198   - # Read necessary parameters
199   - self.m_outfile = self["outmap"].filename()
  200 + # Read algorithm
200 201 self.m_algorithm = self["algorithm"].string()
201 202  
202   - # Set some fixed parameters
  203 + # Read standard parameters
  204 + self.m_publish = self["publish"].boolean()
203 205 self.m_log = False # Logging in client tools
204 206 self.m_chatter = self["chatter"].integer()
205 207 self.m_clobber = self["clobber"].boolean()
206 208 self.m_debug = self["debug"].boolean()
207 209  
  210 + # Read ahead output parameters
  211 + if (self.read_ahead()):
  212 + self.m_outmap = self["outmap"].filename()
  213 +
208 214 # Return
209 215 return
210 216  
... ... @@ -222,11 +228,64 @@ class csresmap(ctools.cscript):
222 228 """
223 229 Execute the script.
224 230 """
  231 + # Read ahead output parameters
  232 + self.read_ahead(True)
  233 +
225 234 # Run the script
226 235 self.run()
227 236  
228 237 # Save residual map
229   - self.resmap.save(self.m_outfile, self.m_clobber)
  238 + self.save()
  239 +
  240 + # Return
  241 + return
  242 +
  243 + def save(self):
  244 + """
  245 + Save residual map.
  246 + """
  247 + # Write header
  248 + if self.logTerse():
  249 + self.log("\n")
  250 + self.log.header1("Save residual map")
  251 +
  252 + # Continue only filename and residual map are valid
  253 + if self.m_outmap != "None" and self.resmap != None:
  254 +
  255 + # Log file name
  256 + if self.logTerse():
  257 + self.log("Save residual map into \""+self.m_outmap+"\".\n")
  258 +
  259 + # Save residual map
  260 + self.resmap.save(self.m_outmap, self.m_clobber)
  261 +
  262 + # Return
  263 + return
  264 +
  265 + def publish(self, name=""):
  266 + """
  267 + Publish residual map.
  268 + """
  269 + # Write header
  270 + if self.logTerse():
  271 + self.log("\n")
  272 + self.log.header1("Publish sky map")
  273 +
  274 + # Continue only if residual map is valid
  275 + if self.resmap != None:
  276 +
  277 + # Set default name is user name is empty
  278 + if not name:
  279 + user_name = self.name
  280 + else:
  281 + user_name = name
  282 +
  283 + # Log map name
  284 + if self.logTerse():
  285 + self.log("Publish residual map \""+user_name+"\".\n")
  286 +
  287 + # Publish map
  288 + self.resmap.publish(user_name)
230 289  
231 290 # Return
232 291 return
... ... @@ -353,6 +412,10 @@ class csresmap(ctools.cscript):
353 412 # Raise error if algorithm is unkown
354 413 raise TypeError("Algorithm \""+self.m_algorithm+"\" not known")
355 414  
  415 + # Optionally publish map
  416 + if self.m_publish:
  417 + self.publish()
  418 +
356 419 # Return
357 420 return
358 421  
... ...
doc/source/reference_manual/cscaldb.rst
... ... @@ -36,7 +36,7 @@ Standard parameters
36 36 chatter = 4: detailed report about the task execution
37 37  
38 38 ``(clobber = yes) [boolean]``
39   - Specifies whether an existing output counts cube should be overwritten.
  39 + Specifies whether an existing output file should be overwritten.
40 40  
41 41 ``(debug = no) [boolean]``
42 42 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csfindobs.rst
... ... @@ -80,7 +80,7 @@ Standard parameters
80 80 chatter = 4: detailed report about the task execution
81 81  
82 82 ``(clobber = yes) [boolean]``
83   - Specifies whether an existing output counts cube should be overwritten.
  83 + Specifies whether an existing output runlist should be overwritten.
84 84  
85 85 ``(debug = no) [boolean]``
86 86 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csiactcopy.rst
... ... @@ -60,7 +60,7 @@ Standard parameters
60 60 chatter = 4: detailed report about the task execution
61 61  
62 62 ``(clobber = yes) [boolean]``
63   - Specifies whether an existing output counts cube should be overwritten.
  63 + Specifies whether existing output files should be overwritten.
64 64  
65 65 ``(debug = no) [boolean]``
66 66 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csiactdata.rst
... ... @@ -44,7 +44,7 @@ Standard parameters
44 44 chatter = 4: detailed report about the task execution
45 45  
46 46 ``(clobber = yes) [boolean]``
47   - Specifies whether an existing output counts cube should be overwritten.
  47 + Specifies whether existing output files should be overwritten.
48 48  
49 49 ``(debug = no) [boolean]``
50 50 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csiactobs.rst
... ... @@ -124,7 +124,7 @@ Standard parameters
124 124 chatter = 4: detailed report about the task execution
125 125  
126 126 ``(clobber = yes) [boolean]``
127   - Specifies whether an existing output counts cube should be overwritten.
  127 + Specifies whether existing output files should be overwritten.
128 128  
129 129 ``(debug = no) [boolean]``
130 130 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/cslightcrv.rst
... ... @@ -131,7 +131,7 @@ Standard parameters
131 131 chatter = 4: detailed report about the task execution
132 132  
133 133 ``(clobber = yes) [boolean]``
134   - Specifies whether an existing output counts cube should be overwritten.
  134 + Specifies whether an existing source spectrum output file should be overwritten.
135 135  
136 136 ``(debug = no) [boolean]``
137 137 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csmodelinfo.rst
... ... @@ -83,7 +83,7 @@ Standard parameters
83 83 chatter = 4: detailed report about the task execution
84 84  
85 85 ``(clobber = yes) [boolean]``
86   - Specifies whether an existing output counts cube should be overwritten.
  86 + Specifies whether existing output files should be overwritten.
87 87  
88 88 ``(debug = no) [boolean]``
89 89 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csmodelmerge.rst
... ... @@ -49,7 +49,7 @@ Standard parameters
49 49 chatter = 4: detailed report about the task execution
50 50  
51 51 ``(clobber = yes) [boolean]``
52   - Specifies whether an existing output counts cube should be overwritten.
  52 + Specifies whether an existing output model file should be overwritten.
53 53  
54 54 ``(debug = no) [boolean]``
55 55 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csobs2caldb.rst
... ... @@ -54,7 +54,7 @@ Standard parameters
54 54 chatter = 4: detailed report about the task execution
55 55  
56 56 ``(clobber = yes) [boolean]``
57   - Specifies whether an existing output counts cube should be overwritten.
  57 + Specifies whether an existing output file should be overwritten.
58 58  
59 59 ``(debug = no) [boolean]``
60 60 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csobsdef.rst
... ... @@ -97,7 +97,7 @@ Standard parameters
97 97 chatter = 4: detailed report about the task execution
98 98  
99 99 ``(clobber = yes) [boolean]``
100   - Specifies whether an existing output counts cube should be overwritten.
  100 + Specifies whether an existing Observation Definition XML file should be overwritten.
101 101  
102 102 ``(debug = no) [boolean]``
103 103 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csobsinfo.rst
... ... @@ -70,7 +70,7 @@ Standard parameters
70 70 chatter = 4: detailed report about the task execution
71 71  
72 72 ``(clobber = yes) [boolean]``
73   - Specifies whether an existing output counts cube should be overwritten.
  73 + Specifies whether an existing output file should be overwritten.
74 74  
75 75 ``(debug = no) [boolean]``
76 76 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/cspull.rst
... ... @@ -121,7 +121,7 @@ Standard parameters
121 121 chatter = 4: detailed report about the task execution
122 122  
123 123 ``(clobber = yes) [boolean]``
124   - Specifies whether an existing output counts cube should be overwritten.
  124 + Specifies whether an existing output file should be overwritten.
125 125  
126 126 ``(debug = no) [boolean]``
127 127 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csresmap.rst
... ... @@ -101,6 +101,9 @@ General parameters
101 101 Standard parameters
102 102 -------------------
103 103  
  104 +``(publish = no) [boolean]``
  105 + Specifies whether the residual map should be published on VO Hub.
  106 +
104 107 ``(chatter = 2) [integer]``
105 108 Verbosity of the executable:
106 109 chatter = 0: no information will be logged
... ... @@ -114,7 +117,7 @@ Standard parameters
114 117 chatter = 4: detailed report about the task execution
115 118  
116 119 ``(clobber = yes) [boolean]``
117   - Specifies whether an existing output counts cube should be overwritten.
  120 + Specifies whether an existing residual map file should be overwritten.
118 121  
119 122 ``(debug = no) [boolean]``
120 123 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/cssens.rst
... ... @@ -120,7 +120,7 @@ Standard parameters
120 120 chatter = 4: detailed report about the task execution
121 121  
122 122 ``(clobber = yes) [boolean]``
123   - Specifies whether an existing output counts cube should be overwritten.
  123 + Specifies whether an existing output file should be overwritten.
124 124  
125 125 ``(debug = no) [boolean]``
126 126 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/csspec.rst
... ... @@ -123,7 +123,7 @@ Standard parameters
123 123 chatter = 4: detailed report about the task execution
124 124  
125 125 ``(clobber = yes) [boolean]``
126   - Specifies whether an existing output counts cube should be overwritten.
  126 + Specifies whether an existing source spectrum output file should be overwritten.
127 127  
128 128 ``(debug = no) [boolean]``
129 129 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/cstsdist.rst
... ... @@ -122,7 +122,7 @@ Standard parameters
122 122 chatter = 4: detailed report about the task execution
123 123  
124 124 ``(clobber = yes) [boolean]``
125   - Specifies whether an existing output counts cube should be overwritten.
  125 + Specifies whether an existing output file should be overwritten.
126 126  
127 127 ``(debug = no) [boolean]``
128 128 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/cstsmapmerge.rst
... ... @@ -54,7 +54,7 @@ Standard parameters
54 54 chatter = 4: detailed report about the task execution
55 55  
56 56 ``(clobber = yes) [boolean]``
57   - Specifies whether an existing output counts cube should be overwritten.
  57 + Specifies whether an existing output TS map file should be overwritten.
58 58  
59 59 ``(debug = no) [boolean]``
60 60 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctbin.rst
... ... @@ -78,6 +78,9 @@ General parameters
78 78 Standard parameters
79 79 -------------------
80 80  
  81 +``(publish = no) [boolean]``
  82 + Specifies whether the counts cube should be published on VO Hub.
  83 +
81 84 ``(chatter = 2) [integer]``
82 85 Verbosity of the executable:
83 86 chatter = 0: no information will be logged
... ... @@ -91,7 +94,7 @@ Standard parameters
91 94 chatter = 4: detailed report about the task execution
92 95  
93 96 ``(clobber = yes) [boolean]``
94   - Specifies whether an existing output counts cube should be overwritten.
  97 + Specifies whether an existing output counts cube file should be overwritten.
95 98  
96 99 ``(debug = no) [boolean]``
97 100 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctbkgcube.rst
... ... @@ -111,6 +111,9 @@ General parameters
111 111 Standard parameters
112 112 -------------------
113 113  
  114 +``(publish = no) [boolean]``
  115 + Specifies whether the background cube should be published on VO Hub.
  116 +
114 117 ``(chatter = 2) [integer]``
115 118 Verbosity of the executable:
116 119 chatter = 0: no information will be logged
... ... @@ -124,7 +127,7 @@ Standard parameters
124 127 chatter = 4: detailed report about the task execution
125 128  
126 129 ``(clobber = yes) [boolean]``
127   - Specifies whether an existing output counts cube should be overwritten.
  130 + Specifies whether an existing output background cube file should be overwritten.
128 131  
129 132 ``(debug = no) [boolean]``
130 133 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctbutterfly.rst
... ... @@ -111,7 +111,7 @@ Standard parameters
111 111 chatter = 4: detailed report about the task execution
112 112  
113 113 ``(clobber = yes) [boolean]``
114   - Specifies whether an existing output counts cube should be overwritten.
  114 + Specifies whether an existing output file should be overwritten.
115 115  
116 116 ``(debug = no) [boolean]``
117 117 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctcubemask.rst
... ... @@ -69,6 +69,9 @@ General parameters
69 69 Standard parameters
70 70 -------------------
71 71  
  72 +``(publish = no) [boolean]``
  73 + Specifies whether the counts cube should be published on VO Hub.
  74 +
72 75 ``(chatter = 2) [integer]``
73 76 Verbosity of the executable:
74 77 chatter = 0: no information will be logged
... ... @@ -82,7 +85,7 @@ Standard parameters
82 85 chatter = 4: detailed report about the task execution
83 86  
84 87 ``(clobber = yes) [boolean]``
85   - Specifies whether an existing output counts cube should be overwritten.
  88 + Specifies whether an existing output counts cube file should be overwritten.
86 89  
87 90 ``(debug = no) [boolean]``
88 91 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/cterror.rst
... ... @@ -85,7 +85,7 @@ Standard parameters
85 85 chatter = 4: detailed report about the task execution
86 86  
87 87 ``(clobber = yes) [boolean]``
88   - Specifies whether an existing output counts cube should be overwritten.
  88 + Specifies whether an existing output file should be overwritten.
89 89  
90 90 ``(debug = no) [boolean]``
91 91 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctexpcube.rst
... ... @@ -105,6 +105,9 @@ General parameters
105 105 Standard parameters
106 106 -------------------
107 107  
  108 +``(publish = no) [boolean]``
  109 + Specifies whether the exposure cube should be published on VO Hub.
  110 +
108 111 ``(chatter = 2) [integer]``
109 112 Verbosity of the executable:
110 113 chatter = 0: no information will be logged
... ... @@ -118,7 +121,7 @@ Standard parameters
118 121 chatter = 4: detailed report about the task execution
119 122  
120 123 ``(clobber = yes) [boolean]``
121   - Specifies whether an existing output counts cube should be overwritten.
  124 + Specifies whether an existing output exposure cube file should be overwritten.
122 125  
123 126 ``(debug = no) [boolean]``
124 127 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctlike.rst
... ... @@ -111,7 +111,7 @@ Standard parameters
111 111 chatter = 4: detailed report about the task execution
112 112  
113 113 ``(clobber = yes) [boolean]``
114   - Specifies whether an existing output counts cube should be overwritten.
  114 + Specifies whether an existing output model file should be overwritten.
115 115  
116 116 ``(debug = no) [boolean]``
117 117 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctmodel.rst
... ... @@ -138,6 +138,9 @@ General parameters
138 138 Standard parameters
139 139 -------------------
140 140  
  141 +``(publish = no) [boolean]``
  142 + Specifies whether the model cube should be published on VO Hub.
  143 +
141 144 ``(chatter = 2) [integer]``
142 145 Verbosity of the executable:
143 146 chatter = 0: no information will be logged
... ... @@ -151,7 +154,7 @@ Standard parameters
151 154 chatter = 4: detailed report about the task execution
152 155  
153 156 ``(clobber = yes) [boolean]``
154   - Specifies whether an existing output counts cube should be overwritten.
  157 + Specifies whether an existing output model cube file should be overwritten.
155 158  
156 159 ``(debug = no) [boolean]``
157 160 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctobssim.rst
... ... @@ -119,7 +119,7 @@ Standard parameters
119 119 chatter = 4: detailed report about the task execution
120 120  
121 121 ``(clobber = yes) [boolean]``
122   - Specifies whether an existing output counts cube should be overwritten.
  122 + Specifies whether existing files should be overwritten.
123 123  
124 124 ``(debug = no) [boolean]``
125 125 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctpsfcube.rst
... ... @@ -122,7 +122,7 @@ Standard parameters
122 122 chatter = 4: detailed report about the task execution
123 123  
124 124 ``(clobber = yes) [boolean]``
125   - Specifies whether an existing output counts cube should be overwritten.
  125 + Specifies whether an existing output point spread function cube file should be overwritten.
126 126  
127 127 ``(debug = no) [boolean]``
128 128 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctselect.rst
... ... @@ -108,7 +108,7 @@ Standard parameters
108 108 chatter = 4: detailed report about the task execution
109 109  
110 110 ``(clobber = yes) [boolean]``
111   - Specifies whether an existing output counts cube should be overwritten.
  111 + Specifies whether existing output files should be overwritten.
112 112  
113 113 ``(debug = no) [boolean]``
114 114 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctskymap.rst
... ... @@ -60,6 +60,9 @@ General parameters
60 60 Standard parameters
61 61 -------------------
62 62  
  63 +``(publish = no) [boolean]``
  64 + Specifies whether the sky map should be published on VO Hub.
  65 +
63 66 ``(chatter = 2) [integer]``
64 67 Verbosity of the executable:
65 68 chatter = 0: no information will be logged
... ... @@ -73,7 +76,7 @@ Standard parameters
73 76 chatter = 4: detailed report about the task execution
74 77  
75 78 ``(clobber = yes) [boolean]``
76   - Specifies whether an existing output counts cube should be overwritten.
  79 + Specifies whether an existing output sky map file should be overwritten.
77 80  
78 81 ``(debug = no) [boolean]``
79 82 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/cttsmap.rst
... ... @@ -94,6 +94,9 @@ General parameters
94 94 Standard parameters
95 95 -------------------
96 96  
  97 +``(publish = no) [boolean]``
  98 + Specifies whether the TS map should be published on VO Hub.
  99 +
97 100 ``(chatter = 2) [integer]``
98 101 Verbosity of the executable:
99 102 chatter = 0: no information will be logged
... ... @@ -107,7 +110,7 @@ Standard parameters
107 110 chatter = 4: detailed report about the task execution
108 111  
109 112 ``(clobber = yes) [boolean]``
110   - Specifies whether an existing output counts cube should be overwritten.
  113 + Specifies whether an existing output TS map file should be overwritten.
111 114  
112 115 ``(debug = no) [boolean]``
113 116 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
doc/source/reference_manual/ctulimit.rst
... ... @@ -97,7 +97,7 @@ Standard parameters
97 97 chatter = 4: detailed report about the task execution
98 98  
99 99 ``(clobber = yes) [boolean]``
100   - Specifies whether an existing output counts cube should be overwritten.
  100 + Specifies whether an existing output file should be overwritten.
101 101  
102 102 ``(debug = no) [boolean]``
103 103 Enables debug mode. In debug mode the executable will dump any log file output to the console.
... ...
pyext/ctbin.i
1 1 /***************************************************************************
2 2 * ctbin - Event binning tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2014 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -47,6 +47,7 @@ public:
47 47 void clear(void);
48 48 void run(void);
49 49 void save(void);
  50 + void publish(const std::string& name = "");
50 51 const GObservations& obs(void) const;
51 52 GCTAEventCube cube(void) const;
52 53 };
... ...
pyext/ctbkgcube.i
1 1 /***************************************************************************
2 2 * ctbkgcube - Background cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Chia-Chun Lu *
  4 + * copyright (C) 2014-2016 by Chia-Chun Lu *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -47,6 +47,7 @@ public:
47 47 void clear(void);
48 48 void run(void);
49 49 void save(void);
  50 + void publish(const std::string& name = "");
50 51 const GCTACubeBackground& bkgcube(void) const;
51 52 const GModels& models(void) const;
52 53 };
... ...
pyext/ctcubemask.i
1 1 /***************************************************************************
2 2 * ctcubemask - Cube filter tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014 Chia-Chun Lu *
  4 + * copyright (C) 2014-2016 Chia-Chun Lu *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -47,6 +47,7 @@ public:
47 47 void clear(void);
48 48 void run(void);
49 49 void save(void);
  50 + void publish(const std::string& name = "");
50 51 const GObservations& obs(void) const;
51 52 };
52 53  
... ...
pyext/ctexpcube.i
1 1 /***************************************************************************
2 2 * ctexpcube - Exposure cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2014-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -47,6 +47,7 @@ public:
47 47 void clear(void);
48 48 void run(void);
49 49 void save(void);
  50 + void publish(const std::string& name = "");
50 51 const GCTACubeExposure& expcube(void) const;
51 52 };
52 53  
... ...
pyext/ctmodel.i
1 1 /***************************************************************************
2 2 * ctmodel - Model cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2012-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2012-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -47,6 +47,7 @@ public:
47 47 void clear(void);
48 48 void run(void);
49 49 void save(void);
  50 + void publish(const std::string& name = "");
50 51 const GObservations& obs(void) const;
51 52 const GCTAEventCube& cube(void) const;
52 53 void cube(const GCTAEventCube& cube);
... ...
pyext/ctool.i
... ... @@ -136,3 +136,14 @@ public:
136 136 virtual void save(void);
137 137 };
138 138  
  139 +
  140 +/***********************************************************************//**
  141 + * @brief ctool base class Python extension
  142 + ***************************************************************************/
  143 +%extend ctool {
  144 + void read_ahead(const bool& flag) {
  145 + self->m_read_ahead = flag;
  146 + return;
  147 + }
  148 +}
  149 +
... ...
pyext/ctskymap.i
1 1 /***************************************************************************
2 2 * ctskymap - Sky mapping tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2012-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2012-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -47,6 +47,7 @@ public:
47 47 void clear(void);
48 48 void run(void);
49 49 void save(void);
  50 + void publish(const std::string& name = "");
50 51 const GSkyMap& map(void) const;
51 52 };
52 53  
... ...
pyext/cttsmap.i
1 1 /***************************************************************************
2 2 * cttsmap - TS map calculation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Michael Mayer *
  4 + * copyright (C) 2014-2016 by Michael Mayer *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -47,6 +47,7 @@ public:
47 47 void clear(void);
48 48 void run(void);
49 49 void save(void);
  50 + void publish(const std::string& name = "");
50 51 const GObservations& obs(void) const;
51 52 const GSkyMap& tsmap(void) const;
52 53 };
... ...
src/ctbin/ctbin.cpp
1 1 /***************************************************************************
2 2 * ctbin - Event binning tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -302,6 +302,11 @@ void ctbin::run(void)
302 302 log << m_obs << std::endl;
303 303 }
304 304  
  305 + // Optionally publish counts cube
  306 + if (m_publish) {
  307 + publish();
  308 + }
  309 +
305 310 // Return
306 311 return;
307 312 }
... ... @@ -310,26 +315,21 @@ void ctbin::run(void)
310 315 /***********************************************************************//**
311 316 * @brief Save counts cube
312 317 *
313   - * This method saves the counts cube into a FITS file.
  318 + * Saves the counts cube into a FITS file.
314 319 ***************************************************************************/
315 320 void ctbin::save(void)
316 321 {
317 322 // Write header
318 323 if (logTerse()) {
319 324 log << std::endl;
320   - if (m_obs.size() > 1) {
321   - log.header1("Save observations");
322   - }
323   - else {
324   - log.header1("Save observation");
325   - }
  325 + log.header1("Save counts cube");
326 326 }
327 327  
328   - // Get output filename
  328 + // Get counts cube filename
329 329 m_outcube = (*this)["outcube"].filename();
330 330  
331 331 // Save only if filename is non-empty
332   - if (m_outcube.length() > 0) {
  332 + if (!m_outcube.is_empty()) {
333 333  
334 334 // Get CTA observation from observation container
335 335 GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]);
... ... @@ -337,9 +337,10 @@ void ctbin::save(void)
337 337 // Save only if observation is valid
338 338 if (obs != NULL) {
339 339  
340   - // Dump filename
  340 + // Log filename
341 341 if (logTerse()) {
342   - log << "Save \""+m_outcube+"\"" << std::endl;
  342 + log << "Save counts cube into file \""+m_outcube+"\".";
  343 + log << std::endl;
343 344 }
344 345  
345 346 // Save cube
... ... @@ -354,6 +355,38 @@ void ctbin::save(void)
354 355 }
355 356  
356 357  
  358 +/***********************************************************************//**
  359 + * @brief Publish counts cube
  360 + *
  361 + * @param[in] name Counts cube name.
  362 + ***************************************************************************/
  363 +void ctbin::publish(const std::string& name)
  364 +{
  365 + // Write header
  366 + if (logTerse()) {
  367 + log << std::endl;
  368 + log.header1("Publish counts cube");
  369 + }
  370 +
  371 + // Set default name is user name is empty
  372 + std::string user_name(name);
  373 + if (user_name.empty()) {
  374 + user_name = CTBIN_NAME;
  375 + }
  376 +
  377 + // Log filename
  378 + if (logTerse()) {
  379 + log << "Publish \""+user_name+"\" counts cube." << std::endl;
  380 + }
  381 +
  382 + // Publish counts cube
  383 + m_cube.publish(user_name);
  384 +
  385 + // Return
  386 + return;
  387 +}
  388 +
  389 +
357 390 /*==========================================================================
358 391 = =
359 392 = Private methods =
... ... @@ -367,7 +400,8 @@ void ctbin::init_members(void)
367 400 {
368 401 // Initialise members
369 402 m_outcube.clear();
370   - m_usepnt = false;
  403 + m_usepnt = false;
  404 + m_publish = false;
371 405  
372 406 // Initialise protected members
373 407 m_obs.clear();
... ... @@ -392,6 +426,7 @@ void ctbin::copy_members(const ctbin&amp; app)
392 426 // Copy attributes
393 427 m_outcube = app.m_outcube;
394 428 m_usepnt = app.m_usepnt;
  429 + m_publish = app.m_publish;
395 430  
396 431 // Copy protected members
397 432 m_obs = app.m_obs;
... ... @@ -452,6 +487,9 @@ void ctbin::get_parameters(void)
452 487 // Get energy boundaries
453 488 m_ebounds = cube.ebounds();
454 489  
  490 + // Get remaining parameters
  491 + m_publish = (*this)["publish"].boolean();
  492 +
455 493 // Optionally read ahead parameters so that they get correctly
456 494 // dumped into the log file
457 495 if (read_ahead()) {
... ...
src/ctbin/ctbin.hpp
1 1 /***************************************************************************
2 2 * ctbin - Event binning tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -34,7 +34,7 @@
34 34  
35 35 /* __Definitions _________________________________________________________ */
36 36 #define CTBIN_NAME "ctbin"
37   -#define CTBIN_VERSION "1.0.0"
  37 +#define CTBIN_VERSION "1.1.0"
38 38  
39 39  
40 40 /***********************************************************************//**
... ... @@ -78,6 +78,7 @@ public:
78 78 void clear(void);
79 79 void run(void);
80 80 void save(void);
  81 + void publish(const std::string& name = "");
81 82 const GObservations& obs(void) const;
82 83 GCTAEventCube cube(void) const;
83 84  
... ... @@ -91,8 +92,9 @@ protected:
91 92 void obs_cube(void);
92 93  
93 94 // User parameters
94   - std::string m_outcube; //!< Output counts map file
  95 + GFilename m_outcube; //!< Output counts map file name
95 96 bool m_usepnt; //!< Use pointing instead of xref/yref parameters
  97 + bool m_publish; //!< Publish counts cube?
96 98  
97 99 // Protected members
98 100 GObservations m_obs; //!< Observation container
... ...
src/ctbin/ctbin.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: ctbin.par #
8   -# Version: 1.0.0 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Jurgen Knodlseder #
11 11 # Jurgen.Knodlseder@irap.omp.eu #
... ... @@ -44,6 +44,7 @@ proj, s, a, &quot;CAR&quot;,AIT|AZP|CAR|MER|MOL|STG|TAN,, &quot;Projection method&quot;
44 44 #
45 45 # Standard parameters
46 46 #====================
  47 +publish, b, h, no,,, "Publish counts cube on VO Hub?"
47 48 chatter, i, h, 2,0,4, "Chattiness of output"
48 49 clobber, b, h, yes,,, "Overwrite existing output files with new output files?"
49 50 debug, b, h, no,,, "Debugging mode activated"
... ...
src/ctbkgcube/ctbkgcube.cpp
1 1 /***************************************************************************
2 2 * ctbkgcube - Background cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Chia-Chun Lu *
  4 + * copyright (C) 2014-2016 by Chia-Chun Lu *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -340,6 +340,11 @@ void ctbkgcube::run(void)
340 340 // Recover original models
341 341 m_obs.models(models_orig);
342 342  
  343 + // Optionally publish background cube
  344 + if (m_publish) {
  345 + publish();
  346 + }
  347 +
343 348 // Return
344 349 return;
345 350 }
... ... @@ -348,7 +353,8 @@ void ctbkgcube::run(void)
348 353 /***********************************************************************//**
349 354 * @brief Save background cube
350 355 *
351   - * Save the background cube into the file specified by the outfile parameter.
  356 + * Save the background cube into a FITS file and the output model into an
  357 + * XML file.
352 358 ***************************************************************************/
353 359 void ctbkgcube::save(void)
354 360 {
... ... @@ -358,21 +364,71 @@ void ctbkgcube::save(void)
358 364 log.header1("Save background cube");
359 365 }
360 366  
361   - // Get output filenames
362   - std::string outfile = (*this)["outcube"].filename();
363   - std::string outmodel = (*this)["outmodel"].filename();
  367 + // Get background cube and model file names
  368 + m_outcube = (*this)["outcube"].filename();
  369 + m_outmodel = (*this)["outmodel"].filename();
  370 +
  371 + // Save only if filename is non-empty
  372 + if (!m_outcube.is_empty()) {
364 373  
365   - // Save background cube
366   - m_background.save(outfile, clobber());
  374 + // Log filename
  375 + if (logTerse()) {
  376 + log << "Save background cube into file \""+m_outcube+"\".";
  377 + log << std::endl;
  378 + }
  379 +
  380 + // Save background cube
  381 + m_background.save(m_outcube, clobber());
  382 +
  383 + }
367 384  
368 385 // Write output models if filename is valid
369   - if ((outmodel.length() > 0) && (gammalib::tolower(outmodel) != "none")) {
  386 + if ((!m_outmodel.is_empty()) &&
  387 + (gammalib::tolower(m_outmodel.url()) != "none")) {
  388 +
  389 + // Log filename
  390 + if (logTerse()) {
  391 + log << "Save model into file \""+m_outmodel.url()+"\".";
  392 + log << std::endl;
  393 + }
  394 +
  395 + // Save output model for stacked analyses
  396 + m_outmdl.save(m_outmodel.url());
  397 +
  398 + }
  399 +
  400 + // Return
  401 + return;
  402 +}
370 403  
371   - // Save output model for binned analyses
372   - m_outmdl.save(outmodel);
373 404  
  405 +/***********************************************************************//**
  406 + * @brief Publish background cube
  407 + *
  408 + * @param[in] name Background cube name.
  409 + ***************************************************************************/
  410 +void ctbkgcube::publish(const std::string& name)
  411 +{
  412 + // Write header
  413 + if (logTerse()) {
  414 + log << std::endl;
  415 + log.header1("Publish background cube");
  416 + }
  417 +
  418 + // Set default name is user name is empty
  419 + std::string user_name(name);
  420 + if (user_name.empty()) {
  421 + user_name = CTBKGCUBE_NAME;
  422 + }
  423 +
  424 + // Log filename
  425 + if (logTerse()) {
  426 + log << "Publish \""+user_name+"\" background cube." << std::endl;
374 427 }
375 428  
  429 + // Publish exposure cube
  430 + m_background.cube().publish(user_name);
  431 +
376 432 // Return
377 433 return;
378 434 }
... ... @@ -392,6 +448,7 @@ void ctbkgcube::init_members(void)
392 448 // Initialise members
393 449 m_outcube.clear();
394 450 m_outmodel.clear();
  451 + m_publish = false;
395 452 m_obs.clear();
396 453 m_background.clear();
397 454 m_bkgmdl.clear();
... ... @@ -412,6 +469,7 @@ void ctbkgcube::copy_members(const ctbkgcube&amp; app)
412 469 // Copy members
413 470 m_outmodel = app.m_outmodel;
414 471 m_outcube = app.m_outcube;
  472 + m_publish = app.m_publish;
415 473 m_obs = app.m_obs;
416 474 m_background = app.m_background;
417 475 m_bkgmdl = app.m_bkgmdl;
... ... @@ -499,6 +557,9 @@ void ctbkgcube::get_parameters(void)
499 557 m_obs.models(models);
500 558 }
501 559  
  560 + // Get remaining parameters
  561 + m_publish = (*this)["publish"].boolean();
  562 +
502 563 // Read output filenames (if needed)
503 564 if (read_ahead()) {
504 565 m_outcube = (*this)["outcube"].filename();
... ...
src/ctbkgcube/ctbkgcube.hpp
1 1 /***************************************************************************
2 2 * ctbkgcube - Background cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Chia-Chun Lu *
  4 + * copyright (C) 2014-2016 by Chia-Chun Lu *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -34,7 +34,7 @@
34 34  
35 35 /* __Definitions _________________________________________________________ */
36 36 #define CTBKGCUBE_NAME "ctbkgcube"
37   -#define CTBKGCUBE_VERSION "1.0.0"
  37 +#define CTBKGCUBE_VERSION "1.1.0"
38 38  
39 39  
40 40 /***********************************************************************//**
... ... @@ -59,6 +59,7 @@ public:
59 59 void clear(void);
60 60 void run(void);
61 61 void save(void);
  62 + void publish(const std::string& name = "");
62 63 const GCTACubeBackground& bkgcube(void) const;
63 64 const GModels& models(void) const;
64 65  
... ... @@ -70,11 +71,14 @@ protected:
70 71 void get_parameters(void);
71 72 void fill_cube(GCTAObservation* obs);
72 73  
  74 + // User parameters
  75 + GFilename m_outcube; //!< Filename of output cube
  76 + GFilename m_outmodel; //!< Filename of output XML model
  77 + bool m_publish; //!< Publish background cube?
  78 +
73 79 // Protected members
74   - std::string m_outcube; //!< Filename of output cube
75   - std::string m_outmodel; //!< Filename of output XML model
76 80 GObservations m_obs; //!< Observation container
77   - GCTACubeBackground m_background; //!< Background cube response
  81 + GCTACubeBackground m_background; //!< Background cube
78 82 GModels m_bkgmdl; //!< CTA background models
79 83 GModels m_outmdl; //!< Output models
80 84 };
... ...
src/ctbkgcube/ctbkgcube.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: ctbkgcube.par #
8   -# Version: 1.0.0 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Chia-Chun Lu #
11 11 # c.lu@mpi-hd.mpg.de #
... ... @@ -49,6 +49,7 @@ proj, s, a, &quot;CAR&quot;, AIT|AZP|CAR|MER|MOL|STG|TAN,, &quot;Projection method&quot;
49 49 #
50 50 # Standard parameters
51 51 #====================
  52 +publish, b, h, no,,, "Publish sky map on VO Hub?"
52 53 chatter, i, h, 2,0,4, "Chattiness of output"
53 54 clobber, b, h, yes,,, "Overwrite existing output files with new output files?"
54 55 debug, b, h, no,,, "Debugging mode activated"
... ...
src/ctbutterfly/ctbutterfly.cpp
1 1 /***************************************************************************
2 2 * ctbutterfly - butterfly calculation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Michael Mayer *
  4 + * copyright (C) 2014-2016 by Michael Mayer *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -501,25 +501,36 @@ void ctbutterfly::save(void)
501 501 // Write header
502 502 if (logTerse()) {
503 503 log << std::endl;
504   - log.header1("Save Butterfly to file");
  504 + log.header1("Save Butterfly diagram");
505 505 }
506 506  
507 507 // Get output filename
508 508 m_outfile = (*this)["outfile"].filename();
509 509  
510   - // Create CSV table with 4 columns
511   - GCsv table(m_energies.size(), 4);
  510 + // Save only if filename is non-empty
  511 + if (!m_outfile.is_empty()) {
512 512  
513   - // Fill CSV table
514   - for (int i = 0; i < m_energies.size(); ++i) {
515   - table.real(i, 0, m_energies[i]);
516   - table.real(i, 1, m_intensities[i]);
517   - table.real(i, 2, m_min_intensities[i]);
518   - table.real(i, 3, m_max_intensities[i]);
519   - }
  513 + // Log filename
  514 + if (logTerse()) {
  515 + log << "Save butterfly diagram into file \""+m_outfile+"\".";
  516 + log << std::endl;
  517 + }
  518 +
  519 + // Create CSV table with 4 columns
  520 + GCsv table(m_energies.size(), 4);
520 521  
521   - // Save CSV table
522   - table.save(m_outfile, " ", clobber());
  522 + // Fill CSV table
  523 + for (int i = 0; i < m_energies.size(); ++i) {
  524 + table.real(i, 0, m_energies[i]);
  525 + table.real(i, 1, m_intensities[i]);
  526 + table.real(i, 2, m_min_intensities[i]);
  527 + table.real(i, 3, m_max_intensities[i]);
  528 + }
  529 +
  530 + // Save CSV table
  531 + table.save(m_outfile, " ", clobber());
  532 +
  533 + }
523 534  
524 535 // Return
525 536 return;
... ...
src/ctbutterfly/ctbutterfly.hpp
1 1 /***************************************************************************
2 2 * ctbutterfly - butterfly calculation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Michael Mayer *
  4 + * copyright (C) 2014-2016 by Michael Mayer *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -34,7 +34,7 @@
34 34  
35 35 /* __Definitions _________________________________________________________ */
36 36 #define CTBUTTERFLY_NAME "ctbutterfly"
37   -#define CTBUTTERFLY_VERSION "1.0.0"
  37 +#define CTBUTTERFLY_VERSION "1.1.0"
38 38  
39 39  
40 40 /***********************************************************************//**
... ... @@ -95,7 +95,7 @@ protected:
95 95 bool m_apply_edisp; //!< Apply energy dispersion?
96 96 bool m_fit; //!< Do fit?
97 97 GEbounds m_ebounds; //!< Energy binning definition
98   - std::string m_outfile; //!< Output ascii file
  98 + GFilename m_outfile; //!< Output ASCII file name
99 99  
100 100 // Protected members
101 101 GOptimizerLM m_opt; //!< Optimizer
... ... @@ -107,6 +107,7 @@ protected:
107 107 std::vector<double> m_max_intensities; //!< Maximum intensities
108 108 };
109 109  
  110 +
110 111 /***********************************************************************//**
111 112 * @brief Return observation container
112 113 *
... ...
src/ctcubemask/ctcubemask.cpp
1 1 /***************************************************************************
2 2 * ctcubemask - Cube filter tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Chia-Chun Lu *
  4 + * copyright (C) 2014-2016 by Chia-Chun Lu *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -282,6 +282,11 @@ void ctcubemask::run(void)
282 282 log << m_obs << std::endl;
283 283 }
284 284  
  285 + // Optionally publish counts cube
  286 + if (m_publish) {
  287 + publish();
  288 + }
  289 +
285 290 // Return
286 291 return;
287 292 }
... ... @@ -312,15 +317,23 @@ void ctcubemask::save(void)
312 317 if (logTerse()) {
313 318 log << std::endl;
314 319 if (m_obs.size() > 1) {
315   - log.header1("Save observations");
  320 + log.header1("Save counts cubes");
316 321 }
317 322 else {
318   - log.header1("Save observation");
  323 + log.header1("Save counts cube");
319 324 }
320 325 }
321 326  
  327 + // Get counts cube filename
  328 + m_outcube = (*this)["outcube"].filename();
  329 +
322 330 // Case A: Save event file(s) and XML metadata information
323 331 if (m_use_xml) {
  332 +
  333 + // Get prefix
  334 + m_prefix = (*this)["prefix"].string();
  335 +
  336 + // Save XML
324 337 save_xml();
325 338 }
326 339  
... ... @@ -335,6 +348,52 @@ void ctcubemask::save(void)
335 348  
336 349  
337 350 /***********************************************************************//**
  351 + * @brief Publish counts cube
  352 + *
  353 + * @param[in] name Counts cube name.
  354 + *
  355 + * Publishes the first counts cube in the observation container on the VO
  356 + * Hub.
  357 + ***************************************************************************/
  358 +void ctcubemask::publish(const std::string& name)
  359 +{
  360 + // Write header
  361 + if (logTerse()) {
  362 + log << std::endl;
  363 + log.header1("Publish counts cube");
  364 + }
  365 +
  366 + // Set default name is user name is empty
  367 + std::string user_name(name);
  368 + if (user_name.empty()) {
  369 + user_name = CTCUBEMASK_NAME;
  370 + }
  371 +
  372 + // Get first CTA observation from observation container
  373 + GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]);
  374 + if (obs != NULL) {
  375 +
  376 + // Get counts cube
  377 + GCTAEventCube* cube = dynamic_cast<GCTAEventCube*>(obs->events());
  378 + if (cube != NULL) {
  379 +
  380 + // Log filename
  381 + if (logTerse()) {
  382 + log << "Publish \""+user_name+"\" counts cube." << std::endl;
  383 + }
  384 +
  385 + // Publish counts cube
  386 + cube->map().publish(user_name);
  387 +
  388 + }
  389 + }
  390 +
  391 + // Return
  392 + return;
  393 +}
  394 +
  395 +
  396 +/***********************************************************************//**
338 397 * @brief Get application parameters
339 398 *
340 399 * @exception GException::invalid_value
... ... @@ -402,10 +461,14 @@ void ctcubemask::get_parameters(void)
402 461 m_select_energy = false;
403 462 }
404 463  
  464 + // Get remaining parameters
  465 + m_publish = (*this)["publish"].boolean();
  466 +
405 467 // Optionally read ahead parameters so that they get correctly
406 468 // dumped into the log file
407 469 if (read_ahead()) {
408 470 m_outcube = (*this)["outcube"].filename();
  471 + m_prefix = (*this)["prefix"].string();
409 472 }
410 473  
411 474 // Return
... ... @@ -586,12 +649,13 @@ void ctcubemask::init_members(void)
586 649 m_regfile.clear();
587 650 m_outcube.clear();
588 651 m_prefix.clear();
589   - m_usepnt = false;
590   - m_ra = 0.0;
591   - m_dec = 0.0;
592   - m_rad = 0.0;
593   - m_emin = 0.0;
594   - m_emax = 0.0;
  652 + m_usepnt = false;
  653 + m_ra = 0.0;
  654 + m_dec = 0.0;
  655 + m_rad = 0.0;
  656 + m_emin = 0.0;
  657 + m_emax = 0.0;
  658 + m_publish = false;
595 659  
596 660 // Initialise protected members
597 661 m_obs.clear();
... ... @@ -621,6 +685,7 @@ void ctcubemask::copy_members(const ctcubemask&amp; app)
621 685 m_rad = app.m_rad;
622 686 m_emin = app.m_emin;
623 687 m_emax = app.m_emax;
  688 + m_publish = app.m_publish;
624 689  
625 690 // Copy protected members
626 691 m_obs = app.m_obs;
... ... @@ -698,21 +763,29 @@ std::string ctcubemask::set_outfile_name(const std::string&amp; filename) const
698 763  
699 764  
700 765 /***********************************************************************//**
701   - * @brief Save counts map in FITS format.
  766 + * @brief Save counts cube in FITS format.
702 767 *
703   - * Save the counts map as a FITS file. The filename of the FITS file is
  768 + * Save the counts cube as a FITS file. The filename of the FITS file is
704 769 * specified by the m_outfile member.
705 770 ***************************************************************************/
706 771 void ctcubemask::save_fits(void)
707 772 {
708   - // Get output filename
709   - m_outcube = (*this)["outcube"].filename();
  773 + // Save only if filename is non-empty
  774 + if (!m_outcube.is_empty()) {
  775 +
  776 + // Get CTA observation from observation container
  777 + GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]);
710 778  
711   - // Get CTA observation from observation container
712   - GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]);
  779 + // Log filename
  780 + if (logTerse()) {
  781 + log << "Save counts cube into file \""+m_outcube+"\".";
  782 + log << std::endl;
  783 + }
713 784  
714   - // Save event list
715   - save_counts_map(obs, m_outcube);
  785 + // Save event list
  786 + save_counts_map(obs, m_outcube);
  787 +
  788 + }
716 789  
717 790 // Return
718 791 return;
... ... @@ -732,12 +805,8 @@ void ctcubemask::save_fits(void)
732 805 ***************************************************************************/
733 806 void ctcubemask::save_xml(void)
734 807 {
735   - // Get output filename and prefix
736   - m_outcube = (*this)["m_outcube"].filename();
737   - m_prefix = (*this)["prefix"].string();
738   -
739 808 // Issue warning if output filename has no .xml suffix
740   - std::string suffix = gammalib::tolower(m_outcube.substr(m_outcube.length()-4,4));
  809 + std::string suffix = gammalib::tolower(m_outcube.url().substr(m_outcube.length()-4,4));
741 810 if (suffix != ".xml") {
742 811 log << "*** WARNING: Name of observation definition output file \""+
743 812 m_outcube+"\"" << std::endl;
... ... @@ -763,6 +832,12 @@ void ctcubemask::save_xml(void)
763 832 // Store output file name in observation
764 833 obs->eventfile(outfile);
765 834  
  835 + // Log filename
  836 + if (logTerse()) {
  837 + log << "Save counts cube into file \""+outfile+"\".";
  838 + log << std::endl;
  839 + }
  840 +
766 841 // Save event list
767 842 save_counts_map(obs, outfile);
768 843  
... ...
src/ctcubemask/ctcubemask.hpp
1 1 /***************************************************************************
2 2 * ctcubemask - Cube filter tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Chia-Chun Lu *
  4 + * copyright (C) 2014-2016 by Chia-Chun Lu *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -36,7 +36,7 @@
36 36  
37 37 /* __Definitions _________________________________________________________ */
38 38 #define CTCUBEMASK_NAME "ctcubemask"
39   -#define CTCUBEMASK_VERSION "1.0.0"
  39 +#define CTCUBEMASK_VERSION "1.1.0"
40 40  
41 41  
42 42 /***********************************************************************//**
... ... @@ -61,6 +61,7 @@ public:
61 61 void clear(void);
62 62 void run(void);
63 63 void save(void);
  64 + void publish(const std::string& name = "");
64 65 const GObservations& obs(void) const;
65 66  
66 67 protected:
... ... @@ -78,9 +79,8 @@ protected:
78 79 const std::string& outfile) const;
79 80  
80 81 // User parameters
81   - //std::string m_infile; //!< Input event list or XML file
82   - std::string m_regfile; //!< ds9 region file
83   - std::string m_outcube; //!< Output event list or XML file
  82 + GFilename m_regfile; //!< ds9 region file
  83 + GFilename m_outcube; //!< Output event list or XML file
84 84 std::string m_prefix; //!< Prefix for multiple counts maps
85 85 bool m_usepnt; //!< Use pointing instead of RA/DEC parameters
86 86 double m_ra; //!< RA of ROI centre
... ... @@ -88,6 +88,7 @@ protected:
88 88 double m_rad; //!< ROI radius
89 89 double m_emin; //!< Lower energy
90 90 double m_emax; //!< Upper energy
  91 + bool m_publish; //!< Publish counts cube?
91 92  
92 93 // Protected members
93 94 GObservations m_obs; //!< Observations container
... ...
src/ctcubemask/ctcubemask.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: ctcubemask.par #
8   -# Version: 1.0.0 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Chia-Chun Lu #
11 11 # c.lu@mpi-hd.mpg.de #
... ... @@ -17,7 +17,7 @@
17 17 #
18 18 # General parameters
19 19 #===================
20   -inobs, f, a, "cntmap.fits",,, "Input counts cube or observation definition XML file"
  20 +inobs, f, a, "cntcube.fits",,, "Input counts cube or observation definition XML file"
21 21 outcube, f, a, "filtered_cube.fits",,, "Output counts cube or observation definition XML file"
22 22 prefix, s, h, "filtered_",,, "Prefix for counts cube in observation definition XML file"
23 23  
... ... @@ -35,7 +35,9 @@ emax, r, a, 100.0,,, &quot;Upper energy limit (TeV)&quot;
35 35 #
36 36 # Standard parameters
37 37 #====================
  38 +publish, b, h, no,,, "Publish counts cube on VO Hub?"
38 39 chatter, i, h, 2,0,4, "Chattiness of output"
39 40 clobber, b, h, yes,,, "Overwrite existing output files with new output files?"
40 41 debug, b, h, no,,, "Debugging mode activated"
41 42 mode, s, h, "ql",,, "Mode of automatic parameters"
  43 +logfile, f, h, "ctcubemask.par.log",,, "Log filename"
... ...
src/cterror/cterror.cpp
1 1 /***************************************************************************
2 2 * cterror - Parameter error calculation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2015 by Florent Forest *
  4 + * copyright (C) 2015-2016 by Florent Forest *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -51,6 +51,8 @@
51 51  
52 52 /***********************************************************************//**
53 53 * @brief Void constructor
  54 + *
  55 + * Constructs an empty cterror tool.
54 56 ***************************************************************************/
55 57 cterror::cterror(void) : ctool(CTERROR_NAME, CTERROR_VERSION)
56 58 {
... ... @@ -67,8 +69,8 @@ cterror::cterror(void) : ctool(CTERROR_NAME, CTERROR_VERSION)
67 69 *
68 70 * param[in] obs Observation container.
69 71 *
70   - * This method creates an instance of the class by copying an existing
71   - * observations container.
  72 + * Constructs an instance of the cterror tool that will operate on the
  73 + * provided observation container.
72 74 ***************************************************************************/
73 75 cterror::cterror(const GObservations& obs) :
74 76 ctool(CTERROR_NAME, CTERROR_VERSION)
... ... @@ -90,6 +92,9 @@ cterror::cterror(const GObservations&amp; obs) :
90 92 *
91 93 * @param[in] argc Number of arguments in command line.
92 94 * @param[in] argv Array of command line arguments.
  95 + *
  96 + * Constructs an instance of the cterror tool that will parse user
  97 + * parameters that are provided as command line arguments.
93 98 ***************************************************************************/
94 99 cterror::cterror(int argc, char *argv[]) :
95 100 ctool(CTERROR_NAME, CTERROR_VERSION, argc, argv)
... ... @@ -106,6 +111,9 @@ cterror::cterror(int argc, char *argv[]) :
106 111 * @brief Copy constructor
107 112 *
108 113 * @param[in] app Application.
  114 + *
  115 + * Constructs an instance of the cterror tool by copying information from
  116 + * another ctulimit tool.
109 117 ***************************************************************************/
110 118 cterror::cterror(const cterror& app) : ctool(app)
111 119 {
... ... @@ -122,6 +130,8 @@ cterror::cterror(const cterror&amp; app) : ctool(app)
122 130  
123 131 /***********************************************************************//**
124 132 * @brief Destructor
  133 + *
  134 + * Destructs the cterror tool.
125 135 ***************************************************************************/
126 136 cterror::~cterror(void)
127 137 {
... ... @@ -144,6 +154,8 @@ cterror::~cterror(void)
144 154 *
145 155 * @param[in] app Application.
146 156 * @return Application.
  157 + *
  158 + * Assigns a cterror tool.
147 159 ***************************************************************************/
148 160 cterror& cterror::operator=(const cterror& app)
149 161 {
... ... @@ -177,6 +189,8 @@ cterror&amp; cterror::operator=(const cterror&amp; app)
177 189  
178 190 /***********************************************************************//**
179 191 * @brief Clear instance
  192 + *
  193 + * Resets the cterror tool to a clean initial state.
180 194 ***************************************************************************/
181 195 void cterror::clear(void)
182 196 {
... ... @@ -196,7 +210,9 @@ void cterror::clear(void)
196 210  
197 211  
198 212 /***********************************************************************//**
199   - * @brief Computes
  213 + * @brief Compute parameter errors using a likelihood profile method
  214 + *
  215 + * Computes the parameter errors using a likelihood profile method.
200 216 ***************************************************************************/
201 217 void cterror::run(void)
202 218 {
... ... @@ -381,9 +397,9 @@ void cterror::run(void)
381 397  
382 398  
383 399 /***********************************************************************//**
384   - * @brief Save source model
  400 + * @brief Save model
385 401 *
386   - * This method saves the soutce model to an XML file.
  402 + * Saves the model into an XML file.
387 403 ***************************************************************************/
388 404 void cterror::save(void)
389 405 {
... ... @@ -394,11 +410,21 @@ void cterror::save(void)
394 410 }
395 411  
396 412 // Get output filename
397   - std::string outmodel = (*this)["outmodel"].filename();
  413 + m_outmodel = (*this)["outmodel"].filename();
  414 +
  415 + // Save only if filename is non-empty
  416 + if (!m_outmodel.is_empty() &&
  417 + gammalib::toupper(m_outmodel.url()) != "NONE") {
  418 +
  419 + // Log filename
  420 + if (logTerse()) {
  421 + log << "Save errors into file \""+m_outmodel+"\".";
  422 + log << std::endl;
  423 + }
  424 +
  425 + // Write results out as XML model
  426 + m_obs.models().save(m_outmodel);
398 427  
399   - // Write results out as XML model
400   - if (gammalib::toupper(outmodel) != "NONE") {
401   - m_obs.models().save(outmodel);
402 428 }
403 429  
404 430 // Return
... ... @@ -419,6 +445,7 @@ void cterror::init_members(void)
419 445 {
420 446 // Initialise user parameters
421 447 m_srcname.clear();
  448 + m_outmodel.clear();
422 449 m_confidence = 0.68;
423 450 m_tol = 1.0e-3;
424 451 m_max_iter = 50;
... ... @@ -427,9 +454,9 @@ void cterror::init_members(void)
427 454 // Initialise protected members
428 455 m_obs.clear();
429 456 m_opt.clear();
430   - m_dlogL = 0.0;
431   - m_best_logL = 0.0;
432   - m_model_par = NULL;
  457 + m_dlogL = 0.0;
  458 + m_best_logL = 0.0;
  459 + m_model_par = NULL;
433 460 m_apply_edisp = false;
434 461  
435 462 // Set optimizer parameters
... ... @@ -449,10 +476,11 @@ void cterror::init_members(void)
449 476 void cterror::copy_members(const cterror& app)
450 477 {
451 478 // Copy user parameters
452   - m_srcname = app.m_srcname;
453   - m_confidence = app.m_confidence;
454   - m_tol = app.m_tol;
455   - m_max_iter = app.m_max_iter;
  479 + m_srcname = app.m_srcname;
  480 + m_outmodel = app.m_outmodel;
  481 + m_confidence = app.m_confidence;
  482 + m_tol = app.m_tol;
  483 + m_max_iter = app.m_max_iter;
456 484 m_apply_edisp = app.m_apply_edisp;
457 485  
458 486 // Copy protected members
... ... @@ -534,18 +562,24 @@ void cterror::get_parameters(void)
534 562 m_tol = (*this)["tol"].real();
535 563 m_max_iter = (*this)["max_iter"].integer();
536 564  
  565 + // Read ahead parameters that are only needed when the tool gets
  566 + // executed
  567 + if (read_ahead()) {
  568 + m_outmodel = (*this)["outmodel"].filename();
  569 + }
  570 +
537 571 // Return
538 572 return;
539 573 }
540 574  
541 575  
542 576 /***********************************************************************//**
543   - * @brief Performs error computation by using a bisection method
  577 + * @brief Calculate error using a bisection method
544 578 *
545 579 * @param[in] min Minimum parameter value
546 580 * @param[in] max Maximum parameter value
547 581 *
548   - * This method calculates the error using a bisection method.
  582 + * Calculates the error using a bisection method.
549 583 ***************************************************************************/
550 584 double cterror::error_bisection(const double& min, const double& max)
551 585 {
... ... @@ -667,8 +701,7 @@ double cterror::error_bisection(const double&amp; min, const double&amp; max)
667 701 * @param[in] value Parameter factor value
668 702 * @return Log-likelihood value
669 703 *
670   - * This method evaluates the log-likelihood as a function of the parameter
671   - * of interest.
  704 + * Evaluates the log-likelihood as a function of the parameter of interest.
672 705 ***************************************************************************/
673 706 double cterror::evaluate(const double& value)
674 707 {
... ...
src/cterror/cterror.hpp
1 1 /***************************************************************************
2 2 * cterror - Parameter error calculation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2015 by Florent Forest *
  4 + * copyright (C) 2015-2016 by Florent Forest *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -28,20 +28,20 @@
28 28 #define CTERROR_HPP
29 29  
30 30 /* __ Includes ___________________________________________________________ */
  31 +#include <string>
31 32 #include "GammaLib.hpp"
32 33 #include "GCTALib.hpp"
33 34 #include "ctool.hpp"
34 35  
35 36 /* __Definitions _________________________________________________________ */
36 37 #define CTERROR_NAME "cterror"
37   -#define CTERROR_VERSION "01-00-00"
  38 +#define CTERROR_VERSION "1.1.0"
38 39  
39 40  
40 41 /***********************************************************************//**
41 42 * @class cterror
42 43 *
43 44 * @brief Parameter error calculation tool
44   - *
45 45 ***************************************************************************/
46 46 class cterror : public ctool {
47 47  
... ... @@ -74,6 +74,7 @@ protected:
74 74  
75 75 // User parameters
76 76 std::string m_srcname; //!< Name of source
  77 + GFilename m_outmodel; //!< Output model XML file
77 78 double m_confidence; //!< Confidence level
78 79 double m_tol; //!< Tolerance for limit determination
79 80 int m_max_iter; //!< Maximum number of iterations
... ...
src/ctexpcube/ctexpcube.cpp
1 1 /***************************************************************************
2 2 * ctexpcube - Exposure cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2014-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -258,6 +258,11 @@ void ctexpcube::run(void)
258 258 }
259 259 }
260 260  
  261 + // Optionally publish exposure cube
  262 + if (m_publish) {
  263 + publish();
  264 + }
  265 +
261 266 // Return
262 267 return;
263 268 }
... ... @@ -265,6 +270,8 @@ void ctexpcube::run(void)
265 270  
266 271 /***********************************************************************//**
267 272 * @brief Save exposure cube
  273 + *
  274 + * Saves the exposure cube into a FITS file.
268 275 ***************************************************************************/
269 276 void ctexpcube::save(void)
270 277 {
... ... @@ -274,11 +281,54 @@ void ctexpcube::save(void)
274 281 log.header1("Save exposure cube");
275 282 }
276 283  
277   - // Get output filename
  284 + // Get exposure cube filename
278 285 m_outcube = (*this)["outcube"].filename();
279 286  
280   - // Save exposure cube
281   - m_expcube.save(m_outcube, clobber());
  287 + // Save only if filename is non-empty
  288 + if (!m_outcube.is_empty()) {
  289 +
  290 + // Log filename
  291 + if (logTerse()) {
  292 + log << "Save exposure cube into file \""+m_outcube+"\".";
  293 + log << std::endl;
  294 + }
  295 +
  296 + // Save exposure cube
  297 + m_expcube.save(m_outcube, clobber());
  298 +
  299 + }
  300 +
  301 + // Return
  302 + return;
  303 +}
  304 +
  305 +
  306 +/***********************************************************************//**
  307 + * @brief Publish exposure cube
  308 + *
  309 + * @param[in] name Exposure cube name.
  310 + ***************************************************************************/
  311 +void ctexpcube::publish(const std::string& name)
  312 +{
  313 + // Write header
  314 + if (logTerse()) {
  315 + log << std::endl;
  316 + log.header1("Publish exposure cube");
  317 + }
  318 +
  319 + // Set default name is user name is empty
  320 + std::string user_name(name);
  321 + if (user_name.empty()) {
  322 + user_name = CTEXPCUBE_NAME;
  323 + }
  324 +
  325 + // Log filename
  326 + if (logTerse()) {
  327 + log << "Publish \""+user_name+"\" exposure cube." << std::endl;
  328 + }
  329 +
  330 + // Publish exposure cube
  331 + m_expcube.cube().publish(user_name);
282 332  
283 333 // Return
284 334 return;
... ... @@ -299,6 +349,7 @@ void ctexpcube::init_members(void)
299 349 // Initialise members
300 350 m_outcube.clear();
301 351 m_apply_edisp = false;
  352 + m_publish = false;
302 353  
303 354 // Initialise protected members
304 355 m_obs.clear();
... ... @@ -319,6 +370,7 @@ void ctexpcube::copy_members(const ctexpcube&amp; app)
319 370 // Copy attributes
320 371 m_outcube = app.m_outcube;
321 372 m_apply_edisp = app.m_apply_edisp;
  373 + m_publish = app.m_publish;
322 374  
323 375 // Copy protected members
324 376 m_obs = app.m_obs;
... ... @@ -390,6 +442,9 @@ void ctexpcube::get_parameters(void)
390 442  
391 443 } // endelse: cube loaded from file
392 444  
  445 + // Get remaining parameters
  446 + m_publish = (*this)["publish"].boolean();
  447 +
393 448 // Read output filename (if needed)
394 449 if (read_ahead()) {
395 450 m_outcube = (*this)["outcube"].filename();
... ...
src/ctexpcube/ctexpcube.hpp
1 1 /***************************************************************************
2 2 * ctexpcube - Exposure cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2014-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -34,7 +34,7 @@
34 34  
35 35 /* __Definitions _________________________________________________________ */
36 36 #define CTEXPCUBE_NAME "ctexpcube"
37   -#define CTEXPCUBE_VERSION "1.0.0"
  37 +#define CTEXPCUBE_VERSION "1.1.0"
38 38  
39 39  
40 40 /***********************************************************************//**
... ... @@ -59,6 +59,7 @@ public:
59 59 void clear(void);
60 60 void run(void);
61 61 void save(void);
  62 + void publish(const std::string& name = "");
62 63 const GCTACubeExposure& expcube(void) const;
63 64  
64 65 protected:
... ... @@ -69,8 +70,9 @@ protected:
69 70 void get_parameters(void);
70 71  
71 72 // User parameters
72   - std::string m_outcube; //!< Output exposure cube file
73   - bool m_apply_edisp; //!< Apply energy dispersion?
  73 + GFilename m_outcube; //!< Output exposure cube file
  74 + bool m_apply_edisp; //!< Apply energy dispersion?
  75 + bool m_publish; //!< Publish exposure cube?
74 76  
75 77 // Protected members
76 78 GObservations m_obs; //!< Observation container
... ...
src/ctexpcube/ctexpcube.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: ctexpcube.par #
8   -# Version: 1.0.0 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Juergen Knoedlseder #
11 11 # Jurgen.Knodlseder@irap.omp.eu #
... ... @@ -48,6 +48,7 @@ proj, s, a, &quot;CAR&quot;, AIT|AZP|CAR|MER|MOL|STG|TAN,, &quot;Projection method&quot;
48 48 #
49 49 # Standard parameters
50 50 #====================
  51 +publish, b, h, no,,, "Publish sky map on VO Hub?"
51 52 chatter, i, h, 2,0,4, "Chattiness of output"
52 53 clobber, b, h, yes,,, "Overwrite existing output files with new output files?"
53 54 debug, b, h, no,,, "Debugging mode activated"
... ...
src/ctlike/ctlike.cpp
... ... @@ -353,9 +353,19 @@ void ctlike::save(void)
353 353 // Get output filename
354 354 m_outmodel = (*this)["outmodel"].filename();
355 355  
356   - // Write results out as XML model
357   - if (gammalib::toupper(m_outmodel) != "NONE") {
  356 + // Save only if filename is non-empty
  357 + if (!m_outmodel.is_empty() &&
  358 + gammalib::toupper(m_outmodel.url()) != "NONE") {
  359 +
  360 + // Log filename
  361 + if (logTerse()) {
  362 + log << "Save fitted parameters into file \""+m_outmodel+"\".";
  363 + log << std::endl;
  364 + }
  365 +
  366 + // Write results out as XML model
358 367 m_obs.models().save(m_outmodel);
  368 +
359 369 }
360 370  
361 371 // Return
... ...
src/ctlike/ctlike.hpp
1 1 /***************************************************************************
2 2 * ctlike - Maximum likelihood fitting tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -35,7 +35,7 @@
35 35  
36 36 /* __Definitions _________________________________________________________ */
37 37 #define CTLIKE_NAME "ctlike"
38   -#define CTLIKE_VERSION "1.0.0"
  38 +#define CTLIKE_VERSION "1.1.0"
39 39  
40 40  
41 41 /***********************************************************************//**
... ... @@ -74,7 +74,7 @@ protected:
74 74  
75 75 // User parameters
76 76 bool m_refit; //!< Refitting
77   - std::string m_outmodel; //!< Source model output XML file
  77 + GFilename m_outmodel; //!< Source model output XML file name
78 78 bool m_apply_edisp; //!< Apply energy dispersion?
79 79 bool m_fix_spat_for_ts; //!< Fix spatial parameters for TS computation?
80 80  
... ...
src/ctmodel/ctmodel.cpp
... ... @@ -324,6 +324,11 @@ void ctmodel::run(void)
324 324 }
325 325 }
326 326  
  327 + // Optionally publish model cube
  328 + if (m_publish) {
  329 + publish();
  330 + }
  331 +
327 332 // Return
328 333 return;
329 334 }
... ... @@ -343,15 +348,16 @@ void ctmodel::save(void)
343 348 log.header1("Save cube");
344 349 }
345 350  
346   - // Make sure we have the FITS filename
  351 + // Get model cube filename
347 352 m_outcube = (*this)["outcube"].filename();
348 353  
349 354 // Save only if filename is non-empty
350   - if (m_outcube.length() > 0) {
  355 + if (!m_outcube.is_empty()) {
351 356  
352   - // Dump filename
  357 + // Log filename
353 358 if (logTerse()) {
354   - log << "Save \""+m_outcube+"\"" << std::endl;
  359 + log << "Save model cube into file \""+m_outcube+"\".";
  360 + log << std::endl;
355 361 }
356 362  
357 363 // Save model cube into FITS file
... ... @@ -365,6 +371,38 @@ void ctmodel::save(void)
365 371  
366 372  
367 373 /***********************************************************************//**
  374 + * @brief Publish model cube
  375 + *
  376 + * @param[in] name Model cube name.
  377 + ***************************************************************************/
  378 +void ctmodel::publish(const std::string& name)
  379 +{
  380 + // Write header
  381 + if (logTerse()) {
  382 + log << std::endl;
  383 + log.header1("Publish model cube");
  384 + }
  385 +
  386 + // Set default name is user name is empty
  387 + std::string user_name(name);
  388 + if (user_name.empty()) {
  389 + user_name = CTMODEL_NAME;
  390 + }
  391 +
  392 + // Log filename
  393 + if (logTerse()) {
  394 + log << "Publish \""+user_name+"\" model cube." << std::endl;
  395 + }
  396 +
  397 + // Publish model cube
  398 + m_cube.map().publish(user_name);
  399 +
  400 + // Return
  401 + return;
  402 +}
  403 +
  404 +
  405 +/***********************************************************************//**
368 406 * @brief Set model cube
369 407 *
370 408 * @param[in] cube Model cube.
... ... @@ -403,6 +441,7 @@ void ctmodel::init_members(void)
403 441 // Initialise members
404 442 m_outcube.clear();
405 443 m_apply_edisp = false;
  444 + m_publish = false;
406 445  
407 446 // Initialise protected members
408 447 m_obs.clear();
... ... @@ -427,6 +466,7 @@ void ctmodel::copy_members(const ctmodel&amp; app)
427 466 // Copy attributes
428 467 m_outcube = app.m_outcube;
429 468 m_apply_edisp = app.m_apply_edisp;
  469 + m_publish = app.m_publish;
430 470  
431 471 // Copy protected members
432 472 m_obs = app.m_obs;
... ... @@ -550,6 +590,9 @@ void ctmodel::get_parameters(void)
550 590  
551 591 } // endif: we had no cube yet
552 592  
  593 + // Get remaining parameters
  594 + m_publish = (*this)["publish"].boolean();
  595 +
553 596 // Read optionally output cube filenames
554 597 if (read_ahead()) {
555 598 m_outcube = (*this)["outcube"].filename();
... ...
src/ctmodel/ctmodel.hpp
1 1 /***************************************************************************
2 2 * ctmodel - Model cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2012-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2012-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -34,7 +34,7 @@
34 34  
35 35 /* __Definitions _________________________________________________________ */
36 36 #define CTMODEL_NAME "ctmodel"
37   -#define CTMODEL_VERSION "1.0.1"
  37 +#define CTMODEL_VERSION "1.1.0"
38 38  
39 39  
40 40 /***********************************************************************//**
... ... @@ -68,6 +68,7 @@ public:
68 68 void clear(void);
69 69 void run(void);
70 70 void save(void);
  71 + void publish(const std::string& name = "");
71 72 const GObservations& obs(void) const;
72 73 const GCTAEventCube& cube(void) const;
73 74 void cube(const GCTAEventCube& cube);
... ... @@ -84,8 +85,9 @@ protected:
84 85 bool has_cube(void) const;
85 86  
86 87 // User parameters
87   - std::string m_outcube; //!< Output model cube
88   - bool m_apply_edisp; //!< Apply energy dispersion?
  88 + GFilename m_outcube; //!< Output model cube
  89 + bool m_apply_edisp; //!< Apply energy dispersion?
  90 + bool m_publish; //!< Publish model cube?
89 91  
90 92 // Protected members
91 93 GObservations m_obs; //!< Observation container
... ...
src/ctmodel/ctmodel.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: ctmodel.par #
8   -# Version: 1.0.1 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Juergen Knoedlseder #
11 11 # Jurgen.Knodlseder@irap.omp.eu #
... ... @@ -62,6 +62,7 @@ proj, s, a, &quot;CAR&quot;, AIT|AZP|CAR|MER|MOL|STG|TAN,, &quot;Projection method&quot;
62 62 #
63 63 # Standard parameters
64 64 #====================
  65 +publish, b, h, no,,, "Publish model cube on VO Hub?"
65 66 chatter, i, h, 2,0,4, "Chattiness of output"
66 67 clobber, b, h, yes,,, "Overwrite existing output files with new output files?"
67 68 debug, b, h, no,,, "Debugging mode activated"
... ...
src/ctobssim/ctobssim.cpp
... ... @@ -1454,6 +1454,12 @@ void ctobssim::save_fits(void)
1454 1454 // Get CTA observation from observation container
1455 1455 GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]);
1456 1456  
  1457 + // Log filename
  1458 + if (logTerse()) {
  1459 + log << "Save event list into file \""+m_outevents+"\".";
  1460 + log << std::endl;
  1461 + }
  1462 +
1457 1463 // Save observation into FITS file
1458 1464 obs->save(m_outevents, clobber());
1459 1465  
... ... @@ -1513,6 +1519,12 @@ void ctobssim::save_xml(void)
1513 1519 // Store output file name in observation
1514 1520 obs->eventfile(outfile);
1515 1521  
  1522 + // Log filename
  1523 + if (logTerse()) {
  1524 + log << "Save event list into file \""+outfile+"\".";
  1525 + log << std::endl;
  1526 + }
  1527 +
1516 1528 // Save observation into FITS file
1517 1529 obs->save(outfile, clobber());
1518 1530  
... ...
src/ctpsfcube/ctpsfcube.cpp
1 1 /***************************************************************************
2 2 * ctpsfcube - PSF cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Chia-Chun Lu *
  4 + * copyright (C) 2014-2016 by Chia-Chun Lu *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -276,8 +276,19 @@ void ctpsfcube::save(void)
276 276 // Get output filename
277 277 m_outcube = (*this)["outcube"].filename();
278 278  
279   - // Save PSF cube
280   - m_psfcube.save(m_outcube, clobber());
  279 + // Save only if filename is non-empty
  280 + if (!m_outcube.is_empty()) {
  281 +
  282 + // Log filename
  283 + if (logTerse()) {
  284 + log << "Save PSF cube into file \""+m_outcube+"\".";
  285 + log << std::endl;
  286 + }
  287 +
  288 + // Save PSF cube
  289 + m_psfcube.save(m_outcube, clobber());
  290 +
  291 + }
281 292  
282 293 // Return
283 294 return;
... ...
src/ctpsfcube/ctpsfcube.hpp
1 1 /***************************************************************************
2 2 * ctpsfcube - PSF cube generation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Chia-Chun Lu *
  4 + * copyright (C) 2014-2016 by Chia-Chun Lu *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -34,7 +34,7 @@
34 34  
35 35 /* __Definitions _________________________________________________________ */
36 36 #define CTPSFCUBE_NAME "ctpsfcube"
37   -#define CTPSFCUBE_VERSION "1.0.0"
  37 +#define CTPSFCUBE_VERSION "1.1.0"
38 38  
39 39  
40 40 /***********************************************************************//**
... ... @@ -69,7 +69,7 @@ protected:
69 69 void get_parameters(void);
70 70  
71 71 // User parameters
72   - std::string m_outcube; //!< Output PSF cube file
  72 + GFilename m_outcube; //!< Output PSF cube file name
73 73 bool m_apply_edisp; //!< Apply energy dispersion?
74 74  
75 75 // Protected members
... ...
src/ctselect/ctselect.cpp
... ... @@ -413,10 +413,10 @@ void ctselect::save(void)
413 413 if (logTerse()) {
414 414 log << std::endl;
415 415 if (m_obs.size() > 1) {
416   - log.header1("Save observations");
  416 + log.header1("Save event lists");
417 417 }
418 418 else {
419   - log.header1("Save observation");
  419 + log.header1("Save event list");
420 420 }
421 421 }
422 422  
... ... @@ -1267,7 +1267,8 @@ void ctselect::save_fits(void)
1267 1267  
1268 1268 // Log filename
1269 1269 if (logTerse()) {
1270   - log << "Save \""+outfile+"\"" << std::endl;
  1270 + log << "Save event list into file \""+outfile+"\".";
  1271 + log << std::endl;
1271 1272 }
1272 1273  
1273 1274 // Save event list
... ... @@ -1335,7 +1336,8 @@ void ctselect::save_xml(void)
1335 1336  
1336 1337 // Log filename
1337 1338 if (logTerse()) {
1338   - log << "Save \""+outfile+"\"" << std::endl;
  1339 + log << "Save event list into file \""+outfile+"\".";
  1340 + log << std::endl;
1339 1341 }
1340 1342  
1341 1343 // Store output file name in observation
... ...
src/ctskymap/ctskymap.cpp
1 1 /***************************************************************************
2 2 * ctskymap - Sky mapping tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2011-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2011-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -290,15 +290,21 @@ void ctskymap::run(void)
290 290  
291 291 } // endfor: looped over observations
292 292  
  293 + // Optionally publish sky map
  294 + if (m_publish) {
  295 + publish();
  296 + }
  297 +
293 298 // Return
294 299 return;
295 300 }
296 301  
297 302  
298 303 /***********************************************************************//**
299   - * @brief Save observation
  304 + * @brief Save sky map
300 305 *
301   - * This method saves the counts map(s) into (a) FITS file(s).
  306 + * Saves the sky map into a FITS file. The FITS file name is specified by the
  307 + * @p outname parameter.
302 308 ***************************************************************************/
303 309 void ctskymap::save(void)
304 310 {
... ... @@ -308,15 +314,15 @@ void ctskymap::save(void)
308 314 log.header1("Save sky map");
309 315 }
310 316  
311   - // Get output filename
312   - m_outmap = (*this)["outmap"].filename();
  317 + // Get sky map filename
  318 + m_outmap = (*this)["outmap"].filename();
313 319  
314 320 // Save only if filename is non-empty
315   - if (m_outmap.length() > 0) {
  321 + if (!m_outmap.is_empty()) {
316 322  
317   - // Dump filename
  323 + // Log filename
318 324 if (logTerse()) {
319   - log << "Save \""+m_outmap+"\"" << std::endl;
  325 + log << "Save sky map into file \""+m_outmap+"\"." << std::endl;
320 326 }
321 327  
322 328 // Save sky map
... ... @@ -330,6 +336,38 @@ void ctskymap::save(void)
330 336  
331 337  
332 338 /***********************************************************************//**
  339 + * @brief Publish sky map
  340 + *
  341 + * @param[in] name Sky map name.
  342 + ***************************************************************************/
  343 +void ctskymap::publish(const std::string& name)
  344 +{
  345 + // Write header
  346 + if (logTerse()) {
  347 + log << std::endl;
  348 + log.header1("Publish sky map");
  349 + }
  350 +
  351 + // Set default name is user name is empty
  352 + std::string user_name(name);
  353 + if (user_name.empty()) {
  354 + user_name = CTSKYMAP_NAME;
  355 + }
  356 +
  357 + // Log filename
  358 + if (logTerse()) {
  359 + log << "Publish \""+user_name+"\" sky map." << std::endl;
  360 + }
  361 +
  362 + // Publish sky map
  363 + m_skymap.publish(user_name);
  364 +
  365 + // Return
  366 + return;
  367 +}
  368 +
  369 +
  370 +/***********************************************************************//**
333 371 * @brief Get application parameters
334 372 *
335 373 * Get all task parameters from parameter file or (if required) by querying
... ... @@ -359,12 +397,13 @@ void ctskymap::get_parameters(void)
359 397 m_skymap = create_map(m_obs);
360 398  
361 399 // Get remaining parameters
362   - m_emin = (*this)["emin"].real();
363   - m_emax = (*this)["emax"].real();
  400 + m_emin = (*this)["emin"].real();
  401 + m_emax = (*this)["emax"].real();
  402 + m_publish = (*this)["publish"].boolean();
364 403  
365 404 // Read ahead parameters
366 405 if (read_ahead()) {
367   - m_outmap = (*this)["outmap"].filename();
  406 + m_outmap = (*this)["outmap"].filename();
368 407 }
369 408  
370 409 // Return
... ... @@ -478,8 +517,9 @@ void ctskymap::init_members(void)
478 517 // Initialise members
479 518 m_obs.clear();
480 519 m_skymap.clear();
481   - m_emin = 0.0;
482   - m_emax = 0.0;
  520 + m_emin = 0.0;
  521 + m_emax = 0.0;
  522 + m_publish = false;
483 523  
484 524 // Return
485 525 return;
... ... @@ -494,10 +534,11 @@ void ctskymap::init_members(void)
494 534 void ctskymap::copy_members(const ctskymap& app)
495 535 {
496 536 // Copy attributes
497   - m_obs = app.m_obs;
498   - m_skymap = app.m_skymap;
499   - m_emin = app.m_emin;
500   - m_emax = app.m_emax;
  537 + m_obs = app.m_obs;
  538 + m_skymap = app.m_skymap;
  539 + m_emin = app.m_emin;
  540 + m_emax = app.m_emax;
  541 + m_publish = app.m_publish;
501 542  
502 543 // Return
503 544 return;
... ...
src/ctskymap/ctskymap.hpp
1 1 /***************************************************************************
2 2 * ctskymap - Sky mapping tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2010-2015 by Juergen Knoedlseder *
  4 + * copyright (C) 2010-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -34,7 +34,7 @@
34 34  
35 35 /* __Definitions _________________________________________________________ */
36 36 #define CTSKYMAP_NAME "ctskymap"
37   -#define CTSKYMAP_VERSION "1.0.0"
  37 +#define CTSKYMAP_VERSION "1.1.0"
38 38  
39 39  
40 40 /***********************************************************************//**
... ... @@ -61,6 +61,7 @@ public:
61 61 void clear(void);
62 62 void run(void);
63 63 void save(void);
  64 + void publish(const std::string& name = "");
64 65 const GSkyMap& map(void) const;
65 66  
66 67 protected:
... ... @@ -72,10 +73,10 @@ protected:
72 73 void map_events(GCTAObservation* obs);
73 74  
74 75 // User parameters
75   - std::string m_outmap; //!< Output counts map
  76 + GFilename m_outmap; //!< Output file name
76 77 double m_emin; //!< Minimum energy (TeV)
77 78 double m_emax; //!< Maximum energy (TeV)
78   -
  79 + bool m_publish; //!< Publish sky map?
79 80  
80 81 // Protected members
81 82 GObservations m_obs; //!< Observation container
... ...
src/ctskymap/ctskymap.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: ctskymap.par #
8   -# Version: 1.0.0 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Jurgen Knodlseder #
11 11 # knodlseder@cesr.fr #
... ... @@ -41,6 +41,7 @@ proj, s, a, &quot;CAR&quot;, AIT|AZP|CAR|MER|MOL|STG|TAN,, &quot;Projection method&quot;
41 41 #
42 42 # Standard parameters
43 43 #====================
  44 +publish, b, h, no,,, "Publish sky map on VO Hub?"
44 45 chatter, i, h, 2,0,4, "Chattiness of output"
45 46 clobber, b, h, yes,,, "Overwrite existing output files with new output files?"
46 47 debug, b, h, no,,, "Debugging mode activated"
... ...
src/cttsmap/cttsmap.cpp
1 1 /***************************************************************************
2 2 * cttsmap - TS map calculation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Michael Mayer *
  4 + * copyright (C) 2014-2016 by Michael Mayer *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -368,6 +368,11 @@ void cttsmap::run(void)
368 368 }
369 369 }
370 370  
  371 + // Optionally publish TS map
  372 + if (m_publish) {
  373 + publish();
  374 + }
  375 +
371 376 // Return
372 377 return;
373 378 }
... ... @@ -386,31 +391,73 @@ void cttsmap::save(void)
386 391 log.header1("Save TS map");
387 392 }
388 393  
389   - // Get output filename
  394 + // Get TS map filename
390 395 m_outmap = (*this)["outmap"].filename();
391 396  
392   - // Create fits file instance
393   - GFits fitsfile = GFits();
  397 + // Save only if filename is non-empty
  398 + if (!m_outmap.is_empty()) {
  399 +
  400 + // Log filename
  401 + if (logTerse()) {
  402 + log << "Save TS map into file \""+m_outmap+"\"." << std::endl;
  403 + }
  404 +
  405 + // Create fits file
  406 + GFits fits;
  407 +
  408 + // Write the sky maps to the FITS file
  409 + m_tsmap.write(fits);
  410 + for (int i = 0; i < m_mapnames.size(); i++) {
  411 + m_maps[i].write(fits);
  412 + }
  413 +
  414 + // Set extension name for all maps
  415 + for (int i = 0; i < m_mapnames.size(); i++) {
  416 + fits[i+1]->extname(m_mapnames[i]);
  417 + }
  418 +
  419 + // Add computation log if not all bins are computed
  420 + if (m_binmin != -1 || m_binmax != -1) {
  421 + m_statusmap.write(fits);
  422 + fits[m_mapnames.size()+1]->extname("STATUS MAP");
  423 + }
  424 +
  425 + // Save FITS file
  426 + fits.saveto(m_outmap, clobber());
  427 +
  428 + } // endif: TS map filename was valid
394 429  
395   - // Write the sky maps to the FITS file
396   - m_tsmap.write(fitsfile);
397   - for (int i = 0; i < m_mapnames.size(); i++) {
398   - m_maps[i].write(fitsfile);
  430 + // Return
  431 + return;
  432 +}
  433 +
  434 +
  435 +/***********************************************************************//**
  436 + * @brief Publish TS map
  437 + *
  438 + * @param[in] name TS map name.
  439 + ***************************************************************************/
  440 +void cttsmap::publish(const std::string& name)
  441 +{
  442 + // Write header
  443 + if (logTerse()) {
  444 + log << std::endl;
  445 + log.header1("Publish TS map");
399 446 }
400 447  
401   - // Set extension name for all maps
402   - for (int i = 0; i < m_mapnames.size(); i++) {
403   - fitsfile[i+1]->extname(m_mapnames[i]);
  448 + // Set default name is user name is empty
  449 + std::string user_name(name);
  450 + if (user_name.empty()) {
  451 + user_name = CTTSMAP_NAME;
404 452 }
405 453  
406   - // Add computation log if not all bins are computed
407   - if (m_binmin != -1 || m_binmax != -1) {
408   - m_statusmap.write(fitsfile);
409   - fitsfile[m_mapnames.size()+1]->extname("STATUS MAP");
  454 + // Log filename
  455 + if (logTerse()) {
  456 + log << "Publish \""+user_name+"\" TS map." << std::endl;
410 457 }
411 458  
412   - // Save FITS file
413   - fitsfile.saveto(m_outmap,true);
  459 + // Publish TS map
  460 + m_tsmap.publish(user_name);
414 461  
415 462 // Return
416 463 return;
... ... @@ -432,6 +479,7 @@ void cttsmap::init_members(void)
432 479 m_srcname.clear();
433 480 m_outmap.clear();
434 481 m_apply_edisp = false;
  482 + m_publish = false;
435 483  
436 484 // Initialise protected members
437 485 m_obs.clear();
... ... @@ -457,9 +505,10 @@ void cttsmap::init_members(void)
457 505 void cttsmap::copy_members(const cttsmap& app)
458 506 {
459 507 // Copy attributes
460   - m_srcname = app.m_srcname;
461   - m_outmap = app.m_outmap;
  508 + m_srcname = app.m_srcname;
  509 + m_outmap = app.m_outmap;
462 510 m_apply_edisp = app.m_apply_edisp;
  511 + m_publish = app.m_publish;
463 512  
464 513 // Copy protected members
465 514 m_binmin = app.m_binmin;
... ... @@ -568,9 +617,10 @@ void cttsmap::get_parameters(void)
568 617 m_apply_edisp = (*this)["edisp"].boolean();
569 618  
570 619 // Get optional splitting parameters
571   - m_binmin = (*this)["binmin"].integer();
572   - m_binmax = (*this)["binmax"].integer();
573   - m_logL0 = (*this)["logL0"].real();
  620 + m_binmin = (*this)["binmin"].integer();
  621 + m_binmax = (*this)["binmax"].integer();
  622 + m_logL0 = (*this)["logL0"].real();
  623 + m_publish = (*this)["publish"].boolean();
574 624  
575 625 // Optionally read ahead parameters so that they get correctly
576 626 // dumped into the log file
... ...
src/cttsmap/cttsmap.hpp
1 1 /***************************************************************************
2 2 * cttsmap - TS map calculation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2014-2015 by Michael Mayer *
  4 + * copyright (C) 2014-2016 by Michael Mayer *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -34,7 +34,7 @@
34 34  
35 35 /* __Definitions _________________________________________________________ */
36 36 #define CTTSMAP_NAME "cttsmap"
37   -#define CTTSMAP_VERSION "1.0.0"
  37 +#define CTTSMAP_VERSION "1.1.0"
38 38  
39 39  
40 40 /***********************************************************************//**
... ... @@ -72,6 +72,7 @@ public:
72 72 void clear(void);
73 73 void run(void);
74 74 void save(void);
  75 + void publish(const std::string& name = "");
75 76 const GObservations& obs(void) const;
76 77 const GSkyMap& tsmap(void) const;
77 78  
... ... @@ -85,8 +86,9 @@ protected:
85 86  
86 87 // User parameters
87 88 std::string m_srcname; //!< Name of source which is moved around
88   - std::string m_outmap; //!< Output counts map or XML file
  89 + GFilename m_outmap; //!< Output TS map file name
89 90 bool m_apply_edisp; //!< Apply energy dispersion?
  91 + bool m_publish; //!< Publish TS map?
90 92  
91 93 // Parameters to control speed and job splitting
92 94 int m_binmin; //!< Map bin number from which computation should start
... ...
src/cttsmap/cttsmap.par
... ... @@ -5,7 +5,7 @@
5 5 # ------------------------------------------------------------------------- #
6 6 # #
7 7 # File: cttsmap.par #
8   -# Version: 1.0.0 #
  8 +# Version: 1.1.0 #
9 9 # #
10 10 # Author: Michael Mayer #
11 11 # michael.mayer@desy.de #
... ... @@ -50,6 +50,7 @@ logL0, r, h, 0.0,,, &quot;LogLikelihood value of null hypothesis&quot;
50 50 #
51 51 # Standard parameters
52 52 #====================
  53 +publish, b, h, no,,, "Publish Test Statistic map on VO Hub?"
53 54 chatter, i, h, 2,0,4, "Chattiness of output"
54 55 clobber, b, h, yes,,, "Overwrite existing output files with new output files?"
55 56 debug, b, h, no,,, "Debugging mode activated"
... ...
src/ctulimit/ctulimit.cpp
1 1 /***************************************************************************
2 2 * ctulimit - Upper limit calculation tool *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2015 by Michael Mayer *
  4 + * copyright (C) 2015-2016 by Michael Mayer *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -52,6 +52,8 @@
52 52  
53 53 /***********************************************************************//**
54 54 * @brief Void constructor
  55 + *
  56 + * Constructs an empty ctulimit tool.
55 57 ***************************************************************************/
56 58 ctulimit::ctulimit(void) : ctool(CTULIMIT_NAME, CTULIMIT_VERSION)
57 59 {
... ... @@ -68,8 +70,8 @@ ctulimit::ctulimit(void) : ctool(CTULIMIT_NAME, CTULIMIT_VERSION)
68 70 *
69 71 * param[in] obs Observation container.
70 72 *
71   - * This method creates an instance of the class by copying an existing
72   - * observations container.
  73 + * Constructs an instance of the ctulimit tool that will operate on the
  74 + * provided observation container.
73 75 ***************************************************************************/
74 76 ctulimit::ctulimit(const GObservations& obs) :
75 77 ctool(CTULIMIT_NAME, CTULIMIT_VERSION)
... ... @@ -91,6 +93,9 @@ ctulimit::ctulimit(const GObservations&amp; obs) :
91 93 *
92 94 * @param[in] argc Number of arguments in command line.
93 95 * @param[in] argv Array of command line arguments.
  96 + *
  97 + * Constructs an instance of the ctulimit tool that will parse user
  98 + * parameters that are provided as command line arguments.
94 99 ***************************************************************************/
95 100 ctulimit::ctulimit(int argc, char *argv[]) :
96 101 ctool(CTULIMIT_NAME, CTULIMIT_VERSION, argc, argv)
... ... @@ -107,6 +112,9 @@ ctulimit::ctulimit(int argc, char *argv[]) :
107 112 * @brief Copy constructor
108 113 *
109 114 * @param[in] app Application.
  115 + *
  116 + * Constructs an instance of the ctulimit tool by copying information from
  117 + * another ctulimit tool.
110 118 ***************************************************************************/
111 119 ctulimit::ctulimit(const ctulimit& app) : ctool(app)
112 120 {
... ... @@ -123,6 +131,8 @@ ctulimit::ctulimit(const ctulimit&amp; app) : ctool(app)
123 131  
124 132 /***********************************************************************//**
125 133 * @brief Destructor
  134 + *
  135 + * Destructs the ctulimit tool.
126 136 ***************************************************************************/
127 137 ctulimit::~ctulimit(void)
128 138 {
... ... @@ -145,6 +155,8 @@ ctulimit::~ctulimit(void)
145 155 *
146 156 * @param[in] app Application.
147 157 * @return Application.
  158 + *
  159 + * Assigns a ctulimit tool.
148 160 ***************************************************************************/
149 161 ctulimit& ctulimit::operator=(const ctulimit& app)
150 162 {
... ... @@ -177,7 +189,9 @@ ctulimit&amp; ctulimit::operator=(const ctulimit&amp; app)
177 189 ==========================================================================*/
178 190  
179 191 /***********************************************************************//**
180   - * @brief Clear instance
  192 + * @brief Clear ctulimit tool
  193 + *
  194 + * Resets the ctulimit tool to a clean initial state.
181 195 ***************************************************************************/
182 196 void ctulimit::clear(void)
183 197 {
... ... @@ -197,9 +211,9 @@ void ctulimit::clear(void)
197 211  
198 212  
199 213 /***********************************************************************//**
200   - * @brief Computes the upper limit
  214 + * @brief Compute upper limit
201 215 *
202   - * This method calculates the upper limit depending on the given algorithm
  216 + * Computes the upper limit depending on the given algorithm
203 217 ***************************************************************************/
204 218 void ctulimit::run(void)
205 219 {
... ... @@ -369,22 +383,22 @@ void ctulimit::run(void)
369 383  
370 384  
371 385 /***********************************************************************//**
372   - * @brief Save maps
  386 + * @brief Save upper limits
373 387 *
374   - * This method saves the upper limit to an ascii file.
  388 + * Saves the upper limit to an ASCII file in comma-separated value format.
375 389 *
376 390 * @todo No yet implemented as we have no clear use case yet for saving
377 391 * the result.
378 392 ***************************************************************************/
379 393 void ctulimit::save(void)
380 394 {
  395 + /*
381 396 // Write header
382 397 if (logTerse()) {
383 398 log << std::endl;
384 399 log.header1("Save upper limit");
385 400 }
386 401  
387   - /*
388 402 // Get output filename
389 403 m_outfile = (*this)["outfile"].filename();
390 404  
... ... @@ -417,14 +431,14 @@ void ctulimit::init_members(void)
417 431 {
418 432 // Initialise user parameters
419 433 m_srcname.clear();
420   - m_confidence = 0.95;
421   - m_sigma_min = 0.0;
422   - m_sigma_max = 0.0;
423   - m_eref = 0.0;
424   - m_emin = 0.0;
425   - m_emax = 0.0;
426   - m_tol = 1.0e-6;
427   - m_max_iter = 50;
  434 + m_confidence = 0.95;
  435 + m_sigma_min = 0.0;
  436 + m_sigma_max = 0.0;
  437 + m_eref = 0.0;
  438 + m_emin = 0.0;
  439 + m_emax = 0.0;
  440 + m_tol = 1.0e-6;
  441 + m_max_iter = 50;
428 442 m_apply_edisp = false;
429 443  
430 444 // Initialise protected members
... ... @@ -455,15 +469,15 @@ void ctulimit::init_members(void)
455 469 void ctulimit::copy_members(const ctulimit& app)
456 470 {
457 471 // Copy user parameters
458   - m_srcname = app.m_srcname;
459   - m_confidence = app.m_confidence;
460   - m_sigma_min = app.m_sigma_min;
461   - m_sigma_max = app.m_sigma_max;
462   - m_eref = app.m_eref;
463   - m_emin = app.m_emin;
464   - m_emax = app.m_emax;
465   - m_tol = app.m_tol;
466   - m_max_iter = app.m_max_iter;
  472 + m_srcname = app.m_srcname;
  473 + m_confidence = app.m_confidence;
  474 + m_sigma_min = app.m_sigma_min;
  475 + m_sigma_max = app.m_sigma_max;
  476 + m_eref = app.m_eref;
  477 + m_emin = app.m_emin;
  478 + m_emax = app.m_emax;
  479 + m_tol = app.m_tol;
  480 + m_max_iter = app.m_max_iter;
467 481 m_apply_edisp = app.m_apply_edisp;
468 482  
469 483 // Copy protected members
... ... @@ -624,12 +638,12 @@ void ctulimit::get_model_parameter(void)
624 638  
625 639  
626 640 /***********************************************************************//**
627   - * @brief Performs upper limit computation by using a bisection method
  641 + * @brief Calculate upper limit using a bisection method
628 642 *
629 643 * @param[in] min Minimum parameter value
630 644 * @param[in] max Maximum parameter value
631 645 *
632   - * This method calculates the upper limit using a bisection method.
  646 + * Calculates the upper limit using a bisection method.
633 647 ***************************************************************************/
634 648 void ctulimit::ulimit_bisection(const double& min, const double& max)
635 649 {
... ... @@ -697,8 +711,7 @@ void ctulimit::ulimit_bisection(const double&amp; min, const double&amp; max)
697 711 * @param[in] value Parameter factor value
698 712 * @return Log-likelihood value
699 713 *
700   - * This method evaluates the log-likelihood as a function of the parameter
701   - * of interest.
  714 + * Evaluates the log-likelihood as a function of the parameter of interest.
702 715 ***************************************************************************/
703 716 double ctulimit::evaluate(const double& value)
704 717 {
... ...
src/support/ctool.hpp
... ... @@ -91,12 +91,14 @@ protected:
91 91 GSkyDir get_mean_pointing(const GObservations& obs);
92 92 size_t get_current_rss(void);
93 93  
  94 + // Protected members
  95 + bool m_read_ahead; //!< Read ahead parameters
  96 +
94 97 protected:
95 98 // Protected methods
96 99 void provide_help(void) const;
97 100  
98 101 // Protected members
99   - bool m_read_ahead; //!< Read ahead parameters
100 102 bool m_use_xml; //!< Use XML file instead of FITS file for observations
101 103 GTimeReference m_cta_ref; //!< CTA time reference
102 104 };
... ...
test/test_ctbin.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctbin tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -83,16 +83,18 @@ class Test(gammalib.GPythonTestSuite):
83 83 try:
84 84 bin.run()
85 85 self.test_try_success()
86   - except:
87   - self.test_try_failure("Exception occured in ctbin.")
  86 + except Exception, e:
  87 + msg = "Exception occured in ctbin: %s." % (e,)
  88 + self.test_try_failure(msg)
88 89  
89 90 # Save counts cube
90 91 self.test_try("Save counts cube")
91 92 try:
92 93 bin.save()
93 94 self.test_try_success()
94   - except:
95   - self.test_try_failure("Exception occured in saving counts cube.")
  95 + except Exception, e:
  96 + msg = "Exception occured in saving counts cube: %s." % (e,)
  97 + self.test_try_failure(msg)
96 98  
97 99 # Return
98 100 return
... ...
test/test_ctbkgcube.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctbkgcube tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -91,16 +91,18 @@ class Test(gammalib.GPythonTestSuite):
91 91 try:
92 92 bkgcube.run()
93 93 self.test_try_success()
94   - except:
95   - self.test_try_failure("Exception occured in ctbkgcube.")
  94 + except Exception, e:
  95 + msg = "Exception occured in ctbkgcube: %s." % (e,)
  96 + self.test_try_failure(msg)
96 97  
97 98 # Save background cube
98 99 self.test_try("Save background cube")
99 100 try:
100 101 bkgcube.save()
101 102 self.test_try_success()
102   - except:
103   - self.test_try_failure("Exception occured in saving background cube.")
  103 + except Exception, e:
  104 + msg = "Exception occured in saving background cube: %s." % (e,)
  105 + self.test_try_failure(msg)
104 106  
105 107 # Return
106 108 return
... ...
test/test_ctbutterfly.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctbutterfly tool.
4 4 #
5   -# Copyright (C) 2014 Michal Mayer
  5 +# Copyright (C) 2014-2016 Michal Mayer
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -81,16 +81,18 @@ class Test(gammalib.GPythonTestSuite):
81 81 try:
82 82 butterfly.run()
83 83 self.test_try_success()
84   - except:
85   - self.test_try_failure("Exception occured in butterfly.")
  84 + except Exception, e:
  85 + msg = "Exception occured in ctbutterfly: %s." % (e,)
  86 + self.test_try_failure(msg)
86 87  
87 88 # Save results
88 89 self.test_try("Save results")
89 90 try:
90 91 butterfly.save()
91 92 self.test_try_success()
92   - except:
93   - self.test_try_failure("Exception occured in saving results.")
  93 + except Exception, e:
  94 + msg = "Exception occured in saving butterfly diagram: %s." % (e,)
  95 + self.test_try_failure(msg)
94 96  
95 97 # Return
96 98 return
... ...
test/test_ctcubemask.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctcubemask tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -79,16 +79,18 @@ class Test(gammalib.GPythonTestSuite):
79 79 try:
80 80 mask.run()
81 81 self.test_try_success()
82   - except:
83   - self.test_try_failure("Exception occured in ctcubemask.")
  82 + except Exception, e:
  83 + msg = "Exception occured in ctcubemask: %s." % (e,)
  84 + self.test_try_failure(msg)
84 85  
85 86 # Save counts cube
86 87 self.test_try("Save counts cube")
87 88 try:
88 89 mask.save()
89 90 self.test_try_success()
90   - except:
91   - self.test_try_failure("Exception occured in saving counts cube.")
  91 + except Exception, e:
  92 + msg = "Exception occured in saving counts cube: %s." % (e,)
  93 + self.test_try_failure(msg)
92 94  
93 95 # Return
94 96 return
... ...
test/test_cterror.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the cterror tool.
4 4 #
5   -# Copyright (C) 2015 Florent Forest
  5 +# Copyright (C) 2015-2016 Florent Forest
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -80,16 +80,18 @@ class Test(gammalib.GPythonTestSuite):
80 80 try:
81 81 error.run()
82 82 self.test_try_success()
83   - except:
84   - self.test_try_failure("Exception occured in cterror.")
  83 + except Exception, e:
  84 + msg = "Exception occured in cterror: %s." % (e,)
  85 + self.test_try_failure(msg)
85 86  
86 87 # Save results
87 88 self.test_try("Save results")
88 89 try:
89 90 error.save()
90 91 self.test_try_success()
91   - except:
92   - self.test_try_failure("Exception occured in saving results.")
  92 + except Exception, e:
  93 + msg = "Exception occured in saving results: %s." % (e,)
  94 + self.test_try_failure(msg)
93 95  
94 96 # Return
95 97 return
... ...
test/test_ctexpcube.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctexpcube tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -88,16 +88,18 @@ class Test(gammalib.GPythonTestSuite):
88 88 try:
89 89 expcube.run()
90 90 self.test_try_success()
91   - except:
92   - self.test_try_failure("Exception occured in ctexpcube.")
  91 + except Exception, e:
  92 + msg = "Exception occured in ctexpcube: %s." % (e,)
  93 + self.test_try_failure(msg)
93 94  
94 95 # Save exposure cube
95 96 self.test_try("Save exposure cube")
96 97 try:
97 98 expcube.save()
98 99 self.test_try_success()
99   - except:
100   - self.test_try_failure("Exception occured in saving exposure cube.")
  100 + except Exception, e:
  101 + msg = "Exception occured in saving exposure cube: %s." % (e,)
  102 + self.test_try_failure(msg)
101 103  
102 104 # Return
103 105 return
... ...
test/test_ctlike.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctlike tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -78,16 +78,18 @@ class Test(gammalib.GPythonTestSuite):
78 78 try:
79 79 like.run()
80 80 self.test_try_success()
81   - except:
82   - self.test_try_failure("Exception occured in ctlike.")
  81 + except Exception, e:
  82 + msg = "Exception occured in ctlike: %s." % (e,)
  83 + self.test_try_failure(msg)
83 84  
84 85 # Save results
85 86 self.test_try("Save results")
86 87 try:
87 88 like.save()
88 89 self.test_try_success()
89   - except:
90   - self.test_try_failure("Exception occured in saving results.")
  90 + except Exception, e:
  91 + msg = "Exception occured in saving results: %s." % (e,)
  92 + self.test_try_failure(msg)
91 93  
92 94 # Return
93 95 return
... ...
test/test_ctmodel.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctmodel tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -96,16 +96,18 @@ class Test(gammalib.GPythonTestSuite):
96 96 try:
97 97 model.run()
98 98 self.test_try_success()
99   - except:
100   - self.test_try_failure("Exception occured in ctmodel.")
  99 + except Exception, e:
  100 + msg = "Exception occured in ctmodel: %s." % (e,)
  101 + self.test_try_failure(msg)
101 102  
102 103 # Save counts cube
103 104 self.test_try("Save model cube")
104 105 try:
105 106 model.save()
106 107 self.test_try_success()
107   - except:
108   - self.test_try_failure("Exception occured in saving model cube.")
  108 + except Exception, e:
  109 + msg = "Exception occured in saving model cube: %s." % (e,)
  110 + self.test_try_failure(msg)
109 111  
110 112 # Return
111 113 return
... ...
test/test_ctobssim.py
... ... @@ -84,8 +84,9 @@ class Test(gammalib.GPythonTestSuite):
84 84 try:
85 85 sim.run()
86 86 self.test_try_success()
87   - except:
88   - self.test_try_failure("Exception occured in ctobssim.")
  87 + except Exception, e:
  88 + msg = "Exception occured in ctobssim: %s." % (e,)
  89 + self.test_try_failure(msg)
89 90  
90 91 # Retrieve observation and check content
91 92 obs = gammalib.GCTAObservation(sim.obs()[0])
... ... @@ -104,8 +105,9 @@ class Test(gammalib.GPythonTestSuite):
104 105 try:
105 106 sim.save()
106 107 self.test_try_success()
107   - except:
108   - self.test_try_failure("Exception occured in saving events.")
  108 + except Exception, e:
  109 + msg = "Exception occured in saving events: %s." % (e,)
  110 + self.test_try_failure(msg)
109 111  
110 112 # Test ctobssim on observation container
111 113 def test_container(self):
... ... @@ -124,8 +126,9 @@ class Test(gammalib.GPythonTestSuite):
124 126 try:
125 127 sim.run()
126 128 self.test_try_success()
127   - except:
128   - self.test_try_failure("Exception occured in ctobssim.")
  129 + except Exception, e:
  130 + msg = "Exception occured in ctobssim: %s." % (e,)
  131 + self.test_try_failure(msg)
129 132  
130 133 # Retrieve observation and check content
131 134 self.test_value(sim.obs().size(), 4, "There are not 4 observations")
... ... @@ -135,8 +138,9 @@ class Test(gammalib.GPythonTestSuite):
135 138 try:
136 139 sim.save()
137 140 self.test_try_success()
138   - except:
139   - self.test_try_failure("Exception occured in saving events.")
  141 + except Exception, e:
  142 + msg = "Exception occured in saving events: %s." % (e,)
  143 + self.test_try_failure(msg)
140 144  
141 145 # Setup observation container
142 146 def set_obs(self, number):
... ...
test/test_ctpsfcube.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctpsfcube tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -90,16 +90,18 @@ class Test(gammalib.GPythonTestSuite):
90 90 try:
91 91 psfcube.run()
92 92 self.test_try_success()
93   - except:
94   - self.test_try_failure("Exception occured in ctpsfcube.")
  93 + except Exception, e:
  94 + msg = "Exception occured in ctpsfcube: %s." % (e,)
  95 + self.test_try_failure(msg)
95 96  
96 97 # Save PSF cube
97 98 self.test_try("Save PSF cube")
98 99 try:
99 100 psfcube.save()
100 101 self.test_try_success()
101   - except:
102   - self.test_try_failure("Exception occured in saving PSF cube.")
  102 + except Exception, e:
  103 + msg = "Exception occured in saving PSF cube: %s." % (e,)
  104 + self.test_try_failure(msg)
103 105  
104 106 # Return
105 107 return
... ...
test/test_ctselect.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctselect tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -79,16 +79,18 @@ class Test(gammalib.GPythonTestSuite):
79 79 try:
80 80 select.run()
81 81 self.test_try_success()
82   - except:
83   - self.test_try_failure("Exception occured in ctselect.")
  82 + except Exception, e:
  83 + msg = "Exception occured in ctselect: %s." % (e,)
  84 + self.test_try_failure(msg)
84 85  
85 86 # Save events
86 87 self.test_try("Save events")
87 88 try:
88 89 select.save()
89 90 self.test_try_success()
90   - except:
91   - self.test_try_failure("Exception occured in saving events.")
  91 + except Exception, e:
  92 + msg = "Exception occured in saving events: %s." % (e,)
  93 + self.test_try_failure(msg)
92 94  
93 95 # Return
94 96 return
... ...
test/test_ctskymap.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctskymap tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -81,16 +81,18 @@ class Test(gammalib.GPythonTestSuite):
81 81 try:
82 82 skymap.run()
83 83 self.test_try_success()
84   - except:
85   - self.test_try_failure("Exception occured in ctskymap.")
  84 + except Exception, e:
  85 + msg = "Exception occured in ctskymap: %s." % (e,)
  86 + self.test_try_failure(msg)
86 87  
87 88 # Save counts cube
88 89 self.test_try("Save sky map")
89 90 try:
90 91 skymap.save()
91 92 self.test_try_success()
92   - except:
93   - self.test_try_failure("Exception occured in saving sky map.")
  93 + except Exception, e:
  94 + msg = "Exception occured in saving sky map: %s." % (e,)
  95 + self.test_try_failure(msg)
94 96  
95 97 # Return
96 98 return
... ...
test/test_cttsmap.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the cttsmap tool.
4 4 #
5   -# Copyright (C) 2014 Juergen Knoedlseder
  5 +# Copyright (C) 2014-2016 Juergen Knoedlseder
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -86,16 +86,18 @@ class Test(gammalib.GPythonTestSuite):
86 86 try:
87 87 tsmap.run()
88 88 self.test_try_success()
89   - except:
90   - self.test_try_failure("Exception occured in cttsmap.")
  89 + except Exception, e:
  90 + msg = "Exception occured in cttsmap: %s." % (e,)
  91 + self.test_try_failure(msg)
91 92  
92 93 # Save results
93 94 self.test_try("Save results")
94 95 try:
95 96 tsmap.save()
96 97 self.test_try_success()
97   - except:
98   - self.test_try_failure("Exception occured in saving results.")
  98 + except Exception, e:
  99 + msg = "Exception occured in saving results: %s." % (e,)
  100 + self.test_try_failure(msg)
99 101  
100 102 # Return
101 103 return
... ...
test/test_ctulimit.py
... ... @@ -2,7 +2,7 @@
2 2 # ==========================================================================
3 3 # This scripts performs unit tests for the ctulimit tool.
4 4 #
5   -# Copyright (C) 2015 Michael Mayer
  5 +# Copyright (C) 2015-2016 Michael Mayer
6 6 #
7 7 # This program is free software: you can redistribute it and/or modify
8 8 # it under the terms of the GNU General Public License as published by
... ... @@ -78,16 +78,18 @@ class Test(gammalib.GPythonTestSuite):
78 78 try:
79 79 ulimit.run()
80 80 self.test_try_success()
81   - except:
82   - self.test_try_failure("Exception occured in ctulimit.")
  81 + except Exception, e:
  82 + msg = "Exception occured in ctulimit: %s." % (e,)
  83 + self.test_try_failure(msg)
83 84  
84 85 # Save results
85 86 self.test_try("Save results")
86 87 try:
87 88 ulimit.save()
88 89 self.test_try_success()
89   - except:
90   - self.test_try_failure("Exception occured in saving results.")
  90 + except Exception, e:
  91 + msg = "Exception occured in saving results: %s." % (e,)
  92 + self.test_try_failure(msg)
91 93  
92 94 # Return
93 95 return
... ...