From 8623e6c05f296e4f915ddd2be71c6d121303722e Mon Sep 17 00:00:00 2001
From: Maik Nijhuis <maik.nijhuis@triopsys.nl>
Date: Thu, 19 Nov 2020 17:35:38 +0100
Subject: [PATCH] Update/add copyright and license headers

---
 .gitlab-ci.yml                                |  13 +-
 CMake/EveryBeamConfig.cmake.in                |   3 +
 CMake/EveryBeamConfigVersion.cmake.in         |   3 +
 CMake/FindBeamModel.cmake                     |   3 +
 CMake/FindCFITSIO.cmake                       |  21 +-
 CMake/FindCasacore.cmake                      |  36 +-
 CMake/FindFFTW3.cmake                         |  27 +-
 CMake/FindPython.cmake                        |  24 +-
 CMake/FindWCSLIB.cmake                        |  21 +-
 CMake/PythonInstall.cmake                     |  41 +-
 CMake/config.h.in                             |   3 +
 CMake/version.h.in                            |   3 +
 CMakeLists.txt                                |   3 +
 cpp/CMakeLists.txt                            |   3 +
 cpp/antenna.cc                                |   3 +
 cpp/antenna.h                                 |   3 +
 cpp/aterms/CMakeLists.txt                     |   3 +
 cpp/aterms/atermbase.cc                       |   3 +
 cpp/aterms/atermbase.h                        |   3 +
 cpp/aterms/atermbeam.h                        |   3 +
 cpp/aterms/atermconfig.cc                     |   3 +
 cpp/aterms/atermconfig.h                      |   3 +
 cpp/aterms/atermresampler.cc                  |   3 +
 cpp/aterms/atermresampler.h                   |   3 +
 cpp/aterms/cache.cc                           |   3 +
 cpp/aterms/cache.h                            |   3 +
 cpp/aterms/dldmaterm.cc                       |   3 +
 cpp/aterms/dldmaterm.h                        |   3 +
 cpp/aterms/everybeamaterm.cc                  |   3 +
 cpp/aterms/everybeamaterm.h                   |   3 +
 cpp/aterms/fitsaterm.cc                       |   3 +
 cpp/aterms/fitsaterm.h                        |   3 +
 cpp/aterms/fitsatermbase.cc                   |   3 +
 cpp/aterms/fitsatermbase.h                    |   3 +
 cpp/aterms/pafbeamterm.cc                     |   3 +
 cpp/aterms/pafbeamterm.h                      |   3 +
 cpp/aterms/parsetprovider.h                   |   3 +
 cpp/beamformer.cc                             |   3 +
 cpp/beamformer.h                              |   3 +
 cpp/beamformeridenticalantennas.cc            |   3 +
 cpp/beamformeridenticalantennas.h             |   3 +
 cpp/beamformerlofar.cc                        |   3 +
 cpp/beamformerlofar.h                         |   3 +
 cpp/beamformerlofarhba.cc                     |   3 +
 cpp/beamformerlofarhba.h                      |   3 +
 cpp/beamformerlofarlba.cc                     |   3 +
 cpp/beamformerlofarlba.h                      |   3 +
 cpp/circularsymmetric/CMakeLists.txt          |   3 +
 cpp/circularsymmetric/vlabeam.cc              |   3 +
 cpp/circularsymmetric/vlabeam.h               |   3 +
 cpp/circularsymmetric/voltagepattern.cc       |   3 +
 cpp/circularsymmetric/voltagepattern.h        |   3 +
 cpp/common/CMakeLists.txt                     |   3 +
 cpp/common/casautils.h                        |  22 +-
 cpp/common/constants.h                        |  21 +-
 cpp/common/fftresampler.cc                    |   3 +
 cpp/common/fftresampler.h                     |   3 +
 cpp/common/mathutils.h                        |  21 +-
 cpp/common/mutable_ptr.h                      |  21 +-
 cpp/common/singleton.h                        |   3 +
 cpp/common/types.h                            |  21 +-
 cpp/coords/CMakeLists.txt                     |   3 +
 cpp/coords/coordutils.h                       |   3 +
 cpp/coords/itrfconverter.cc                   |   3 +
 cpp/coords/itrfconverter.h                    |   3 +
 cpp/coords/itrfdirection.cc                   |  21 +-
 cpp/coords/itrfdirection.h                    |  21 +-
 cpp/element.cc                                |   3 +
 cpp/element.h                                 |   3 +
 cpp/elementhamaker.cc                         |   3 +
 cpp/elementhamaker.h                          |   3 +
 cpp/elementresponse.cc                        |   3 +
 cpp/elementresponse.h                         |   3 +
 cpp/fieldresponse.h                           |   3 +
 cpp/griddedresponse/CMakeLists.txt            |   3 +
 cpp/griddedresponse/dishgrid.cc               |   3 +
 cpp/griddedresponse/dishgrid.h                |  22 +-
 cpp/griddedresponse/griddedresponse.cc        |   3 +
 cpp/griddedresponse/griddedresponse.h         |  22 +-
 cpp/griddedresponse/lofargrid.h               |  22 +-
 cpp/griddedresponse/mwagrid.cc                |   3 +
 cpp/griddedresponse/mwagrid.h                 |  22 +-
 cpp/griddedresponse/oskargrid.h               |  22 +-
 cpp/griddedresponse/phasedarraygrid.cc        |   3 +
 cpp/griddedresponse/phasedarraygrid.h         |  22 +-
 cpp/hamaker/CMakeLists.txt                    |   3 +
 cpp/hamaker/hamakercoeff.cc                   |   3 +
 cpp/hamaker/hamakercoeff.h                    |   3 +
 cpp/hamaker/hamakerelementresponse.cc         |   3 +
 cpp/hamaker/hamakerelementresponse.h          |   3 +
 cpp/load.cc                                   |   3 +
 cpp/load.h                                    |  22 +-
 cpp/lobes/CMakeLists.txt                      |   3 +
 cpp/lobes/lobeselementresponse.cc             |   3 +
 cpp/lobes/lobeselementresponse.h              |   3 +
 cpp/lofarreadutils.cc                         |  21 +-
 cpp/lofarreadutils.h                          |  21 +-
 cpp/msv3readutils.cc                          |  21 +-
 cpp/msv3readutils.h                           |  21 +-
 cpp/mwabeam/beam2016implementation.cc         |  13 +-
 cpp/mwabeam/beam2016implementation.h          |   3 +
 cpp/mwabeam/factorialtable.h                  |   3 +
 cpp/mwabeam/recursivelock.h                   |   3 +
 cpp/mwabeam/tilebeam2016.cc                   |   3 +
 cpp/mwabeam/tilebeam2016.h                    |   3 +
 cpp/options.h                                 |  22 +-
 cpp/oskar/CMakeLists.txt                      |   3 +
 cpp/oskar/oskar.h                             |   3 +
 cpp/oskar/oskardatafile.cc                    |   3 +
 cpp/oskar/oskardatafile.h                     |   3 +
 cpp/oskar/oskardataset.cc                     |   3 +
 cpp/oskar/oskardataset.h                      |   3 +
 cpp/oskar/oskarelementresponse.cc             |   3 +
 cpp/oskar/oskarelementresponse.h              |   3 +
 cpp/station.cc                                |  21 +-
 cpp/station.h                                 |  22 +-
 cpp/telescope/CMakeLists.txt                  |   3 +
 cpp/telescope/dish.cc                         |   3 +
 cpp/telescope/dish.h                          |  22 +-
 cpp/telescope/lofar.cc                        |   3 +
 cpp/telescope/lofar.h                         |  22 +-
 cpp/telescope/mwa.cc                          |   3 +
 cpp/telescope/mwa.h                           |  22 +-
 cpp/telescope/oskar.cc                        |   3 +
 cpp/telescope/oskar.h                         |  22 +-
 cpp/telescope/phasedarray.h                   |  22 +-
 cpp/telescope/telescope.h                     |  22 +-
 cpp/test/CMakeLists.txt                       |   3 +
 cpp/test/runtests.cc                          |   3 +
 cpp/test/tcache.cc                            |   3 +
 cpp/test/tlofar_hba.cc                        |   3 +
 cpp/test/tlofar_lba.cc                        |   3 +
 cpp/test/tmwa.cc                              |   3 +
 cpp/test/toskar.cc                            |   3 +
 cpp/test/tstation.cc                          |   3 +
 cpp/test/tvla.cc                              |   3 +
 demo/CMakeLists.txt                           |   3 +
 demo/beam-helper.cpp                          |   3 +
 demo/beam-helper.h                            |   3 +
 demo/comparison-oskar/CMakeLists.txt          |   3 +
 .../compare_stationresponse.py                |   4 +-
 .../compare_stationresponse.sh                |   3 +-
 .../generate_basefunction_plots.py            |   3 +
 .../generate_basefunction_plots.sh            |   3 +-
 demo/comparison-oskar/generate_oskar_csv.py   |   2 +
 .../make_element_response_image.cpp           |   5 +-
 demo/comparison-oskar/make_plots.py           |   3 +
 .../make_station_response_image.cpp           |   3 +
 demo/comparison-oskar/read_oskar_beams.py     |   5 +-
 demo/comparison-oskar/run_oskar.py            |   2 +
 demo/comparison-oskar/run_oskar_simulation.py |   2 +
 demo/comparison-oskar/utils.py                |   2 +
 demo/lobes/lobes_image.py                     |   3 +
 demo/misc/makeresponseimage.cc                |  21 +-
 demo/tElementBeamCommon.h                     |   3 +
 demo/tElementBeamHamaker.cc                   |   3 +
 demo/tElementBeamOSKARDipole.cc               |   3 +
 demo/tElementBeamOSKARSphericalWave.cc        |   3 +
 demo/tStation.cc                              |   3 +
 demo/tStationBeamCommon.h                     |   3 +
 demo/tStationBeamHamaker.cc                   |   3 +
 demo/tStationBeamOSKARDipole.cc               |   3 +
 demo/tStationBeamOSKARSphericalWave.cc        |   3 +
 demo/wsclean-oskar/CMakeLists.txt             |   3 +
 demo/wsclean-oskar/make_model_images.py       |   4 +-
 demo/wsclean-oskar/make_model_images.sh       |   3 +-
 demo/wsclean-oskar/run_oskar_simulation.py    |   2 +
 demo/wsclean-oskar/run_oskar_simulation.sh    |   2 +
 demo/wsclean-oskar/run_wsclean_oskar.sh       |   5 +-
 docker/Dockerfile-base                        |   5 +-
 docker/Dockerfile-dp3                         |   3 +
 docker/Dockerfile-everybeam                   |   3 +
 docker/Dockerfile-wsclean                     |   3 +
 python/CMakeLists.txt                         |   3 +
 python/lobes/CMakeLists.txt                   |   3 +
 python/lobes/lobes.cc                         |   3 +
 python/pyeverybeam.cc.tmp                     | 720 ------------------
 python/test/CMakeLists.txt                    |   3 +
 python/test/tPyLoad.sh                        |   4 +-
 python/test/test_load.py                      |   3 +
 python/wrappers/pyload.cc                     |   3 +
 python/wrappers/pytelescope.cc                |   3 +
 python/wrappers/pyutils.cc                    |   3 +
 python/wrappers/wrapper.cc                    |   3 +
 scripts/coeff_scripts/convert_coeff.py        |   6 +-
 scripts/coeff_scripts/oskar_csv_to_hdf5.py    |   2 +
 scripts/coeff_scripts/oskar_matlab_to_hdf5.py |   2 +
 scripts/download_lobes_coeffs.sh              |   4 +-
 scripts/download_lofar_hba_ms.sh              |   4 +-
 scripts/download_lofar_lba_ms.sh              |   6 +-
 scripts/download_mwa_coeff.sh                 |   4 +-
 scripts/download_mwa_ms.sh                    |   4 +-
 scripts/download_oskar_ms.sh                  |   8 +-
 scripts/download_vla_ms.sh                    |   4 +-
 scripts/misc/F4far_new.py                     |   5 +-
 scripts/misc/add_beaminfo.py                  |   2 +
 scripts/misc/calc_modes_1deg_noback.py        |   3 +
 scripts/misc/hamaker_vs_lobes.py              |   5 +-
 scripts/misc/test_beam_model.py               |   4 +-
 scripts/misc/test_lobes.py                    |   3 +-
 scripts/run-clang-format.sh                   |   8 +-
 201 files changed, 590 insertions(+), 1450 deletions(-)
 delete mode 100644 python/pyeverybeam.cc.tmp

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index caeb6e8c..81d0b861 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 stages:
   - prepare
   - build
@@ -18,7 +21,7 @@ clang-format:
   before_script:
     - apt-get -y install python3-pip
     - python3 -m pip install clang-format==9.0.0
-  script: 
+  script:
     - ./scripts/run-clang-format.sh
 
 # Build a debug version of EveryBeam from the base image
@@ -45,7 +48,7 @@ test-and-coverage:
     # Capture coverage
     - gcovr -r .. -e '.*/external/.*' -e '.*/CompilerIdCXX/.*' -e '.*/test/.*' -e '.*/demo/.*'
     - gcovr -r .. -e '.*/external/.*' -e '.*/CompilerIdCXX/.*' -e '.*/test/.*' -e '.*/demo/.*' --xml > coverage.xml
-    # Check whether pyeverybeam modules can be found from home directory after setting the PYTHONPATH 
+    # Check whether pyeverybeam modules can be found from home directory after setting the PYTHONPATH
     - PYVERSION=`python3 --version | grep -P -o ".*\s\K\d\.\d(?=\.\d)"`
     - export PYTHONPATH=${WORKDIR}/lib/python${PYVERSION}/site-packages
     - cd && python3 -c "import everybeam"
@@ -65,7 +68,7 @@ build-doc:
   stage: build
   except:
     - schedules
-  needs: ["build-base"]  
+  needs: ["build-base"]
   image: everybeam_base:${CI_COMMIT_SHORT_SHA}
   script:
     - EVERYBEAM_PATH=$PWD
@@ -91,7 +94,7 @@ build-compare-oskar:
     - mkdir -p /opt/oskar/build
     - cd /opt/oskar && git clone https://github.com/OxfordSKA/OSKAR.git
     # Check-out at specific version, before HDF5 got broken
-    - cd OSKAR && git checkout bb3f9112e20e1d5e9b91b695828f993ad6bc91ee 
+    - cd OSKAR && git checkout bb3f9112e20e1d5e9b91b695828f993ad6bc91ee
     - cd /opt/oskar/build
   script:
     # OSKAR cpp install
@@ -100,7 +103,7 @@ build-compare-oskar:
     - make install
     # Python install
     - export OSKAR_INC_DIR=/opt/oskar/include && export OSKAR_LIB_DIR=/opt/oskar/lib
-    - cd ./../OSKAR/python && python3 setup.py install 
+    - cd ./../OSKAR/python && python3 setup.py install
     - export PATH=/opt/oskar/bin:$PATH
     # Run OSKAR comparison, set some env variables for this session
     - export NPIXELS=8 && export APPLY_TRANSPOSE=OFF && MAX_ORDER=3 && TOLERANCE=1e-12
diff --git a/CMake/EveryBeamConfig.cmake.in b/CMake/EveryBeamConfig.cmake.in
index 6b1188d3..22b8b6b8 100644
--- a/CMake/EveryBeamConfig.cmake.in
+++ b/CMake/EveryBeamConfig.cmake.in
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # This is the cmake config script for EveryBeam.
 #
 # It sets the following variables:
