Commit 8ae9a2afa32debf52362318e782ab9c25fce2e50

Authored by Jürgen Knödlseder
1 parent 07570657

Write back model parameter names that were read (#1820)

Showing 49 changed files with 556 additions and 548 deletions
ChangeLog
1   -2016-07-18 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu>
  1 +2016-07-19 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu>
2 2  
3 3 * Version 1.1.0 released
4 4 =========================
5 5  
  6 + Write same XML element names than those that were read (#1820)
6 7 Rename spatial model components (#1818)
7 8 Fix consistency problem in GCTABackground3D (#1815)
8 9 Models accessing file now support relative file names (#1808)
... ...
... ... @@ -2,7 +2,7 @@ New Features and Important Changes in GammaLib 1.1.0
2 2  
3 3 Author(s) : Juergen Knoedlseder
4 4  
5   -18 July 2016
  5 +19 July 2016
6 6  
7 7  
8 8 1. Introduction
... ... @@ -233,6 +233,9 @@ By default the old model names are still supported. Support of the old model
233 233 names can be turned off by specifying the --disable-legacy-model-names option
234 234 to the ./configure script (#1818).
235 235  
  236 +The model classes now write the same XML element names than those that were read
  237 +in. In that way a maximum legacy for the Fermi/LAT data format is assured (#1820).
  238 +
236 239  
237 240 9. Numerics module
238 241 ------------------
... ...
README.md
1 1 GammaLib information
2 2 ====================
3   -* Version: 1.1.0.dev1 (18 July 2016)
  3 +* Version: 1.1.0.dev1 (19 July 2016)
4 4 * Author: Juergen Knoedlseder (jurgen.knodlseder@irap.omp.eu)
5 5  
6 6 [![Build Status](https://cta-jenkins.irap.omp.eu/buildStatus/icon?job=gammalib-integrate-os)](https://cta-jenkins.irap.omp.eu/job/gammalib-integrate-os/)
... ...
dev/testreport.py 0 → 100755
  1 +#! /usr/bin/env python
  2 +# ==========================================================================
  3 +# Display test reports
  4 +#
  5 +# Copyright (C) 2016 Juergen Knoedlseder
  6 +#
  7 +# This program is free software: you can redistribute it and/or modify
  8 +# it under the terms of the GNU General Public License as published by
  9 +# the Free Software Foundation, either version 3 of the License, or
  10 +# (at your option) any later version.
  11 +#
  12 +# This program is distributed in the hope that it will be useful,
  13 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15 +# GNU General Public License for more details.
  16 +#
  17 +# You should have received a copy of the GNU General Public License
  18 +# along with this program. If not, see <http://www.gnu.org/licenses/>.
  19 +#
  20 +# ==========================================================================
  21 +import glob
  22 +import gammalib
  23 +
  24 +
  25 +# ====================== #
  26 +# Report test case error #
  27 +# ====================== #
  28 +def report_one_error(name, xml):
  29 + """
  30 + Report test case error
  31 +
  32 + Parameters
  33 + ----------
  34 + name : str
  35 + Test case name
  36 + xml : gammalib.GXmlElement
  37 + Error XML element
  38 + """
  39 + # Extract information
  40 + message = xml.attribute('message')
  41 + type = xml.attribute('type')
  42 +
  43 + # Print error information
  44 + print(' Error in %s: %s (%s)' % (name, message, type))
  45 +
  46 + # Return
  47 + return
  48 +
  49 +
  50 +# ======================== #
  51 +# Report test case failure #
  52 +# ======================== #
  53 +def report_one_failure(name, xml):
  54 + """
  55 + Report test case failure
  56 +
  57 + Parameters
  58 + ----------
  59 + name : str
  60 + Test case name
  61 + xml : gammalib.GXmlElement
  62 + Failure XML element
  63 + """
  64 + # Extract information
  65 + message = xml.attribute('message')
  66 + type = xml.attribute('type')
  67 +
  68 + # Print failure information
  69 + print(' Failure in %s: %s (%s)' % (name, message, type))
  70 +
  71 + # Return
  72 + return
  73 +
  74 +
  75 +# ======================= #
  76 +# Report test case result #
  77 +# ======================= #
  78 +def report_one_test_case(xml):
  79 + """
  80 + Report test case result
  81 +
  82 + Parameters
  83 + ----------
  84 + xml : gammalib.GXmlElement
  85 + Test case XML element
  86 + """
  87 + # Extract test case information
  88 + name = xml.attribute('name')
  89 + errors = int(xml.elements('error'))
  90 + failures = int(xml.elements('failure'))
  91 +
  92 + # If there are errors then display them
  93 + if errors > 0:
  94 + num = int(xml.elements('error'))
  95 + for i in range(num):
  96 + error = xml.element('error[%d]' % i)
  97 + report_one_error(name, error)
  98 +
  99 + # If there are failures then display them
  100 + if failures > 0:
  101 + num = int(xml.elements('failure'))
  102 + for i in range(num):
  103 + failure = xml.element('failure[%d]' % i)
  104 + report_one_failure(name, failure)
  105 +
  106 + # Return
  107 + return
  108 +
  109 +
  110 +# ========================= #
  111 +# Report test suite results #
  112 +# ========================= #
  113 +def report_one_test_suite(xml):
  114 + """
  115 + Report test suite result
  116 +
  117 + Parameters
  118 + ----------
  119 + xml : gammalib.GXmlElement
  120 + Test suite XML element
  121 + """
  122 + # Extract test suite information
  123 + name = xml.attribute('name')
  124 + errors = int(xml.attribute('errors'))
  125 + failures = int(xml.attribute('failures'))
  126 +
  127 + # If there are errors or failures then print them
  128 + if errors > 0 or failures > 0:
  129 +
  130 + # Print header
  131 + if errors == 0:
  132 + print('%d failures occured in module "%s":' %
  133 + (failures, name))
  134 + elif failures == 0:
  135 + print('%d errors occured in module "%s":' %
  136 + (errors, name))
  137 + else:
  138 + print('%d errors and %d failures occured in module "%s":' %
  139 + (errors, failures, name))
  140 +
  141 + # Determine number of test cases
  142 + num = int(xml.elements('testcase'))
  143 +
  144 + # Loop over all test cases
  145 + for i in range(num):
  146 +
  147 + # Get test case
  148 + case = xml.element('testcase[%d]' % i)
  149 +
  150 + # Report test case result
  151 + report_one_test_case(case)
  152 +
  153 + # Return
  154 + return
  155 +
  156 +
  157 +# ====================== #
  158 +# Report one test result #
  159 +# ====================== #
  160 +def report_one_test_result(file):
  161 + """
  162 + Report one test result
  163 +
  164 + Parameters
  165 + ----------
  166 + file : str
  167 + Test result file
  168 + """
  169 + # Open XML file
  170 + xml = gammalib.GXml(file)
  171 +
  172 + # Determine number of testsuites
  173 + num = int(xml.element('testsuites').elements('testsuite'))
  174 +
  175 + # Loop over all test suites
  176 + for i in range(num):
  177 +
  178 + # Get test suite
  179 + suite = xml.element('testsuites > testsuite[%d]' % i)
  180 +
  181 + # Report test suite result
  182 + report_one_test_suite(suite)
  183 +
  184 + # Return
  185 + return
  186 +
  187 +
  188 +# =================== #
  189 +# Report test results #
  190 +# =================== #
  191 +def report_test_results(path, pattern="*.xml"):
  192 + """
  193 + Report test results
  194 +
  195 + Parameters
  196 + ----------
  197 + path : str
  198 + Directory containing test results
  199 + pattern : str, optional
  200 + Test report pattern
  201 + """
  202 + # Get list of test reports
  203 + reports = glob.glob(path+'/'+pattern)
  204 +
  205 + # Loop over all reports
  206 + for report in reports:
  207 + report_one_test_result(report)
  208 +
  209 + # Return
  210 + return
  211 +
  212 +
  213 +# ======================== #
  214 +# Main routine entry point #
  215 +# ======================== #
  216 +if __name__ == '__main__':
  217 +
  218 + # Print header
  219 + print('')
  220 + print('GammaLib test reports')
  221 + print('=====================')
  222 +
  223 + # Report test results
  224 + report_test_results('test/reports')
... ...
inst/com/test/data/crab.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Crab" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-3" value="1.0" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.05" min="0.0" max="+5.0" free="0"/>
7   - <parameter name="Scale" scale="1.0" value="1.0" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-3" value="1.0" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.05" min="0.0" max="+5.0" free="0"/>
  7 + <parameter name="PivotEnergy" scale="1.0" value="1.0" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ...
inst/cta/test/data/crab.xml
1 1 <?xml version="1.0" standalone="no"?>
2 2 <source_library title="source library">
3   - <source name="MAGIC Crab (Albert et al. 2008, ApJ, 674, 1037)" type="PointSource">
  3 + <source name="Crab" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
... ... @@ -13,9 +13,9 @@
13 13 </source>
14 14 <source name="Background" type="RadialAcceptance" instrument="CTA">
15 15 <spectrum type="PowerLaw">
16   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
17   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
18   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  16 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  17 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  18 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
19 19 </spectrum>
20 20 <radialModel type="Gaussian">
21 21 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/crab_disk.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Gaussian Crab" type="ExtendedSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="RadialDisk">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ... @@ -14,9 +14,9 @@
14 14 </source>
15 15 <source name="Background" type="RadialAcceptance" instrument="CTA">
16 16 <spectrum type="PowerLaw">
17   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
18   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
19   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  17 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  18 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  19 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
20 20 </spectrum>
21 21 <radialModel type="Gaussian">
22 22 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/crab_edisk.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Gaussian Crab" type="ExtendedSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="EllipticalDisk">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ... @@ -16,9 +16,9 @@
16 16 </source>
17 17 <source name="Background" type="RadialAcceptance" instrument="CTA">
18 18 <spectrum type="PowerLaw">
19   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
20   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
21   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  19 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  20 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  21 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
22 22 </spectrum>
23 23 <radialModel type="Gaussian">
24 24 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/crab_eplaw.xml
... ... @@ -2,10 +2,10 @@
2 2 <source_library title="source library">
3 3 <source name="MAGIC Crab" type="PointSource">
4 4 <spectrum type="ExpCutoff">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Cutoff" scale="1e6" value="1.0" min="0.01" max="1000.0" free="1"/>
8   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="Cutoff" scale="1e6" value="1.0" min="0.01" max="1000.0" free="1"/>
  8 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
9 9 </spectrum>
10 10 <spatialModel type="PointSource">
11 11 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
... ... @@ -14,9 +14,9 @@
14 14 </source>
15 15 <source name="Background" type="RadialAcceptance" instrument="CTA">
16 16 <spectrum type="PowerLaw">
17   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
18   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
19   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  17 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  18 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  19 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
20 20 </spectrum>
21 21 <radialModel type="Gaussian">
22 22 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/crab_file_function.xml
... ... @@ -11,9 +11,9 @@
11 11 </source>
12 12 <source name="Background" type="RadialAcceptance" instrument="CTA">
13 13 <spectrum type="PowerLaw">
14   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
15   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
16   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  14 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  15 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  16 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
17 17 </spectrum>
18 18 <radialModel type="Gaussian">
19 19 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/crab_file_function_mod.xml
... ... @@ -11,9 +11,9 @@
11 11 </source>
12 12 <source name="Background" type="RadialAcceptance" instrument="CTA">
13 13 <spectrum type="PowerLaw">
14   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
15   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
16   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  14 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  15 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  16 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
17 17 </spectrum>
18 18 <radialModel type="Gaussian">
19 19 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/crab_gauss.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Gaussian Crab" type="ExtendedSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="RadialGaussian">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ... @@ -14,9 +14,9 @@
14 14 </source>
15 15 <source name="Background" type="RadialAcceptance" instrument="CTA">
16 16 <spectrum type="PowerLaw">
17   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
18   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
19   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  17 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  18 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  19 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
20 20 </spectrum>
21 21 <radialModel type="Gaussian">
22 22 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/crab_irf.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Crab" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
... ... @@ -13,9 +13,9 @@
13 13 </source>
14 14 <source name="Background" type="CTAIrfBackground" instrument="CTA">
15 15 <spectrum type="PowerLaw">
16   - <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-3" max="1e3" free="1"/>
17   - <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
18   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  16 + <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-3" max="1e3" free="1"/>
  17 + <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
  18 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
19 19 </spectrum>
20 20 </source>
21 21 </source_library>
... ...
inst/cta/test/data/crab_poly.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="MAGIC Crab (Albert et al. 2008, ApJ, 674, 1037)" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
... ... @@ -13,9 +13,9 @@
13 13 </source>
14 14 <source name="Background" type="RadialAcceptance" instrument="CTA">
15 15 <spectrum type="PowerLaw">
16   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
17   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
18   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  16 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  17 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  18 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
19 19 </spectrum>
20 20 <radialModel type="Polynom">
21 21 <parameter name="Coeff0" scale="1.0" value="+1.00000" min="-10.0" max="10.0" free="0"/>
... ...
inst/cta/test/data/crab_profile.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="MAGIC Crab (Albert et al. 2008, ApJ, 674, 1037)" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
... ... @@ -13,9 +13,9 @@
13 13 </source>
14 14 <source name="Background" type="RadialAcceptance" instrument="CTA">
15 15 <spectrum type="PowerLaw">
16   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
17   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
18   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  16 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  17 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  18 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
19 19 </spectrum>
20 20 <radialModel type="Profile">
21 21 <parameter name="Width" scale="1.0" value="1.5" min="0.1" max="1000.0" free="1"/>
... ...
inst/cta/test/data/crab_ptsrc.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Crab (point source)" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
... ... @@ -13,9 +13,9 @@
13 13 </source>
14 14 <source name="Background" type="RadialAcceptance" instrument="CTA">
15 15 <spectrum type="PowerLaw">
16   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
17   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
18   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  16 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  17 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  18 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
19 19 </spectrum>
20 20 <radialModel type="Gaussian">
21 21 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/crab_shell.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Gaussian Crab" type="ExtendedSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="RadialShell">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ... @@ -15,9 +15,9 @@
15 15 </source>
16 16 <source name="Background" type="RadialAcceptance" instrument="CTA">
17 17 <spectrum type="PowerLaw">
18   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
19   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
20   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  18 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  19 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  20 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
21 21 </spectrum>
22 22 <radialModel type="Gaussian">
23 23 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/cta_model_aeff_bgd.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="My model" type="CTAAeffBackground" instrument="CTA">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-14" value="1.0" min="1e-3" max="1e3" free="1"/>
6   - <parameter name="Index" scale="1.0" value="-2.4" min="-5.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-14" value="1.0" min="1e-3" max="1e3" free="1"/>
  6 + <parameter name="Index" scale="1.0" value="-2.4" min="-5.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 </source>
10 10 </source_library>
... ...
inst/cta/test/data/cta_model_cube_bgd.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="CTABackgroundModel" type="CTACubeBackground" instrument="CTA">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-10" max="1e3" free="1"/>
6   - <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-10" max="1e3" free="1"/>
  6 + <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 </source>
10 10 </source_library>
... ...
inst/cta/test/data/cta_model_irf_bgd.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="My model" type="CTAIrfBackground" instrument="CTA">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-3" max="1e3" free="1"/>
6   - <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-3" max="1e3" free="1"/>
  6 + <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 </source>
10 10 </source_library>
... ...
inst/cta/test/data/onoff_model.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Crab" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="0"/>
... ... @@ -13,9 +13,9 @@
13 13 </source>
14 14 <source name="Background" type="CTAIrfBackground" instrument="CTAOnOff">
15 15 <spectrum type="PowerLaw">
16   - <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-3" max="1e3" free="1"/>
17   - <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
18   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  16 + <parameter name="Prefactor" scale="1.0" value="1.0" min="1e-3" max="1e3" free="1"/>
  17 + <parameter name="Index" scale="1.0" value="0.0" min="-5.0" max="+5.0" free="1"/>
  18 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
19 19 </spectrum>
20 20 </source>
21 21 </source_library>
... ...
inst/cta/test/data/radio.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Crab radio template" type="DiffuseSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="DiffuseMap" file="radio_map.fits">
10 10 <parameter scale="1" name="Prefactor" min="0.001" max="1000.0" value="1" free="0"/>
... ... @@ -12,9 +12,9 @@
12 12 </source>
13 13 <source name="Background" type="RadialAcceptance" instrument="CTA">
14 14 <spectrum type="PowerLaw">
15   - <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
16   - <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
17   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  15 + <parameter name="Prefactor" scale="1e-6" value="61.8" min="0.0" max="1000.0" free="1"/>
  16 + <parameter name="Index" scale="-1" value="1.85" min="0.0" max="+5.0" free="1"/>
  17 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
18 18 </spectrum>
19 19 <radialModel type="Gaussian">
20 20 <parameter name="Sigma" scale="1.0" value="3.0" min="0.01" max="10.0" free="1"/>
... ...
inst/cta/test/data/rsp_models.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Cen A lobes" type="DiffuseSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="DiffuseMap" file="cena_lobes_parkes.fits">
10 10 <parameter scale="1" name="Prefactor" min="0.001" max="1000.0" value="1" free="0"/>
... ...
inst/cta/test/data/stacked_model.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Crab" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" value="5.7" error="0" scale="1e-16" min="1e-07" max="1000" free="1" />
6   - <parameter name="Index" value="2.48" error="0" scale="-1" min="0" max="5" free="1" />
7   - <parameter name="Scale" value="0.3" scale="1e+06" min="0.01" max="1000" free="0" />
  5 + <parameter name="Prefactor" value="5.7" scale="1e-16" min="1e-07" max="1000" free="1" />
  6 + <parameter name="Index" value="2.48" scale="-1" min="0" max="5" free="1" />
  7 + <parameter name="PivotEnergy" value="0.3" scale="1e+06" min="0.01" max="1000" free="0" />
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter name="RA" value="83.6331" scale="1" min="-360" max="360" free="0" />
... ... @@ -13,9 +13,9 @@
13 13 </source>
14 14 <source name="BackgroundModel" type="CTACubeBackground" instrument="CTA,HESS,MAGIC,VERITAS">
15 15 <spectrum type="PowerLaw">
16   - <parameter name="Prefactor" value="1" error="0" scale="1" min="0.01" max="100" free="1" />
17   - <parameter name="Index" value="0" error="0" scale="1" min="-5" max="5" free="1" />
18   - <parameter name="Scale" value="1" scale="1e+06" free="0" />
  16 + <parameter name="Prefactor" value="1" scale="1" min="0.01" max="100" free="1" />
  17 + <parameter name="Index" value="0" scale="1" min="-5" max="5" free="1" />
  18 + <parameter name="PivotEnergy" value="1" scale="1e+06" min="0.01" max="1000" free="0" />
19 19 </spectrum>
20 20 </source>
21 21 </source_library>
... ...
inst/mwl/test/data/crab.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="1FGL J0005.7+3815" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ...
inst/mwl/test/data/crab_mwl.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Crab synchroton" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-03" name="Prefactor" min="1e-07" max="1000.0" value="1.0" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-3.0" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="1e-07" max="1e20" value="1.0" free="0"/>
  5 + <parameter scale="1e-03" name="Prefactor" min="1e-07" max="1000.0" value="1.0" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-3.0" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="1e-07" max="1e20" value="1.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ... @@ -13,9 +13,9 @@
13 13 </source>
14 14 <source name="Crab inverse Compton" type="PointSource">
15 15 <spectrum type="PowerLaw">
16   - <parameter scale="1e-12" name="Prefactor" min="1e-07" max="1000.0" value="1.0" free="1"/>
17   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-1.5" free="1"/>
18   - <parameter scale="1.0" name="Scale" min="1e-07" max="1e20" value="1000.0" free="0"/>
  16 + <parameter scale="1e-12" name="Prefactor" min="1e-07" max="1000.0" value="1.0" free="1"/>
  17 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-1.5" free="1"/>
  18 + <parameter scale="1.0" name="PivotEnergy" min="1e-07" max="1e20" value="1000.0" free="0"/>
19 19 </spectrum>
20 20 <spatialModel type="PointSource">
21 21 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ...
inst/mwl/test/data/crab_mwl2.xml
... ... @@ -2,10 +2,10 @@
2 2 <source_library title="source library">
3 3 <source name="Crab synchroton" type="PointSource">
4 4 <spectrum type="ExpCutoff">
5   - <parameter scale="1e-03" name="Prefactor" min="1e-07" max="1000.0" value="1.0" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-3.0" free="1"/>
7   - <parameter scale="1.0" name="Cutoff" min="1.0" max="100000.0" value="100.0" free="1"/>
8   - <parameter scale="1.0" name="Scale" min="1e-07" max="1e20" value="1.0" free="0"/>
  5 + <parameter scale="1e-03" name="Prefactor" min="1e-07" max="1000.0" value="1.0" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-3.0" free="1"/>
  7 + <parameter scale="1.0" name="Cutoff" min="1.0" max="100000.0" value="100.0" free="1"/>
  8 + <parameter scale="1.0" name="PivotEnergy" min="1e-07" max="1e20" value="1.0" free="0"/>
9 9 </spectrum>
10 10 <spatialModel type="PointSource">
11 11 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ... @@ -14,9 +14,9 @@
14 14 </source>
15 15 <source name="Crab inverse Compton" type="PointSource">
16 16 <spectrum type="PowerLaw">
17   - <parameter scale="1e-12" name="Prefactor" min="1e-07" max="1000.0" value="1.0" free="1"/>
18   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-1.2" free="1"/>
19   - <parameter scale="1.0" name="Scale" min="1e-07" max="1e20" value="1000.0" free="0"/>
  17 + <parameter scale="1e-12" name="Prefactor" min="1e-07" max="1000.0" value="1.0" free="1"/>
  18 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-1.2" free="1"/>
  19 + <parameter scale="1.0" name="PivotEnergy" min="1e-07" max="1e20" value="1000.0" free="0"/>
20 20 </spectrum>
21 21 <spatialModel type="PointSource">
22 22 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ...
src/model/GModelPar.cpp
1 1 /***************************************************************************
2 2 * GModelPar.cpp - Model parameter class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2009-2013 by Juergen Knoedlseder *
  4 + * copyright (C) 2009-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -217,17 +217,28 @@ GModelPar* GModelPar::clone(void) const
217 217 *
218 218 * Each of the attributes are optional, with the following scheme for
219 219 * assigning default values in case that the attribute was not found:
220   - * - @p value sets @p m_factor_value (defaults to 0.0)
221   - * - @p error sets @p m_factor_error (defaults to 0.0)
222   - * - @p scale sets @p m_scale (defaults to 1.0)
223   - * - @p min sets @p m_factor_min (will remove_min() if not found)
224   - * - @p max sets @p m_factor_max (will remove_max() if not found)
225   - * - @p free sets @p m_free (papameter will be fixed if not found)
  220 + *
  221 + * @p name sets @p m_name (defaults to "Unknown")
  222 + * @p value sets @p m_factor_value (defaults to 0.0)
  223 + * @p error sets @p m_factor_error (defaults to 0.0)
  224 + * @p scale sets @p m_scale (defaults to 1.0)
  225 + * @p min sets @p m_factor_min (will remove_min() if not found)
  226 + * @p max sets @p m_factor_max (will remove_max() if not found)
  227 + * @p free sets @p m_free (papameter will be fixed if not found)
226 228 ***************************************************************************/
227 229 void GModelPar::read(const GXmlElement& xml)
228 230 {
  231 + // Get name
  232 + std::string arg = xml.attribute("name");
  233 + if (arg != "") {
  234 + m_name = arg;
  235 + }
  236 + else {
  237 + m_name = "Unknown";
  238 + }
  239 +
229 240 // Get value
230   - std::string arg = xml.attribute("value");
  241 + arg = xml.attribute("value");
231 242 if (arg != "") {
232 243 m_factor_value = gammalib::todouble(arg);
233 244 }
... ... @@ -330,15 +341,20 @@ void GModelPar::read(const GXmlElement&amp; xml)
330 341 * <parameter name=".." value=".." error=".." scale=".." min=".." max="..' free="..">
331 342 *
332 343 * The following attributes will be set:
333   - * - @p value
334   - * - @p error (only in case that the parameter is free)
335   - * - @p scale
336   - * - @p min (only in case that a minimum exists)
337   - * - @p max (only in case that a maximum exists)
338   - * - @p free
  344 + *
  345 + * @p name
  346 + * @p value
  347 + * @p error (only in case that the parameter is free)
  348 + * @p scale
  349 + * @p min (only in case that a minimum exists)
  350 + * @p max (only in case that a maximum exists)
  351 + * @p free
339 352 ***************************************************************************/
340 353 void GModelPar::write(GXmlElement& xml) const
341 354 {
  355 + // Set name
  356 + xml.attribute("name", m_name);
  357 +
342 358 // Set value
343 359 xml.attribute("value", gammalib::str(m_factor_value));
344 360  
... ...
src/model/GModelSpectralConst.cpp
... ... @@ -466,57 +466,31 @@ void GModelSpectralConst::read(const GXmlElement&amp; xml)
466 466 *
467 467 * @exception GException::model_invalid_spectral
468 468 * Existing XML element is not of type "ConstantValue"
469   - * @exception GException::model_invalid_parnum
470   - * Invalid number of model parameters or nodes found in XML element.
471   - * @exception GException::model_invalid_parnames
472   - * Invalid model parameter names found in XML element.
473 469 *
474 470 * Writes the spectral information into an XML element with the format
475 471 *
476 472 * <spectrum type="ConstantValue">
477   - * <parameter name="Value" scale="1" min="0" max="1000" value="1" free="1"/>
  473 + * <parameter name="Normalization" scale="1" min="0" max="1000" value="1" free="1"/>
478 474 * </spectrum>
479 475 ***************************************************************************/
480 476 void GModelSpectralConst::write(GXmlElement& xml) const
481 477 {
482 478 // Set model type
483 479 if (xml.attribute("type") == "") {
484   - xml.attribute("type", "ConstantValue");
  480 + xml.attribute("type", type());
485 481 }
486 482  
487 483 // Verify model type
488   - if (xml.attribute("type") != "ConstantValue") {
  484 + if (xml.attribute("type") != type()) {
489 485 throw GException::model_invalid_spectral(G_WRITE, xml.attribute("type"),
490   - "Spectral model is not of type \"ConstantValue\".");
491   - }
492   -
493   - // If XML element has 0 nodes then append parameter node. The name
494   - // of the node is "Value" as this is the Fermi-LAT standard.
495   - // We thus assure that the XML files will be compatible with
496   - // Fermi-LAT.
497   - if (xml.elements() == 0) {
498   - xml.append(GXmlElement("parameter name=\"Value\""));
  486 + "Spectral model is not of type \""+type()+"\".");
499 487 }
500 488  
501   - // Verify that XML element has exactly 1 parameter
502   - if (xml.elements() != 1 || xml.elements("parameter") != 1) {
503   - throw GException::model_invalid_parnum(G_WRITE, xml,
504   - "Spectral constant requires exactly 1 parameter.");
505   - }
  489 + // Get normalisation parameter
  490 + GXmlElement* par = gammalib::xml_need_par(G_WRITE, xml, m_norm.name());
506 491  
507   - // Get parameter element
508   - GXmlElement* par = xml.element("parameter", 0);
509   -
510   - // Set parameyter
511   - if (par->attribute("name") == "Normalization" ||
512   - par->attribute("name") == "Value") {
513   - m_norm.write(*par);
514   - }
515   - else {
516   - throw GException::model_invalid_parnames(G_WRITE, xml,
517   - "Spectral constant requires either"
518   - " \"Normalization\" or \"Value\" parameter.");
519   - }
  492 + // Write normalisation parameter
  493 + m_norm.write(*par);
520 494  
521 495 // Return
522 496 return;
... ...
src/model/GModelSpectralExpPlaw.cpp
... ... @@ -575,10 +575,10 @@ GEnergy GModelSpectralExpPlaw::mc(const GEnergy&amp; emin,
575 575 * elements is
576 576 *
577 577 * <spectrum type="ExpCutoff">
578   - * <parameter name="Prefactor" scale=".." value=".." min=".." max=".." free=".."/>
579   - * <parameter name="Index" scale=".." value=".." min=".." max=".." free=".."/>
580   - * <parameter name="Cutoff" scale=".." value=".." min=".." max=".." free=".."/>
581   - * <parameter name="Scale" scale=".." value=".." min=".." max=".." free=".."/>
  578 + * <parameter name="Prefactor" ../>
  579 + * <parameter name="Index" ../>
  580 + * <parameter name="Cutoff" ../>
  581 + * <parameter name="PivotEnergy" ../>
582 582 * </spectrum>
583 583 ***************************************************************************/
584 584 void GModelSpectralExpPlaw::read(const GXmlElement& xml)
... ... @@ -615,7 +615,8 @@ void GModelSpectralExpPlaw::read(const GXmlElement&amp; xml)
615 615 }
616 616  
617 617 // Handle pivot energy
618   - else if (par->attribute("name") == "Scale") {
  618 + else if ((par->attribute("name") == "Scale") ||
  619 + (par->attribute("name") == "PivotEnergy")) {
619 620 m_pivot.read(*par);
620 621 npar[3]++;
621 622 }
... ... @@ -626,7 +627,7 @@ void GModelSpectralExpPlaw::read(const GXmlElement&amp; xml)
626 627 if (npar[0] != 1 || npar[1] != 1 || npar[2] != 1 || npar[3] != 1) {
627 628 throw GException::model_invalid_parnames(G_READ, xml,
628 629 "Require \"Prefactor\", \"Index\", \"Cutoff\" and \"Scale\""
629   - " parameters.");
  630 + " or \"PivotEnergy\" parameters.");
630 631 }
631 632  
632 633 // Return
... ... @@ -650,78 +651,36 @@ void GModelSpectralExpPlaw::read(const GXmlElement&amp; xml)
650 651 * element is
651 652 *
652 653 * <spectrum type="ExpCutoff">
653   - * <parameter name="Prefactor" scale=".." value=".." min=".." max=".." free=".."/>
654   - * <parameter name="Index" scale=".." value=".." min=".." max=".." free=".."/>
655   - * <parameter name="Cutoff" scale=".." value=".." min=".." max=".." free=".."/>
656   - * <parameter name="Scale" scale=".." value=".." min=".." max=".." free=".."/>
  654 + * <parameter name="Prefactor" ../>
  655 + * <parameter name="Index" ../>
  656 + * <parameter name="Cutoff" ../>
  657 + * <parameter name="PivotEnergy" ../>
657 658 * </spectrum>
658 659 ***************************************************************************/
659 660 void GModelSpectralExpPlaw::write(GXmlElement& xml) const
660 661 {
661 662 // Set model type
662 663 if (xml.attribute("type") == "") {
663   - xml.attribute("type", "ExpCutoff");
  664 + xml.attribute("type", type());
664 665 }
665 666  
666 667 // Verify model type
667   - if (xml.attribute("type") != "ExpCutoff") {
  668 + if (xml.attribute("type") != type()) {
668 669 throw GException::model_invalid_spectral(G_WRITE, xml.attribute("type"),
669   - "Spectral model is not of type \"ExpCutoff\".");
  670 + "Spectral model is not of type \""+type()+"\".");
670 671 }
671 672  
672   - // If XML element has 0 nodes then append 4 parameter nodes
673   - if (xml.elements() == 0) {
674   - xml.append(GXmlElement("parameter name=\"Prefactor\""));
675   - xml.append(GXmlElement("parameter name=\"Index\""));
676   - xml.append(GXmlElement("parameter name=\"Cutoff\""));
677   - xml.append(GXmlElement("parameter name=\"Scale\""));
678   - }
679   -
680   - // Verify that XML element has exactly 4 parameters
681   - if (xml.elements() != 4 || xml.elements("parameter") != 4) {
682   - throw GException::model_invalid_parnum(G_WRITE, xml,
683   - "Power law model requires exactly 4 parameters.");
684   - }
685   -
686   - // Set or update model parameter attributes
687   - int npar[] = {0, 0, 0, 0};
688   - for (int i = 0; i < 4; ++i) {
689   -
690   - // Get parameter element
691   - GXmlElement* par = xml.element("parameter", i);
692   -
693   - // Handle prefactor
694   - if (par->attribute("name") == "Prefactor") {
695   - npar[0]++;
696   - m_norm.write(*par);
697   - }
698   -
699   - // Handle index
700   - else if (par->attribute("name") == "Index") {
701   - npar[1]++;
702   - m_index.write(*par);
703   - }
704   -
705   - // Handle index
706   - else if (par->attribute("name") == "Cutoff") {
707   - npar[2]++;
708   - m_ecut.write(*par);
709   - }
710   -
711   - // Handle pivot energy
712   - else if (par->attribute("name") == "Scale") {
713   - m_pivot.write(*par);
714   - npar[3]++;
715   - }
716   -
717   - } // endfor: looped over all parameters
718   -
719   - // Check of all required parameters are present
720   - if (npar[0] != 1 || npar[1] != 1 || npar[2] != 1 || npar[3] != 1) {
721   - throw GException::model_invalid_parnames(G_WRITE, xml,
722   - "Require \"Prefactor\", \"Index\", \"Cutoff\" and \"Scale\""
723   - " parameters.");
724   - }
  673 + // Get XML parameters
  674 + GXmlElement* norm = gammalib::xml_need_par(G_WRITE, xml, m_norm.name());
  675 + GXmlElement* index = gammalib::xml_need_par(G_WRITE, xml, m_index.name());
  676 + GXmlElement* ecut = gammalib::xml_need_par(G_WRITE, xml, m_ecut.name());
  677 + GXmlElement* pivot = gammalib::xml_need_par(G_WRITE, xml, m_pivot.name());
  678 +
  679 + // Write parameters
  680 + m_norm.write(*norm);
  681 + m_index.write(*index);
  682 + m_ecut.write(*ecut);
  683 + m_pivot.write(*pivot);
725 684  
726 685 // Return
727 686 return;
... ...
src/model/GModelSpectralLogParabola.cpp
... ... @@ -650,8 +650,9 @@ void GModelSpectralLogParabola::read(const GXmlElement&amp; xml)
650 650 }
651 651  
652 652 // Handle pivot energy
653   - else if (par->attribute("name") == "Scale" ||
654   - par->attribute("name") == "Eb") {
  653 + else if ((par->attribute("name") == "Scale") ||
  654 + (par->attribute("name") == "Eb") ||
  655 + (par->attribute("name") == "PivotEnergy")) {
655 656 m_pivot.read(*par);
656 657 npar[3]++;
657 658 }
... ... @@ -663,7 +664,7 @@ void GModelSpectralLogParabola::read(const GXmlElement&amp; xml)
663 664 throw GException::model_invalid_parnames(G_READ, xml,
664 665 "LogParabola requires \"Prefactor\" or \"norm\","
665 666 " \"Index\" or \"alpha\", \"Curvature\" or \"beta\""
666   - " and \"Scale\" or \"Eb\" parameters.");
  667 + " and \"Scale\", \"Eb\" or \"PivotEnergy\" parameters.");
667 668 }
668 669  
669 670 // Return
... ... @@ -687,10 +688,10 @@ void GModelSpectralLogParabola::read(const GXmlElement&amp; xml)
687 688 * of the XML elements is
688 689 *
689 690 * <spectrum type="LogParabola">
690   - * <parameter name="Prefactor" scale=".." value=".." min=".." max=".." free=".."/>
691   - * <parameter name="Index" scale=".." value=".." min=".." max=".." free=".."/>
692   - * <parameter name="Curvature" scale=".." value=".." min=".." max=".." free=".."/>
693   - * <parameter name="Scale" scale=".." value=".." min=".." max=".." free=".."/>
  691 + * <parameter name="Prefactor" ../>
  692 + * <parameter name="Index" ../>
  693 + * <parameter name="Curvature" ../>
  694 + * <parameter name="PivotEnergy" ../>
694 695 * </spectrum>
695 696 ***************************************************************************/
696 697 void GModelSpectralLogParabola::write(GXmlElement& xml) const
... ... @@ -706,59 +707,17 @@ void GModelSpectralLogParabola::write(GXmlElement&amp; xml) const
706 707 "Spectral model is not of type \""+type()+"\".");
707 708 }
708 709  
709   - // If XML element has 0 nodes then append 4 parameter nodes
710   - if (xml.elements() == 0) {
711   - xml.append(GXmlElement("parameter name=\"Prefactor\""));
712   - xml.append(GXmlElement("parameter name=\"Index\""));
713   - xml.append(GXmlElement("parameter name=\"Curvature\""));
714   - xml.append(GXmlElement("parameter name=\"Scale\""));
715   - }
716   -
717   - // Verify that XML element has exactly 4 parameters
718   - if (xml.elements() != 4 || xml.elements("parameter") != 4) {
719   - throw GException::model_invalid_parnum(G_WRITE, xml,
720   - "LogParabola law model requires exactly 4 parameters.");
721   - }
722   -
723   - // Set or update model parameter attributes
724   - int npar[] = {0, 0, 0,0};
725   - for (int i = 0; i < 4; ++i) {
726   -
727   - // Get parameter element
728   - GXmlElement* par = xml.element("parameter", i);
729   -
730   - // Handle prefactor
731   - if (par->attribute("name") == "Prefactor"){
732   - npar[0]++;
733   - m_norm.write(*par);
734   - }
735   -
736   - // Handle index
737   - else if (par->attribute("name") == "Index") {
738   - npar[1]++;
739   - m_index.write(*par);
740   - }
741   -
742   - // Handle index
743   - else if (par->attribute("name") == "Curvature"){
744   - npar[2]++;
745   - m_curvature.write(*par);
746   - }
747   -
748   - // Handle pivot energy
749   - else if (par->attribute("name") == "Scale") {
750   - m_pivot.write(*par);
751   - npar[3]++;
752   - }
753   -
754   - } // endfor: looped over all parameters
755   -
756   - // Check of all required parameters are present
757   - if (npar[0] != 1 || npar[1] != 1 || npar[2] != 1 || npar[3] != 1) {
758   - throw GException::model_invalid_parnames(G_WRITE, xml,
759   - "LogParabola requires \"Prefactor\", \"Index\", \"Curvature\""
760   - " and \"Scale\" parameters.");
761   - }
  710 + // Get XML parameters
  711 + GXmlElement* norm = gammalib::xml_need_par(G_WRITE, xml, m_norm.name());
  712 + GXmlElement* index = gammalib::xml_need_par(G_WRITE, xml, m_index.name());
  713 + GXmlElement* curvature = gammalib::xml_need_par(G_WRITE, xml, m_curvature.name());
  714 + GXmlElement* pivot = gammalib::xml_need_par(G_WRITE, xml, m_pivot.name());
  715 +
  716 + // Write parameters
  717 + m_norm.write(*norm);
  718 + m_index.write(*index);
  719 + m_curvature.write(*curvature);
  720 + m_pivot.write(*pivot);
762 721  
763 722 // Return
764 723 return;
... ...
src/model/GModelSpectralNodes.cpp
... ... @@ -614,13 +614,13 @@ GEnergy GModelSpectralNodes::mc(const GEnergy&amp; emin,
614 614 *
615 615 * <spectrum type="NodeFunction">
616 616 * <node>
617   - * <parameter name="Energy" scale=".." value=".." min=".." max=".." free=".."/>
618   - * <parameter name="Intensity" scale=".." value=".." min=".." max=".." free=".."/>
  617 + * <parameter name="Energy" ../>
  618 + * <parameter name="Intensity" ../>
619 619 * </node>
620 620 * ...
621 621 * <node>
622   - * <parameter name="Energy" scale=".." value=".." min=".." max=".." free=".."/>
623   - * <parameter name="Intensity" scale=".." value=".." min=".." max=".." free=".."/>
  622 + * <parameter name="Energy" ../>
  623 + * <parameter name="Intensity" ../>
624 624 * </node>
625 625 * </spectrum>
626 626 *
... ... @@ -727,21 +727,19 @@ void GModelSpectralNodes::read(const GXmlElement&amp; xml)
727 727 * Existing XML element is not of required type
728 728 * @exception GException::model_invalid_parnum
729 729 * Invalid number of model parameters or nodes found in XML element.
730   - * @exception GException::model_invalid_parnames
731   - * Invalid model parameter names found in XML element.
732 730 *
733 731 * Writes the spectral information into an XML element. The format of the XML
734 732 * element is
735 733 *
736 734 * <spectrum type="NodeFunction">
737 735 * <node>
738   - * <parameter name="Energy" scale=".." value=".." min=".." max=".." free=".."/>
739   - * <parameter name="Intensity" scale=".." value=".." min=".." max=".." free=".."/>
  736 + * <parameter name="Energy" ../>
  737 + * <parameter name="Intensity" ../>
740 738 * </node>
741 739 * ...
742 740 * <node>
743   - * <parameter name="Energy" scale=".." value=".." min=".." max=".." free=".."/>
744   - * <parameter name="Intensity" scale=".." value=".." min=".." max=".." free=".."/>
  741 + * <parameter name="Energy" ../>
  742 + * <parameter name="Intensity" ../>
745 743 * </node>
746 744 * </spectrum>
747 745 ***************************************************************************/
... ... @@ -781,45 +779,23 @@ void GModelSpectralNodes::write(GXmlElement&amp; xml) const
781 779 // Get node
782 780 GXmlElement* node = xml.element("node", i);
783 781  
784   - // If XML element has 0 leafes then append energy and intensity
785   - // element
786   - if (node->elements() == 0) {
787   - node->append(GXmlElement("parameter name=\"Energy\""));
788   - node->append(GXmlElement("parameter name=\"Intensity\""));
789   - }
790   -
791   - // Verify that node XML element has exactly 2 parameters
792   - if (node->elements() != 2 || node->elements("parameter") != 2) {
793   - throw GException::model_invalid_parnum(G_WRITE, xml,
794   - "Node requires exactly 2 parameters.");
795   - }
  782 + // Get copy of parameters so that we can change their names
  783 + GModelPar energy = m_energies[i];
  784 + GModelPar intensity = m_values[i];
796 785  
797   - // Set or update model parameter attributes
798   - int npar[] = {0, 0};
799   - for (int k = 0; k < 2; ++k) {
  786 + // Set names since we appended for internal usage the indices to the
  787 + // parameter names, and we want to get rid of them for writing the
  788 + // model into the XML element
  789 + energy.name("Energy");
  790 + intensity.name("Intensity");
800 791  
801   - // Get parameter element
802   - GXmlElement* par = node->element("parameter", k);
  792 + // Get XML parameters
  793 + GXmlElement* eng = gammalib::xml_need_par(G_WRITE, *node, energy.name());
  794 + GXmlElement* val = gammalib::xml_need_par(G_WRITE, *node, intensity.name());
803 795  
804   - // Handle prefactor
805   - if (par->attribute("name") == "Energy") {
806   - npar[0]++;
807   - m_energies[i].write(*par);
808   - }
809   -
810   - // Handle index
811   - else if (par->attribute("name") == "Intensity") {
812   - npar[1]++;
813   - m_values[i].write(*par);
814   - }
815   -
816   - } // endfor: looped over parameters
817   -
818   - // Check of all required parameters are present
819   - if (npar[0] != 1 || npar[1] != 1) {
820   - throw GException::model_invalid_parnames(G_WRITE, xml,
821   - "Require \"Energy\" and \"Intensity\" parameters.");
822   - }
  796 + // Write parameters
  797 + energy.write(*eng);
  798 + intensity.write(*val);
823 799  
824 800 } // endfor: looped over nodes
825 801  
... ...
src/model/GModelSpectralPlaw.cpp
... ... @@ -524,9 +524,9 @@ GEnergy GModelSpectralPlaw::mc(const GEnergy&amp; emin,
524 524 * elements is
525 525 *
526 526 * <spectrum type="PowerLaw">
527   - * <parameter name="Prefactor" scale=".." value=".." min=".." max=".." free=".."/>
528   - * <parameter name="Index" scale=".." value=".." min=".." max=".." free=".."/>
529   - * <parameter name="Scale" scale=".." value=".." min=".." max=".." free=".."/>
  527 + * <parameter name="Prefactor" ../>
  528 + * <parameter name="Index" ../>
  529 + * <parameter name="PivotEnergy" ../>
530 530 * </spectrum>
531 531 *
532 532 * @todo Add parameter validity check
... ... @@ -559,7 +559,8 @@ void GModelSpectralPlaw::read(const GXmlElement&amp; xml)
559 559 }
560 560  
561 561 // Handle pivot energy
562   - else if (par->attribute("name") == "Scale") {
  562 + else if ((par->attribute("name") == "Scale") ||
  563 + (par->attribute("name") == "PivotEnergy")) {
563 564 m_pivot.read(*par);
564 565 npar[2]++;
565 566 }
... ... @@ -569,7 +570,8 @@ void GModelSpectralPlaw::read(const GXmlElement&amp; xml)
569 570 // Verify that all parameters were found
570 571 if (npar[0] != 1 || npar[1] != 1 || npar[2] != 1) {
571 572 throw GException::model_invalid_parnames(G_READ, xml,
572   - "Require \"Prefactor\", \"Index\" and \"Scale\" parameters.");
  573 + "Require \"Prefactor\", \"Index\" and \"Scale\" or "
  574 + "\"PivotEnergy\" parameters.");
573 575 }
574 576  
575 577 // Return
... ... @@ -584,78 +586,38 @@ void GModelSpectralPlaw::read(const GXmlElement&amp; xml)
584 586 *
585 587 * @exception GException::model_invalid_spectral
586 588 * Existing XML element is not of type "PowerLaw"
587   - * @exception GException::model_invalid_parnum
588   - * Invalid number of model parameters or nodes found in XML element.
589   - * @exception GException::model_invalid_parnames
590   - * Invalid model parameter names found in XML element.
591 589 *
592 590 * Writes the spectral information into an XML element. The format of the XML
593 591 * element is
594 592 *
595 593 * <spectrum type="PowerLaw">
596   - * <parameter name="Prefactor" scale=".." value=".." min=".." max=".." free=".."/>
597   - * <parameter name="Index" scale=".." value=".." min=".." max=".." free=".."/>
598   - * <parameter name="Scale" scale=".." value=".." min=".." max=".." free=".."/>
  594 + * <parameter name="Prefactor" ../>
  595 + * <parameter name="Index" ../>
  596 + * <parameter name="PivotEnergy" ../>
599 597 * </spectrum>
600 598 ***************************************************************************/
601 599 void GModelSpectralPlaw::write(GXmlElement& xml) const
602 600 {
603 601 // Set model type
604 602 if (xml.attribute("type") == "") {
605   - xml.attribute("type", "PowerLaw");
  603 + xml.attribute("type", type());
606 604 }
607 605  
608 606 // Verify model type
609   - if (xml.attribute("type") != "PowerLaw") {
  607 + if (xml.attribute("type") != type()) {
610 608 throw GException::model_invalid_spectral(G_WRITE, xml.attribute("type"),
611   - "Spectral model is not of type \"PowerLaw\".");
612   - }
613   -
614   - // If XML element has 0 nodes then append 3 parameter nodes
615   - if (xml.elements() == 0) {
616   - xml.append(GXmlElement("parameter name=\"Prefactor\""));
617   - xml.append(GXmlElement("parameter name=\"Index\""));
618   - xml.append(GXmlElement("parameter name=\"Scale\""));
619   - }
620   -
621   - // Verify that XML element has exactly 3 parameters
622   - if (xml.elements() != 3 || xml.elements("parameter") != 3) {
623   - throw GException::model_invalid_parnum(G_WRITE, xml,
624   - "Power law model requires exactly 3 parameters.");
  609 + "Spectral model is not of type \""+type()+"\".");
625 610 }
626 611  
627   - // Set or update model parameter attributes
628   - int npar[] = {0, 0, 0};
629   - for (int i = 0; i < 3; ++i) {
630   -
631   - // Get parameter element
632   - GXmlElement* par = xml.element("parameter", i);
633   -
634   - // Handle prefactor
635   - if (par->attribute("name") == "Prefactor") {
636   - npar[0]++;
637   - m_norm.write(*par);
638   - }
639   -
640   - // Handle index
641   - else if (par->attribute("name") == "Index") {
642   - npar[1]++;
643   - m_index.write(*par);
644   - }
645   -
646   - // Handle pivot energy
647   - else if (par->attribute("name") == "Scale") {
648   - m_pivot.write(*par);
649   - npar[2]++;
650   - }
651   -
652   - } // endfor: looped over all parameters
  612 + // Get XML parameters
  613 + GXmlElement* norm = gammalib::xml_need_par(G_WRITE, xml, m_norm.name());
  614 + GXmlElement* index = gammalib::xml_need_par(G_WRITE, xml, m_index.name());
  615 + GXmlElement* pivot = gammalib::xml_need_par(G_WRITE, xml, m_pivot.name());
653 616  
654   - // Check of all required parameters are present
655   - if (npar[0] != 1 || npar[1] != 1 || npar[2] != 1) {
656   - throw GException::model_invalid_parnames(G_WRITE, xml,
657   - "Require \"Prefactor\", \"Index\" and \"Scale\" parameters.");
658   - }
  617 + // Write parameters
  618 + m_norm.write(*norm);
  619 + m_index.write(*index);
  620 + m_pivot.write(*pivot);
659 621  
660 622 // Return
661 623 return;
... ...
src/model/GModelSpectralSuperExpPlaw.cpp
... ... @@ -599,11 +599,11 @@ GEnergy GModelSpectralSuperExpPlaw::mc(const GEnergy&amp; emin,
599 599 * elements is
600 600 *
601 601 * <spectrum type="PLSuperExpCutoff">
602   - * <parameter name="Prefactor" scale=".." value=".." min=".." max=".." free=".."/>
603   - * <parameter name="Index1" scale=".." value=".." min=".." max=".." free=".."/>
604   - * <parameter name="Cutoff" scale=".." value=".." min=".." max=".." free=".."/>
605   - * <parameter name="Scale" scale=".." value=".." min=".." max=".." free=".."/>
606   - * <parameter name="Index2" scale=".." value=".." min=".." max=".." free=".."/>
  602 + * <parameter name="Prefactor" ../>
  603 + * <parameter name="Index1" ../>
  604 + * <parameter name="Cutoff" ../>
  605 + * <parameter name="Index2" ../>
  606 + * <parameter name="PivotEnergy" ../>
607 607 * </spectrum>
608 608 ***************************************************************************/
609 609 void GModelSpectralSuperExpPlaw::read(const GXmlElement& xml)
... ... @@ -640,7 +640,8 @@ void GModelSpectralSuperExpPlaw::read(const GXmlElement&amp; xml)
640 640 }
641 641  
642 642 // Handle pivot energy
643   - else if (par->attribute("name") == "Scale") {
  643 + else if ((par->attribute("name") == "Scale") ||
  644 + (par->attribute("name") == "PivotEnergy")) {
644 645 m_pivot.read(*par);
645 646 npar[3]++;
646 647 }
... ... @@ -656,8 +657,8 @@ void GModelSpectralSuperExpPlaw::read(const GXmlElement&amp; xml)
656 657 // Verify that all parameters were found
657 658 if (npar[0] != 1 || npar[1] != 1 || npar[2] != 1 || npar[3] != 1 || npar[4] != 1) {
658 659 throw GException::model_invalid_parnames(G_READ, xml,
659   - "Require \"Prefactor\", \"Index1\", \"Cutoff\", \"Scale\" and \"Index2\""
660   - " parameters.");
  660 + "Require \"Prefactor\", \"Index1\", \"Cutoff\", \"Scale\" or "
  661 + "\"PivotEnergy\" and \"Index2\" parameters.");
661 662 }
662 663  
663 664 // Return
... ... @@ -672,95 +673,44 @@ void GModelSpectralSuperExpPlaw::read(const GXmlElement&amp; xml)
672 673 *
673 674 * @exception GException::model_invalid_spectral
674 675 * Existing XML element is not of type "ExpCutoff"
675   - * @exception GException::model_invalid_parnum
676   - * Invalid number of model parameters or nodes found in XML element.
677   - * @exception GException::model_invalid_parnames
678   - * Invalid model parameter names found in XML element.
679 676 *
680 677 * Writes the spectral information into an XML element. The format of the XML
681 678 * element is
682 679 *
683 680 * <spectrum type="PLSuperExpCutoff">
684   - * <parameter name="Prefactor" scale=".." value=".." min=".." max=".." free=".."/>
685   - * <parameter name="Index1" scale=".." value=".." min=".." max=".." free=".."/>
686   - * <parameter name="Cutoff" scale=".." value=".." min=".." max=".." free=".."/>
687   - * <parameter name="Scale" scale=".." value=".." min=".." max=".." free=".."/>
688   - * <parameter name="Index2" scale=".." value=".." min=".." max=".." free=".."/>
  681 + * <parameter name="Prefactor" ../>
  682 + * <parameter name="Index1" ../>
  683 + * <parameter name="Cutoff" ../>
  684 + * <parameter name="Index2" ../>
  685 + * <parameter name="PivotEnergy" ../>
689 686 * </spectrum>
690 687 ***************************************************************************/
691 688 void GModelSpectralSuperExpPlaw::write(GXmlElement& xml) const
692 689 {
693 690 // Set model type
694 691 if (xml.attribute("type") == "") {
695   - xml.attribute("type", "PLSuperExpCutoff");
  692 + xml.attribute("type", type());
696 693 }
697 694  
698 695 // Verify model type
699   - if (xml.attribute("type") != "PLSuperExpCutoff") {
  696 + if (xml.attribute("type") != type()) {
700 697 throw GException::model_invalid_spectral(G_WRITE, xml.attribute("type"),
701   - "Spectral model is not of type \"PLSuperExpCutoff\".");
  698 + "Spectral model is not of type \""+type()+"\".");
702 699 }
703 700  
704   - // If XML element has 0 nodes then append 5 parameter nodes
705   - if (xml.elements() == 0) {
706   - xml.append(GXmlElement("parameter name=\"Prefactor\""));
707   - xml.append(GXmlElement("parameter name=\"Index1\""));
708   - xml.append(GXmlElement("parameter name=\"Cutoff\""));
709   - xml.append(GXmlElement("parameter name=\"Scale\""));
710   - xml.append(GXmlElement("parameter name=\"Index2\""));
711   - }
712   -
713   - // Verify that XML element has exactly 5 parameters
714   - if (xml.elements() != 5 || xml.elements("parameter") != 5) {
715   - throw GException::model_invalid_parnum(G_WRITE, xml,
716   - "Super Exponetial Power law model requires exactly 5 parameters.");
717   - }
718   -
719   - // Set or update model parameter attributes
720   - int npar[] = {0, 0, 0, 0, 0};
721   - for (int i = 0; i < 5; ++i) {
722   -
723   - // Get parameter element
724   - GXmlElement* par = xml.element("parameter", i);
725   -
726   - // Handle prefactor
727   - if (par->attribute("name") == "Prefactor") {
728   - npar[0]++;
729   - m_norm.write(*par);
730   - }
731   -
732   - // Handle index1
733   - else if (par->attribute("name") == "Index1") {
734   - npar[1]++;
735   - m_index1.write(*par);
736   - }
737   -
738   - // Handle index
739   - else if (par->attribute("name") == "Cutoff") {
740   - npar[2]++;
741   - m_ecut.write(*par);
742   - }
743   -
744   - // Handle pivot energy
745   - else if (par->attribute("name") == "Scale") {
746   - m_pivot.write(*par);
747   - npar[3]++;
748   - }
749   -
750   - // Handle index2
751   - else if (par->attribute("name") == "Index2") {
752   - npar[4]++;
753   - m_index2.write(*par);
754   - }
755   -
756   - } // endfor: looped over all parameters
757   -
758   - // Check of all required parameters are present
759   - if (npar[0] != 1 || npar[1] != 1 || npar[2] != 1 || npar[3] != 1 || npar[4] != 1) {
760   - throw GException::model_invalid_parnames(G_WRITE, xml,
761   - "Require \"Prefactor\", \"Index1\", \"Cutoff\", \"Scale\" and \"Index2\""
762   - " parameters.");
763   - }
  701 + // Get XML parameters
  702 + GXmlElement* norm = gammalib::xml_need_par(G_WRITE, xml, m_norm.name());
  703 + GXmlElement* index1 = gammalib::xml_need_par(G_WRITE, xml, m_index1.name());
  704 + GXmlElement* ecut = gammalib::xml_need_par(G_WRITE, xml, m_ecut.name());
  705 + GXmlElement* index2 = gammalib::xml_need_par(G_WRITE, xml, m_index2.name());
  706 + GXmlElement* pivot = gammalib::xml_need_par(G_WRITE, xml, m_pivot.name());
  707 +
  708 + // Write parameters
  709 + m_norm.write(*norm);
  710 + m_index1.write(*index1);
  711 + m_ecut.write(*ecut);
  712 + m_index2.write(*index2);
  713 + m_pivot.write(*pivot);
764 714  
765 715 // Return
766 716 return;
... ...
test/data/crab.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="1FGL J0005.7+3815" type="PointSource" instrument="LAT,CTA" id="000001" ts="100.1" tscalc="1">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ...
test/data/model_diffuse_const.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Cen A lobes" type="DiffuseSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="DiffuseIsotropic">
10 10 <parameter name="Value" scale="1" value="1" min="0.1" max="10" free="0"/>
... ...
test/data/model_diffuse_map.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Cen A lobes" type="DiffuseSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="DiffuseMap" file="cena_lobes_parkes.fits">
10 10 <parameter scale="1" name="Prefactor" min="0.001" max="1000.0" value="1" free="0"/>
... ...
test/data/model_elliptical_disk.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Cen A lobes" type="ExtendedSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="EllipticalDisk">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ...
test/data/model_elliptical_gauss.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Cen A lobes" type="ExtendedSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="EllipticalGaussian">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ...
test/data/model_point_eplaw.xml
... ... @@ -2,10 +2,10 @@
2 2 <source_library title="source library">
3 3 <source name="Crab" type="PointSource">
4 4 <spectrum type="ExpCutoff">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Cutoff" scale="1e6" value="1.0" min="0.01" max="1000.0" free="1"/>
8   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="Cutoff" scale="1e6" value="1.0" min="0.01" max="1000.0" free="1"/>
  8 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
9 9 </spectrum>
10 10 <spatialModel type="PointSource">
11 11 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ...
test/data/model_point_logparabola.xml
... ... @@ -2,10 +2,10 @@
2 2 <source_library title="source library">
3 3 <source name="Crab" type="PointSource">
4 4 <spectrum type="LogParabola">
5   - <parameter name="Prefactor" scale="1e-17" value="5.878" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.32473" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Curvature" scale="-1" value="0.074" min="-5.0" max="+5.0" free="1"/>
8   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-17" value="5.878" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.32473" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="Curvature" scale="-1" value="0.074" min="-5.0" max="+5.0" free="1"/>
  8 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
9 9 </spectrum>
10 10 <spatialModel type="PointSource">
11 11 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ...
test/data/model_point_plaw.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Crab" type="PointSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Scale" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="5.7" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index" scale="-1" value="2.48" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="PivotEnergy" scale="1e6" value="0.3" min="0.01" max="1000.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="PointSource">
10 10 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ...
test/data/model_point_supeplaw.xml
... ... @@ -2,11 +2,11 @@
2 2 <source_library title="source library">
3 3 <source name="Crab" type="PointSource">
4 4 <spectrum type="PLSuperExpCutoff">
5   - <parameter name="Prefactor" scale="1e-16" value="1.0" min="1e-07" max="1000.0" free="1"/>
6   - <parameter name="Index1" scale="-1" value="2.0" min="0.0" max="+5.0" free="1"/>
7   - <parameter name="Cutoff" scale="1e6" value="1.0" min="0.01" max="1000.0" free="1"/>
8   - <parameter name="Scale" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
9   - <parameter name="Index2" scale="1.0" value="1.5" min="0.1" max="5.0" free="1"/>
  5 + <parameter name="Prefactor" scale="1e-16" value="1.0" min="1e-07" max="1000.0" free="1"/>
  6 + <parameter name="Index1" scale="-1" value="2.0" min="0.0" max="+5.0" free="1"/>
  7 + <parameter name="Cutoff" scale="1e6" value="1.0" min="0.01" max="1000.0" free="1"/>
  8 + <parameter name="PivotEnergy" scale="1e6" value="1.0" min="0.01" max="1000.0" free="0"/>
  9 + <parameter name="Index2" scale="1.0" value="1.5" min="0.1" max="5.0" free="1"/>
10 10 </spectrum>
11 11 <spatialModel type="PointSource">
12 12 <parameter free="0" max="360" min="-360" name="RA" scale="1" value="83.6331" />
... ...
test/data/model_radial_disk.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Cen A lobes" type="ExtendedSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="RadialDisk">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ...
test/data/model_radial_gauss.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Cen A lobes" type="ExtendedSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="RadialGaussian">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ...
test/data/model_radial_shell.xml
... ... @@ -2,9 +2,9 @@
2 2 <source_library title="source library">
3 3 <source name="Cen A lobes" type="ExtendedSource">
4 4 <spectrum type="PowerLaw">
5   - <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
6   - <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
7   - <parameter scale="1.0" name="Scale" min="10.0" max="1000000.0" value="100.0" free="0"/>
  5 + <parameter scale="1e-07" name="Prefactor" min="1e-07" max="1000.0" value="1.73" free="1"/>
  6 + <parameter scale="1.0" name="Index" min="-5.0" max="+5.0" value="-2.1" free="1"/>
  7 + <parameter scale="1.0" name="PivotEnergy" min="10.0" max="1000000.0" value="100.0" free="0"/>
8 8 </spectrum>
9 9 <spatialModel type="RadialShell">
10 10 <parameter name="RA" scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
... ...
test/data/test.xml
... ... @@ -6,7 +6,7 @@
6 6 <spectrum type="PLSuperExpCutoff">
7 7 <parameter free="1" max="1000" min="1e-07" name="Prefactor" scale="1e-07" value="0.02754520844" />
8 8 <parameter free="1" max="5" min="-5" name="Index1" scale="1" value="-2.0458781" />
9   - <parameter free="0" max="1000000" min="10" name="Scale" scale="1" value="100" />
  9 + <parameter free="0" max="1000000" min="10" name="PivotEnergy" scale="1" value="100" />
10 10 <parameter free="1" max="100000" min="500" name="Cutoff" scale="1" value="8244.185952" />
11 11 <parameter free="0" max="5" min="0" name="Index2" scale="1" value="1" />
12 12 </spectrum>
... ...
test/test_GModel.cpp
... ... @@ -1392,7 +1392,7 @@ void TestGModel::test_const(void)
1392 1392 test_value(model.value(), 3.9e-16);
1393 1393  
1394 1394 // Test operator access
1395   - const char* strarray[] = {"Value"};
  1395 + const char* strarray[] = {"Normalization"};
1396 1396 for (int i = 0; i < 1; ++i) {
1397 1397 std::string keyname(strarray[i]);
1398 1398 model[keyname].remove_range(); // To allow setting of any value
... ...
test/test_GXml.cpp
... ... @@ -274,55 +274,39 @@ void TestGXml::test_GXml_access(void)
274 274 // Test root document access
275 275 GXml xml;
276 276 xml.load(m_xml_file);
277   - test_assert(xml.size() == 3,
278   - "Test if xml.children()==3",
279   - "Unexpected number of children in document "+
280   - gammalib::str(xml.size()));
  277 + test_value(xml.size(), 3, "Check number of child elements");
281 278  
282 279 // Test node access
283 280 for (int i = 0; i < xml.size(); ++i) {
284 281 GXmlNode* ptr = xml[i];
285   - test_assert(ptr != 0, "Test node access");
  282 + test_assert(ptr != 0, "Check XML node access");
286 283 }
287   - test_assert(xml.elements() == 1,
288   - "Test if xml.elements()==1",
289   - "Unexpected number of child elements in document "+
290   - gammalib::str(xml.elements()));
  284 + test_value(xml.elements(), 1, "Check number of child elements");
291 285  
292 286 // Test node access
293 287 for (int i = 0; i < xml.elements(); ++i) {
294 288 GXmlNode* ptr = xml.element(i);
295   - test_assert(ptr != 0, "Test xml element access");
  289 + test_assert(ptr != 0, "Check XML element access");
296 290 }
297   - test_assert(xml.elements("source_library") == 1,
298   - "Test if the source_library = 1",
299   - "Unexpected number of child elements in document "+
300   - gammalib::str(xml.elements("source_library")));
  291 + test_value(xml.elements("source_library"), 1, "Check number of child elements");
301 292  
302 293 // Test element access
303 294 for (int i = 0; i < xml.elements("source_library"); ++i) {
304 295 GXmlElement* ptr = xml.element("source_library", i);
305   - test_assert(ptr->name() == "source_library",
306   - "Test name",
307   - "Unexpected element name "+ptr->name());
  296 + test_value(ptr->name(), "source_library", "Check element name");
308 297 }
309 298  
310 299 // Test hierarchy access
311 300 GXmlElement* ptr = NULL;
312 301 ptr = xml.element("source_library");
313   - test_assert(ptr->name() == "source_library", "Test hierarchy access",
314   - "Unexpected element name "+ptr->name());
  302 + test_value(ptr->name(), "source_library", "Check hierarchy level 1");
315 303 ptr = xml.element("source_library > source");
316   - test_assert(ptr->name() == "source", "Test hierarchy access",
317   - "Unexpected element name "+ptr->name());
  304 + test_value(ptr->name(), "source", "Check hierarchy level 2");
318 305 ptr = xml.element("source_library > source > spectrum");
319   - test_assert(ptr->name() == "spectrum", "Test hierarchy access",
320   - "Unexpected element name "+ptr->name());
  306 + test_value(ptr->name(), "spectrum", "Check hierarchy level 3");
321 307 ptr = xml.element("source_library > source > spectrum > parameter[2]");
322   - test_assert(ptr->name() == "parameter", "Test hierarchy access",
323   - "Unexpected element name "+ptr->name());
324   - test_assert(ptr->attribute("name") == "Scale", "Test hierarchy access",
325   - "Unexpected element attribute "+ptr->attribute("name"));
  308 + test_value(ptr->name(), "parameter", "Check hierarchy level 4");
  309 + test_value(ptr->attribute("name"), "PivotEnergy", "Check for attribute");
326 310  
327 311 // Return
328 312 return;
... ...