Commit df0f0086bf3dd246874410cf02b51996a32dc2b1
1 parent
62b6a252
test routine
Showing
1 changed file
with
61 additions
and
30 deletions
inst/cta/test/test_CTA.cpp
| ... | ... | @@ -2184,8 +2184,11 @@ void TestGCTAOptimize::test_stacked_optimizer(void) |
| 2184 | 2184 | ***************************************************************************/ |
| 2185 | 2185 | void TestGCTAOptimize::test_onoff_optimizer(void) |
| 2186 | 2186 | { |
| 2187 | - // Set reference result | |
| 2188 | - double fit_results[] = {83.6331, 0, | |
| 2187 | + //Testing for two different statistics available | |
| 2188 | + std::string stat[] = {"POISSON-MODELEDBKG", | |
| 2189 | + "POISSON-MEASUREDBKG"}; | |
| 2190 | + // Reference result | |
| 2191 | + double fit_results0[] = {83.6331, 0, | |
| 2189 | 2192 | 22.0145, 0, |
| 2190 | 2193 | 5.750910e-16, 7.604206e-18, |
| 2191 | 2194 | -2.472779, 0.012290, |
| ... | ... | @@ -2195,35 +2198,63 @@ void TestGCTAOptimize::test_onoff_optimizer(void) |
| 2195 | 2198 | -0.015947, 0.029617, |
| 2196 | 2199 | 1.0e6, 0, |
| 2197 | 2200 | 1, 0}; |
| 2201 | + double fit_results1[] = {83.6331, 0, | |
| 2202 | + 22.0145, 0, | |
| 2203 | + 5.7443543e-16, 4.813498e-18, | |
| 2204 | + -2.473535, 0.007931, | |
| 2205 | + 300000, 0, | |
| 2206 | + 1, 0, | |
| 2207 | + 1.0, 0., | |
| 2208 | + 0., 0., | |
| 2209 | + 1.0e6, 0, | |
| 2210 | + 1, 0}; | |
| 2198 | 2211 | |
| 2199 | - // Load On/Off CTA observation | |
| 2200 | - GObservations obs(cta_onoff_obs); | |
| 2201 | - | |
| 2202 | - // Load models from XML file | |
| 2203 | - obs.models(cta_onoff_model); | |
| 2204 | - | |
| 2205 | - // Perform LM optimization | |
| 2206 | - GOptimizerLM opt; | |
| 2207 | - opt.max_iter(100); | |
| 2208 | - obs.optimize(opt); | |
| 2209 | - obs.errors(opt); | |
| 2210 | - //std::cout << opt << std::endl; | |
| 2211 | - //std::cout << obs << std::endl; | |
| 2212 | - //std::cout << obs.models() << std::endl; | |
| 2213 | - | |
| 2214 | - // Verify fit results | |
| 2215 | - for (int i = 0, j = 0; i < obs.models().size(); ++i) { | |
| 2216 | - const GModel* model = obs.models()[i]; | |
| 2217 | - for (int k = 0; k < model->size(); ++k) { | |
| 2218 | - GModelPar par = (*model)[k]; | |
| 2219 | - std::string msg = "Verify optimization result for " + par.print(); | |
| 2220 | - test_value(par.value(), fit_results[j], | |
| 2221 | - std::abs(1.0e-4*fit_results[j]), msg); | |
| 2222 | - j++; | |
| 2223 | - test_value(par.error(), fit_results[j], | |
| 2224 | - std::abs(1.0e-4*fit_results[j]), msg); | |
| 2225 | - j++; | |
| 2226 | - } | |
| 2212 | + // Loop over statistics | |
| 2213 | + for (int s = 0; s < 2; ++s) { | |
| 2214 | + // Set reference results | |
| 2215 | + double fit_results[20]; | |
| 2216 | + for (int i = 0; i < 20; ++i){ | |
| 2217 | + if (s == 0){ | |
| 2218 | + fit_results[i] = fit_results0[i]; | |
| 2219 | + } | |
| 2220 | + else if (s == 1){ | |
| 2221 | + fit_results[i] = fit_results1[i]; | |
| 2222 | + } | |
| 2223 | + } | |
| 2224 | + // Load On/Off CTA observation | |
| 2225 | + GObservations obs(cta_onoff_obs); | |
| 2226 | + | |
| 2227 | + // Set fit statistics | |
| 2228 | + for (int i = 0; i < obs.size(); ++i){ | |
| 2229 | + obs[i]->statistics(stat[s]); | |
| 2230 | + } | |
| 2231 | + | |
| 2232 | + // Load models from XML file | |
| 2233 | + obs.models(cta_onoff_model); | |
| 2234 | + | |
| 2235 | + // Perform LM optimization | |
| 2236 | + GOptimizerLM opt; | |
| 2237 | + opt.max_iter(100); | |
| 2238 | + obs.optimize(opt); | |
| 2239 | + obs.errors(opt); | |
| 2240 | + //std::cout << opt << std::endl; | |
| 2241 | + //std::cout << obs << std::endl; | |
| 2242 | + //std::cout << obs.models() << std::endl; | |
| 2243 | + | |
| 2244 | + // Verify fit results | |
| 2245 | + for (int i = 0, j = 0; i < obs.models().size(); ++i) { | |
| 2246 | + const GModel* model = obs.models()[i]; | |
| 2247 | + for (int k = 0; k < model->size(); ++k) { | |
| 2248 | + GModelPar par = (*model)[k]; | |
| 2249 | + std::string msg = "Verify optimization result for " + par.print(); | |
| 2250 | + test_value(par.value(), fit_results[j], | |
| 2251 | + std::abs(1.0e-4*fit_results[j]), msg); | |
| 2252 | + j++; | |
| 2253 | + test_value(par.error(), fit_results[j], | |
| 2254 | + std::abs(1.0e-4*fit_results[j]), msg); | |
| 2255 | + j++; | |
| 2256 | + } | |
| 2257 | + } | |
| 2227 | 2258 | } |
| 2228 | 2259 | |
| 2229 | 2260 | // Return | ... | ... |