diff --git a/CMake/EveryBeamConfigVersion.cmake.in b/CMake/EveryBeamConfigVersion.cmake.in
index 5aae94d4..834c0b5b 100644
--- a/CMake/EveryBeamConfigVersion.cmake.in
+++ b/CMake/EveryBeamConfigVersion.cmake.in
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 set(PACKAGE_VERSION "@EVERYBEAM_VERSION@")
 
 # Check whether the requested PACKAGE_FIND_VERSION is compatible
diff --git a/CMake/FindBeamModel.cmake b/CMake/FindBeamModel.cmake
index 0fe92830..b5b99451 100644
--- a/CMake/FindBeamModel.cmake
+++ b/CMake/FindBeamModel.cmake
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # This module tries to find the BeamModel library on your system
 #
 # Once done this will define
diff --git a/CMake/FindCFITSIO.cmake b/CMake/FindCFITSIO.cmake
index a7497012..335d5c4e 100644
--- a/CMake/FindCFITSIO.cmake
+++ b/CMake/FindCFITSIO.cmake
@@ -11,25 +11,8 @@
 #                         (identical to CFITSIO_LIBRARY)
 #  CFITSIO_VERSION_STRING the found version of CFITSIO, padded to 3 digits
 
-# Copyright (C) 2009
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id$
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 if(NOT CFITSIO_FOUND)
 
diff --git a/CMake/FindCasacore.cmake b/CMake/FindCasacore.cmake
index 51d8339d..f83fb899 100644
--- a/CMake/FindCasacore.cmake
+++ b/CMake/FindCasacore.cmake
@@ -2,7 +2,7 @@
 # Usage:
 #   find_package(Casacore [REQUIRED] [COMPONENTS components...])
 # Valid components are:
-#   casa, coordinates, derivedmscal, fits, images, lattices, meas, 
+#   casa, coordinates, derivedmscal, fits, images, lattices, meas,
 #   measures, mirlib, ms, msfits, python, scimath, scimath_f, tables
 #
 # Note that most components are dependent on other (more basic) components.
@@ -16,17 +16,17 @@
 # The dependencies in this macro were generated against casacore release 2.0.
 #
 # Variables used by this module:
-#  CASACORE_ROOT_DIR         - Casacore root directory. 
+#  CASACORE_ROOT_DIR         - Casacore root directory.
 #
 # Variables defined by this module:
 #  CASACORE_FOUND            - System has Casacore, which means that the
-#                              include dir was found, as well as all 
+#                              include dir was found, as well as all
 #                              libraries specified (not cached)
 #  CASACORE_INCLUDE_DIR      - Casacore include directory (cached)
 #  CASACORE_INCLUDE_DIRS     - Casacore include directories (not cached)
 #                              identical to CASACORE_INCLUDE_DIR
 #  CASACORE_LIBRARIES        - The Casacore libraries (not cached)
-#  CASA_${COMPONENT}_LIBRARY - The absolute path of Casacore library 
+#  CASA_${COMPONENT}_LIBRARY - The absolute path of Casacore library
 #                              "component" (cached)
 #  HAVE_AIPSPP               - True if system has Casacore (cached)
 #                              for backward compatibility with AIPS++
@@ -38,29 +38,12 @@
 # ATTENTION: The component names need to be in lower case, just as the
 # casacore library names. However, the CMake variables use all upper case.
 
-# Copyright (C) 2009-2015
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id: FindCasacore.cmake 31570 2015-05-07 09:49:56Z loose $
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # - casacore_resolve_dependencies(_result)
 #
-# Resolve the Casacore library dependencies for the given components. 
+# Resolve the Casacore library dependencies for the given components.
 # The list of dependent libraries will be returned in the variable result.
 # It is sorted from least dependent to most dependent library, so it can be
 # directly fed to the linker.
@@ -71,7 +54,7 @@ macro(casacore_resolve_dependencies _result)
   set(${_result} ${ARGN})
   set(_index 0)
   # Do a breadth-first search through the dependency graph; append to the
-  # result list the dependent components for each item in that list. 
+  # result list the dependent components for each item in that list.
   # Duplicates will be removed later.
   while(1)
     list(LENGTH ${_result} _length)
@@ -92,7 +75,7 @@ endmacro(casacore_resolve_dependencies _result)
 
 # - casacore_find_library(_name)
 #
-# Search for the library ${_name}. 
+# Search for the library ${_name}.
 # If library is found, add it to CASACORE_LIBRARIES; if not, add ${_name}
 # to CASACORE_MISSING_COMPONENTS and set CASACORE_FOUND to false.
 #
@@ -264,4 +247,3 @@ else(CASACORE_FOUND)
     message(STATUS "${CASACORE_ERROR_MESSAGE}")
   endif(Casacore_FIND_REQUIRED)
 endif(CASACORE_FOUND)
-
diff --git a/CMake/FindFFTW3.cmake b/CMake/FindFFTW3.cmake
index 64588870..ecaad064 100644
--- a/CMake/FindFFTW3.cmake
+++ b/CMake/FindFFTW3.cmake
@@ -8,31 +8,14 @@
 #  FFTW3_INCLUDE_DIR          - the FFTW3 include directory (cached)
 #  FFTW3_INCLUDE_DIRS         - the FFTW3 include directories
 #                               (identical to FFTW3_INCLUDE_DIR)
-#  FFTW3[FL]?_LIBRARY         - the FFTW3 library - double, single(F), 
+#  FFTW3[FL]?_LIBRARY         - the FFTW3 library - double, single(F),
 #                               long-double(L) precision (cached)
-#  FFTW3[FL]?_THREADS_LIBRARY - the threaded FFTW3 library - double, single(F), 
+#  FFTW3[FL]?_THREADS_LIBRARY - the threaded FFTW3 library - double, single(F),
 #                               long-double(L) precision (cached)
 #  FFTW3_LIBRARIES            - list of all FFTW3 libraries found
 
-# Copyright (C) 2009-2010
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id: FindFFTW3.cmake 15918 2010-06-25 11:12:42Z loose $
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # Use double precision by default.
 if(FFTW3_FIND_COMPONENTS MATCHES "^$")
@@ -82,7 +65,7 @@ foreach(_lib ${_libraries})
 endforeach(_lib ${_libraries})
 
 # Search for the header file.
-find_path(FFTW3_INCLUDE_DIR fftw3.h 
+find_path(FFTW3_INCLUDE_DIR fftw3.h
   HINTS ${FFTW3_ROOT_DIR} $ENV{FFTW3_ROOT_DIR} PATH_SUFFIXES include)
 mark_as_advanced(FFTW3_INCLUDE_DIR)
 list(APPEND _check_list FFTW3_INCLUDE_DIR)
diff --git a/CMake/FindPython.cmake b/CMake/FindPython.cmake
index 86ed1ae5..de2ef3e4 100644
--- a/CMake/FindPython.cmake
+++ b/CMake/FindPython.cmake
@@ -1,4 +1,4 @@
-# - Try to find the Python interpreter, Python header files and libraries. 
+# - Try to find the Python interpreter, Python header files and libraries.
 # This macro effectively wraps the FindPythonInterp and FindPythonLibs macros
 # provided by CMake.
 #
@@ -10,25 +10,8 @@
 #  PYTHON_BUILD_DIR    - build directory for Python extensions (cached)
 #  PYTHON_INSTALL_DIR  - installation directory for Python extensions (cached)
 
-# Copyright (C) 2009
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id: FindPython.cmake 22948 2012-11-23 08:54:47Z loose $
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # Set options string to pass to the find_package() commands below.
 set(_options ${Python_FIND_VERSION})
@@ -59,4 +42,3 @@ set(PYTHON_FOUND FALSE)
 if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND)
   set(PYTHON_FOUND TRUE)
 endif(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND)
-
diff --git a/CMake/FindWCSLIB.cmake b/CMake/FindWCSLIB.cmake
index 43270843..a163c9be 100644
--- a/CMake/FindWCSLIB.cmake
+++ b/CMake/FindWCSLIB.cmake
@@ -11,25 +11,8 @@
 #                        (identical to WCSLIB_LIBRARY)
 #  WCSLIB_VERSION_STRING the found version of WCSLIB
 
-# Copyright (C) 2009
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id$
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 if(NOT WCSLIB_FOUND)
 
diff --git a/CMake/PythonInstall.cmake b/CMake/PythonInstall.cmake
index 173f9955..bdd6c6c3 100644
--- a/CMake/PythonInstall.cmake
+++ b/CMake/PythonInstall.cmake
@@ -3,25 +3,8 @@
 # Install Python source files and byte-compile them in the directory
 # ${PYTHON_INSTALL_DIR}/${install_dir}.
 
-# Copyright (C) 2008-2009
-# ASTRON (Netherlands Foundation for Research in Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-#
-# $Id: PythonInstall.cmake 32905 2015-11-17 15:31:54Z schaap $
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # Search for the Python interpreter.
 find_package(PythonInterp)
@@ -32,7 +15,7 @@ if(PYTHON_EXECUTABLE)
     "from distutils.sysconfig import get_python_lib"
     "from os.path import join"
     "print(join(
