diff --git a/inst/cta/test/data/bkgcube.fits.gz b/inst/cta/test/data/bkgcube.fits.gz deleted file mode 100644 index 8866ee8..0000000 --- a/inst/cta/test/data/bkgcube.fits.gz +++ /dev/null diff --git a/inst/cta/test/data/edispcube.fits.gz b/inst/cta/test/data/edispcube.fits.gz deleted file mode 100644 index 370dbe5..0000000 --- a/inst/cta/test/data/edispcube.fits.gz +++ /dev/null diff --git a/inst/cta/test/data/expcube.fits.gz b/inst/cta/test/data/expcube.fits.gz deleted file mode 100644 index 47e3c8a..0000000 --- a/inst/cta/test/data/expcube.fits.gz +++ /dev/null diff --git a/inst/cta/test/data/obs_cube.xml b/inst/cta/test/data/obs_cube.xml deleted file mode 100644 index ced328b..0000000 --- a/inst/cta/test/data/obs_cube.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/inst/cta/test/data/psfcube.fits.gz b/inst/cta/test/data/psfcube.fits.gz deleted file mode 100644 index 3c6799c..0000000 --- a/inst/cta/test/data/psfcube.fits.gz +++ /dev/null diff --git a/inst/cta/test/data/stacked_bkgcube.fits.gz b/inst/cta/test/data/stacked_bkgcube.fits.gz new file mode 100644 index 0000000..2adda05 --- /dev/null +++ b/inst/cta/test/data/stacked_bkgcube.fits.gz diff --git a/inst/cta/test/data/stacked_cntcube.fits.gz b/inst/cta/test/data/stacked_cntcube.fits.gz new file mode 100644 index 0000000..460e253 --- /dev/null +++ b/inst/cta/test/data/stacked_cntcube.fits.gz diff --git a/inst/cta/test/data/stacked_edispcube.fits.gz b/inst/cta/test/data/stacked_edispcube.fits.gz new file mode 100644 index 0000000..f941956 --- /dev/null +++ b/inst/cta/test/data/stacked_edispcube.fits.gz diff --git a/inst/cta/test/data/stacked_expcube.fits.gz b/inst/cta/test/data/stacked_expcube.fits.gz new file mode 100644 index 0000000..0549745 --- /dev/null +++ b/inst/cta/test/data/stacked_expcube.fits.gz diff --git a/inst/cta/test/data/crab_stacked.xml b/inst/cta/test/data/stacked_model.xml index 9d1ec6e..d1c6b9f 100644 --- a/inst/cta/test/data/crab_stacked.xml +++ b/inst/cta/test/data/stacked_model.xml @@ -1,6 +1,6 @@ - + diff --git a/inst/cta/test/data/stacked_obs.xml b/inst/cta/test/data/stacked_obs.xml new file mode 100644 index 0000000..359d1fe --- /dev/null +++ b/inst/cta/test/data/stacked_obs.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/inst/cta/test/data/stacked_obs_input.xml b/inst/cta/test/data/stacked_obs_input.xml new file mode 100644 index 0000000..af10ef2 --- /dev/null +++ b/inst/cta/test/data/stacked_obs_input.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inst/cta/test/data/stacked_psfcube.fits.gz b/inst/cta/test/data/stacked_psfcube.fits.gz new file mode 100644 index 0000000..3cb54f1 --- /dev/null +++ b/inst/cta/test/data/stacked_psfcube.fits.gz diff --git a/inst/cta/test/test_CTA.cpp b/inst/cta/test/test_CTA.cpp index 2aae0b8..585e1f8 100644 --- a/inst/cta/test/test_CTA.cpp +++ b/inst/cta/test/test_CTA.cpp @@ -46,30 +46,36 @@ /* __ Globals ____________________________________________________________ */ /* __ Constants __________________________________________________________ */ -const std::string datadir = PACKAGE_SOURCE"/inst/cta/test/data"; -const std::string cta_caldb = PACKAGE_SOURCE"/inst/cta/caldb"; -const std::string cta_irf = "cta_dummy_irf"; -const std::string cta_events = datadir+"/crab_events.fits"; -const std::string cta_events_gti = datadir+"/crab_events_gti.fits[EVENTS2]"; -const std::string cta_cntmap = datadir+"/crab_cntmap.fits"; -const std::string cta_cube_xml = datadir+"/obs_cube.xml"; -const std::string cta_bin_xml = datadir+"/obs_binned.xml"; -const std::string cta_unbin_xml = datadir+"/obs_unbinned.xml"; -const std::string cta_model_xml = datadir+"/crab.xml"; -const std::string cta_stack_model = datadir+"/crab_stacked.xml"; -const std::string cta_rsp_xml = datadir+"/rsp_models.xml"; -const std::string cta_cube_bgd_xml = datadir+"/cta_model_cube_bgd.xml"; -const std::string cta_irf_bgd_xml = datadir+"/cta_model_irf_bgd.xml"; -const std::string cta_aeff_bgd_xml = datadir+"/cta_model_aeff_bgd.xml"; -const std::string cta_caldb_king = PACKAGE_SOURCE"/inst/cta/caldb/data/cta/e/bcf/IFAE20120510_50h_King"; -const std::string cta_irf_king = "irf_file.fits"; -const std::string cta_psf_table = PACKAGE_SOURCE"/inst/cta/test/caldb/psf_table.fits[PSF_2D_TABLE]"; -const std::string cta_edisp_perf = PACKAGE_SOURCE"/inst/cta/test/caldb/cta_dummy_irf.dat"; -const std::string cta_edisp_rmf = PACKAGE_SOURCE"/inst/cta/test/caldb/dc1/rmf.fits"; -const std::string cta_edisp_2D = PACKAGE_SOURCE"/inst/cta/test/caldb/edisp_matrix.fits"; -const std::string cta_bkgcube = datadir+"/bkgcube.fits"; -const std::string cta_modbck_fit = datadir+"/bg_test.fits"; -const std::string cta_point_table = datadir+"/crab_pointing.fits"; +const std::string datadir = PACKAGE_SOURCE"/inst/cta/test/data"; +const std::string cta_caldb = PACKAGE_SOURCE"/inst/cta/caldb"; +const std::string cta_irf = "cta_dummy_irf"; +const std::string cta_events = datadir+"/crab_events.fits"; +const std::string cta_events_gti = datadir+"/crab_events_gti.fits[EVENTS2]"; +const std::string cta_cntmap = datadir+"/crab_cntmap.fits"; +const std::string cta_bin_xml = datadir+"/obs_binned.xml"; +const std::string cta_unbin_xml = datadir+"/obs_unbinned.xml"; +const std::string cta_model_xml = datadir+"/crab.xml"; +const std::string cta_rsp_xml = datadir+"/rsp_models.xml"; +const std::string cta_cube_bgd_xml = datadir+"/cta_model_cube_bgd.xml"; +const std::string cta_irf_bgd_xml = datadir+"/cta_model_irf_bgd.xml"; +const std::string cta_aeff_bgd_xml = datadir+"/cta_model_aeff_bgd.xml"; +const std::string cta_caldb_king = PACKAGE_SOURCE"/inst/cta/caldb/data/cta/e/bcf/IFAE20120510_50h_King"; +const std::string cta_irf_king = "irf_file.fits"; +const std::string cta_psf_table = PACKAGE_SOURCE"/inst/cta/test/caldb/psf_table.fits[PSF_2D_TABLE]"; +const std::string cta_edisp_perf = PACKAGE_SOURCE"/inst/cta/test/caldb/cta_dummy_irf.dat"; +const std::string cta_edisp_rmf = PACKAGE_SOURCE"/inst/cta/test/caldb/dc1/rmf.fits"; +const std::string cta_edisp_2D = PACKAGE_SOURCE"/inst/cta/test/caldb/edisp_matrix.fits"; +const std::string cta_modbck_fit = datadir+"/bg_test.fits"; +const std::string cta_point_table = datadir+"/crab_pointing.fits"; + +/* __ Test files for stacked analysis (based on Prod2::South_0.5h) _______ */ +const std::string cta_stacked_xml = datadir+"/stacked_obs.xml"; +const std::string cta_stacked_model = datadir+"/stacked_model.xml"; +const std::string cta_stacked_cntcube = datadir+"/stacked_cntcube.fits"; +const std::string cta_stacked_expcube = datadir+"/stacked_expcube.fits"; +const std::string cta_stacked_psfcube = datadir+"/stacked_psfcube.fits"; +const std::string cta_stacked_edispcube = datadir+"/stacked_edispcube.fits"; +const std::string cta_stacked_bkgcube = datadir+"/stacked_bkgcube.fits"; /***********************************************************************//** @@ -1022,7 +1028,7 @@ void TestGCTAResponse::test_response_psfcube(void) } /***********************************************************************//** - * @brief Test PSF cube handling + * @brief Test background cube handling ***************************************************************************/ void TestGCTAResponse::test_response_bkgcube(void) { @@ -1037,7 +1043,7 @@ void TestGCTAResponse::test_response_bkgcube(void) } GCTACubeBackground cube; - cube.load(cta_bkgcube); + cube.load(cta_stacked_bkgcube); cube.save("test_cta_bkgcube.fits", true); // Return @@ -1045,7 +1051,7 @@ void TestGCTAResponse::test_response_bkgcube(void) } /***********************************************************************//** - * @brief Test Edisp cube handling + * @brief Test energy dispersion cube handling ***************************************************************************/ void TestGCTAResponse::test_response_edispcube(void) { @@ -1745,14 +1751,13 @@ void TestGCTAObservation::test_binned_obs(void) ***************************************************************************/ void TestGCTAObservation::test_stacked_obs(void) { - // Set filenames - const std::string filename = "test_cta_obs_cube.xml"; + // Construct stacked observation without energy dispersion + GCTAObservation cta1(cta_stacked_cntcube, + cta_stacked_expcube, + cta_stacked_psfcube, + cta_stacked_bkgcube); - // Construct stacked observation - GCTAObservation cta1(cta_cntmap, - datadir+"/expcube.fits", - datadir+"/psfcube.fits", - datadir+"/bkgcube.fits"); + // Test for presence of response const GCTAResponseCube* rsp = dynamic_cast(cta1.response()); test_assert((rsp != NULL), "Observation contains cube response"); @@ -1762,11 +1767,13 @@ void TestGCTAObservation::test_stacked_obs(void) } // Construct stacked observation with energy dispersion - GCTAObservation cta2(cta_cntmap, - datadir+"/expcube.fits", - datadir+"/psfcube.fits", - datadir+"/edispcube.fits", - datadir+"/bkgcube.fits"); + GCTAObservation cta2(cta_stacked_cntcube, + cta_stacked_expcube, + cta_stacked_psfcube, + cta_stacked_edispcube, + cta_stacked_bkgcube); + + // Test for presence of response rsp = dynamic_cast(cta2.response()); test_assert((rsp != NULL), "Observation contains cube response"); if (rsp != NULL) { @@ -1774,9 +1781,11 @@ void TestGCTAObservation::test_stacked_obs(void) test_assert(rsp->use_edisp(), "Response has energy dispersion"); } - // Construct stacked observation from XML file (w/o energy dispersion) - GObservations obs(cta_cube_xml); + // Construct stacked observation from XML file without energy dispersion + GObservations obs(cta_stacked_xml); test_value(obs.size(), 1, "One observation in container"); + + // Test for presence of response rsp = dynamic_cast(obs[0]->response()); test_assert((rsp != NULL), "Observation contains cube response"); if (rsp != NULL) { @@ -1785,7 +1794,7 @@ void TestGCTAObservation::test_stacked_obs(void) } // Save observation container into XML file - obs.save(filename); + obs.save("test_cta_obs_cube.xml"); // Return return; @@ -1907,27 +1916,28 @@ void TestGCTAOptimize::test_binned_optimizer(void) /***********************************************************************//** * @brief Test stacked optimizer * - * The stacked response cubes have been computed using the dummy_irf. + * The stacked response cubes have been computed using the Prod2::South_0.5h + * response. ***************************************************************************/ void TestGCTAOptimize::test_stacked_optimizer(void) { // Set reference result double fit_results[] = {83.6331, 0, 22.0145, 0, - 5.98597e-16, 2.00288e-17, - -2.5012, 0.0250613, + 5.98351e-16, 1.09268e-17, + -2.49903, 0.0145957, 300000, 0, 1, 0, - 0.978511, 0.0255432, - 0.0290683, 0.0163737, + 1.07386, 0.0218562, + 0.00440413, 0.0145699, 1.0e6, 0, 1, 0}; // Load stacked CTA observation - GObservations obs(cta_cube_xml); + GObservations obs(cta_stacked_xml); // Load models from XML file - obs.models(cta_stack_model); + obs.models(cta_stacked_model); // Perform LM optimization GOptimizerLM opt;