NEWS
16.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
New Features and Important Changes in GammaLib 1.1.0
Author(s) : Juergen Knoedlseder
21 June 2016
1. Introduction
---------------
This document briefly summarizes module by module the most important changes
made since the last release of GammaLib.
2. Public interface modifications
---------------------------------
The following classes have been added:
- GCTAPsfTable
- GWcsSIN
The following classes have been removed:
- GCTAOnOffObservations
The following methods have been added to the public interface:
- GApplication::logFileClose()
- GObservation::events() (non-const variant)
- GObservation::nobserved()
- GObservations::nobserved()
- GFilename::operator std::string()
- GFilename::exists()
- GFilename::is_fits()
- GFilename::remove()
- GFilaname::protocol()
- GFilename::path()
- GFilename::file()
- GCsv::append()
- GSkyMap::shape()
- GSkyMap::ndim()
- GModelSky::spatial()
- GModelSky::spectral()
- GModelSky::temporal()
- GCTAObservation(GFilename) constructor
- GCTAResponseTable::axis(std::string)
- GCTAResponseTable::table(std::string)
- GCTAResponseTable::has_axis(std::string)
- GCTAResponseTable::has_table(std::string)
- GCTAEventCube::weights()
- GCTAEventBin::weight()
- friend GTime operator+(const GTime& time, const double& seconds)
- friend GTime operator+(const double& seconds, const GTime& time)
- friend GTime operator-(const GTime& time, const double& seconds)
- friend double operator-(const GTime& a, const GTime& b)
- GTime::operator+=(const double& seconds)
- GTime::operator-=(const double& seconds)
- friend double operator/(const GEnergy& a, const GEnergy& b);
The following methods have been removed:
- GFilename::size()
- gammalib::file_exists()
- gammalib::file_exists_gzip()
- gammalib::is_fits()
- GTime::operator+=(const GTime& time)
- GTime::operator-=(const GTime& time)
- GTime::operator*=(const double& scale)
- GTime::operator/=(const double& scale)
- friend GTime operator+(const GTime &a, const GTime &b)
- friend GTime operator-(const GTime &a, const GTime &b)
- friend GTime operator* (const GTime &time, const double &s)
- friend GTime operator*(const double &s, const GTime &time)
- friend GTime operator*(const GTime &time, const double &s)
- friend GTime operator/(const GTime &time, const double &s)
- GCTACubeExposure::elogmeans()
- GCTACubePsf::elogmeans()
- GCTACubeBackground::elogmeans()
The following methods have been renamed:
- GCTAResponseTable::tables(), was GCTAResponseTable::size()
- GCTAResponseTable::axis_bins(), was GCTAResponseTable::axis()
- GFilename::is_empty(), was GFilename::empty()
- GFilename::url(), was GFilename::filename()
- GCTAEventCube::counts(), was GCTAEventCube::map()
The following classes now use GFilename for filenames arguments instead
of std::string:
- GApplicationPar
- GApplicationPars
- GArf
- GCsv
- GEbounds
- GEnergies
- GEventCube, GCOMEventCube, GCTAEventCube, GLATEventCube, GMWLSpectrum
- GEventList, GCTAEventList, GLATEventList
- GEvents
- GGti
- GLog
- GModelSpatialDiffuseCube
- GModelSpatialDiffuseMap
- GModelSpectralFunc
- GModels
- GNodeArray
- GObservations
- GPha
- GRmf
- GSkyMap
- GSkyRegions
- GTestSuites
- GXml
- GCTAAeff, GCTAAeff2D, GCTAAeffArf, GCTAAeffPerfTable
- GCTABackground, GCTABackground3D, GCTABackgroundPerfTable
- GCTACubeBackground, GCTACubeExposure, GCTACubePsf
- GCTAEdisp, GCTAEdisp2D, GCTAEdispPerfTable, GCTAEdispRmf
- GCTAObservation
- GCTAOnOffObservations
- GCTAPointing
- GCTAPsf, GCTAPsf2D, GCTAPsfKing, GCTAPsfPerfTable, GCTAPsfVector
The return value has been changed for the following methods:
- GFits::filename() returns now GFilename instead of std::string
- GCTAObservation::eventtype() returns now std::string instead of const std::string&
- GCaldb::filename() returns now GFilename instead of std::string
The interface for the following methods has been changed:
- GFitsImage naxes constructor
- GFitsImageByte naxes constructor
- GFitsImageDouble naxes constructor
- GFitsImageFloat naxes constructor
- GFitsImageLong naxes constructor
- GFitsImageLongLong naxes constructor
- GFitsImageSByte naxes constructor
- GFitsImageShort naxes constructor
- GFitsImageULong naxes constructor
- GFitsImageUShort naxes constructor
- GSkyMap::save()
3. Configuration
-----------------
None
4. Application module
---------------------
The GApplicationPar::filename() methods now take and return GFilename objects
instead of std::string objects (#1671).
A GApplication::logFileClose() method has been added to force writing the
trailer and closing the log file. This is primarily useful for usage in
Python where the desctructor is not always called.
5. Base module
--------------
None
6. FITS I/O Interface
---------------------
The GFitsTableCol::insert() method did not work corretly for an empty column
since it de-allocated memory without having necessarily memory on disk. This
was corrected by allocating now memory after inserting elements into an empty
FITS column.
GFits now uses the GFilename class to store the FITS filename (fixes #1649).
The GFitsImage naxes constructor now takes a std::vector as argument instead
of a pointer to an array and a dimension (#1779).
7. Linear algebra module
------------------------
None
8. Model module
---------------
Sky directions drawn by GModelSpatialDiffuseConst::mc() are now restricted
to the simulation cone that has previously been defined using the mc_norm()
method. This speeds up considerbly the Monte Carlo simulations for an
isotropic diffuse model (#1674).
The GModelSpectral eval() and eval_gradients() methods use an empty GTim()
object as default time argument since all spectral models are so far time-
independent. This avoids that a user needs to specify a dummy time argument
(#1672).
The set_mc_cone() methods of the GModelSpatialDiffuseCube class and the
GModelSpatialDiffuseMap class now recompute only the Monte Carlo acceptance
cone in case that the cone centre or radius have changed since the last
computation. This speeds up the computations (#1673).
The GModelSpatialDiffuseCube::mc() method now uses a rejection method for
simulating sky directions, which makes the MC method identical to the model
evaluation method, using in both cases a log-log interpolation. The simulation
cone is now used for Monte Carlo simulations (#1722).
Also the GModelSpatialDiffuseMap::mc() method now uses a rejection method for
simulating sky directions (#1725).
The methods spatial(), spectral() and temporal() have been added to GModelSky
to allow setting of model components.
Private methods GModel::read_attributes() and GModel::write_attributes() have
been added to centralize the reading and writing of model attributes. These
methods are now called at all relevant places, reducing code duplication and
assuring that all attributes are correctly read by all classes and constructors
(#1765).
9. Numerics module
------------------
None
10. Observation module
----------------------
A non-const GObservation::events() method has been added to allow for
the manipulation of events within an observation without the need to
create a local copy.
The argument of GObservation::deadc(GTime) now defaults to GTime() so
that no argument is needed when calling the method. This reflects the
fact that the deadtime correction is often computed as an average value
over the observation, and does in fact not depend on time (#1670).
The GTime operators have been revised as time is implemented as an
absolute quantity, while addition and subtraction of GTime objects are
relative operations. The GTime arguments of the operators have thus be
replaced by double precision values that specify relative time in seconds.
The multiplication and division operators have been removed (#1714).
The GObservations::nobserved() method has been added that returns the
total number of events in an observation container. The method is used
by the print() method. The method uses the GObservation::nobserved()
method that have also been added to determine for each observation
the number of observed events (#1723).
A division operator has been added to the GEnergy method to compute the
ratio of two energies.
11. Optimization module
-----------------------
None
12. Sky module
--------------
The GSkyMap load() and save() methods now support the handling of FITS
extension names. Users can now specify with which extension name a sky
map is written to a FITS file, and from which extension name it should
be loaded. This allows to have multiple sky maps in the same file, and
to mix also HEALPix and WCS maps in the same file (#1695).
A GSkyMap::publish() method has been added that publishes the sky map
on a Virtual Observatory Hub. This finally makes GammaLib interoperable
with VO imaging tools (#1231).
A shape member was added to the GSkyMap class to enable handling of
images with more than 3 dimensions. The shape() methods set or retrieve
the number of maps in each of the dimensions, the ndim() method returns
the number of dimensions. Note that a longitude and latitude dimensions
are not counted in the map dimensions, i.e. a 3D image cube with
longitude, latitude and a number of maps has a dimension of 1 (#1733).
An optional extname argument has been added to the GSkyMap::save() method
so that the extension name can be set (#1787).
The Orthographic/synthesis (SIN) projection has been added to the WCS
projections (#1798).
13. Support module
------------------
The GFilename class has been extended and some methods have been renamed.
The full filename including and FITS extension is now returned by an
implicit type conversion operator std::string(). The filename() method has
been renamed to url(), and the methods exists(), is_fits() and remove()
have been added to replace functions of the GTools module that were used
for this purpose in the past. Furthermore, the method protocol() returns
the access protocol (e.g. http, ftp, file) of the file name, the method
path() returns the path of th file name, and the method file() returns the
file name without the path.
Put FITS access in a critical OMP zone to make GFilename::is_fits() thread
safe (#1717).
The gammalib::number() function was added to convert a singular noun into
a plural noun is the number of instances of the noun is not one (#1743).
The GCsv::append() method appends a list of strings to a CSV file. This allow
easy creation of a CSV file, in particular from Python lists (#1773).
14. XML module
--------------
The GXmlAttribute class does no longer store the hyphens of an attribute, but
the hyphens are stripped upon construction, and added back when writing the
attribute into a URL. The side effect of this new behaviour is that XML test
reports are also written in case that an exception has occured during a unit
test (#1746).
15. VO module
-------------
A GVOClient::publish() method was added that allows publishing of a FITS
image to the Hub. The FITS image will be saved into a temporary storage
location and the Hub will be informed that an image is available.
16. Xspec module
----------------
None
17. Test module
---------------
A GTestSuite::test_value() method has been added for strings to simplify the
writing of test cases for string comparison (#1772).
18. Multi-wavelength interface
------------------------------
None
19. Fermi-LAT interface
----------------------
Pass 8 response function and data are now supported. The LAT module has been
adapted so that event types can be handled. Note that the fisheye effect is
not taken into account (#1517).
20. CTA interface
-----------------
The response table instrument response functions now rely on the FITS table
column names to determine the information instead of hard-wired column indices
(#1656).
Event fetching and disposal has been implemented in the GCTAEventList class by
additing the fetch() and dispose() methods. Now, events are only loaded upon
request and can be dispatched after user to save memory. The event fetching and
disposal logic has been removed from GCTAObservation (#1648).
Add GCTAEventList::remove() method to remove events from an event list.
The GCTAEventList::append() method now also appends empty elements to the
additional columns so that all event list columns have finally the same length.
The GCTAEdisp2D::compute_ebounds_obs() and GCTAEdisp2::compute_ebounds_src()
methods have been corrected so that they return the energy intervals covered by
valid matrix elements. With the code before there were problems with not setting
correctly the maximum energies of the intervals (#1662).
The extension name for the GTI HDU is now determined from the data sub-space
keyword provided in the events FITS file header. This allows to have multiple
GTIs (and also event lists) in a single FITS file. We do however require that
the event and GTI extension reside in the same FITS file. The name of the GTI
extension can be recovered using the GCTAEventList::gtiname() method. This
satisfies the feature request #1598.
A second variant of a write() method has been added to GCTAEventList that allows
specifying the events and Good Time Intervals FITS extension names. The standard
write() method will call this new write() method using the events extension name
extracted from the file name and the GTI extension name set by the m_gti_extname
member. The GCTAObservation::write() method was also extended and now has two
optional arguments that allow specifying the events and Good Time Interval FITS
extension names. These are simply forwared to the new GCTAEventList::write().
The GCTAObservation::save() method has now a special logic that decodes any
optionally specified extension in the format [EVENTS;GTI] into an events and a
Good Time Intervals extension name. These changes satisfy the feature request
#1598.
A rejection method is now used in GCTABackground3D::mc() to assure that the Monte
Carlo simulated instrument directions are identical to the model evaluations
(#1722).
Add GCTACubeEdisp class that computes the mean energy dispersion for a stacked
analysis. This class is now used in GCTAResponseCube to take into account the
energy dispersion is a stacked analysis (#1721).
A filename constructor has been added to GCTAObservation that allows constructing
a CTA observation from an event list or a counts cube. A dummy argument has been
added to the instrument constructor so that it does not conflict with the filename
constructor (#1744).
The interpolation scheme was changed in GCTABackground3D. Formerly, if one of the
rates above and below the requested energy was zero, the rate from the non-zero
node was taken, resulting in a discontinuity. Now the rate is set to zero.
The classes GCTACubePsf and GCTACubeEdisp now save the information in 4D images
instead of folding two dimension in a single dimension of a 3D image.
The GCTAOnOffObservations container class has now been removed, as On/Off observations
are now stored as any other observation in the GObservations container (#1669).
The On/Off fitting of CTA data has now been implemented (#1044).
The GCTAPsfTable class has been added to support non-parametric point spread function
histograms (#1786).
The classes GCTACubeExposure, GCTACubePsf and GCTACubeBackground store response values
for given sets of energies, and now the energies are written into the FITS files instead
of the energy boundaries enclosing these energies. This provides a more explicit storage
of the response information, as before the energies had to be inferred from the energy
boundaries of the bins (#1788).
The GCTACubeExposure::elogmeans(), GCTACubePsf::elogmeans(), and GCTACubeBackground::elogmeans()
methods have been removed as the energies() methods provide now essentially the same
information.
A weight sky map has been added to the CTA event cube, and the weight of each bin is
multiplied to the bin size in the GCTAEventBin::size() method so that model values are
weigthed according to the bin weight. This enables the usage of only partially covered
bins, arising for example from different energy thresholds or ROIs (#1789).
The cube response classes GCTACubeExposure, GCTACubePsf, GCTACubeEdisp and
GCTACubeBackground do no longer select on RoI and energy boundaries as this is now
handled by the weight array (#1789).
The GCTAAeff2D class no longer extrapolates the effective area beyond the boundaries
of the response table, but sets the effective area values to zero (#1784).
21. COMPTEL interface
---------------------
None