-       get_python_lib(plat_specific=True, standard_lib=True, prefix=''), 
+       get_python_lib(plat_specific=True, standard_lib=True, prefix=''),
        'site-packages'))"
   )
   execute_process(
@@ -43,14 +26,14 @@ if(PYTHON_EXECUTABLE)
   if(_pyerr)
     message(FATAL_ERROR "Python command failed:\n${_pyerr}")
   endif(_pyerr)
-  
+
   if(NOT DEFINED PYTHON_BUILD_DIR)
     set(_PRINT_PYTHON_DIRS TRUE)
   endif()
-  
-  set(PYTHON_BUILD_DIR "${CMAKE_BINARY_DIR}/${_pydir}" CACHE PATH 
+
+  set(PYTHON_BUILD_DIR "${CMAKE_BINARY_DIR}/${_pydir}" CACHE PATH
     "Build directory for Python extensions" FORCE)
-  set(PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${_pydir}" CACHE PATH 
+  set(PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${_pydir}" CACHE PATH
     "Installation directory for Python extensions" FORCE)
 
   if(_PRINT_PYTHON_DIRS)
@@ -105,8 +88,8 @@ macro(python_install)
   foreach(_py ${_py_files})
     get_filename_component(_py_path ${_py} PATH)
     get_filename_component(_py_abs ${_py} ABSOLUTE)
-    
-    # check if _py is a path in CMAKE_BINARY_DIR. If so, then it is most likely a configured_file. 
+
+    # check if _py is a path in CMAKE_BINARY_DIR. If so, then it is most likely a configured_file.
     # then strip the CMAKE_CURRENT_BINARY_DIR prefix.
     if(${_py} MATCHES "^(${CMAKE_CURRENT_BINARY_DIR})")
       string(REGEX REPLACE "^(${CMAKE_CURRENT_BINARY_DIR}/)" "" _py "${_py}")
@@ -124,7 +107,7 @@ macro(python_install)
         "destdir = os.environ.get('DESTDIR','')"
         "print('-- Byte-compiling: %s${_inst_dir}/${_py}' % destdir)"
         "py_compile.compile('%s${DESTDIR}${_inst_dir}/${_py}' % destdir, doraise=True)")
-      install(CODE 
+      install(CODE
         "execute_process(COMMAND ${PYTHON_EXECUTABLE} -c \"${_py_code}\"
                        RESULT_VARIABLE _result)
        if(NOT _result EQUAL 0)
@@ -140,8 +123,8 @@ macro(python_install)
     set(_init_dir "${_init_dir}/${_dir}")
     execute_process(COMMAND ${CMAKE_COMMAND} -E touch
       "${PYTHON_BUILD_DIR}${_init_dir}/__init__.py")
-    install(CODE 
-      "execute_process(COMMAND ${CMAKE_COMMAND} -E touch 
+    install(CODE
+      "execute_process(COMMAND ${CMAKE_COMMAND} -E touch
         \"\$ENV{DESTDIR}${PYTHON_INSTALL_DIR}${_init_dir}/__init__.py\")")
   endforeach(_dir ${_dir_list})
 
diff --git a/CMake/config.h.in b/CMake/config.h.in
index f511dd6b..e22545df 100644
--- a/CMake/config.h.in
+++ b/CMake/config.h.in
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_CONFIG_H_
 #define EVERYBEAM_CONFIG_H_
 
diff --git a/CMake/version.h.in b/CMake/version.h.in
index 5357c8ff..14f7c642 100644
--- a/CMake/version.h.in
+++ b/CMake/version.h.in
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_VERSION_H_
 #define EVERYBEAM_VERSION_H_
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c7aa1e0e..b9a5d83d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #------------------------------------------------------------------------------
 # Top level CMakeLists.txt file for EveryBeam
 cmake_minimum_required(VERSION 3.0.0)
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 465e9967..0e15aa8d 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 project(everybeam_cpp)
 
 #------------------------------------------------------------------------------
diff --git a/cpp/antenna.cc b/cpp/antenna.cc
index 1322c746..3c47755d 100644
--- a/cpp/antenna.cc
+++ b/cpp/antenna.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "antenna.h"
 
 #include "common/mathutils.h"
diff --git a/cpp/antenna.h b/cpp/antenna.h
index b2d39f1b..8470c095 100644
--- a/cpp/antenna.h
+++ b/cpp/antenna.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ANTENNA_H
 #define EVERYBEAM_ANTENNA_H
 
diff --git a/cpp/aterms/CMakeLists.txt b/cpp/aterms/CMakeLists.txt
index b273a22e..3fb8ec29 100644
--- a/cpp/aterms/CMakeLists.txt
+++ b/cpp/aterms/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
 atermconfig.h
 parsetprovider.h
diff --git a/cpp/aterms/atermbase.cc b/cpp/aterms/atermbase.cc
index 7fe03754..9ddf9096 100644
--- a/cpp/aterms/atermbase.cc
+++ b/cpp/aterms/atermbase.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "atermbase.h"
 
 #include <aocommon/fits/fitswriter.h>
diff --git a/cpp/aterms/atermbase.h b/cpp/aterms/atermbase.h
index e2ea5a5e..d2cda7e5 100644
--- a/cpp/aterms/atermbase.h
+++ b/cpp/aterms/atermbase.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_ATERM_BASE_H
 #define EVERYBEAM_ATERMS_ATERM_BASE_H
 
diff --git a/cpp/aterms/atermbeam.h b/cpp/aterms/atermbeam.h
index 006572c5..bd929e94 100644
--- a/cpp/aterms/atermbeam.h
+++ b/cpp/aterms/atermbeam.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_ATERM_BEAM_H
 #define EVERYBEAM_ATERMS_ATERM_BEAM_H
 
diff --git a/cpp/aterms/atermconfig.cc b/cpp/aterms/atermconfig.cc
index bf6ebb84..f905e628 100644
--- a/cpp/aterms/atermconfig.cc
+++ b/cpp/aterms/atermconfig.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "atermconfig.h"
 
 #include "atermbeam.h"
diff --git a/cpp/aterms/atermconfig.h b/cpp/aterms/atermconfig.h
index 37972f1c..396e9297 100644
--- a/cpp/aterms/atermconfig.h
+++ b/cpp/aterms/atermconfig.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_ATERM_CONFIG_H
 #define EVERYBEAM_ATERMS_ATERM_CONFIG_H
 
diff --git a/cpp/aterms/atermresampler.cc b/cpp/aterms/atermresampler.cc
index d8d7f4c9..680d755f 100644
--- a/cpp/aterms/atermresampler.cc
+++ b/cpp/aterms/atermresampler.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "atermresampler.h"
 
 #include "../common/fftresampler.h"
diff --git a/cpp/aterms/atermresampler.h b/cpp/aterms/atermresampler.h
index 5a27cc93..de1d617c 100644
--- a/cpp/aterms/atermresampler.h
+++ b/cpp/aterms/atermresampler.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_ATERM_RESAMPLER_H
 #define EVERYBEAM_ATERMS_ATERM_RESAMPLER_H
 
diff --git a/cpp/aterms/cache.cc b/cpp/aterms/cache.cc
index 75992eb0..39e805fe 100644
--- a/cpp/aterms/cache.cc
+++ b/cpp/aterms/cache.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "cache.h"
 
 #include <limits>
diff --git a/cpp/aterms/cache.h b/cpp/aterms/cache.h
index 2840738c..70b2dac0 100644
--- a/cpp/aterms/cache.h
+++ b/cpp/aterms/cache.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERM_CACHE_H
 #define EVERYBEAM_ATERM_CACHE_H
 
diff --git a/cpp/aterms/dldmaterm.cc b/cpp/aterms/dldmaterm.cc
index 88fe3e65..e2e9fd76 100644
--- a/cpp/aterms/dldmaterm.cc
+++ b/cpp/aterms/dldmaterm.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "dldmaterm.h"
 
 #include <aocommon/banddata.h>
diff --git a/cpp/aterms/dldmaterm.h b/cpp/aterms/dldmaterm.h
index b1ce0669..8af0b9a6 100644
--- a/cpp/aterms/dldmaterm.h
+++ b/cpp/aterms/dldmaterm.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_DLDM_ATERM_H
 #define EVERYBEAM_DLDM_ATERM_H
 
diff --git a/cpp/aterms/everybeamaterm.cc b/cpp/aterms/everybeamaterm.cc
index 8e9c644e..6b3bf0c6 100644
--- a/cpp/aterms/everybeamaterm.cc
+++ b/cpp/aterms/everybeamaterm.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "everybeamaterm.h"
 
 #include "../load.h"
diff --git a/cpp/aterms/everybeamaterm.h b/cpp/aterms/everybeamaterm.h
index d8de2111..2b1ee006 100644
--- a/cpp/aterms/everybeamaterm.h
+++ b/cpp/aterms/everybeamaterm.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_EVERYBEAMATERMS_H_
 #define EVERYBEAM_ATERMS_EVERYBEAMATERMS_H_
 
diff --git a/cpp/aterms/fitsaterm.cc b/cpp/aterms/fitsaterm.cc
index a234ba07..7bdf0d38 100644
--- a/cpp/aterms/fitsaterm.cc
+++ b/cpp/aterms/fitsaterm.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "fitsaterm.h"
 
 using everybeam::aterms::FitsATerm;
diff --git a/cpp/aterms/fitsaterm.h b/cpp/aterms/fitsaterm.h
index eccb2319..e315adb8 100644
--- a/cpp/aterms/fitsaterm.h
+++ b/cpp/aterms/fitsaterm.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_FITS_ATERM_H
 #define EVERYBEAM_ATERMS_FITS_ATERM_H
 
diff --git a/cpp/aterms/fitsatermbase.cc b/cpp/aterms/fitsatermbase.cc
index 630d912b..62624d15 100644
--- a/cpp/aterms/fitsatermbase.cc
+++ b/cpp/aterms/fitsatermbase.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "fitsatermbase.h"
 #include "atermresampler.h"
 
diff --git a/cpp/aterms/fitsatermbase.h b/cpp/aterms/fitsatermbase.h
index 2b5f42d9..18a81726 100644
--- a/cpp/aterms/fitsatermbase.h
+++ b/cpp/aterms/fitsatermbase.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_FITS_ATERM_BASE_H
 #define EVERYBEAM_ATERMS_FITS_ATERM_BASE_H
 
diff --git a/cpp/aterms/pafbeamterm.cc b/cpp/aterms/pafbeamterm.cc
index 38cdf608..8d9d895f 100644
--- a/cpp/aterms/pafbeamterm.cc
+++ b/cpp/aterms/pafbeamterm.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "pafbeamterm.h"
 
 #include <boost/algorithm/string.hpp>
diff --git a/cpp/aterms/pafbeamterm.h b/cpp/aterms/pafbeamterm.h
index 4b94313d..dfc37c44 100644
--- a/cpp/aterms/pafbeamterm.h
+++ b/cpp/aterms/pafbeamterm.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_PAF_BEAM_TERM_H
 #define EVERYBEAM_ATERMS_PAF_BEAM_TERM_H
 
diff --git a/cpp/aterms/parsetprovider.h b/cpp/aterms/parsetprovider.h
index 1c5996ba..52d66b1e 100644
--- a/cpp/aterms/parsetprovider.h
+++ b/cpp/aterms/parsetprovider.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_PARSETPROVIDER_H_
 #define EVERYBEAM_ATERMS_PARSETPROVIDER_H_
 
diff --git a/cpp/beamformer.cc b/cpp/beamformer.cc
index 89d524ea..419709c1 100644
--- a/cpp/beamformer.cc
+++ b/cpp/beamformer.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformer.h"
 
 #include "common/constants.h"
diff --git a/cpp/beamformer.h b/cpp/beamformer.h
index be959de7..884520ec 100644
--- a/cpp/beamformer.h
+++ b/cpp/beamformer.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMER_H
 #define EVERYBEAM_BEAMFORMER_H
 
diff --git a/cpp/beamformeridenticalantennas.cc b/cpp/beamformeridenticalantennas.cc
index 75b3ba99..0e721c16 100644
--- a/cpp/beamformeridenticalantennas.cc
+++ b/cpp/beamformeridenticalantennas.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformeridenticalantennas.h"
 
 #include "common/constants.h"
diff --git a/cpp/beamformeridenticalantennas.h b/cpp/beamformeridenticalantennas.h
index 26aedab2..7022e1ca 100644
--- a/cpp/beamformeridenticalantennas.h
+++ b/cpp/beamformeridenticalantennas.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMERIDENTICALANTENNAS_H
 #define EVERYBEAM_BEAMFORMERIDENTICALANTENNAS_H
 
diff --git a/cpp/beamformerlofar.cc b/cpp/beamformerlofar.cc
index 0d9e33b2..ec548b74 100644
--- a/cpp/beamformerlofar.cc
+++ b/cpp/beamformerlofar.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformerlofar.h"
 
 #include "common/constants.h"
diff --git a/cpp/beamformerlofar.h b/cpp/beamformerlofar.h
index 80cf9282..4c9663f2 100644
--- a/cpp/beamformerlofar.h
+++ b/cpp/beamformerlofar.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMERLOFAR_H
 #define EVERYBEAM_BEAMFORMERLOFAR_H
 
diff --git a/cpp/beamformerlofarhba.cc b/cpp/beamformerlofarhba.cc
index e3a2baf1..0ebce37e 100644
--- a/cpp/beamformerlofarhba.cc
+++ b/cpp/beamformerlofarhba.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformerlofarhba.h"
 #include "common/mathutils.h"
 
diff --git a/cpp/beamformerlofarhba.h b/cpp/beamformerlofarhba.h
index b838d64a..937f4ec4 100644
--- a/cpp/beamformerlofarhba.h
+++ b/cpp/beamformerlofarhba.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMERLOFARHBA_H
 #define EVERYBEAM_BEAMFORMERLOFARHBA_H
 
diff --git a/cpp/beamformerlofarlba.cc b/cpp/beamformerlofarlba.cc
index 9cb841ad..e85d9a29 100644
--- a/cpp/beamformerlofarlba.cc
+++ b/cpp/beamformerlofarlba.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformerlofarlba.h"
 
 namespace everybeam {
diff --git a/cpp/beamformerlofarlba.h b/cpp/beamformerlofarlba.h
index c7a8db50..9a580b26 100644
--- a/cpp/beamformerlofarlba.h
+++ b/cpp/beamformerlofarlba.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMERLOFARLBA_H
 #define EVERYBEAM_BEAMFORMERLOFARLBA_H
 
diff --git a/cpp/circularsymmetric/CMakeLists.txt b/cpp/circularsymmetric/CMakeLists.txt
index 1dbf2754..368ef298 100644
--- a/cpp/circularsymmetric/CMakeLists.txt
+++ b/cpp/circularsymmetric/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
   vlabeam.h
   voltagepattern.h
diff --git a/cpp/circularsymmetric/vlabeam.cc b/cpp/circularsymmetric/vlabeam.cc
index 27de5215..9ed4e271 100644
--- a/cpp/circularsymmetric/vlabeam.cc
+++ b/cpp/circularsymmetric/vlabeam.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "vlabeam.h"
 
 #include <cmath>
diff --git a/cpp/circularsymmetric/vlabeam.h b/cpp/circularsymmetric/vlabeam.h
index 33477d18..c63d0b25 100644
--- a/cpp/circularsymmetric/vlabeam.h
+++ b/cpp/circularsymmetric/vlabeam.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_CIRCULARSYMMETRIC_VLABEAM_H_
 #define EVERYBEAM_CIRCULARSYMMETRIC_VLABEAM_H_
 
diff --git a/cpp/circularsymmetric/voltagepattern.cc b/cpp/circularsymmetric/voltagepattern.cc
index 1983c3c7..0fdc8fb9 100644
--- a/cpp/circularsymmetric/voltagepattern.cc
+++ b/cpp/circularsymmetric/voltagepattern.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "voltagepattern.h"
 
 #include <aocommon/imagecoordinates.h>
diff --git a/cpp/circularsymmetric/voltagepattern.h b/cpp/circularsymmetric/voltagepattern.h
index 5044ff54..4bd79fa5 100644
--- a/cpp/circularsymmetric/voltagepattern.h
+++ b/cpp/circularsymmetric/voltagepattern.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_CIRCULARSYMMETRIC_VOLTAGE_PATTERN_H_
 #define EVERYBEAM_CIRCULARSYMMETRIC_VOLTAGE_PATTERN_H_
 
diff --git a/cpp/common/CMakeLists.txt b/cpp/common/CMakeLists.txt
index d61c842a..cf9934c0 100644
--- a/cpp/common/CMakeLists.txt
+++ b/cpp/common/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
   constants.h
   casautils.h
diff --git a/cpp/common/casautils.h b/cpp/common/casautils.h
index d7b6b8ab..0b9f1096 100644
--- a/cpp/common/casautils.h
+++ b/cpp/common/casautils.h
@@ -1,25 +1,7 @@
 // casautils.h: CasaCore utilities.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_COMMON_CASAUTIL_H_
 #define EVERYBEAM_COMMON_CASAUTIL_H_
diff --git a/cpp/common/constants.h b/cpp/common/constants.h
index c51235a3..420911ef 100644
--- a/cpp/common/constants.h
+++ b/cpp/common/constants.h
@@ -1,24 +1,7 @@
 // constants.h: %Constants used in this library.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_CONSTANTS_H
 #define EVERYBEAM_CONSTANTS_H
diff --git a/cpp/common/fftresampler.cc b/cpp/common/fftresampler.cc
index c6b8a82f..24a2a654 100644
--- a/cpp/common/fftresampler.cc
+++ b/cpp/common/fftresampler.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "fftresampler.h"
 
 #include <complex>
diff --git a/cpp/common/fftresampler.h b/cpp/common/fftresampler.h
index f6627e70..2c6a1b50 100644
--- a/cpp/common/fftresampler.h
+++ b/cpp/common/fftresampler.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_COMMON_FFT_RESAMPLE_H_
 #define EVERYBEAM_COMMON_FFT_RESAMPLE_H_
 
diff --git a/cpp/common/mathutils.h b/cpp/common/mathutils.h
index eaa569e1..bce2ea39 100644
--- a/cpp/common/mathutils.h
+++ b/cpp/common/mathutils.h
@@ -1,24 +1,7 @@
 // mathutils.h: Various mathematical operations on vectors and matrices.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_MATHUTIL_H
 #define EVERYBEAM_MATHUTIL_H
diff --git a/cpp/common/mutable_ptr.h b/cpp/common/mutable_ptr.h
index 1972f641..876e250b 100644
--- a/cpp/common/mutable_ptr.h
+++ b/cpp/common/mutable_ptr.h
@@ -1,24 +1,7 @@
 // mutableptr.h: Representation of an LBA antenna field.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_MUTABLEPTR_H
 #define EVERYBEAM_MUTABLEPTR_H
diff --git a/cpp/common/singleton.h b/cpp/common/singleton.h
index 865899f6..678739f0 100644
--- a/cpp/common/singleton.h
+++ b/cpp/common/singleton.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_SINGLETON_H
 #define EVERYBEAM_SINGLETON_H
 
diff --git a/cpp/common/types.h b/cpp/common/types.h
index 35a440fc..b845faeb 100644
--- a/cpp/common/types.h
+++ b/cpp/common/types.h
@@ -1,24 +1,7 @@
 // types.h: Types used in this library.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TYPES_H
 #define EVERYBEAM_TYPES_H
diff --git a/cpp/coords/CMakeLists.txt b/cpp/coords/CMakeLists.txt
index d0b52681..7380778d 100644
--- a/cpp/coords/CMakeLists.txt
+++ b/cpp/coords/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
   itrfconverter.h
   itrfdirection.h
diff --git a/cpp/coords/coordutils.h b/cpp/coords/coordutils.h
index 7f9e637e..ad00f819 100644
--- a/cpp/coords/coordutils.h
+++ b/cpp/coords/coordutils.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_COORDS_COORDUTILS_H_
 #define EVERYBEAM_COORDS_COORDUTILS_H_
 
diff --git a/cpp/coords/itrfconverter.cc b/cpp/coords/itrfconverter.cc
index 79f95694..500ac55f 100644
--- a/cpp/coords/itrfconverter.cc
+++ b/cpp/coords/itrfconverter.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 // Dir2ITRF.cc: Convertor that maps time to an ITRF direction.
 
 #include "itrfdirection.h"
diff --git a/cpp/coords/itrfconverter.h b/cpp/coords/itrfconverter.h
index 18a17859..3284a048 100644
--- a/cpp/coords/itrfconverter.h
+++ b/cpp/coords/itrfconverter.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 // itrfconverter.h: Convert time to an ITRF direction.
 
 #ifndef EVERYBEAM_DIR2ITRF_H
diff --git a/cpp/coords/itrfdirection.cc b/cpp/coords/itrfdirection.cc
index fb996d6f..e82479c9 100644
--- a/cpp/coords/itrfdirection.cc
+++ b/cpp/coords/itrfdirection.cc
@@ -1,24 +1,7 @@
 // itrfdirection.cc: Functor that maps time to an ITRF direction.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include "itrfdirection.h"
 
diff --git a/cpp/coords/itrfdirection.h b/cpp/coords/itrfdirection.h
index 4a4a0b7a..89b1dd5c 100644
--- a/cpp/coords/itrfdirection.h
+++ b/cpp/coords/itrfdirection.h
@@ -1,24 +1,7 @@
 // itrfdirection.h: Functor that maps time to an ITRF direction.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_ITRFDIRECTION_H
 #define EVERYBEAM_ITRFDIRECTION_H
diff --git a/cpp/element.cc b/cpp/element.cc
index b1fc4ed5..63f38e1d 100644
--- a/cpp/element.cc
+++ b/cpp/element.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "element.h"
 #include "common/mathutils.h"
 
diff --git a/cpp/element.h b/cpp/element.h
index ea01dd85..299cf6c6 100644
--- a/cpp/element.h
+++ b/cpp/element.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ELEMENT_H
 #define EVERYBEAM_ELEMENT_H
 
diff --git a/cpp/elementhamaker.cc b/cpp/elementhamaker.cc
index 4985f12a..004e5e1c 100644
--- a/cpp/elementhamaker.cc
+++ b/cpp/elementhamaker.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "elementhamaker.h"
 #include "common/mathutils.h"
 #include "common/constants.h"
diff --git a/cpp/elementhamaker.h b/cpp/elementhamaker.h
index ac3f6993..9aa52664 100644
--- a/cpp/elementhamaker.h
+++ b/cpp/elementhamaker.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ELEMENT_HAMAKER_H
 #define EVERYBEAM_ELEMENT_HAMAKER_H
 
diff --git a/cpp/elementresponse.cc b/cpp/elementresponse.cc
index 643b4c16..7aa40c3c 100644
--- a/cpp/elementresponse.cc
+++ b/cpp/elementresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "elementresponse.h"
 
 namespace everybeam {
diff --git a/cpp/elementresponse.h b/cpp/elementresponse.h
index 6ca34997..0462635a 100644
--- a/cpp/elementresponse.h
+++ b/cpp/elementresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ELEMENTRESPONSE_H
 #define EVERYBEAM_ELEMENTRESPONSE_H
 
diff --git a/cpp/fieldresponse.h b/cpp/fieldresponse.h
index 781e60f0..e51f17cc 100644
--- a/cpp/fieldresponse.h
+++ b/cpp/fieldresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_FIELDRESPONSE_H
 #define EVERYBEAM_FIELDRESPONSE_H
 
diff --git a/cpp/griddedresponse/CMakeLists.txt b/cpp/griddedresponse/CMakeLists.txt
index 7b045982..5fe47c76 100644
--- a/cpp/griddedresponse/CMakeLists.txt
+++ b/cpp/griddedresponse/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
   griddedresponse.h
   lofargrid.h
diff --git a/cpp/griddedresponse/dishgrid.cc b/cpp/griddedresponse/dishgrid.cc
index f0e7b711..7ff04762 100644
--- a/cpp/griddedresponse/dishgrid.cc
+++ b/cpp/griddedresponse/dishgrid.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "dishgrid.h"
 #include "../telescope/dish.h"
 #include "../circularsymmetric/voltagepattern.h"
diff --git a/cpp/griddedresponse/dishgrid.h b/cpp/griddedresponse/dishgrid.h
index cf8e4279..2c229df1 100644
--- a/cpp/griddedresponse/dishgrid.h
+++ b/cpp/griddedresponse/dishgrid.h
@@ -1,25 +1,7 @@
 // dishgrid.h: Class for computing the circular symmetric (gridded) response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_DISHGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_DISHGRID_H_
diff --git a/cpp/griddedresponse/griddedresponse.cc b/cpp/griddedresponse/griddedresponse.cc
index 88831692..694f1d4b 100644
--- a/cpp/griddedresponse/griddedresponse.cc
+++ b/cpp/griddedresponse/griddedresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "griddedresponse.h"
 #include "../common/fftresampler.h"
 
diff --git a/cpp/griddedresponse/griddedresponse.h b/cpp/griddedresponse/griddedresponse.h
index fffebf55..f0eaae91 100644
--- a/cpp/griddedresponse/griddedresponse.h
+++ b/cpp/griddedresponse/griddedresponse.h
@@ -1,25 +1,7 @@
 // griddedresponse.h: Base class for computing the (gridded) telescope response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_GRIDDEDRESPONSE_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_GRIDDEDRESPONSE_H_
diff --git a/cpp/griddedresponse/lofargrid.h b/cpp/griddedresponse/lofargrid.h
index a790d6e1..9db5cf6f 100644
--- a/cpp/griddedresponse/lofargrid.h
+++ b/cpp/griddedresponse/lofargrid.h
@@ -1,25 +1,7 @@
 // lofargrid.h: Class for computing the LOFAR (gridded) response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_LOFARGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_LOFARGRID_H_
diff --git a/cpp/griddedresponse/mwagrid.cc b/cpp/griddedresponse/mwagrid.cc
index 3e15105e..10af3101 100644
--- a/cpp/griddedresponse/mwagrid.cc
+++ b/cpp/griddedresponse/mwagrid.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "mwagrid.h"
 #include "../telescope/mwa.h"
 
diff --git a/cpp/griddedresponse/mwagrid.h b/cpp/griddedresponse/mwagrid.h
index 98e32dbe..a4f07c57 100644
--- a/cpp/griddedresponse/mwagrid.h
+++ b/cpp/griddedresponse/mwagrid.h
@@ -1,25 +1,7 @@
 // mwagrid.h: Class for computing the circular symmetric (gridded) response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_MWAGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_MWAGRID_H_
diff --git a/cpp/griddedresponse/oskargrid.h b/cpp/griddedresponse/oskargrid.h
index 7ed35c87..2e4a3f76 100644
--- a/cpp/griddedresponse/oskargrid.h
+++ b/cpp/griddedresponse/oskargrid.h
@@ -1,25 +1,7 @@
 // oskargrid.h: Class for computing the OSKAR (gridded) response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_OSKARGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_OSKARGRID_H_
diff --git a/cpp/griddedresponse/phasedarraygrid.cc b/cpp/griddedresponse/phasedarraygrid.cc
index b0c95cc8..929fc2af 100644
--- a/cpp/griddedresponse/phasedarraygrid.cc
+++ b/cpp/griddedresponse/phasedarraygrid.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "phasedarraygrid.h"
 #include "./../telescope/phasedarray.h"
 
diff --git a/cpp/griddedresponse/phasedarraygrid.h b/cpp/griddedresponse/phasedarraygrid.h
index 339db18d..35f7c300 100644
--- a/cpp/griddedresponse/phasedarraygrid.h
+++ b/cpp/griddedresponse/phasedarraygrid.h
@@ -1,26 +1,8 @@
 // phasedarraygrid.h: Intermediate class for computing the gridded
 // response for phased array radio telescopes such as LOFAR and SKA(-LOW)
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_PHASEDARRAYGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_PHASEDARRAYGRID_H_
diff --git a/cpp/hamaker/CMakeLists.txt b/cpp/hamaker/CMakeLists.txt
index 744ff1b8..ffb888ab 100644
--- a/cpp/hamaker/CMakeLists.txt
+++ b/cpp/hamaker/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # directory for config.h
 include_directories(${CMAKE_BINARY_DIR})
 
diff --git a/cpp/hamaker/hamakercoeff.cc b/cpp/hamaker/hamakercoeff.cc
index b43d3d54..63310094 100644
--- a/cpp/hamaker/hamakercoeff.cc
+++ b/cpp/hamaker/hamakercoeff.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "hamakercoeff.h"
 
 H5::CompType GetComplexDoubleType() {
diff --git a/cpp/hamaker/hamakercoeff.h b/cpp/hamaker/hamakercoeff.h
index 2525df96..4e9bf455 100644
--- a/cpp/hamaker/hamakercoeff.h
+++ b/cpp/hamaker/hamakercoeff.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef HAMAKER_COEFF_H
 #define HAMAKER_COEFF_H
 
diff --git a/cpp/hamaker/hamakerelementresponse.cc b/cpp/hamaker/hamakerelementresponse.cc
index 80726994..1f56cfb9 100644
--- a/cpp/hamaker/hamakerelementresponse.cc
+++ b/cpp/hamaker/hamakerelementresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 // hamakerelementresponse.cc:
 // Functions to compute the (idealized) response of a LOFAR
 // LBA or HBA dual dipole antenna.
diff --git a/cpp/hamaker/hamakerelementresponse.h b/cpp/hamaker/hamakerelementresponse.h
index 5712185c..11303a15 100644
--- a/cpp/hamaker/hamakerelementresponse.h
+++ b/cpp/hamaker/hamakerelementresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef HAMAKER_ELEMENTRESPONSE_H
 #define HAMAKER_ELEMENTRESPONSE_H
 
diff --git a/cpp/load.cc b/cpp/load.cc
index 3deab5da..07bdc397 100644
--- a/cpp/load.cc
+++ b/cpp/load.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "load.h"
 
 #include "telescope/lofar.h"
diff --git a/cpp/load.h b/cpp/load.h
index b5f367dc..6830c29c 100644
--- a/cpp/load.h
+++ b/cpp/load.h
@@ -1,25 +1,7 @@
 // load_telescope.h: Main interface function for loading a telescope
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_LOAD_H_
 #define EVERYBEAM_LOAD_H_
diff --git a/cpp/lobes/CMakeLists.txt b/cpp/lobes/CMakeLists.txt
index 8065d4c8..d9a8cbb1 100644
--- a/cpp/lobes/CMakeLists.txt
+++ b/cpp/lobes/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #------------------------------------------------------------------------------
 # directory for config.h
 include_directories(${CMAKE_BINARY_DIR})
diff --git a/cpp/lobes/lobeselementresponse.cc b/cpp/lobes/lobeselementresponse.cc
index 7307ac1b..14503d06 100644
--- a/cpp/lobes/lobeselementresponse.cc
+++ b/cpp/lobes/lobeselementresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <cmath>
 
 #include "config.h"
diff --git a/cpp/lobes/lobeselementresponse.h b/cpp/lobes/lobeselementresponse.h
index ac0cf22b..1d2467ef 100644
--- a/cpp/lobes/lobeselementresponse.h
+++ b/cpp/lobes/lobeselementresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_LOBES_ELEMENTRESPONSE_H
 #define EVERYBEAM_LOBES_ELEMENTRESPONSE_H
 
diff --git a/cpp/lofarreadutils.cc b/cpp/lofarreadutils.cc
index a4e448c1..73652d05 100644
--- a/cpp/lofarreadutils.cc
+++ b/cpp/lofarreadutils.cc
@@ -1,25 +1,8 @@
 // lofarreadutils.cc: Utility functions to read the meta data relevant for
 // simulating the beam from LOFAR observations stored in MS format.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include "lofarreadutils.h"
 #include "beamformeridenticalantennas.h"
diff --git a/cpp/lofarreadutils.h b/cpp/lofarreadutils.h
index 065521a3..24eff9ab 100644
--- a/cpp/lofarreadutils.h
+++ b/cpp/lofarreadutils.h
@@ -1,25 +1,8 @@
 // lofarreadutils.h: Utility functions to read the meta data relevant for
 // simulating the beam from LOFAR observations stored in MS format.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_LOFARREADUTILS_H_
 #define EVERYBEAM_LOFARREADUTILS_H_
diff --git a/cpp/msv3readutils.cc b/cpp/msv3readutils.cc
index af2a56fb..f3e64fc4 100644
--- a/cpp/msv3readutils.cc
+++ b/cpp/msv3readutils.cc
@@ -1,25 +1,8 @@
 // lofarreadutils.cc: Utility functions to read the meta data relevant for
 // simulating the beam from LOFAR observations stored in MS format.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include "lofarreadutils.h"
 #include "beamformeridenticalantennas.h"
diff --git a/cpp/msv3readutils.h b/cpp/msv3readutils.h
index 87ddc183..0bb84990 100644
--- a/cpp/msv3readutils.h
+++ b/cpp/msv3readutils.h
@@ -1,25 +1,8 @@
 // msv3readutils.h: Utility functions to read the meta data relevant for
 // simulating the beam from OSKAR simulations stored in MS format.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_MSV3READUTILS_H_
 #define EVERYBEAM_MSV3READUTILS_H_
diff --git a/cpp/mwabeam/beam2016implementation.cc b/cpp/mwabeam/beam2016implementation.cc
index 0844e108..8b21ff7d 100644
--- a/cpp/mwabeam/beam2016implementation.cc
+++ b/cpp/mwabeam/beam2016implementation.cc
@@ -1,9 +1,10 @@
-/**
- * C++ implementation of Full Embeded Element beam model for MWA based on
- * beam_full_EE.py script and Sokolowski et al (2016) paper Implemented by
- * Marcin Sokolowski (May 2017) - marcin.sokolowski@curtin.edu.au 20 May 2017 :
- * Somewhat optimized by André Offringa.
- */
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+// C++ implementation of Full Embeded Element beam model for MWA based on
+// beam_full_EE.py script and Sokolowski et al (2016) paper Implemented by
+// Marcin Sokolowski (May 2017) - marcin.sokolowski@curtin.edu.au 20 May 2017 :
+// Somewhat optimized by André Offringa.
 
 #include <algorithm>
 #include <cmath>
diff --git a/cpp/mwabeam/beam2016implementation.h b/cpp/mwabeam/beam2016implementation.h
index 62b053c9..ce0563cd 100644
--- a/cpp/mwabeam/beam2016implementation.h
+++ b/cpp/mwabeam/beam2016implementation.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef _GET_FF_H__
 #define _GET_FF_H__
 
diff --git a/cpp/mwabeam/factorialtable.h b/cpp/mwabeam/factorialtable.h
index 274b78be..01db4065 100644
--- a/cpp/mwabeam/factorialtable.h
+++ b/cpp/mwabeam/factorialtable.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_MWABEAM_FACTORIALTABLE_H_
 #define EVERYBEAM_MWABEAM_FACTORIALTABLE_H_
 
diff --git a/cpp/mwabeam/recursivelock.h b/cpp/mwabeam/recursivelock.h
index 3254adcf..746af20f 100644
--- a/cpp/mwabeam/recursivelock.h
+++ b/cpp/mwabeam/recursivelock.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_MWABEAM_RECURSIVELOCK_H_
 #define EVERYBEAM_MWABEAM_RECURSIVELOCK_H_
 
diff --git a/cpp/mwabeam/tilebeam2016.cc b/cpp/mwabeam/tilebeam2016.cc
index 06a400ea..514c5bce 100644
--- a/cpp/mwabeam/tilebeam2016.cc
+++ b/cpp/mwabeam/tilebeam2016.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "tilebeam2016.h"
 
 #include <casacore/measures/Measures/MDirection.h>
diff --git a/cpp/mwabeam/tilebeam2016.h b/cpp/mwabeam/tilebeam2016.h
index b61b50c4..f9ab04a7 100644
--- a/cpp/mwabeam/tilebeam2016.h
+++ b/cpp/mwabeam/tilebeam2016.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_MWABEAM_TILEBEAM2016_H_
 #define EVERYBEAM_MWABEAM_TILEBEAM2016_H_
 
diff --git a/cpp/options.h b/cpp/options.h
index 483a9ac9..98531d8c 100644
--- a/cpp/options.h
+++ b/cpp/options.h
@@ -1,25 +1,7 @@
 // Options.h: Class for specifying the telescope response options.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_OPTIONS_H_
 #define EVERYBEAM_OPTIONS_H_
diff --git a/cpp/oskar/CMakeLists.txt b/cpp/oskar/CMakeLists.txt
index 988fcf61..7c4ee818 100644
--- a/cpp/oskar/CMakeLists.txt
+++ b/cpp/oskar/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #------------------------------------------------------------------------------
 # directory for config.h
 include_directories(${CMAKE_BINARY_DIR})
diff --git a/cpp/oskar/oskar.h b/cpp/oskar/oskar.h
index 4488412e..872cf601 100644
--- a/cpp/oskar/oskar.h
+++ b/cpp/oskar/oskar.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "oskar_vector_types.h"
 #include "oskar_helper.h"
 
diff --git a/cpp/oskar/oskardatafile.cc b/cpp/oskar/oskardatafile.cc
index 5e0717ac..08e192b9 100644
--- a/cpp/oskar/oskardatafile.cc
+++ b/cpp/oskar/oskardatafile.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "oskardatafile.h"
 
 #include <iostream>
diff --git a/cpp/oskar/oskardatafile.h b/cpp/oskar/oskardatafile.h
index 9e186419..36bdfc64 100644
--- a/cpp/oskar/oskardatafile.h
+++ b/cpp/oskar/oskardatafile.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef OSKAR_DATAFILE_H
 #define OSKAR_DATAFILE_H
 
diff --git a/cpp/oskar/oskardataset.cc b/cpp/oskar/oskardataset.cc
index fd654a3a..3c22177a 100644
--- a/cpp/oskar/oskardataset.cc
+++ b/cpp/oskar/oskardataset.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <iostream>
 #include <cassert>
 #include <stdexcept>
diff --git a/cpp/oskar/oskardataset.h b/cpp/oskar/oskardataset.h
index 01c8f1ec..646dd11d 100644
--- a/cpp/oskar/oskardataset.h
+++ b/cpp/oskar/oskardataset.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef OSKAR_DATASET_H
 #define OSKAR_DATASET_H
 
diff --git a/cpp/oskar/oskarelementresponse.cc b/cpp/oskar/oskarelementresponse.cc
index 16092865..2fdc8275 100644
--- a/cpp/oskar/oskarelementresponse.cc
+++ b/cpp/oskar/oskarelementresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "oskarelementresponse.h"
 #include "oskar.h"
 #include "config.h"
diff --git a/cpp/oskar/oskarelementresponse.h b/cpp/oskar/oskarelementresponse.h
index 6c897355..78c41e41 100644
--- a/cpp/oskar/oskarelementresponse.h
+++ b/cpp/oskar/oskarelementresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef OSKAR_ELEMENTRESPONSE_H
 #define OSKAR_ELEMENTRESPONSE_H
 
diff --git a/cpp/station.cc b/cpp/station.cc
index 327df98c..4bdee569 100644
--- a/cpp/station.cc
+++ b/cpp/station.cc
@@ -1,24 +1,7 @@
 // Station.cc: Representation of the station beam former.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include "station.h"
 #include "common/mathutils.h"
diff --git a/cpp/station.h b/cpp/station.h
index 7d1eff69..87d74d44 100644
--- a/cpp/station.h
+++ b/cpp/station.h
@@ -1,25 +1,7 @@
 // station.h: Representation of the station beam former.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_STATION_H
 #define EVERYBEAM_STATION_H
diff --git a/cpp/telescope/CMakeLists.txt b/cpp/telescope/CMakeLists.txt
index 6ce5ccdf..38b81101 100644
--- a/cpp/telescope/CMakeLists.txt
+++ b/cpp/telescope/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # TODO: probably, we only need/want to expose the telescope.h header
 install (FILES
   dish.h
diff --git a/cpp/telescope/dish.cc b/cpp/telescope/dish.cc
index 43b568bc..95984aa3 100644
--- a/cpp/telescope/dish.cc
+++ b/cpp/telescope/dish.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "dish.h"
 #include "../griddedresponse/dishgrid.h"
 
diff --git a/cpp/telescope/dish.h b/cpp/telescope/dish.h
index e0a6b774..c2255f45 100644
--- a/cpp/telescope/dish.h
+++ b/cpp/telescope/dish.h
@@ -1,26 +1,8 @@
 // dish.h: Base class for dish telescopes (VLA, ATCA, ...).
 // Inherits from Telescope class.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_DISH_H_
 #define EVERYBEAM_TELESCOPE_DISH_H_
diff --git a/cpp/telescope/lofar.cc b/cpp/telescope/lofar.cc
index b59e47eb..22c40ea9 100644
--- a/cpp/telescope/lofar.cc
+++ b/cpp/telescope/lofar.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "lofar.h"
 #include "../griddedresponse/lofargrid.h"
 #include "../common/mathutils.h"
diff --git a/cpp/telescope/lofar.h b/cpp/telescope/lofar.h
index 06e8160a..c6541b55 100644
--- a/cpp/telescope/lofar.h
+++ b/cpp/telescope/lofar.h
@@ -1,26 +1,8 @@
 // lofar.h: Base class for computing the response for the LOFAR
 // telescope.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_LOFAR_H_
 #define EVERYBEAM_TELESCOPE_LOFAR_H_
diff --git a/cpp/telescope/mwa.cc b/cpp/telescope/mwa.cc
index fd5907dd..4c57925e 100644
--- a/cpp/telescope/mwa.cc
+++ b/cpp/telescope/mwa.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "mwa.h"
 #include "../griddedresponse/mwagrid.h"
 
diff --git a/cpp/telescope/mwa.h b/cpp/telescope/mwa.h
index beeb989e..319f048f 100644
--- a/cpp/telescope/mwa.h
+++ b/cpp/telescope/mwa.h
@@ -1,26 +1,8 @@
 // mwa.h: Class for MWA telescopes.
 // Inherits from Telescope class.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_MWA_H_
 #define EVERYBEAM_TELESCOPE_MWA_H_
diff --git a/cpp/telescope/oskar.cc b/cpp/telescope/oskar.cc
index 53c7dd8d..4a652a10 100644
--- a/cpp/telescope/oskar.cc
+++ b/cpp/telescope/oskar.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "oskar.h"
 #include "../griddedresponse/oskargrid.h"
 #include "../common/mathutils.h"
diff --git a/cpp/telescope/oskar.h b/cpp/telescope/oskar.h
index 553922b7..172e5dcd 100644
--- a/cpp/telescope/oskar.h
+++ b/cpp/telescope/oskar.h
@@ -1,26 +1,8 @@
 // oskar.h: Base class for computing the response for the OSKAR
 // telescope.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_OSKAR_H_
 #define EVERYBEAM_TELESCOPE_OSKAR_H_
diff --git a/cpp/telescope/phasedarray.h b/cpp/telescope/phasedarray.h
index 1d6fa3c9..3f46e599 100644
--- a/cpp/telescope/phasedarray.h
+++ b/cpp/telescope/phasedarray.h
@@ -1,26 +1,8 @@
 // phasedarray.h: Base class for computing the response for phased array
 // telescopes (e.g. LOFAR, SKA-LOW)
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_PHASEDARRAY_H_
 #define EVERYBEAM_TELESCOPE_PHASEDARRAY_H_
diff --git a/cpp/telescope/telescope.h b/cpp/telescope/telescope.h
index 06ed91b2..49528530 100644
--- a/cpp/telescope/telescope.h
+++ b/cpp/telescope/telescope.h
@@ -1,25 +1,7 @@
 // telescope.h: Base class for computing the Telescope response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_TELESCOPE_H_
 #define EVERYBEAM_TELESCOPE_TELESCOPE_H_
diff --git a/cpp/test/CMakeLists.txt b/cpp/test/CMakeLists.txt
index eefecf89..67b28ecb 100644
--- a/cpp/test/CMakeLists.txt
+++ b/cpp/test/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Find boost
 find_package(Boost COMPONENTS unit_test_framework)
 
diff --git a/cpp/test/runtests.cc b/cpp/test/runtests.cc
index 3052dccc..6cf629e0 100644
--- a/cpp/test/runtests.cc
+++ b/cpp/test/runtests.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #define BOOST_TEST_MODULE everybeam
 
 #include <boost/test/unit_test.hpp>
diff --git a/cpp/test/tcache.cc b/cpp/test/tcache.cc
index 30cbb9da..a6800dc9 100644
--- a/cpp/test/tcache.cc
+++ b/cpp/test/tcache.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 
 #include "../aterms/cache.h"
diff --git a/cpp/test/tlofar_hba.cc b/cpp/test/tlofar_hba.cc
index 9980002d..d19e6f37 100644
--- a/cpp/test/tlofar_hba.cc
+++ b/cpp/test/tlofar_hba.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 #include <boost/test/tools/floating_point_comparison.hpp>
 
diff --git a/cpp/test/tlofar_lba.cc b/cpp/test/tlofar_lba.cc
index ae3038e6..a79f6331 100644
--- a/cpp/test/tlofar_lba.cc
+++ b/cpp/test/tlofar_lba.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 #include <boost/test/tools/floating_point_comparison.hpp>
 
diff --git a/cpp/test/tmwa.cc b/cpp/test/tmwa.cc
index e5d08a6b..65b5cf28 100644
--- a/cpp/test/tmwa.cc
+++ b/cpp/test/tmwa.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 
 #include "../load.h"
diff --git a/cpp/test/toskar.cc b/cpp/test/toskar.cc
index 68421c86..d0a9a568 100644
--- a/cpp/test/toskar.cc
+++ b/cpp/test/toskar.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 
 #include "../load.h"
diff --git a/cpp/test/tstation.cc b/cpp/test/tstation.cc
index b6eda727..4a4cc028 100644
--- a/cpp/test/tstation.cc
+++ b/cpp/test/tstation.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "./../station.h"
 
 #include <boost/test/unit_test.hpp>
diff --git a/cpp/test/tvla.cc b/cpp/test/tvla.cc
index ebc37ab8..d034441c 100644
--- a/cpp/test/tvla.cc
+++ b/cpp/test/tvla.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 
 #include "../load.h"
diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt
index 5538b3ad..ee9ea5a1 100644
--- a/demo/CMakeLists.txt
+++ b/demo/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 add_subdirectory(comparison-oskar)
 add_subdirectory(wsclean-oskar)
 
diff --git a/demo/beam-helper.cpp b/demo/beam-helper.cpp
index 402cd1f5..df5b1469 100644
--- a/demo/beam-helper.cpp
+++ b/demo/beam-helper.cpp
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beam-helper.h"
 
 #include <aocommon/imagecoordinates.h>
diff --git a/demo/beam-helper.h b/demo/beam-helper.h
index ab40eeb4..03e15fca 100644
--- a/demo/beam-helper.h
+++ b/demo/beam-helper.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "../cpp/elementresponse.h"
 #include "../cpp/station.h"
 #include "../cpp/lofarreadutils.h"
diff --git a/demo/comparison-oskar/CMakeLists.txt b/demo/comparison-oskar/CMakeLists.txt
index f066cfd8..8f0e939a 100644
--- a/demo/comparison-oskar/CMakeLists.txt
+++ b/demo/comparison-oskar/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #------------------------------------------------------------------------------
 # CMake file for compiling a comparison between OSKAR and EveryBeam
 add_executable(make_element_response_image make_element_response_image.cpp)
diff --git a/demo/comparison-oskar/compare_stationresponse.py b/demo/comparison-oskar/compare_stationresponse.py
index b78457dc..92c50e6a 100644
--- a/demo/comparison-oskar/compare_stationresponse.py
+++ b/demo/comparison-oskar/compare_stationresponse.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import os
 import numpy as np
 from read_oskar_beams import read_oskar_beams
@@ -20,4 +23,3 @@ A = read_oskar_beams()
 B = np.load('station-response.npy')
 
 check_tolerance(tolerance, A, B)
-
diff --git a/demo/comparison-oskar/compare_stationresponse.sh b/demo/comparison-oskar/compare_stationresponse.sh
index 89065415..1f8d4397 100755
--- a/demo/comparison-oskar/compare_stationresponse.sh
+++ b/demo/comparison-oskar/compare_stationresponse.sh
@@ -1,5 +1,6 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 export PATH=$EXTRA_PATH:$PATH
 python3 -B `dirname "${0}"`/compare_stationresponse.py
-
diff --git a/demo/comparison-oskar/generate_basefunction_plots.py b/demo/comparison-oskar/generate_basefunction_plots.py
index 3f7a8735..d12c0beb 100644
--- a/demo/comparison-oskar/generate_basefunction_plots.py
+++ b/demo/comparison-oskar/generate_basefunction_plots.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import os
 import sys
 import numpy as np
diff --git a/demo/comparison-oskar/generate_basefunction_plots.sh b/demo/comparison-oskar/generate_basefunction_plots.sh
index 9be17d4a..fa949810 100755
--- a/demo/comparison-oskar/generate_basefunction_plots.sh
+++ b/demo/comparison-oskar/generate_basefunction_plots.sh
@@ -1,5 +1,6 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 export PATH=$EXTRA_PATH:$PATH
 python3 -B `dirname "${0}"`/generate_basefunction_plots.py
-
diff --git a/demo/comparison-oskar/generate_oskar_csv.py b/demo/comparison-oskar/generate_oskar_csv.py
index 91d2d421..8d181f8c 100755
--- a/demo/comparison-oskar/generate_oskar_csv.py
+++ b/demo/comparison-oskar/generate_oskar_csv.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import argparse
 import os
diff --git a/demo/comparison-oskar/make_element_response_image.cpp b/demo/comparison-oskar/make_element_response_image.cpp
index c3d0952d..519901b3 100644
--- a/demo/comparison-oskar/make_element_response_image.cpp
+++ b/demo/comparison-oskar/make_element_response_image.cpp
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <cmath>
 #include <iostream>
 #include <cstdlib>
@@ -26,7 +29,7 @@ int main(int argc, char** argv){
             double y = (2.0*j)/(N-1) - 1.0;
             double theta = std::asin(sqrt(x*x + y*y));
             double phi = std::atan2(y,x);
-            typedef std::complex<double> Mat[2][2]; 
+            typedef std::complex<double> Mat[2][2];
             element_response.Response(0, freq, theta, phi, *reinterpret_cast<Mat*>(&result[4 * (i*N + j)]));
         }
     }
diff --git a/demo/comparison-oskar/make_plots.py b/demo/comparison-oskar/make_plots.py
index 5525eb05..286805c2 100644
--- a/demo/comparison-oskar/make_plots.py
+++ b/demo/comparison-oskar/make_plots.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import numpy as np
 from matplotlib import pyplot as plt
 from read_oskar_beams import read_oskar_beams
diff --git a/demo/comparison-oskar/make_station_response_image.cpp b/demo/comparison-oskar/make_station_response_image.cpp
index 106e326a..4dcbb8f3 100644
--- a/demo/comparison-oskar/make_station_response_image.cpp
+++ b/demo/comparison-oskar/make_station_response_image.cpp
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <cmath>
 #include <iostream>
 #include <cstdlib>
diff --git a/demo/comparison-oskar/read_oskar_beams.py b/demo/comparison-oskar/read_oskar_beams.py
index 424c3d4e..bb276415 100644
--- a/demo/comparison-oskar/read_oskar_beams.py
+++ b/demo/comparison-oskar/read_oskar_beams.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 from matplotlib import pyplot as plt
 from astropy.io import fits
 import numpy as np
@@ -5,7 +8,7 @@ import numpy as np
 
 def read_oskar_beams():
     """
-    Read oskar beam and store into 
+    Read oskar beam and store into
 
     Returns
     -------
diff --git a/demo/comparison-oskar/run_oskar.py b/demo/comparison-oskar/run_oskar.py
index 9973e307..b5e21a58 100644
--- a/demo/comparison-oskar/run_oskar.py
+++ b/demo/comparison-oskar/run_oskar.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 """
 Generates all-sky zenith-centred beam patterns for SKALA-4 and EDA-2 antennas.
 """
diff --git a/demo/comparison-oskar/run_oskar_simulation.py b/demo/comparison-oskar/run_oskar_simulation.py
index 113b79ac..f68fca52 100755
--- a/demo/comparison-oskar/run_oskar_simulation.py
+++ b/demo/comparison-oskar/run_oskar_simulation.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 """
 Generates all-sky zenith-centred beam patterns for SKALA-4 and EDA-2 antennas.
 """
diff --git a/demo/comparison-oskar/utils.py b/demo/comparison-oskar/utils.py
index a621b988..71f713bf 100644
--- a/demo/comparison-oskar/utils.py
+++ b/demo/comparison-oskar/utils.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 """
 Common functions used in the demo project.
 """
diff --git a/demo/lobes/lobes_image.py b/demo/lobes/lobes_image.py
index 2241717e..71f461f9 100644
--- a/demo/lobes/lobes_image.py
+++ b/demo/lobes/lobes_image.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 from everybeam import load_telescope, LOFAR, Options, thetaphi2cart
 import matplotlib.pyplot as plt
 import numpy as np
diff --git a/demo/misc/makeresponseimage.cc b/demo/misc/makeresponseimage.cc
index 63ab8e7c..a77a3d72 100644
--- a/demo/misc/makeresponseimage.cc
+++ b/demo/misc/makeresponseimage.cc
@@ -1,25 +1,8 @@
 // makeresponseimage.cc: Generate images of the station response for a given
 // MeasurementSet.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include <lofar_config.h>
 
diff --git a/demo/tElementBeamCommon.h b/demo/tElementBeamCommon.h
index d8219d64..e91bebe7 100644
--- a/demo/tElementBeamCommon.h
+++ b/demo/tElementBeamCommon.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <iostream>
 #include <complex>
 #include <vector>
diff --git a/demo/tElementBeamHamaker.cc b/demo/tElementBeamHamaker.cc
index 77b3117f..d0f3123c 100644
--- a/demo/tElementBeamHamaker.cc
+++ b/demo/tElementBeamHamaker.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tElementBeamCommon.h"
diff --git a/demo/tElementBeamOSKARDipole.cc b/demo/tElementBeamOSKARDipole.cc
index 32396a9b..d4ddf682 100644
--- a/demo/tElementBeamOSKARDipole.cc
+++ b/demo/tElementBeamOSKARDipole.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tElementBeamCommon.h"
diff --git a/demo/tElementBeamOSKARSphericalWave.cc b/demo/tElementBeamOSKARSphericalWave.cc
index f8175c83..84771749 100644
--- a/demo/tElementBeamOSKARSphericalWave.cc
+++ b/demo/tElementBeamOSKARSphericalWave.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tElementBeamCommon.h"
diff --git a/demo/tStation.cc b/demo/tStation.cc
index 2e66d71c..824e3c37 100644
--- a/demo/tStation.cc
+++ b/demo/tStation.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <iostream>
 
 #include "./../cpp/station.h"
diff --git a/demo/tStationBeamCommon.h b/demo/tStationBeamCommon.h
index 696cf227..db24c88c 100644
--- a/demo/tStationBeamCommon.h
+++ b/demo/tStationBeamCommon.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <iostream>
 #include <complex>
 #include <vector>
diff --git a/demo/tStationBeamHamaker.cc b/demo/tStationBeamHamaker.cc
index c08a701a..b61e33d5 100644
--- a/demo/tStationBeamHamaker.cc
+++ b/demo/tStationBeamHamaker.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tStationBeamCommon.h"
diff --git a/demo/tStationBeamOSKARDipole.cc b/demo/tStationBeamOSKARDipole.cc
index a20dcdd6..3ea7f842 100644
--- a/demo/tStationBeamOSKARDipole.cc
+++ b/demo/tStationBeamOSKARDipole.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tStationBeamCommon.h"
diff --git a/demo/tStationBeamOSKARSphericalWave.cc b/demo/tStationBeamOSKARSphericalWave.cc
index 06fd02c3..65aeb777 100644
--- a/demo/tStationBeamOSKARSphericalWave.cc
+++ b/demo/tStationBeamOSKARSphericalWave.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tStationBeamCommon.h"
diff --git a/demo/wsclean-oskar/CMakeLists.txt b/demo/wsclean-oskar/CMakeLists.txt
index 4654c53f..17342415 100644
--- a/demo/wsclean-oskar/CMakeLists.txt
+++ b/demo/wsclean-oskar/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 set(MS "testdata.ms")
 
 # Generate the test MeasurementSet
diff --git a/demo/wsclean-oskar/make_model_images.py b/demo/wsclean-oskar/make_model_images.py
index a793be6d..90d45f9d 100644
--- a/demo/wsclean-oskar/make_model_images.py
+++ b/demo/wsclean-oskar/make_model_images.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 from astropy.io import fits
 
 with fits.open("template-image.fits") as img:
@@ -24,4 +27,3 @@ with fits.open("template-image.fits") as img:
     img[0].data[:] = 0.0
     img[0].data[0,0,N-offset,N-offset] = 1.0
     img.writeto('wsclean-V-model.fits', overwrite = True)
-
diff --git a/demo/wsclean-oskar/make_model_images.sh b/demo/wsclean-oskar/make_model_images.sh
index b4a3a322..bd90aa93 100755
--- a/demo/wsclean-oskar/make_model_images.sh
+++ b/demo/wsclean-oskar/make_model_images.sh
@@ -1,5 +1,6 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 export PATH=$EXTRA_PATH:$PATH
 python3 -B `dirname "${0}"`/make_model_images.py
-
diff --git a/demo/wsclean-oskar/run_oskar_simulation.py b/demo/wsclean-oskar/run_oskar_simulation.py
index ae5aaf19..34c4c63d 100755
--- a/demo/wsclean-oskar/run_oskar_simulation.py
+++ b/demo/wsclean-oskar/run_oskar_simulation.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 """
 Generates all-sky zenith-centred beam patterns for SKALA-4 and EDA-2 antennas.
 """
diff --git a/demo/wsclean-oskar/run_oskar_simulation.sh b/demo/wsclean-oskar/run_oskar_simulation.sh
index d10478ea..3ac379a4 100755
--- a/demo/wsclean-oskar/run_oskar_simulation.sh
+++ b/demo/wsclean-oskar/run_oskar_simulation.sh
@@ -1,4 +1,6 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 export PATH=$EXTRA_PATH:$PATH
 python3 -B `dirname "${0}"`/run_oskar_simulation.py
diff --git a/demo/wsclean-oskar/run_wsclean_oskar.sh b/demo/wsclean-oskar/run_wsclean_oskar.sh
index 61161304..68b2b8bf 100755
--- a/demo/wsclean-oskar/run_wsclean_oskar.sh
+++ b/demo/wsclean-oskar/run_wsclean_oskar.sh
@@ -1,4 +1,7 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 set -e
 
 SRC_DIR="$( cd "$( dirname "${0}" )" >/dev/null 2>&1 && pwd )"
@@ -26,5 +29,3 @@ wsclean ${intervaloptions} -name oskar-1-1 -no-dirty -scale 2amin -size 300 300
 wsclean ${intervaloptions} -predict -pol IQUV ${atermoptions} -use-idg ${MS}
 wsclean ${intervaloptions} -name oskar-1-1 -data-column MODEL_DATA -pol IQUV -no-dirty -scale 2amin -size 300 300 ${atermoptions} -use-idg ${MS}
 wsclean ${intervaloptions} -name oskar-1-0 -data-column MODEL_DATA -pol IQUV -no-dirty -scale 2amin -size 300 300 -use-idg ${MS}
-
-
diff --git a/docker/Dockerfile-base b/docker/Dockerfile-base
index 7ee5f98b..8585526c 100644
--- a/docker/Dockerfile-base
+++ b/docker/Dockerfile-base
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # base
 FROM ubuntu:18.04
 RUN apt-get update && apt-get upgrade -y && \
@@ -10,4 +13,4 @@ RUN apt-get update && \
 # install dependencies
         libboost-all-dev libhdf5-dev libfftw3-dev \
         libblas-dev liblapack-dev libgsl-dev libxml2-dev \
-        libpng-dev libgtkmm-3.0-dev libpython3-dev 
+        libpng-dev libgtkmm-3.0-dev libpython3-dev
diff --git a/docker/Dockerfile-dp3 b/docker/Dockerfile-dp3
index 44e50acc..04d76d90 100644
--- a/docker/Dockerfile-dp3
+++ b/docker/Dockerfile-dp3
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #
 # base
 #
diff --git a/docker/Dockerfile-everybeam b/docker/Dockerfile-everybeam
index 86a62861..d763a60b 100644
--- a/docker/Dockerfile-everybeam
+++ b/docker/Dockerfile-everybeam
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 ARG BASE_TAG=latest
 FROM everybeam_base:$BASE_TAG
 
diff --git a/docker/Dockerfile-wsclean b/docker/Dockerfile-wsclean
index c3e2a5fb..12587328 100644
--- a/docker/Dockerfile-wsclean
+++ b/docker/Dockerfile-wsclean
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #
 # base
 #
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 2a1e503e..b1cd9d43 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 project(everybeam_pybind11)
 
 find_package(PythonLibs 3 REQUIRED)
diff --git a/python/lobes/CMakeLists.txt b/python/lobes/CMakeLists.txt
index 244e512d..6e87e1b3 100644
--- a/python/lobes/CMakeLists.txt
+++ b/python/lobes/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 project(lobes_pybind11)
 
 # Create the binding library
diff --git a/python/lobes/lobes.cc b/python/lobes/lobes.cc
index ae50ca0b..e6fa3a98 100644
--- a/python/lobes/lobes.cc
+++ b/python/lobes/lobes.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <cmath>
 
 #include <Eigen/Core>
diff --git a/python/pyeverybeam.cc.tmp b/python/pyeverybeam.cc.tmp
deleted file mode 100644
index 90bf070c..00000000
--- a/python/pyeverybeam.cc.tmp
+++ /dev/null
@@ -1,720 +0,0 @@
-// pyeverybeam.cc: python module for EveryBeam object.
-// Copyright (C) 2007
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id: pystationresponse.cc 33141 2015-12-16 15:10:19Z dijkema $
-
-#include "itrfdirection.h"
-#include "lofarreadutils.h"
-#include "station.h"
-
-#include <casacore/casa/Arrays/Array.h>
-#include <casacore/casa/Arrays/Matrix.h>
-#include <casacore/casa/Arrays/Cube.h>
-#include <casacore/casa/Containers/ValueHolder.h>
-#include <casacore/ms/MeasurementSets/MeasurementSet.h>
-#include <casacore/ms/MeasurementSets/MSColumns.h>
-#include <casacore/measures/Measures/MeasTable.h>
-#include <casacore/measures/Measures/MPosition.h>
-#include <casacore/measures/Measures/MDirection.h>
-#include <casacore/measures/Measures/MeasConvert.h>
-#include <casacore/measures/Measures/MCPosition.h>
-#include <casacore/measures/Measures/MCDirection.h>
-
-#include <casacore/python/Converters/PycExcp.h>
-#include <casacore/python/Converters/PycBasicData.h>
-#include <casacore/python/Converters/PycValueHolder.h>
-
-#include <boost/python.hpp>
-#include <boost/python/args.hpp>
-
-using namespace casacore;
-using namespace boost::python;
-using namespace everybeam;
-
-namespace everybeam {
-namespace {
-
-//! Convert an ITRF position given as a everybeam::vector3r_t instance to a
-//! casacore::MPosition.
-MPosition toMPositionITRF(const vector3r_t &position);
-
-//! Convert a casacore::MPosition instance to a everybeam::vector3r_t instance.
-vector3r_t fromMPosition(const MPosition &position);
-
-//! Convert a casacore::MDirection instance to a StationResponse::vector3r_t
-//! instance.
-vector3r_t fromMDirection(const MDirection &direction);
-
-/*!
- *  \brief Check if the specified column exists as a column of the specified
- *  table.
- *
- *  \param table The Table instance to check.
- *  \param column The name of the column.
- */
-bool hasColumn(const Table &table, const string &column);
-
-/*!
- *  \brief Check if the specified sub-table exists as a sub-table of the
- *  specified table.
- *
- *  \param table The Table instance to check.
- *  \param name The name of the sub-table.
- */
-bool hasSubTable(const Table &table, const string &name);
-
-/*!
- *  \brief Provide access to a sub-table by name.
- *
- *  \param table The Table instance to which the sub-table is associated.
- *  \param name The name of the sub-table.
- */
-Table getSubTable(const Table &table, const string &name);
-
-/*!
- *  \brief Attempt to read the position of the observatory. If the
- *  observatory position is unknown, the specified default position is
- *  returned.
- *
- *  \param ms MeasurementSet to read the observatory position from.
- *  \param idObservation Identifier that determines of which observation the
- *  observatory position should be read.
- *  \param defaultPosition The position that will be returned if the
- *  observatory position is unknown.
- */
-MPosition readObservatoryPosition(const MeasurementSet &ms,
-                                  unsigned int idObservation,
-                                  const MPosition &defaultPosition);
-
-/*!
- *  \brief Read the phase reference direction.
- *
- *  \param ms MeasurementSet to read the phase reference direction from.
- *  \param idField Identifier of the field of which the phase reference
- *  direction should be read.
- */
-MDirection readPhaseReference(const MeasurementSet &ms, unsigned int idField);
-
-/*!
- *  \brief Read the station beam former reference direction.
- *
- *  \param ms MeasurementSet to read the station beam former reference
- *  direction from.
- *  \param idField Identifier of the field of which the station beam former
- *  reference direction should be read.
- */
-MDirection readDelayReference(const MeasurementSet &ms, unsigned int idField);
-
-/*!
- *  \brief Read the station beam former reference direction.
- *
- *  \param ms MeasurementSet to read the tile beam former reference direction
- *  from.
- *  \param idField Identifier of the field of which the tile beam former
- *  reference direction should be read.
- */
-MDirection readTileReference(const MeasurementSet &ms, unsigned int idField);
-}  // namespace
-
-class PyEveryBeam {
- public:
-  /**
-   * @brief Construct a new Py Every Beam object
-   *
-   * @param msName
-   * @param inverse
-   * @param useElementResponse
-   * @param useArrayFactor
-   * @param useChanFreq
-   */
-  PyEveryBeam(const string &msName, bool inverse = false,
-              bool useElementResponse = true, bool useArrayFactor = true,
-              bool useChanFreq = false);
-
-  //! Get the software version.
-  string version(const string &type) const;
-
-  /**
-   * @brief Set the delay reference direction in radians, J2000. The delay
-   * reference direction is the direction used by the station beamformer.
-   *
-   * @param ra Right ascension (H)
-   * @param dec Declination (rad)
-   */
-  void setRefDelay(double ra, double dec);
-
-  /**
-   * @brief Get the delay reference direction in meters, ITRF. The delay
-   * reference direction is the direction used by the station beamformer.
-   *
-   */
-  ValueHolder getRefDelay(real_t time);
-
-  /**
-   * @brief Set the tile reference direction in radians, J2000. The tile
-   * reference direction is the direction used by the analog tile beamformer and
-   * is relevant only for HBA observations.
-   *
-   * @param ra Right ascension (H)
-   * @param dec Declination (rad)
-   */
-  void setRefTile(double ra, double dec);
-
-  /**
-   * @brief Get the tile reference direction in meters, ITRF. The delay
-   * reference direction is the direction used by the analog tile beamformer and
-   * is relevant only for HBA observations.
-   *
-   */
-  ValueHolder getRefTile(real_t time);
-
-  /**
-   * @brief Set the direction of interest in radians, J2000. Can and often will
-   * be different than the delay and/or tile reference direction.
-   *
-   * @param ra Right ascension (H)
-   * @param dec Declination (rad)
-   */
-  void setDirection(double ra, double dec);
-
-  //! Get the direction of intereset in meters, ITRF.
-  ValueHolder getDirection(real_t time);
-
-  // TODO: needs tightening and give methods more meaningful name!
-  //! Compute the beam Jones matrices for the given time
-  ValueHolder evaluate0(double time);
-  //! Compute the beam Jones matrices for the given time and station
-  ValueHolder evaluate1(double time, int station);
-  //! Compute the beam Jones matrices for the given time, station and channel
-  ValueHolder evaluate2(double time, int station, int channel);
-  //! Compute the beam Jones matrices for the given time, station and frequency
-  ValueHolder evaluate3(double time, int station, double freq);
-  //! Compute the beam Jones matrices for the given time, station, frequency and
-  //! direction
-  ValueHolder evaluate4(double time, int station, double freq,
-                        const ValueHolder &direction,
-                        const ValueHolder &station0, const ValueHolder &tile0);
-
- private:
-  Matrix<DComplex> evaluate_itrf(const Station::ConstPtr &station, double time,
-                                 double freq, double freq0,
-                                 const vector3r_t &direction,
-                                 const vector3r_t &station0,
-                                 const vector3r_t &tile0) const;
-
-  Matrix<DComplex> evaluate(const Station::ConstPtr &station, double time,
-                            double freq, double freq0) const;
-
-  Cube<DComplex> evaluate(const Station::ConstPtr &station, double time,
-                          const Vector<Double> &freq,
-                          const Vector<Double> &freq0) const;
-
-  // Utilities for inverting (diagonal) matrix
-  void invert(matrix22c_t &in) const;
-  void invert(diag22c_t &in) const;
-
-  // Data members.
-  bool itsInverse;
-  bool itsUseElementResponse;
-  bool itsUseArrayFactor;
-  bool itsUseChanFreq;
-  Vector<Station::Ptr> itsStations;
-  Vector<Double> itsChanFreq;
-  Vector<Double> itsRefFreq;
-
-  vector3r_t itsRefPosition;
-  ITRFDirection::Ptr itsRefDelay;
-  ITRFDirection::Ptr itsRefTile;
-
-  ITRFDirection::Ptr itsDirection;
-};
-
-PyEveryBeam::PyEveryBeam(const string &name, bool inverse,
-                         bool useElementResponse, bool useArrayFactor,
-                         bool useChanFreq)
-    : itsInverse(inverse),
-      itsUseElementResponse(useElementResponse),
-      itsUseArrayFactor(useArrayFactor),
-      itsUseChanFreq(useChanFreq) {
-  MeasurementSet ms(name);
-
-  // Read spectral window id.
-  const unsigned int idDataDescription = 0;
-  ROMSDataDescColumns desc(ms.dataDescription());
-  assert(desc.nrow() > idDataDescription);
-  assert(!desc.flagRow()(idDataDescription));
-
-  // Read the spectral information.
-  const unsigned int idWindow = desc.spectralWindowId()(idDataDescription);
-  ROMSSpWindowColumns window(ms.spectralWindow());
-  assert(window.nrow() > idWindow);
-  assert(!window.flagRow()(idWindow));
-
-  itsChanFreq = window.chanFreq()(idWindow);
-  itsRefFreq =
-      Vector<Double>(itsChanFreq.size(), window.refFrequency()(idWindow));
-
-  // Read the station information.
-  ROMSAntennaColumns antenna(ms.antenna());
-  itsStations.resize(antenna.nrow());
-  for (unsigned int i = 0; i < antenna.nrow(); ++i) {
-    itsStations(i) = readStation(ms, i);
-  }
-
-  // Read observatory position. If unknown, default to the position of the
-  // first station.
-  unsigned int idObservation = 0;
-  MPosition refPosition = readObservatoryPosition(
-      ms, idObservation, toMPositionITRF(itsStations(0)->position()));
-  itsRefPosition =
-      fromMPosition(MPosition::Convert(refPosition, MPosition::ITRF)());
-
-  // Read the reference directions.
-  unsigned int idField = 0;
-  itsRefDelay.reset(new ITRFDirection(
-      itsRefPosition,
-      fromMDirection(MDirection::Convert(readDelayReference(ms, idField),
-                                         MDirection::J2000)())));
-
-  itsRefTile.reset(new ITRFDirection(
-      itsRefPosition,
-      fromMDirection(MDirection::Convert(readTileReference(ms, idField),
-                                         MDirection::J2000)())));
-
-  itsDirection.reset(new ITRFDirection(
-      itsRefPosition,
-      fromMDirection(MDirection::Convert(readPhaseReference(ms, idField),
-                                         MDirection::J2000)())));
-}
-
-string PyEveryBeam::version(const string &type) const { return "0.1"; }
-
-void PyEveryBeam::setRefDelay(double ra, double dec) {
-  vector2r_t direction = {{ra, dec}};
-  itsRefDelay.reset(new ITRFDirection(itsRefPosition, direction));
-}
-
-ValueHolder PyEveryBeam::getRefDelay(real_t time) {
-  vector3r_t refDelay = itsRefDelay->at(time);
-  Vector<Double> result(3);
-  result(0) = refDelay[0];
-  result(1) = refDelay[1];
-  result(2) = refDelay[2];
-
-  return ValueHolder(result);
-}
-
-void PyEveryBeam::setRefTile(double ra, double dec) {
-  vector2r_t direction = {{ra, dec}};
-  itsRefTile.reset(new ITRFDirection(itsRefPosition, direction));
-}
-
-ValueHolder PyEveryBeam::getRefTile(real_t time) {
-  vector3r_t refTile = itsRefTile->at(time);
-  Vector<Double> result(3);
-  result(0) = refTile[0];
-  result(1) = refTile[1];
-  result(2) = refTile[2];
-
-  return ValueHolder(result);
-}
-
-void PyEveryBeam::setDirection(double ra, double dec) {
-  vector2r_t direction = {{ra, dec}};
-  itsDirection.reset(new ITRFDirection(itsRefPosition, direction));
-}
-
-ValueHolder PyEveryBeam::getDirection(real_t time) {
-  vector3r_t direction = itsDirection->at(time);
-  Vector<Double> result(3);
-  result(0) = direction[0];
-  result(1) = direction[1];
-  result(2) = direction[2];
-
-  return ValueHolder(result);
-}
-
-ValueHolder PyEveryBeam::evaluate0(double time) {
-  Array<DComplex> result(
-      IPosition(4, 2, 2, itsChanFreq.size(), itsStations.size()));
-
-  for (unsigned int i = 0; i < itsStations.size(); ++i) {
-    IPosition start(4, 0, 0, 0, i);
-    IPosition end(4, 1, 1, itsChanFreq.size() - 1, i);
-    Cube<DComplex> slice = result(start, end).nonDegenerate();
-    if (itsUseChanFreq) {
-      slice = evaluate(itsStations(i), time, itsChanFreq, itsChanFreq);
-    } else {
-      slice = evaluate(itsStations(i), time, itsChanFreq, itsRefFreq);
-    }
-  }
-
-  return ValueHolder(result);
-}
-
-ValueHolder PyEveryBeam::evaluate1(double time, int station) {
-  //     assertSTR(station >= 0 && static_cast<size_t>(station)
-  //       < itsStations.size(), "invalid station number: " << station);
-
-  if (itsUseChanFreq) {
-    return ValueHolder(
-        evaluate(itsStations(station), time, itsChanFreq, itsChanFreq));
-  }
-
-  return ValueHolder(
-      evaluate(itsStations(station), time, itsChanFreq, itsRefFreq));
-}
-
-ValueHolder PyEveryBeam::evaluate2(double time, int station, int channel) {
-  //     assertSTR(station >= 0 && static_cast<size_t>(station)
-  //       < itsStations.size(), "invalid station number: " << station);
-  //     assertSTR(channel >= 0 && static_cast<size_t>(channel)
-  //       < itsChanFreq.size(), "invalid channel number: " << channel);
-
-  double freq = itsChanFreq(channel);
-  if (itsUseChanFreq) {
-    return ValueHolder(evaluate(itsStations(station), time, freq, freq));
-  }
-
-  double freq0 = itsRefFreq(channel);
-  return ValueHolder(evaluate(itsStations(station), time, freq, freq0));
-}
-
-ValueHolder PyEveryBeam::evaluate3(double time, int station, double freq) {
-  //     assertSTR(station >= 0 && static_cast<size_t>(station)
-  //       < itsStations.size(), "invalid station number: " << station);
-
-  if (itsUseChanFreq) {
-    return ValueHolder(evaluate(itsStations(station), time, freq, freq));
-  }
-
-  double freq0 = itsRefFreq(0);
-  return ValueHolder(evaluate(itsStations(station), time, freq, freq0));
-}
-
-ValueHolder PyEveryBeam::evaluate4(double time, int station, double freq,
-                                   const ValueHolder &vh_direction,
-                                   const ValueHolder &vh_station0,
-                                   const ValueHolder &vh_tile0) {
-  assert(vh_direction.dataType() == TpArrayDouble);
-  assert(vh_station0.dataType() == TpArrayDouble);
-  assert(vh_tile0.dataType() == TpArrayDouble);
-  Array<Double> arr_dir(vh_direction.asArrayDouble());
-  Array<Double> st0_dir(vh_station0.asArrayDouble());
-  Array<Double> tile_dir(vh_tile0.asArrayDouble());
-  vector3r_t direction = {
-      {arr_dir.data()[0], arr_dir.data()[1], arr_dir.data()[2]}};
-  vector3r_t station0 = {
-      {st0_dir.data()[0], st0_dir.data()[1], st0_dir.data()[2]}};
-  vector3r_t tile0 = {
-      {tile_dir.data()[0], tile_dir.data()[1], tile_dir.data()[2]}};
-
-  if (itsUseChanFreq) {
-    return ValueHolder(evaluate_itrf(itsStations(station), time, freq, freq,
-                                     direction, station0, tile0));
-  }
-
-  double freq0 = itsRefFreq(0);
-  return ValueHolder(evaluate_itrf(itsStations(station), time, freq, freq0,
-                                   direction, station0, tile0));
-}
-
-Cube<DComplex> PyEveryBeam::evaluate(const Station::ConstPtr &station,
-                                     double time, const Vector<Double> &freq,
-                                     const Vector<Double> &freq0) const {
-  Cube<DComplex> result(2, 2, freq.size(), 0.0);
-  if (itsUseArrayFactor) {
-    vector3r_t direction = itsDirection->at(time);
-    vector3r_t station0 = itsRefDelay->at(time);
-    vector3r_t tile0 = itsRefTile->at(time);
-
-    if (itsUseElementResponse) {
-      for (unsigned int i = 0; i < freq.size(); ++i) {
-        matrix22c_t response = station->response(time, freq(i), direction,
-                                                 freq0(i), station0, tile0);
-
-        if (itsInverse) {
-          invert(response);
-        }
-
-        result(0, 0, i) = response[0][0];
-        result(1, 0, i) = response[0][1];
-        result(0, 1, i) = response[1][0];
-        result(1, 1, i) = response[1][1];
-      }
-    } else {
-      for (unsigned int i = 0; i < freq.size(); ++i) {
-        diag22c_t af = station->arrayFactor(time, freq(i), direction, freq0(i),
-                                            station0, tile0);
-
-        if (itsInverse) {
-          invert(af);
-        }
-
-        result(0, 0, i) = af[0];
-        result(1, 1, i) = af[1];
-      }
-    }
-  } else if (itsUseElementResponse) {
-    // For a station with multiple antenna fields, need to select for which
-    // field the element response will be evaluated. Here the first field of the
-    // station is always selected.
-    AntennaField::ConstPtr field = *station->beginFields();
-
-    vector3r_t direction = itsDirection->at(time);
-    for (unsigned int i = 0; i < freq.size(); ++i) {
-      matrix22c_t response = field->elementResponse(time, freq(i), direction);
-
-      if (itsInverse) {
-        invert(response);
-      }
-
-      result(0, 0, i) = response[0][0];
-      result(1, 0, i) = response[0][1];
-      result(0, 1, i) = response[1][0];
-      result(1, 1, i) = response[1][1];
-    }
-  } else {
-    for (unsigned int i = 0; i < freq.size(); ++i) {
-      result(0, 0, i) = 1.0;
-      result(1, 1, i) = 1.0;
-    }
-  }
-
-  return result;
-}
-
-Matrix<DComplex> PyEveryBeam::evaluate_itrf(const Station::ConstPtr &station,
-                                            double time, double freq,
-                                            double freq0,
-                                            const vector3r_t &direction,
-                                            const vector3r_t &station0,
-                                            const vector3r_t &tile0) const {
-  Matrix<DComplex> result(2, 2, 0.0);
-  if (itsUseArrayFactor) {
-    if (itsUseElementResponse) {
-      matrix22c_t response =
-          station->response(time, freq, direction, freq0, station0, tile0);
-
-      if (itsInverse) {
-        invert(response);
-      }
-
-      result(0, 0) = response[0][0];
-      result(1, 0) = response[0][1];
-      result(0, 1) = response[1][0];
-      result(1, 1) = response[1][1];
-    } else {
-      diag22c_t af =
-          station->arrayFactor(time, freq, direction, freq0, station0, tile0);
-
-      if (itsInverse) {
-        invert(af);
-      }
-
-      result(0, 0) = af[0];
-      result(1, 1) = af[1];
-    }
-  } else if (itsUseElementResponse) {
-    // For a station with multiple antenna fields, need to select for which
-    // field the element response will be evaluated. Here the first field of
-    // the station is always selected.
-    AntennaField::ConstPtr field = *station->beginFields();
-
-    matrix22c_t response = field->elementResponse(time, freq, direction);
-
-    if (itsInverse) {
-      invert(response);
-    }
-
-    result(0, 0) = response[0][0];
-    result(1, 0) = response[0][1];
-    result(0, 1) = response[1][0];
-    result(1, 1) = response[1][1];
-  } else {
-    result(0, 0) = 1.0;
-    result(1, 1) = 1.0;
-  }
-
-  return result;
-}
-
-Matrix<DComplex> PyEveryBeam::evaluate(const Station::ConstPtr &station,
-                                       double time, double freq,
-                                       double freq0) const {
-  vector3r_t direction;
-  vector3r_t station0;
-  vector3r_t tile0;
-  if (itsUseArrayFactor) {
-    direction = itsDirection->at(time);
-    station0 = itsRefDelay->at(time);
-    tile0 = itsRefTile->at(time);
-  } else if (itsUseElementResponse) {
-    direction = itsDirection->at(time);
-  }
-  return evaluate_itrf(station, time, freq, freq0, direction, station0, tile0);
-}
-
-void PyEveryBeam::invert(matrix22c_t &in) const {
-  complex_t invDet = 1.0 / (in[0][0] * in[1][1] - in[0][1] * in[1][0]);
-
-  complex_t tmp = in[1][1];
-  in[1][1] = in[0][0];
-  in[0][0] = tmp;
-
-  in[0][0] *= invDet;
-  in[0][1] *= -invDet;
-  in[1][0] *= -invDet;
-  in[1][1] *= invDet;
-}
-
-void PyEveryBeam::invert(diag22c_t &in) const {
-  DComplex invDet = 1.0 / (in[0] * in[1]);
-  DComplex tmp = in[1];
-  in[1] = in[0];
-  in[0] = tmp;
-
-  in[0] *= invDet;
-  in[1] *= invDet;
-}
-
-// Now define the interface in Boost-Python.
-void pyeverybeam() {
-  class_<PyEveryBeam>("EveryBeam", init<std::string, bool, bool, bool, bool>())
-      .def("version", &PyEveryBeam::version,
-           (boost::python::arg("type") = "other"))
-      .def("setRefDelay", &PyEveryBeam::setRefDelay,
-           (boost::python::arg("ra"), boost::python::arg("dec")))
-      .def("getRefDelay", &PyEveryBeam::getRefDelay,
-           (boost::python::arg("time")))
-      .def("setRefTile", &PyEveryBeam::setRefTile,
-           (boost::python::arg("ra"), boost::python::arg("dec")))
-      .def("getRefTile", &PyEveryBeam::getRefTile, (boost::python::arg("time")))
-      .def("setDirection", &PyEveryBeam::setDirection,
-           (boost::python::arg("ra"), boost::python::arg("dec")))
-      .def("getDirection", &PyEveryBeam::getDirection,
-           (boost::python::arg("time")))
-      .def("evaluate0", &PyEveryBeam::evaluate0, (boost::python::arg("time")))
-      .def("evaluate1", &PyEveryBeam::evaluate1,
-           (boost::python::arg("time"), boost::python::arg("station")))
-      .def("evaluate2", &PyEveryBeam::evaluate2,
-           (boost::python::arg("time"), boost::python::arg("station"),
-            boost::python::arg("channel")))
-      .def("evaluate3", &PyEveryBeam::evaluate3,
-           (boost::python::arg("time"), boost::python::arg("station"),
-            boost::python::arg("freq")))
-      .def("evaluate4", &PyEveryBeam::evaluate4,
-           (boost::python::arg("time"), boost::python::arg("station"),
-            boost::python::arg("freq"), boost::python::arg("direction"),
-            boost::python::arg("station0"), boost::python::arg("tile0")));
-}
-
-namespace {
-MPosition toMPositionITRF(const vector3r_t &position) {
-  MVPosition mvITRF(position[0], position[1], position[2]);
-  return MPosition(mvITRF, MPosition::ITRF);
-}
-
-vector3r_t fromMPosition(const MPosition &position) {
-  MVPosition mvPosition = position.getValue();
-  vector3r_t result = {{mvPosition(0), mvPosition(1), mvPosition(2)}};
-  return result;
-}
-
-vector3r_t fromMDirection(const MDirection &direction) {
-  MVDirection mvDirection = direction.getValue();
-  vector3r_t result = {{mvDirection(0), mvDirection(1), mvDirection(2)}};
-  return result;
-}
-
-bool hasColumn(const Table &table, const string &column) {
-  return table.tableDesc().isColumn(column);
-}
-
-bool hasSubTable(const Table &table, const string &name) {
-  return table.keywordSet().isDefined(name);
-}
-
-Table getSubTable(const Table &table, const string &name) {
-  return table.keywordSet().asTable(name);
-}
-
-MPosition readObservatoryPosition(const MeasurementSet &ms,
-                                  unsigned int idObservation,
-                                  const MPosition &defaultPosition) {
-  // Get the instrument position in ITRF coordinates, or use the centroid
-  // of the station positions if the instrument position is unknown.
-  ROMSObservationColumns observation(ms.observation());
-  assert(observation.nrow() > idObservation);
-  assert(!observation.flagRow()(idObservation));
-
-  // Read observatory name and try to look-up its position.
-  const string observatory = observation.telescopeName()(idObservation);
-
-  // Look-up observatory position, default to specified default position.
-  MPosition position(defaultPosition);
-  MeasTable::Observatory(position, observatory);
-  return position;
-}
-
-MDirection readPhaseReference(const MeasurementSet &ms, unsigned int idField) {
-  ROMSFieldColumns field(ms.field());
-  assert(field.nrow() > idField);
-  assert(!field.flagRow()(idField));
-
-  return field.phaseDirMeas(idField);
-}
-
-MDirection readDelayReference(const MeasurementSet &ms, unsigned int idField) {
-  ROMSFieldColumns field(ms.field());
-  assert(field.nrow() > idField);
-  assert(!field.flagRow()(idField));
-
-  return field.delayDirMeas(idField);
-}
-
-MDirection readTileReference(const MeasurementSet &ms, unsigned int idField) {
-  // The MeasurementSet class does not support LOFAR specific columns, so we
-  // use ROArrayMeasColumn to read the tile beam reference direction.
-  Table tab_field = getSubTable(ms, "FIELD");
-
-  static const String columnName = "LOFAR_TILE_BEAM_DIR";
-  if (hasColumn(tab_field, columnName)) {
-    ROArrayMeasColumn<MDirection> c_direction(tab_field, columnName);
-    if (c_direction.isDefined(idField)) {
-      return c_direction(idField)(IPosition(1, 0));
-    }
-  }
-
-  // By default, the tile beam reference direction is assumed to be equal
-  // to the station beam reference direction (for backward compatibility,
-  // and for non-HBA measurements).
-  return readDelayReference(ms, idField);
-}
-}  // namespace
-}  // namespace everybeam
-
-// Define the python module itself.
-BOOST_PYTHON_MODULE(_everybeam) {
-  casacore::python::register_convert_excp();
-  casacore::python::register_convert_basicdata();
-  casacore::python::register_convert_casa_valueholder();
-
-  everybeam::pyeverybeam();
-}
diff --git a/python/test/CMakeLists.txt b/python/test/CMakeLists.txt
index e2f428a1..f06b85ec 100644
--- a/python/test/CMakeLists.txt
+++ b/python/test/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # List of tests
 set(UNIT_TESTS
   tPyLoad
diff --git a/python/test/tPyLoad.sh b/python/test/tPyLoad.sh
index 3a9eed90..cfbba1e7 100755
--- a/python/test/tPyLoad.sh
+++ b/python/test/tPyLoad.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
@@ -18,4 +20,4 @@ else
     $SCRIPTS_DIR/download_lofar_lba.sh
 fi
 
-pytest -s --exitfirst ${DIR}/test_load.py 
\ No newline at end of file
+pytest -s --exitfirst ${DIR}/test_load.py
\ No newline at end of file
diff --git a/python/test/test_load.py b/python/test/test_load.py
index 2a0282da..71b19dbe 100644
--- a/python/test/test_load.py
+++ b/python/test/test_load.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 from everybeam import load_telescope, LOFAR, CoordinateSystem
 import pytest
 import os
diff --git a/python/wrappers/pyload.cc b/python/wrappers/pyload.cc
index a38f9514..97ae0bb3 100644
--- a/python/wrappers/pyload.cc
+++ b/python/wrappers/pyload.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <pybind11/pybind11.h>
 #include <memory>
 
diff --git a/python/wrappers/pytelescope.cc b/python/wrappers/pytelescope.cc
index 80a081b4..6d82eb97 100644
--- a/python/wrappers/pytelescope.cc
+++ b/python/wrappers/pytelescope.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <pybind11/pybind11.h>
 #include <pybind11/numpy.h>
 
diff --git a/python/wrappers/pyutils.cc b/python/wrappers/pyutils.cc
index 1315daeb..90a866a2 100644
--- a/python/wrappers/pyutils.cc
+++ b/python/wrappers/pyutils.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <pybind11/pybind11.h>
 #include <pybind11/numpy.h>
 #include <pybind11/stl.h>
diff --git a/python/wrappers/wrapper.cc b/python/wrappers/wrapper.cc
index 5bd69f6a..c14f45f3 100644
--- a/python/wrappers/wrapper.cc
+++ b/python/wrappers/wrapper.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <pybind11/pybind11.h>
 
 namespace py = pybind11;
diff --git a/scripts/coeff_scripts/convert_coeff.py b/scripts/coeff_scripts/convert_coeff.py
index 19714879..adec6735 100755
--- a/scripts/coeff_scripts/convert_coeff.py
+++ b/scripts/coeff_scripts/convert_coeff.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # Script to convert an ASCII beam model coefficient file to a .cc file for
 # inclusion in the library. Whenever the beam model coefficients file are
@@ -61,8 +63,8 @@ def main(args):
 
     Examples:
 
-    ./convert_coeff.py element_beam_LBA.coeff defaultcoefflba.cc default_lba 
-    ./convert_coeff.py element_beam_HBA.coeff defaultcoeffhba.cc default_hba 
+    ./convert_coeff.py element_beam_LBA.coeff defaultcoefflba.cc default_lba
+    ./convert_coeff.py element_beam_HBA.coeff defaultcoeffhba.cc default_hba
     """
     print "converting %s -> %s (variable name: %s)" % (args[0], args[1], args[2])
 
diff --git a/scripts/coeff_scripts/oskar_csv_to_hdf5.py b/scripts/coeff_scripts/oskar_csv_to_hdf5.py
index becae4df..be4e77f8 100755
--- a/scripts/coeff_scripts/oskar_csv_to_hdf5.py
+++ b/scripts/coeff_scripts/oskar_csv_to_hdf5.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import argparse
 import os
diff --git a/scripts/coeff_scripts/oskar_matlab_to_hdf5.py b/scripts/coeff_scripts/oskar_matlab_to_hdf5.py
index 274b9b9b..85004c9b 100755
--- a/scripts/coeff_scripts/oskar_matlab_to_hdf5.py
+++ b/scripts/coeff_scripts/oskar_matlab_to_hdf5.py
@@ -1,4 +1,6 @@
 #!/usr/bin/python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import argparse
 import os
diff --git a/scripts/download_lobes_coeffs.sh b/scripts/download_lobes_coeffs.sh
index 5e92b046..549b9d19 100755
--- a/scripts/download_lobes_coeffs.sh
+++ b/scripts/download_lobes_coeffs.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/download_lofar_hba_ms.sh b/scripts/download_lofar_hba_ms.sh
index 8eff34fa..742137de 100755
--- a/scripts/download_lofar_hba_ms.sh
+++ b/scripts/download_lofar_hba_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/download_lofar_lba_ms.sh b/scripts/download_lofar_lba_ms.sh
index 0e45fe0e..3585121d 100755
--- a/scripts/download_lofar_lba_ms.sh
+++ b/scripts/download_lofar_lba_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
@@ -25,7 +27,7 @@ if [ ! -f ${LOFAR_LBA_MOCK_MS}/table.f0 ] ; then
     fi
 
     mkdir -p $LOFAR_LBA_MOCK_MS
-    
+
     tar -xf $LOFAR_MOCK_ARCHIVE  -C $LOFAR_LBA_MOCK_MS --strip-components=1
     rm $LOFAR_MOCK_ARCHIVE
 fi
diff --git a/scripts/download_mwa_coeff.sh b/scripts/download_mwa_coeff.sh
index caf93ba2..9056495f 100755
--- a/scripts/download_mwa_coeff.sh
+++ b/scripts/download_mwa_coeff.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/download_mwa_ms.sh b/scripts/download_mwa_ms.sh
index b5434842..62e9a703 100755
--- a/scripts/download_mwa_ms.sh
+++ b/scripts/download_mwa_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/download_oskar_ms.sh b/scripts/download_oskar_ms.sh
index 88db9f29..27b28f7f 100755
--- a/scripts/download_oskar_ms.sh
+++ b/scripts/download_oskar_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
@@ -24,9 +26,9 @@ if [ ! -f ${OSKAR_MOCK_MS}/table.f0 ] ; then
     if [ ! -f "$OSKAR_MOCK_ARCHIVE" ]; then
 	wget -q https://www.astron.nl/citt/EveryBeam/OSKAR-single-timeslot.tar.bz2 -O $OSKAR_MOCK_ARCHIVE
     fi
-    
+
     mkdir -p $OSKAR_MOCK_MS
-    
+
     tar -xf $OSKAR_MOCK_ARCHIVE  -C $OSKAR_MOCK_MS --strip-components=1
     rm $OSKAR_MOCK_ARCHIVE
 fi
diff --git a/scripts/download_vla_ms.sh b/scripts/download_vla_ms.sh
index 06b25739..9375e142 100755
--- a/scripts/download_vla_ms.sh
+++ b/scripts/download_vla_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/misc/F4far_new.py b/scripts/misc/F4far_new.py
index 839b564b..4799e303 100644
--- a/scripts/misc/F4far_new.py
+++ b/scripts/misc/F4far_new.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Original Matlab code by Michel Arts
 # Ported to python by Sebastiaan van der Tol
 # Interface change: theta, phi are now in radians
@@ -64,5 +67,3 @@ def F42(m,n,theta,phi,beta):
     q3 = C * (-1j)**(-n) / beta * 1j * m/np.sin(theta) * np.sqrt((2.*n+1) / 2.0 * np.math.factorial(n-abs(m)) / np.math.factorial(n+abs(m))) * P(abs(m),n,np.cos(theta)) * np.exp(1j*m*phi)
 
     return (q1, q2, q3)
-
-
diff --git a/scripts/misc/add_beaminfo.py b/scripts/misc/add_beaminfo.py
index daada8f9..1beb237a 100755
--- a/scripts/misc/add_beaminfo.py
+++ b/scripts/misc/add_beaminfo.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 """ Add beam info to OSKAR generated MeasurementSet """
 
diff --git a/scripts/misc/calc_modes_1deg_noback.py b/scripts/misc/calc_modes_1deg_noback.py
index 0d000369..e9d03fd4 100644
--- a/scripts/misc/calc_modes_1deg_noback.py
+++ b/scripts/misc/calc_modes_1deg_noback.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import numpy as np
 from scipy.constants import speed_of_light
 from scipy.io import loadmat
diff --git a/scripts/misc/hamaker_vs_lobes.py b/scripts/misc/hamaker_vs_lobes.py
index 1202a1d4..f345d12b 100644
--- a/scripts/misc/hamaker_vs_lobes.py
+++ b/scripts/misc/hamaker_vs_lobes.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import matplotlib
 matplotlib.use('tkagg')
 from matplotlib import pyplot as plt
@@ -69,5 +72,3 @@ plt.xlabel('phi(deg)')
 plt.ylabel('E (V)')
 
 plt.show()
-
-
diff --git a/scripts/misc/test_beam_model.py b/scripts/misc/test_beam_model.py
index 84aaee64..eef9c511 100755
--- a/scripts/misc/test_beam_model.py
+++ b/scripts/misc/test_beam_model.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import lobes
 from scipy.io import loadmat
@@ -40,5 +42,3 @@ Nfreq = 4
 Nant = 96
 
 rr = r.reshape((Nphi, Ntheta, 2, Nfreq, Nant)).transpose((4,2,1,0,3))
-
-
diff --git a/scripts/misc/test_lobes.py b/scripts/misc/test_lobes.py
index d6245d1e..541528b8 100755
--- a/scripts/misc/test_lobes.py
+++ b/scripts/misc/test_lobes.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import numpy as np
 
@@ -9,4 +11,3 @@ a = np.linspace(0, 0.5, 10)
 lobes.scale(a, 2.0)
 
 print(lobes.legendre(1,-11,a))
-
diff --git a/scripts/run-clang-format.sh b/scripts/run-clang-format.sh
index 48c99cee..01862364 100755
--- a/scripts/run-clang-format.sh
+++ b/scripts/run-clang-format.sh
@@ -1,9 +1,9 @@
 #!/bin/bash
-#
-# run-clang-format.sh: Formats source code in this repo in accordance with .clang-format file.
-# This file is part of the DP3 software package.
+
 # Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
-# License: GNU General Public License version 3 or any later version
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+# run-clang-format.sh: Formats source code in this repo in accordance with .clang-format file.
 #
 # To hook this script to pre-commit include the line
 # "./scripts/run-clang-format.sh" to .git/hooks/pre-commit
-- 
GitLab