Commit 80cbc54c135c58e69b80256c630412060afeefa9

Authored by Jürgen Knödlseder
1 parent 27649b93

Support out of source builds

Showing 99 changed files with 1678 additions and 2182 deletions
ChangeLog
1 -2016-07-01 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu> 1 +2016-07-09 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu>
2 2
3 * Version 1.1.0 released 3 * Version 1.1.0 released
4 ======================== 4 ========================
@@ -24,6 +24,7 @@ @@ -24,6 +24,7 @@
24 Add documentation for IACT analysis (#1646) 24 Add documentation for IACT analysis (#1646)
25 ctselect allows usage of non-default events and GTI extensions (#1598) 25 ctselect allows usage of non-default events and GTI extensions (#1598)
26 Add csworkflow workflow manager script (#1508) 26 Add csworkflow workflow manager script (#1508)
  27 + Support out of source builds (#1484)
27 28
28 29
29 2016-01-27 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu> 30 2016-01-27 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu>
Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile for ctools package #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Include M4 macros 22 # Include M4 macros
4 ACLOCAL_AMFLAGS = -I m4 23 ACLOCAL_AMFLAGS = -I m4
@@ -25,6 +44,10 @@ doc_DATA = \ @@ -25,6 +44,10 @@ doc_DATA = \
25 README.md 44 README.md
26 docdir = ${datadir}/doc/${PACKAGE} 45 docdir = ${datadir}/doc/${PACKAGE}
27 46
  47 +# Extra files to be distributed in the tar file
  48 +EXTRA_DIST = README.md \
  49 + doc/Doxyfile doc/source
  50 +
28 #install-data-local: $(HTML_INSTALL_DATA_TARGETS) 51 #install-data-local: $(HTML_INSTALL_DATA_TARGETS)
29 #uninstall-local: $(HTML_UNINSTALL_DATA_TARGETS) 52 #uninstall-local: $(HTML_UNINSTALL_DATA_TARGETS)
30 53
1 New Features and Important Changes in ctools 1.1.0 1 New Features and Important Changes in ctools 1.1.0
2 2
3 -1 July 2016 3 +9 July 2016
4 4
5 5
6 Introduction 6 Introduction
@@ -11,7 +11,7 @@ ctools release with respect to the precedent release. @@ -11,7 +11,7 @@ ctools release with respect to the precedent release.
11 11
12 Configuration 12 Configuration
13 ------------- 13 -------------
14 -None 14 +The package now supports out of source builds (#1484).
15 15
16 16
17 Python interface 17 Python interface
caldb/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for calibration database #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 -# Calibration files to distribute 22 +# Calibration files to install
4 caldb_prod2_indxdir = $(datadir)/caldb/data/cta/prod2 23 caldb_prod2_indxdir = $(datadir)/caldb/data/cta/prod2
5 -caldb_prod2_indx_DATA = data/cta/prod2/caldb.indx 24 +caldb_prod2_indx_DATA = $(srcdir)/data/cta/prod2/caldb.indx
  25 +#
6 caldb_prod2_north1dir = $(datadir)/caldb/data/cta/prod2/bcf/North_0.5h 26 caldb_prod2_north1dir = $(datadir)/caldb/data/cta/prod2/bcf/North_0.5h
7 -caldb_prod2_north1_DATA = data/cta/prod2/bcf/North_0.5h/irf_file.fits.gz 27 +caldb_prod2_north1_DATA = $(srcdir)/data/cta/prod2/bcf/North_0.5h/irf_file.fits.gz
8 caldb_prod2_north2dir = $(datadir)/caldb/data/cta/prod2/bcf/North_5h 28 caldb_prod2_north2dir = $(datadir)/caldb/data/cta/prod2/bcf/North_5h
9 -caldb_prod2_north2_DATA = data/cta/prod2/bcf/North_5h/irf_file.fits.gz 29 +caldb_prod2_north2_DATA = $(srcdir)/data/cta/prod2/bcf/North_5h/irf_file.fits.gz
10 caldb_prod2_north3dir = $(datadir)/caldb/data/cta/prod2/bcf/North_50h 30 caldb_prod2_north3dir = $(datadir)/caldb/data/cta/prod2/bcf/North_50h
11 -caldb_prod2_north3_DATA = data/cta/prod2/bcf/North_50h/irf_file.fits.gz 31 +caldb_prod2_north3_DATA = $(srcdir)/data/cta/prod2/bcf/North_50h/irf_file.fits.gz
12 # 32 #
13 caldb_prod2_south1dir = $(datadir)/caldb/data/cta/prod2/bcf/South_0.5h 33 caldb_prod2_south1dir = $(datadir)/caldb/data/cta/prod2/bcf/South_0.5h
14 -caldb_prod2_south1_DATA = data/cta/prod2/bcf/South_0.5h/irf_file.fits.gz 34 +caldb_prod2_south1_DATA = $(srcdir)/data/cta/prod2/bcf/South_0.5h/irf_file.fits.gz
15 caldb_prod2_south2dir = $(datadir)/caldb/data/cta/prod2/bcf/South_5h 35 caldb_prod2_south2dir = $(datadir)/caldb/data/cta/prod2/bcf/South_5h
16 -caldb_prod2_south2_DATA = data/cta/prod2/bcf/South_5h/irf_file.fits.gz 36 +caldb_prod2_south2_DATA = $(srcdir)/data/cta/prod2/bcf/South_5h/irf_file.fits.gz
17 caldb_prod2_south3dir = $(datadir)/caldb/data/cta/prod2/bcf/South_50h 37 caldb_prod2_south3dir = $(datadir)/caldb/data/cta/prod2/bcf/South_50h
18 -caldb_prod2_south3_DATA = data/cta/prod2/bcf/South_50h/irf_file.fits.gz 38 +caldb_prod2_south3_DATA = $(srcdir)/data/cta/prod2/bcf/South_50h/irf_file.fits.gz
  39 +
  40 +# Calibration files to be distributed in the tar file
  41 +EXTRA_DIST = $(caldb_prod2_indx_DATA) \
  42 + $(caldb_prod2_north1_DATA) \
  43 + $(caldb_prod2_north2_DATA) \
  44 + $(caldb_prod2_north3_DATA) \
  45 + $(caldb_prod2_south1_DATA) \
  46 + $(caldb_prod2_south2_DATA) \
  47 + $(caldb_prod2_south3_DATA)
configure.ac
1 ############################################################################# 1 #############################################################################
2 -# Configuration for ctools - a set of tools for science analysis of CTA #  
3 -# data # 2 +# Configuration for ctools - tools for science analysis of CTA data #
4 # ------------------------------------------------------------------------- # 3 # ------------------------------------------------------------------------- #
5 # Copyright (C) 2011-2016 Juergen Knoedlseder # 4 # Copyright (C) 2011-2016 Juergen Knoedlseder #
6 # ------------------------------------------------------------------------- # 5 # ------------------------------------------------------------------------- #
@@ -33,8 +32,8 @@ AC_INIT([ctools], [1.1.0.dev1], [jurgen.knodlseder@irap.omp.eu], [ctools]) @@ -33,8 +32,8 @@ AC_INIT([ctools], [1.1.0.dev1], [jurgen.knodlseder@irap.omp.eu], [ctools])
33 AC_CONFIG_SRCDIR([src/ctselect/ctselect.cpp]) 32 AC_CONFIG_SRCDIR([src/ctselect/ctselect.cpp])
34 AC_CONFIG_MACRO_DIR([m4]) 33 AC_CONFIG_MACRO_DIR([m4])
35 #AM_INIT_AUTOMAKE([gnu no-dependencies foreign]) 34 #AM_INIT_AUTOMAKE([gnu no-dependencies foreign])
36 -AM_INIT_AUTOMAKE([gnu -Wno-portability foreign])  
37 -#AM_INIT_AUTOMAKE([gnu -Wno-portability serial-tests foreign]) 35 +#AM_INIT_AUTOMAKE([gnu -Wno-portability foreign])
  36 +AM_INIT_AUTOMAKE([gnu -Wno-portability foreign serial-tests])
38 AC_CONFIG_HEADER([config.h]) 37 AC_CONFIG_HEADER([config.h])
39 38
40 39
@@ -609,8 +608,9 @@ AC_C_INLINE @@ -609,8 +608,9 @@ AC_C_INLINE
609 # Python binding requires Python and either the files tools_wrap.cpp and # 608 # Python binding requires Python and either the files tools_wrap.cpp and #
610 # tools.py or swig to create these files. The following conditionals are # 609 # tools.py or swig to create these files. The following conditionals are #
611 # set: # 610 # set: #
612 -# WITH_PYTHON - Python bindings will be built #  
613 -# HAVE_SWIG - swig is available # 611 +# WITH_PYTHON - Python bindings will be built #
  612 +# HAVE_SWIG - swig is available #
  613 +# HAVE_WRAPPERS - wrappers are available #
614 ############################################################################# 614 #############################################################################
615 # Initialise flags 615 # Initialise flags
616 enable_python="no" 616 enable_python="no"
@@ -618,6 +618,7 @@ has_python=&quot;no&quot; @@ -618,6 +618,7 @@ has_python=&quot;no&quot;
618 has_python_h="no" 618 has_python_h="no"
619 has_swig="no" 619 has_swig="no"
620 has_wrappers="no" 620 has_wrappers="no"
  621 +build_wrappers="no"
621 622
622 # Python binding enabled? 623 # Python binding enabled?
623 AC_ARG_ENABLE([python-binding], 624 AC_ARG_ENABLE([python-binding],
@@ -734,12 +735,18 @@ else @@ -734,12 +735,18 @@ else
734 735
735 # Do we have wrappers (tools_wrap.cpp and tools.py)? 736 # Do we have wrappers (tools_wrap.cpp and tools.py)?
736 has_wrappers="yes" 737 has_wrappers="yes"
737 - AC_CHECK_FILES([pyext/ctools/tools_wrap.cpp pyext/ctools/tools.py],, 738 + AC_CHECK_FILES([$srcdir/pyext/ctools/tools_wrap.cpp
  739 + $srcdir/pyext/ctools/tools.py],,
738 [has_wrappers="no"]) 740 [has_wrappers="no"])
739 if test "x$has_wrappers" = "xno"; then 741 if test "x$has_wrappers" = "xno"; then
740 AC_MSG_WARN([Python wrapper missing. Requires swig for wrapper generation.]) 742 AC_MSG_WARN([Python wrapper missing. Requires swig for wrapper generation.])
741 fi 743 fi
742 744
  745 + # Don't we have wrappers but we have swig
  746 + if [test "x$has_wrappers" = "xno" -a "x$has_swig" = "xyes"]; then
  747 + build_wrappers="yes"
  748 + fi
  749 +
743 # Signal if Python is enabled 750 # Signal if Python is enabled
744 if test "x$ac_enable_python_binding" = "xyes" -a "x$has_python" = "xyes" -a "x$has_python_h" = "xyes"; then 751 if test "x$ac_enable_python_binding" = "xyes" -a "x$has_python" = "xyes" -a "x$has_python_h" = "xyes"; then
745 if test "x$has_swig" = "xyes" -o "x$has_wrappers" = "xyes"; then 752 if test "x$has_swig" = "xyes" -o "x$has_wrappers" = "xyes"; then
@@ -748,8 +755,10 @@ else @@ -748,8 +755,10 @@ else
748 fi 755 fi
749 756
750 fi 757 fi
751 -AM_CONDITIONAL(HAVE_SWIG, test "x$has_swig" = "xyes")  
752 AM_CONDITIONAL(WITH_PYTHON, test "x$enable_python" = "xyes") 758 AM_CONDITIONAL(WITH_PYTHON, test "x$enable_python" = "xyes")
  759 +AM_CONDITIONAL(HAVE_SWIG, test "x$has_swig" = "xyes")
  760 +AM_CONDITIONAL(HAVE_WRAPPERS, test "x$has_wrappers" = "xyes")
  761 +AM_CONDITIONAL(BUILD_WRAPPERS, test "x$build_wrappers" = "xyes")
753 762
754 # Set Python environment 763 # Set Python environment
755 if test "x$enable_python" = "xyes"; then 764 if test "x$enable_python" = "xyes"; then
@@ -1022,7 +1031,6 @@ AC_CONFIG_FILES([Makefile @@ -1022,7 +1031,6 @@ AC_CONFIG_FILES([Makefile
1022 src/support/Makefile 1031 src/support/Makefile
1023 src/ctools-setup 1032 src/ctools-setup
1024 test/Makefile 1033 test/Makefile
1025 - test/test_cscripts.sh  
1026 test/test_python_ctools.sh 1034 test/test_python_ctools.sh
1027 test/test_python_cscripts.sh 1035 test/test_python_cscripts.sh
1028 test/test_examples.py 1036 test/test_examples.py
@@ -1036,8 +1044,7 @@ AC_CONFIG_FILES([Makefile @@ -1036,8 +1044,7 @@ AC_CONFIG_FILES([Makefile
1036 examples/Makefile 1044 examples/Makefile
1037 ctools.pc 1045 ctools.pc
1038 testconf.sh], 1046 testconf.sh],
1039 - [if test -f test/test_cscripts.sh; then chmod +x test/test_cscripts.sh; fi;  
1040 - if test -f test/test_python_ctools.sh; then chmod +x test/test_python_ctools.sh; fi; 1047 + [if test -f test/test_python_ctools.sh; then chmod +x test/test_python_ctools.sh; fi;
1041 if test -f test/test_python_cscripts.sh; then chmod +x test/test_python_cscripts.sh; fi; 1048 if test -f test/test_python_cscripts.sh; then chmod +x test/test_python_cscripts.sh; fi;
1042 if test -f test/test_examples.py; then chmod +x test/test_examples.py; fi; 1049 if test -f test/test_examples.py; then chmod +x test/test_examples.py; fi;
1043 if test -f testconf.sh; then chmod +x testconf.sh; fi]) 1050 if test -f testconf.sh; then chmod +x testconf.sh; fi])
cscripts/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile for cscripts scripts #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Scripts to be distributed in $(pyexecdir)/cscripts 22 # Scripts to be distributed in $(pyexecdir)/cscripts
4 -pythonscripts = __init__.py \  
5 - cscaldb.py \  
6 - csinfo.py \  
7 - cslightcrv.py \  
8 - csmodelinfo.py \  
9 - csmodelmerge.py \  
10 - csobs2caldb.py \  
11 - csobsdef.py \  
12 - csobsinfo.py \  
13 - cspull.py \  
14 - csresmap.py \  
15 - csroot2caldb.py \  
16 - cssens.py \  
17 - csspec.py \  
18 - cstsdist.py \  
19 - cstsmapmerge.py \  
20 - cstsmapsplit.py \  
21 - csworkflow.py \  
22 - csfindobs.py \  
23 - csiactcopy.py \  
24 - csiactdata.py \  
25 - csiactobs.py \  
26 - obsutils.py 23 +pythonscripts = $(builddir)/__init__.py \
  24 + $(srcdir)/cscaldb.py \
  25 + $(srcdir)/csinfo.py \
  26 + $(srcdir)/cslightcrv.py \
  27 + $(srcdir)/csmodelinfo.py \
  28 + $(srcdir)/csmodelmerge.py \
  29 + $(srcdir)/csobs2caldb.py \
  30 + $(srcdir)/csobsdef.py \
  31 + $(srcdir)/csobsinfo.py \
  32 + $(srcdir)/cspull.py \
  33 + $(srcdir)/csresmap.py \
  34 + $(srcdir)/csroot2caldb.py \
  35 + $(srcdir)/cssens.py \
  36 + $(srcdir)/csspec.py \
  37 + $(srcdir)/cstsdist.py \
  38 + $(srcdir)/cstsmapmerge.py \
  39 + $(srcdir)/cstsmapsplit.py \
  40 + $(srcdir)/csworkflow.py \
  41 + $(srcdir)/csfindobs.py \
  42 + $(srcdir)/csiactcopy.py \
  43 + $(srcdir)/csiactdata.py \
  44 + $(srcdir)/csiactobs.py \
  45 + $(srcdir)/obsutils.py
27 46
28 # Parfiles to be distributed in $(prefix)/syspfiles 47 # Parfiles to be distributed in $(prefix)/syspfiles
29 -parfiles = cscaldb.par \  
30 - cslightcrv.par \  
31 - csmodelinfo.par \  
32 - csmodelmerge.par \  
33 - csobs2caldb.par \  
34 - csobsdef.par \  
35 - csobsinfo.par \  
36 - cspull.par \  
37 - csresmap.par \  
38 - csroot2caldb.par \  
39 - cssens.par \  
40 - csspec.par \  
41 - cstsdist.par \  
42 - cstsmapmerge.par \  
43 - cstsmapsplit.par \  
44 - csworkflow.par \  
45 - csfindobs.par \  
46 - csiactcopy.par \  
47 - csiactdata.par \  
48 - csiactobs.par 48 +parfiles = $(srcdir)/cscaldb.par \
  49 + $(srcdir)/cslightcrv.par \
  50 + $(srcdir)/csmodelinfo.par \
  51 + $(srcdir)/csmodelmerge.par \
  52 + $(srcdir)/csobs2caldb.par \
  53 + $(srcdir)/csobsdef.par \
  54 + $(srcdir)/csobsinfo.par \
  55 + $(srcdir)/cspull.par \
  56 + $(srcdir)/csresmap.par \
  57 + $(srcdir)/csroot2caldb.par \
  58 + $(srcdir)/cssens.par \
  59 + $(srcdir)/csspec.par \
  60 + $(srcdir)/cstsdist.par \
  61 + $(srcdir)/cstsmapmerge.par \
  62 + $(srcdir)/cstsmapsplit.par \
  63 + $(srcdir)/csworkflow.par \
  64 + $(srcdir)/csfindobs.par \
  65 + $(srcdir)/csiactcopy.par \
  66 + $(srcdir)/csiactdata.par \
  67 + $(srcdir)/csiactobs.par
49 68
50 # Scripts for which symbolic links will be created in bindir 69 # Scripts for which symbolic links will be created in bindir
51 linkscripts = cscaldb \ 70 linkscripts = cscaldb \
@@ -71,64 +90,70 @@ linkscripts = cscaldb \ @@ -71,64 +90,70 @@ linkscripts = cscaldb \
71 csiactobs 90 csiactobs
72 91
73 # Test scripts to be distributed in $(pyexecdir)/cscripts/tests 92 # Test scripts to be distributed in $(pyexecdir)/cscripts/tests
74 -testscripts = tests/__init__.py \  
75 - ../test/testing.py \  
76 - ../test/test_python_cscripts.py \  
77 - ../test/test_cscaldb.py \  
78 - ../test/test_csmodelinfo.py \  
79 - ../test/test_csmodelmerge.py \  
80 - ../test/test_csobs2caldb.py \  
81 - ../test/test_csobsdef.py \  
82 - ../test/test_csobsinfo.py \  
83 - ../test/test_cslightcrv.py \  
84 - ../test/test_cspull.py \  
85 - ../test/test_csresmap.py \  
86 - ../test/test_csroot2caldb.py \  
87 - ../test/test_cssens.py \  
88 - ../test/test_csspec.py \  
89 - ../test/test_cstsdist.py \  
90 - ../test/test_cstsmapmerge.py \  
91 - ../test/test_cstsmapsplit.py \  
92 - ../test/test_csworkflow.py \  
93 - ../test/test_csfindobs.py \  
94 - ../test/test_csiactcopy.py \  
95 - ../test/test_csiactdata.py \  
96 - ../test/test_csiactobs.py 93 +testscripts = $(srcdir)/tests/__init__.py \
  94 + $(top_srcdir)/test/testing.py \
  95 + $(top_srcdir)/test/test_python_cscripts.py \
  96 + $(top_srcdir)/test/test_cscaldb.py \
  97 + $(top_srcdir)/test/test_csmodelinfo.py \
  98 + $(top_srcdir)/test/test_csmodelmerge.py \
  99 + $(top_srcdir)/test/test_csobs2caldb.py \
  100 + $(top_srcdir)/test/test_csobsdef.py \
  101 + $(top_srcdir)/test/test_csobsinfo.py \
  102 + $(top_srcdir)/test/test_cslightcrv.py \
  103 + $(top_srcdir)/test/test_cspull.py \
  104 + $(top_srcdir)/test/test_csresmap.py \
  105 + $(top_srcdir)/test/test_csroot2caldb.py \
  106 + $(top_srcdir)/test/test_cssens.py \
  107 + $(top_srcdir)/test/test_csspec.py \
  108 + $(top_srcdir)/test/test_cstsdist.py \
  109 + $(top_srcdir)/test/test_cstsmapmerge.py \
  110 + $(top_srcdir)/test/test_cstsmapsplit.py \
  111 + $(top_srcdir)/test/test_csworkflow.py \
  112 + $(top_srcdir)/test/test_csfindobs.py \
  113 + $(top_srcdir)/test/test_csiactcopy.py \
  114 + $(top_srcdir)/test/test_csiactdata.py \
  115 + $(top_srcdir)/test/test_csiactobs.py
97 116
98 # Test data to be distributed in $(pyexecdir)/cscripts/tests/data 117 # Test data to be distributed in $(pyexecdir)/cscripts/tests/data
99 -testdata = ../test/data/crab.xml \  
100 - ../test/data/obs_unbinned.xml \  
101 - ../test/data/obs_stacked.xml \  
102 - ../test/data/crab_events.fits.gz \  
103 - ../test/data/crab_cntmap.fits.gz \  
104 - ../test/data/crab_cntmap_small.fits.gz \  
105 - ../test/data/crab_expcube.fits.gz \  
106 - ../test/data/crab_psfcube.fits.gz \  
107 - ../test/data/crab_edispcube.fits.gz \  
108 - ../test/data/crab_bkgcube.fits.gz \  
109 - ../test/data/tsmap_0.fits \  
110 - ../test/data/tsmap_1.fits \  
111 - ../test/data/exclusion.reg \  
112 - ../test/data/pntdef.dat \  
113 - ../test/data/models.txt \  
114 - ../test/data/tsmaps.txt \  
115 - ../test/data/model_cube_background.xml \  
116 - ../test/data/model_cube_background2.xml \  
117 - ../test/data/crab_bkgcube.xml \  
118 - ../test/data/irf.root \  
119 - ../test/data/workflow.xml 118 +testdata = $(top_srcdir)/test/data/crab.xml \
  119 + $(top_srcdir)/test/data/obs_unbinned.xml \
  120 + $(top_srcdir)/test/data/obs_stacked.xml \
  121 + $(top_srcdir)/test/data/crab_events.fits.gz \
  122 + $(top_srcdir)/test/data/crab_cntmap.fits.gz \
  123 + $(top_srcdir)/test/data/crab_cntmap_small.fits.gz \
  124 + $(top_srcdir)/test/data/crab_expcube.fits.gz \
  125 + $(top_srcdir)/test/data/crab_psfcube.fits.gz \
  126 + $(top_srcdir)/test/data/crab_edispcube.fits.gz \
  127 + $(top_srcdir)/test/data/crab_bkgcube.fits.gz \
  128 + $(top_srcdir)/test/data/tsmap_0.fits \
  129 + $(top_srcdir)/test/data/tsmap_1.fits \
  130 + $(top_srcdir)/test/data/exclusion.reg \
  131 + $(top_srcdir)/test/data/pntdef.dat \
  132 + $(top_srcdir)/test/data/models.txt \
  133 + $(top_srcdir)/test/data/tsmaps.txt \
  134 + $(top_srcdir)/test/data/model_cube_background.xml \
  135 + $(top_srcdir)/test/data/model_cube_background2.xml \
  136 + $(top_srcdir)/test/data/crab_bkgcube.xml \
  137 + $(top_srcdir)/test/data/irf.root \
  138 + $(top_srcdir)/test/data/irf_file.fits.gz \
  139 + $(top_srcdir)/test/data/workflow.xml \
  140 + $(top_srcdir)/test/data/butterfly.txt \
  141 + $(top_srcdir)/test/data/pha.fits \
  142 + $(top_srcdir)/test/data/pull.dat \
  143 + $(top_srcdir)/test/data/sensitivity.dat \
  144 + $(top_srcdir)/test/data/spectrum.fits \
  145 + $(top_srcdir)/test/data/ts.dat
120 146
121 -# Test data to be distributed in $(pyexecdir)/cscripts/tests/iactdata  
122 -testiactdata = ../test/iactdata/hdu-index.fits.gz \  
123 - ../test/iactdata/master.json \  
124 - ../test/iactdata/obs-index.fits.gz 147 +# Test data to be distributed in $(pyexecdir)/cscripts/tests/data/iactdata
  148 +testiactdata = $(top_srcdir)/test/data/iactdata/hdu-index.fits.gz \
  149 + $(top_srcdir)/test/data/iactdata/master.json \
  150 + $(top_srcdir)/test/data/iactdata/obs-index.fits.gz \
  151 + $(top_srcdir)/test/data/iactdata/irf_file.fits.gz \
  152 + $(top_srcdir)/test/data/iactdata/events.fits.gz
125 153
126 -# Test IRFs to be distributed in $(pyexecdir)/cscripts/tests/irf  
127 -testirf = ../test/irf/irf_file.fits.gz \  
128 - ../test/irf/cta_dummy_irf.dat  
129 -  
130 -# Distribute scripts and parfiles  
131 -EXTRA_DIST = $(binscripts) $(pythonscripts) 154 +# Install scripts, parfiles, test scripts and test data. Note that we don't
  155 +# need to prepend $(DESTDIR) here (not fully clear why, but that's the way
  156 +# it is)
132 binscriptsdir = $(bindir) 157 binscriptsdir = $(bindir)
133 binscripts_DATA = $(binscripts) 158 binscripts_DATA = $(binscripts)
134 pythonscriptsdir = $(pyexecdir)/cscripts 159 pythonscriptsdir = $(pyexecdir)/cscripts
@@ -139,12 +164,14 @@ testscriptsdir = $(pyexecdir)/cscripts/tests @@ -139,12 +164,14 @@ testscriptsdir = $(pyexecdir)/cscripts/tests
139 testscripts_DATA = $(testscripts) 164 testscripts_DATA = $(testscripts)
140 testdatadir = $(pyexecdir)/cscripts/tests/data 165 testdatadir = $(pyexecdir)/cscripts/tests/data
141 testdata_DATA = $(testdata) 166 testdata_DATA = $(testdata)
142 -testiactdatadir = $(pyexecdir)/cscripts/tests/iactdata 167 +testiactdatadir = $(pyexecdir)/cscripts/tests/data/iactdata
143 testiactdata_DATA = $(testiactdata) 168 testiactdata_DATA = $(testiactdata)
144 -testirfdir = $(pyexecdir)/cscripts/tests/irf  
145 -testirf_DATA = $(testirf)  
146 169
147 -# Add hook rule to create symbolic links for cscripts 170 +# Files to be distributed in the tar file
  171 +EXTRA_DIST = $(binscripts) $(pythonscripts) $(parfiles) \
  172 + $(testscripts) $(testdata) $(testiactdata)
  173 +
  174 +# Add install hook rule to create symbolic links for cscripts
148 install-data-hook: 175 install-data-hook:
149 @binlist='$(binscripts)';\ 176 @binlist='$(binscripts)';\
150 for p in $$binlist; do \ 177 for p in $$binlist; do \
@@ -156,4 +183,17 @@ install-data-hook: @@ -156,4 +183,17 @@ install-data-hook:
156 ln -s "$(DESTDIR)$(pyexecdir)/cscripts/$$p.py" "$(DESTDIR)$(bindir)/$$p"; \ 183 ln -s "$(DESTDIR)$(pyexecdir)/cscripts/$$p.py" "$(DESTDIR)$(bindir)/$$p"; \
157 chmod +x "$(DESTDIR)$(pyexecdir)/cscripts/$$p.py"; \ 184 chmod +x "$(DESTDIR)$(pyexecdir)/cscripts/$$p.py"; \
158 done 185 done
159 - 186 +
  187 +# Files to be removed in build directory
  188 +clean-local:
  189 + rm -rf $(builddir)/cs*.py
  190 + rm -rf $(builddir)/obsutils.py
  191 + rm -rf $(builddir)/*.pyc
  192 + rm -rf $(builddir)/*.par
  193 +
  194 +# Uninstall the cscripts Python module
  195 +uninstall-local:
  196 + rm -rf $(DESTDIR)$(pyexecdir)/cscripts/*.pyc
  197 + rm -rf $(DESTDIR)$(pyexecdir)/cscripts/__pycache__
  198 + rm -rf $(DESTDIR)$(pyexecdir)/cscripts/tests/*.pyc
  199 + rm -rf $(DESTDIR)$(pyexecdir)/cscripts/tests/__pycache__
cscripts/csiactcopy.py
@@ -18,8 +18,8 @@ @@ -18,8 +18,8 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
21 -import sys  
22 import os 21 import os
  22 +import sys
23 import json 23 import json
24 import shutil 24 import shutil
25 import gammalib 25 import gammalib
@@ -694,7 +694,11 @@ class csiactcopy(ctools.cscript): @@ -694,7 +694,11 @@ class csiactcopy(ctools.cscript):
694 self._log('Adding "'+str(newdict['name'])+'"') 694 self._log('Adding "'+str(newdict['name'])+'"')
695 self._log('\n') 695 self._log('\n')
696 696
697 - # Write new json master file 697 + # Write new json master file. Make sure that we have write permission
  698 + # before writing the file. This is needed as the original master file
  699 + # may be read-only, and the shutil.copy2 function copies over the
  700 + # access permissions.
  701 + os.chmod(localmaster, 0644)
698 f = open(localmaster, 'w') 702 f = open(localmaster, 'w')
699 data['datasets'] = newconfigs 703 data['datasets'] = newconfigs
700 json.dump(data, f, indent=2) 704 json.dump(data, f, indent=2)
cscripts/csmodelmerge.py
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import os
21 import sys 22 import sys
22 import glob 23 import glob
23 import gammalib 24 import gammalib
@@ -64,10 +65,22 @@ class csmodelmerge(ctools.cscript): @@ -64,10 +65,22 @@ class csmodelmerge(ctools.cscript):
64 # Get input models string 65 # Get input models string
65 inmodels = self['inmodels'].string() 66 inmodels = self['inmodels'].string()
66 67
67 - # Handle ascii files 68 + # Handle ASCII files. If the file names given in the ASCII are
  69 + # relative filenames it is assumed that the filename is given
  70 + # relative to the location of the file.
68 if '@' == inmodels[0]: 71 if '@' == inmodels[0]:
69 - self._files = open(inmodels.replace('@','')).read().splitlines()  
70 - 72 + filename = inmodels.replace('@','')
  73 + self._files = open(filename).read().splitlines()
  74 + dirname = os.path.dirname(filename)
  75 + files = []
  76 + for f in self._files:
  77 + if f[0] != '/':
  78 + fname = dirname + '/' + f
  79 + else:
  80 + fname = f
  81 + files.append(fname)
  82 + self._files = files
  83 +
71 # Handle wild card strings 84 # Handle wild card strings
72 elif '*' in inmodels: 85 elif '*' in inmodels:
73 self._files = glob.glob(inmodels) 86 self._files = glob.glob(inmodels)
@@ -124,10 +137,10 @@ class csmodelmerge(ctools.cscript): @@ -124,10 +137,10 @@ class csmodelmerge(ctools.cscript):
124 self._models = gammalib.GModels() 137 self._models = gammalib.GModels()
125 138
126 # Loop over model files 139 # Loop over model files
127 - for file_ in self._files: 140 + for f in self._files:
128 141
129 # Construct container from XML file 142 # Construct container from XML file
130 - models = gammalib.GModels(file_) 143 + models = gammalib.GModels(f)
131 144
132 # Log number of models to add 145 # Log number of models to add
133 if self._logTerse(): 146 if self._logTerse():
@@ -139,7 +152,7 @@ class csmodelmerge(ctools.cscript): @@ -139,7 +152,7 @@ class csmodelmerge(ctools.cscript):
139 else: 152 else:
140 self._log(gammalib.parformat('Add %d models from file' % 153 self._log(gammalib.parformat('Add %d models from file' %
141 nmodels)) 154 nmodels))
142 - self._log(file_) 155 + self._log(f)
143 self._log('\n') 156 self._log('\n')
144 157
145 # Extend model container by adding all models in the model file 158 # Extend model container by adding all models in the model file
cscripts/csobs2caldb.py
@@ -46,17 +46,17 @@ class csobs2caldb(ctools.cscript): @@ -46,17 +46,17 @@ class csobs2caldb(ctools.cscript):
46 Constructor. 46 Constructor.
47 """ 47 """
48 # Set name and version 48 # Set name and version
49 - self._name = "csobs2caldb"  
50 - self._version = "1.1.0" 49 + self._name = 'csobs2caldb'
  50 + self._version = '1.1.0'
51 51
52 # Initialise members 52 # Initialise members
53 self._observation = gammalib.GCTAObservation() 53 self._observation = gammalib.GCTAObservation()
54 - self._mission = "cta"  
55 - self._caldb = "cta"  
56 - self._outfile = gammalib.GFilename("irf_file.fits")  
57 - self._base_dir = ""  
58 - self._cal_dir = ""  
59 - self._rsp_dir = "" 54 + self._mission = 'cta'
  55 + self._caldb = 'cta'
  56 + self._outfile = gammalib.GFilename('irf_file.fits')
  57 + self._base_dir = ''
  58 + self._cal_dir = ''
  59 + self._rsp_dir = ''
60 self._caldb_inx = gammalib.GFits() 60 self._caldb_inx = gammalib.GFits()
61 self._irf_fits = gammalib.GFits() 61 self._irf_fits = gammalib.GFits()
62 62
@@ -73,7 +73,7 @@ class csobs2caldb(ctools.cscript): @@ -73,7 +73,7 @@ class csobs2caldb(ctools.cscript):
73 # Private methods 73 # Private methods
74 def _get_parameters(self): 74 def _get_parameters(self):
75 """ 75 """
76 - Get parameters from parfile. 76 + Get parameters from parfile
77 77
78 Raises: 78 Raises:
79 ValueError, IndexError, & RuntimeError. 79 ValueError, IndexError, & RuntimeError.
@@ -81,7 +81,7 @@ class csobs2caldb(ctools.cscript): @@ -81,7 +81,7 @@ class csobs2caldb(ctools.cscript):
81 # Load observation container from "inobs" parameter in case that 81 # Load observation container from "inobs" parameter in case that
82 # the observation container is still empty. 82 # the observation container is still empty.
83 if self._obs.is_empty(): 83 if self._obs.is_empty():
84 - self._obs = gammalib.GObservations(self["inobs"].filename()) 84 + self._obs = gammalib.GObservations(self['inobs'].filename())
85 85
86 # Raise an exception if the observation container is empty 86 # Raise an exception if the observation container is empty
87 if self._obs.is_empty(): 87 if self._obs.is_empty():
@@ -89,7 +89,7 @@ class csobs2caldb(ctools.cscript): @@ -89,7 +89,7 @@ class csobs2caldb(ctools.cscript):
89 'parameter "inobs".') 89 'parameter "inobs".')
90 90
91 # Get index of observation to be used 91 # Get index of observation to be used
92 - index = self["index"].integer() 92 + index = self['index'].integer()
93 93
94 # Raise an exception if the index is not valid 94 # Raise an exception if the index is not valid
95 if index < 0 or index >= self._obs.size(): 95 if index < 0 or index >= self._obs.size():
@@ -100,37 +100,37 @@ class csobs2caldb(ctools.cscript): @@ -100,37 +100,37 @@ class csobs2caldb(ctools.cscript):
100 self._observation = self._obs[index] 100 self._observation = self._obs[index]
101 101
102 # Make sure we have a CTA observation 102 # Make sure we have a CTA observation
103 - if not self._observation.classname() == "GCTAObservation": 103 + if not self._observation.classname() == 'GCTAObservation':
104 raise RuntimeError('Input observation not of type ' 104 raise RuntimeError('Input observation not of type '
105 '"GCTAObservation".') 105 '"GCTAObservation".')
106 106
107 # Make sure we have an IRF response associated with the CTA 107 # Make sure we have an IRF response associated with the CTA
108 # observation 108 # observation
109 - if not self._observation.response().classname() == "GCTAResponseIrf": 109 + if not self._observation.response().classname() == 'GCTAResponseIrf':
110 raise RuntimeError('Response of input observation not of ' 110 raise RuntimeError('Response of input observation not of '
111 'type "GCTAResponseIrf".') 111 'type "GCTAResponseIrf".')
112 112
113 # Get calibration database name. If the "caldb" parameter is "NONE" 113 # Get calibration database name. If the "caldb" parameter is "NONE"
114 # or empty then use the instrument name from the observation as 114 # or empty then use the instrument name from the observation as
115 # calibration database name. 115 # calibration database name.
116 - self._caldb = self["caldb"].string()  
117 - if (self._caldb == "NONE" or len(self._caldb) == 0): 116 + self._caldb = self['caldb'].string()
  117 + if (self._caldb == 'NONE' or len(self._caldb) == 0):
118 self._caldb = self._observation.instrument().lower() 118 self._caldb = self._observation.instrument().lower()
119 119
120 # Get instrument response function file name 120 # Get instrument response function file name
121 - self._outfile = self["outfile"].filename() 121 + self._outfile = self['outfile'].filename()
122 122
123 # Make sure that remaining user parameters are queried now. We 123 # Make sure that remaining user parameters are queried now. We
124 # do not store the actual parameter values as we do not want 124 # do not store the actual parameter values as we do not want
125 # too many instance attributes with enhances the maintenance 125 # too many instance attributes with enhances the maintenance
126 # costs. 126 # costs.
127 - self["irf"].string()  
128 - self["rootdir"].string() 127 + self['irf'].string()
  128 + self['rootdir'].string()
129 129
130 # Write input parameters and header into logger 130 # Write input parameters and header into logger
131 if self._logTerse(): 131 if self._logTerse():
132 self._log_parameters() 132 self._log_parameters()
133 - self._log("\n") 133 + self._log('\n')
134 134
135 # Return 135 # Return
136 return 136 return
cscripts/cstsmapmerge.py
@@ -68,11 +68,23 @@ class cstsmapmerge(ctools.cscript): @@ -68,11 +68,23 @@ class cstsmapmerge(ctools.cscript):
68 """ 68 """
69 # Get input maps string 69 # Get input maps string
70 inmaps = self['inmaps'].string() 70 inmaps = self['inmaps'].string()
71 -  
72 - # Handle ascii files 71 +
  72 + # Handle ASCII files. If the file names given in the ASCII are
  73 + # relative filenames it is assumed that the filename is given
  74 + # relative to the location of the file.
73 if '@' == inmaps[0]: 75 if '@' == inmaps[0]:
74 - self._files = open(inmaps.replace('@','')).read().splitlines()  
75 - 76 + filename = inmaps.replace('@','')
  77 + self._files = open(filename).read().splitlines()
  78 + dirname = os.path.dirname(filename)
  79 + files = []
  80 + for f in self._files:
  81 + if f[0] != '/':
  82 + fname = dirname + '/' + f
  83 + else:
  84 + fname = f
  85 + files.append(fname)
  86 + self._files = files
  87 +
76 # Handle wild card strings 88 # Handle wild card strings
77 elif '*' in inmaps: 89 elif '*' in inmaps:
78 self._files = glob.glob(inmaps) 90 self._files = glob.glob(inmaps)
examples/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile for ctools examples #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 -# Scripts to be distributed 22 +# Scripts to be install
4 scripts = README.md \ 23 scripts = README.md \
  24 + generate_prod3_irfs.py \
5 make_pointings.py \ 25 make_pointings.py \
6 make_spectrum.py \ 26 make_spectrum.py \
7 make_ts_distributions.py \ 27 make_ts_distributions.py \
@@ -19,13 +39,14 @@ scripts = README.md \ @@ -19,13 +39,14 @@ scripts = README.md \
19 show_response.py \ 39 show_response.py \
20 show_sensitivity.py \ 40 show_sensitivity.py \
21 show_spectrum.py \ 41 show_spectrum.py \
22 - show_ts_distribution.py 42 + show_ts_distribution.py \
  43 + show_obs.py
23 44
24 -# Set directories  
25 -scriptsdir = $(datadir)/examples/python  
26 -scripts_DATA = $(scripts) 45 +# Set install directories
  46 +scriptsdir = $(datadir)/examples/python
  47 +scripts_DATA = $(scripts)
27 48
28 -# Extra files to be distributed in the tar file 49 +# Files to be distributed in the tar file
29 EXTRA_DIST = $(scripts) 50 EXTRA_DIST = $(scripts)
30 51
31 # Add hook rule to make the examples executable 52 # Add hook rule to make the examples executable
examples/generate_prod3_irfs.py
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import sys
21 import gammalib 22 import gammalib
22 import cscripts 23 import cscripts
23 24
@@ -25,7 +26,7 @@ import cscripts @@ -25,7 +26,7 @@ import cscripts
25 # ======================= # 26 # ======================= #
26 # Set Prod3 DESY database # 27 # Set Prod3 DESY database #
27 # ======================= # 28 # ======================= #
28 -def set_prod3_desy(): 29 +def set_prod3_desy(datadir):
29 """ 30 """
30 Set Prod3 DESY database 31 Set Prod3 DESY database
31 32
@@ -33,11 +34,19 @@ def set_prod3_desy(): @@ -33,11 +34,19 @@ def set_prod3_desy():
33 the db list a number of calibrations can be defined for which IRFs 34 the db list a number of calibrations can be defined for which IRFs
34 should be generated. All calibrations will be added to the calibration 35 should be generated. All calibrations will be added to the calibration
35 database. 36 database.
  37 +
  38 + Parameters
  39 + ----------
  40 + datadir : str
  41 + Data directory
  42 +
  43 + Returns
  44 + -------
  45 + db : list of dict
  46 + Database
36 """ 47 """
37 # Set database attributes 48 # Set database attributes
38 - #path = '/project-data/cta/performance/prod3'  
39 - #file = 'DESY.d20160304.V5.ID0NIM2.prod3-paranalp05-NN.S.3HB1-ND-3.180000s.root'  
40 - path = 'data' 49 + path = datadir
41 file = 'irf.root' 50 file = 'irf.root'
42 psftype = 'Gauss' 51 psftype = 'Gauss'
43 oversample = 3 52 oversample = 3
@@ -62,8 +71,14 @@ def set_prod3_desy(): @@ -62,8 +71,14 @@ def set_prod3_desy():
62 # ======================== # 71 # ======================== #
63 if __name__ == '__main__': 72 if __name__ == '__main__':
64 73
  74 + # Get optional argument
  75 + if len(sys.argv) == 2:
  76 + datadir = sys.argv[1]
  77 + else:
  78 + datadir = 'data'
  79 +
65 # Get database 80 # Get database
66 - entries = set_prod3_desy() 81 + entries = set_prod3_desy(datadir)
67 82
68 # Loop over entries 83 # Loop over entries
69 for entry in entries: 84 for entry in entries:
examples/make_spectrum.py
@@ -33,17 +33,17 @@ except: @@ -33,17 +33,17 @@ except:
33 # =============== # 33 # =============== #
34 # Make a spectrum # 34 # Make a spectrum #
35 # =============== # 35 # =============== #
36 -def make_spectrum(): 36 +def make_spectrum(datadir):
37 """ 37 """
38 Simulate events and generate a source spectrum 38 Simulate events and generate a source spectrum
39 39
40 Returns 40 Returns
41 ------- 41 -------
42 - spectrum : `~gammalib.GFits`  
43 - Spectrum FITS file 42 + datadir : str
  43 + Data directory
44 """ 44 """
45 # Set script parameters 45 # Set script parameters
46 - model_name = 'data/crab.xml' 46 + model_name = datadir+'/crab.xml'
47 caldb = 'prod2' 47 caldb = 'prod2'
48 irf = 'South_0.5h' 48 irf = 'South_0.5h'
49 ra = 83.63 49 ra = 83.63
@@ -183,15 +183,18 @@ def plot_spectrum(spectrum, file=False): @@ -183,15 +183,18 @@ def plot_spectrum(spectrum, file=False):
183 # ======================== # 183 # ======================== #
184 if __name__ == '__main__': 184 if __name__ == '__main__':
185 185
186 - # Initialise option  
187 - file = False  
188 -  
189 - # Get any command line arguments  
190 - if (len(sys.argv) > 1): 186 + # Get optional arguments
  187 + if len(sys.argv) >= 2:
  188 + datadir = sys.argv[1]
  189 + else:
  190 + datadir = 'data'
  191 + if len(sys.argv) >= 3:
191 file = True 192 file = True
  193 + else:
  194 + file = False
192 195
193 # Generate spectrum 196 # Generate spectrum
194 - spectrum = make_spectrum() 197 + spectrum = make_spectrum(datadir)
195 198
196 # If matplotlib is installed then plot spectrum 199 # If matplotlib is installed then plot spectrum
197 if has_matplotlib: 200 if has_matplotlib:
examples/make_ts_distributions.py
@@ -22,24 +22,19 @@ import sys @@ -22,24 +22,19 @@ import sys
22 import time 22 import time
23 import cscripts 23 import cscripts
24 24
25 -# Optionally import processing module  
26 -try:  
27 - import processing  
28 - has_processing = True  
29 -except:  
30 - has_processing = False  
31 -  
32 25
33 # ====================== # 26 # ====================== #
34 # Create TS distribution # 27 # Create TS distribution #
35 # ====================== # 28 # ====================== #
36 -def create_ts(loge, emin, emax, ntrials=100, duration=180000.0,  
37 - enumbins=0, log=False): 29 +def create_ts(datadir, loge, emin, emax, ntrials=100, duration=180000.0,
  30 + enumbins=0, log=False):
38 """ 31 """
39 Create TS distribution. 32 Create TS distribution.
40 33
41 Parameters 34 Parameters
42 ---------- 35 ----------
  36 + datadir : str
  37 + Data directory
43 loge : float 38 loge : float
44 Logarithm of mean energy (TeV) 39 Logarithm of mean energy (TeV)
45 emin : float 40 emin : float
@@ -60,7 +55,7 @@ def create_ts(loge, emin, emax, ntrials=100, duration=180000.0, @@ -60,7 +55,7 @@ def create_ts(loge, emin, emax, ntrials=100, duration=180000.0,
60 55
61 # Setup cstsdist tool 56 # Setup cstsdist tool
62 tsdist = cscripts.cstsdist() 57 tsdist = cscripts.cstsdist()
63 - tsdist['inmodel'] = 'data/crab.xml' 58 + tsdist['inmodel'] = datadir+'/crab.xml'
64 tsdist['srcname'] = 'Crab' 59 tsdist['srcname'] = 'Crab'
65 tsdist['outfile'] = outfile 60 tsdist['outfile'] = outfile
66 tsdist['ntrials'] = ntrials 61 tsdist['ntrials'] = ntrials
@@ -104,12 +99,14 @@ if __name__ == &#39;__main__&#39;: @@ -104,12 +99,14 @@ if __name__ == &#39;__main__&#39;:
104 enumbins = 0 99 enumbins = 0
105 duration = 180000.0 100 duration = 180000.0
106 max_threads = 1 101 max_threads = 1
  102 + datadir = 'data'
107 103
108 # Parameter dictionnary 104 # Parameter dictionnary
109 pars = [{'option': '-n', 'value': ntrials}, 105 pars = [{'option': '-n', 'value': ntrials},
110 {'option': '-e', 'value': enumbins}, 106 {'option': '-e', 'value': enumbins},
111 {'option': '-d', 'value': duration}, 107 {'option': '-d', 'value': duration},
112 - {'option': '-m', 'value': max_threads}] 108 + {'option': '-m', 'value': max_threads},
  109 + {'option': '-p', 'value': datadir}]
113 110
114 # Gather parameters from command line 111 # Gather parameters from command line
115 i = 1 112 i = 1
@@ -137,6 +134,7 @@ if __name__ == &#39;__main__&#39;: @@ -137,6 +134,7 @@ if __name__ == &#39;__main__&#39;:
137 enumbins = pars[1]['value'] 134 enumbins = pars[1]['value']
138 duration = pars[2]['value'] 135 duration = pars[2]['value']
139 max_threads = pars[3]['value'] 136 max_threads = pars[3]['value']
  137 + datadir = pars[4]['value']
140 138
141 # Loop over energy bands. The energy bands are those that are also 139 # Loop over energy bands. The energy bands are those that are also
142 # used for sensitivity computation. 140 # used for sensitivity computation.
@@ -152,33 +150,6 @@ if __name__ == &#39;__main__&#39;: @@ -152,33 +150,6 @@ if __name__ == &#39;__main__&#39;:
152 else: 150 else:
153 loge = 'p'+str(abs(loge)) 151 loge = 'p'+str(abs(loge))
154 152
155 - # If processing support is available then start max_threads processes  
156 - # in parallel  
157 - if has_processing:  
158 -  
159 - # Wait until one thread has finished  
160 - while len(processing.activeChildren()) >= max_threads:  
161 - time.sleep(10)  
162 -  
163 - # Set arguments  
164 - args = (loge, emin, emax)  
165 - kwargs = {'ntrials': ntrials, 'enumbins': enumbins,  
166 - 'duration': duration}  
167 -  
168 - # Generate pull distribution  
169 - p = processing.Process(target=create_ts, args=args, kwargs=kwargs)  
170 - p.start()  
171 - print('Process emin=%.4f emax=%.4f started.' % (emin, emax))  
172 -  
173 - # Wait a short time to allow process to start  
174 - time.sleep(1)  
175 -  
176 - # ... otherwise simply start a single process  
177 - else:  
178 - create_ts(loge, emin, emax, ntrials=ntrials, enumbins=enumbins,  
179 - duration=duration)  
180 -  
181 - # If processing support is available then wait until all threads finished  
182 - if has_processing:  
183 - while len(processing.activeChildren()) > 0:  
184 - time.sleep(10) 153 + # Create TS
  154 + create_ts(datadir, loge, emin, emax, ntrials=ntrials, enumbins=enumbins,
  155 + duration=duration)
examples/pipeline_binned_disk.py
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import sys
21 import gammalib 22 import gammalib
22 import ctools 23 import ctools
23 from cscripts import obsutils 24 from cscripts import obsutils
@@ -218,11 +219,17 @@ if __name__ == &#39;__main__&#39;: @@ -218,11 +219,17 @@ if __name__ == &#39;__main__&#39;:
218 print('* CTA binned analysis pipeline *') 219 print('* CTA binned analysis pipeline *')
219 print('********************************************') 220 print('********************************************')
220 221
  222 + # Get optional arguments
  223 + if len(sys.argv) == 2:
  224 + datadir = sys.argv[1]
  225 + else:
  226 + datadir = 'data'
  227 +
221 # Setup observations 228 # Setup observations
222 obs = setup_observations() 229 obs = setup_observations()
223 230
224 # Setup model 231 # Setup model
225 - obs = setup_model(obs) 232 + obs = setup_model(obs, model=datadir+'/crab.xml')
226 233
227 # Run analysis pipeline 234 # Run analysis pipeline
228 - run_pipeline(obs) 235 + run_pipeline(obs, model=datadir+'/crab.xml')
examples/pipeline_binned_mem.py
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import sys
21 import gammalib 22 import gammalib
22 import ctools 23 import ctools
23 from cscripts import obsutils 24 from cscripts import obsutils
@@ -189,11 +190,17 @@ if __name__ == &#39;__main__&#39;: @@ -189,11 +190,17 @@ if __name__ == &#39;__main__&#39;:
189 print('* CTA binned analysis pipeline *') 190 print('* CTA binned analysis pipeline *')
190 print('********************************************') 191 print('********************************************')
191 192
  193 + # Get optional arguments
  194 + if len(sys.argv) == 2:
  195 + datadir = sys.argv[1]
  196 + else:
  197 + datadir = 'data'
  198 +
192 # Setup observations 199 # Setup observations
193 obs = setup_observations() 200 obs = setup_observations()
194 201
195 # Setup model 202 # Setup model
196 - obs = setup_model(obs) 203 + obs = setup_model(obs, model=datadir+'/crab.xml')
197 204
198 # Run analysis pipeline 205 # Run analysis pipeline
199 run_pipeline(obs) 206 run_pipeline(obs)
examples/pipeline_stacked_disk.py
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import sys
21 import gammalib 22 import gammalib
22 import ctools 23 import ctools
23 from cscripts import obsutils 24 from cscripts import obsutils
@@ -268,11 +269,17 @@ if __name__ == &#39;__main__&#39;: @@ -268,11 +269,17 @@ if __name__ == &#39;__main__&#39;:
268 print('* CTA stacked analysis pipeline *') 269 print('* CTA stacked analysis pipeline *')
269 print('********************************************') 270 print('********************************************')
270 271
  272 + # Get optional arguments
  273 + if len(sys.argv) == 2:
  274 + datadir = sys.argv[1]
  275 + else:
  276 + datadir = 'data'
  277 +
271 # Setup observations 278 # Setup observations
272 obs = setup_observations() 279 obs = setup_observations()
273 280
274 # Setup model 281 # Setup model
275 - obs = setup_model(obs) 282 + obs = setup_model(obs, model=datadir+'/crab.xml')
276 283
277 # Run analysis pipeline 284 # Run analysis pipeline
278 - run_pipeline(obs) 285 + run_pipeline(obs, model=datadir+'/crab.xml')
examples/pipeline_stacked_mem.py
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import sys
21 import gammalib 22 import gammalib
22 import ctools 23 import ctools
23 from cscripts import obsutils 24 from cscripts import obsutils
@@ -241,11 +242,17 @@ if __name__ == &#39;__main__&#39;: @@ -241,11 +242,17 @@ if __name__ == &#39;__main__&#39;:
241 print('* CTA stacked analysis pipeline *') 242 print('* CTA stacked analysis pipeline *')
242 print('********************************************') 243 print('********************************************')
243 244
  245 + # Get optional arguments
  246 + if len(sys.argv) == 2:
  247 + datadir = sys.argv[1]
  248 + else:
  249 + datadir = 'data'
  250 +
244 # Setup observations 251 # Setup observations
245 obs = setup_observations() 252 obs = setup_observations()
246 253
247 # Setup model 254 # Setup model
248 - obs = setup_model(obs) 255 + obs = setup_model(obs, model=datadir+'/crab.xml')
249 256
250 # Run analysis pipeline 257 # Run analysis pipeline
251 run_pipeline(obs) 258 run_pipeline(obs)
examples/pipeline_unbinned_disk.py
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import sys
21 import gammalib 22 import gammalib
22 import ctools 23 import ctools
23 from cscripts import obsutils 24 from cscripts import obsutils
@@ -192,11 +193,17 @@ if __name__ == &#39;__main__&#39;: @@ -192,11 +193,17 @@ if __name__ == &#39;__main__&#39;:
192 print('* CTA unbinned analysis pipeline *') 193 print('* CTA unbinned analysis pipeline *')
193 print('********************************************') 194 print('********************************************')
194 195
  196 + # Get optional arguments
  197 + if len(sys.argv) == 2:
  198 + datadir = sys.argv[1]
  199 + else:
  200 + datadir = 'data'
  201 +
195 # Setup observations 202 # Setup observations
196 obs = setup_observations() 203 obs = setup_observations()
197 204
198 # Setup model 205 # Setup model
199 - obs = setup_model(obs) 206 + obs = setup_model(obs, model=datadir+'/crab.xml')
200 207
201 # Run analysis pipeline 208 # Run analysis pipeline
202 - run_pipeline(obs) 209 + run_pipeline(obs, model=datadir+'/crab.xml')
examples/pipeline_unbinned_mem.py
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import sys
21 import gammalib 22 import gammalib
22 import ctools 23 import ctools
23 from cscripts import obsutils 24 from cscripts import obsutils
@@ -174,11 +175,17 @@ if __name__ == &#39;__main__&#39;: @@ -174,11 +175,17 @@ if __name__ == &#39;__main__&#39;:
174 print('* CTA unbinned analysis pipeline *') 175 print('* CTA unbinned analysis pipeline *')
175 print('********************************************') 176 print('********************************************')
176 177
  178 + # Get optional arguments
  179 + if len(sys.argv) == 2:
  180 + datadir = sys.argv[1]
  181 + else:
  182 + datadir = 'data'
  183 +
177 # Setup observations 184 # Setup observations
178 obs = setup_observations() 185 obs = setup_observations()
179 186
180 # Setup model 187 # Setup model
181 - obs = setup_model(obs) 188 + obs = setup_model(obs, model=datadir+'/crab.xml')
182 189
183 # Run analysis pipeline 190 # Run analysis pipeline
184 run_pipeline(obs) 191 run_pipeline(obs)
examples/show_response.py
@@ -339,13 +339,13 @@ if __name__ == &#39;__main__&#39;: @@ -339,13 +339,13 @@ if __name__ == &#39;__main__&#39;:
339 339
340 # Set response dictionary 340 # Set response dictionary
341 rsps = [ 341 rsps = [
342 - {'dbname': 'irf',  
343 - 'rspname': 'cta_dummy_irf.dat',  
344 - 'name': 'Prod1 (Array E, MPIK)', 342 + {'dbname': 'prod2',
  343 + 'rspname': 'South_0.5h',
  344 + 'name': 'Prod2 (30 min)',
345 'color': 'b'}, 345 'color': 'b'},
346 - {'dbname': 'irf',  
347 - 'rspname': 'irf_file.fits',  
348 - 'name': 'Prod2 (Aar, IFAE)', 346 + {'dbname': 'prod2',
  347 + 'rspname': 'South_50h',
  348 + 'name': 'Prod2 (50 h)',
349 'color': 'r'} 349 'color': 'r'}
350 ] 350 ]
351 351
models/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile for models #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 -# Background rate files to distribute  
4 -#bkgs = bkg_dummy.txt  
5 -#bkgsdir = $(datadir)/models  
6 -#bkgs_DATA = $(bkgs) 22 +# Models to install
  23 +models = crab.xml \
  24 + crab_poly.xml \
  25 + crab_profile.xml \
  26 + disk.xml \
  27 + gauss.xml \
  28 + shell.xml
7 29
8 -# Models to distribute  
9 -models = crab.xml \  
10 - crab_poly.xml \  
11 - crab_profile.xml \  
12 - disk.xml \  
13 - gauss.xml \  
14 - shell.xml 30 +# Install models
15 modelsdir = $(datadir)/models 31 modelsdir = $(datadir)/models
16 models_DATA = $(models) 32 models_DATA = $(models)
17 33
pyext/Makefile.am
@@ -29,96 +29,140 @@ @@ -29,96 +29,140 @@
29 # Works only if Python is available 29 # Works only if Python is available
30 if WITH_PYTHON 30 if WITH_PYTHON
31 31
  32 +# Set wrapper directory depending on the whether the wrappers were actually
  33 +# shipped with the distribution of whether the wrappers have to be build
  34 +# using swig
  35 +if BUILD_WRAPPERS
  36 + wrapperdir = $(builddir)
  37 +else
  38 + wrapperdir = $(srcdir)
  39 +endif
  40 +
32 # Test scripts to be distributed in $(pyexecdir)/ctools/tests 41 # Test scripts to be distributed in $(pyexecdir)/ctools/tests
33 testscripts = ctools/tests/__init__.py \ 42 testscripts = ctools/tests/__init__.py \
34 - ../test/testing.py \  
35 - ../test/test_python_ctools.py \  
36 - ../test/test_ctobssim.py \  
37 - ../test/test_ctselect.py \  
38 - ../test/test_ctbin.py \  
39 - ../test/test_ctlike.py \  
40 - ../test/test_cttsmap.py \  
41 - ../test/test_ctmodel.py \  
42 - ../test/test_ctskymap.py \  
43 - ../test/test_ctexpcube.py \  
44 - ../test/test_ctpsfcube.py \  
45 - ../test/test_ctedispcube.py \  
46 - ../test/test_ctbkgcube.py \  
47 - ../test/test_ctmapcube.py \  
48 - ../test/test_ctcubemask.py \  
49 - ../test/test_ctbutterfly.py \  
50 - ../test/test_ctulimit.py \  
51 - ../test/test_cterror.py \  
52 - ../test/test_pipelines.py  
53 -testdata = ../test/data/crab.xml \  
54 - ../test/data/crab_events.fits.gz \  
55 - ../test/data/crab_cntmap.fits.gz \  
56 - ../test/data/exclusion.reg  
57 -testirf = ../test/irf/cta_dummy_irf.dat  
58 -  
59 -# Distribute scripts  
60 -EXTRA_DIST = $(testscripts) $(testdata) $(testirf) 43 + $(top_srcdir)/test/testing.py \
  44 + $(top_srcdir)/test/test_python_ctools.py \
  45 + $(top_srcdir)/test/test_ctobssim.py \
  46 + $(top_srcdir)/test/test_ctselect.py \
  47 + $(top_srcdir)/test/test_ctbin.py \
  48 + $(top_srcdir)/test/test_ctlike.py \
  49 + $(top_srcdir)/test/test_cttsmap.py \
  50 + $(top_srcdir)/test/test_ctmodel.py \
  51 + $(top_srcdir)/test/test_ctskymap.py \
  52 + $(top_srcdir)/test/test_ctexpcube.py \
  53 + $(top_srcdir)/test/test_ctpsfcube.py \
  54 + $(top_srcdir)/test/test_ctedispcube.py \
  55 + $(top_srcdir)/test/test_ctbkgcube.py \
  56 + $(top_srcdir)/test/test_ctmapcube.py \
  57 + $(top_srcdir)/test/test_ctcubemask.py \
  58 + $(top_srcdir)/test/test_ctbutterfly.py \
  59 + $(top_srcdir)/test/test_ctulimit.py \
  60 + $(top_srcdir)/test/test_cterror.py \
  61 + $(top_srcdir)/test/test_pipelines.py
  62 +
  63 +# Test data to be distributed in $(pyexecdir)/ctools/tests/data
  64 +testdata = $(top_srcdir)/test/data/crab.xml \
  65 + $(top_srcdir)/test/data/crab_events.fits.gz \
  66 + $(top_srcdir)/test/data/crab_cntmap.fits.gz \
  67 + $(top_srcdir)/test/data/exclusion.reg
  68 +
  69 +# Install test scripts and test data. Note that we don't need to prepend
  70 +# $(DESTDIR) here (not fully clear why, but that's the way it is)
  71 +
61 testscriptsdir = $(pyexecdir)/ctools/tests 72 testscriptsdir = $(pyexecdir)/ctools/tests
62 testscripts_DATA = $(testscripts) 73 testscripts_DATA = $(testscripts)
63 testdatadir = $(pyexecdir)/ctools/tests/data 74 testdatadir = $(pyexecdir)/ctools/tests/data
64 testdata_DATA = $(testdata) 75 testdata_DATA = $(testdata)
65 -testirfdir = $(pyexecdir)/ctools/tests/irf  
66 -testirf_DATA = $(testirf)  
67 76
68 -# Set SWIG interface filename  
69 -SWIG_INTERFACE = ctools/tools.i 77 +# If building of Python wrappers was requested then add them to the build
  78 +# source
  79 +if BUILD_WRAPPERS
70 80
71 -# Dependencies. Obtain the list of dependencies by executing ls.  
72 -DEPFILES = $(shell ls *.Pi 2> /dev/null)  
73 -include $(DEPFILES) 81 +# Set SWIG compile command
  82 +SWIGCOMPILE = $(SWIG) -c++ -python -Wall \
  83 + -I$(DESTDIR)$(prefix)/share/gammalib/swig \
  84 + -I$(GAMMALIB)/share/gammalib/swig \
  85 + -I$(top_srcdir)/pyext
74 86
75 -# Define the targets that should be built before anything else.  
76 -# These are honored by 'make all', 'make check' and 'make install'.  
77 -if HAVE_SWIG  
78 - BUILT_SOURCES = ctools/tools_wrap.cpp ctools/tools.py  
79 -endif 87 +# Sources that are required for the build. All targets in the list will be
  88 +# built before anything. These are honored by 'make all', 'make check' and
  89 +# 'make install'. We use this here to make sure that all these targets are
  90 +# build by swig before we start compiling the Python modules.
  91 +BUILT_SOURCES = $(wrapperdir)/ctools/tools_wrap.cpp \
  92 + $(wrapperdir)/ctools/tools.py
80 93
81 -# Set files to be removed in clean. We remove only the SWIG interface files  
82 -# if SWIG is available to rebuild them.  
83 -if HAVE_SWIG  
84 - CLEAN_FILES = $(BUILT_SOURCES)  
85 -endif  
86 -CLEANFILES = $(CLEAN_FILES) $(DEPFILES) 94 +# Add the wrappers to the files that will be deleted in a 'make clean'
  95 +CLEAN_FILES = $(BUILT_SOURCES)
87 96
88 -# Set SWIG compile command  
89 -SWIGCOMPILE = $(SWIG) -c++ -python -Wall -I$(prefix)/share/gammalib/swig -I$(GAMMALIB)/share/gammalib/swig 97 +# Rule to build SWIG wrappers
  98 +swig: $(BUILT_SOURCES)
  99 +
  100 +# Rule for building Python wrappers using SWIG.
  101 +ctools/tools.py: ctools/tools_wrap.cpp
  102 +ctools/tools_wrap.cpp: ctools/tools.i
  103 + if $(SWIGCOMPILE) -MMD -MF "tools.Tpi" -o ctools/tools_wrap.cpp $<; \
  104 + then mv -f "tools.Tpi" "tools.Pi"; else rm -f "tools.Tpi"; exit 1; fi
  105 +
  106 +# ... otherwise, if building of Python wrappers has not been required then
  107 +# they are located in the source directory and we don't have to build them
  108 +# using swig
  109 +else
  110 +CLEAN_FILES =
  111 +BUILT_SOURCES =
  112 +endif # BUILD_WRAPPERS
  113 +
  114 +# Extra files to be distributed in the tar file
  115 +EXTRA_DIST = ctools/tests \
  116 + $(wrapperdir)/ctools/tools_wrap.cpp \
  117 + $(wrapperdir)/ctools/tools.py \
  118 + $(testscripts) \
  119 + $(testdata) \
  120 + $(testirf)
  121 +
  122 +# Dependencies. Obtain the list of dependencies by executing ls.
  123 +DEPFILES = $(shell ls *.Pi 2> /dev/null)
  124 +include $(DEPFILES)
90 125
  126 +# Things we want to do when 'make' is invoked.
91 all-local: build 127 all-local: build
92 128
93 -# We build the python extension twice since the install step needs the result  
94 -# in a specific directory and the test make check has no access to the name  
95 -# of this specific directory. So we build one instance for checking, the other  
96 -# for installation. If we could get the name built by distutils we could avoid  
97 -# this.  
98 -build: ctools/tools_wrap.cpp ctools/tools.py 129 +# Build the ctools extension module
  130 +build: $(BUILT_SOURCES)
99 $(PYTHON) setup.py build 131 $(PYTHON) setup.py build
100 if IS_ELCAPITAN 132 if IS_ELCAPITAN
101 -for f in build/ctools/ctools/_*.so; do \ 133 -for f in build/ctools/ctools/_*.so; do \
102 echo "Post process module "$$f; \ 134 echo "Post process module "$$f; \
103 install_name_tool -change $(libdir)/libctools.1.dylib @rpath/libctools.1.dylib $$f; \ 135 install_name_tool -change $(libdir)/libctools.1.dylib @rpath/libctools.1.dylib $$f; \
104 - install_name_tool -change $(libdir)/libgamma.1.dylib @rpath/libgamma.1.dylib $$f; \ 136 + install_name_tool -change $(libdir)/libgamma.2.dylib @rpath/libgamma.2.dylib $$f; \
105 install_name_tool -add_rpath $(libdir) $$f; \ 137 install_name_tool -add_rpath $(libdir) $$f; \
106 - install_name_tool -add_rpath $(abs_top_srcdir)/src/.libs $$f; \ 138 + install_name_tool -add_rpath $(abs_top_builddir)/src/.libs $$f; \
107 done 139 done
108 endif 140 endif
109 141
  142 +# Install the ctools Python module
110 install-exec-local: 143 install-exec-local:
111 - $(PYTHON) setup.py install --prefix=$(prefix) 144 + $(PYTHON) setup.py install --prefix=$(DESTDIR)$(prefix)
112 145
113 -clean-local:  
114 - rm -rf build _tools.so 146 +# Uninstall the ctools Python module
  147 +uninstall-local:
  148 + rm -rf $(DESTDIR)$(pyexecdir)/ctools/*.py
  149 + rm -rf $(DESTDIR)$(pyexecdir)/ctools/*.pyc
  150 + rm -rf $(DESTDIR)$(pyexecdir)/ctools/*.so
  151 + rm -rf $(DESTDIR)$(pyexecdir)/ctools/__pycache__
  152 + rm -rf $(DESTDIR)$(pyexecdir)/ctools/tests/*.pyc
  153 + rm -rf $(DESTDIR)$(pyexecdir)/ctools/tests/__pycache__
  154 + rm -rf $(DESTDIR)$(pyexecdir)/ctools-@VERSION@*.egg-info
115 155
116 -# Rule for building Python wrappers using SWIG.  
117 -if HAVE_SWIG  
118 -ctools/tools.py: ctools/tools_wrap.cpp  
119 -ctools/tools_wrap.cpp: $(SWIG_INTERFACE)  
120 - if $(SWIGCOMPILE) -MMD -MF "tools.Tpi" -o ctools/tools_wrap.cpp $<; \  
121 - then mv -f "tools.Tpi" "tools.Pi"; else rm -f "tools.Tpi"; exit 1; fi  
122 -endif # HAVE_SWIG 156 +# Set files to be removed in 'make clean'
  157 +CLEANFILES = $(CLEAN_FILES) $(DEPFILES)
  158 +
  159 +# Files to be removed in build directory
  160 +clean-local:
  161 + rm -rf build
  162 + rm -rf $(builddir)/ctools/*.py
  163 + rm -rf $(builddir)/ctools/*.pyc
  164 + rm -rf $(builddir)/ctools/*_wrap.cpp
  165 + rm -rf $(builddir)/ctools/_tools.so
  166 + rm -rf $(builddir)/ctools/__pycache__
123 167
124 endif # WITH_PYTHON 168 endif # WITH_PYTHON
pyext/setup.py.in
@@ -24,15 +24,25 @@ import glob @@ -24,15 +24,25 @@ import glob
24 import os 24 import os
25 import sys 25 import sys
26 26
  27 +# Define package name
  28 +pkg_name = 'ctools'
  29 +
27 # Detect execution mode 30 # Detect execution mode
28 is_build = True 31 is_build = True
29 if (len(sys.argv) >= 2): 32 if (len(sys.argv) >= 2):
30 if (sys.argv[1] == 'install'): 33 if (sys.argv[1] == 'install'):
31 is_build = False 34 is_build = False
32 if is_build: 35 if is_build:
33 - sys.stdout.write("Python extension module building:\n") 36 + print('Python extension module building:')
34 else: 37 else:
35 - sys.stdout.write("Python extension module installation:\n") 38 + print('Python extension module installation:')
  39 +
  40 +# Set prefix
  41 +prefix = '@prefix@'
  42 +if (len(sys.argv) >= 3):
  43 + if (sys.argv[2].find('--prefix') != -1):
  44 + start = sys.argv[2].find('=') + 1
  45 + prefix = sys.argv[2][start:]
36 46
37 # Darwin MacPorts kluge: Remove -L/opt/local/lib path from LDSHARED as this 47 # Darwin MacPorts kluge: Remove -L/opt/local/lib path from LDSHARED as this
38 # overrides the GammaLib settings. Otherwise, MacPorts libraries would be 48 # overrides the GammaLib settings. Otherwise, MacPorts libraries would be
@@ -52,33 +62,33 @@ if sys.platform.lower().startswith(&quot;darwin&quot;): @@ -52,33 +62,33 @@ if sys.platform.lower().startswith(&quot;darwin&quot;):
52 else: 62 else:
53 ldshared_rm += option + ' ' 63 ldshared_rm += option + ' '
54 if (len(ldshared_rm) > 0): 64 if (len(ldshared_rm) > 0):
55 - sys.stdout.write("Removed following option(s) from LDSHARED: "+ldshared_rm+"\n") 65 + print('Removed following option(s) from LDSHARED: %s' % (ldshared_rm))
56 66
57 # Set LDSHARED 67 # Set LDSHARED
58 cvars['LDSHARED'] = ldshared_new 68 cvars['LDSHARED'] = ldshared_new
59 69
60 # Set default include directories and data files 70 # Set default include directories and data files
61 -include_dirs = ['@prefix@/include/gammalib'] 71 +include_dirs = [prefix+'/include/gammalib']
62 install_files = glob.glob('@top_srcdir@/pyext/*.i') 72 install_files = glob.glob('@top_srcdir@/pyext/*.i')
63 library_dirs = ['../src/.libs'] 73 library_dirs = ['../src/.libs']
64 runtime_library_dirs = ['../src/.libs'] 74 runtime_library_dirs = ['../src/.libs']
65 libraries = ['ctools','gamma'] 75 libraries = ['ctools','gamma']
66 76
67 # Add install directory to runtime library path 77 # Add install directory to runtime library path
68 -if os.path.exists('@prefix@/lib'):  
69 - library_dirs.append('@prefix@/lib')  
70 - runtime_library_dirs.append('@prefix@/lib') 78 +if os.path.exists(prefix+'/lib'):
  79 + library_dirs.append(prefix+'/lib')
  80 + runtime_library_dirs.append(prefix+'/lib')
71 81
72 # Add application include files. The method we use here is not very 82 # Add application include files. The method we use here is not very
73 # intelligent as it simple will add all names that start with 'ct' 83 # intelligent as it simple will add all names that start with 'ct'
74 # in the src directory. Once we added the ctools script we had to 84 # in the src directory. Once we added the ctools script we had to
75 # add an explicit filter to avoid appending those. 85 # add an explicit filter to avoid appending those.
76 -dirs = glob.glob('../src/ct*') 86 +dirs = glob.glob('@top_srcdir@/src/ct*')
77 for dir in dirs: 87 for dir in dirs:
78 if len(dir) > 0 and 'ctools' not in dir: 88 if len(dir) > 0 and 'ctools' not in dir:
79 path = os.path.abspath(dir) 89 path = os.path.abspath(dir)
80 include_dirs.append(path) 90 include_dirs.append(path)
81 -include_dirs.append(os.path.abspath('../src/support')) 91 +include_dirs.append(os.path.abspath('@top_srcdir@/src/support'))
82 92
83 # Add extra libraries 93 # Add extra libraries
84 extra_libs = ('@PYTHON_EXTRA_LIBS@').split(',') 94 extra_libs = ('@PYTHON_EXTRA_LIBS@').split(',')
@@ -104,7 +114,7 @@ for extra_include_dir in extra_include_dirs: @@ -104,7 +114,7 @@ for extra_include_dir in extra_include_dirs:
104 include_dirs.append(dir) 114 include_dirs.append(dir)
105 115
106 # Set data files to install. 116 # Set data files to install.
107 -data_files=[('@prefix@/share/ctools/swig', install_files)] 117 +data_files=[(prefix+'/share/ctools/swig', install_files)]
108 118
109 # Optionally enable OpenMP 119 # Optionally enable OpenMP
110 if '@OPENMP_TRUE@' != '#': 120 if '@OPENMP_TRUE@' != '#':
@@ -123,6 +133,24 @@ if len(&#39;@COVERAGE_CXXFLAGS@&#39;) &gt; 0: @@ -123,6 +133,24 @@ if len(&#39;@COVERAGE_CXXFLAGS@&#39;) &gt; 0:
123 if '@IS_ELCAPITAN_TRUE@' != '#': 133 if '@IS_ELCAPITAN_TRUE@' != '#':
124 extra_link_args.append('-headerpad_max_install_names') 134 extra_link_args.append('-headerpad_max_install_names')
125 135
  136 +# If this is a build then we may need to copy over a bunch of files
  137 +if is_build:
  138 +
  139 + # In case that wrappers were not built then copy the module wrapper files
  140 + # from the source to the build directory
  141 + if '@BUILD_WRAPPERS_FALSE@' != '#':
  142 + py_file = pkg_name+'/tools.py'
  143 + cpp_file = pkg_name+'/tools_wrap.cpp'
  144 + os.system('cp %s %s' % ('@srcdir@/'+cpp_file, '@builddir@/'+cpp_file))
  145 + os.system('cp %s %s' % ('@srcdir@/'+py_file, '@builddir@/'+py_file))
  146 +
  147 + # In case that the build directory is different from the source directory
  148 + # then copy all cscripts and parfiles from the source directory to the
  149 + # build directory
  150 + if '@top_srcdir@' != '@top_builddir@':
  151 + os.system('cp %s/cscripts/*.py %s/cscripts' % ('@top_srcdir@', '@top_builddir@'))
  152 + os.system('cp %s/cscripts/*.par %s/cscripts' % ('@top_srcdir@', '@top_builddir@'))
  153 +
126 # Setup 154 # Setup
127 setup(name='@PACKAGE_NAME@', 155 setup(name='@PACKAGE_NAME@',
128 version='@PACKAGE_VERSION@', 156 version='@PACKAGE_VERSION@',
@@ -130,7 +158,6 @@ setup(name=&#39;@PACKAGE_NAME@&#39;, @@ -130,7 +158,6 @@ setup(name=&#39;@PACKAGE_NAME@&#39;,
130 author='Juergen Knoedlseder', 158 author='Juergen Knoedlseder',
131 author_email='@PACKAGE_BUGREPORT@', 159 author_email='@PACKAGE_BUGREPORT@',
132 url='http://cta.irap.omp.eu/ctools/', 160 url='http://cta.irap.omp.eu/ctools/',
133 - py_modules=['ctools.tools'],  
134 ext_modules=[Extension('ctools._tools', ['ctools/tools_wrap.cpp'], 161 ext_modules=[Extension('ctools._tools', ['ctools/tools_wrap.cpp'],
135 include_dirs=include_dirs, 162 include_dirs=include_dirs,
136 library_dirs=library_dirs, 163 library_dirs=library_dirs,
@@ -138,10 +165,11 @@ setup(name=&#39;@PACKAGE_NAME@&#39;, @@ -138,10 +165,11 @@ setup(name=&#39;@PACKAGE_NAME@&#39;,
138 runtime_library_dirs=runtime_library_dirs, 165 runtime_library_dirs=runtime_library_dirs,
139 extra_compile_args=extra_compile_args, 166 extra_compile_args=extra_compile_args,
140 extra_link_args=extra_link_args)], 167 extra_link_args=extra_link_args)],
  168 + py_modules=['ctools.tools'],
141 data_files=data_files, 169 data_files=data_files,
142 license="GNU GPL v3", 170 license="GNU GPL v3",
143 long_description="CTA science analysis tools", 171 long_description="CTA science analysis tools",
144 - platforms=["Linux", "Solaris", "Mac OS-X", "Unix", "BSD"], 172 + platforms=['Linux', 'Solaris', 'Mac OS-X', 'Unix', 'BSD'],
145 ) 173 )
146 174
147 # Post-processing. A symbolic link is created to the directory containing the 175 # Post-processing. A symbolic link is created to the directory containing the
@@ -151,12 +179,12 @@ if is_build: @@ -151,12 +179,12 @@ if is_build:
151 try: 179 try:
152 os.chdir('build') 180 os.chdir('build')
153 os.remove('ctools') 181 os.remove('ctools')
154 - sys.stdout.write("Removed symbolic link build/ctools.\n") 182 + print('Removed symbolic link build/ctools.')
155 except: 183 except:
156 pass 184 pass
157 try: 185 try:
158 path = glob.glob('lib.*') 186 path = glob.glob('lib.*')
159 os.symlink(path[0], 'ctools') 187 os.symlink(path[0], 'ctools')
160 - sys.stdout.write("Created symbolic link build/ctools.\n") 188 + print('Created symbolic link build/ctools.')
161 except: 189 except:
162 - sys.stdout.write("WARNING: Failed to create symbolic link build/ctools.\n") 190 + print('WARNING: Failed to create symbolic link build/ctools.')
src/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctools module #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Darwin support 22 # Darwin support
4 MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@ 23 MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@
@@ -60,10 +79,13 @@ scripts_DATA = $(scripts) @@ -60,10 +79,13 @@ scripts_DATA = $(scripts)
60 # Things to install 79 # Things to install
61 install-data-local: help-install 80 install-data-local: help-install
62 81
  82 +# Things to uninstall
  83 +uninstall-local: help-uninstall
  84 +
63 # Install help files 85 # Install help files
64 help-install: 86 help-install:
65 @$(mkinstalldirs) $(DESTDIR)$(datadir)/help && \ 87 @$(mkinstalldirs) $(DESTDIR)$(datadir)/help && \
66 - for file in $(top_srcdir)/doc/source/reference_manual/c*.rst ; do \ 88 + for file in $(top_srcdir)/doc/source/users/reference_manual/c*.rst ; do \
67 filename="$${file##*/}" ; \ 89 filename="$${file##*/}" ; \
68 basename="$${filename%%.*}" ; \ 90 basename="$${filename%%.*}" ; \
69 helpname="$$basename.txt" ; \ 91 helpname="$$basename.txt" ; \
@@ -75,6 +97,10 @@ help-install: @@ -75,6 +97,10 @@ help-install:
75 rm -rf $(DESTDIR)$(datadir)/help/"$$helpname".bak ; \ 97 rm -rf $(DESTDIR)$(datadir)/help/"$$helpname".bak ; \
76 done 98 done
77 99
  100 +# Uninstall help files
  101 +help-uninstall:
  102 + rm -rf $(DESTDIR)$(datadir)/help
  103 +
78 # Add hook rule to make scripts executable 104 # Add hook rule to make scripts executable
79 install-data-hook: 105 install-data-hook:
80 @list='$(scripts_DATA)';\ 106 @list='$(scripts_DATA)';\
src/ctbin/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctbin tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctbin 26 bin_PROGRAMS = ctbin
8 27
9 # Sources 28 # Sources
10 -sources = ctbin.cpp 29 +sources = ctbin.cpp ctbin.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctbin.la 32 noinst_LTLIBRARIES = libctbin.la
@@ -18,8 +37,11 @@ libctbin_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctbin_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctbin_SOURCES = main.cpp 37 ctbin_SOURCES = main.cpp
19 ctbin_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctbin_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctbin_CPPFLAGS = @CPPFLAGS@ 39 ctbin_CPPFLAGS = @CPPFLAGS@
21 -ctbin_LDADD = libctbin.la $(top_srcdir)/src/support/libsupport.la 40 +ctbin_LDADD = libctbin.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctbin.par 44 +pfiles_DATA = $(srcdir)/ctbin.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctbkgcube/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctbkgcube tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctbkgcube 26 bin_PROGRAMS = ctbkgcube
8 27
9 # Sources 28 # Sources
10 -sources = ctbkgcube.cpp 29 +sources = ctbkgcube.cpp ctbkgcube.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctbkgcube.la 32 noinst_LTLIBRARIES = libctbkgcube.la
@@ -18,8 +37,11 @@ libctbkgcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctbkgcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctbkgcube_SOURCES = main.cpp 37 ctbkgcube_SOURCES = main.cpp
19 ctbkgcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctbkgcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctbkgcube_CPPFLAGS = @CPPFLAGS@ 39 ctbkgcube_CPPFLAGS = @CPPFLAGS@
21 -ctbkgcube_LDADD = libctbkgcube.la $(top_srcdir)/src/support/libsupport.la 40 +ctbkgcube_LDADD = libctbkgcube.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctbkgcube.par 44 +pfiles_DATA = $(srcdir)/ctbkgcube.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctbutterfly/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctbutterfly tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctbutterfly 26 bin_PROGRAMS = ctbutterfly
8 27
9 # Sources 28 # Sources
10 -sources = ctbutterfly.cpp 29 +sources = ctbutterfly.cpp ctbutterfly.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctbutterfly.la 32 noinst_LTLIBRARIES = libctbutterfly.la
@@ -18,8 +37,11 @@ libctbutterfly_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctbutterfly_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctbutterfly_SOURCES = main.cpp 37 ctbutterfly_SOURCES = main.cpp
19 ctbutterfly_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctbutterfly_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctbutterfly_CPPFLAGS = @CPPFLAGS@ 39 ctbutterfly_CPPFLAGS = @CPPFLAGS@
21 -ctbutterfly_LDADD = libctbutterfly.la $(top_srcdir)/src/support/libsupport.la 40 +ctbutterfly_LDADD = libctbutterfly.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctbutterfly.par 44 +pfiles_DATA = $(srcdir)/ctbutterfly.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctcubemask/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctcubemask tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctcubemask 26 bin_PROGRAMS = ctcubemask
8 27
9 # Sources 28 # Sources
10 -sources = ctcubemask.cpp 29 +sources = ctcubemask.cpp ctcubemask.hpp
11 30
12 # Libtool library (only needed for python bindings) 31 # Libtool library (only needed for python bindings)
13 noinst_LTLIBRARIES = libctcubemask.la 32 noinst_LTLIBRARIES = libctcubemask.la
@@ -18,8 +37,11 @@ libctcubemask_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctcubemask_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctcubemask_SOURCES = main.cpp 37 ctcubemask_SOURCES = main.cpp
19 ctcubemask_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctcubemask_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctcubemask_CPPFLAGS = @CPPFLAGS@ 39 ctcubemask_CPPFLAGS = @CPPFLAGS@
21 -ctcubemask_LDADD = libctcubemask.la $(top_srcdir)/src/support/libsupport.la 40 +ctcubemask_LDADD = libctcubemask.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctcubemask.par 44 +pfiles_DATA = $(srcdir)/ctcubemask.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctedispcube/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctedispcube tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctedispcube 26 bin_PROGRAMS = ctedispcube
8 27
9 # Sources 28 # Sources
10 -sources = ctedispcube.cpp 29 +sources = ctedispcube.cpp ctedispcube.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctedispcube.la 32 noinst_LTLIBRARIES = libctedispcube.la
@@ -18,8 +37,11 @@ libctedispcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctedispcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctedispcube_SOURCES = main.cpp 37 ctedispcube_SOURCES = main.cpp
19 ctedispcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctedispcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctedispcube_CPPFLAGS = @CPPFLAGS@ 39 ctedispcube_CPPFLAGS = @CPPFLAGS@
21 -ctedispcube_LDADD = libctedispcube.la $(top_srcdir)/src/support/libsupport.la 40 +ctedispcube_LDADD = libctedispcube.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctedispcube.par 44 +pfiles_DATA = $(srcdir)/ctedispcube.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/cterror/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for cterror tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = cterror 26 bin_PROGRAMS = cterror
8 27
9 # Sources 28 # Sources
10 -sources = cterror.cpp 29 +sources = cterror.cpp cterror.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libcterror.la 32 noinst_LTLIBRARIES = libcterror.la
@@ -18,8 +37,11 @@ libcterror_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libcterror_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 cterror_SOURCES = main.cpp 37 cterror_SOURCES = main.cpp
19 cterror_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 cterror_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 cterror_CPPFLAGS = @CPPFLAGS@ 39 cterror_CPPFLAGS = @CPPFLAGS@
21 -cterror_LDADD = libcterror.la $(top_srcdir)/src/support/libsupport.la 40 +cterror_LDADD = libcterror.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = cterror.par 44 +pfiles_DATA = $(srcdir)/cterror.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctexpcube/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctexpcube tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctexpcube 26 bin_PROGRAMS = ctexpcube
8 27
9 # Sources 28 # Sources
10 -sources = ctexpcube.cpp 29 +sources = ctexpcube.cpp ctexpcube.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctexpcube.la 32 noinst_LTLIBRARIES = libctexpcube.la
@@ -18,8 +37,11 @@ libctexpcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctexpcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctexpcube_SOURCES = main.cpp 37 ctexpcube_SOURCES = main.cpp
19 ctexpcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctexpcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctexpcube_CPPFLAGS = @CPPFLAGS@ 39 ctexpcube_CPPFLAGS = @CPPFLAGS@
21 -ctexpcube_LDADD = libctexpcube.la $(top_srcdir)/src/support/libsupport.la 40 +ctexpcube_LDADD = libctexpcube.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctexpcube.par 44 +pfiles_DATA = $(srcdir)/ctexpcube.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctlike/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctlike tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctlike 26 bin_PROGRAMS = ctlike
8 27
9 # Sources 28 # Sources
10 -sources = ctlike.cpp 29 +sources = ctlike.cpp ctlike.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctlike.la 32 noinst_LTLIBRARIES = libctlike.la
@@ -18,8 +37,11 @@ libctlike_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctlike_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctlike_SOURCES = main.cpp 37 ctlike_SOURCES = main.cpp
19 ctlike_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctlike_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctlike_CPPFLAGS = @CPPFLAGS@ 39 ctlike_CPPFLAGS = @CPPFLAGS@
21 -ctlike_LDADD = libctlike.la $(top_srcdir)/src/support/libsupport.la 40 +ctlike_LDADD = libctlike.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctlike.par 44 +pfiles_DATA = $(srcdir)/ctlike.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctmapcube/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctmapcube tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctmapcube 26 bin_PROGRAMS = ctmapcube
8 27
9 # Sources 28 # Sources
10 -sources = ctmapcube.cpp 29 +sources = ctmapcube.cpp ctmapcube.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctmapcube.la 32 noinst_LTLIBRARIES = libctmapcube.la
@@ -18,8 +37,11 @@ libctmapcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctmapcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctmapcube_SOURCES = main.cpp 37 ctmapcube_SOURCES = main.cpp
19 ctmapcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctmapcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctmapcube_CPPFLAGS = @CPPFLAGS@ 39 ctmapcube_CPPFLAGS = @CPPFLAGS@
21 -ctmapcube_LDADD = libctmapcube.la $(top_srcdir)/src/support/libsupport.la 40 +ctmapcube_LDADD = libctmapcube.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctmapcube.par 44 +pfiles_DATA = $(srcdir)/ctmapcube.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctmodel/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctmodel tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctmodel 26 bin_PROGRAMS = ctmodel
8 27
9 # Sources 28 # Sources
10 -sources = ctmodel.cpp 29 +sources = ctmodel.cpp ctmodel.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctmodel.la 32 noinst_LTLIBRARIES = libctmodel.la
@@ -18,8 +37,11 @@ libctmodel_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctmodel_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctmodel_SOURCES = main.cpp 37 ctmodel_SOURCES = main.cpp
19 ctmodel_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctmodel_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctmodel_CPPFLAGS = @CPPFLAGS@ 39 ctmodel_CPPFLAGS = @CPPFLAGS@
21 -ctmodel_LDADD = libctmodel.la $(top_srcdir)/src/support/libsupport.la 40 +ctmodel_LDADD = libctmodel.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctmodel.par 44 +pfiles_DATA = $(srcdir)/ctmodel.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctobssim/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctobssim tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctobssim 26 bin_PROGRAMS = ctobssim
8 27
9 # Sources 28 # Sources
10 -sources = ctobssim.cpp 29 +sources = ctobssim.cpp ctobssim.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctobssim.la 32 noinst_LTLIBRARIES = libctobssim.la
@@ -18,8 +37,11 @@ libctobssim_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctobssim_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctobssim_SOURCES = main.cpp 37 ctobssim_SOURCES = main.cpp
19 ctobssim_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctobssim_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctobssim_CPPFLAGS = @CPPFLAGS@ 39 ctobssim_CPPFLAGS = @CPPFLAGS@
21 -ctobssim_LDADD = libctobssim.la $(top_srcdir)/src/support/libsupport.la 40 +ctobssim_LDADD = libctobssim.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctobssim.par 44 +pfiles_DATA = $(srcdir)/ctobssim.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctpsfcube/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctpsfcube tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctpsfcube 26 bin_PROGRAMS = ctpsfcube
8 27
9 # Sources 28 # Sources
10 -sources = ctpsfcube.cpp 29 +sources = ctpsfcube.cpp ctpsfcube.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctpsfcube.la 32 noinst_LTLIBRARIES = libctpsfcube.la
@@ -18,8 +37,11 @@ libctpsfcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctpsfcube_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctpsfcube_SOURCES = main.cpp 37 ctpsfcube_SOURCES = main.cpp
19 ctpsfcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctpsfcube_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctpsfcube_CPPFLAGS = @CPPFLAGS@ 39 ctpsfcube_CPPFLAGS = @CPPFLAGS@
21 -ctpsfcube_LDADD = libctpsfcube.la $(top_srcdir)/src/support/libsupport.la 40 +ctpsfcube_LDADD = libctpsfcube.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctpsfcube.par 44 +pfiles_DATA = $(srcdir)/ctpsfcube.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctselect/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctselect tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctselect 26 bin_PROGRAMS = ctselect
8 27
9 # Sources 28 # Sources
10 -sources = ctselect.cpp 29 +sources = ctselect.cpp ctselect.hpp
11 30
12 # Libtool library (only needed for python bindings) 31 # Libtool library (only needed for python bindings)
13 noinst_LTLIBRARIES = libctselect.la 32 noinst_LTLIBRARIES = libctselect.la
@@ -18,8 +37,11 @@ libctselect_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctselect_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctselect_SOURCES = main.cpp 37 ctselect_SOURCES = main.cpp
19 ctselect_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctselect_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctselect_CPPFLAGS = @CPPFLAGS@ 39 ctselect_CPPFLAGS = @CPPFLAGS@
21 -ctselect_LDADD = libctselect.la $(top_srcdir)/src/support/libsupport.la 40 +ctselect_LDADD = libctselect.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctselect.par 44 +pfiles_DATA = $(srcdir)/ctselect.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctskymap/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctskymap tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctskymap 26 bin_PROGRAMS = ctskymap
8 27
9 # Sources 28 # Sources
10 -sources = ctskymap.cpp 29 +sources = ctskymap.cpp ctskymap.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctskymap.la 32 noinst_LTLIBRARIES = libctskymap.la
@@ -18,8 +37,11 @@ libctskymap_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctskymap_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctskymap_SOURCES = main.cpp 37 ctskymap_SOURCES = main.cpp
19 ctskymap_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctskymap_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctskymap_CPPFLAGS = @CPPFLAGS@ 39 ctskymap_CPPFLAGS = @CPPFLAGS@
21 -ctskymap_LDADD = libctskymap.la $(top_srcdir)/src/support/libsupport.la 40 +ctskymap_LDADD = libctskymap.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctskymap.par 44 +pfiles_DATA = $(srcdir)/ctskymap.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/cttsmap/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for cttsmap tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = cttsmap 26 bin_PROGRAMS = cttsmap
8 27
9 # Sources 28 # Sources
10 -sources = cttsmap.cpp 29 +sources = cttsmap.cpp cttsmap.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libcttsmap.la 32 noinst_LTLIBRARIES = libcttsmap.la
@@ -18,8 +37,11 @@ libcttsmap_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libcttsmap_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 cttsmap_SOURCES = main.cpp 37 cttsmap_SOURCES = main.cpp
19 cttsmap_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 cttsmap_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 cttsmap_CPPFLAGS = @CPPFLAGS@ 39 cttsmap_CPPFLAGS = @CPPFLAGS@
21 -cttsmap_LDADD = libcttsmap.la $(top_srcdir)/src/support/libsupport.la 40 +cttsmap_LDADD = libcttsmap.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = cttsmap.par 44 +pfiles_DATA = $(srcdir)/cttsmap.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/ctulimit/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctulimit tool #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Set include directories 22 # Set include directories
4 INCLUDES = -I$(top_srcdir)/src/support 23 INCLUDES = -I$(top_srcdir)/src/support
@@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support @@ -7,7 +26,7 @@ INCLUDES = -I$(top_srcdir)/src/support
7 bin_PROGRAMS = ctulimit 26 bin_PROGRAMS = ctulimit
8 27
9 # Sources 28 # Sources
10 -sources = ctulimit.cpp 29 +sources = ctulimit.cpp ctulimit.hpp
11 30
12 # Libtool library 31 # Libtool library
13 noinst_LTLIBRARIES = libctulimit.la 32 noinst_LTLIBRARIES = libctulimit.la
@@ -18,8 +37,11 @@ libctulimit_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@ @@ -18,8 +37,11 @@ libctulimit_la_LDFLAGS = @OPENMP_LIB_LDFLAGS@
18 ctulimit_SOURCES = main.cpp 37 ctulimit_SOURCES = main.cpp
19 ctulimit_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@ 38 ctulimit_LDFLAGS = $(LIB_LINK_OPTION) @LDFLAGS@
20 ctulimit_CPPFLAGS = @CPPFLAGS@ 39 ctulimit_CPPFLAGS = @CPPFLAGS@
21 -ctulimit_LDADD = libctulimit.la $(top_srcdir)/src/support/libsupport.la 40 +ctulimit_LDADD = libctulimit.la $(top_builddir)/src/support/libsupport.la
22 41
23 # Parameter files 42 # Parameter files
24 pfilesdir = $(prefix)/syspfiles 43 pfilesdir = $(prefix)/syspfiles
25 -pfiles_DATA = ctulimit.par 44 +pfiles_DATA = $(srcdir)/ctulimit.par
  45 +
  46 +# Extra files to be distributed in the tar file
  47 +EXTRA_DIST = $(pfiles_DATA)
src/support/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctool base class #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Define sources for this directory 22 # Define sources for this directory
4 -sources = ctool.cpp 23 +sources = ctool.cpp ctool.hpp
5 24
6 # Build libtool library 25 # Build libtool library
7 noinst_LTLIBRARIES = libsupport.la 26 noinst_LTLIBRARIES = libsupport.la
test/Makefile.am
1 -## Process this file with automake to produce Makefile.in 1 +#############################################################################
  2 +# Makefile.am for ctools unit tests #
  3 +# ------------------------------------------------------------------------- #
  4 +# Copyright (C) 2016 Juergen Knoedlseder #
  5 +# ------------------------------------------------------------------------- #
  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 +#############################################################################
2 21
3 # Darwin support 22 # Darwin support
4 MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@ 23 MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@
@@ -6,7 +25,6 @@ MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@ @@ -6,7 +25,6 @@ MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@
6 25
7 # Optional python bindings 26 # Optional python bindings
8 if WITH_PYTHON 27 if WITH_PYTHON
9 - TEST_CSCRIPTS = test_cscripts.sh  
10 TEST_PYTHON_CTOOLS = test_python_ctools.sh 28 TEST_PYTHON_CTOOLS = test_python_ctools.sh
11 TEST_PYTHON_CSCRIPTS = test_python_cscripts.sh 29 TEST_PYTHON_CSCRIPTS = test_python_cscripts.sh
12 TEST_PYTHON_EXAMPLES = test_examples.py 30 TEST_PYTHON_EXAMPLES = test_examples.py
@@ -15,13 +33,44 @@ endif @@ -15,13 +33,44 @@ endif
15 33
16 # Set test environment 34 # Set test environment
17 TESTS_ENVIRONMENT = @RUNSHARED@=$(top_builddir)/src/.libs$(TEST_ENV_DIR):$(LIBDIR_GAMMALIB):$(@RUNSHARED@) \ 35 TESTS_ENVIRONMENT = @RUNSHARED@=$(top_builddir)/src/.libs$(TEST_ENV_DIR):$(LIBDIR_GAMMALIB):$(@RUNSHARED@) \
18 - $(TEST_PYTHON_ENV) 36 + $(TEST_PYTHON_ENV) \
  37 + TEST_SRCDIR=$(abs_top_srcdir) \
  38 + TEST_BUILDDIR=$(abs_top_builddir) \
  39 + TEST_DATA=$(abs_top_srcdir)/test/data
19 40
20 # Tests (these are the tests to be executed) 41 # Tests (these are the tests to be executed)
21 TESTS = $(TEST_PYTHON_CTOOLS) \ 42 TESTS = $(TEST_PYTHON_CTOOLS) \
22 $(TEST_PYTHON_CSCRIPTS) \ 43 $(TEST_PYTHON_CSCRIPTS) \
23 $(TEST_PYTHON_EXAMPLES) 44 $(TEST_PYTHON_EXAMPLES)
24 45
  46 +# Create report directory
  47 +all-local:
  48 + mkdir -p reports
  49 +
  50 +# Files to be removed in build directory
  51 +clean-local:
  52 + rm -rf $(builddir)/*.fits
  53 + rm -rf $(builddir)/*.log
  54 + rm -rf $(builddir)/*.xml
  55 + rm -rf $(builddir)/*.eps
  56 + rm -rf $(builddir)/*.dat
  57 + rm -rf $(builddir)/*.reg
  58 + rm -rf $(builddir)/reports/*.xml
  59 + rm -rf $(builddir)/caldb
  60 + rm -rf $(builddir)/pfiles
  61 + rm -rf $(builddir)/prod3
  62 + rm -rf $(builddir)/csroot2caldb_*
  63 + rm -rf $(builddir)/iactdata_*
  64 +
  65 +# Tests to be done on installed version
  66 +if WITH_PYTHON
  67 +installcheck-local:
  68 + @export CTOOLS=$(DESTDIR)$(prefix); \
  69 + . $(DESTDIR)$(prefix)/bin/ctools-init.sh; \
  70 + python -c 'import ctools; ctools.test()'; \
  71 + python -c 'import cscripts; cscripts.test()'
  72 +endif
  73 +
25 # Add Valgrind rule 74 # Add Valgrind rule
26 valgrind: 75 valgrind:
27 @if type valgrind >/dev/null 2>&1; then \ 76 @if type valgrind >/dev/null 2>&1; then \
test/data/iactdata/events.fits.gz 0 → 100644
No preview for this file type
test/data/iactdata/hdu-index.fits.gz 0 → 100644
No preview for this file type
test/irf/irf_file.fits.gz renamed to test/data/iactdata/irf_file.fits.gz
No preview for this file type
test/iactdata/master.json renamed to test/data/iactdata/master.json
test/iactdata/obs-index.fits.gz renamed to test/data/iactdata/obs-index.fits.gz
No preview for this file type
test/data/irf_file.fits.gz 0 → 100644
No preview for this file type
test/data/models.txt
1 -data/model_cube_background.xml  
2 -data/model_cube_background2.xml 1 +model_cube_background.xml
  2 +model_cube_background2.xml
test/data/obs_unbinned.xml
@@ -2,9 +2,9 @@ @@ -2,9 +2,9 @@
2 <observation_list title="observation list"> 2 <observation_list title="observation list">
3 <observation name="" id="00001" instrument="CTA"> 3 <observation name="" id="00001" instrument="CTA">
4 <parameter name="EventList" file="crab_events.fits" /> 4 <parameter name="EventList" file="crab_events.fits" />
5 - <parameter name="EffectiveArea" file="irf/irf_file.fits" />  
6 - <parameter name="PointSpreadFunction" file="irf/irf_file.fits" />  
7 - <parameter name="EnergyDispersion" file="irf/irf_file.fits" />  
8 - <parameter name="Background" file="irf/irf_file.fits" /> 5 + <parameter name="EffectiveArea" file="$(TEST_DATA)/irf_file.fits" />
  6 + <parameter name="PointSpreadFunction" file="$(TEST_DATA)/irf_file.fits" />
  7 + <parameter name="EnergyDispersion" file="$(TEST_DATA)/irf_file.fits" />
  8 + <parameter name="Background" file="$(TEST_DATA)/irf_file.fits" />
9 </observation> 9 </observation>
10 </observation_list> 10 </observation_list>
test/data/tsmaps.txt
1 -data/tsmap_0.fits  
2 -data/tsmap_1.fits 1 +tsmap_0.fits
  2 +tsmap_1.fits
test/data/workflow.xml
@@ -2,9 +2,9 @@ @@ -2,9 +2,9 @@
2 <workflow> 2 <workflow>
3 <actor name="input"> 3 <actor name="input">
4 <output> 4 <output>
5 - <parameter name="inmodel" value="data/crab.xml" />  
6 - <parameter name="caldb" value="irf" />  
7 - <parameter name="irf" value="cta_dummy_irf" /> 5 + <parameter name="inmodel" value="$(TEST_DATA)/crab.xml" />
  6 + <parameter name="caldb" value="prod2" />
  7 + <parameter name="irf" value="South_0.5h" />
8 <parameter name="edisp" value="no" /> 8 <parameter name="edisp" value="no" />
9 <parameter name="deadc" value="0.95" /> 9 <parameter name="deadc" value="0.95" />
10 <parameter name="ra" value="83.63" /> 10 <parameter name="ra" value="83.63" />
test/iactdata/hdu-index.fits.gz deleted
No preview for this file type
test/irf/cta_dummy_irf.dat deleted
1 -log(E) Area r68 r80 ERes. BG Rate Diff Sens  
2 --1.7 261.6 0.3621 0.4908 0.5134 1.89924e-02 6.88237e-11  
3 --1.5 5458.2 0.2712 0.3685 0.4129 1.00972e-01 1.72717e-11  
4 --1.3 15590.0 0.1662 0.2103 0.2721 5.75623e-02 6.16963e-12  
5 --1.1 26554.1 0.1253 0.1567 0.2611 2.13008e-02 2.89932e-12  
6 --0.9 52100.5 0.1048 0.1305 0.1987 8.87292e-03 1.39764e-12  
7 --0.7 66132.1 0.0827 0.1024 0.1698 1.09756e-03 6.03531e-13  
8 --0.5 108656.8 0.0703 0.0867 0.1506 4.84287e-04 3.98147e-13  
9 --0.3 129833.0 0.0585 0.0722 0.1338 1.57546e-04 3.23090e-13  
10 --0.1 284604.3 0.0531 0.0656 0.1008 1.36703e-04 2.20178e-13  
11 -0.1 263175.3 0.0410 0.0506 0.0831 2.09694e-05 1.87452e-13  
12 -0.3 778048.6 0.0470 0.0591 0.0842 6.92374e-05 1.53976e-13  
13 -0.5 929818.8 0.0391 0.0492 0.0650 1.45844e-05 1.18947e-13  
14 -0.7 1078450.0 0.0335 0.0415 0.0541 1.15959e-05 1.51927e-13  
15 -0.9 1448579.1 0.0317 0.0397 0.0516 4.71231e-06 1.42439e-13  
16 -1.1 1899905.0 0.0290 0.0372 0.0501 8.14997e-06 1.96670e-13  
17 -1.3 2476403.8 0.0285 0.0367 0.0538 5.91940e-06 2.20695e-13  
18 -1.5 2832570.6 0.0284 0.0372 0.0636 7.33847e-06 3.22523e-13  
19 -1.7 3534065.3 0.0290 0.0386 0.0731 1.34549e-05 4.84153e-13  
20 -1.9 3250103.4 0.0238 0.0308 0.0729 4.42228e-06 6.26265e-13  
21 -2.1 3916071.6 0.0260 0.0354 0.0908 2.26648e-06 7.69921e-13  
22 ----------------------------------------------  
23 -Notes  
24 - 1) log(E) = log10(E/TeV) - bin centre  
25 - 2) Eff Area - in square metres after background cut (no theta cut)  
26 - 3) Ang. Res - 68% containment radius of gamma-ray PSF post cuts - in degrees  
27 - 4) Ang. Res - 80% containment radius of gamma-ray PSF post cuts - in degrees  
28 - 5) Fractional Energy Resolution (rms)  
29 - 6) BG Rate - inside point-source selection region - post call cuts - in Hz  
30 - 7) Diff Sens - differential sensitivity for this bin expressed as E^2 dN/dE  
31 - - in erg cm^-2 s^-1 - for a 50 hours exposure - 5 sigma significance including  
32 - systematics and statistics and at least 10 photons.  
test/test_cscripts.sh.in deleted
1 -#! /bin/sh  
2 -# ==========================================================================  
3 -# This script tests all cscripts that are shipped with ctools  
4 -#  
5 -# Copyright (C) 2011-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 -  
22 -#  
23 -# Get echo command (to circumvent built-in echo on some systems)  
24 -#  
25 -ECHO=`which echo`  
26 -  
27 -#  
28 -# Print Header  
29 -#  
30 -$ECHO ""  
31 -$ECHO "*****************"  
32 -$ECHO "* Test cscripts *"  
33 -$ECHO "*****************"  
34 -  
35 -  
36 -#  
37 -# Remove any existing result files  
38 -# ================================  
39 -rm -rf *.fits *.xml *.dat *.reg .coverage  
40 -  
41 -  
42 -#  
43 -# Creates pfiles directory  
44 -# ========================  
45 -export PFILES=pfiles  
46 -export CALDB=$PWD/caldb  
47 -rm -rf $PFILES  
48 -mkdir -p $PFILES  
49 -cp -r ../src/*/*.par pfiles/  
50 -cp -r ../cscripts/*.par pfiles/  
51 -rm -rf $CALDB  
52 -mkdir -p $CALDB  
53 -  
54 -  
55 -#  
56 -# Test cscaldb  
57 -# ============  
58 -$ECHO -n "Test cscaldb: "  
59 -chmod +x @abs_top_srcdir@/cscripts/cscaldb.py  
60 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cscaldb.py \  
61 - chatter=4 > cscaldb.log  
62 -$ECHO -n "."  
63 -if [ -s "cscaldb.log" ]  
64 -then  
65 - $ECHO -n "."  
66 -else  
67 - $ECHO " cscaldb.log file is not valid"  
68 - exit 1  
69 -fi  
70 -$ECHO " ok"  
71 -  
72 -  
73 -#  
74 -# Test csobs2caldb  
75 -# ================  
76 -$ECHO -n "Test csobs2caldb: "  
77 -chmod +x @abs_top_srcdir@/cscripts/csobs2caldb.py  
78 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csobs2caldb.py \  
79 - inobs="data/obs_unbinned.xml" \  
80 - caldb="cta" \  
81 - irf="Standard" \  
82 - chatter=4 > csobs2caldb.log  
83 -$ECHO -n "."  
84 -if [ -s "$CALDB/data/cta/cta/bcf/Standard/irf_file.fits" ]  
85 -then  
86 - $ECHO -n "."  
87 -else  
88 - $ECHO " $CALDB/data/cta/cta/bcf/Standard/irf_file.fits file is not valid"  
89 - exit 1  
90 -fi  
91 -$ECHO " ok"  
92 -  
93 -  
94 -#  
95 -# Test csobsdef  
96 -# =============  
97 -$ECHO -n "Test csobsdef: "  
98 -chmod +x @abs_top_srcdir@/cscripts/csobsdef.py  
99 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csobsdef.py \  
100 - inpnt="data/pntdef.dat" \  
101 - outobs="obs.xml" \  
102 - caldb="irf" \  
103 - irf="cta_dummy_irf" \  
104 - emin=0.1 \  
105 - emax=100.0 \  
106 - duration=1800.0 \  
107 - rad=5.0 > csobsdef.log  
108 -$ECHO -n "."  
109 -if [ -s "obs.xml" ]  
110 -then  
111 - $ECHO -n "."  
112 -else  
113 - $ECHO " obs.xml file is not valid"  
114 - exit 1  
115 -fi  
116 -$ECHO " ok"  
117 -  
118 -  
119 -#  
120 -# Test csobsinfo  
121 -# ==============  
122 -$ECHO -n "Test csobsinfo: "  
123 -chmod +x @abs_top_srcdir@/cscripts/csobsinfo.py  
124 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csobsinfo.py \  
125 - inobs="obs.xml" \  
126 - ds9file="obs.reg" \  
127 - offset=yes \  
128 - ra="83.6331" \  
129 - dec="22.01" > csobsinfo.log  
130 -$ECHO -n "."  
131 -if [ -s "obs.reg" ]  
132 -then  
133 - $ECHO -n "."  
134 -else  
135 - $ECHO " obs.reg file is not valid"  
136 - exit 1  
137 -fi  
138 -$ECHO " ok"  
139 -  
140 -  
141 -#  
142 -# Test csmodelinfo  
143 -# ================  
144 -$ECHO -n "Test csmodelinfo: "  
145 -chmod +x @abs_top_srcdir@/cscripts/csmodelinfo.py  
146 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csmodelinfo.py \  
147 - inmodel="data/crab.xml" \  
148 - ds9file="model.reg" > csmodelinfo.log  
149 -$ECHO -n "."  
150 -if [ -s "model.reg" ]  
151 -then  
152 - $ECHO -n "."  
153 -else  
154 - $ECHO " model.reg file is not valid"  
155 - exit 1  
156 -fi  
157 -$ECHO " ok"  
158 -  
159 -  
160 -#  
161 -# Test csmodelmerge  
162 -# =================  
163 -$ECHO -n "Test csmodelmerge: "  
164 -# === space-separated ===  
165 -chmod +x @abs_top_srcdir@/cscripts/csmodelmerge.py  
166 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csmodelmerge.py \  
167 - inmodels="data/crab.xml data/source1.xml" \  
168 - outmodel="merged_models.xml" > csmodelmerge.log  
169 -$ECHO -n "."  
170 -if [ -s "merged_models.xml" ]  
171 -then  
172 - $ECHO -n "."  
173 -else  
174 - $ECHO " merged_models.xml file is not valid"  
175 - exit 1  
176 -fi  
177 -# === semi-colon separated ===  
178 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csmodelmerge.py \  
179 - inmodels="data/crab.xml;data/source1.xml" \  
180 - outmodel="merged_models2.xml" > csmodelmerge.log  
181 -$ECHO -n "."  
182 -if [ -s "merged_models2.xml" ]  
183 -then  
184 - $ECHO -n "."  
185 -else  
186 - $ECHO " merged_models2.xml file is not valid"  
187 - exit 1  
188 -fi  
189 -# === wildcard string ===  
190 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csmodelmerge.py \  
191 - inmodels="data/model_cube_background*.xml" \  
192 - outmodel="merged_models3.xml" > csmodelmerge.log  
193 -$ECHO -n "."  
194 -if [ -s "merged_models3.xml" ]  
195 -then  
196 - $ECHO -n "."  
197 -else  
198 - $ECHO " merged_models3.xml file is not valid"  
199 - exit 1  
200 -fi  
201 -# === ascii-file ===  
202 -ls data/model_cube_background* > models.txt  
203 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csmodelmerge.py \  
204 - inmodels="@models.txt" \  
205 - outmodel="merged_models4.xml" > csmodelmerge.log  
206 -$ECHO -n "."  
207 -if [ -s "merged_models4.xml" ]  
208 -then  
209 - $ECHO -n "."  
210 -else  
211 - $ECHO " merged_models4.xml file is not valid"  
212 - exit 1  
213 -fi  
214 -$ECHO " ok"  
215 -rm models.txt  
216 -  
217 -  
218 -#  
219 -# Test cstsmapmerge  
220 -# =================  
221 -$ECHO -n "Test cstsmapmerge: "  
222 -# === semi-colon separated ===  
223 -chmod +x @abs_top_srcdir@/cscripts/cstsmapmerge.py  
224 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cstsmapmerge.py \  
225 - inmaps="data/tsmap_0.fits;data/tsmap_1.fits" \  
226 - outmap="merged_tsmap1.fits" > cstsmapmerge.log  
227 -$ECHO -n "."  
228 -if [ -s "merged_tsmap1.fits" ]  
229 -then  
230 - $ECHO -n "."  
231 -else  
232 - $ECHO " merged_tsmap1.fits file is not valid"  
233 - exit 1  
234 -fi  
235 -# === space-separated ===  
236 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cstsmapmerge.py \  
237 - inmaps="data/tsmap_0.fits data/tsmap_1.fits" \  
238 - outmap="merged_tsmap2.fits" > cstsmapmerge.log  
239 -$ECHO -n "."  
240 -if [ -s "merged_tsmap2.fits" ]  
241 -then  
242 - $ECHO -n "."  
243 -else  
244 - $ECHO " merged_tsmap2.fits file is not valid"  
245 - exit 1  
246 -fi  
247 -# === wildcard string ===  
248 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cstsmapmerge.py \  
249 - inmaps="data/tsmap_*.fits" \  
250 - outmap="merged_tsmap3.fits" > cstsmapmerge.log  
251 -$ECHO -n "."  
252 -if [ -s "merged_tsmap3.fits" ]  
253 -then  
254 - $ECHO -n "."  
255 -else  
256 - $ECHO " merged_tsmap3.fits file is not valid"  
257 - exit 1  
258 -fi  
259 -# === ascii-file ===  
260 -#ls data/tsmap_*.fits > tsmaps.txt  
261 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cstsmapmerge.py \  
262 - inmaps="@data/tsmaps.txt" \  
263 - outmap="merged_tsmap4.fits" > cstsmapmerge.log  
264 -$ECHO -n "."  
265 -if [ -s "merged_tsmap4.fits" ]  
266 -then  
267 - $ECHO -n "."  
268 -else  
269 - $ECHO " merged_tsmap4.fits file is not valid"  
270 - exit 1  
271 -fi  
272 -$ECHO " ok"  
273 -rm tsmaps.txt  
274 -  
275 -  
276 -#  
277 -# Test cspull  
278 -# ===========  
279 -$ECHO -n "Test cspull: "  
280 -chmod +x @abs_top_srcdir@/cscripts/cspull.py  
281 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cspull.py \  
282 - inmodel="data/crab.xml" \  
283 - outfile="pull.dat" \  
284 - ntrials="3" \  
285 - caldb="cta" \  
286 - irf="Standard" \  
287 - ra=83.6331 \  
288 - dec=22.0145 \  
289 - emin=0.1 \  
290 - emax=100.0 \  
291 - enumbins=0 \  
292 - tmax=1800.0 \  
293 - deadc=0.95 \  
294 - rad=5.0 \  
295 - npix=200 \  
296 - debug=yes \  
297 - binsz=0.05 > cspull.log  
298 -$ECHO -n "."  
299 -if [ -s "pull.dat" ]  
300 -then  
301 - $ECHO -n "."  
302 -else  
303 - $ECHO " pull.dat file is not valid"  
304 - exit 1  
305 -fi  
306 -$ECHO " ok"  
307 -  
308 -  
309 -#  
310 -# Test cssens  
311 -# ===========  
312 -$ECHO -n "Test cssens: "  
313 -chmod +x @abs_top_srcdir@/cscripts/cssens.py  
314 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cssens.py \  
315 - inmodel="data/crab.xml" \  
316 - srcname="Crab" \  
317 - caldb="irf" \  
318 - irf="cta_dummy_irf" \  
319 - duration=1800.0 \  
320 - rad=3.0 \  
321 - emin=1.0 \  
322 - emax=10.0 \  
323 - bins=1 > cssens.log  
324 -$ECHO -n "."  
325 -if [ -s "sensitivity.dat" ]  
326 -then  
327 - $ECHO -n "."  
328 -else  
329 - $ECHO " sensitivity.dat file is not valid"  
330 - exit 1  
331 -fi  
332 -$ECHO " ok"  
333 -  
334 -  
335 -#  
336 -# Test cstsdist  
337 -# =============  
338 -$ECHO -n "Test cstsdist: "  
339 -chmod +x @abs_top_srcdir@/cscripts/cstsdist.py  
340 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cstsdist.py \  
341 - inmodel="data/crab.xml" \  
342 - srcname="Crab" \  
343 - outfile="ts.dat" \  
344 - ntrials="1" \  
345 - caldb="irf" \  
346 - irf="cta_dummy_irf" \  
347 - ra=83.63 \  
348 - dec=22.01 \  
349 - emin=0.1 \  
350 - emax=100.0 \  
351 - enumbins=0 \  
352 - tmax=1800.0 \  
353 - rad=5.0 \  
354 - npix=200 \  
355 - binsz=0.05 > cstsdist.log  
356 -$ECHO -n "."  
357 -if [ -s "ts.dat" ]  
358 -then  
359 - $ECHO -n "."  
360 -else  
361 - $ECHO " ts.dat file is not valid"  
362 - exit 1  
363 -fi  
364 -$ECHO " ok"  
365 -  
366 -  
367 -#  
368 -# Test csresmap  
369 -# =============  
370 -$ECHO -n "Test csresmap: "  
371 -chmod +x @abs_top_srcdir@/cscripts/csresmap.py  
372 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csresmap.py \  
373 - inobs="data/crab_events.fits" \  
374 - outmap="resmap.fits" \  
375 - inmodel="data/crab.xml" \  
376 - caldb="irf" \  
377 - irf="cta_dummy_irf" \  
378 - nxpix=50 \  
379 - nypix=50 \  
380 - binsz=0.02 \  
381 - coordsys="CEL" \  
382 - xref=83.63 \  
383 - yref=22.01 \  
384 - proj="CAR" \  
385 - binsz=0.05 \  
386 - algorithm="SUBDIV" > csresmap.log  
387 -$ECHO -n "."  
388 -if [ -s "resmap.fits" ]  
389 -then  
390 - $ECHO -n "."  
391 -else  
392 - $ECHO " resmap.fits file is not valid"  
393 - exit 1  
394 -fi  
395 -$ECHO " ok"  
396 -  
397 -  
398 -#  
399 -# Test csspec  
400 -# ===========  
401 -$ECHO -n "Test csspec: "  
402 -# === Unbinned ===  
403 -chmod +x @abs_top_srcdir@/cscripts/csspec.py  
404 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csspec.py \  
405 - inobs="data/crab_events.fits" \  
406 - inmodel="data/crab.xml" \  
407 - caldb="irf" \  
408 - irf="cta_dummy_irf" \  
409 - ebinalg="LOG" \  
410 - enumbins=5 \  
411 - srcname="Crab" \  
412 - emin=0.1 \  
413 - emax=100.0 \  
414 - outfile="spectrum.fits" > csspec.log  
415 -$ECHO -n "."  
416 -if [ -s "spectrum.fits" ]  
417 -then  
418 - $ECHO -n "."  
419 -else  
420 - $ECHO " spectrum.fits file is not valid"  
421 - exit 1  
422 -fi  
423 -# === Binned ===  
424 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csspec.py \  
425 - inobs="data/crab_cntmap_small.fits.gz" \  
426 - expcube="data/crab_expcube.fits.gz" \  
427 - psfcube="data/crab_psfcube.fits.gz" \  
428 - edispcube="data/crab_edispcube.fits.gz" \  
429 - bkgcube="data/crab_bkgcube.fits.gz" \  
430 - inmodel="data/crab_bkgcube.xml" \  
431 - ebinalg="LOG" \  
432 - enumbins=2 \  
433 - emin=0.1 \  
434 - emax=100.0 \  
435 - srcname="Crab" \  
436 - outfile="spectrum_binned.fits" > csspec.log  
437 -$ECHO -n "."  
438 -if [ -s "spectrum_binned.fits" ]  
439 -then  
440 - $ECHO -n "."  
441 -else  
442 - $ECHO " spectrum_binned.fits file is not valid"  
443 - exit 1  
444 -fi  
445 -$ECHO " ok"  
446 -  
447 -  
448 -#  
449 -# Test cslightcrv  
450 -# ===============  
451 -$ECHO -n "Test cslightcrv: "  
452 -# === unbinned ===  
453 -chmod +x @abs_top_srcdir@/cscripts/cslightcrv.py  
454 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cslightcrv.py \  
455 - inobs="data/crab_events.fits" \  
456 - inmodel="data/crab.xml" \  
457 - srcname="Crab" \  
458 - caldb="irf" \  
459 - irf="cta_dummy_irf" \  
460 - tbinalg="LIN" \  
461 - tmin=51544.5 \  
462 - tmax=51544.53 \  
463 - tbins=3 \  
464 - enumbins=0 \  
465 - emin=0.1 \  
466 - emax=100.0 \  
467 - outfile="lightcurve.fits" > cslightcrv.log  
468 -$ECHO -n "."  
469 -if [ -s "lightcurve.fits" ]  
470 -then  
471 - $ECHO -n "."  
472 -else  
473 - $ECHO " lightcurve.fits file is not valid"  
474 - exit 1  
475 -fi  
476 -# === binned ===  
477 -@PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/cslightcrv.py \  
478 - inobs="data/crab_events.fits" \  
479 - inmodel="data/crab.xml" \  
480 - srcname="Crab" \  
481 - caldb="irf" \  
482 - irf="cta_dummy_irf" \  
483 - tbinalg="GTI" \  
484 - enumbins=2 \  
485 - emin=0.1 \  
486 - emax=100.0 \  
487 - coordsys="CEL" \  
488 - proj="CAR" \  
489 - xref=83.63 \  
490 - yref=22.01 \  
491 - nxpix=10 \  
492 - nypix=10 \  
493 - binsz=0.1 \  
494 - outfile="lightcurve_binned.fits" > cslightcrv.log  
495 -$ECHO -n "."  
496 -if [ -s "lightcurve_binned.fits" ]  
497 -then  
498 - $ECHO -n "."  
499 -else  
500 - $ECHO " lightcurve_binned.fits file is not valid"  
501 - exit 1  
502 -fi  
503 -$ECHO " ok"  
504 -  
505 -  
506 -#  
507 -# Optional tests for Python 2.6++ (scripts needing json module)  
508 -# =============================================================  
509 -python_version=`echo @PYTHON_VERSION@ | sed 's/\(10\.[[0-9]]*\).*/\1/' | sed -e 's/\.//g'`  
510 -if [ $python_version -ge 26 ]; then  
511 -  
512 - #  
513 - # Test csfindobs  
514 - # ==============  
515 - $ECHO -n "Test csfindobs: "  
516 - chmod +x @abs_top_srcdir@/cscripts/csfindobs.py  
517 - @PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csfindobs.py \  
518 - datapath="iactdata/" \  
519 - prodname="unit-test" \  
520 - ra="83.6331" \  
521 - dec="22.01" \  
522 - rad="1.0" \  
523 - outfile="iactrunlist.dat" > csfindobs.log  
524 - $ECHO -n "."  
525 - if [ -s "iactrunlist.dat" ]  
526 - then  
527 - $ECHO -n "."  
528 - else  
529 - $ECHO " iactdata/runlist.txt file is not valid"  
530 - exit 1  
531 - fi  
532 - $ECHO " ok"  
533 -  
534 -  
535 - #  
536 - # Test csiactcopy  
537 - # ===============  
538 - $ECHO -n "Test csiactcopy: "  
539 - chmod +x @abs_top_srcdir@/cscripts/csiactcopy.py  
540 - @PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csiactcopy.py \  
541 - remote_master="iactdata/master.json" \  
542 - outpath="iactdata_test" \  
543 - prodname="unit-test" > csiactcopy.log  
544 - $ECHO -n "."  
545 - if [ -s "iactdata_test/master.json" ]  
546 - then  
547 - $ECHO -n "."  
548 - else  
549 - $ECHO " iactdata_test/master.json file is not valid"  
550 - exit 1  
551 - fi  
552 - $ECHO " ok"  
553 -  
554 -  
555 - #  
556 - # Test csiactobs  
557 - # ==============  
558 - $ECHO -n "Test csiactobs: "  
559 - chmod +x @abs_top_srcdir@/cscripts/csiactobs.py  
560 - @PYTHON_COVERAGE@@abs_top_srcdir@/cscripts/csiactobs.py \  
561 - datapath="iactdata/" \  
562 - prodname="unit-test" \  
563 - infile="iactrunlist.dat" \  
564 - bkgpars="1" \  
565 - outobs="obs2.xml" \  
566 - outmodel="bkgmodels.xml" > csiactobs.log  
567 - $ECHO -n "."  
568 - if [ -s "obs2.xml" ]  
569 - then  
570 - $ECHO -n "."  
571 - else  
572 - $ECHO " obs.xml file is not valid"  
573 - exit 1  
574 - fi  
575 - $ECHO " ok"  
576 -  
577 -fi # Python 2.6+ specific tests  
test/test_csfindobs.py
@@ -42,6 +42,9 @@ class Test(test): @@ -42,6 +42,9 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set data members
  46 + self._datapath = self._datadir + '/iactdata'
  47 +
45 # Return 48 # Return
46 return 49 return
47 50
@@ -69,7 +72,7 @@ class Test(test): @@ -69,7 +72,7 @@ class Test(test):
69 csfindobs = self._script('csfindobs') 72 csfindobs = self._script('csfindobs')
70 73
71 # Setup csfindobs command 74 # Setup csfindobs command
72 - cmd = csfindobs+' datapath="iactdata/"'+ \ 75 + cmd = csfindobs+' datapath="'+self._datapath+'"'+ \
73 ' prodname="unit-test"'+ \ 76 ' prodname="unit-test"'+ \
74 ' ra=83.63 dec=22.01 rad=1.0'+ \ 77 ' ra=83.63 dec=22.01 rad=1.0'+ \
75 ' outfile="runlist_cmd1.dat"'+ \ 78 ' outfile="runlist_cmd1.dat"'+ \
@@ -107,7 +110,7 @@ class Test(test): @@ -107,7 +110,7 @@ class Test(test):
107 """ 110 """
108 # Set-up csfindobs 111 # Set-up csfindobs
109 findobs = cscripts.csfindobs() 112 findobs = cscripts.csfindobs()
110 - findobs['datapath'] = 'iactdata/' 113 + findobs['datapath'] = self._datapath
111 findobs['prodname'] = 'unit-test' 114 findobs['prodname'] = 'unit-test'
112 findobs['outfile'] = 'runlist_py1.dat' 115 findobs['outfile'] = 'runlist_py1.dat'
113 findobs['ra'] = 83.63 116 findobs['ra'] = 83.63
test/test_csiactcopy.py
@@ -42,6 +42,9 @@ class Test(test): @@ -42,6 +42,9 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set data members
  46 + self._remote = self._datadir + '/iactdata/master.json'
  47 +
45 # Return 48 # Return
46 return 49 return
47 50
@@ -69,7 +72,7 @@ class Test(test): @@ -69,7 +72,7 @@ class Test(test):
69 csiactcopy = self._script('csiactcopy') 72 csiactcopy = self._script('csiactcopy')
70 73
71 # Setup csiactcopy command 74 # Setup csiactcopy command
72 - cmd = csiactcopy+' remote_master="iactdata/master.json"'+ \ 75 + cmd = csiactcopy+' remote_master="'+self._remote+'"'+ \
73 ' prodname="unit-test"'+ \ 76 ' prodname="unit-test"'+ \
74 ' outpath="iactdata_cmd1"'+ \ 77 ' outpath="iactdata_cmd1"'+ \
75 ' logfile="csiactcopy_cmd1.log" chatter=1' 78 ' logfile="csiactcopy_cmd1.log" chatter=1'
@@ -105,7 +108,7 @@ class Test(test): @@ -105,7 +108,7 @@ class Test(test):
105 """ 108 """
106 # Set-up csiactcopy 109 # Set-up csiactcopy
107 findobs = cscripts.csiactcopy() 110 findobs = cscripts.csiactcopy()
108 - findobs['remote_master'] = 'iactdata/master.json' 111 + findobs['remote_master'] = self._remote
109 findobs['prodname'] = 'unit-test' 112 findobs['prodname'] = 'unit-test'
110 findobs['outpath'] = 'iactdata_py1' 113 findobs['outpath'] = 'iactdata_py1'
111 findobs['logfile'] = 'csiactcopy_py1.log' 114 findobs['logfile'] = 'csiactcopy_py1.log'
@@ -134,17 +137,17 @@ class Test(test): @@ -134,17 +137,17 @@ class Test(test):
134 137
135 # Check for existence of files 138 # Check for existence of files
136 self.test_assert(hdu_index_name.exists(), 139 self.test_assert(hdu_index_name.exists(),
137 - 'Check is file "hdu-index.fits" exists.') 140 + 'Check if file "hdu-index.fits" exists.')
138 self.test_assert(obs_index_name.exists(), 141 self.test_assert(obs_index_name.exists(),
139 - 'Check is file "obs-index.fits" exists.') 142 + 'Check if file "obs-index.fits" exists.')
140 self.test_assert(master_name.exists(), 143 self.test_assert(master_name.exists(),
141 - 'Check is file "master.json" exists.') 144 + 'Check if file "master.json" exists.')
142 145
143 # Check if index files are FITS file 146 # Check if index files are FITS file
144 self.test_assert(hdu_index_name.is_fits(), 147 self.test_assert(hdu_index_name.is_fits(),
145 - 'Check is file "hdu-index.fits" is FITS file.') 148 + 'Check if file "hdu-index.fits" is FITS file.')
146 self.test_assert(obs_index_name.is_fits(), 149 self.test_assert(obs_index_name.is_fits(),
147 - 'Check is file "obs-index.fits" is FITS file.') 150 + 'Check if file "obs-index.fits" is FITS file.')
148 151
149 # Return 152 # Return
150 return 153 return
test/test_csiactdata.py
@@ -42,6 +42,9 @@ class Test(test): @@ -42,6 +42,9 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set data members
  46 + self._datapath = self._datadir + '/iactdata'
  47 +
45 # Return 48 # Return
46 return 49 return
47 50
@@ -69,7 +72,7 @@ class Test(test): @@ -69,7 +72,7 @@ class Test(test):
69 csiactdata = self._script('csiactdata') 72 csiactdata = self._script('csiactdata')
70 73
71 # Setup csiactdata command 74 # Setup csiactdata command
72 - cmd = csiactdata+' datapath="iactdata"'+ \ 75 + cmd = csiactdata+' datapath="'+self._datapath+'"'+ \
73 ' logfile="csiactdata_cmd1.log" chatter=1' 76 ' logfile="csiactdata_cmd1.log" chatter=1'
74 77
75 # Check if execution of wrong command fails 78 # Check if execution of wrong command fails
@@ -98,7 +101,7 @@ class Test(test): @@ -98,7 +101,7 @@ class Test(test):
98 """ 101 """
99 # Set-up csiactdata 102 # Set-up csiactdata
100 iactdata = cscripts.csiactdata() 103 iactdata = cscripts.csiactdata()
101 - iactdata['datapath'] = 'iactdata' 104 + iactdata['datapath'] = self._datapath
102 iactdata['logfile'] = 'csiactdata_py1.log' 105 iactdata['logfile'] = 'csiactdata_py1.log'
103 iactdata['chatter'] = 2 106 iactdata['chatter'] = 2
104 107
test/test_csiactobs.py
@@ -42,6 +42,9 @@ class Test(test): @@ -42,6 +42,9 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set data members
  46 + self._datapath = self._datadir + '/iactdata'
  47 +
45 # Return 48 # Return
46 return 49 return
47 50
@@ -69,7 +72,7 @@ class Test(test): @@ -69,7 +72,7 @@ class Test(test):
69 csiactobs = self._script('csiactobs') 72 csiactobs = self._script('csiactobs')
70 73
71 # Setup csiactobs command 74 # Setup csiactobs command
72 - cmd = csiactobs+' datapath="iactdata"'+ \ 75 + cmd = csiactobs+' datapath="'+self._datapath+'"'+ \
73 ' prodname="unit-test"'+ \ 76 ' prodname="unit-test"'+ \
74 ' infile="runlist_cmd1.dat"'+ \ 77 ' infile="runlist_cmd1.dat"'+ \
75 ' bkgpars=1'+\ 78 ' bkgpars=1'+\
@@ -114,7 +117,7 @@ class Test(test): @@ -114,7 +117,7 @@ class Test(test):
114 """ 117 """
115 # Set-up csiactobs 118 # Set-up csiactobs
116 iactobs = cscripts.csiactobs() 119 iactobs = cscripts.csiactobs()
117 - iactobs['datapath'] = 'iactdata' 120 + iactobs['datapath'] = self._datapath
118 iactobs['prodname'] = 'unit-test' 121 iactobs['prodname'] = 'unit-test'
119 iactobs['infile'] = 'runlist_py1.dat' 122 iactobs['infile'] = 'runlist_py1.dat'
120 iactobs['bkgpars'] = 1 123 iactobs['bkgpars'] = 1
@@ -151,7 +154,7 @@ class Test(test): @@ -151,7 +154,7 @@ class Test(test):
151 # Check number of observations 154 # Check number of observations
152 self.test_value(obs.size(), 1, 155 self.test_value(obs.size(), 1,
153 'Check for single observation in XML file') 156 'Check for single observation in XML file')
154 - self.test_assert(obs[0].eventfile().file() == 'crab_events.fits.gz', 157 + self.test_assert(obs[0].eventfile().file() == 'events.fits.gz',
155 'Check event file name') 158 'Check event file name')
156 self.test_assert(obs[0].eventfile().extname() == 'EVENTS', 159 self.test_assert(obs[0].eventfile().extname() == 'EVENTS',
157 'Check event extension name') 160 'Check event extension name')
test/test_cslightcrv.py
@@ -42,10 +42,6 @@ class Test(test): @@ -42,10 +42,6 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
45 - # Set members  
46 - self._events_name = 'data/crab_events.fits'  
47 - self._model_name = 'data/crab.xml'  
48 -  
49 # Return 45 # Return
50 return 46 return
51 47
@@ -73,9 +69,9 @@ class Test(test): @@ -73,9 +69,9 @@ class Test(test):
73 cslightcrv = self._script('cslightcrv') 69 cslightcrv = self._script('cslightcrv')
74 70
75 # Setup cslightcrv command 71 # Setup cslightcrv command
76 - cmd = cslightcrv+' inobs="'+self._events_name+'"'+ \  
77 - ' inmodel="'+self._model_name+'"'+ \  
78 - ' srcname="Crab" caldb="prod2" irf="South_0.5h"'+ \ 72 + cmd = cslightcrv+' inobs="'+self._events+'"'+ \
  73 + ' inmodel="'+self._model+'" srcname="Crab"'+ \
  74 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
79 ' tbinalg="LIN" tmin=51544.50 tmax=51544.53'+ \ 75 ' tbinalg="LIN" tmin=51544.50 tmax=51544.53'+ \
80 ' tbins=3 enumbins=0 emin=0.1 emax=100.0'+ \ 76 ' tbins=3 enumbins=0 emin=0.1 emax=100.0'+ \
81 ' outfile="lightcurve_cmd1.fits"'+ \ 77 ' outfile="lightcurve_cmd1.fits"'+ \
@@ -94,8 +90,8 @@ class Test(test): @@ -94,8 +90,8 @@ class Test(test):
94 90
95 # Setup cslightcrv command 91 # Setup cslightcrv command
96 cmd = cslightcrv+' inobs="events_that_do_not_exist.fits"'+ \ 92 cmd = cslightcrv+' inobs="events_that_do_not_exist.fits"'+ \
97 - ' inmodel="'+self._model_name+'"'+ \  
98 - ' srcname="Crab" caldb="prod2" irf="South_0.5h"'+ \ 93 + ' inmodel="'+self._model+'" srcname="Crab"'+ \
  94 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
99 ' tbinalg="LIN" tmin=51544.50 tmax=51544.53'+ \ 95 ' tbinalg="LIN" tmin=51544.50 tmax=51544.53'+ \
100 ' tbins=3 enumbins=0 emin=0.1 emax=100.0'+ \ 96 ' tbins=3 enumbins=0 emin=0.1 emax=100.0'+ \
101 ' outfile="lightcurve_cmd1.fits"'+ \ 97 ' outfile="lightcurve_cmd1.fits"'+ \
@@ -115,11 +111,11 @@ class Test(test): @@ -115,11 +111,11 @@ class Test(test):
115 """ 111 """
116 # Set-up unbinned cslightcrv 112 # Set-up unbinned cslightcrv
117 lcrv = cscripts.cslightcrv() 113 lcrv = cscripts.cslightcrv()
118 - lcrv['inobs'] = self._events_name  
119 - lcrv['inmodel'] = self._model_name 114 + lcrv['inobs'] = self._events
  115 + lcrv['inmodel'] = self._model
120 lcrv['srcname'] = 'Crab' 116 lcrv['srcname'] = 'Crab'
121 - lcrv['caldb'] = 'prod2'  
122 - lcrv['irf'] = 'South_0.5h' 117 + lcrv['caldb'] = self._caldb
  118 + lcrv['irf'] = self._irf
123 lcrv['tbinalg'] = 'LIN' 119 lcrv['tbinalg'] = 'LIN'
124 lcrv['tmin'] = 51544.50 120 lcrv['tmin'] = 51544.50
125 lcrv['tmax'] = 51544.53 121 lcrv['tmax'] = 51544.53
@@ -152,11 +148,11 @@ class Test(test): @@ -152,11 +148,11 @@ class Test(test):
152 148
153 # Set-up unbinned cslightcrv 149 # Set-up unbinned cslightcrv
154 lcrv = cscripts.cslightcrv() 150 lcrv = cscripts.cslightcrv()
155 - lcrv['inobs'] = self._events_name  
156 - lcrv['inmodel'] = self._model_name 151 + lcrv['inobs'] = self._events
  152 + lcrv['inmodel'] = self._model
157 lcrv['srcname'] = 'Crab' 153 lcrv['srcname'] = 'Crab'
158 - lcrv['caldb'] = 'prod2'  
159 - lcrv['irf'] = 'South_0.5h' 154 + lcrv['caldb'] = self._caldb
  155 + lcrv['irf'] = self._irf
160 lcrv['tbinalg'] = 'FILE' 156 lcrv['tbinalg'] = 'FILE'
161 lcrv['tbinfile'] = 'cslightcrv_py2.dat' 157 lcrv['tbinfile'] = 'cslightcrv_py2.dat'
162 lcrv['enumbins'] = 0 158 lcrv['enumbins'] = 0
@@ -176,17 +172,17 @@ class Test(test): @@ -176,17 +172,17 @@ class Test(test):
176 # Now we setup an observation container on input. We attached the 172 # Now we setup an observation container on input. We attached the
177 # model to the observation container so that cslightcrv should 173 # model to the observation container so that cslightcrv should
178 # no longer query for the parameter. 174 # no longer query for the parameter.
179 - cta = gammalib.GCTAObservation(self._events_name) 175 + cta = gammalib.GCTAObservation(self._events)
180 obs = gammalib.GObservations() 176 obs = gammalib.GObservations()
181 obs.append(cta) 177 obs.append(cta)
182 - obs.models(self._model_name) 178 + obs.models(self._model)
183 179
184 # Set-up unbinned cslightcrv from observation container. Now use 180 # Set-up unbinned cslightcrv from observation container. Now use
185 # the GTI algorithm so that we test all timing algorithms. 181 # the GTI algorithm so that we test all timing algorithms.
186 lcrv = cscripts.cslightcrv(obs) 182 lcrv = cscripts.cslightcrv(obs)
187 lcrv['srcname'] = 'Crab' 183 lcrv['srcname'] = 'Crab'
188 - lcrv['caldb'] = 'prod2'  
189 - lcrv['irf'] = 'South_0.5h' 184 + lcrv['caldb'] = self._caldb
  185 + lcrv['irf'] = self._irf
190 lcrv['tbinalg'] = 'GTI' 186 lcrv['tbinalg'] = 'GTI'
191 lcrv['enumbins'] = 0 187 lcrv['enumbins'] = 0
192 lcrv['emin'] = 0.1 188 lcrv['emin'] = 0.1
@@ -203,11 +199,11 @@ class Test(test): @@ -203,11 +199,11 @@ class Test(test):
203 199
204 # Finally we set-up a binned cslightcrv 200 # Finally we set-up a binned cslightcrv
205 lcrv = cscripts.cslightcrv() 201 lcrv = cscripts.cslightcrv()
206 - lcrv['inobs'] = self._events_name  
207 - lcrv['inmodel'] = self._model_name 202 + lcrv['inobs'] = self._events
  203 + lcrv['inmodel'] = self._model
208 lcrv['srcname'] = 'Crab' 204 lcrv['srcname'] = 'Crab'
209 - lcrv['caldb'] = 'prod2'  
210 - lcrv['irf'] = 'South_0.5h' 205 + lcrv['caldb'] = self._caldb
  206 + lcrv['irf'] = self._irf
211 lcrv['tbinalg'] = 'LIN' 207 lcrv['tbinalg'] = 'LIN'
212 lcrv['tmin'] = 51544.50 208 lcrv['tmin'] = 51544.50
213 lcrv['tmax'] = 51544.53 209 lcrv['tmax'] = 51544.53
test/test_csmodelinfo.py
@@ -37,14 +37,11 @@ class Test(test): @@ -37,14 +37,11 @@ class Test(test):
37 # Constructor 37 # Constructor
38 def __init__(self): 38 def __init__(self):
39 """ 39 """
40 - Constructor. 40 + Constructor
41 """ 41 """
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
45 - # Set members  
46 - self._model_name = "data/crab.xml"  
47 -  
48 # Return 45 # Return
49 return 46 return
50 47
@@ -72,7 +69,7 @@ class Test(test): @@ -72,7 +69,7 @@ class Test(test):
72 csmodelinfo = self._script('csmodelinfo') 69 csmodelinfo = self._script('csmodelinfo')
73 70
74 # Setup csmodelinfo command 71 # Setup csmodelinfo command
75 - cmd = csmodelinfo+' inmodel="'+self._model_name+'"'+ \ 72 + cmd = csmodelinfo+' inmodel="'+self._model+'"'+ \
76 ' ds9file="model_cmd1.reg"'+ \ 73 ' ds9file="model_cmd1.reg"'+ \
77 ' logfile="csmodelinfo_cmd1.log" chatter=1' 74 ' logfile="csmodelinfo_cmd1.log" chatter=1'
78 75
@@ -106,7 +103,7 @@ class Test(test): @@ -106,7 +103,7 @@ class Test(test):
106 """ 103 """
107 # Set-up csmodelinfo 104 # Set-up csmodelinfo
108 modelinfo = cscripts.csmodelinfo() 105 modelinfo = cscripts.csmodelinfo()
109 - modelinfo['inmodel'] = self._model_name 106 + modelinfo['inmodel'] = self._model
110 modelinfo['ds9file'] = 'csmodelinfo_py1.reg' 107 modelinfo['ds9file'] = 'csmodelinfo_py1.reg'
111 modelinfo['logfile'] = 'csmodelinfo_py1.log' 108 modelinfo['logfile'] = 'csmodelinfo_py1.log'
112 modelinfo['chatter'] = 2 109 modelinfo['chatter'] = 2
@@ -121,7 +118,7 @@ class Test(test): @@ -121,7 +118,7 @@ class Test(test):
121 118
122 # Set-up csmodelinfo 119 # Set-up csmodelinfo
123 modelinfo = cscripts.csmodelinfo() 120 modelinfo = cscripts.csmodelinfo()
124 - modelinfo['inmodel'] = self._model_name 121 + modelinfo['inmodel'] = self._model
125 modelinfo['ds9file'] = 'csmodelinfo_py2.reg' 122 modelinfo['ds9file'] = 'csmodelinfo_py2.reg'
126 modelinfo['logfile'] = 'csmodelinfo_py2.log' 123 modelinfo['logfile'] = 'csmodelinfo_py2.log'
127 modelinfo['chatter'] = 3 124 modelinfo['chatter'] = 3
test/test_csmodelmerge.py
@@ -42,6 +42,12 @@ class Test(test): @@ -42,6 +42,12 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set members
  46 + self._model1 = self._datadir + '/crab.xml'
  47 + self._model2 = self._datadir + '/model_cube_background.xml'
  48 + self._model3 = self._datadir + '/model_cube_background*.xml'
  49 + self._model4 = '@' + self._datadir + '/models.txt'
  50 +
45 # Return 51 # Return
46 return 52 return
47 53
@@ -69,8 +75,8 @@ class Test(test): @@ -69,8 +75,8 @@ class Test(test):
69 csmodelmerge = self._script('csmodelmerge') 75 csmodelmerge = self._script('csmodelmerge')
70 76
71 # Setup csmodelmerge command 77 # Setup csmodelmerge command
72 - cmd = csmodelmerge+' inmodels="data/crab.xml data/model_cube_background.xml"'+ \  
73 - ' outmodel="mergedmodel_cmd1.xml"'+ \ 78 + cmd = csmodelmerge+' inmodels="'+self._model1+' '+self._model2+'"'+ \
  79 + ' outmodel="csmodelmerge_cmd1.xml"'+ \
74 ' logfile="csmodelmerge_cmd1.log" chatter=1' 80 ' logfile="csmodelmerge_cmd1.log" chatter=1'
75 81
76 # Check if execution of wrong command fails 82 # Check if execution of wrong command fails
@@ -82,11 +88,11 @@ class Test(test): @@ -82,11 +88,11 @@ class Test(test):
82 'Check successful execution from command line') 88 'Check successful execution from command line')
83 89
84 # Check model file 90 # Check model file
85 - self._check_model_file('mergedmodel_cmd1.xml', 3) 91 + self._check_model_file('csmodelmerge_cmd1.xml', 3)
86 92
87 # Setup csmodelmerge command 93 # Setup csmodelmerge command
88 cmd = csmodelmerge+' inmodels="model_that_does_not_exist.xml"'+ \ 94 cmd = csmodelmerge+' inmodels="model_that_does_not_exist.xml"'+ \
89 - ' outmodel="mergedmodel_cmd2.xml"'+ \ 95 + ' outmodel="csmodelmerge_cmd2.xml"'+ \
90 ' logfile="csmodelmerge_cmd2.log"' 96 ' logfile="csmodelmerge_cmd2.log"'
91 97
92 # Check if execution failed 98 # Check if execution failed
@@ -103,8 +109,8 @@ class Test(test): @@ -103,8 +109,8 @@ class Test(test):
103 """ 109 """
104 # Set-up csmodelmerge for space-separated input 110 # Set-up csmodelmerge for space-separated input
105 modelmerge = cscripts.csmodelmerge() 111 modelmerge = cscripts.csmodelmerge()
106 - modelmerge['inmodels'] = 'data/crab.xml data/model_cube_background.xml'  
107 - modelmerge['outmodel'] = 'mergedmodel_py1.xml' 112 + modelmerge['inmodels'] = self._model1+' '+self._model2
  113 + modelmerge['outmodel'] = 'csmodelmerge_py1.xml'
108 modelmerge['logfile'] = 'csmodelmerge_py1.log' 114 modelmerge['logfile'] = 'csmodelmerge_py1.log'
109 modelmerge['chatter'] = 2 115 modelmerge['chatter'] = 2
110 116
@@ -114,12 +120,12 @@ class Test(test): @@ -114,12 +120,12 @@ class Test(test):
114 modelmerge.save() 120 modelmerge.save()
115 121
116 # Check model file 122 # Check model file
117 - self._check_model_file('mergedmodel_py1.xml', 3) 123 + self._check_model_file('csmodelmerge_py1.xml', 3)
118 124
119 # Set-up csmodelmerge for semi-colon separated input 125 # Set-up csmodelmerge for semi-colon separated input
120 modelmerge = cscripts.csmodelmerge() 126 modelmerge = cscripts.csmodelmerge()
121 - modelmerge['inmodels'] = 'data/crab.xml;data/model_cube_background.xml'  
122 - modelmerge['outmodel'] = 'mergedmodel_py2.xml' 127 + modelmerge['inmodels'] = self._model1+';'+self._model2
  128 + modelmerge['outmodel'] = 'csmodelmerge_py2.xml'
123 modelmerge['logfile'] = 'csmodelmerge_py2.log' 129 modelmerge['logfile'] = 'csmodelmerge_py2.log'
124 modelmerge['chatter'] = 3 130 modelmerge['chatter'] = 3
125 131
@@ -127,12 +133,12 @@ class Test(test): @@ -127,12 +133,12 @@ class Test(test):
127 modelmerge.execute() 133 modelmerge.execute()
128 134
129 # Check model file 135 # Check model file
130 - self._check_model_file('mergedmodel_py2.xml', 3) 136 + self._check_model_file('csmodelmerge_py2.xml', 3)
131 137
132 # Set-up csmodelmerge for wildcard input 138 # Set-up csmodelmerge for wildcard input
133 modelmerge = cscripts.csmodelmerge() 139 modelmerge = cscripts.csmodelmerge()
134 - modelmerge['inmodels'] = 'data/model_cube_background*.xml'  
135 - modelmerge['outmodel'] = 'mergedmodel_py3.xml' 140 + modelmerge['inmodels'] = self._model3
  141 + modelmerge['outmodel'] = 'csmodelmerge_py3.xml'
136 modelmerge['logfile'] = 'csmodelmerge_py3.log' 142 modelmerge['logfile'] = 'csmodelmerge_py3.log'
137 modelmerge['chatter'] = 4 143 modelmerge['chatter'] = 4
138 144
@@ -140,12 +146,12 @@ class Test(test): @@ -140,12 +146,12 @@ class Test(test):
140 modelmerge.execute() 146 modelmerge.execute()
141 147
142 # Check model file 148 # Check model file
143 - self._check_model_file('mergedmodel_py3.xml', 2) 149 + self._check_model_file('csmodelmerge_py3.xml', 2)
144 150
145 # Set-up csmodelmerge for ASCII file 151 # Set-up csmodelmerge for ASCII file
146 modelmerge = cscripts.csmodelmerge() 152 modelmerge = cscripts.csmodelmerge()
147 - modelmerge['inmodels'] = '@data/models.txt'  
148 - modelmerge['outmodel'] = 'mergedmodel_py4.xml' 153 + modelmerge['inmodels'] = self._model4
  154 + modelmerge['outmodel'] = 'csmodelmerge_py4.xml'
149 modelmerge['logfile'] = 'csmodelmerge_py4.log' 155 modelmerge['logfile'] = 'csmodelmerge_py4.log'
150 modelmerge['chatter'] = 4 156 modelmerge['chatter'] = 4
151 157
@@ -153,7 +159,7 @@ class Test(test): @@ -153,7 +159,7 @@ class Test(test):
153 modelmerge.execute() 159 modelmerge.execute()
154 160
155 # Check model file 161 # Check model file
156 - self._check_model_file('mergedmodel_py4.xml', 2) 162 + self._check_model_file('csmodelmerge_py4.xml', 2)
157 163
158 # Return 164 # Return
159 return 165 return
test/test_csobs2caldb.py
@@ -44,7 +44,7 @@ class Test(test): @@ -44,7 +44,7 @@ class Test(test):
44 test.__init__(self) 44 test.__init__(self)
45 45
46 # Set members 46 # Set members
47 - self._inobs = 'data/obs_unbinned.xml' 47 + self._inobs = self._datadir + '/obs_unbinned.xml'
48 48
49 # Clean calibration database 49 # Clean calibration database
50 os.system('rm -rf caldb >/dev/null 2>&1') 50 os.system('rm -rf caldb >/dev/null 2>&1')
test/test_csobsdef.py
@@ -42,6 +42,9 @@ class Test(test): @@ -42,6 +42,9 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set members
  46 + self._pntdef = self._datadir + '/pntdef.dat'
  47 +
45 # Return 48 # Return
46 return 49 return
47 50
@@ -69,9 +72,9 @@ class Test(test): @@ -69,9 +72,9 @@ class Test(test):
69 csobsdef = self._script('csobsdef') 72 csobsdef = self._script('csobsdef')
70 73
71 # Setup csobsdef command 74 # Setup csobsdef command
72 - cmd = csobsdef+' inpnt="data/pntdef.dat"'+ \ 75 + cmd = csobsdef+' inpnt="'+self._pntdef+'"'+ \
73 ' outobs="csobsdef_cmd1.xml"'+ \ 76 ' outobs="csobsdef_cmd1.xml"'+ \
74 - ' caldb="prod2" irf="South_0.5h"'+ \ 77 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
75 ' emin=0.1 emax=100.0 duration=1800.0 rad=5.0'+ \ 78 ' emin=0.1 emax=100.0 duration=1800.0 rad=5.0'+ \
76 ' logfile="csobsdef_cmd1.log" chatter=1' 79 ' logfile="csobsdef_cmd1.log" chatter=1'
77 80
@@ -89,7 +92,7 @@ class Test(test): @@ -89,7 +92,7 @@ class Test(test):
89 # Setup csobsdef command 92 # Setup csobsdef command
90 cmd = csobsdef+' inpnt="obs_definition_that_does_not_exist.dat"'+ \ 93 cmd = csobsdef+' inpnt="obs_definition_that_does_not_exist.dat"'+ \
91 ' outobs="csobsdef_cmd1.xml"'+ \ 94 ' outobs="csobsdef_cmd1.xml"'+ \
92 - ' caldb="prod2" irf="South_0.5h"'+ \ 95 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
93 ' emin=0.1 emax=100.0 duration=1800.0 rad=5.0'+ \ 96 ' emin=0.1 emax=100.0 duration=1800.0 rad=5.0'+ \
94 ' logfile="csobsdef_cmd2.log"' 97 ' logfile="csobsdef_cmd2.log"'
95 98
@@ -107,10 +110,10 @@ class Test(test): @@ -107,10 +110,10 @@ class Test(test):
107 """ 110 """
108 # Set-up csobsdef 111 # Set-up csobsdef
109 obsdef = cscripts.csobsdef() 112 obsdef = cscripts.csobsdef()
110 - obsdef['inpnt'] = 'data/pntdef.dat' 113 + obsdef['inpnt'] = self._pntdef
111 obsdef['outobs'] = 'csobsdef_py1.xml' 114 obsdef['outobs'] = 'csobsdef_py1.xml'
112 - obsdef['caldb'] = 'prod2'  
113 - obsdef['irf'] = 'South_0.5h' 115 + obsdef['caldb'] = self._caldb
  116 + obsdef['irf'] = self._irf
114 obsdef['emin'] = 0.1 117 obsdef['emin'] = 0.1
115 obsdef['emax'] = 100.0 118 obsdef['emax'] = 100.0
116 obsdef['duration'] = 1800.0 119 obsdef['duration'] = 1800.0
@@ -128,10 +131,10 @@ class Test(test): @@ -128,10 +131,10 @@ class Test(test):
128 131
129 # Set-up csobsdef 132 # Set-up csobsdef
130 obsdef = cscripts.csobsdef() 133 obsdef = cscripts.csobsdef()
131 - obsdef['inpnt'] = 'data/pntdef.dat' 134 + obsdef['inpnt'] = self._pntdef
132 obsdef['outobs'] = 'csobsdef_py2.xml' 135 obsdef['outobs'] = 'csobsdef_py2.xml'
133 - obsdef['caldb'] = 'prod2'  
134 - obsdef['irf'] = 'South_0.5h' 136 + obsdef['caldb'] = self._caldb
  137 + obsdef['irf'] = self._irf
135 obsdef['emin'] = 0.1 138 obsdef['emin'] = 0.1
136 obsdef['emax'] = 100.0 139 obsdef['emax'] = 100.0
137 obsdef['duration'] = 1800.0 140 obsdef['duration'] = 1800.0
@@ -146,14 +149,14 @@ class Test(test): @@ -146,14 +149,14 @@ class Test(test):
146 self._check_obsdef_file('csobsdef_py2.xml') 149 self._check_obsdef_file('csobsdef_py2.xml')
147 150
148 # Load CSV table 151 # Load CSV table
149 - csv = gammalib.GCsv('data/pntdef.dat', ',') 152 + csv = gammalib.GCsv(self._pntdef, ',')
150 153
151 # Set-up csobsdef 154 # Set-up csobsdef
152 obsdef = cscripts.csobsdef() 155 obsdef = cscripts.csobsdef()
153 obsdef.pntdef(csv) 156 obsdef.pntdef(csv)
154 obsdef['outobs'] = 'csobsdef_py3.xml' 157 obsdef['outobs'] = 'csobsdef_py3.xml'
155 - obsdef['caldb'] = 'prod2'  
156 - obsdef['irf'] = 'South_0.5h' 158 + obsdef['caldb'] = self._caldb
  159 + obsdef['irf'] = self._irf
157 obsdef['emin'] = 0.1 160 obsdef['emin'] = 0.1
158 obsdef['emax'] = 100.0 161 obsdef['emax'] = 100.0
159 obsdef['duration'] = 1800.0 162 obsdef['duration'] = 1800.0
test/test_csobsinfo.py
@@ -42,6 +42,9 @@ class Test(test): @@ -42,6 +42,9 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set members
  46 + self._inobs = self._datadir + '/obs_unbinned.xml'
  47 +
45 # Return 48 # Return
46 return 49 return
47 50
@@ -69,7 +72,7 @@ class Test(test): @@ -69,7 +72,7 @@ class Test(test):
69 csobsinfo = self._script('csobsinfo') 72 csobsinfo = self._script('csobsinfo')
70 73
71 # Setup csobsinfo command 74 # Setup csobsinfo command
72 - cmd = csobsinfo+' inobs="data/obs_unbinned.xml"'+ \ 75 + cmd = csobsinfo+' inobs="'+self._inobs+'"'+ \
73 ' ds9file="csobsinfo_cmd1.reg"'+ \ 76 ' ds9file="csobsinfo_cmd1.reg"'+ \
74 ' offset=yes ra=83.63 dec=22.01'+ \ 77 ' offset=yes ra=83.63 dec=22.01'+ \
75 ' logfile="csobsinfo_cmd1.log" chatter=1' 78 ' logfile="csobsinfo_cmd1.log" chatter=1'
@@ -105,7 +108,7 @@ class Test(test): @@ -105,7 +108,7 @@ class Test(test):
105 """ 108 """
106 # Set-up csobsinfo 109 # Set-up csobsinfo
107 obsinfo = cscripts.csobsinfo() 110 obsinfo = cscripts.csobsinfo()
108 - obsinfo['inobs'] = 'data/obs_unbinned.xml' 111 + obsinfo['inobs'] = self._inobs
109 obsinfo['ds9file'] = 'csobsinfo_py1.reg' 112 obsinfo['ds9file'] = 'csobsinfo_py1.reg'
110 obsinfo['offset'] = True 113 obsinfo['offset'] = True
111 obsinfo['ra'] = 83.63 114 obsinfo['ra'] = 83.63
@@ -123,7 +126,7 @@ class Test(test): @@ -123,7 +126,7 @@ class Test(test):
123 126
124 # Set-up csobsinfo 127 # Set-up csobsinfo
125 obsinfo = cscripts.csobsinfo() 128 obsinfo = cscripts.csobsinfo()
126 - obsinfo['inobs'] = 'data/obs_unbinned.xml' 129 + obsinfo['inobs'] = self._inobs
127 obsinfo['ds9file'] = 'csobsinfo_py2.reg' 130 obsinfo['ds9file'] = 'csobsinfo_py2.reg'
128 obsinfo['offset'] = True 131 obsinfo['offset'] = True
129 obsinfo['ra'] = 83.63 132 obsinfo['ra'] = 83.63
test/test_cspull.py
@@ -42,6 +42,10 @@ class Test(test): @@ -42,6 +42,10 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set members
  46 + self._inobs = self._datadir + '/obs_stacked.xml'
  47 + self._stacked_model = self._datadir + '/crab_bkgcube.xml'
  48 +
45 # Return 49 # Return
46 return 50 return
47 51
@@ -69,9 +73,10 @@ class Test(test): @@ -69,9 +73,10 @@ class Test(test):
69 cspull = self._script('cspull') 73 cspull = self._script('cspull')
70 74
71 # Setup cspull command 75 # Setup cspull command
72 - cmd = cspull+' inmodel="data/crab.xml"'+ \ 76 + cmd = cspull+' inmodel="'+self._model+'"'+ \
73 ' outfile="cspull_cmd1.dat"'+ \ 77 ' outfile="cspull_cmd1.dat"'+ \
74 - ' ntrials=3 caldb="prod2" irf="South_0.5h"'+ \ 78 + ' ntrials=3'+ \
  79 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
75 ' ra=83.6331 dec=22.0145 emin=0.1 emax=100.0'+ \ 80 ' ra=83.6331 dec=22.0145 emin=0.1 emax=100.0'+ \
76 ' enumbins=0 tmax=1800.0 deadc=0.95 rad=5.0'+ \ 81 ' enumbins=0 tmax=1800.0 deadc=0.95 rad=5.0'+ \
77 ' npix=200 binsz=0.05'+ \ 82 ' npix=200 binsz=0.05'+ \
@@ -91,7 +96,8 @@ class Test(test): @@ -91,7 +96,8 @@ class Test(test):
91 # Setup cspull command 96 # Setup cspull command
92 cmd = cspull+' inmodel="model_that_does_not_exist.xml"'+ \ 97 cmd = cspull+' inmodel="model_that_does_not_exist.xml"'+ \
93 ' outfile="cspull_cmd1.dat"'+ \ 98 ' outfile="cspull_cmd1.dat"'+ \
94 - ' ntrials=3 caldb="prod2" irf="South_0.5h"'+ \ 99 + ' ntrials=3'+ \
  100 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
95 ' ra=83.6331 dec=22.0145 emin=0.1 emax=100.0'+ \ 101 ' ra=83.6331 dec=22.0145 emin=0.1 emax=100.0'+ \
96 ' enumbins=0 tmax=1800.0 deadc=0.95 rad=5.0'+ \ 102 ' enumbins=0 tmax=1800.0 deadc=0.95 rad=5.0'+ \
97 ' npix=200 binsz=0.05'+ \ 103 ' npix=200 binsz=0.05'+ \
@@ -111,11 +117,11 @@ class Test(test): @@ -111,11 +117,11 @@ class Test(test):
111 """ 117 """
112 # Set-up unbinned cspull 118 # Set-up unbinned cspull
113 pull = cscripts.cspull() 119 pull = cscripts.cspull()
114 - pull['inmodel'] = 'data/crab.xml' 120 + pull['inmodel'] = self._model
115 pull['outfile'] = 'cspull_py1.dat' 121 pull['outfile'] = 'cspull_py1.dat'
116 pull['ntrials'] = 3 122 pull['ntrials'] = 3
117 - pull['caldb'] = 'prod2'  
118 - pull['irf'] = 'South_0.5h' 123 + pull['caldb'] = self._caldb
  124 + pull['irf'] = self._irf
119 pull['ra'] = 83.6331 125 pull['ra'] = 83.6331
120 pull['dec'] = 22.0145 126 pull['dec'] = 22.0145
121 pull['emin'] = 0.1 127 pull['emin'] = 0.1
@@ -137,11 +143,11 @@ class Test(test): @@ -137,11 +143,11 @@ class Test(test):
137 143
138 # Set-up binned cspull 144 # Set-up binned cspull
139 pull = cscripts.cspull() 145 pull = cscripts.cspull()
140 - pull['inmodel'] = 'data/crab.xml' 146 + pull['inmodel'] = self._model
141 pull['outfile'] = 'cspull_py2.dat' 147 pull['outfile'] = 'cspull_py2.dat'
142 pull['ntrials'] = 3 148 pull['ntrials'] = 3
143 - pull['caldb'] = 'prod2'  
144 - pull['irf'] = 'South_0.5h' 149 + pull['caldb'] = self._caldb
  150 + pull['irf'] = self._irf
145 pull['ra'] = 83.6331 151 pull['ra'] = 83.6331
146 pull['dec'] = 22.0145 152 pull['dec'] = 22.0145
147 pull['emin'] = 0.1 153 pull['emin'] = 0.1
@@ -165,12 +171,12 @@ class Test(test): @@ -165,12 +171,12 @@ class Test(test):
165 171
166 # Set-up cspull from event list 172 # Set-up cspull from event list
167 pull = cscripts.cspull() 173 pull = cscripts.cspull()
168 - pull['inobs'] = 'data/crab_events.fits'  
169 - pull['inmodel'] = 'data/crab.xml' 174 + pull['inobs'] = self._events
  175 + pull['inmodel'] = self._model
170 pull['outfile'] = 'cspull_py3.dat' 176 pull['outfile'] = 'cspull_py3.dat'
171 pull['ntrials'] = 3 177 pull['ntrials'] = 3
172 - pull['caldb'] = 'prod2'  
173 - pull['irf'] = 'South_0.5h' 178 + pull['caldb'] = self._caldb
  179 + pull['irf'] = self._irf
174 pull['enumbins'] = 0 180 pull['enumbins'] = 0
175 pull['logfile'] = 'cspull_py3.log' 181 pull['logfile'] = 'cspull_py3.log'
176 pull['chatter'] = 4 182 pull['chatter'] = 4
@@ -182,17 +188,17 @@ class Test(test): @@ -182,17 +188,17 @@ class Test(test):
182 self._check_pull_file('cspull_py3.dat') 188 self._check_pull_file('cspull_py3.dat')
183 189
184 # Build observation container with unbinned observation 190 # Build observation container with unbinned observation
185 - cta = gammalib.GCTAObservation('data/crab_events.fits') 191 + cta = gammalib.GCTAObservation(self._events)
186 obs = gammalib.GObservations() 192 obs = gammalib.GObservations()
187 obs.append(cta) 193 obs.append(cta)
188 194
189 # Set-up cspull from observation container with unbinned observation 195 # Set-up cspull from observation container with unbinned observation
190 pull = cscripts.cspull(obs) 196 pull = cscripts.cspull(obs)
191 - pull['inmodel'] = 'data/crab.xml' 197 + pull['inmodel'] = self._model
192 pull['outfile'] = 'cspull_py4.dat' 198 pull['outfile'] = 'cspull_py4.dat'
193 pull['ntrials'] = 3 199 pull['ntrials'] = 3
194 - pull['caldb'] = 'prod2'  
195 - pull['irf'] = 'South_0.5h' 200 + pull['caldb'] = self._caldb
  201 + pull['irf'] = self._irf
196 pull['enumbins'] = 0 202 pull['enumbins'] = 0
197 pull['logfile'] = 'cspull_py4.log' 203 pull['logfile'] = 'cspull_py4.log'
198 pull['chatter'] = 4 204 pull['chatter'] = 4
@@ -205,12 +211,12 @@ class Test(test): @@ -205,12 +211,12 @@ class Test(test):
205 211
206 # Set-up stacked cspull 212 # Set-up stacked cspull
207 pull = cscripts.cspull() 213 pull = cscripts.cspull()
208 - pull['inobs'] = 'data/obs_stacked.xml'  
209 - pull['inmodel'] = 'data/crab_bkgcube.xml' 214 + pull['inobs'] = self._inobs
  215 + pull['inmodel'] = self._stacked_model
210 pull['outfile'] = 'cspull_py5.dat' 216 pull['outfile'] = 'cspull_py5.dat'
211 pull['ntrials'] = 3 217 pull['ntrials'] = 3
212 - pull['caldb'] = 'prod2'  
213 - pull['irf'] = 'South_0.5h' 218 + pull['caldb'] = self._caldb
  219 + pull['irf'] = self._irf
214 pull['enumbins'] = 0 220 pull['enumbins'] = 0
215 pull['logfile'] = 'cspull_py5.log' 221 pull['logfile'] = 'cspull_py5.log'
216 pull['chatter'] = 4 222 pull['chatter'] = 4
test/test_csresmap.py
@@ -69,10 +69,10 @@ class Test(test): @@ -69,10 +69,10 @@ class Test(test):
69 csresmap = self._script('csresmap') 69 csresmap = self._script('csresmap')
70 70
71 # Setup csresmap command 71 # Setup csresmap command
72 - cmd = csresmap+' inobs="data/crab_events.fits"'+ \ 72 + cmd = csresmap+' inobs="'+self._events+'"'+ \
73 ' outmap="csresmap_cmd1.fits"'+ \ 73 ' outmap="csresmap_cmd1.fits"'+ \
74 - ' inmodel="data/crab.xml"'+ \  
75 - ' caldb="prod2" irf="South_0.5h"' + \ 74 + ' inmodel="'+self._model+'"'+ \
  75 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
76 ' emin=0.1 emax=100.0 enumbins=20'+ \ 76 ' emin=0.1 emax=100.0 enumbins=20'+ \
77 ' nxpix=50 nypix=50 binsz=0.02'+ \ 77 ' nxpix=50 nypix=50 binsz=0.02'+ \
78 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 78 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -93,8 +93,8 @@ class Test(test): @@ -93,8 +93,8 @@ class Test(test):
93 # Setup csresmap command 93 # Setup csresmap command
94 cmd = csresmap+' inobs="event_file_that_does_not_exist.fits"'+ \ 94 cmd = csresmap+' inobs="event_file_that_does_not_exist.fits"'+ \
95 ' outmap="csresmap_cmd1.fits"'+ \ 95 ' outmap="csresmap_cmd1.fits"'+ \
96 - ' inmodel="data/crab.xml"'+ \  
97 - ' caldb="prod2" irf="South_0.5h"' + \ 96 + ' inmodel="'+self._model+'"'+ \
  97 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
98 ' emin=0.1 emax=100.0 enumbins=20'+ \ 98 ' emin=0.1 emax=100.0 enumbins=20'+ \
99 ' nxpix=50 nypix=50 binsz=0.02'+ \ 99 ' nxpix=50 nypix=50 binsz=0.02'+ \
100 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 100 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -115,11 +115,11 @@ class Test(test): @@ -115,11 +115,11 @@ class Test(test):
115 """ 115 """
116 # Set-up csresmap for event list 116 # Set-up csresmap for event list
117 resmap = cscripts.csresmap() 117 resmap = cscripts.csresmap()
118 - resmap['inobs'] = 'data/crab_events.fits' 118 + resmap['inobs'] = self._events
119 resmap['outmap'] = 'csresmap_py1.fits' 119 resmap['outmap'] = 'csresmap_py1.fits'
120 - resmap['inmodel'] = 'data/crab.xml'  
121 - resmap['caldb'] = 'prod2'  
122 - resmap['irf'] = 'South_0.5h' 120 + resmap['inmodel'] = self._model
  121 + resmap['caldb'] = self._caldb
  122 + resmap['irf'] = self._irf
123 resmap['emin'] = 0.1 123 resmap['emin'] = 0.1
124 resmap['emax'] = 100.0 124 resmap['emax'] = 100.0
125 resmap['enumbins'] = 20 125 resmap['enumbins'] = 20
@@ -144,15 +144,15 @@ class Test(test): @@ -144,15 +144,15 @@ class Test(test):
144 144
145 # Set-up csresmap for counts cube 145 # Set-up csresmap for counts cube
146 resmap = cscripts.csresmap() 146 resmap = cscripts.csresmap()
147 - resmap['inobs'] = 'data/crab_cntmap.fits' 147 + resmap['inobs'] = self._cntcube
148 resmap['modcube'] = 'NONE' 148 resmap['modcube'] = 'NONE'
149 resmap['expcube'] = 'NONE' 149 resmap['expcube'] = 'NONE'
150 resmap['psfcube'] = 'NONE' 150 resmap['psfcube'] = 'NONE'
151 resmap['edispcube'] = 'NONE' 151 resmap['edispcube'] = 'NONE'
152 resmap['bkgcube'] = 'NONE' 152 resmap['bkgcube'] = 'NONE'
153 - resmap['caldb'] = 'prod2'  
154 - resmap['irf'] = 'South_0.5h'  
155 - resmap['inmodel'] = 'data/crab.xml' 153 + resmap['caldb'] = self._caldb
  154 + resmap['irf'] = self._irf
  155 + resmap['inmodel'] = self._model
156 resmap['outmap'] = 'csresmap_py2.fits' 156 resmap['outmap'] = 'csresmap_py2.fits'
157 resmap['algorithm'] = 'SUBDIV' 157 resmap['algorithm'] = 'SUBDIV'
158 resmap['logfile'] = 'csresmap_py2.log' 158 resmap['logfile'] = 'csresmap_py2.log'
test/test_csroot2caldb.py
@@ -38,11 +38,14 @@ class Test(test): @@ -38,11 +38,14 @@ class Test(test):
38 # Constructor 38 # Constructor
39 def __init__(self): 39 def __init__(self):
40 """ 40 """
41 - Constructor. 41 + Constructor
42 """ 42 """
43 # Call base class constructor 43 # Call base class constructor
44 test.__init__(self) 44 test.__init__(self)
45 45
  46 + # Set members
  47 + self._infile = self._datadir + '/irf.root'
  48 +
46 # Clean calibration database 49 # Clean calibration database
47 os.system('rm -rf csroot2caldb_* >/dev/null 2>&1') 50 os.system('rm -rf csroot2caldb_* >/dev/null 2>&1')
48 51
@@ -73,7 +76,7 @@ class Test(test): @@ -73,7 +76,7 @@ class Test(test):
73 csroot2caldb = self._script('csroot2caldb') 76 csroot2caldb = self._script('csroot2caldb')
74 77
75 # Setup csroot2caldb command 78 # Setup csroot2caldb command
76 - cmd = csroot2caldb+' infile="data/irf.root"'+ \ 79 + cmd = csroot2caldb+' infile="'+self._infile+'"'+ \
77 ' outdir="csroot2caldb_cmd1"'+ \ 80 ' outdir="csroot2caldb_cmd1"'+ \
78 ' inst=prod3 id=South_50h version=prod3'+ \ 81 ' inst=prod3 id=South_50h version=prod3'+ \
79 ' analysis=DESY'+ \ 82 ' analysis=DESY'+ \
@@ -97,7 +100,7 @@ class Test(test): @@ -97,7 +100,7 @@ class Test(test):
97 """ 100 """
98 # Set-up csroot2caldb 101 # Set-up csroot2caldb
99 caldb = cscripts.csroot2caldb() 102 caldb = cscripts.csroot2caldb()
100 - caldb['infile'] = 'data/irf.root' 103 + caldb['infile'] = self._infile
101 caldb['outdir'] = 'csroot2caldb_py1' 104 caldb['outdir'] = 'csroot2caldb_py1'
102 caldb['inst'] = 'prod3' 105 caldb['inst'] = 'prod3'
103 caldb['id'] = 'South_50h' 106 caldb['id'] = 'South_50h'
test/test_cssens.py
@@ -69,8 +69,9 @@ class Test(test): @@ -69,8 +69,9 @@ class Test(test):
69 cssens = self._script('cssens') 69 cssens = self._script('cssens')
70 70
71 # Setup cssens command 71 # Setup cssens command
72 - cmd = cssens+' inmodel="data/crab.xml"'+ \  
73 - ' srcname="Crab" caldb="prod2" irf="South_0.5h"' + \ 72 + cmd = cssens+' inmodel="'+self._model+'"'+ \
  73 + ' srcname="Crab"'+ \
  74 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
74 ' duration=1800.0 rad=3.0 emin=1.0 emax=10.0 bins=1'+ \ 75 ' duration=1800.0 rad=3.0 emin=1.0 emax=10.0 bins=1'+ \
75 ' outfile="cssens_cmd1.dat"'+ \ 76 ' outfile="cssens_cmd1.dat"'+ \
76 ' logfile="cssens_cmd1.log" chatter=1' 77 ' logfile="cssens_cmd1.log" chatter=1'
@@ -88,7 +89,8 @@ class Test(test): @@ -88,7 +89,8 @@ class Test(test):
88 89
89 # Setup cssens command 90 # Setup cssens command
90 cmd = cssens+' inmodel="model_that_does_not_exist.xml"'+ \ 91 cmd = cssens+' inmodel="model_that_does_not_exist.xml"'+ \
91 - ' srcname="Crab" caldb="prod2" irf="South_0.5h"' + \ 92 + ' srcname="Crab"'+ \
  93 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
92 ' duration=1800.0 rad=3.0 emin=1.0 emax=10.0 bins=1'+ \ 94 ' duration=1800.0 rad=3.0 emin=1.0 emax=10.0 bins=1'+ \
93 ' outfile="cssens_cmd2.dat"'+ \ 95 ' outfile="cssens_cmd2.dat"'+ \
94 ' logfile="cssens_cmd2.log" chatter=2' 96 ' logfile="cssens_cmd2.log" chatter=2'
@@ -108,10 +110,10 @@ class Test(test): @@ -108,10 +110,10 @@ class Test(test):
108 # Set-up cssens 110 # Set-up cssens
109 sens = cscripts.cssens() 111 sens = cscripts.cssens()
110 sens['inobs'] = 'NONE' 112 sens['inobs'] = 'NONE'
111 - sens['inmodel'] = 'data/crab.xml' 113 + sens['inmodel'] = self._model
112 sens['srcname'] = 'Crab' 114 sens['srcname'] = 'Crab'
113 - sens['caldb'] = 'prod2'  
114 - sens['irf'] = 'South_0.5h' 115 + sens['caldb'] = self._caldb
  116 + sens['irf'] = self._irf
115 sens['outfile'] = 'cssens_py1.dat' 117 sens['outfile'] = 'cssens_py1.dat'
116 sens['duration'] = 1800.0 118 sens['duration'] = 1800.0
117 sens['rad'] = 3.0 119 sens['rad'] = 3.0
@@ -141,8 +143,10 @@ class Test(test): @@ -141,8 +143,10 @@ class Test(test):
141 results = gammalib.GCsv(filename, ',') 143 results = gammalib.GCsv(filename, ',')
142 144
143 # Check dimensions 145 # Check dimensions
144 - self.test_value(results.nrows(), 2, 'Check for 2 rows in sensitivity file')  
145 - self.test_value(results.ncols(), 7, 'Check for 7 columns in sensitivity file') 146 + self.test_value(results.nrows(), 2,
  147 + 'Check for 2 rows in sensitivity file')
  148 + self.test_value(results.ncols(), 7,
  149 + 'Check for 7 columns in sensitivity file')
146 150
147 # Return 151 # Return
148 return 152 return
test/test_csspec.py
@@ -42,6 +42,13 @@ class Test(test): @@ -42,6 +42,13 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set members
  46 + self._inobs = self._datadir + '/crab_cntmap_small.fits'
  47 + self._expcube = self._datadir + '/crab_expcube.fits'
  48 + self._psfcube = self._datadir + '/crab_psfcube.fits'
  49 + self._edispcube = self._datadir + '/crab_edispcube.fits'
  50 + self._bkgcube = self._datadir + '/crab_bkgcube.fits'
  51 +
45 # Return 52 # Return
46 return 53 return
47 54
@@ -69,9 +76,10 @@ class Test(test): @@ -69,9 +76,10 @@ class Test(test):
69 csspec = self._script('csspec') 76 csspec = self._script('csspec')
70 77
71 # Setup csspec command 78 # Setup csspec command
72 - cmd = csspec+' inobs="data/crab_events.fits"'+ \  
73 - ' inmodel="data/crab.xml"'+ \  
74 - ' srcname="Crab" caldb="prod2" irf="South_0.5h"' + \ 79 + cmd = csspec+' inobs="'+self._events+'"'+ \
  80 + ' inmodel="'+self._model+'"'+ \
  81 + ' srcname="Crab"'+ \
  82 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
75 ' ebinalg="LOG" enumbins=5 emin=0.1 emax=100.0'+ \ 83 ' ebinalg="LOG" enumbins=5 emin=0.1 emax=100.0'+ \
76 ' outfile="csspec_cmd1.fits"'+ \ 84 ' outfile="csspec_cmd1.fits"'+ \
77 ' logfile="csspec_cmd1.log" chatter=1' 85 ' logfile="csspec_cmd1.log" chatter=1'
@@ -89,8 +97,9 @@ class Test(test): @@ -89,8 +97,9 @@ class Test(test):
89 97
90 # Setup csspec command 98 # Setup csspec command
91 cmd = csspec+' inobs="input_file_that_does_not_exist.fits"'+ \ 99 cmd = csspec+' inobs="input_file_that_does_not_exist.fits"'+ \
92 - ' inmodel="data/crab.xml"'+ \  
93 - ' srcname="Crab" caldb="prod2" irf="South_0.5h"' + \ 100 + ' inmodel="'+self._model+'"'+ \
  101 + ' srcname="Crab"'+ \
  102 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
94 ' ebinalg="LOG" enumbins=5 emin=0.1 emax=100.0'+ \ 103 ' ebinalg="LOG" enumbins=5 emin=0.1 emax=100.0'+ \
95 ' outfile="csspec_cmd2.fits"'+ \ 104 ' outfile="csspec_cmd2.fits"'+ \
96 ' logfile="csspec_cmd2.log" chatter=1' 105 ' logfile="csspec_cmd2.log" chatter=1'
@@ -109,11 +118,11 @@ class Test(test): @@ -109,11 +118,11 @@ class Test(test):
109 """ 118 """
110 # Set-up unbinned csspec 119 # Set-up unbinned csspec
111 spec = cscripts.csspec() 120 spec = cscripts.csspec()
112 - spec['inobs'] = 'data/crab_events.fits'  
113 - spec['inmodel'] = 'data/crab.xml' 121 + spec['inobs'] = self._events
  122 + spec['inmodel'] = self._model
114 spec['srcname'] = 'Crab' 123 spec['srcname'] = 'Crab'
115 - spec['caldb'] = 'prod2'  
116 - spec['irf'] = 'South_0.5h' 124 + spec['caldb'] = self._caldb
  125 + spec['irf'] = self._irf
117 spec['outfile'] = 'csspec_py1.fits' 126 spec['outfile'] = 'csspec_py1.fits'
118 spec['ebinalg'] = 'LOG' 127 spec['ebinalg'] = 'LOG'
119 spec['enumbins'] = 5 128 spec['enumbins'] = 5
@@ -132,12 +141,12 @@ class Test(test): @@ -132,12 +141,12 @@ class Test(test):
132 141
133 # Set-up binned csspec 142 # Set-up binned csspec
134 spec = cscripts.csspec() 143 spec = cscripts.csspec()
135 - spec['inobs'] = 'data/crab_cntmap_small.fits'  
136 - spec['expcube'] = 'data/crab_expcube.fits'  
137 - spec['psfcube'] = 'data/crab_psfcube.fits'  
138 - spec['edispcube'] = 'data/crab_edispcube.fits'  
139 - spec['bkgcube'] = 'data/crab_bkgcube.fits'  
140 - spec['inmodel'] = 'data/crab.xml' 144 + spec['inobs'] = self._inobs
  145 + spec['expcube'] = self._expcube
  146 + spec['psfcube'] = self._psfcube
  147 + spec['edispcube'] = self._edispcube
  148 + spec['bkgcube'] = self._bkgcube
  149 + spec['inmodel'] = self._model
141 spec['srcname'] = 'Crab' 150 spec['srcname'] = 'Crab'
142 spec['outfile'] = 'csspec_py2.fits' 151 spec['outfile'] = 'csspec_py2.fits'
143 spec['ebinalg'] = 'LOG' 152 spec['ebinalg'] = 'LOG'
@@ -168,8 +177,10 @@ class Test(test): @@ -168,8 +177,10 @@ class Test(test):
168 spectrum = fits['SPECTRUM'] 177 spectrum = fits['SPECTRUM']
169 178
170 # Check dimensions 179 # Check dimensions
171 - self.test_value(spectrum.nrows(), bins, 'Check for %d rows in spectrum' % bins)  
172 - self.test_value(spectrum.ncols(), 8, 'Check for 8 columns in spectrum') 180 + self.test_value(spectrum.nrows(), bins,
  181 + 'Check for %d rows in spectrum' % bins)
  182 + self.test_value(spectrum.ncols(), 8,
  183 + 'Check for 8 columns in spectrum')
173 184
174 # Return 185 # Return
175 return 186 return
test/test_cstsdist.py
@@ -69,8 +69,9 @@ class Test(test): @@ -69,8 +69,9 @@ class Test(test):
69 cstsdist = self._script('cstsdist') 69 cstsdist = self._script('cstsdist')
70 70
71 # Setup cstsdist command 71 # Setup cstsdist command
72 - cmd = cstsdist+' inmodel="data/crab.xml"'+ \  
73 - ' srcname="Crab" caldb="prod2" irf="South_0.5h"' + \ 72 + cmd = cstsdist+' inmodel="'+self._model+'"'+ \
  73 + ' srcname="Crab"'+ \
  74 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
74 ' ntrials=1 ra=83.63 dec=22.01 emin=0.1 emax=100.0'+ \ 75 ' ntrials=1 ra=83.63 dec=22.01 emin=0.1 emax=100.0'+ \
75 ' enumbins=0 tmax=1800.0 rad=5.0 npix=200 npix=200'+ \ 76 ' enumbins=0 tmax=1800.0 rad=5.0 npix=200 npix=200'+ \
76 ' binsz=0.05'+ \ 77 ' binsz=0.05'+ \
@@ -90,7 +91,8 @@ class Test(test): @@ -90,7 +91,8 @@ class Test(test):
90 91
91 # Setup cstsdist command 92 # Setup cstsdist command
92 cmd = cstsdist+' inmodel="model_that_does_not_exist.xml"'+ \ 93 cmd = cstsdist+' inmodel="model_that_does_not_exist.xml"'+ \
93 - ' srcname="Crab" caldb="prod2" irf="South_0.5h"' + \ 94 + ' srcname="Crab"'+ \
  95 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
94 ' ntrials=1 ra=83.63 dec=22.01 emin=0.1 emax=100.0'+ \ 96 ' ntrials=1 ra=83.63 dec=22.01 emin=0.1 emax=100.0'+ \
95 ' enumbins=0 tmax=1800.0 rad=5.0 npix=200 npix=200'+ \ 97 ' enumbins=0 tmax=1800.0 rad=5.0 npix=200 npix=200'+ \
96 ' binsz=0.05'+ \ 98 ' binsz=0.05'+ \
@@ -111,10 +113,10 @@ class Test(test): @@ -111,10 +113,10 @@ class Test(test):
111 """ 113 """
112 # Set-up cstsdist 114 # Set-up cstsdist
113 tsdist = cscripts.cstsdist() 115 tsdist = cscripts.cstsdist()
114 - tsdist['inmodel'] = 'data/crab.xml' 116 + tsdist['inmodel'] = self._model
115 tsdist['srcname'] = 'Crab' 117 tsdist['srcname'] = 'Crab'
116 - tsdist['caldb'] = 'prod2'  
117 - tsdist['irf'] = 'South_0.5h' 118 + tsdist['caldb'] = self._caldb
  119 + tsdist['irf'] = self._irf
118 tsdist['outfile'] = 'cstsdist_py1.dat' 120 tsdist['outfile'] = 'cstsdist_py1.dat'
119 tsdist['ntrials'] = 1 121 tsdist['ntrials'] = 1
120 tsdist['ra'] = 83.63 122 tsdist['ra'] = 83.63
test/test_cstsmapmerge.py
@@ -42,6 +42,12 @@ class Test(test): @@ -42,6 +42,12 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set members
  46 + self._map0 = self._datadir + '/tsmap_0.fits'
  47 + self._map1 = self._datadir + '/tsmap_1.fits'
  48 + self._mapstar = self._datadir + '/tsmap_*.fits'
  49 + self._mapat = '@' + self._datadir + '/tsmaps.txt'
  50 +
45 # Return 51 # Return
46 return 52 return
47 53
@@ -69,7 +75,7 @@ class Test(test): @@ -69,7 +75,7 @@ class Test(test):
69 cstsmapmerge = self._script('cstsmapmerge') 75 cstsmapmerge = self._script('cstsmapmerge')
70 76
71 # Setup cstsmapmerge command 77 # Setup cstsmapmerge command
72 - cmd = cstsmapmerge+' inmaps="data/tsmap_0.fits;data/tsmap_1.fits"'+ \ 78 + cmd = cstsmapmerge+' inmaps="'+self._map0+';'+self._map1+'"'+ \
73 ' outmap="cstsmapmerge_cmd1.fits"'+ \ 79 ' outmap="cstsmapmerge_cmd1.fits"'+ \
74 ' logfile="cstsmapmerge_cmd1.log" chatter=1' 80 ' logfile="cstsmapmerge_cmd1.log" chatter=1'
75 81
@@ -103,7 +109,7 @@ class Test(test): @@ -103,7 +109,7 @@ class Test(test):
103 """ 109 """
104 # Set-up semi-colon separated cstsmapmerge 110 # Set-up semi-colon separated cstsmapmerge
105 merge = cscripts.cstsmapmerge() 111 merge = cscripts.cstsmapmerge()
106 - merge['inmaps'] = 'data/tsmap_0.fits;data/tsmap_1.fits' 112 + merge['inmaps'] = self._map0+';'+self._map1
107 merge['outmap'] = 'cstsmapmerge_py1.fits' 113 merge['outmap'] = 'cstsmapmerge_py1.fits'
108 merge['logfile'] = 'cstsmapmerge_py1.log' 114 merge['logfile'] = 'cstsmapmerge_py1.log'
109 merge['chatter'] = 2 115 merge['chatter'] = 2
@@ -118,7 +124,7 @@ class Test(test): @@ -118,7 +124,7 @@ class Test(test):
118 124
119 # Set-up space-separated cstsmapmerge 125 # Set-up space-separated cstsmapmerge
120 merge = cscripts.cstsmapmerge() 126 merge = cscripts.cstsmapmerge()
121 - merge['inmaps'] = 'data/tsmap_0.fits data/tsmap_1.fits' 127 + merge['inmaps'] = self._map0+' '+self._map1
122 merge['outmap'] = 'cstsmapmerge_py2.fits' 128 merge['outmap'] = 'cstsmapmerge_py2.fits'
123 merge['logfile'] = 'cstsmapmerge_py2.log' 129 merge['logfile'] = 'cstsmapmerge_py2.log'
124 merge['chatter'] = 3 130 merge['chatter'] = 3
@@ -131,7 +137,7 @@ class Test(test): @@ -131,7 +137,7 @@ class Test(test):
131 137
132 # Set-up wildcard string cstsmapmerge 138 # Set-up wildcard string cstsmapmerge
133 merge = cscripts.cstsmapmerge() 139 merge = cscripts.cstsmapmerge()
134 - merge['inmaps'] = 'data/tsmap_*.fits' 140 + merge['inmaps'] = self._mapstar
135 merge['outmap'] = 'cstsmapmerge_py3.fits' 141 merge['outmap'] = 'cstsmapmerge_py3.fits'
136 merge['logfile'] = 'cstsmapmerge_py3.log' 142 merge['logfile'] = 'cstsmapmerge_py3.log'
137 merge['chatter'] = 4 143 merge['chatter'] = 4
@@ -144,7 +150,7 @@ class Test(test): @@ -144,7 +150,7 @@ class Test(test):
144 150
145 # Set-up ASCII file cstsmapmerge 151 # Set-up ASCII file cstsmapmerge
146 merge = cscripts.cstsmapmerge() 152 merge = cscripts.cstsmapmerge()
147 - merge['inmaps'] = '@data/tsmaps.txt' 153 + merge['inmaps'] = self._mapat
148 merge['outmap'] = 'cstsmapmerge_py4.fits' 154 merge['outmap'] = 'cstsmapmerge_py4.fits'
149 merge['logfile'] = 'cstsmapmerge_py4.log' 155 merge['logfile'] = 'cstsmapmerge_py4.log'
150 merge['chatter'] = 4 156 merge['chatter'] = 4
test/test_cstsmapsplit.py
@@ -69,11 +69,11 @@ class Test(test): @@ -69,11 +69,11 @@ class Test(test):
69 cstsmapsplit = self._script('cstsmapsplit') 69 cstsmapsplit = self._script('cstsmapsplit')
70 70
71 # Setup cstsmapsplit command 71 # Setup cstsmapsplit command
72 - cmd = cstsmapsplit+' inobs="data/crab_events.fits"'+ \  
73 - ' inmodel="data/crab.xml"'+ \ 72 + cmd = cstsmapsplit+' inobs="'+self._events+'"'+ \
  73 + ' inmodel="'+self._model+'"'+ \
74 ' srcname="Crab"'+ \ 74 ' srcname="Crab"'+ \
75 - ' caldb="prod2"'+ \  
76 - ' irf="South_0.5h"'+ \ 75 + ' caldb="'+self._caldb+'"'+ \
  76 + ' irf="'+self._irf+'"'+ \
77 ' outmap="tsmap.fits"'+ \ 77 ' outmap="tsmap.fits"'+ \
78 ' nxpix=5'+ \ 78 ' nxpix=5'+ \
79 ' nypix=5'+ \ 79 ' nypix=5'+ \
@@ -99,11 +99,11 @@ class Test(test): @@ -99,11 +99,11 @@ class Test(test):
99 self._check_cmdfile('cstsmapsplit_cmd1.dat') 99 self._check_cmdfile('cstsmapsplit_cmd1.dat')
100 100
101 # Setup cstsmapsplit command 101 # Setup cstsmapsplit command
102 - cmd = cstsmapsplit+' inobs="data/crab_events.fits"'+ \  
103 - ' inmodel="data/crab.xml"'+ \ 102 + cmd = cstsmapsplit+' inobs="'+self._events+'"'+ \
  103 + ' inmodel="'+self._model+'"'+ \
104 ' srcname="Does_not_exist"'+ \ 104 ' srcname="Does_not_exist"'+ \
105 - ' caldb="prod2"'+ \  
106 - ' irf="South_0.5h"'+ \ 105 + ' caldb="'+self._caldb+'"'+ \
  106 + ' irf="'+self._irf+'"'+ \
107 ' outmap="tsmap.fits"'+ \ 107 ' outmap="tsmap.fits"'+ \
108 ' nxpix=5'+ \ 108 ' nxpix=5'+ \
109 ' nypix=5'+ \ 109 ' nypix=5'+ \
@@ -131,11 +131,11 @@ class Test(test): @@ -131,11 +131,11 @@ class Test(test):
131 """ 131 """
132 # Set-up cstsmapsplit 132 # Set-up cstsmapsplit
133 tsmapsplit = cscripts.cstsmapsplit() 133 tsmapsplit = cscripts.cstsmapsplit()
134 - tsmapsplit['inobs'] = 'data/crab_events.fits'  
135 - tsmapsplit['inmodel'] = 'data/crab.xml' 134 + tsmapsplit['inobs'] = self._events
  135 + tsmapsplit['inmodel'] = self._model
136 tsmapsplit['srcname'] = 'Crab' 136 tsmapsplit['srcname'] = 'Crab'
137 - tsmapsplit['caldb'] = 'prod2'  
138 - tsmapsplit['irf'] = 'South_0.5h' 137 + tsmapsplit['caldb'] = self._caldb
  138 + tsmapsplit['irf'] = self._irf
139 tsmapsplit['outmap'] = 'tsmap.fits' 139 tsmapsplit['outmap'] = 'tsmap.fits'
140 tsmapsplit['bins_per_job'] = 5 140 tsmapsplit['bins_per_job'] = 5
141 tsmapsplit['compute_null'] = False 141 tsmapsplit['compute_null'] = False
test/test_csworkflow.py
@@ -42,6 +42,9 @@ class Test(test): @@ -42,6 +42,9 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
  45 + # Set members
  46 + self._workflow = self._datadir + '/workflow.xml'
  47 +
45 # Return 48 # Return
46 return 49 return
47 50
@@ -72,7 +75,7 @@ class Test(test): @@ -72,7 +75,7 @@ class Test(test):
72 gammalib.GFilename('wf_crab_results.xml').remove() 75 gammalib.GFilename('wf_crab_results.xml').remove()
73 76
74 # Setup csworkflow command 77 # Setup csworkflow command
75 - cmd = csworkflow+' inflow="data/workflow.xml"'+ \ 78 + cmd = csworkflow+' inflow="'+self._workflow+'"'+ \
76 ' logfile="csworkflow_cmd1.log" chatter=1' 79 ' logfile="csworkflow_cmd1.log" chatter=1'
77 80
78 # Check if execution of wrong command fails 81 # Check if execution of wrong command fails
@@ -99,7 +102,7 @@ class Test(test): @@ -99,7 +102,7 @@ class Test(test):
99 102
100 # Set-up csworkflow 103 # Set-up csworkflow
101 workflow = cscripts.csworkflow() 104 workflow = cscripts.csworkflow()
102 - workflow['inflow'] = 'data/workflow.xml' 105 + workflow['inflow'] = self._workflow
103 workflow['logfile'] = 'csworkflow_py1.log' 106 workflow['logfile'] = 'csworkflow_py1.log'
104 workflow['chatter'] = 2 107 workflow['chatter'] = 2
105 108
@@ -115,7 +118,7 @@ class Test(test): @@ -115,7 +118,7 @@ class Test(test):
115 118
116 # Set-up csworkflow 119 # Set-up csworkflow
117 workflow = cscripts.csworkflow() 120 workflow = cscripts.csworkflow()
118 - workflow['inflow'] = 'data/workflow.xml' 121 + workflow['inflow'] = self._workflow
119 workflow['logfile'] = 'csworkflow_py2.log' 122 workflow['logfile'] = 'csworkflow_py2.log'
120 workflow['chatter'] = 3 123 workflow['chatter'] = 3
121 124
@@ -140,13 +143,13 @@ class Test(test): @@ -140,13 +143,13 @@ class Test(test):
140 self.test_value(models['Crab'][2].value(), 143 self.test_value(models['Crab'][2].value(),
141 5.71055e-16, 1.0e-5, 'Crab prefactor') 144 5.71055e-16, 1.0e-5, 'Crab prefactor')
142 self.test_value(models['Crab'][3].value(), 145 self.test_value(models['Crab'][3].value(),
143 - -2.50996, 1.0e-5, 'Crab index') 146 + -2.47559, 1.0e-5, 'Crab index')
144 self.test_value(models['Background'][0].value(), 147 self.test_value(models['Background'][0].value(),
145 - 2.98499, 1.0e-5, 'Background model sigma') 148 + 3.00491, 1.0e-5, 'Background model sigma')
146 self.test_value(models['Background'][1].value(), 149 self.test_value(models['Background'][1].value(),
147 6.27131e-05, 1.0e-5, 'Background model prefactor') 150 6.27131e-05, 1.0e-5, 'Background model prefactor')
148 self.test_value(models['Background'][2].value(), 151 self.test_value(models['Background'][2].value(),
149 - -1.85037, 1.0e-5, 'Background model index') 152 + -1.83164, 1.0e-5, 'Background model index')
150 153
151 # Return 154 # Return
152 return 155 return
test/test_ctbin.py
@@ -42,9 +42,6 @@ class Test(test): @@ -42,9 +42,6 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
45 - # Set members  
46 - self._events_name = 'data/crab_events.fits'  
47 -  
48 # Return 45 # Return
49 return 46 return
50 47
@@ -72,7 +69,7 @@ class Test(test): @@ -72,7 +69,7 @@ class Test(test):
72 ctbin = self._tool('ctbin') 69 ctbin = self._tool('ctbin')
73 70
74 # Setup ctbin command 71 # Setup ctbin command
75 - cmd = ctbin+' inobs="'+self._events_name+'"'+ \ 72 + cmd = ctbin+' inobs="'+self._events+'"'+ \
76 ' outcube="cntmap_cmd1.fits"'+\ 73 ' outcube="cntmap_cmd1.fits"'+\
77 ' emin=0.1 emax=100.0 enumbins=20 ebinalg="LOG"'+ \ 74 ' emin=0.1 emax=100.0 enumbins=20 ebinalg="LOG"'+ \
78 ' nxpix=200 nypix=200 binsz=0.02 coordsys="CEL"'+ \ 75 ' nxpix=200 nypix=200 binsz=0.02 coordsys="CEL"'+ \
@@ -111,7 +108,7 @@ class Test(test): @@ -111,7 +108,7 @@ class Test(test):
111 """ 108 """
112 # Set-up ctbin 109 # Set-up ctbin
113 bin = ctools.ctbin() 110 bin = ctools.ctbin()
114 - bin['inobs'] = self._events_name 111 + bin['inobs'] = self._events
115 bin['outcube'] = 'cntmap.fits' 112 bin['outcube'] = 'cntmap.fits'
116 bin['ebinalg'] = 'LOG' 113 bin['ebinalg'] = 'LOG'
117 bin['emin'] = 0.1 114 bin['emin'] = 0.1
@@ -157,7 +154,7 @@ class Test(test): @@ -157,7 +154,7 @@ class Test(test):
157 self._check_cube(evt, 5542) 154 self._check_cube(evt, 5542)
158 155
159 # Prepare observation container for stacked analysis 156 # Prepare observation container for stacked analysis
160 - cta = gammalib.GCTAObservation(self._events_name) 157 + cta = gammalib.GCTAObservation(self._events)
161 obs = gammalib.GObservations() 158 obs = gammalib.GObservations()
162 cta.id('0001') 159 cta.id('0001')
163 obs.append(cta) 160 obs.append(cta)
test/test_ctbkgcube.py
@@ -65,12 +65,12 @@ class Test(test): @@ -65,12 +65,12 @@ class Test(test):
65 ctbkgcube = self._tool('ctbkgcube') 65 ctbkgcube = self._tool('ctbkgcube')
66 66
67 # Setup ctbkgcube command 67 # Setup ctbkgcube command
68 - cmd = ctbkgcube+' inobs="data/crab_events.fits"'+ \  
69 - ' inmodel="data/crab.xml"'+ \ 68 + cmd = ctbkgcube+' inobs="'+self._events+'"'+ \
  69 + ' inmodel="'+self._model+'"'+ \
70 ' incube="NONE"'+ \ 70 ' incube="NONE"'+ \
71 ' outcube="ctbkgcube_cmd1.fits"'+ \ 71 ' outcube="ctbkgcube_cmd1.fits"'+ \
72 ' outmodel="ctbkgcube_cmd1.xml"'+ \ 72 ' outmodel="ctbkgcube_cmd1.xml"'+ \
73 - ' caldb="prod2" irf="South_0.5h"'+ \ 73 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
74 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \ 74 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \
75 ' nxpix=10 nypix=10 binsz=0.4'+ \ 75 ' nxpix=10 nypix=10 binsz=0.4'+ \
76 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 76 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -89,11 +89,11 @@ class Test(test): @@ -89,11 +89,11 @@ class Test(test):
89 89
90 # Setup ctbkgcube command 90 # Setup ctbkgcube command
91 cmd = ctbkgcube+' inobs="event_file_that_does_not_exist.fits"'+ \ 91 cmd = ctbkgcube+' inobs="event_file_that_does_not_exist.fits"'+ \
92 - ' inmodel="data/crab.xml"'+ \ 92 + ' inmodel="'+self._model+'"'+ \
93 ' incube="NONE"'+ \ 93 ' incube="NONE"'+ \
94 ' outcube="ctbkgcube_cmd2.fits"'+ \ 94 ' outcube="ctbkgcube_cmd2.fits"'+ \
95 ' outmodel="ctbkgcube_cmd2.xml"'+ \ 95 ' outmodel="ctbkgcube_cmd2.xml"'+ \
96 - ' caldb="prod2" irf="South_0.5h"'+ \ 96 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
97 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \ 97 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \
98 ' nxpix=10 nypix=10 binsz=0.4'+ \ 98 ' nxpix=10 nypix=10 binsz=0.4'+ \
99 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 99 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -113,13 +113,13 @@ class Test(test): @@ -113,13 +113,13 @@ class Test(test):
113 """ 113 """
114 # Set-up ctbkgcube 114 # Set-up ctbkgcube
115 bkgcube = ctools.ctbkgcube() 115 bkgcube = ctools.ctbkgcube()
116 - bkgcube['inobs'] = 'data/crab_events.fits'  
117 - bkgcube['inmodel'] = 'data/crab.xml' 116 + bkgcube['inobs'] = self._events
  117 + bkgcube['inmodel'] = self._model
118 bkgcube['incube'] = 'NONE' 118 bkgcube['incube'] = 'NONE'
119 bkgcube['outcube'] = 'ctbkgcube_py1.fits' 119 bkgcube['outcube'] = 'ctbkgcube_py1.fits'
120 bkgcube['outmodel'] = 'ctbkgcube_py1.xml' 120 bkgcube['outmodel'] = 'ctbkgcube_py1.xml'
121 - bkgcube['caldb'] = 'prod2'  
122 - bkgcube['irf'] = 'South_0.5h' 121 + bkgcube['caldb'] = self._caldb
  122 + bkgcube['irf'] = self._irf
123 bkgcube['ebinalg'] = 'LOG' 123 bkgcube['ebinalg'] = 'LOG'
124 bkgcube['emin'] = 0.1 124 bkgcube['emin'] = 0.1
125 bkgcube['emax'] = 100 125 bkgcube['emax'] = 100
test/test_ctbutterfly.py
@@ -28,12 +28,12 @@ from testing import test @@ -28,12 +28,12 @@ from testing import test
28 # =============================== # 28 # =============================== #
29 class Test(test): 29 class Test(test):
30 """ 30 """
31 - Test class for ctbutterfly tool. 31 + Test class for ctbutterfly tool
32 """ 32 """
33 # Constructor 33 # Constructor
34 def __init__(self): 34 def __init__(self):
35 """ 35 """
36 - Constructor. 36 + Constructor
37 """ 37 """
38 # Call base class constructor 38 # Call base class constructor
39 test.__init__(self) 39 test.__init__(self)
@@ -44,7 +44,7 @@ class Test(test): @@ -44,7 +44,7 @@ class Test(test):
44 # Set test functions 44 # Set test functions
45 def set(self): 45 def set(self):
46 """ 46 """
47 - Set all test functions. 47 + Set all test functions
48 """ 48 """
49 # Set test name 49 # Set test name
50 self.name('ctbutterfly') 50 self.name('ctbutterfly')
@@ -59,16 +59,16 @@ class Test(test): @@ -59,16 +59,16 @@ class Test(test):
59 # Test ctbutterfly on command line 59 # Test ctbutterfly on command line
60 def _test_cmd(self): 60 def _test_cmd(self):
61 """ 61 """
62 - Test ctbutterfly on the command line. 62 + Test ctbutterfly on the command line
63 """ 63 """
64 # Set tool name 64 # Set tool name
65 ctbutterfly = self._tool('ctbutterfly') 65 ctbutterfly = self._tool('ctbutterfly')
66 66
67 # Setup ctbutterfly command 67 # Setup ctbutterfly command
68 - cmd = ctbutterfly+' inobs="data/crab_events.fits"'+\  
69 - ' outfile="ctbutterfly_cmd1.txt"'+ \  
70 - ' inmodel="data/crab.xml" srcname="Crab"'+ \  
71 - ' caldb="prod2" irf="South_0.5h"'+ \ 68 + cmd = ctbutterfly+' inobs="'+self._events+'"'+\
  69 + ' outfile="ctbutterfly_cmd1.dat"'+ \
  70 + ' inmodel="'+self._model +'" srcname="Crab"'+ \
  71 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
72 ' emin=0.1 emax=100.0'+ \ 72 ' emin=0.1 emax=100.0'+ \
73 ' logfile="ctbutterfly_cmd1.log" chatter=1' 73 ' logfile="ctbutterfly_cmd1.log" chatter=1'
74 74
@@ -81,13 +81,13 @@ class Test(test): @@ -81,13 +81,13 @@ class Test(test):
81 'Check successful execution from command line') 81 'Check successful execution from command line')
82 82
83 # Check result file 83 # Check result file
84 - self._check_result_file('ctbutterfly_cmd1.txt') 84 + self._check_result_file('ctbutterfly_cmd1.dat')
85 85
86 # Setup ctbutterfly command 86 # Setup ctbutterfly command
87 cmd = ctbutterfly+' inobs="event_file_that_does_not_exist.fits"'+\ 87 cmd = ctbutterfly+' inobs="event_file_that_does_not_exist.fits"'+\
88 - ' outfile="ctbutterfly_cmd2.txt"'+ \  
89 - ' inmodel="data/crab.xml" srcname="Crab"'+ \  
90 - ' caldb="prod2" irf="South_0.5h"'+ \ 88 + ' outfile="ctbutterfly_cmd2.dat"'+ \
  89 + ' inmodel="'+self._model +'" srcname="Crab"'+ \
  90 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
91 ' emin=0.1 emax=100.0'+ \ 91 ' emin=0.1 emax=100.0'+ \
92 ' logfile="ctbutterfly_cmd2.log" chatter=1' 92 ' logfile="ctbutterfly_cmd2.log" chatter=1'
93 93
@@ -105,14 +105,14 @@ class Test(test): @@ -105,14 +105,14 @@ class Test(test):
105 """ 105 """
106 # Set-up ctbutterfly 106 # Set-up ctbutterfly
107 butterfly = ctools.ctbutterfly() 107 butterfly = ctools.ctbutterfly()
108 - butterfly['inobs'] = 'data/crab_events.fits'  
109 - butterfly['inmodel'] = 'data/crab.xml' 108 + butterfly['inobs'] = self._events
  109 + butterfly['inmodel'] = self._model
110 butterfly['srcname'] = 'Crab' 110 butterfly['srcname'] = 'Crab'
111 - butterfly['caldb'] = 'prod2'  
112 - butterfly['irf'] = 'South_0.5h' 111 + butterfly['caldb'] = self._caldb
  112 + butterfly['irf'] = self._irf
113 butterfly['emin'] = 0.1 113 butterfly['emin'] = 0.1
114 butterfly['emax'] = 100.0 114 butterfly['emax'] = 100.0
115 - butterfly['outfile'] = 'ctbutterfly_py1.txt' 115 + butterfly['outfile'] = 'ctbutterfly_py1.dat'
116 butterfly['logfile'] = 'ctbutterfly_py1.log' 116 butterfly['logfile'] = 'ctbutterfly_py1.log'
117 butterfly['chatter'] = 2 117 butterfly['chatter'] = 2
118 118
@@ -122,7 +122,7 @@ class Test(test): @@ -122,7 +122,7 @@ class Test(test):
122 butterfly.save() 122 butterfly.save()
123 123
124 # Check result file 124 # Check result file
125 - self._check_result_file('ctbutterfly_py1.txt') 125 + self._check_result_file('ctbutterfly_py1.dat')
126 126
127 # Return 127 # Return
128 return 128 return
@@ -136,8 +136,10 @@ class Test(test): @@ -136,8 +136,10 @@ class Test(test):
136 results = gammalib.GCsv(filename) 136 results = gammalib.GCsv(filename)
137 137
138 # Check dimensions 138 # Check dimensions
139 - self.test_value(results.nrows(), 100, 'Check for 100 rows in butterfly file')  
140 - self.test_value(results.ncols(), 4, 'Check for 4 columns in butterfly file') 139 + self.test_value(results.nrows(), 100,
  140 + 'Check for 100 rows in butterfly file')
  141 + self.test_value(results.ncols(), 4,
  142 + 'Check for 4 columns in butterfly file')
141 143
142 # Return 144 # Return
143 return 145 return
test/test_ctcubemask.py
@@ -38,6 +38,9 @@ class Test(test): @@ -38,6 +38,9 @@ class Test(test):
38 # Call base class constructor 38 # Call base class constructor
39 test.__init__(self) 39 test.__init__(self)
40 40
  41 + # Set members
  42 + self._exclusion = self._datadir + '/exclusion.reg'
  43 +
41 # Return 44 # Return
42 return 45 return
43 46
@@ -65,8 +68,8 @@ class Test(test): @@ -65,8 +68,8 @@ class Test(test):
65 ctcubemask = self._tool('ctcubemask') 68 ctcubemask = self._tool('ctcubemask')
66 69
67 # Setup ctcubemask command 70 # Setup ctcubemask command
68 - cmd = ctcubemask+' inobs="data/crab_cntmap.fits"'+ \  
69 - ' regfile="data/exclusion.reg"'+ \ 71 + cmd = ctcubemask+' inobs="'+self._cntcube+'"'+ \
  72 + ' regfile="'+self._exclusion+'"'+ \
70 ' outcube="ctcubemask_cmd1.fits"'+ \ 73 ' outcube="ctcubemask_cmd1.fits"'+ \
71 ' ra=83.63 dec=22.01 rad=2.0'+ \ 74 ' ra=83.63 dec=22.01 rad=2.0'+ \
72 ' emin=0.1 emax=100.0'+ \ 75 ' emin=0.1 emax=100.0'+ \
@@ -85,7 +88,7 @@ class Test(test): @@ -85,7 +88,7 @@ class Test(test):
85 88
86 # Setup ctcubemask command 89 # Setup ctcubemask command
87 cmd = ctcubemask+' inobs="counts_cube_that_does_not_exist.fits"'+ \ 90 cmd = ctcubemask+' inobs="counts_cube_that_does_not_exist.fits"'+ \
88 - ' regfile="data/exclusion.reg"'+ \ 91 + ' regfile="'+self._exclusion+'"'+ \
89 ' outcube="ctcubemask_cmd2.fits"'+ \ 92 ' outcube="ctcubemask_cmd2.fits"'+ \
90 ' ra=83.63 dec=22.01 rad=2.0'+ \ 93 ' ra=83.63 dec=22.01 rad=2.0'+ \
91 ' emin=0.1 emax=100.0'+ \ 94 ' emin=0.1 emax=100.0'+ \
@@ -105,8 +108,8 @@ class Test(test): @@ -105,8 +108,8 @@ class Test(test):
105 """ 108 """
106 # Set-up ctcubemask 109 # Set-up ctcubemask
107 mask = ctools.ctcubemask() 110 mask = ctools.ctcubemask()
108 - mask['inobs'] = 'data/crab_cntmap.fits'  
109 - mask['regfile'] = 'data/exclusion.reg' 111 + mask['inobs'] = self._cntcube
  112 + mask['regfile'] = self._exclusion
110 mask['outcube'] = 'ctcubemask_py1.fits' 113 mask['outcube'] = 'ctcubemask_py1.fits'
111 mask['ra'] = 83.63 114 mask['ra'] = 83.63
112 mask['dec'] = 22.01 115 mask['dec'] = 22.01
test/test_ctedispcube.py
@@ -65,10 +65,10 @@ class Test(test): @@ -65,10 +65,10 @@ class Test(test):
65 ctedispcube = self._tool('ctedispcube') 65 ctedispcube = self._tool('ctedispcube')
66 66
67 # Setup ctedispcube command 67 # Setup ctedispcube command
68 - cmd = ctedispcube+' inobs="data/crab_events.fits"'+ \ 68 + cmd = ctedispcube+' inobs="'+self._events+'"'+ \
69 ' incube="NONE"'+ \ 69 ' incube="NONE"'+ \
70 ' outcube="ctedispcube_cmd1.fits"'+ \ 70 ' outcube="ctedispcube_cmd1.fits"'+ \
71 - ' caldb="prod2" irf="South_0.5h"'+ \ 71 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
72 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \ 72 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \
73 ' nxpix=10 nypix=10 binsz=0.4'+ \ 73 ' nxpix=10 nypix=10 binsz=0.4'+ \
74 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 74 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -90,7 +90,7 @@ class Test(test): @@ -90,7 +90,7 @@ class Test(test):
90 cmd = ctedispcube+' inobs="events_that_do_not_exist.fits"'+ \ 90 cmd = ctedispcube+' inobs="events_that_do_not_exist.fits"'+ \
91 ' incube="NONE"'+ \ 91 ' incube="NONE"'+ \
92 ' outcube="ctedispcube_cmd2.fits"'+ \ 92 ' outcube="ctedispcube_cmd2.fits"'+ \
93 - ' caldb="prod2" irf="South_0.5h"'+ \ 93 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
94 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \ 94 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \
95 ' nxpix=10 nypix=10 binsz=0.4'+ \ 95 ' nxpix=10 nypix=10 binsz=0.4'+ \
96 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 96 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -111,11 +111,11 @@ class Test(test): @@ -111,11 +111,11 @@ class Test(test):
111 """ 111 """
112 # Set-up ctedispcube 112 # Set-up ctedispcube
113 edispcube = ctools.ctedispcube() 113 edispcube = ctools.ctedispcube()
114 - edispcube['inobs'] = 'data/crab_events.fits' 114 + edispcube['inobs'] = self._events
115 edispcube['incube'] = 'NONE' 115 edispcube['incube'] = 'NONE'
116 edispcube['outcube'] = 'ctedispcube_py1.fits' 116 edispcube['outcube'] = 'ctedispcube_py1.fits'
117 - edispcube['caldb'] = 'prod2'  
118 - edispcube['irf'] = 'South_0.5h' 117 + edispcube['caldb'] = self._caldb
  118 + edispcube['irf'] = self._irf
119 edispcube['ebinalg'] = 'LOG' 119 edispcube['ebinalg'] = 'LOG'
120 edispcube['emin'] = 0.1 120 edispcube['emin'] = 0.1
121 edispcube['emax'] = 100 121 edispcube['emax'] = 100
test/test_cterror.py
@@ -38,13 +38,6 @@ class Test(test): @@ -38,13 +38,6 @@ class Test(test):
38 # Call base class constructor 38 # Call base class constructor
39 test.__init__(self) 39 test.__init__(self)
40 40
41 - # Set members  
42 - self.events_name = 'data/crab_events.fits'  
43 - self.model_name = 'data/crab.xml'  
44 - self.result_name = 'cterror_result.xml'  
45 - self.caldb = 'irf'  
46 - self.irf = 'cta_dummy_irf'  
47 -  
48 # Return 41 # Return
49 return 42 return
50 43
@@ -72,9 +65,9 @@ class Test(test): @@ -72,9 +65,9 @@ class Test(test):
72 cterror = self._tool('cterror') 65 cterror = self._tool('cterror')
73 66
74 # Setup cterror command 67 # Setup cterror command
75 - cmd = cterror+' inobs="data/crab_events.fits"'+ \  
76 - ' inmodel="data/crab.xml" srcname="Crab"'+ \  
77 - ' caldb="prod2" irf="South_0.5h"'+ \ 68 + cmd = cterror+' inobs="'+self._events+'"'+ \
  69 + ' inmodel="'+self._model+'" srcname="Crab"'+ \
  70 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
78 ' outmodel="cterror_cmd1.xml"'+ \ 71 ' outmodel="cterror_cmd1.xml"'+ \
79 ' logfile="cterror_cmd1.log" chatter=1' 72 ' logfile="cterror_cmd1.log" chatter=1'
80 73
@@ -91,8 +84,8 @@ class Test(test): @@ -91,8 +84,8 @@ class Test(test):
91 84
92 # Setup cterror command 85 # Setup cterror command
93 cmd = cterror+' inobs="event_file_that_does_not_exist.fits"'+ \ 86 cmd = cterror+' inobs="event_file_that_does_not_exist.fits"'+ \
94 - ' inmodel="data/crab.xml" srcname="Crab"'+ \  
95 - ' caldb="prod2" irf="South_0.5h"'+ \ 87 + ' inmodel="'+self._model+'" srcname="Crab"'+ \
  88 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
96 ' outmodel="cterror_cmd2.xml"'+ \ 89 ' outmodel="cterror_cmd2.xml"'+ \
97 ' logfile="cterror_cmd2.log" chatter=1' 90 ' logfile="cterror_cmd2.log" chatter=1'
98 91
@@ -110,12 +103,12 @@ class Test(test): @@ -110,12 +103,12 @@ class Test(test):
110 """ 103 """
111 # Set-up cterror 104 # Set-up cterror
112 error = ctools.cterror() 105 error = ctools.cterror()
113 - error['inobs'] = 'data/crab_events.fits'  
114 - error['inmodel'] = 'data/crab.xml' 106 + error['inobs'] = self._events
  107 + error['inmodel'] = self._model
115 error['outmodel'] = 'cterror_py1.xml' 108 error['outmodel'] = 'cterror_py1.xml'
116 error['srcname'] = 'Crab' 109 error['srcname'] = 'Crab'
117 - error['caldb'] = 'prod2'  
118 - error['irf'] = 'South_0.5h' 110 + error['caldb'] = self._caldb
  111 + error['irf'] = self._irf
119 error['logfile'] = 'cterror_py1.log' 112 error['logfile'] = 'cterror_py1.log'
120 error['chatter'] = 2 113 error['chatter'] = 2
121 114
test/test_ctexpcube.py
@@ -65,10 +65,10 @@ class Test(test): @@ -65,10 +65,10 @@ class Test(test):
65 ctexpcube = self._tool('ctexpcube') 65 ctexpcube = self._tool('ctexpcube')
66 66
67 # Setup ctexpcube command 67 # Setup ctexpcube command
68 - cmd = ctexpcube+' inobs="data/crab_events.fits"'+ \ 68 + cmd = ctexpcube+' inobs="'+self._events+'"'+ \
69 ' incube="NONE"'+ \ 69 ' incube="NONE"'+ \
70 ' outcube="ctexpcube_cmd1.fits"'+ \ 70 ' outcube="ctexpcube_cmd1.fits"'+ \
71 - ' caldb="prod2" irf="South_0.5h"'+ \ 71 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
72 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \ 72 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \
73 ' nxpix=200 nypix=200 binsz=0.02'+ \ 73 ' nxpix=200 nypix=200 binsz=0.02'+ \
74 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 74 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -89,7 +89,7 @@ class Test(test): @@ -89,7 +89,7 @@ class Test(test):
89 cmd = ctexpcube+' inobs="event_file_that_does_not_exist.fits"'+ \ 89 cmd = ctexpcube+' inobs="event_file_that_does_not_exist.fits"'+ \
90 ' incube="NONE"'+ \ 90 ' incube="NONE"'+ \
91 ' outcube="ctexpcube_cmd2.fits"'+ \ 91 ' outcube="ctexpcube_cmd2.fits"'+ \
92 - ' caldb="prod2" irf="South_0.5h"'+ \ 92 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
93 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \ 93 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \
94 ' nxpix=200 nypix=200 binsz=0.02'+ \ 94 ' nxpix=200 nypix=200 binsz=0.02'+ \
95 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 95 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -109,11 +109,11 @@ class Test(test): @@ -109,11 +109,11 @@ class Test(test):
109 """ 109 """
110 # Set-up ctexpcube 110 # Set-up ctexpcube
111 expcube = ctools.ctexpcube() 111 expcube = ctools.ctexpcube()
112 - expcube['inobs'] = 'data/crab_events.fits' 112 + expcube['inobs'] = self._events
113 expcube['incube'] = 'NONE' 113 expcube['incube'] = 'NONE'
114 expcube['outcube'] = 'ctexpcube_py1.fits' 114 expcube['outcube'] = 'ctexpcube_py1.fits'
115 - expcube['caldb'] = 'prod2'  
116 - expcube['irf'] = 'South_0.5h' 115 + expcube['caldb'] = self._caldb
  116 + expcube['irf'] = self._irf
117 expcube['ebinalg'] = 'LOG' 117 expcube['ebinalg'] = 'LOG'
118 expcube['emin'] = 0.1 118 expcube['emin'] = 0.1
119 expcube['emax'] = 100 119 expcube['emax'] = 100
test/test_ctlike.py
@@ -65,9 +65,9 @@ class Test(test): @@ -65,9 +65,9 @@ class Test(test):
65 ctlike = self._tool('ctlike') 65 ctlike = self._tool('ctlike')
66 66
67 # Setup ctlike command 67 # Setup ctlike command
68 - cmd = ctlike+' inobs="data/crab_events.fits"'+ \  
69 - ' inmodel="data/crab.xml"'+ \  
70 - ' caldb="prod2" irf="South_0.5h"'+ \ 68 + cmd = ctlike+' inobs="'+self._events+'"'+ \
  69 + ' inmodel="'+self._model+'"'+ \
  70 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
71 ' outmodel="ctlike_cmd1.xml"'+ \ 71 ' outmodel="ctlike_cmd1.xml"'+ \
72 ' logfile="ctlike_cmd1.log" chatter=1' 72 ' logfile="ctlike_cmd1.log" chatter=1'
73 73
@@ -84,8 +84,8 @@ class Test(test): @@ -84,8 +84,8 @@ class Test(test):
84 84
85 # Setup ctlike command 85 # Setup ctlike command
86 cmd = ctlike+' inobs="event_file_that_does_not_exist.fits"'+ \ 86 cmd = ctlike+' inobs="event_file_that_does_not_exist.fits"'+ \
87 - ' inmodel="data/crab.xml"'+ \  
88 - ' caldb="prod2" irf="South_0.5h"'+ \ 87 + ' inmodel="'+self._model+'"'+ \
  88 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
89 ' outmodel="ctlike_cmd2.xml"'+ \ 89 ' outmodel="ctlike_cmd2.xml"'+ \
90 ' logfile="ctlike_cmd2.log" chatter=1' 90 ' logfile="ctlike_cmd2.log" chatter=1'
91 91
@@ -103,10 +103,10 @@ class Test(test): @@ -103,10 +103,10 @@ class Test(test):
103 """ 103 """
104 # Set-up ctlike 104 # Set-up ctlike
105 like = ctools.ctlike() 105 like = ctools.ctlike()
106 - like['inobs'] = 'data/crab_events.fits'  
107 - like['inmodel'] = 'data/crab.xml'  
108 - like['caldb'] = 'prod2'  
109 - like['irf'] = 'South_0.5h' 106 + like['inobs'] = self._events
  107 + like['inmodel'] = self._model
  108 + like['caldb'] = self._caldb
  109 + like['irf'] = self._irf
110 like['outmodel'] = 'ctlike_py1.xml' 110 like['outmodel'] = 'ctlike_py1.xml'
111 like['logfile'] = 'ctlike_py1.log' 111 like['logfile'] = 'ctlike_py1.log'
112 like['chatter'] = 2 112 like['chatter'] = 2
test/test_ctmapcube.py
@@ -42,9 +42,6 @@ class Test(test): @@ -42,9 +42,6 @@ class Test(test):
42 # Call base class constructor 42 # Call base class constructor
43 test.__init__(self) 43 test.__init__(self)
44 44
45 - # Set members  
46 - self._model_name = 'data/crab.xml'  
47 -  
48 # Return 45 # Return
49 return 46 return
50 47
@@ -72,7 +69,7 @@ class Test(test): @@ -72,7 +69,7 @@ class Test(test):
72 ctmapcube = self._tool('ctmapcube') 69 ctmapcube = self._tool('ctmapcube')
73 70
74 # Setup ctmapcube command 71 # Setup ctmapcube command
75 - cmd = ctmapcube+' inmodel="'+self._model_name+'"'+ \ 72 + cmd = ctmapcube+' inmodel="'+self._model+'"'+ \
76 ' outcube="ctmapcube_cmd1.fits"'+\ 73 ' outcube="ctmapcube_cmd1.fits"'+\
77 ' emin=0.1 emax=100.0 enumbins=20 ebinalg=LOG'+ \ 74 ' emin=0.1 emax=100.0 enumbins=20 ebinalg=LOG'+ \
78 ' nxpix=200 nypix=200 binsz=0.02 coordsys=CEL'+ \ 75 ' nxpix=200 nypix=200 binsz=0.02 coordsys=CEL'+ \
@@ -112,7 +109,7 @@ class Test(test): @@ -112,7 +109,7 @@ class Test(test):
112 """ 109 """
113 # Set-up ctmapcube 110 # Set-up ctmapcube
114 mapcube = ctools.ctmapcube() 111 mapcube = ctools.ctmapcube()
115 - mapcube['inmodel'] = self._model_name 112 + mapcube['inmodel'] = self._model
116 mapcube['outcube'] = 'ctmapcube_py1.fits' 113 mapcube['outcube'] = 'ctmapcube_py1.fits'
117 mapcube['ebinalg'] = 'LOG' 114 mapcube['ebinalg'] = 'LOG'
118 mapcube['emin'] = 0.1 115 mapcube['emin'] = 0.1
test/test_ctmodel.py
@@ -68,8 +68,8 @@ class Test(test): @@ -68,8 +68,8 @@ class Test(test):
68 cmd = ctmodel+' incube="NONE" inobs="NONE" expcube="NONE"'+\ 68 cmd = ctmodel+' incube="NONE" inobs="NONE" expcube="NONE"'+\
69 ' psfcube="NONE" bkgcube="NONE"'+ \ 69 ' psfcube="NONE" bkgcube="NONE"'+ \
70 ' outcube="ctmodel_cmd1.fits"'+ \ 70 ' outcube="ctmodel_cmd1.fits"'+ \
71 - ' inmodel="data/crab.xml"'+ \  
72 - ' caldb="prod2" irf="South_0.5h"'+ \ 71 + ' inmodel="'+self._model+'"'+ \
  72 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
73 ' rad=5.0 ra=83.63 dec=22.01 tmin=0.0 tmax=1800'+ \ 73 ' rad=5.0 ra=83.63 dec=22.01 tmin=0.0 tmax=1800'+ \
74 ' emin=0.1 emax=100.0 enumbins=20 nxpix=200 nypix=200'+ \ 74 ' emin=0.1 emax=100.0 enumbins=20 nxpix=200 nypix=200'+ \
75 ' binsz=0.02 coordsys="CEL" proj="CAR"'+ \ 75 ' binsz=0.02 coordsys="CEL" proj="CAR"'+ \
@@ -92,7 +92,7 @@ class Test(test): @@ -92,7 +92,7 @@ class Test(test):
92 ' psfcube="NONE" bkgcube="NONE"'+ \ 92 ' psfcube="NONE" bkgcube="NONE"'+ \
93 ' outcube="ctmodel_cmd2.fits"'+ \ 93 ' outcube="ctmodel_cmd2.fits"'+ \
94 ' inmodel="model_that_does_not_exist.xml"'+ \ 94 ' inmodel="model_that_does_not_exist.xml"'+ \
95 - ' caldb="prod2" irf="South_0.5h"'+ \ 95 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
96 ' rad=5.0 ra=83.63 dec=22.01 tmin=0.0 tmax=1800'+ \ 96 ' rad=5.0 ra=83.63 dec=22.01 tmin=0.0 tmax=1800'+ \
97 ' emin=0.1 emax=100.0 enumbins=20 nxpix=200 nypix=200'+ \ 97 ' emin=0.1 emax=100.0 enumbins=20 nxpix=200 nypix=200'+ \
98 ' binsz=0.02 coordsys="CEL" proj="CAR"'+ \ 98 ' binsz=0.02 coordsys="CEL" proj="CAR"'+ \
@@ -115,13 +115,13 @@ class Test(test): @@ -115,13 +115,13 @@ class Test(test):
115 model = ctools.ctmodel() 115 model = ctools.ctmodel()
116 model['incube'] = 'NONE' 116 model['incube'] = 'NONE'
117 model['outcube'] = 'ctmodel_py1.fits' 117 model['outcube'] = 'ctmodel_py1.fits'
118 - model['inmodel'] = 'data/crab.xml' 118 + model['inmodel'] = self._model
119 model['inobs'] = 'NONE' 119 model['inobs'] = 'NONE'
120 model['expcube'] = 'NONE' 120 model['expcube'] = 'NONE'
121 model['psfcube'] = 'NONE' 121 model['psfcube'] = 'NONE'
122 model['bkgcube'] = 'NONE' 122 model['bkgcube'] = 'NONE'
123 - model['caldb'] = 'prod2'  
124 - model['irf'] = 'South_0.5h' 123 + model['caldb'] = self._caldb
  124 + model['irf'] = self._irf
125 model['rad'] = 5 125 model['rad'] = 5
126 model['ra'] = 83.63 126 model['ra'] = 83.63
127 model['dec'] = 22.01 127 model['dec'] = 22.01
test/test_ctobssim.py
@@ -43,11 +43,6 @@ class Test(test): @@ -43,11 +43,6 @@ class Test(test):
43 # Call base class constructor 43 # Call base class constructor
44 test.__init__(self) 44 test.__init__(self)
45 45
46 - # Set members  
47 - self._model_name = 'data/crab.xml'  
48 - self._caldb = 'irf'  
49 - self._irf = 'cta_dummy_irf'  
50 -  
51 # Return 46 # Return
52 return 47 return
53 48
@@ -75,8 +70,9 @@ class Test(test): @@ -75,8 +70,9 @@ class Test(test):
75 ctobssim = self._tool('ctobssim') 70 ctobssim = self._tool('ctobssim')
76 71
77 # Setup ctobssim command 72 # Setup ctobssim command
78 - cmd = ctobssim+' inmodel="data/crab.xml" outevents="events.fits"'+ \  
79 - ' caldb="irf" irf="cta_dummy_irf" '+ \ 73 + cmd = ctobssim+' inmodel="'+self._model+'" '+ \
  74 + ' outevents="events.fits"'+ \
  75 + ' caldb="'+self._caldb+'" irf="'+self._irf+'" '+ \
80 ' ra=83.63 dec=22.01 rad=10.0'+ \ 76 ' ra=83.63 dec=22.01 rad=10.0'+ \
81 ' tmin=0.0 tmax=1800.0 emin=0.1 emax=100.0' 77 ' tmin=0.0 tmax=1800.0 emin=0.1 emax=100.0'
82 78
@@ -90,12 +86,12 @@ class Test(test): @@ -90,12 +86,12 @@ class Test(test):
90 86
91 # Load counts cube and check content. 87 # Load counts cube and check content.
92 evt = gammalib.GCTAEventList('events.fits') 88 evt = gammalib.GCTAEventList('events.fits')
93 - self._test_list(evt, 4119) 89 + self._test_list(evt, 6881)
94 90
95 # Setup ctobssim command 91 # Setup ctobssim command
96 cmd = ctobssim+' inmodel="model_that_does_not_exist.xml"'+ \ 92 cmd = ctobssim+' inmodel="model_that_does_not_exist.xml"'+ \
97 ' outevents="events.fits"'+ \ 93 ' outevents="events.fits"'+ \
98 - ' caldb="irf" irf="cta_dummy_irf" '+ \ 94 + ' caldb="'+self._caldb+'" irf="'+self._irf+'" '+ \
99 ' ra=83.63 dec=22.01 rad=10.0'+ \ 95 ' ra=83.63 dec=22.01 rad=10.0'+ \
100 ' tmin=0.0 tmax=1800.0 emin=0.1 emax=100.0' 96 ' tmin=0.0 tmax=1800.0 emin=0.1 emax=100.0'
101 97
@@ -113,7 +109,7 @@ class Test(test): @@ -113,7 +109,7 @@ class Test(test):
113 """ 109 """
114 # Set-up ctobssim 110 # Set-up ctobssim
115 sim = ctools.ctobssim() 111 sim = ctools.ctobssim()
116 - sim['inmodel'] = self._model_name 112 + sim['inmodel'] = self._model
117 sim['outevents'] = 'events.fits' 113 sim['outevents'] = 'events.fits'
118 sim['caldb'] = self._caldb 114 sim['caldb'] = self._caldb
119 sim['irf'] = self._irf 115 sim['irf'] = self._irf
@@ -130,14 +126,14 @@ class Test(test): @@ -130,14 +126,14 @@ class Test(test):
130 126
131 # Check content of observation 127 # Check content of observation
132 self._test_observation(sim) 128 self._test_observation(sim)
133 - self._test_list(sim.obs()[0].events(), 4119) 129 + self._test_list(sim.obs()[0].events(), 6881)
134 130
135 # Save events 131 # Save events
136 sim.save() 132 sim.save()
137 133
138 # Load counts cube and check content. 134 # Load counts cube and check content.
139 evt = gammalib.GCTAEventList('events.fits') 135 evt = gammalib.GCTAEventList('events.fits')
140 - self._test_list(evt, 4119) 136 + self._test_list(evt, 6881)
141 137
142 # Set-up observation container 138 # Set-up observation container
143 pnts = [{'ra': 83.63, 'dec': 21.01}, 139 pnts = [{'ra': 83.63, 'dec': 21.01},
@@ -149,17 +145,17 @@ class Test(test): @@ -149,17 +145,17 @@ class Test(test):
149 # Set-up ctobssim from observation container 145 # Set-up ctobssim from observation container
150 sim = ctools.ctobssim(obs) 146 sim = ctools.ctobssim(obs)
151 sim['outevents'] = 'sim_events.xml' 147 sim['outevents'] = 'sim_events.xml'
152 - sim['inmodel'] = self._model_name 148 + sim['inmodel'] = self._model
153 149
154 # Run tool 150 # Run tool
155 sim.run() 151 sim.run()
156 152
157 # Retrieve observation and check content 153 # Retrieve observation and check content
158 self._test_observation(sim, nobs=4, pnts=pnts) 154 self._test_observation(sim, nobs=4, pnts=pnts)
159 - self._test_list(sim.obs()[0].events(), 4063)  
160 - self._test_list(sim.obs()[1].events(), 4059)  
161 - self._test_list(sim.obs()[2].events(), 4010)  
162 - self._test_list(sim.obs()[3].events(), 4138) 155 + self._test_list(sim.obs()[0].events(), 6003)
  156 + self._test_list(sim.obs()[1].events(), 6084)
  157 + self._test_list(sim.obs()[2].events(), 5955)
  158 + self._test_list(sim.obs()[3].events(), 6030)
163 159
164 # Save events 160 # Save events
165 sim.save() 161 sim.save()
@@ -168,10 +164,10 @@ class Test(test): @@ -168,10 +164,10 @@ class Test(test):
168 obs = gammalib.GObservations('sim_events.xml') 164 obs = gammalib.GObservations('sim_events.xml')
169 165
170 # Retrieve observation and check content 166 # Retrieve observation and check content
171 - self._test_list(obs[0].events(), 4063)  
172 - self._test_list(obs[1].events(), 4059)  
173 - self._test_list(obs[2].events(), 4010)  
174 - self._test_list(obs[3].events(), 4138) 167 + self._test_list(obs[0].events(), 6003)
  168 + self._test_list(obs[1].events(), 6084)
  169 + self._test_list(obs[2].events(), 5955)
  170 + self._test_list(obs[3].events(), 6030)
175 171
176 # Set-up ctobssim with invalid event file 172 # Set-up ctobssim with invalid event file
177 sim = ctools.ctobssim() 173 sim = ctools.ctobssim()
test/test_ctools.sh deleted
1 -#! /bin/sh  
2 -# ==========================================================================  
3 -# This script tests all ctools  
4 -#  
5 -# Copyright (C) 2011-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 -  
22 -#  
23 -# Get echo command (to circumvent built-in echo on some systems)  
24 -#  
25 -ECHO=`which echo`  
26 -  
27 -#  
28 -# Print Header  
29 -#  
30 -$ECHO "***************"  
31 -$ECHO "* Test ctools *"  
32 -$ECHO "***************"  
33 -  
34 -#  
35 -# Define executables  
36 -# ==================  
37 -ctbin=../src/ctbin/ctbin  
38 -ctlike=../src/ctlike/ctlike  
39 -cttsmap=../src/cttsmap/cttsmap  
40 -ctmodel=../src/ctmodel/ctmodel  
41 -ctobssim=../src/ctobssim/ctobssim  
42 -ctselect=../src/ctselect/ctselect  
43 -ctskymap=../src/ctskymap/ctskymap  
44 -ctexpcube=../src/ctexpcube/ctexpcube  
45 -ctpsfcube=../src/ctpsfcube/ctpsfcube  
46 -ctedispcube=../src/ctedispcube/ctedispcube  
47 -ctbkgcube=../src/ctbkgcube/ctbkgcube  
48 -ctcubemask=../src/ctcubemask/ctcubemask  
49 -ctbutterfly=../src/ctbutterfly/ctbutterfly  
50 -ctulimit=../src/ctulimit/ctulimit  
51 -cterror=../src/cterror/cterror  
52 -  
53 -  
54 -#  
55 -# Remove any existing result files  
56 -# ================================  
57 -rm -rf *.fits *.xml  
58 -rm -rf ulimit.dat butterfly.txt  
59 -  
60 -  
61 -#  
62 -# Creates pfiles directory  
63 -# ========================  
64 -rm -rf pfiles  
65 -mkdir -p pfiles  
66 -cp -r ../src/*/*.par pfiles/  
67 -export PFILES=pfiles  
68 -  
69 -  
70 -#  
71 -# Test ctobssim  
72 -# =============  
73 -$ECHO -n "Test ctobssim: "  
74 -  
75 -#  
76 -# Run 1  
77 -$ctobssim inmodel="data/crab.xml" \  
78 - outevents="events.fits" \  
79 - caldb="irf" \  
80 - irf="cta_dummy_irf" \  
81 - ra=83.63 \  
82 - dec=22.01 \  
83 - rad=10.0 \  
84 - tmin=0.0 \  
85 - tmax=1800.0 \  
86 - emin=0.1 \  
87 - emax=100.0  
88 -$ECHO -n "."  
89 -if [ -s "events.fits" ]  
90 -then  
91 - $ECHO -n "."  
92 -else  
93 - echo " events.fits file is not found"  
94 - exit 1  
95 -fi  
96 -$ECHO " ok"  
97 -  
98 -  
99 -#  
100 -# Test ctskymap  
101 -# =============  
102 -$ECHO -n "Test ctskymap: "  
103 -$ctskymap inobs="events.fits" \  
104 - outmap="skymap.fits" \  
105 - emin=0.1 \  
106 - emax=100.0 \  
107 - nxpix=200 \  
108 - nypix=200 \  
109 - binsz=0.02 \  
110 - coordsys="CEL" \  
111 - xref=83.63 \  
112 - yref=22.01 \  
113 - proj="CAR"  
114 -$ECHO -n "."  
115 -if [ -s "skymap.fits" ]  
116 -then  
117 - $ECHO -n "."  
118 -else  
119 - $ECHO " skymap.fits file is not found"  
120 - exit 1  
121 -fi  
122 -$ECHO " ok"  
123 -  
124 -  
125 -#  
126 -# Test ctbin  
127 -# ==========  
128 -$ECHO -n "Test ctbin: "  
129 -#  
130 -# Run 1  
131 -$ctbin inobs="events.fits" \  
132 - outcube="cntmap1.fits" \  
133 - emin=0.1 \  
134 - emax=100.0 \  
135 - enumbins=20 \  
136 - ebinalg="LOG" \  
137 - nxpix=200 \  
138 - nypix=200 \  
139 - binsz=0.02 \  
140 - coordsys="CEL" \  
141 - xref=83.63 \  
142 - yref=22.01 \  
143 - proj="CAR"  
144 -$ECHO -n "."  
145 -if [ -s "cntmap1.fits" ]  
146 -then  
147 - $ECHO -n "."  
148 -else  
149 - $ECHO " cntmap1.fits file is not found"  
150 - exit 1  
151 -fi  
152 -#  
153 -# Run 2  
154 -$ctbin inobs="events.fits" \  
155 - outcube="cntmap2.fits" \  
156 - emin=0.3 \  
157 - emax=8.0 \  
158 - enumbins=7 \  
159 - ebinalg="LOG" \  
160 - nxpix=30 \  
161 - nypix=30 \  
162 - binsz=0.05 \  
163 - coordsys="CEL" \  
164 - xref=86.63 \  
165 - yref=22.01 \  
166 - proj="CAR"  
167 -$ECHO -n "."  
168 -if [ -s "cntmap2.fits" ]  
169 -then  
170 - $ECHO -n "."  
171 -else  
172 - $ECHO " cntmap2.fits file is not found"  
173 - exit 1  
174 -fi  
175 -$ECHO " ok"  
176 -  
177 -#  
178 -# Test ctexpcube  
179 -# ==============  
180 -$ECHO -n "Test ctexpcube: "  
181 -#  
182 -# Run 1  
183 -$ctexpcube inobs="data/crab_events.fits" \  
184 - incube="NONE" \  
185 - outcube="expcube1.fits" \  
186 - caldb="irf" \  
187 - irf="cta_dummy_irf" \  
188 - emin=0.1 \  
189 - emax=100.0 \  
190 - enumbins=20 \  
191 - nxpix=200 \  
192 - nypix=200 \  
193 - binsz=0.02 \  
194 - coordsys="CEL" \  
195 - xref=83.63 \  
196 - yref=22.01 \  
197 - proj="CAR"  
198 -$ECHO -n "."  
199 -if [ -s "expcube1.fits" ]  
200 -then  
201 -$ECHO -n "."  
202 -else  
203 -$ECHO " expcube1.fits file is not found"  
204 -exit 1  
205 -fi  
206 -#  
207 -# Run 2  
208 -$ctexpcube inobs="events.fits" \  
209 - incube="cntmap2.fits" \  
210 - outcube="expcube2.fits" \  
211 - caldb="irf" \  
212 - irf="cta_dummy_irf"  
213 -$ECHO -n "."  
214 -if [ -s "expcube2.fits" ]  
215 -then  
216 -$ECHO -n "."  
217 -else  
218 -$ECHO " expcube2.fits file is not found"  
219 -exit 1  
220 -fi  
221 -$ECHO " ok"  
222 -  
223 -  
224 -#  
225 -# Test ctpsfcube  
226 -# ==============  
227 -$ECHO -n "Test ctpsfcube: "  
228 -#  
229 -# Run 1  
230 -$ctpsfcube inobs="data/crab_events.fits" \  
231 - incube="NONE" \  
232 - outcube="psfcube1.fits" \  
233 - caldb="irf" \  
234 - irf="cta_dummy_irf" \  
235 - emin=0.1 \  
236 - emax=100.0 \  
237 - enumbins=20 \  
238 - nxpix=10 \  
239 - nypix=10 \  
240 - binsz=0.4 \  
241 - coordsys="CEL" \  
242 - xref=83.63 \  
243 - yref=22.01 \  
244 - proj="CAR" \  
245 - amax=0.3 \  
246 - anumbins=10  
247 -$ECHO -n "."  
248 -if [ -s "psfcube1.fits" ]  
249 -then  
250 -$ECHO -n "."  
251 -else  
252 -$ECHO " psfcube1.fits file is not found"  
253 -exit 1  
254 -fi  
255 -#  
256 -# Run 2  
257 -$ctpsfcube inobs="events.fits" \  
258 - incube="cntmap2.fits" \  
259 - outcube="psfcube2.fits" \  
260 - caldb="irf" \  
261 - irf="cta_dummy_irf" \  
262 - amax=0.3 \  
263 - anumbins=2  
264 -$ECHO -n "."  
265 -if [ -s "psfcube2.fits" ]  
266 -then  
267 -$ECHO -n "."  
268 -else  
269 -$ECHO " psfcube2.fits file is not found"  
270 -exit 1  
271 -fi  
272 -$ECHO " ok"  
273 -  
274 -  
275 -#  
276 -# Test ctedispcube  
277 -# ==============  
278 -$ECHO -n "Test ctedispcube: "  
279 -#  
280 -# Run 1  
281 -$ctedispcube inobs="data/crab_events.fits" \  
282 - incube="NONE" \  
283 - outcube="edispcube1.fits" \  
284 - caldb="irf" \  
285 - irf="cta_dummy_irf" \  
286 - emin=0.1 \  
287 - emax=100.0 \  
288 - enumbins=20 \  
289 - nxpix=10 \  
290 - nypix=10 \  
291 - binsz=0.4 \  
292 - coordsys="CEL" \  
293 - xref=83.63 \  
294 - yref=22.01 \  
295 - proj="CAR" \  
296 - migramax=3.0 \  
297 - migrabins=10  
298 -$ECHO -n "."  
299 -if [ -s "edispcube1.fits" ]  
300 -then  
301 -$ECHO -n "."  
302 -else  
303 -$ECHO " edispcube1.fits file is not found"  
304 -exit 1  
305 -fi  
306 -#  
307 -# Run 2  
308 -$ctedispcube inobs="events.fits" \  
309 - incube="cntmap2.fits" \  
310 - outcube="edispcube2.fits" \  
311 - caldb="irf" \  
312 - irf="cta_dummy_irf" \  
313 - migramax=3.0 \  
314 - migrabins=3  
315 -$ECHO -n "."  
316 -if [ -s "edispcube2.fits" ]  
317 -then  
318 -$ECHO -n "."  
319 -else  
320 -$ECHO " edispcube2.fits file is not found"  
321 -exit 1  
322 -fi  
323 -$ECHO " ok"  
324 -  
325 -  
326 -#  
327 -# Test ctbkgcube  
328 -# ==============  
329 -$ECHO -n "Test ctbkgcube: "  
330 -#  
331 -# Run 1  
332 -$ctbkgcube inobs="data/crab_events.fits" \  
333 - inmodel="data/crab.xml" \  
334 - incube="NONE" \  
335 - outcube="bkgcube1.fits" \  
336 - outmodel="bkgcube1.xml" \  
337 - caldb="irf" \  
338 - irf="cta_dummy_irf" \  
339 - emin=0.1 \  
340 - emax=100.0 \  
341 - enumbins=20 \  
342 - nxpix=10 \  
343 - nypix=10 \  
344 - binsz=0.4 \  
345 - coordsys="CEL" \  
346 - xref=83.63 \  
347 - yref=22.01 \  
348 - proj="CAR"  
349 -$ECHO -n "."  
350 -if [ -s "bkgcube1.fits" ]  
351 -then  
352 -$ECHO -n "."  
353 -else  
354 -$ECHO " bkgcube1.fits file is not found"  
355 -exit 1  
356 -fi  
357 -if [ -s "bkgcube1.xml" ]  
358 -then  
359 -$ECHO -n "."  
360 -else  
361 -$ECHO " bkgcube1.xml file is not found"  
362 -exit 1  
363 -fi  
364 -#  
365 -# Run 2  
366 -$ctbkgcube inobs="events.fits" \  
367 - inmodel="data/crab.xml" \  
368 - incube="cntmap2.fits" \  
369 - caldb="irf" \  
370 - irf="cta_dummy_irf" \  
371 - outcube="bkgcube2.fits" \  
372 - outmodel="bkgcube2.xml"  
373 -$ECHO -n "."  
374 -if [ -s "bkgcube2.fits" ]  
375 -then  
376 -$ECHO -n "."  
377 -else  
378 -$ECHO " bkgcube2.fits file is not found"  
379 -exit 1  
380 -fi  
381 -if [ -s "bkgcube2.fits" ]  
382 -then  
383 -$ECHO -n "."  
384 -else  
385 -$ECHO " bkgcube2.xml file is not found"  
386 -exit 1  
387 -fi  
388 -$ECHO " ok"  
389 -  
390 -  
391 -#  
392 -# Test ctmodel  
393 -# ============  
394 -$ECHO -n "Test ctmodel: "  
395 -#  
396 -# Run 1  
397 -$ctmodel inobs="cntmap1.fits" \  
398 - incube="cntmap1.fits" \  
399 - outcube="modmap1.fits" \  
400 - expcube="NONE" \  
401 - psfcube="NONE" \  
402 - bkgcube="NONE" \  
403 - edispcube="NONE" \  
404 - caldb="irf" \  
405 - irf="cta_dummy_irf" \  
406 - inmodel="data/crab.xml"  
407 -$ECHO -n "."  
408 -if [ -s "modmap1.fits" ]  
409 -then  
410 - $ECHO -n "."  
411 -else  
412 - $ECHO " modmap1.fits file is not found"  
413 - exit 1  
414 -fi  
415 -  
416 -#  
417 -# Run 2  
418 -$ctmodel inobs="cntmap2.fits" \  
419 - incube="cntmap2.fits" \  
420 - outcube="modmap2.fits" \  
421 - expcube="expcube2.fits" \  
422 - psfcube="psfcube2.fits" \  
423 - edispcube="edispcube2.fits" \  
424 - bkgcube="bkgcube2.fits" \  
425 - caldb="irf" \  
426 - irf="cta_dummy_irf" \  
427 - inmodel="bkgcube2.xml"  
428 -$ECHO -n "."  
429 -if [ -s "modmap2.fits" ]  
430 -then  
431 -$ECHO -n "."  
432 -else  
433 -$ECHO " modmap2.fits file is not found"  
434 -exit 1  
435 -fi  
436 -  
437 -#  
438 -# Run 3  
439 -$ctmodel inobs="NONE" \  
440 - incube="NONE" \  
441 - outcube="modmap3.fits" \  
442 - expcube="NONE" \  
443 - psfcube="NONE" \  
444 - edispcube="NONE" \  
445 - bkgcube="NONE" \  
446 - caldb="irf" \  
447 - irf="cta_dummy_irf" \  
448 - inmodel="data/crab.xml" \  
449 - ra=83.63 \  
450 - dec=22.01 \  
451 - rad=10.0 \  
452 - tmin=0.0 \  
453 - tmax=1800.0 \  
454 - emin=0.1 \  
455 - emax=100.0 \  
456 - enumbins=20 \  
457 - nxpix=200 \  
458 - nypix=200 \  
459 - binsz=0.02 \  
460 - coordsys="CEL" \  
461 - xref=83.63 \  
462 - yref=22.01 \  
463 - proj="CAR"  
464 -$ECHO -n "."  
465 -if [ -s "modmap3.fits" ]  
466 -then  
467 - $ECHO -n "."  
468 -else  
469 - $ECHO " modmap3.fits file is not found"  
470 - exit 1  
471 -fi  
472 -$ECHO " ok"  
473 -  
474 -  
475 -#  
476 -# Test ctselect  
477 -# =============  
478 -$ECHO -n "Test ctselect: "  
479 -$ctselect inobs="events.fits" \  
480 - outobs="selected_events.fits" \  
481 - ra=83.63 \  
482 - dec=22.01 \  
483 - rad=10.0 \  
484 - tmin=0.0 \  
485 - tmax=1800.0 \  
486 - emin=0.1 \  
487 - emax=100.0  
488 -$ECHO -n "."  
489 -if [ -s "selected_events.fits" ]  
490 -then  
491 - $ECHO -n "."  
492 -else  
493 - $ECHO " selected_events.fits file is not found"  
494 - exit 1  
495 -fi  
496 -$ECHO " ok"  
497 -  
498 -  
499 -#  
500 -# Test ctlike  
501 -# ===========  
502 -$ECHO -n "Test ctlike: "  
503 -#  
504 -# Run 1  
505 -$ctlike inobs="cntmap1.fits" \  
506 - inmodel="data/crab.xml" \  
507 - outmodel="results_binned.xml" \  
508 - expcube="NONE" \  
509 - psfcube="NONE" \  
510 - edispcube="NONE" \  
511 - bkgcube="NONE" \  
512 - caldb="irf" \  
513 - irf="cta_dummy_irf"  
514 -$ECHO -n "."  
515 -if [ -s "results_binned.xml" ]  
516 -then  
517 - $ECHO -n "."  
518 -else  
519 - $ECHO " results_binned.xml file is not found"  
520 - exit 1  
521 -fi  
522 -#  
523 -# Run 2  
524 -$ctlike inobs="selected_events.fits" \  
525 - inmodel="data/crab.xml" \  
526 - outmodel="results_unbinned.xml" \  
527 - caldb="irf" \  
528 - irf="cta_dummy_irf"  
529 -$ECHO -n "."  
530 -if [ -s "results_unbinned.xml" ]  
531 -then  
532 - $ECHO -n "."  
533 -else  
534 - $ECHO " results_unbinned.xml file is not found"  
535 - exit 1  
536 -fi  
537 -  
538 -#  
539 -# Run 3  
540 -$ctlike inobs="cntmap2.fits" \  
541 - inmodel="bkgcube2.xml" \  
542 - outmodel="results_binned_cube_background.xml" \  
543 - expcube="expcube2.fits" \  
544 - psfcube="psfcube2.fits" \  
545 - edispcube="NONE" \  
546 - bkgcube="bkgcube2.fits" \  
547 - caldb="irf" \  
548 - irf="cta_dummy_irf"  
549 -$ECHO -n "."  
550 -if [ -s "results_binned_cube_background.xml" ]  
551 -then  
552 - $ECHO -n "."  
553 -else  
554 - $ECHO " results_binned_cube_background.xml file is not found"  
555 - exit 1  
556 -fi  
557 -  
558 -  
559 -#  
560 -# Run 4  
561 -$ctlike inobs="cntmap2.fits" \  
562 - inmodel="bkgcube2.xml" \  
563 - outmodel="results_binned_cube_background_edisp.xml" \  
564 - expcube="expcube2.fits" \  
565 - psfcube="psfcube2.fits" \  
566 - edispcube="edispcube2.fits" \  
567 - bkgcube="bkgcube2.fits" \  
568 - edisp="yes"  
569 - caldb="irf" \  
570 - irf="cta_dummy_irf"  
571 -$ECHO -n "."  
572 -if [ -s "results_binned_cube_background_edisp.xml" ]  
573 -then  
574 - $ECHO -n "."  
575 -else  
576 - $ECHO " results_binned_cube_background_edisp.xml file is not found"  
577 - exit 1  
578 -fi  
579 -$ECHO " ok"  
580 -  
581 -  
582 -#  
583 -# Test cttsmap  
584 -# ============  
585 -$ECHO -n "Test cttsmap: "  
586 -$cttsmap inobs="selected_events.fits" \  
587 - inmodel="data/crab.xml" \  
588 - srcname="Crab" \  
589 - caldb="irf" \  
590 - irf="cta_dummy_irf" \  
591 - outmap="tsmap.fits" \  
592 - nxpix=5 \  
593 - nypix=5 \  
594 - binsz=0.05 \  
595 - coordsys="CEL" \  
596 - xref=83.63 \  
597 - yref=22.01 \  
598 - proj="CAR"  
599 -$ECHO -n "."  
600 -if [ -s "tsmap.fits" ]  
601 -then  
602 - $ECHO -n "."  
603 -else  
604 - $ECHO " tsmap.fits file is not found"  
605 - exit 1  
606 -fi  
607 -$ECHO " ok"  
608 -  
609 -  
610 -#  
611 -# Test ctcubemask  
612 -# ===============  
613 -$ECHO -n "Test ctcubemask: "  
614 -$ctcubemask inobs="data/crab_cntmap.fits" \  
615 - regfile="data/exclusion.reg" \  
616 - outcube="filtered_cube.fits" \  
617 - ra=83.63 \  
618 - dec=22.01 \  
619 - rad=2.0 \  
620 - emin=0.1 \  
621 - emax=100.0  
622 -$ECHO -n "."  
623 -if [ -s "filtered_cube.fits" ]  
624 -then  
625 - $ECHO -n "."  
626 -else  
627 - $ECHO " filtered_cube.fits file is not found"  
628 - exit 1  
629 -fi  
630 -$ECHO " ok"  
631 -  
632 -  
633 -#  
634 -# Test ctbutterfly  
635 -# ===============  
636 -$ECHO -n "Test ctbutterfly: "  
637 -$ctbutterfly inobs="data/crab_events.fits.gz" \  
638 - inmodel="data/crab.xml" \  
639 - srcname="Crab" \  
640 - outfile="butterfly.txt" \  
641 - caldb="irf" \  
642 - irf="cta_dummy_irf" \  
643 - emin=0.1 \  
644 - emax=100.0  
645 -$ECHO -n "."  
646 -if [ -s "butterfly.txt" ]  
647 -then  
648 - $ECHO -n "."  
649 -else  
650 - $ECHO " butterfly.txt file is not found"  
651 - exit 1  
652 -fi  
653 -$ECHO " ok"  
654 -  
655 -  
656 -#  
657 -# Test ctulimit  
658 -# ===============  
659 -$ECHO -n "Test ctulimit: "  
660 -$ctulimit inobs="data/crab_events.fits.gz" \  
661 - inmodel="data/crab.xml" \  
662 - srcname="Crab" \  
663 - caldb="irf" \  
664 - irf="cta_dummy_irf"  
665 -$ECHO -n "."  
666 -if [ -s "ctulimit.log" ]  
667 -then  
668 - $ECHO -n "."  
669 -else  
670 - $ECHO " ctulimit.log file is not found"  
671 - exit 1  
672 -fi  
673 -$ECHO " ok"  
674 -  
675 -  
676 -#  
677 -# Test cterror  
678 -# ============  
679 -$ECHO -n "Test cterror: "  
680 -$cterror inobs="data/crab_events.fits.gz" \  
681 - inmodel="data/crab.xml" \  
682 - outmodel="results_error.xml" \  
683 - srcname="Crab" \  
684 - caldb="irf" \  
685 - irf="cta_dummy_irf"  
686 -$ECHO -n "."  
687 -if [ -s "cterror.log" ]  
688 -then  
689 - $ECHO -n "."  
690 -else  
691 - $ECHO " cterror.log file is not found"  
692 - exit 1  
693 -fi  
694 -$ECHO " ok"  
695 -  
test/test_ctpsfcube.py
@@ -65,10 +65,10 @@ class Test(test): @@ -65,10 +65,10 @@ class Test(test):
65 ctpsfcube = self._tool('ctpsfcube') 65 ctpsfcube = self._tool('ctpsfcube')
66 66
67 # Setup ctpsfcube command 67 # Setup ctpsfcube command
68 - cmd = ctpsfcube+' inobs="data/crab_events.fits"'+ \ 68 + cmd = ctpsfcube+' inobs="'+self._events+'"'+ \
69 ' incube="NONE"'+ \ 69 ' incube="NONE"'+ \
70 ' outcube="ctpsfcube_cmd1.fits"'+ \ 70 ' outcube="ctpsfcube_cmd1.fits"'+ \
71 - ' caldb="prod2" irf="South_0.5h"'+ \ 71 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
72 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \ 72 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \
73 ' nxpix=200 nypix=200 binsz=0.02'+ \ 73 ' nxpix=200 nypix=200 binsz=0.02'+ \
74 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 74 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -90,7 +90,7 @@ class Test(test): @@ -90,7 +90,7 @@ class Test(test):
90 cmd = ctpsfcube+' inobs="event_file_that_does_not_exist.fits"'+ \ 90 cmd = ctpsfcube+' inobs="event_file_that_does_not_exist.fits"'+ \
91 ' incube="NONE"'+ \ 91 ' incube="NONE"'+ \
92 ' outcube="ctpsfcube_cmd2.fits"'+ \ 92 ' outcube="ctpsfcube_cmd2.fits"'+ \
93 - ' caldb="prod2" irf="South_0.5h"'+ \ 93 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
94 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \ 94 ' ebinalg="LOG" emin=0.1 emax=100.0 enumbins=20'+ \
95 ' nxpix=200 nypix=200 binsz=0.02'+ \ 95 ' nxpix=200 nypix=200 binsz=0.02'+ \
96 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 96 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -111,11 +111,11 @@ class Test(test): @@ -111,11 +111,11 @@ class Test(test):
111 """ 111 """
112 # Set-up ctpsfcube 112 # Set-up ctpsfcube
113 psfcube = ctools.ctpsfcube() 113 psfcube = ctools.ctpsfcube()
114 - psfcube['inobs'] = 'data/crab_events.fits' 114 + psfcube['inobs'] = self._events
115 psfcube['incube'] = 'NONE' 115 psfcube['incube'] = 'NONE'
116 psfcube['outcube'] = 'ctpsfcube_py1.fits' 116 psfcube['outcube'] = 'ctpsfcube_py1.fits'
117 - psfcube['caldb'] = 'prod2'  
118 - psfcube['irf'] = 'South_0.5h' 117 + psfcube['caldb'] = self._caldb
  118 + psfcube['irf'] = self._irf
119 psfcube['ebinalg'] = 'LOG' 119 psfcube['ebinalg'] = 'LOG'
120 psfcube['emin'] = 0.1 120 psfcube['emin'] = 0.1
121 psfcube['emax'] = 100 121 psfcube['emax'] = 100
test/test_ctselect.py
@@ -65,7 +65,7 @@ class Test(test): @@ -65,7 +65,7 @@ class Test(test):
65 ctselect = self._tool('ctselect') 65 ctselect = self._tool('ctselect')
66 66
67 # Setup ctselect command 67 # Setup ctselect command
68 - cmd = ctselect+' inobs="data/crab_events.fits"'+ \ 68 + cmd = ctselect+' inobs="'+self._events+'"'+ \
69 ' outobs="ctselect_cmd1.fits"'+ \ 69 ' outobs="ctselect_cmd1.fits"'+ \
70 ' ra=83.63 dec=22.01 rad=3.0'+ \ 70 ' ra=83.63 dec=22.01 rad=3.0'+ \
71 ' tmin=0.0 tmax=1800.0'+ \ 71 ' tmin=0.0 tmax=1800.0'+ \
@@ -105,7 +105,7 @@ class Test(test): @@ -105,7 +105,7 @@ class Test(test):
105 """ 105 """
106 # Set-up ctselect 106 # Set-up ctselect
107 select = ctools.ctselect() 107 select = ctools.ctselect()
108 - select['inobs'] = 'data/crab_events.fits' 108 + select['inobs'] = self._events
109 select['outobs'] = 'ctselect_py1.fits' 109 select['outobs'] = 'ctselect_py1.fits'
110 select['ra'] = 83.63 110 select['ra'] = 83.63
111 select['dec'] = 22.01 111 select['dec'] = 22.01
test/test_ctskymap.py
@@ -65,7 +65,7 @@ class Test(test): @@ -65,7 +65,7 @@ class Test(test):
65 ctskymap = self._tool('ctskymap') 65 ctskymap = self._tool('ctskymap')
66 66
67 # Setup ctskymap command 67 # Setup ctskymap command
68 - cmd = ctskymap+' inobs="data/crab_events.fits"'+\ 68 + cmd = ctskymap+' inobs="'+self._events+'"'+\
69 ' outmap="ctskymap_cmd1.fits"'+ \ 69 ' outmap="ctskymap_cmd1.fits"'+ \
70 ' emin=0.1 emax=100.0 nxpix=200 nypix=200'+ \ 70 ' emin=0.1 emax=100.0 nxpix=200 nypix=200'+ \
71 ' binsz=0.02 coordsys="CEL" proj="CAR"'+ \ 71 ' binsz=0.02 coordsys="CEL" proj="CAR"'+ \
@@ -105,7 +105,7 @@ class Test(test): @@ -105,7 +105,7 @@ class Test(test):
105 """ 105 """
106 # Set-up ctskymap 106 # Set-up ctskymap
107 skymap = ctools.ctskymap() 107 skymap = ctools.ctskymap()
108 - skymap['inobs'] = 'data/crab_events.fits' 108 + skymap['inobs'] = self._events
109 skymap['outmap'] = 'ctskymap_py1.fits' 109 skymap['outmap'] = 'ctskymap_py1.fits'
110 skymap['emin'] = 0.1 110 skymap['emin'] = 0.1
111 skymap['emax'] = 100 111 skymap['emax'] = 100
test/test_cttsmap.py
@@ -33,7 +33,7 @@ class Test(test): @@ -33,7 +33,7 @@ class Test(test):
33 # Constructor 33 # Constructor
34 def __init__(self): 34 def __init__(self):
35 """ 35 """
36 - Constructor. 36 + Constructor
37 """ 37 """
38 # Call base class constructor 38 # Call base class constructor
39 test.__init__(self) 39 test.__init__(self)
@@ -65,9 +65,9 @@ class Test(test): @@ -65,9 +65,9 @@ class Test(test):
65 cttsmap = self._tool('cttsmap') 65 cttsmap = self._tool('cttsmap')
66 66
67 # Setup cttsmap command 67 # Setup cttsmap command
68 - cmd = cttsmap+' inobs="data/crab_events.fits"'+ \  
69 - ' inmodel="data/crab.xml" srcname="Crab"'+ \  
70 - ' caldb="prod2" irf="South_0.5h"'+ \ 68 + cmd = cttsmap+' inobs="'+self._events+'"'+ \
  69 + ' inmodel="'+self._model+'" srcname="Crab"'+ \
  70 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
71 ' outmap="cttsmap_cmd1.fits"'+ \ 71 ' outmap="cttsmap_cmd1.fits"'+ \
72 ' nxpix=5 nypix=5 binsz=0.02'+ \ 72 ' nxpix=5 nypix=5 binsz=0.02'+ \
73 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 73 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -86,8 +86,8 @@ class Test(test): @@ -86,8 +86,8 @@ class Test(test):
86 86
87 # Setup cttsmap command 87 # Setup cttsmap command
88 cmd = cttsmap+' inobs="event_file_that_does_not_exist.fits"'+ \ 88 cmd = cttsmap+' inobs="event_file_that_does_not_exist.fits"'+ \
89 - ' inmodel="data/crab.xml" srcname="Crab"'+ \  
90 - ' caldb="prod2" irf="South_0.5h"'+ \ 89 + ' inmodel="'+self._model+'" srcname="Crab"'+ \
  90 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
91 ' outmap="cttsmap_cmd2.fits"'+ \ 91 ' outmap="cttsmap_cmd2.fits"'+ \
92 ' nxpix=5 nypix=5 binsz=0.02'+ \ 92 ' nxpix=5 nypix=5 binsz=0.02'+ \
93 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \ 93 ' coordsys="CEL" proj="CAR" xref=83.63 yref=22.01'+ \
@@ -107,11 +107,11 @@ class Test(test): @@ -107,11 +107,11 @@ class Test(test):
107 """ 107 """
108 # Set-up cttsmap 108 # Set-up cttsmap
109 tsmap = ctools.cttsmap() 109 tsmap = ctools.cttsmap()
110 - tsmap['inobs'] = 'data/crab_events.fits'  
111 - tsmap['inmodel'] = 'data/crab.xml' 110 + tsmap['inobs'] = self._events
  111 + tsmap['inmodel'] = self._model
112 tsmap['srcname'] = 'Crab' 112 tsmap['srcname'] = 'Crab'
113 - tsmap['caldb'] = 'prod2'  
114 - tsmap['irf'] = 'South_0.5h' 113 + tsmap['caldb'] = self._caldb
  114 + tsmap['irf'] = self._irf
115 tsmap['outmap'] = 'cttsmap_py1.fits' 115 tsmap['outmap'] = 'cttsmap_py1.fits'
116 tsmap['nxpix'] = 5 116 tsmap['nxpix'] = 5
117 tsmap['nypix'] = 5 117 tsmap['nypix'] = 5
test/test_ctulimit.py
@@ -65,9 +65,9 @@ class Test(test): @@ -65,9 +65,9 @@ class Test(test):
65 ctulimit = self._tool('ctulimit') 65 ctulimit = self._tool('ctulimit')
66 66
67 # Setup ctulimit command 67 # Setup ctulimit command
68 - cmd = ctulimit+' inobs="data/crab_events.fits"'+ \  
69 - ' inmodel="data/crab.xml" srcname="Crab"'+ \  
70 - ' caldb="prod2" irf="South_0.5h"'+ \ 68 + cmd = ctulimit+' inobs="'+self._events+'"'+ \
  69 + ' inmodel="'+self._model+'" srcname="Crab"'+ \
  70 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
71 ' logfile="ctulimit_cmd1.log" chatter=1' 71 ' logfile="ctulimit_cmd1.log" chatter=1'
72 72
73 # Check if execution of wrong command fails 73 # Check if execution of wrong command fails
@@ -83,8 +83,8 @@ class Test(test): @@ -83,8 +83,8 @@ class Test(test):
83 83
84 # Setup ctulimit command 84 # Setup ctulimit command
85 cmd = ctulimit+' inobs="event_file_that_does_not_exist.fits"'+ \ 85 cmd = ctulimit+' inobs="event_file_that_does_not_exist.fits"'+ \
86 - ' inmodel="data/crab.xml" srcname="Crab"'+ \  
87 - ' caldb="prod2" irf="South_0.5h"'+ \ 86 + ' inmodel="'+self._model+'" srcname="Crab"'+ \
  87 + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \
88 ' logfile="ctulimit_cmd2.log" chatter=1' 88 ' logfile="ctulimit_cmd2.log" chatter=1'
89 89
90 # Check if execution failed 90 # Check if execution failed
@@ -101,11 +101,11 @@ class Test(test): @@ -101,11 +101,11 @@ class Test(test):
101 """ 101 """
102 # Set-up ctulimit 102 # Set-up ctulimit
103 ulimit = ctools.ctulimit() 103 ulimit = ctools.ctulimit()
104 - ulimit['inobs'] = 'data/crab_events.fits'  
105 - ulimit['inmodel'] = 'data/crab.xml' 104 + ulimit['inobs'] = self._events
  105 + ulimit['inmodel'] = self._model
106 ulimit['srcname'] = 'Crab' 106 ulimit['srcname'] = 'Crab'
107 - ulimit['caldb'] = 'prod2'  
108 - ulimit['irf'] = 'South_0.5h' 107 + ulimit['caldb'] = self._caldb
  108 + ulimit['irf'] = self._irf
109 ulimit['logfile'] = 'ctulimit_py1.log' 109 ulimit['logfile'] = 'ctulimit_py1.log'
110 ulimit['chatter'] = 2 110 ulimit['chatter'] = 2
111 111
test/test_examples.py.in
@@ -40,6 +40,9 @@ class Test(gammalib.GPythonTestSuite): @@ -40,6 +40,9 @@ class Test(gammalib.GPythonTestSuite):
40 # Call base class constructor 40 # Call base class constructor
41 gammalib.GPythonTestSuite.__init__(self) 41 gammalib.GPythonTestSuite.__init__(self)
42 42
  43 + # Set test data directory
  44 + self._datadir = os.environ['TEST_DATA']
  45 +
43 # Return 46 # Return
44 return 47 return
45 48
@@ -58,7 +61,7 @@ class Test(gammalib.GPythonTestSuite): @@ -58,7 +61,7 @@ class Test(gammalib.GPythonTestSuite):
58 String with name to be used for logging 61 String with name to be used for logging
59 """ 62 """
60 # Setup command 63 # Setup command
61 - cmd = '@PYTHON_COVERAGE@../examples/' + name + '.py' 64 + cmd = '@PYTHON_COVERAGE@@top_srcdir@/examples/' + name + '.py'
62 if len(args) > 0: 65 if len(args) > 0:
63 cmd += ' ' + args 66 cmd += ' ' + args
64 67
@@ -89,26 +92,46 @@ class Test(gammalib.GPythonTestSuite): @@ -89,26 +92,46 @@ class Test(gammalib.GPythonTestSuite):
89 self.name('examples') 92 self.name('examples')
90 93
91 # Append tests 94 # Append tests
92 - self.append(self.test_generate_prod3_irfs, 'Test generate_prod3_irfs.py')  
93 - self.append(self.test_make_pointings, 'Test make_pointings.py')  
94 - self.append(self.test_make_spectrum, 'Test make_spectrum.py')  
95 - self.append(self.test_make_ts_distributions, 'Test make_ts_distributions.py')  
96 - self.append(self.test_pipeline_binned_disk, 'Test pipeline_binned_disk.py')  
97 - self.append(self.test_pipeline_binned_mem, 'Test pipeline_binned_mem.py')  
98 - self.append(self.test_pipeline_stacked_disk, 'Test pipeline_stacked_disk.py')  
99 - self.append(self.test_pipeline_stacked_mem, 'Test pipeline_stacked_mem.py')  
100 - self.append(self.test_pipeline_unbinned_disk, 'Test pipeline_unbinned_disk.py')  
101 - self.append(self.test_pipeline_unbinned_mem, 'Test pipeline_unbinned_mem.py')  
102 - self.append(self.test_show_butterfly, 'Test show_butterfly.py')  
103 - self.append(self.test_show_model, 'Test show_model.py')  
104 - self.append(self.test_show_pha, 'Test show_pha.py')  
105 - self.append(self.test_show_pull_evolution, 'Test show_pull_evolution.py')  
106 - self.append(self.test_show_pull_histogram, 'Test show_pull_histogram.py')  
107 - self.append(self.test_show_response, 'Test test_show_response.py')  
108 - self.append(self.test_show_sensitivity, 'Test test_show_sensitivity.py')  
109 - self.append(self.test_show_spectrum, 'Test test_show_spectrum.py')  
110 - self.append(self.test_show_ts_distribution, 'Test show_ts_distribution.py')  
111 - self.append(self.test_show_obs, 'Test show_obs.py') 95 + self.append(self.test_generate_prod3_irfs,
  96 + 'Test generate_prod3_irfs.py')
  97 + self.append(self.test_make_pointings,
  98 + 'Test make_pointings.py')
  99 + self.append(self.test_make_spectrum,
  100 + 'Test make_spectrum.py')
  101 + self.append(self.test_make_ts_distributions,
  102 + 'Test make_ts_distributions.py')
  103 + self.append(self.test_pipeline_binned_disk,
  104 + 'Test pipeline_binned_disk.py')
  105 + self.append(self.test_pipeline_binned_mem,
  106 + 'Test pipeline_binned_mem.py')
  107 + self.append(self.test_pipeline_stacked_disk,
  108 + 'Test pipeline_stacked_disk.py')
  109 + self.append(self.test_pipeline_stacked_mem,
  110 + 'Test pipeline_stacked_mem.py')
  111 + self.append(self.test_pipeline_unbinned_disk,
  112 + 'Test pipeline_unbinned_disk.py')
  113 + self.append(self.test_pipeline_unbinned_mem,
  114 + 'Test pipeline_unbinned_mem.py')
  115 + self.append(self.test_show_butterfly,
  116 + 'Test show_butterfly.py')
  117 + self.append(self.test_show_model,
  118 + 'Test show_model.py')
  119 + self.append(self.test_show_pha,
  120 + 'Test show_pha.py')
  121 + self.append(self.test_show_pull_evolution,
  122 + 'Test show_pull_evolution.py')
  123 + self.append(self.test_show_pull_histogram,
  124 + 'Test show_pull_histogram.py')
  125 + self.append(self.test_show_response,
  126 + 'Test test_show_response.py')
  127 + self.append(self.test_show_sensitivity,
  128 + 'Test test_show_sensitivity.py')
  129 + self.append(self.test_show_spectrum,
  130 + 'Test test_show_spectrum.py')
  131 + self.append(self.test_show_ts_distribution,
  132 + 'Test show_ts_distribution.py')
  133 + self.append(self.test_show_obs,
  134 + 'Test show_obs.py')
112 135
113 # Return 136 # Return
114 return 137 return
@@ -138,7 +161,8 @@ class Test(gammalib.GPythonTestSuite): @@ -138,7 +161,8 @@ class Test(gammalib.GPythonTestSuite):
138 Test generate_prod3_irfs 161 Test generate_prod3_irfs
139 """ 162 """
140 # Execute script 163 # Execute script
141 - self._execute_python('generate_prod3_irfs') 164 + self._execute_python('generate_prod3_irfs',
  165 + args=self._datadir)
142 166
143 # Return 167 # Return
144 return 168 return
@@ -149,7 +173,8 @@ class Test(gammalib.GPythonTestSuite): @@ -149,7 +173,8 @@ class Test(gammalib.GPythonTestSuite):
149 Test make_spectrum 173 Test make_spectrum
150 """ 174 """
151 # Execute script 175 # Execute script
152 - self._execute_python('make_spectrum', args='eps') 176 + self._execute_python('make_spectrum',
  177 + args=self._datadir+' eps')
153 178
154 # Return 179 # Return
155 return 180 return
@@ -160,7 +185,8 @@ class Test(gammalib.GPythonTestSuite): @@ -160,7 +185,8 @@ class Test(gammalib.GPythonTestSuite):
160 Test make_ts_distributions 185 Test make_ts_distributions
161 """ 186 """
162 # Execute script 187 # Execute script
163 - self._execute_python('make_ts_distributions', args='-n 2 -e 0 -d 1800') 188 + self._execute_python('make_ts_distributions',
  189 + args='-n 2 -e 0 -d 1800 -p '+self._datadir)
164 190
165 # Return 191 # Return
166 return 192 return
@@ -171,7 +197,7 @@ class Test(gammalib.GPythonTestSuite): @@ -171,7 +197,7 @@ class Test(gammalib.GPythonTestSuite):
171 Test pipeline_binned_disk 197 Test pipeline_binned_disk
172 """ 198 """
173 # Execute script 199 # Execute script
174 - self._execute_python('pipeline_binned_disk') 200 + self._execute_python('pipeline_binned_disk', args=self._datadir)
175 201
176 # Return 202 # Return
177 return 203 return
@@ -182,7 +208,7 @@ class Test(gammalib.GPythonTestSuite): @@ -182,7 +208,7 @@ class Test(gammalib.GPythonTestSuite):
182 Test pipeline_binned_mem 208 Test pipeline_binned_mem
183 """ 209 """
184 # Execute script 210 # Execute script
185 - self._execute_python('pipeline_binned_mem') 211 + self._execute_python('pipeline_binned_mem', args=self._datadir)
186 212
187 # Return 213 # Return
188 return 214 return
@@ -193,7 +219,7 @@ class Test(gammalib.GPythonTestSuite): @@ -193,7 +219,7 @@ class Test(gammalib.GPythonTestSuite):
193 Test pipeline_stacked_disk 219 Test pipeline_stacked_disk
194 """ 220 """
195 # Execute script 221 # Execute script
196 - self._execute_python('pipeline_stacked_disk') 222 + self._execute_python('pipeline_stacked_disk', args=self._datadir)
197 223
198 # Return 224 # Return
199 return 225 return
@@ -204,7 +230,7 @@ class Test(gammalib.GPythonTestSuite): @@ -204,7 +230,7 @@ class Test(gammalib.GPythonTestSuite):
204 Test pipeline_stacked_mem 230 Test pipeline_stacked_mem
205 """ 231 """
206 # Execute script 232 # Execute script
207 - self._execute_python('pipeline_stacked_mem') 233 + self._execute_python('pipeline_stacked_mem', args=self._datadir)
208 234
209 # Return 235 # Return
210 return 236 return
@@ -215,7 +241,7 @@ class Test(gammalib.GPythonTestSuite): @@ -215,7 +241,7 @@ class Test(gammalib.GPythonTestSuite):
215 Test pipeline_unbinned_disk 241 Test pipeline_unbinned_disk
216 """ 242 """
217 # Execute script 243 # Execute script
218 - self._execute_python('pipeline_unbinned_disk') 244 + self._execute_python('pipeline_unbinned_disk', args=self._datadir)
219 245
220 # Return 246 # Return
221 return 247 return
@@ -226,7 +252,7 @@ class Test(gammalib.GPythonTestSuite): @@ -226,7 +252,7 @@ class Test(gammalib.GPythonTestSuite):
226 Test pipeline_unbinned_mem 252 Test pipeline_unbinned_mem
227 """ 253 """
228 # Execute script 254 # Execute script
229 - self._execute_python('pipeline_unbinned_mem') 255 + self._execute_python('pipeline_unbinned_mem', args=self._datadir)
230 256
231 # Return 257 # Return
232 return 258 return
@@ -238,7 +264,7 @@ class Test(gammalib.GPythonTestSuite): @@ -238,7 +264,7 @@ class Test(gammalib.GPythonTestSuite):
238 """ 264 """
239 # Execute script 265 # Execute script
240 self._execute_python('show_butterfly', 266 self._execute_python('show_butterfly',
241 - args='data/butterfly.txt ' 267 + args=self._datadir+'/butterfly.txt '
242 'example_show_butterfly.eps') 268 'example_show_butterfly.eps')
243 269
244 # Return 270 # Return
@@ -251,7 +277,8 @@ class Test(gammalib.GPythonTestSuite): @@ -251,7 +277,8 @@ class Test(gammalib.GPythonTestSuite):
251 """ 277 """
252 # Execute script 278 # Execute script
253 self._execute_python('show_model', 279 self._execute_python('show_model',
254 - args='data/crab.xml Crab example_show_model.eps') 280 + args=self._datadir+'/crab.xml '
  281 + 'Crab example_show_model.eps')
255 282
256 # Return 283 # Return
257 return 284 return
@@ -263,7 +290,8 @@ class Test(gammalib.GPythonTestSuite): @@ -263,7 +290,8 @@ class Test(gammalib.GPythonTestSuite):
263 """ 290 """
264 # Execute script 291 # Execute script
265 self._execute_python('show_pha', 292 self._execute_python('show_pha',
266 - args='data/pha.fits example_show_pha.eps') 293 + args=self._datadir+'/pha.fits '
  294 + 'example_show_pha.eps')
267 295
268 # Return 296 # Return
269 return 297 return
@@ -275,7 +303,8 @@ class Test(gammalib.GPythonTestSuite): @@ -275,7 +303,8 @@ class Test(gammalib.GPythonTestSuite):
275 """ 303 """
276 # Execute script 304 # Execute script
277 self._execute_python('show_pull_evolution', 305 self._execute_python('show_pull_evolution',
278 - args='data/pull.dat Pull_Crab_Prefactor ' 306 + args=self._datadir+'/pull.dat '
  307 + 'Pull_Crab_Prefactor '
279 'example_show_pull_evolution.eps') 308 'example_show_pull_evolution.eps')
280 309
281 # Return 310 # Return
@@ -288,7 +317,8 @@ class Test(gammalib.GPythonTestSuite): @@ -288,7 +317,8 @@ class Test(gammalib.GPythonTestSuite):
288 """ 317 """
289 # Execute script 318 # Execute script
290 self._execute_python('show_pull_histogram', 319 self._execute_python('show_pull_histogram',
291 - args='data/pull.dat Pull_Crab_Prefactor 50 ' 320 + args=self._datadir+'/pull.dat '
  321 + 'Pull_Crab_Prefactor 50 '
292 'example_show_pull_histogram.eps') 322 'example_show_pull_histogram.eps')
293 323
294 # Return 324 # Return
@@ -312,7 +342,7 @@ class Test(gammalib.GPythonTestSuite): @@ -312,7 +342,7 @@ class Test(gammalib.GPythonTestSuite):
312 """ 342 """
313 # Execute script 343 # Execute script
314 self._execute_python('show_sensitivity', 344 self._execute_python('show_sensitivity',
315 - args='data/sensitivity.dat ' 345 + args=self._datadir+'/sensitivity.dat '
316 'example_show_sensitivity.eps') 346 'example_show_sensitivity.eps')
317 347
318 # Return 348 # Return
@@ -325,7 +355,7 @@ class Test(gammalib.GPythonTestSuite): @@ -325,7 +355,7 @@ class Test(gammalib.GPythonTestSuite):
325 """ 355 """
326 # Execute script 356 # Execute script
327 self._execute_python('show_spectrum', 357 self._execute_python('show_spectrum',
328 - args='data/spectrum.fits ' 358 + args=self._datadir+'/spectrum.fits '
329 'example_show_spectrum.eps') 359 'example_show_spectrum.eps')
330 360
331 # Return 361 # Return
@@ -338,7 +368,7 @@ class Test(gammalib.GPythonTestSuite): @@ -338,7 +368,7 @@ class Test(gammalib.GPythonTestSuite):
338 """ 368 """
339 # Execute script 369 # Execute script
340 self._execute_python('show_ts_distribution', 370 self._execute_python('show_ts_distribution',
341 - args='data/ts.dat -n 100 ' 371 + args=self._datadir+'/ts.dat -n 100 '
342 '-f example_show_ts_distribution.eps') 372 '-f example_show_ts_distribution.eps')
343 373
344 # Return 374 # Return
@@ -351,7 +381,8 @@ class Test(gammalib.GPythonTestSuite): @@ -351,7 +381,8 @@ class Test(gammalib.GPythonTestSuite):
351 """ 381 """
352 # Execute script 382 # Execute script
353 self._execute_python('show_obs', 383 self._execute_python('show_obs',
354 - args='obs_selected.xml example_show_obs.eps') 384 + args=self._datadir+'/obs_unbinned.xml '
  385 + 'example_show_obs.eps')
355 386
356 # Return 387 # Return
357 return 388 return
@@ -363,7 +394,7 @@ class Test(gammalib.GPythonTestSuite): @@ -363,7 +394,7 @@ class Test(gammalib.GPythonTestSuite):
363 if __name__ == '__main__': 394 if __name__ == '__main__':
364 395
365 # Set calibration database 396 # Set calibration database
366 - os.environ['CALDB'] = '../caldb' 397 + os.environ['CALDB'] = '%s/caldb' % (os.environ['TEST_SRCDIR'])
367 398
368 # Set PFILES environment variable 399 # Set PFILES environment variable
369 try: 400 try:
@@ -373,8 +404,8 @@ if __name__ == &#39;__main__&#39;: @@ -373,8 +404,8 @@ if __name__ == &#39;__main__&#39;:
373 os.environ['PFILES'] = 'pfiles' 404 os.environ['PFILES'] = 'pfiles'
374 405
375 # Copy over pfiles 406 # Copy over pfiles
376 - os.system('cp -r ../src/*/*.par pfiles/')  
377 - os.system('cp -r ../cscripts/*.par pfiles/') 407 + os.system('cp -r %s/src/*/*.par pfiles/' % (os.environ['TEST_SRCDIR']))
  408 + os.system('cp -r %s/cscripts/*.par pfiles/' % (os.environ['TEST_SRCDIR']))
378 409
379 # Allocate test suites 410 # Allocate test suites
380 suites = gammalib.GTestSuites('Examples testing') 411 suites = gammalib.GTestSuites('Examples testing')
test/test_pipelines.py
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import os
21 import gammalib 22 import gammalib
22 import ctools 23 import ctools
23 24
@@ -27,30 +28,40 @@ import ctools @@ -27,30 +28,40 @@ import ctools
27 # ============================ # 28 # ============================ #
28 class Test(gammalib.GPythonTestSuite): 29 class Test(gammalib.GPythonTestSuite):
29 """ 30 """
30 - Test class for pipelines. 31 + Test class for pipelines
31 """ 32 """
32 # Constructor 33 # Constructor
33 def __init__(self): 34 def __init__(self):
34 """ 35 """
35 - Constructor. 36 + Constructor
36 """ 37 """
37 # Call base class constructor 38 # Call base class constructor
38 gammalib.GPythonTestSuite.__init__(self) 39 gammalib.GPythonTestSuite.__init__(self)
39 40
  41 + # Set test data directory
  42 + self._datadir = os.environ['TEST_DATA']
  43 +
  44 + # Set some standard test data
  45 + self._model = self._datadir + '/crab.xml'
  46 + self._caldb = 'prod2'
  47 + self._irf = 'South_0.5h'
  48 +
40 # Return 49 # Return
41 return 50 return
42 51
43 # Set test functions 52 # Set test functions
44 def set(self): 53 def set(self):
45 """ 54 """
46 - Set all test functions. 55 + Set all test functions
47 """ 56 """
48 # Set test name 57 # Set test name
49 - self.name("pipelines") 58 + self.name('pipelines')
50 59
51 # Append tests 60 # Append tests
52 - self.append(self.test_unbinned_fits, "Test unbinned pipeline with FITS file saving")  
53 - self.append(self.test_unbinned_mem, "Test unbinned in-memory pipeline") 61 + self.append(self.test_unbinned_fits,
  62 + 'Test unbinned pipeline with FITS file saving')
  63 + self.append(self.test_unbinned_mem,
  64 + 'Test unbinned in-memory pipeline')
54 65
55 # Return 66 # Return
56 return 67 return
@@ -58,15 +69,15 @@ class Test(gammalib.GPythonTestSuite): @@ -58,15 +69,15 @@ class Test(gammalib.GPythonTestSuite):
58 # Test unbinned pipeline with FITS file saving 69 # Test unbinned pipeline with FITS file saving
59 def test_unbinned_fits(self): 70 def test_unbinned_fits(self):
60 """ 71 """
61 - Test unbinned pipeline with FITS file saving. 72 + Test unbinned pipeline with FITS file saving
62 """ 73 """
63 # Set script parameters 74 # Set script parameters
64 - model_name = "data/crab.xml"  
65 - events_name = "events.fits"  
66 - selected_events_name = "selected_events.fits"  
67 - result_name = "results.xml"  
68 - caldb = "irf"  
69 - irf = "cta_dummy_irf" 75 + model_name = self._model
  76 + events_name = 'events.fits'
  77 + selected_events_name = 'selected_events.fits'
  78 + result_name = 'results.xml'
  79 + caldb = self._caldb
  80 + irf = self._irf
70 ra = 83.63 81 ra = 83.63
71 dec = 22.01 82 dec = 22.01
72 rad_sim = 10.0 83 rad_sim = 10.0
@@ -78,116 +89,90 @@ class Test(gammalib.GPythonTestSuite): @@ -78,116 +89,90 @@ class Test(gammalib.GPythonTestSuite):
78 89
79 # Simulate events 90 # Simulate events
80 sim = ctools.ctobssim() 91 sim = ctools.ctobssim()
81 - sim["inmodel"] = model_name  
82 - sim["outevents"] = events_name  
83 - sim["caldb"] = caldb  
84 - sim["irf"] = irf  
85 - sim["ra"] = ra  
86 - sim["dec"] = dec  
87 - sim["rad"] = rad_sim  
88 - sim["tmin"] = tstart  
89 - sim["tmax"] = tstop  
90 - sim["emin"] = emin  
91 - sim["emax"] = emax  
92 - self.test_try("Execute ctobssim")  
93 - try:  
94 - sim.execute()  
95 - self.test_try_success()  
96 - except:  
97 - self.test_try_failure("Exception occured in ctobssim.") 92 + sim['inmodel'] = model_name
  93 + sim['outevents'] = events_name
  94 + sim['caldb'] = caldb
  95 + sim['irf'] = irf
  96 + sim['ra'] = ra
  97 + sim['dec'] = dec
  98 + sim['rad'] = rad_sim
  99 + sim['tmin'] = tstart
  100 + sim['tmax'] = tstop
  101 + sim['emin'] = emin
  102 + sim['emax'] = emax
  103 + sim.execute()
98 104
99 # Select events 105 # Select events
100 select = ctools.ctselect() 106 select = ctools.ctselect()
101 - select["inobs"] = events_name  
102 - select["outobs"] = selected_events_name  
103 - select["ra"] = ra  
104 - select["dec"] = dec  
105 - select["rad"] = rad_select  
106 - select["tmin"] = tstart  
107 - select["tmax"] = tstop  
108 - select["emin"] = emin  
109 - select["emax"] = emax  
110 - self.test_try("Execute ctselect")  
111 - try:  
112 - select.execute()  
113 - self.test_try_success()  
114 - except:  
115 - self.test_try_failure("Exception occured in ctselect.") 107 + select['inobs'] = events_name
  108 + select['outobs'] = selected_events_name
  109 + select['ra'] = ra
  110 + select['dec'] = dec
  111 + select['rad'] = rad_select
  112 + select['tmin'] = tstart
  113 + select['tmax'] = tstop
  114 + select['emin'] = emin
  115 + select['emax'] = emax
  116 + select.execute()
116 117
117 # Perform maximum likelihood fitting 118 # Perform maximum likelihood fitting
118 like = ctools.ctlike() 119 like = ctools.ctlike()
119 - like["inobs"] = selected_events_name  
120 - like["inmodel"] = model_name  
121 - like["outmodel"] = result_name  
122 - like["caldb"] = caldb  
123 - like["irf"] = irf  
124 - self.test_try("Execute ctlike")  
125 - try:  
126 - like.execute()  
127 - self.test_try_success()  
128 - except:  
129 - self.test_try_failure("Exception occured in ctlike.") 120 + like['inobs'] = selected_events_name
  121 + like['inmodel'] = model_name
  122 + like['outmodel'] = result_name
  123 + like['caldb'] = caldb
  124 + like['irf'] = irf
  125 + like.execute()
130 126
  127 + # Return
  128 + return
131 129
132 # Test unbinned in-memory pipeline 130 # Test unbinned in-memory pipeline
133 def test_unbinned_mem(self): 131 def test_unbinned_mem(self):
134 """ 132 """
135 - Test unbinned in-memory pipeline. 133 + Test unbinned in-memory pipeline
136 """ 134 """
137 # Set script parameters 135 # Set script parameters
138 - model_name = "data/crab.xml"  
139 - caldb = "irf"  
140 - irf = "cta_dummy_irf"  
141 - ra = 83.63  
142 - dec = 22.01  
143 - rad_sim = 10.0  
144 - tstart = 0.0  
145 - tstop = 1800.0  
146 - emin = 0.1  
147 - emax = 100.0  
148 - rad_select = 3.0 136 + model_name = self._model
  137 + caldb = self._caldb
  138 + irf = self._irf
  139 + ra = 83.63
  140 + dec = 22.01
  141 + rad_sim = 10.0
  142 + tstart = 0.0
  143 + tstop = 1800.0
  144 + emin = 0.1
  145 + emax = 100.0
  146 + rad_select = 3.0
149 147
150 # Simulate events 148 # Simulate events
151 sim = ctools.ctobssim() 149 sim = ctools.ctobssim()
152 - sim["inmodel"] = model_name  
153 - sim["caldb"] = caldb  
154 - sim["irf"] = irf  
155 - sim["ra"] = ra  
156 - sim["dec"] = dec  
157 - sim["rad"] = rad_sim  
158 - sim["tmin"] = tstart  
159 - sim["tmax"] = tstop  
160 - sim["emin"] = emin  
161 - sim["emax"] = emax  
162 - self.test_try("Run ctobssim")  
163 - try:  
164 - sim.run()  
165 - self.test_try_success()  
166 - except:  
167 - self.test_try_failure("Exception occured in ctobssim.") 150 + sim['inmodel'] = model_name
  151 + sim['caldb'] = caldb
  152 + sim['irf'] = irf
  153 + sim['ra'] = ra
  154 + sim['dec'] = dec
  155 + sim['rad'] = rad_sim
  156 + sim['tmin'] = tstart
  157 + sim['tmax'] = tstop
  158 + sim['emin'] = emin
  159 + sim['emax'] = emax
  160 + sim.run()
168 161
169 # Select events 162 # Select events
170 select = ctools.ctselect(sim.obs()) 163 select = ctools.ctselect(sim.obs())
171 - select["ra"] = ra  
172 - select["dec"] = dec  
173 - select["rad"] = rad_select  
174 - select["tmin"] = tstart  
175 - select["tmax"] = tstop  
176 - select["emin"] = emin  
177 - select["emax"] = emax 164 + select['ra'] = ra
  165 + select['dec'] = dec
  166 + select['rad'] = rad_select
  167 + select['tmin'] = tstart
  168 + select['tmax'] = tstop
  169 + select['emin'] = emin
  170 + select['emax'] = emax
178 select.run() 171 select.run()
179 - self.test_try("Run ctselect")  
180 - try:  
181 - select.run()  
182 - self.test_try_success()  
183 - except:  
184 - self.test_try_failure("Exception occured in ctselect.")  
185 172
186 # Perform maximum likelihood fitting 173 # Perform maximum likelihood fitting
187 like = ctools.ctlike(select.obs()) 174 like = ctools.ctlike(select.obs())
188 - self.test_try("Run ctlike")  
189 - try:  
190 - like.run()  
191 - self.test_try_success()  
192 - except:  
193 - self.test_try_failure("Exception occured in ctlike.") 175 + like.run()
  176 +
  177 + # Return
  178 + return
test/test_python_cscripts.py
@@ -74,13 +74,16 @@ def test(installed=False, debug=False): @@ -74,13 +74,16 @@ def test(installed=False, debug=False):
74 dirname = os.path.dirname(testdir) 74 dirname = os.path.dirname(testdir)
75 75
76 # Copy over test data and irf 76 # Copy over test data and irf
77 - os.system('cp -r %s %s' % (dirname+'/data', 'data'))  
78 - os.system('cp -r %s %s' % (dirname+'/iactdata', 'iactdata'))  
79 - os.system('cp -r %s %s' % (dirname+'/irf', 'irf')) 77 + os.system('cp -r %s %s' % (dirname+'/data', 'data'))
80 78
81 - # ... otherwise set the calibration database 79 + # Set test data environment variable
  80 + os.environ['TEST_DATA'] = 'data'
  81 +
  82 + # ... otherwise set the calibration database to the one shipped with the
  83 + # package; we don't need to set the 'TEST_DATA', this is done by the
  84 + # test environment
82 else: 85 else:
83 - os.environ['CALDB'] = '../caldb' 86 + os.environ['CALDB'] = '%s/caldb' % (os.environ['TEST_SRCDIR'])
84 87
85 # Set PFILES environment variable 88 # Set PFILES environment variable
86 try: 89 try:
@@ -91,9 +94,11 @@ def test(installed=False, debug=False): @@ -91,9 +94,11 @@ def test(installed=False, debug=False):
91 94
92 # Copy over pfiles 95 # Copy over pfiles
93 if not installed: 96 if not installed:
94 - os.system('cp -r ../cscripts/*.par pfiles/') 97 + os.system('cp -r %s/cscripts/*.par pfiles/'% (os.environ['TEST_SRCDIR']))
  98 + os.system('chmod u+w pfiles/*')
95 else: 99 else:
96 os.system('cp -r %s/syspfiles/*.par pfiles/' % (os.environ['CTOOLS'])) 100 os.system('cp -r %s/syspfiles/*.par pfiles/' % (os.environ['CTOOLS']))
  101 + os.system('chmod u+w pfiles/*')
97 102
98 # Allocate test suite container 103 # Allocate test suite container
99 suites = gammalib.GTestSuites('cscripts unit testing') 104 suites = gammalib.GTestSuites('cscripts unit testing')
test/test_python_cscripts.sh.in
@@ -22,4 +22,4 @@ @@ -22,4 +22,4 @@
22 # 22 #
23 # Run the Python test 23 # Run the Python test
24 # =================== 24 # ===================
25 -@PYTHON_COVERAGE@./test_python_cscripts.py 25 +@PYTHON_COVERAGE@@srcdir@/test_python_cscripts.py
test/test_python_ctools.py
@@ -54,6 +54,10 @@ def test(installed=False): @@ -54,6 +54,10 @@ def test(installed=False):
54 installed : bool, optional 54 installed : bool, optional
55 Flag indicating whether the script has been installed or not 55 Flag indicating whether the script has been installed or not
56 """ 56 """
  57 + # Set environment variables first
  58 + if installed:
  59 + os.environ['TEST_DATA'] = 'data'
  60 +
57 # Allocate test suite container 61 # Allocate test suite container
58 suites = gammalib.GTestSuites('ctools unit testing') 62 suites = gammalib.GTestSuites('ctools unit testing')
59 63
@@ -130,7 +134,10 @@ def test(installed=False): @@ -130,7 +134,10 @@ def test(installed=False):
130 134
131 # Copy over test data and irf 135 # Copy over test data and irf
132 os.system('cp -r %s %s' % (dirname+'/data', 'data')) 136 os.system('cp -r %s %s' % (dirname+'/data', 'data'))
133 - os.system('cp -r %s %s' % (dirname+'/irf', 'irf')) 137 +
  138 + # ... otherwise set the calibration database
  139 + else:
  140 + os.environ['CALDB'] = '%s/caldb' % (os.environ['TEST_SRCDIR'])
134 141
135 # Set PFILES environment variable 142 # Set PFILES environment variable
136 try: 143 try:
@@ -141,9 +148,11 @@ def test(installed=False): @@ -141,9 +148,11 @@ def test(installed=False):
141 148
142 # Copy over pfiles 149 # Copy over pfiles
143 if not installed: 150 if not installed:
144 - os.system('cp -r ../src/*/*.par pfiles/') 151 + os.system('cp -r %s/src/*/*.par pfiles/' % (os.environ['TEST_SRCDIR']))
  152 + os.system('chmod u+w pfiles/*')
145 else: 153 else:
146 os.system('cp -r %s/syspfiles/*.par pfiles/' % (os.environ['CTOOLS'])) 154 os.system('cp -r %s/syspfiles/*.par pfiles/' % (os.environ['CTOOLS']))
  155 + os.system('chmod u+w pfiles/*')
147 156
148 # Run test suite 157 # Run test suite
149 success = suites.run() 158 success = suites.run()
test/test_python_ctools.sh.in
@@ -22,4 +22,4 @@ @@ -22,4 +22,4 @@
22 # 22 #
23 # Run the Python test 23 # Run the Python test
24 # =================== 24 # ===================
25 -@PYTHON_COVERAGE@./test_python_ctools.py 25 +@PYTHON_COVERAGE@@srcdir@/test_python_ctools.py
test/testing.py
@@ -37,6 +37,17 @@ class test(gammalib.GPythonTestSuite): @@ -37,6 +37,17 @@ class test(gammalib.GPythonTestSuite):
37 # Call base class constructor 37 # Call base class constructor
38 gammalib.GPythonTestSuite.__init__(self) 38 gammalib.GPythonTestSuite.__init__(self)
39 39
  40 + # Set test data directory
  41 + self._datadir = os.environ['TEST_DATA']
  42 +
  43 + # Set some standard test data (additional test data will be set in
  44 + # the derived classes as needed)
  45 + self._events = self._datadir + '/crab_events.fits'
  46 + self._cntcube = self._datadir + '/crab_cntmap.fits'
  47 + self._model = self._datadir + '/crab.xml'
  48 + self._caldb = 'prod2'
  49 + self._irf = 'South_0.5h'
  50 +
40 # Return 51 # Return
41 return 52 return
42 53
@@ -45,9 +56,11 @@ class test(gammalib.GPythonTestSuite): @@ -45,9 +56,11 @@ class test(gammalib.GPythonTestSuite):
45 """ 56 """
46 Set script name 57 Set script name
47 """ 58 """
48 - # Kluge to set the command. The installed version has no README.md file  
49 - if os.path.isfile('README.md'):  
50 - script = '../cscripts/'+name+'.py' 59 + # Set script name dependent on whether the software is installed or
  60 + # not. If the software is not installed the 'TEST_BUILDDIR' environment
  61 + # variable will exist
  62 + if 'TEST_BUILDDIR' in os.environ:
  63 + script = os.environ['TEST_BUILDDIR'] + '/cscripts/'+name+'.py'
51 else: 64 else:
52 script = name 65 script = name
53 66
@@ -59,9 +72,11 @@ class test(gammalib.GPythonTestSuite): @@ -59,9 +72,11 @@ class test(gammalib.GPythonTestSuite):
59 """ 72 """
60 Set tool name 73 Set tool name
61 """ 74 """
62 - # Kluge to set the command. The installed version has no README.md file  
63 - if os.path.isfile('README.md'):  
64 - tool = '../src/'+name+'/'+name 75 + # Set tool name dependent on whether the software is installed or
  76 + # not. If the software is not installed the 'TEST_BUILDDIR' environment
  77 + # variable will exist
  78 + if 'TEST_BUILDDIR' in os.environ:
  79 + tool = os.environ['TEST_BUILDDIR'] + '/src/'+name+'/'+name
65 else: 80 else:
66 tool = name 81 tool = name
67 82