Commit 46d3467f0273135de2fb67883ad9ea22ffeec280

Authored by Jürgen Knödlseder
1 parent 8ebb4df8

Avoid mangling of log files after application pickling (#2421)

pyext/ctlikelihood.i
... ... @@ -45,19 +45,19 @@ public:
45 45 cslikelihood(const std::string& name,
46 46 const std::string& version) :
47 47 ctlikelihood(name, version) {}
48   - cslikelihood(const std::string& name,
49   - const std::string& version,
50   - const GObservations& obs) :
51   - ctlikelihood(name, version, obs) {}
52   - cslikelihood(const std::string& name,
53   - const std::string& version,
54   - const std::vector<std::string>& args) :
55   - ctlikelihood(name, version, args) {}
  48 + cslikelihood(const std::string& name,
  49 + const std::string& version,
  50 + const GApplicationPars& pars) :
  51 + ctlikelihood(name, version, pars) {}
56 52 cslikelihood(const std::string& name,
57 53 const std::string& version,
58 54 int argc,
59 55 char* argv[]) :
60 56 ctlikelihood(name, version, argc, argv) {}
  57 + cslikelihood(const std::string& name,
  58 + const std::string& version,
  59 + const GObservations& obs) :
  60 + ctlikelihood(name, version, obs) {}
61 61 cslikelihood(const cslikelihood& app) : ctlikelihood(app) {}
62 62 virtual ~cslikelihood(void) {}
63 63  
... ... @@ -84,16 +84,16 @@ public:
84 84 // Constructors and destructors
85 85 ctlikelihood(const std::string& name,
86 86 const std::string& version);
87   - ctlikelihood(const std::string& name,
88   - const std::string& version,
89   - const GObservations& obs);
90   - ctlikelihood(const std::string& name,
91   - const std::string& version,
92   - const std::vector<std::string>& args);
  87 + ctlikelihood(const std::string& name,
  88 + const std::string& version,
  89 + const GApplicationPars& pars);
93 90 ctlikelihood(const std::string& name,
94 91 const std::string& version,
95 92 int argc,
96 93 char* argv[]);
  94 + ctlikelihood(const std::string& name,
  95 + const std::string& version,
  96 + const GObservations& obs);
97 97 ctlikelihood(const ctlikelihood& app);
98 98 virtual ~ctlikelihood(void);
99 99  
... ... @@ -125,16 +125,16 @@ public:
125 125 // Constructors and destructors
126 126 cslikelihood(const std::string& name,
127 127 const std::string& version);
128   - cslikelihood(const std::string& name,
129   - const std::string& version,
130   - const GObservations& obs);
131   - cslikelihood(const std::string& name,
132   - const std::string& version,
133   - const std::vector<std::string>& args);
  128 + cslikelihood(const std::string& name,
  129 + const std::string& version,
  130 + const GApplicationPars& pars);
134 131 cslikelihood(const std::string& name,
135 132 const std::string& version,
136 133 int ARGC,
137 134 char **ARGV);
  135 + cslikelihood(const std::string& name,
  136 + const std::string& version,
  137 + const GObservations& obs);
138 138 cslikelihood(const cslikelihood& app);
139 139 virtual ~cslikelihood(void);
140 140  
... ...
pyext/ctobservation.i
... ... @@ -45,19 +45,19 @@ public:
45 45 csobservation(const std::string& name,
46 46 const std::string& version) :
47 47 ctobservation(name, version) {}
48   - csobservation(const std::string& name,
49   - const std::string& version,
50   - const GObservations& obs) :
51   - ctobservation(name, version, obs) {}
52   - csobservation(const std::string& name,
53   - const std::string& version,
54   - const std::vector<std::string>& args) :
55   - ctobservation(name, version, args) {}
  48 + csobservation(const std::string& name,
  49 + const std::string& version,
  50 + const GApplicationPars& pars) :
  51 + ctobservation(name, version, pars) {}
56 52 csobservation(const std::string& name,
57 53 const std::string& version,
58 54 int argc,
59 55 char* argv[]) :
60 56 ctobservation(name, version, argc, argv) {}
  57 + csobservation(const std::string& name,
  58 + const std::string& version,
  59 + const GObservations& obs) :
  60 + ctobservation(name, version, obs) {}
61 61 csobservation(const csobservation& app) : ctobservation(app) {}
62 62 virtual ~csobservation(void) {}
63 63  
... ... @@ -84,16 +84,16 @@ public:
84 84 // Constructors and destructors
85 85 ctobservation(const std::string& name,
86 86 const std::string& version);
87   - ctobservation(const std::string& name,
88   - const std::string& version,
89   - const GObservations& obs);
90   - ctobservation(const std::string& name,
91   - const std::string& version,
92   - const std::vector<std::string>& args);
  87 + ctobservation(const std::string& name,
  88 + const std::string& version,
  89 + const GApplicationPars& pars);
93 90 ctobservation(const std::string& name,
94 91 const std::string& version,
95 92 int ARGC,
96 93 char **ARGV);
  94 + ctobservation(const std::string& name,
  95 + const std::string& version,
  96 + const GObservations& obs);
97 97 ctobservation(const ctobservation& app);
98 98 virtual ~ctobservation(void);
99 99  
... ... @@ -137,16 +137,16 @@ public:
137 137 // Constructors and destructors
138 138 csobservation(const std::string& name,
139 139 const std::string& version);
140   - csobservation(const std::string& name,
141   - const std::string& version,
142   - const GObservations& obs);
143   - csobservation(const std::string& name,
144   - const std::string& version,
145   - const std::vector<std::string>& args);
  140 + csobservation(const std::string& name,
  141 + const std::string& version,
  142 + const GApplicationPars& pars);
146 143 csobservation(const std::string& name,
147 144 const std::string& version,
148 145 int ARGC,
149 146 char **ARGV);
  147 + csobservation(const std::string& name,
  148 + const std::string& version,
  149 + const GObservations& obs);
150 150 csobservation(const csobservation& app);
151 151 virtual ~csobservation(void);
152 152  
... ...
pyext/ctool.i
... ... @@ -38,9 +38,9 @@ public:
38 38 // Constructors and destructors
39 39 cscript(const std::string& name,
40 40 const std::string& version) : ctool(name, version) {}
41   - cscript(const std::string& name,
42   - const std::string& version,
43   - const std::vector<std::string>& args) : ctool(name, version, args) {}
  41 + cscript(const std::string& name,
  42 + const std::string& version,
  43 + const GApplicationPars& pars) : ctool(name, version, pars) {}
44 44 cscript(const std::string& name,
45 45 const std::string& version,
46 46 int argc,
... ... @@ -75,9 +75,9 @@ public:
75 75 // Constructors and destructors
76 76 ctool(const std::string& name,
77 77 const std::string& version);
78   - ctool(const std::string& name,
79   - const std::string& version,
80   - const std::vector<std::string>& args);
  78 + ctool(const std::string& name,
  79 + const std::string& version,
  80 + const GApplicationPars& pars);
81 81 ctool(const std::string& name,
82 82 const std::string& version,
83 83 int ARGC,
... ... @@ -200,9 +200,15 @@ public:
200 200 class cscript : public ctool {
201 201 public:
202 202 // Constructors and destructors
203   - cscript(const std::string& name, const std::string& version);
204   - cscript(const std::string& name, const std::string& version,
205   - int ARGC, char **ARGV);
  203 + cscript(const std::string& name,
  204 + const std::string& version);
  205 + cscript(const std::string& name,
  206 + const std::string& version,
  207 + const GApplicationPars& pars);
  208 + cscript(const std::string& name,
  209 + const std::string& version,
  210 + int ARGC,
  211 + char **ARGV);
206 212 cscript(const ctool& app);
207 213 virtual ~cscript(void);
208 214  
... ...
src/support/ctlikelihood.cpp
... ... @@ -55,7 +55,7 @@
55 55 ***************************************************************************/
56 56 ctlikelihood::ctlikelihood(const std::string& name,
57 57 const std::string& version) :
58   - ctobservation(name, version)
  58 + ctobservation(name, version)
59 59 {
60 60 // Initialise members
61 61 init_members();
... ... @@ -66,19 +66,20 @@ ctlikelihood::ctlikelihood(const std::string&amp; name,
66 66  
67 67  
68 68 /***********************************************************************//**
69   - * @brief Observations constructor
  69 + * @brief Application parameters constructor
70 70 *
71   - * @param[in] name Likelihood tool name.
72   - * @param[in] version Likelihood tool version.
73   - * param[in] obs Observation container.
  71 + * @param[in] name Observation tool name.
  72 + * @param[in] version Observation tool version.
  73 + * @param[in] pars Application parameters.
74 74 *
75   - * Constructs a likelihood tool from the @p name, @p version and an
76   - * observation container.
  75 + * Constructs a likelihood tool from the @p name, @p version and the
  76 + * application parameters @p pars. See the equivalent ctool constructor
  77 + * for details.
77 78 ***************************************************************************/
78   -ctlikelihood::ctlikelihood(const std::string& name,
79   - const std::string& version,
80   - const GObservations& obs) :
81   - ctobservation(name, version, obs)
  79 +ctlikelihood::ctlikelihood(const std::string& name,
  80 + const std::string& version,
  81 + const GApplicationPars& pars) :
  82 + ctobservation(name, version, pars)
82 83 {
83 84 // Initialise members
84 85 init_members();
... ... @@ -93,15 +94,17 @@ ctlikelihood::ctlikelihood(const std::string&amp; name,
93 94 *
94 95 * @param[in] name Likelihood tool name.
95 96 * @param[in] version Likelihood tool version.
96   - * @param[in] args Arguments vector.
  97 + * @param[in] argc Number of arguments in command line.
  98 + * @param[in] argv Array of command line arguments.
97 99 *
98 100 * Constructs a likelihood tool from the @p name, @p version and command
99 101 * line arguments. See the equivalent ctool constructor for details.
100 102 ***************************************************************************/
101   -ctlikelihood::ctlikelihood(const std::string& name,
102   - const std::string& version,
103   - const std::vector<std::string>& args) :
104   - ctobservation(name, version, args)
  103 +ctlikelihood::ctlikelihood(const std::string& name,
  104 + const std::string& version,
  105 + int argc,
  106 + char *argv[]) :
  107 + ctobservation(name, version, argc, argv)
105 108 {
106 109 // Initialise members
107 110 init_members();
... ... @@ -112,21 +115,19 @@ ctlikelihood::ctlikelihood(const std::string&amp; name,
112 115  
113 116  
114 117 /***********************************************************************//**
115   - * @brief Command line constructor
  118 + * @brief Observations constructor
116 119 *
117 120 * @param[in] name Likelihood tool name.
118 121 * @param[in] version Likelihood tool version.
119   - * @param[in] argc Number of arguments in command line.
120   - * @param[in] argv Array of command line arguments.
  122 + * param[in] obs Observation container.
121 123 *
122   - * Constructs a likelihood tool from the @p name, @p version and command
123   - * line arguments. See the equivalent ctool constructor for details.
  124 + * Constructs a likelihood tool from the @p name, @p version and an
  125 + * observation container.
124 126 ***************************************************************************/
125   -ctlikelihood::ctlikelihood(const std::string& name,
126   - const std::string& version,
127   - int argc,
128   - char *argv[]) :
129   - ctobservation(name, version, argc, argv)
  127 +ctlikelihood::ctlikelihood(const std::string& name,
  128 + const std::string& version,
  129 + const GObservations& obs) :
  130 + ctobservation(name, version, obs)
130 131 {
131 132 // Initialise members
132 133 init_members();
... ...
src/support/ctlikelihood.hpp
... ... @@ -44,16 +44,16 @@ public:
44 44 // Constructors and destructors
45 45 ctlikelihood(const std::string& name,
46 46 const std::string& version);
47   - ctlikelihood(const std::string& name,
48   - const std::string& version,
49   - const GObservations& obs);
50   - ctlikelihood(const std::string& name,
51   - const std::string& version,
52   - const std::vector<std::string>& args);
  47 + ctlikelihood(const std::string& name,
  48 + const std::string& version,
  49 + const GApplicationPars& pars);
53 50 ctlikelihood(const std::string& name,
54 51 const std::string& version,
55 52 int argc,
56 53 char* argv[]);
  54 + ctlikelihood(const std::string& name,
  55 + const std::string& version,
  56 + const GObservations& obs);
57 57 ctlikelihood(const ctlikelihood& app);
58 58 virtual ~ctlikelihood(void);
59 59  
... ...
src/support/ctobservation.cpp
... ... @@ -64,25 +64,24 @@ ctobservation::ctobservation(const std::string&amp; name,
64 64  
65 65  
66 66 /***********************************************************************//**
67   - * @brief Observations constructor
  67 + * @brief Application parameters constructor
68 68 *
69 69 * @param[in] name Observation tool name.
70 70 * @param[in] version Observation tool version.
71   - * param[in] obs Observation container.
  71 + * @param[in] pars Application parameters.
72 72 *
73   - * Constructs a observation tool from the @p name, @p version and an
74   - * observation container.
  73 + * Constructs a observation tool from the @p name, @p version and the
  74 + * application parameters @p pars. See the equivalent ctool constructor
  75 + * for details.
75 76 ***************************************************************************/
76   -ctobservation::ctobservation(const std::string& name,
77   - const std::string& version,
78   - const GObservations& obs) : ctool(name, version)
  77 +ctobservation::ctobservation(const std::string& name,
  78 + const std::string& version,
  79 + const GApplicationPars& pars) :
  80 + ctool(name, version, pars)
79 81 {
80 82 // Initialise members
81 83 init_members();
82 84  
83   - // Set observations
84   - m_obs = obs;
85   -
86 85 // Return
87 86 return;
88 87 }
... ... @@ -93,15 +92,16 @@ ctobservation::ctobservation(const std::string&amp; name,
93 92 *
94 93 * @param[in] name Observation tool name.
95 94 * @param[in] version Observation tool version.
96   - * @param[in] args Arguments vector.
  95 + * @param[in] argc Number of arguments in command line.
  96 + * @param[in] argv Array of command line arguments.
97 97 *
98 98 * Constructs a observation tool from the @p name, @p version and command
99 99 * line arguments. See the equivalent ctool constructor for details.
100 100 ***************************************************************************/
101   -ctobservation::ctobservation(const std::string& name,
102   - const std::string& version,
103   - const std::vector<std::string>& args) :
104   - ctool(name, version, args)
  101 +ctobservation::ctobservation(const std::string& name,
  102 + const std::string& version,
  103 + int argc,
  104 + char *argv[]) : ctool(name, version, argc, argv)
105 105 {
106 106 // Initialise members
107 107 init_members();
... ... @@ -112,24 +112,25 @@ ctobservation::ctobservation(const std::string&amp; name,
112 112  
113 113  
114 114 /***********************************************************************//**
115   - * @brief Command line constructor
  115 + * @brief Observations constructor
116 116 *
117 117 * @param[in] name Observation tool name.
118 118 * @param[in] version Observation tool version.
119   - * @param[in] argc Number of arguments in command line.
120   - * @param[in] argv Array of command line arguments.
  119 + * param[in] obs Observation container.
121 120 *
122   - * Constructs a observation tool from the @p name, @p version and command
123   - * line arguments. See the equivalent ctool constructor for details.
  121 + * Constructs a observation tool from the @p name, @p version and an
  122 + * observation container.
124 123 ***************************************************************************/
125   -ctobservation::ctobservation(const std::string& name,
126   - const std::string& version,
127   - int argc,
128   - char *argv[]) : ctool(name, version, argc, argv)
  124 +ctobservation::ctobservation(const std::string& name,
  125 + const std::string& version,
  126 + const GObservations& obs) : ctool(name, version)
129 127 {
130 128 // Initialise members
131 129 init_members();
132 130  
  131 + // Set observations
  132 + m_obs = obs;
  133 +
133 134 // Return
134 135 return;
135 136 }
... ...
src/support/ctobservation.hpp
... ... @@ -47,16 +47,16 @@ public:
47 47 // Constructors and destructors
48 48 ctobservation(const std::string& name,
49 49 const std::string& version);
50   - ctobservation(const std::string& name,
51   - const std::string& version,
52   - const GObservations& obs);
53   - ctobservation(const std::string& name,
54   - const std::string& version,
55   - const std::vector<std::string>& args);
  50 + ctobservation(const std::string& name,
  51 + const std::string& version,
  52 + const GApplicationPars& pars);
56 53 ctobservation(const std::string& name,
57 54 const std::string& version,
58 55 int argc,
59 56 char* argv[]);
  57 + ctobservation(const std::string& name,
  58 + const std::string& version,
  59 + const GObservations& obs);
60 60 ctobservation(const ctobservation& app);
61 61 virtual ~ctobservation(void);
62 62  
... ...
src/support/ctool.cpp
... ... @@ -92,19 +92,8 @@ ctool::ctool(const std::string&amp; name,
92 92 // Initialise members
93 93 init_members();
94 94  
95   - // If CTOOLS environment variable is set and if a parameter exists in
96   - // the syspfiles folder then set syspfiles folder and reload parameter
97   - // file
98   - char* ptr = std::getenv("CTOOLS");
99   - if (ptr != NULL) {
100   - std::string path = std::string(ptr) + "/syspfiles";
101   - std::string filename = path + "/" + par_filename();
102   - if (access(filename.c_str(), R_OK) == 0) {
103   - m_pars.clear();
104   - m_pars.syspfiles(path);
105   - m_pars.load(par_filename());
106   - }
107   - }
  95 + // Synchronise parameter files
  96 + sync_pfiles();
108 97  
109 98 // Return
110 99 return;
... ... @@ -112,49 +101,24 @@ ctool::ctool(const std::string&amp; name,
112 101  
113 102  
114 103 /***********************************************************************//**
115   - * @brief Command line constructor
  104 + * @brief Application parameter constructor
116 105 *
117 106 * @param[in] name Application name.
118 107 * @param[in] version Application version.
119   - * @param[in] args Arguments vector.
  108 + * @param[in] pars Application parameters.
120 109 *
121   - * Constructs a ctool from the @p name, @p version and command line
122   - * arguments. The constructor uses the equivalent GApplication constructor
  110 + * Constructs a ctool from the @p name, @p version and application parameters
  111 + * @p pars. The constructor uses the equivalent GApplication constructor
123 112 * to set the parameter filename to "<name>.par" and the log filename to
124   - * "<name>".log. The parameters will be loaded from the parameter file.
125   - * In addition, the constructor opens the log file.
126   - *
127   - * If the "--help" option is provided as command line argument a help text
128   - * about the usage of the ctool will be shown in the console and the ctool
129   - * will exit. No log file will be opened in that case.
  113 + * "<name>".log. The constructor opens the log file.
130 114 ***************************************************************************/
131   -ctool::ctool(const std::string& name,
132   - const std::string& version,
133   - const std::vector<std::string>& args) : GApplication(name, version, args)
  115 +ctool::ctool(const std::string& name,
  116 + const std::string& version,
  117 + const GApplicationPars& pars) : GApplication(name, version, pars)
134 118 {
135   - // Catch --help option before doing anything else
136   - if (need_help()) {
137   - provide_help();
138   - exit(0);
139   - }
140   -
141 119 // Initialise members
142 120 init_members();
143 121  
144   - // If CTOOLS environment variable is set and if a parameter exists in
145   - // the syspfiles folder then set syspfiles folder and reload parameter
146   - // file
147   - char* ptr = std::getenv("CTOOLS");
148   - if (ptr != NULL) {
149   - std::string path = std::string(ptr) + "/syspfiles";
150   - std::string filename = path + "/" + par_filename();
151   - if (access(filename.c_str(), R_OK) == 0) {
152   - m_pars.clear();
153   - m_pars.syspfiles(path);
154   - m_pars.load(par_filename(), m_args);
155   - }
156   - }
157   -
158 122 // Open the log file
159 123 logFileOpen();
160 124  
... ... @@ -195,19 +159,8 @@ ctool::ctool(const std::string&amp; name,
195 159 // Initialise members
196 160 init_members();
197 161  
198   - // If CTOOLS environment variable is set and if a parameter exists in
199   - // the syspfiles folder then set syspfiles folder and reload parameter
200   - // file
201   - char* ptr = std::getenv("CTOOLS");
202   - if (ptr != NULL) {
203   - std::string path = std::string(ptr) + "/syspfiles";
204   - std::string filename = path + "/" + par_filename();
205   - if (access(filename.c_str(), R_OK) == 0) {
206   - m_pars.clear();
207   - m_pars.syspfiles(path);
208   - m_pars.load(par_filename(), m_args);
209   - }
210   - }
  162 + // Synchronise parameter files
  163 + sync_pfiles();
211 164  
212 165 // Open the log file
213 166 logFileOpen();
... ... @@ -370,6 +323,33 @@ void ctool::free_members(void)
370 323  
371 324  
372 325 /***********************************************************************//**
  326 + * @brief Synchronise parameter files
  327 + *
  328 + * Make sure that the structure of the parameter files in the syspfiles
  329 + * folder is used as a reference.
  330 + ***************************************************************************/
  331 +void ctool::sync_pfiles(void)
  332 +{
  333 + // If CTOOLS environment variable is set and if a parameter file exists
  334 + // in the syspfiles folder then set syspfiles folder and reload
  335 + // parameter file
  336 + char* ptr = std::getenv("CTOOLS");
  337 + if (ptr != NULL) {
  338 + std::string path = std::string(ptr) + "/syspfiles";
  339 + std::string filename = path + "/" + par_filename();
  340 + if (access(filename.c_str(), R_OK) == 0) {
  341 + m_pars.clear();
  342 + m_pars.syspfiles(path);
  343 + m_pars.load(par_filename(), m_args);
  344 + }
  345 + }
  346 +
  347 + // Return
  348 + return;
  349 +}
  350 +
  351 +
  352 +/***********************************************************************//**
373 353 * @brief Setup observation container
374 354 *
375 355 * @param[in] obs Observation container
... ...
src/support/ctool.hpp
... ... @@ -52,9 +52,9 @@ public:
52 52 // Constructors and destructors
53 53 ctool(const std::string& name,
54 54 const std::string& version);
55   - ctool(const std::string& name,
56   - const std::string& version,
57   - const std::vector<std::string>& args);
  55 + ctool(const std::string& name,
  56 + const std::string& version,
  57 + const GApplicationPars& pars);
58 58 ctool(const std::string& name,
59 59 const std::string& version,
60 60 int argc,
... ... @@ -79,10 +79,11 @@ public:
79 79 protected:
80 80 #endif
81 81 // Protected methods
82   - void init_members(void);
83   - void copy_members(const ctool& app);
84   - void free_members(void);
85   - const bool& read_ahead(void) const;
  82 + void init_members(void);
  83 + void copy_members(const ctool& app);
  84 + void free_members(void);
  85 + void sync_pfiles(void);
  86 + const bool& read_ahead(void) const;
86 87  
87 88 // Protected high-level setup methods
88 89 void setup_observations(GObservations& obs, const bool& response = true,
... ... @@ -154,7 +155,7 @@ protected:
154 155 protected:
155 156 // Protected methods
156 157 void provide_help(void) const;
157   -
  158 +
158 159 // Protected members
159 160 bool m_use_xml; //!< Use XML file instead of FITS file for observations
160 161 };
... ...