Commit 6022837c635d7d9cf258fec9ddd1af21401c34d0
1 parent
cdb1e9ba
Transparently update parameter files (#2513)
Showing
6 changed files
with
20 additions
and
33 deletions
ChangeLog
| 1 | -2018-06-13 | |
| 1 | +2018-06-14 | |
| 2 | 2 | |
| 3 | 3 | * Version 1.6.0 released |
| 4 | 4 | ======================== |
| 5 | 5 | |
| 6 | + Transparently update parameter files (#2513) | |
| 6 | 7 | Change formula for number of true energy bins in csphagen (#2490) |
| 7 | 8 | Remove ctools::is_valid_filename() method |
| 8 | 9 | Fix bug when using precomputed model in csresspec (#2448) | ... | ... |
NEWS
| 1 | 1 | New Features and Important Changes in ctools 1.6.0 |
| 2 | 2 | |
| 3 | -13 June 2018 | |
| 3 | +14 June 2018 | |
| 4 | 4 | |
| 5 | 5 | |
| 6 | 6 | Introduction |
| ... | ... | @@ -26,6 +26,11 @@ None |
| 26 | 26 | |
| 27 | 27 | Base classes |
| 28 | 28 | ------------ |
| 29 | +The ctool base class now loads the application parameters from the file provided | |
| 30 | +in the "syspfiles" folder and updates parameter values using the file found in | |
| 31 | +the user's "pfiles" folder, so that any change to the parameter file structure | |
| 32 | +is handled transparently and no longer leads to an exception (#2513). | |
| 33 | + | |
| 29 | 34 | The ctool::time_reference constant was removed since it is not required |
| 30 | 35 | anymore. The time reference is now transparently handled by the tools, and |
| 31 | 36 | if there is a choice, a "mjdref" parameter was added to the tools (#2054). | ... | ... |
doc/source/admin/release_history/1.6.rst
| ... | ... | @@ -11,6 +11,7 @@ ctools 1.6 is a major release that adds significant functionality. |
| 11 | 11 | In particular, this release provides: |
| 12 | 12 | |
| 13 | 13 | * Support for Xspec spectral analysis |
| 14 | +* Improved computation speed for :ref:`ctskymap` and :ref:`csphagen` | |
| 14 | 15 | |
| 15 | 16 | |
| 16 | 17 | Bug fixes |
| ... | ... | @@ -25,6 +26,8 @@ Bug fixes |
| 25 | 26 | Improvements |
| 26 | 27 | ------------ |
| 27 | 28 | |
| 29 | +* [`2513 <https://cta-redmine.irap.omp.eu/issues/2513>`_] - | |
| 30 | + Transparently update parameter files | |
| 28 | 31 | * [`2490 <https://cta-redmine.irap.omp.eu/issues/2490>`_] - |
| 29 | 32 | Change formula for number of true energy bins in :ref:`csphagen` |
| 30 | 33 | * [`2404 <https://cta-redmine.irap.omp.eu/issues/2404>`_] - | ... | ... |
doc/source/help/faq.rst
| ... | ... | @@ -15,7 +15,6 @@ asked. |
| 15 | 15 | - :ref:`What is the difference between ctools and GammaLib? <faq_ctools_gammalib>` |
| 16 | 16 | - :ref:`Are ctools and GammaLib specific to CTA? <faq_instruments>` |
| 17 | 17 | - :ref:`I want to upgrade ctools, do I have to upgrade GammaLib? <faq_upgrade>` |
| 18 | -- :ref:`Why does my ctool complain about missing parameters? <faq_pars>` | |
| 19 | 18 | - :ref:`Should I used binned or unbinned analysis? <faq_analysis>` |
| 20 | 19 | - :ref:`How precise are ctools? <faq_precision>` |
| 21 | 20 | |
| ... | ... | @@ -82,23 +81,6 @@ asked. |
| 82 | 81 | ctools should then become more independent from GammaLib. |
| 83 | 82 | |
| 84 | 83 | |
| 85 | -.. _faq_pars: | |
| 86 | - | |
| 87 | -.. topic:: Why does my ctool complain about missing parameters? | |
| 88 | - | |
| 89 | - After upgrading to a new ctools version, a ctool may issue the following | |
| 90 | - error | |
| 91 | - | |
| 92 | - ``*** ERROR in GApplicationPars::operator[](std::string&): Invalid | |
| 93 | - argument. Parameter "XXX" has not been found in parameter file. | |
| 94 | - Please specify a valid parameter name.`` | |
| 95 | - | |
| 96 | - This error may occur if some parameters have been added to a ctool and | |
| 97 | - you still have the old parameter file without that parameter sitting in | |
| 98 | - your pfiles folder. Simply erasing all files in the pfiles folder should | |
| 99 | - fix this problem. | |
| 100 | - | |
| 101 | - | |
| 102 | 84 | .. _faq_analysis: |
| 103 | 85 | |
| 104 | 86 | .. topic:: Should I used binned or unbinned analysis? | ... | ... |
src/ctools-setup.in
| ... | ... | @@ -76,19 +76,6 @@ if [ -d $prefix/syspfiles/. ]; then |
| 76 | 76 | syspfiles="$prefix/syspfiles$syspfiles" |
| 77 | 77 | fi |
| 78 | 78 | |
| 79 | - # updates any existing PFILES if syspfiles are newer | |
| 80 | - for filename in $HOME/pfiles/*.par | |
| 81 | - do | |
| 82 | - parfile=`basename $filename` | |
| 83 | - sys_parfile=$prefix/syspfiles/$parfile | |
| 84 | - if [ -e "$sys_parfile" ]; then | |
| 85 | - if test "$sys_parfile" -nt "$filename" | |
| 86 | - then | |
| 87 | - cp -f "$sys_parfile" "$filename" | |
| 88 | - fi | |
| 89 | - fi | |
| 90 | - done | |
| 91 | - | |
| 92 | 79 | # Set PFILES and PFCLOBBER environment variable |
| 93 | 80 | PFILES="$locpfiles;$syspfiles" |
| 94 | 81 | PFCLOBBER=1 | ... | ... |
src/support/ctool.cpp
| ... | ... | @@ -258,6 +258,15 @@ void ctool::init_members(void) |
| 258 | 258 | // Set language to english to make sure that a dot is a dot |
| 259 | 259 | std::setlocale(LC_ALL, "en_US.UTF-8"); |
| 260 | 260 | |
| 261 | + // Set parameter syspfiles and reload parameter file | |
| 262 | + char* ptr = std::getenv("CTOOLS"); | |
| 263 | + if (ptr != NULL) { | |
| 264 | + std::string path = std::string(ptr) + "/syspfiles"; | |
| 265 | + m_pars.clear(); | |
| 266 | + m_pars.syspfiles(path); | |
| 267 | + m_pars.load(par_filename()); | |
| 268 | + } | |
| 269 | + | |
| 261 | 270 | // Return |
| 262 | 271 | return; |
| 263 | 272 | } | ... | ... |