From 35bbee5b6c922e3ac31184d75212ae5a5b557d4b Mon Sep 17 00:00:00 2001
From: Matthias Frey <matthias.frey@psi.ch>
Date: Wed, 8 Apr 2020 10:16:49 +0200
Subject: [PATCH] add header to optimiser classes

---
 optimizer/Comm/CommSplitter.h                 | 52 ++++++++++------
 optimizer/Comm/MasterGraph/NDimMesh.h         | 20 +++++++
 optimizer/Comm/MasterGraph/NoMasterGraph.h    | 22 ++++++-
 .../Comm/MasterGraph/SocialNetworkGraph.h     | 56 ++++++++++++------
 optimizer/Comm/MasterNode.h                   | 43 ++++++++++----
 optimizer/Comm/types.h                        | 20 +++++++
 optimizer/Expression/Expression.h             | 39 ++++++++----
 optimizer/Expression/FromFile.cpp             | 25 ++++++++
 optimizer/Expression/FromFile.h               | 33 ++++++++---
 optimizer/Expression/GlobalFunctions.h        | 22 +++++++
 optimizer/Expression/ProbeVariable.h          | 20 +++++++
 optimizer/Expression/PythonExpr.h             | 50 +++++++++++-----
 optimizer/Expression/SDDSVariable.h           | 34 ++++++++---
 optimizer/Expression/SumErrSq.h               | 36 ++++++++---
 optimizer/Optimizer/EA/BlendCrossover.h       | 38 ++++++++----
 optimizer/Optimizer/EA/FixedPisaNsga2.h       | 48 ++++++++++-----
 optimizer/Optimizer/EA/FixedPisaNsga2.tcc     | 32 ++++++++++
 .../Optimizer/EA/IndependentBitMutation.h     | 22 ++++++-
 optimizer/Optimizer/EA/Individual.h           | 31 +++++++---
 .../Optimizer/EA/NaiveOnePointCrossover.h     | 20 +++++++
 .../Optimizer/EA/NaiveUniformCrossover.h      | 22 ++++++-
 optimizer/Optimizer/EA/OneBitMutation.h       | 22 ++++++-
 optimizer/Optimizer/EA/Population.h           | 36 +++++++----
 .../Optimizer/EA/SimulatedBinaryCrossover.h   | 28 +++++++--
 optimizer/Optimizer/EA/Variator.h             | 20 +++++++
 optimizer/Optimizer/Optimizer.h               | 27 +++++++--
 optimizer/Pilot/Pilot.h                       | 59 ++++++++++++-------
 optimizer/Pilot/Poller.h                      | 37 ++++++++----
 optimizer/Pilot/Worker.h                      | 41 +++++++++----
 optimizer/Simulation/GenerateOpalSimulation.h | 47 ++++++++++-----
 optimizer/Simulation/Simulation.h             | 43 ++++++++++----
 optimizer/Tests/CmdArgumentsTest.cpp          | 20 +++++++
 optimizer/Tests/ExpressionTest.cpp            | 20 +++++++
 optimizer/Tests/FromFileExpressionTest.cpp    | 20 +++++++
 optimizer/Tests/HashNameGeneratorTest.cpp     | 20 +++++++
 optimizer/Tests/IndividualTest.cpp            | 20 +++++++
 optimizer/Tests/MPIHelperTest.cpp             | 20 +++++++
 optimizer/Tests/ManagedIDsTest.cpp            | 20 +++++++
 optimizer/Tests/PopulationTest.cpp            | 20 +++++++
 optimizer/Tests/PythonExprTest.cpp            | 20 +++++++
 optimizer/Tests/SDDSParserTest.cpp            | 21 ++++++-
 optimizer/Tests/SumErrSqExpressionTest.cpp    | 20 +++++++
 optimizer/Util/AsyncSendBuffers.h             | 20 +++++++
 optimizer/Util/CmdArguments.cpp               | 27 +++++++++
 optimizer/Util/CmdArguments.h                 | 37 ++++++++----
 optimizer/Util/MPIHelper.cpp                  | 20 +++++++
 optimizer/Util/MPIHelper.h                    | 20 +++++++
 optimizer/Util/ManagedIDs.h                   | 28 +++++++--
 optimizer/Util/NativeHashGenerator.h          | 27 +++++++--
 optimizer/Util/OptPilotException.h            | 20 +++++++
 optimizer/Util/ProbeReader.cpp                | 21 +++++++
 optimizer/Util/ProbeReader.h                  | 26 ++++++--
 optimizer/Util/SDDSParser.cpp                 | 17 ++++++
 optimizer/Util/SDDSParser.h                   | 17 +++++-
 .../Util/SDDSParser/SDDSParserException.h     | 16 +++++
 optimizer/Util/SDDSParser/array.cpp           | 17 +++++-
 optimizer/Util/SDDSParser/array.hpp           | 20 +++++--
 optimizer/Util/SDDSParser/array_def.hpp       | 20 +++++--
 optimizer/Util/SDDSParser/associate.cpp       | 16 ++++-
 optimizer/Util/SDDSParser/associate.hpp       | 20 +++++--
 optimizer/Util/SDDSParser/associate_def.hpp   | 20 +++++--
 optimizer/Util/SDDSParser/ast.cpp             | 16 ++++-
 optimizer/Util/SDDSParser/ast.hpp             | 20 +++++--
 optimizer/Util/SDDSParser/ast_def.hpp         | 20 +++++--
 optimizer/Util/SDDSParser/column.cpp          | 16 ++++-
 optimizer/Util/SDDSParser/column.hpp          | 20 +++++--
 optimizer/Util/SDDSParser/column_def.hpp      | 20 +++++--
 optimizer/Util/SDDSParser/data.cpp            | 16 ++++-
 optimizer/Util/SDDSParser/data.hpp            | 20 +++++--
 optimizer/Util/SDDSParser/data_def.hpp        | 20 +++++--
 optimizer/Util/SDDSParser/description.cpp     | 16 ++++-
 optimizer/Util/SDDSParser/description.hpp     | 20 +++++--
 optimizer/Util/SDDSParser/description_def.hpp | 20 +++++--
 optimizer/Util/SDDSParser/error_handler.hpp   | 20 +++++--
 optimizer/Util/SDDSParser/file.cpp            | 16 ++++-
 optimizer/Util/SDDSParser/file.hpp            | 20 +++++--
 optimizer/Util/SDDSParser/file_def.hpp        | 20 +++++--
 optimizer/Util/SDDSParser/include.cpp         | 16 ++++-
 optimizer/Util/SDDSParser/include.hpp         | 20 +++++--
 optimizer/Util/SDDSParser/include_def.hpp     | 20 +++++--
 optimizer/Util/SDDSParser/parameter.cpp       | 16 ++++-
 optimizer/Util/SDDSParser/parameter.hpp       | 20 +++++--
 optimizer/Util/SDDSParser/parameter_def.hpp   | 20 +++++--
 optimizer/Util/SDDSParser/skipper.hpp         | 20 +++++--
 optimizer/Util/SDDSParser/version.cpp         | 16 ++++-
 optimizer/Util/SDDSParser/version.hpp         | 20 +++++--
 optimizer/Util/SDDSParser/version_def.hpp     | 20 +++++--
 optimizer/Util/Statistics.h                   | 20 +++++++
 optimizer/Util/Trace/CoutSink.h               | 20 +++++++
 optimizer/Util/Trace/FileSink.h               | 20 +++++++
 optimizer/Util/Trace/MyPid.h                  | 20 +++++++
 optimizer/Util/Trace/Timestamp.h              | 20 +++++++
 optimizer/Util/Trace/Trace.h                  | 20 +++++++
 optimizer/Util/Trace/TraceComponent.h         | 20 +++++++
 optimizer/Util/Types.h                        | 20 +++++++
 95 files changed, 1914 insertions(+), 409 deletions(-)

diff --git a/optimizer/Comm/CommSplitter.h b/optimizer/Comm/CommSplitter.h
index dd223dced..4e891598e 100644
--- a/optimizer/Comm/CommSplitter.h
+++ b/optimizer/Comm/CommSplitter.h
@@ -1,3 +1,37 @@
+//
+// Class CommSplitter
+//   Role assignment according to strategy (that might use hardware
+//   network information).
+//
+//   The CommSplitter splits the passed (usually MPI_COMM_WORLD) communicator
+//   into several comm groups using the colors provided by the splitting
+//   strategy.
+//   After construction each processor has an assigned role (optimizer, worker
+//   or pilot) and a set of communicators to send and receive tasks.
+//   The expected colors have the following meaning:
+//     - color[0] is shared by all my co-workers
+//     - color[1] is shared by the optimizer leader and the pilot
+//     - color[2] is shared by the worker leader and the pilot
+//     - color[3] is shared by all processors with the same role (used for
+//       broadcasts)
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __COMM_SPLITTER__
 #define __COMM_SPLITTER__
 
@@ -10,24 +44,6 @@
 
 //TODO: what is the performance difference between using MPI_COMM_WORLD and
 //      p2p communication vs. communicator groups??
-/**
- *  \brief Role assignment according to strategy (that might use hardware
- *         network information).
- *
- *  The CommSplitter splits the passed (usually MPI_COMM_WORLD) communicator
- *  into several comm groups using the colors provided by the splitting
- *  strategy.
- *  After construction each processor has an assigned role (optimizer, worker
- *  or pilot) and a set of communicators to send and receive tasks.
- *  The expected colors have the following meaning:
- *
- *    - color[0] is shared by all my co-workers
- *    - color[1] is shared by the optimizer leader and the pilot
- *    - color[2] is shared by the worker leader and the pilot
- *    - color[3] is shared by all processors with the same role (used for
- *      broadcasts)
- *
- */
 template< class Strategy_t >
 class CommSplitter : public Strategy_t {
 
diff --git a/optimizer/Comm/MasterGraph/NDimMesh.h b/optimizer/Comm/MasterGraph/NDimMesh.h
index b594c86c4..3bcb2b19e 100644
--- a/optimizer/Comm/MasterGraph/NDimMesh.h
+++ b/optimizer/Comm/MasterGraph/NDimMesh.h
@@ -1,3 +1,23 @@
+//
+// Class NDimMesh
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __NDIM_MESH__
 #define __NDIM_MESH__
 
diff --git a/optimizer/Comm/MasterGraph/NoMasterGraph.h b/optimizer/Comm/MasterGraph/NoMasterGraph.h
index dfbd37648..9a6a235da 100644
--- a/optimizer/Comm/MasterGraph/NoMasterGraph.h
+++ b/optimizer/Comm/MasterGraph/NoMasterGraph.h
@@ -1,9 +1,29 @@
+//
+// Class NoMasterGraph
+//   A simple empty master graph (no neighbors, every island works isolated).
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __NO_MASTER_GRAPH__
 #define __NO_MASTER_GRAPH__
 
 #include <set>
 
-/// A simple empty master graph (no neighbors, every island works isolated).
 template < class TopoDiscoveryStrategy_t >
 class NoMasterGraph : public TopoDiscoveryStrategy_t {
 
diff --git a/optimizer/Comm/MasterGraph/SocialNetworkGraph.h b/optimizer/Comm/MasterGraph/SocialNetworkGraph.h
index 70225420d..3294190d1 100644
--- a/optimizer/Comm/MasterGraph/SocialNetworkGraph.h
+++ b/optimizer/Comm/MasterGraph/SocialNetworkGraph.h
@@ -1,3 +1,40 @@
+//
+// Class SocialNetworkGraph
+//   Modeling social graph (Cartesian neighbors plus additional random
+//   link) as underlaying master network.
+//
+//   @see MasterNode
+//
+//   Due to its nice rumor spreading properties this master network is mimicking
+//   a social network graph (augmented grid) and solution states are distributed
+//   in a rumor fashion.
+//
+//   Here, we use a simple mapping from processor ID's to 2D grid
+//   (determining neigborhood) assuming the total number of masters:
+//
+//      n_m = n_g * n_g
+//
+//   This is fine, because if we have topology info the masters are numbered
+//   in ascending order (done in comm splitter) and we can map them from 1D to
+//   2D by index calculations.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __SOCIAL_NETWORK_GRAPH__
 #define __SOCIAL_NETWORK_GRAPH__
 
@@ -7,25 +44,6 @@
 #include <boost/random/mersenne_twister.hpp>
 #include <boost/random/discrete_distribution.hpp>
 
-// Here, we use a simple mapping from processor ID's to 2D grid
-// (determining neigborhood) assuming the total number of masters:
-//
-//    n_m = n_g * n_g
-//
-// This is fine, because if we have topology info the masters are numbered
-// in ascending order (done in comm splitter) and we can map them from 1D to
-// 2D by index calculations.
-
-/**
- * \brief Modeling social graph (Cartesian neighbors plus additional random
- *        link) as underlaying master network.
- *
- * @see MasterNode
- *
- * Due to its nice rumor spreading properties this master network is mimicking
- * a social network graph (augmented grid) and solution states are distributed
- * in a rumor fashion.
- */
 template < class TopoDiscoveryStrategy_t >
 class SocialNetworkGraph : public TopoDiscoveryStrategy_t {
 
diff --git a/optimizer/Comm/MasterNode.h b/optimizer/Comm/MasterNode.h
index 295bd5b40..bdbff0ced 100644
--- a/optimizer/Comm/MasterNode.h
+++ b/optimizer/Comm/MasterNode.h
@@ -1,3 +1,33 @@
+//
+// Class MasterNode
+//   Implements a node in the network of all pilots, exposing store and
+//   collect operations on a specific set of neighbors.
+//
+//   Using the neighbor strategy a set of neighbors we collect solution state
+//   from (and they collect from us) is defined. Using this set of neighbors the
+//   solution states propagate throughout the network. The store and collect
+//   operations are implemented using one sided MPI communication methods
+//   (simulating shared memory).
+//   A revision number is used to prevent receiving previously collected
+//   solution states from neighbors.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __MASTER_NODE__
 #define __MASTER_NODE__
 
@@ -18,19 +48,6 @@
 
 //XXX: SolutionState_t must be serializable! (call
 //     SerializableSolutionState_t?)
-/**
- * \brief Implements a node in the network of all pilots, exposing store and
- *        collect operations on a specific set of neighbors.
- *
- * Using the neighbor strategy a set of neighbors we collect solution state
- * from (and they collect from us) is defined. Using this set of neighbors the
- * solution states propagate throughout the network. The store and collect
- * operations are implemented using one sided MPI communication methods
- * (simulating shared memory).
- * A revision number is used to prevent receiving previously collected
- * solution states from neighbors.
- *
- */
 template <
       class SolutionState_t
     , class NeighborStrategy_t
diff --git a/optimizer/Comm/types.h b/optimizer/Comm/types.h
index be9df1e42..64b6f5e51 100644
--- a/optimizer/Comm/types.h
+++ b/optimizer/Comm/types.h
@@ -1,3 +1,23 @@
+//
+// Types in namespace Comm
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __COMM_TYPES__
 #define __COMM_TYPES__
 
diff --git a/optimizer/Expression/Expression.h b/optimizer/Expression/Expression.h
index bb3be06eb..90ca052ac 100644
--- a/optimizer/Expression/Expression.h
+++ b/optimizer/Expression/Expression.h
@@ -1,3 +1,32 @@
+//
+// Class Expression
+//   Expression to be evaluated in the framework.
+//
+//   @see GlobalFunctions.h
+//
+//   This class uses the Boost Spirit parser to parse and evaluate string
+//   expressions (objectives or constraints).
+//   Custom functions called in the expression should be registered by the
+//   driver. A collection of C math default functions is always included.
+//   For constraints the operator type can be queried.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __EXPRESSION_H__
 #define __EXPRESSION_H__
 
@@ -62,16 +91,6 @@ namespace Expressions {
 
 #include "Expression/GlobalFunctions.h"
 
-/**
- *  \brief Expression to be evaluated in the framework.
- *  @see GlobalFunctions.h
- *
- *  This class uses the Boost Spirit parser to parse and evaluate string
- *  expressions (objectives or constraints).
- *  Custom functions called in the expression should be registered by the
- *  driver. A collection of C math default functions is always included.
- *  For constraints the operator type can be queried.
- */
 class Expression {
 
 public:
diff --git a/optimizer/Expression/FromFile.cpp b/optimizer/Expression/FromFile.cpp
index 12cbc5d6b..fc5f4fc8d 100644
--- a/optimizer/Expression/FromFile.cpp
+++ b/optimizer/Expression/FromFile.cpp
@@ -1,3 +1,28 @@
+//
+// Struct FromFile
+//   Simple functor that reads vector data from a file. If the file contains
+//   more than one value the sum is returned.
+//   \f[
+//     result = \sum_{i=0}^n value_i
+//   \f]
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Expression/FromFile.h"
 
 /// reads a simple list of double values
diff --git a/optimizer/Expression/FromFile.h b/optimizer/Expression/FromFile.h
index 9d142352c..0f8f67a98 100644
--- a/optimizer/Expression/FromFile.h
+++ b/optimizer/Expression/FromFile.h
@@ -1,3 +1,28 @@
+//
+// Struct FromFile
+//   Simple functor that reads vector data from a file. If the file contains
+//   more than one value the sum is returned.
+//   \f[
+//     result = \sum_{i=0}^n value_i
+//   \f]
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __FROMFILE_H__
 #define __FROMFILE_H__
 
@@ -16,14 +41,6 @@
 #include "Util/OptPilotException.h"
 #include "Expression/Parser/function.hpp"
 
-
-/**
- *  Simple functor that reads vector data from a file. If the file contains
- *  more than one value the sum is returned.
- *  \f[
- *    result = \sum_{i=0}^n value_i
- *  \f]
- */
 struct FromFile {
 
     static const std::string name;
diff --git a/optimizer/Expression/GlobalFunctions.h b/optimizer/Expression/GlobalFunctions.h
index 6faccdba0..b8d50bafb 100644
--- a/optimizer/Expression/GlobalFunctions.h
+++ b/optimizer/Expression/GlobalFunctions.h
@@ -1,3 +1,25 @@
+//
+// Namespace GlobalFunctions
+//   Defines multiple expressions to be evaluated in
+//   objectives.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __GLOBAL_FUNCTIONS_H__
 #define __GLOBAL_FUNCTIONS_H__
 
diff --git a/optimizer/Expression/ProbeVariable.h b/optimizer/Expression/ProbeVariable.h
index dbcfde3f9..853c903cd 100644
--- a/optimizer/Expression/ProbeVariable.h
+++ b/optimizer/Expression/ProbeVariable.h
@@ -1,3 +1,23 @@
+//
+// Struct ProbeVariable
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __PROBEVARIABLE_H__
 #define __PROBEVARIABLE_H__
 
diff --git a/optimizer/Expression/PythonExpr.h b/optimizer/Expression/PythonExpr.h
index ea01e9a3f..40225967c 100644
--- a/optimizer/Expression/PythonExpr.h
+++ b/optimizer/Expression/PythonExpr.h
@@ -1,3 +1,37 @@
+//
+// Struct PythonExpression
+//   Execute a python script using all given arguments (except for the first
+//   being the script name) and return the value of the "result" variable in
+//   the python script.
+//   Expression arguments can be accessed in the Python script using the vector
+//   variable "arguments", like i.e. in file "test.py":
+//   \verbatim
+//      result = 2.0 * arguments[0]
+//    \endverbatim
+//   to double the value passed as second argument to the Python expression.
+//   For example the expression
+//   \verbatim
+//      EXPR="python("test.py", 15.0)";
+//    \endverbatim
+//   evaluates to a value of 30.0 (test.py contains the line shown above).
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __PYTHON_EXPR_H__
 #define __PYTHON_EXPR_H__
 
@@ -15,22 +49,6 @@
 
 using namespace boost::python;
 
-/**
- *  Execute a python script using all given arguments (except for the first
- *  being the script name) and return the value of the "result" variable in
- *  the python script.
- *  Expression arguments can be accessed in the Python script using the vector
- *  variable "arguments", like i.e. in file "test.py":
- *  \verbatim
-      result = 2.0 * arguments[0]
-    \endverbatim
- *  to double the value passed as second argument to the Python expression.
- *  For example the expression
- *  \verbatim
-      EXPR="python("test.py", 15.0)";
-    \endverbatim
- *  evaluates to a value of 30.0 (test.py contains the line shown above).
- */
 struct PythonExpression {
 
     Expressions::Result_t operator()(client::function::arguments_t args) {
diff --git a/optimizer/Expression/SDDSVariable.h b/optimizer/Expression/SDDSVariable.h
index 0222f0e64..12ad779ee 100644
--- a/optimizer/Expression/SDDSVariable.h
+++ b/optimizer/Expression/SDDSVariable.h
@@ -1,3 +1,29 @@
+//
+// Struct SDDSVariable
+//   A simple expression to get SDDS (filename) value near a
+//   specific position (ref_val, default: spos) of a reference
+//   variable (ref_name) for a variable (var_name). Possible
+//   argument orders:
+//       args = [var_name, ref_val, filename]
+//       args = [var_name, ref_name, ref_val, filename]
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __SDDSVARIABLE_H__
 #define __SDDSVARIABLE_H__
 
@@ -13,14 +39,6 @@
 #include "Expression/Parser/function.hpp"
 
 
-/**
- *  A simple expression to get SDDS (filename) value near a
- *  specific position (ref_val, default: spos) of a reference
- *  variable (ref_name) for a variable (var_name). Possible
- *  argument orders:
- *      args = [var_name, ref_val, filename]
- *      args = [var_name, ref_name, ref_val, filename]
- */
 struct SDDSVariable {
 
     static const std::string name;
diff --git a/optimizer/Expression/SumErrSq.h b/optimizer/Expression/SumErrSq.h
index 583119577..fc18bf83e 100644
--- a/optimizer/Expression/SumErrSq.h
+++ b/optimizer/Expression/SumErrSq.h
@@ -1,3 +1,29 @@
+//
+// Struct SumErrSq
+//  A simple expression computing the sum of all measurement errors (given as
+//  first and third argument) for a variable (second argument) according to
+//
+//  \f[
+//     result = \frac{1}{n} * \sqrt{\sum_{i=0}^n (measurement_i - value_i)^2}
+//  \f]
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __SUMERRSQ_H__
 #define __SUMERRSQ_H__
 
@@ -23,15 +49,7 @@ public:
     friend std::istream & operator>>(std::istream & stream, Measurement & measurement);
 };
 
-/**
- *  A simple expression computing the sum of all measurement errors (given as
- *  first and third argument) for a variable (second argument) according to
- *
- *  \f[
- *    result = \frac{1}{n} * \sqrt{\sum_{i=0}^n (measurement_i - value_i)^2}
- *  \f]
- *
- */
+
 struct SumErrSq {
 
     static const std::string name;
diff --git a/optimizer/Optimizer/EA/BlendCrossover.h b/optimizer/Optimizer/EA/BlendCrossover.h
index 43ed9255b..ebb19b668 100644
--- a/optimizer/Optimizer/EA/BlendCrossover.h
+++ b/optimizer/Optimizer/EA/BlendCrossover.h
@@ -1,17 +1,35 @@
+//
+// Struct BlendCrossover
+//   BLX-alpha (interval schemata)
+//   Eshelman and Schaffer (1993)
+//   Pick random solution in interval
+//
+//     [ x_i^(1,t) - \alpha(x_i^(2,t) - x_i^(1,t)),
+//       x_i^(2,t) + \alpha((x_i^(2,t) - x_i^(1,t)) ]
+//
+//   at generation t.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "boost/smart_ptr.hpp"
 #include "Util/CmdArguments.h"
 #include <cmath>
 
-/**
- *  BLX-alpha (interval schemata)
- *  Eshelman and Schaffer (1993)
- *  Pick random solution in interval
- *
- *    [ x_i^(1,t) - \alpha(x_i^(2,t) - x_i^(1,t)),
- *      x_i^(2,t) + \alpha((x_i^(2,t) - x_i^(1,t)) ]
- *
- *  at generation t.
- */
 
 template <class T> struct BlendCrossover
 {
diff --git a/optimizer/Optimizer/EA/FixedPisaNsga2.h b/optimizer/Optimizer/EA/FixedPisaNsga2.h
index f08211da8..a26731c62 100644
--- a/optimizer/Optimizer/EA/FixedPisaNsga2.h
+++ b/optimizer/Optimizer/EA/FixedPisaNsga2.h
@@ -1,3 +1,35 @@
+//
+// Class FixedPisaNsga2
+//   Implementing the Variator for the PISA state machine.
+//
+//   @see http://www.tik.ee.ethz.ch/pisa/
+//
+//   The convergence behavior of the optimizer can be steered in 3 ways,
+//   corresponding command line arguments are given in brackets:
+//     - limit the number of generations (maxGenerations),
+//     - specify a target hypervolume (expected-hypervol) and tolerance
+//       (epsilon)
+//     - specify a minimal hypervolume progress (conv-hvol-prog), relative to
+//       the last generation, ((prev - new)/prev) that has to be attained to
+//       continue optimizing.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __FIXED_PISA_NSGA2_H__
 #define __FIXED_PISA_NSGA2_H__
 
@@ -29,21 +61,7 @@
 
 #include "Util/Trace/Trace.h"
 
-/**
- *  \class FixedPisaNsga2
- *  \brief Implementing the Variator for the PISA state machine.
- *
- *  @see http://www.tik.ee.ethz.ch/pisa/
- *
- *  The convergence behavior of the optimizer can be steered in 3 ways,
- *  corresponding command line arguments are given in brackets:
- *    - limit the number of generations (maxGenerations),
- *    - specify a target hypervolume (expected-hypervol) and tolerance
- *      (epsilon)
- *    - specify a minimal hypervolume progress (conv-hvol-prog), relative to
- *      the last generation, ((prev - new)/prev) that has to be attained to
- *      continue optimizing.
- */
+
 template<
       template <class> class CrossoverOperator
     , template <class> class MutationOperator
diff --git a/optimizer/Optimizer/EA/FixedPisaNsga2.tcc b/optimizer/Optimizer/EA/FixedPisaNsga2.tcc
index 0fec7f514..d0f3be0e3 100644
--- a/optimizer/Optimizer/EA/FixedPisaNsga2.tcc
+++ b/optimizer/Optimizer/EA/FixedPisaNsga2.tcc
@@ -1,3 +1,35 @@
+//
+// Class FixedPisaNsga2
+//   Implementing the Variator for the PISA state machine.
+//
+//   @see http://www.tik.ee.ethz.ch/pisa/
+//
+//   The convergence behavior of the optimizer can be steered in 3 ways,
+//   corresponding command line arguments are given in brackets:
+//     - limit the number of generations (maxGenerations),
+//     - specify a target hypervolume (expected-hypervol) and tolerance
+//       (epsilon)
+//     - specify a minimal hypervolume progress (conv-hvol-prog), relative to
+//       the last generation, ((prev - new)/prev) that has to be attained to
+//       continue optimizing.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <iostream>
 #include <sstream>
 #include <cmath>
diff --git a/optimizer/Optimizer/EA/IndependentBitMutation.h b/optimizer/Optimizer/EA/IndependentBitMutation.h
index d42ea64bf..ff40bbf25 100644
--- a/optimizer/Optimizer/EA/IndependentBitMutation.h
+++ b/optimizer/Optimizer/EA/IndependentBitMutation.h
@@ -1,7 +1,27 @@
+//
+// Struct IndependentBitMutation
+//   Mutate each gene with probability p
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "boost/smart_ptr.hpp"
 #include "Util/CmdArguments.h"
 
-/// Mutate each gene with probability p
 template <class T> struct IndependentBitMutation
 {
     void mutate(boost::shared_ptr<T> ind, CmdArguments_t args) {
diff --git a/optimizer/Optimizer/EA/Individual.h b/optimizer/Optimizer/EA/Individual.h
index 26a918ff9..f5ea39138 100644
--- a/optimizer/Optimizer/EA/Individual.h
+++ b/optimizer/Optimizer/EA/Individual.h
@@ -1,3 +1,27 @@
+//
+// Class Individual
+//   Structure for an individual in the population holding genes and objective
+//   values.
+//
+//   @see Types.h
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __INDIVIDUAL_H__
 #define __INDIVIDUAL_H__
 
@@ -11,13 +35,6 @@
 
 #include "boost/smart_ptr.hpp"
 
-/**
- * \class Individual
- *  Structure for an individual in the population holding genes and objective
- *  values.
- *
- *  @see Types.h
- */
 class Individual {
 
 public:
diff --git a/optimizer/Optimizer/EA/NaiveOnePointCrossover.h b/optimizer/Optimizer/EA/NaiveOnePointCrossover.h
index fe4c3786a..acedd85af 100644
--- a/optimizer/Optimizer/EA/NaiveOnePointCrossover.h
+++ b/optimizer/Optimizer/EA/NaiveOnePointCrossover.h
@@ -1,3 +1,23 @@
+//
+// Struct NaiveOnePointCrossover
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "boost/smart_ptr.hpp"
 #include "Util/CmdArguments.h"
 
diff --git a/optimizer/Optimizer/EA/NaiveUniformCrossover.h b/optimizer/Optimizer/EA/NaiveUniformCrossover.h
index a2dfe6d4d..08af2096a 100644
--- a/optimizer/Optimizer/EA/NaiveUniformCrossover.h
+++ b/optimizer/Optimizer/EA/NaiveUniformCrossover.h
@@ -1,7 +1,27 @@
+//
+// Struct NaiveUniformCrossover
+//   Decide for each gene if swapped with other gene.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "boost/smart_ptr.hpp"
 #include "Util/CmdArguments.h"
 
-/// decide for each gene if swapped with other gene
 template <class T> struct NaiveUniformCrossover
 {
     void crossover(boost::shared_ptr<T> ind1, boost::shared_ptr<T> ind2,
diff --git a/optimizer/Optimizer/EA/OneBitMutation.h b/optimizer/Optimizer/EA/OneBitMutation.h
index 12301fc17..2f3055b91 100644
--- a/optimizer/Optimizer/EA/OneBitMutation.h
+++ b/optimizer/Optimizer/EA/OneBitMutation.h
@@ -1,7 +1,27 @@
+//
+// Struct OneBitMutation
+//   Mutate exactly one gene of an individual.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "boost/smart_ptr.hpp"
 #include "Util/CmdArguments.h"
 
-/// Mutate exactly one gene of an individual.
 template <class T> struct OneBitMutation
 {
     void mutate(boost::shared_ptr<T> ind, CmdArguments_t /*args*/) {
diff --git a/optimizer/Optimizer/EA/Population.h b/optimizer/Optimizer/EA/Population.h
index 87d352225..e9d6ab611 100644
--- a/optimizer/Optimizer/EA/Population.h
+++ b/optimizer/Optimizer/EA/Population.h
@@ -1,3 +1,29 @@
+//
+// Class Population
+//   Managing a population of individuals. We maintain two sets: a set of all
+//   (evaluated) individuals in the population and a set of new potential
+//   individuals (the selector decides which individuals join the population),
+//   called 'stagingArea'.
+//   Most operations work on the 'stagingArea', population is kept for
+//   visualization purposes.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __POPULATION_H__
 #define __POPULATION_H__
 
@@ -15,16 +41,6 @@
 #include "extlib/wfgHypervolume/hypervolume.h"
 
 
-/**
- *  \class Population
- *
- *  Managing a population of individuals. We maintain two sets: a set of all
- *  (evaluated) individuals in the population and a set of new potential
- *  individuals (the selector decides which individuals join the population),
- *  called 'stagingArea'.
- *  Most operations work on the 'stagingArea', population is kept for
- *  visualization purposes.
- */
 template< class Individual_t >
 class Population {
 
diff --git a/optimizer/Optimizer/EA/SimulatedBinaryCrossover.h b/optimizer/Optimizer/EA/SimulatedBinaryCrossover.h
index 592156f90..d72def5f5 100644
--- a/optimizer/Optimizer/EA/SimulatedBinaryCrossover.h
+++ b/optimizer/Optimizer/EA/SimulatedBinaryCrossover.h
@@ -1,13 +1,31 @@
+//
+// Struct SimulatedBinaryCrossover
+//   Deb (1995) Simulated Binary Crossover (SBX)
+//   Respects interval schemata.
+//   Offspring are symmetric around parent solutions.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <cmath>
 
 #include "boost/smart_ptr.hpp"
 #include "Util/CmdArguments.h"
 
-/**
- *  Deb (1995) Simulated Binary Crossover (SBX)
- *  Respects interval schemata.
- *  Offspring are symmetric around parent solutions.
- */
 
 template <class T> struct SimulatedBinaryCrossover
 {
diff --git a/optimizer/Optimizer/EA/Variator.h b/optimizer/Optimizer/EA/Variator.h
index 7a8e0bf89..ee4c04859 100644
--- a/optimizer/Optimizer/EA/Variator.h
+++ b/optimizer/Optimizer/EA/Variator.h
@@ -1,3 +1,23 @@
+//
+// Class Variator
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __VARIATOR_H__
 #define __VARIATOR_H__
 
diff --git a/optimizer/Optimizer/Optimizer.h b/optimizer/Optimizer/Optimizer.h
index af797f5b5..e77caf099 100644
--- a/optimizer/Optimizer/Optimizer.h
+++ b/optimizer/Optimizer/Optimizer.h
@@ -1,3 +1,25 @@
+//
+// Class Optimizer
+//   An abstract class defining the interface for all optimizer
+//   components.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __OPTIMIZER_H__
 #define __OPTIMIZER_H__
 
@@ -6,11 +28,6 @@
 #include "Util/Types.h"
 #include "Pilot/Poller.h"
 
-/**
- *  \class Optimizer
- *  \brief An abstract class defining the interface for all optimizer
- *         components.
- */
 class Optimizer : protected Poller {
 
 public:
diff --git a/optimizer/Pilot/Pilot.h b/optimizer/Pilot/Pilot.h
index d17817eb7..6f32d3e8c 100644
--- a/optimizer/Pilot/Pilot.h
+++ b/optimizer/Pilot/Pilot.h
@@ -1,3 +1,41 @@
+//
+// Class Pilot
+//   The Optimization Pilot (Master): Coordinates requests by optimizer
+//   to workers and reports results back on a given communicator.
+//
+//   Every worker thread notifies the master here if idle or not. When
+//   available the master dispatches one of the pending simulations to the
+//   worker who will run the specified simulation and report results back to
+//   the master. The Optimizer class will poll the scheduler to check if some
+//   (or all) results are available and continue to optimize and request new
+//   simulation results.
+//
+//   @see Worker
+//   @see Optimizer
+//
+//   @tparam Opt_t type of the optimizer
+//   @tparam Sim_t type of the simulation
+//   @tparam SolPropagationGraph_t strategy to distribute solution between
+//           master islands
+//   @tparam Comm_t comm splitter strategy
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __PILOT_H__
 #define __PILOT_H__
 
@@ -55,27 +93,6 @@
 
 
 
-/**
- *  \class Pilot
- *  \brief The Optimization Pilot (Master): Coordinates requests by optimizer
- *  to workers and reports results back on a given communicator.
- *
- *  Every worker thread notifies the master here if idle or not. When
- *  available the master dispatches one of the pending simulations to the
- *  worker who will run the specified simulation and report results back to
- *  the master. The Optimizer class will poll the scheduler to check if some
- *  (or all) results are available and continue to optimize and request new
- *  simulation results.
- *
- *  @see Worker
- *  @see Optimizer
- *
- *  @tparam Opt_t type of the optimizer
- *  @tparam Sim_t type of the simulation
- *  @tparam SolPropagationGraph_t strategy to distribute solution between
- *          master islands
- *  @tparam Comm_t comm splitter strategy
- */
 template <
           class Opt_t
         , class Sim_t
diff --git a/optimizer/Pilot/Poller.h b/optimizer/Pilot/Poller.h
index 231d1b516..672e090f8 100644
--- a/optimizer/Pilot/Poller.h
+++ b/optimizer/Pilot/Poller.h
@@ -1,3 +1,30 @@
+//
+// Class Poller
+//   An interface implementing the basics of a poll loop, posting an
+//   MPI_Irecv and waiting for new requests on a specific communicator.
+//
+//   @see Pilot
+//   @see Worker
+//   @see Optimizer
+//   @see MPIHelper.h
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __POLLER_H__
 #define __POLLER_H__
 
@@ -5,16 +32,6 @@
 
 #include "Util/MPIHelper.h"
 
-/**
- *  \class Poller
- *  \brief An interface implementing the basics of a poll loop, posting an
- *         MPI_Irecv and waiting for new requests on a specific communicator.
- *
- *  @see Pilot
- *  @see Worker
- *  @see Optimizer
- *  @see MPIHelper.h
- */
 class Poller {
 
 public:
diff --git a/optimizer/Pilot/Worker.h b/optimizer/Pilot/Worker.h
index eaeaba50c..ce5bf1276 100644
--- a/optimizer/Pilot/Worker.h
+++ b/optimizer/Pilot/Worker.h
@@ -1,3 +1,32 @@
+//
+// Class Worker
+//   A worker MPI entity consists of a processor group that runs a
+//   simulation of type Sim_t. The main loop in run() accepts new jobs from the
+//   master process runs the simulation and reports back the results.
+//
+//   @see Pilot
+//   @see Poller
+//   @see MPIHelper.h
+//
+//   @tparam Sim_T type of simulation to run
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __WORKER_H__
 #define __WORKER_H__
 
@@ -12,18 +41,6 @@
 #include "Util/MPIHelper.h"
 #include "Util/CmdArguments.h"
 
-/**
- *  \class Worker
- *  \brief A worker MPI entity consists of a processor group that runs a
- *  simulation of type Sim_t. The main loop in run() accepts new jobs from the
- *  master process runs the simulation and reports back the results.
- *
- *  @see Pilot
- *  @see Poller
- *  @see MPIHelper.h
- *
- *  @tparam Sim_T type of simulation to run
- */
 template <class Sim_t>
 class Worker : protected Poller {
 
diff --git a/optimizer/Simulation/GenerateOpalSimulation.h b/optimizer/Simulation/GenerateOpalSimulation.h
index dd435cb57..9d5b770d6 100644
--- a/optimizer/Simulation/GenerateOpalSimulation.h
+++ b/optimizer/Simulation/GenerateOpalSimulation.h
@@ -1,3 +1,35 @@
+//
+// Class GenerateOpalSimulation
+//   Generates an OPAL input file from data and template file.
+//
+//   When running the optimizer with the OPAL forward solvers this utility
+//   class helps generating OPAL input files corresponding to the design
+//   variable values of the requested evaluation.
+//   Using the data file we start by generating the dictionary of known
+//   templates.
+//   When the input file is requested, all template variables in the template
+//   input file are replaced with values found in the dictionary.
+//
+//   TODO:
+//     - pass stream directly to opal (detour over file not necessary)
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __GENERATE_SIMULATION_H__
 #define __GENERATE_SIMULATION_H__
 
@@ -14,21 +46,6 @@
 
 #include "Util/OptPilotException.h"
 
-/**
- *  \class GenerateOpalSimulation
- *  \brief Generates an OPAL input file from data and template file.
- *
- *  When running the optimizer with the OPAL forward solvers this utility
- *  class helps generating OPAL input files corresponding to the design
- *  variable values of the requested evaluation.
- *  Using the data file we start by generating the dictionary of known
- *  templates.
- *  When the input file is requested, all template variables in the template
- *  input file are replaced with values found in the dictionary.
- *
- *  TODO:
- *    - pass stream directly to opal (detour over file not necessary)
- */
 class GenerateOpalSimulation {
 
 public:
diff --git a/optimizer/Simulation/Simulation.h b/optimizer/Simulation/Simulation.h
index 4cf9398a5..1629bbf65 100644
--- a/optimizer/Simulation/Simulation.h
+++ b/optimizer/Simulation/Simulation.h
@@ -1,22 +1,39 @@
+//
+// Class Simulation
+//   Abstract class every simulation has to implement to be able to
+//   work with the optimization pilot.
+//
+//   To be supported the simulation code has to be called as a library taking
+//   as an argument an MPI communicator specifying on which processors the
+//   simulation runs.
+//
+//   TODO:
+//     - formulate the 'simulation' part as a pipeline.. workers can simply put
+//       together their own pipelines situation-dependent.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __SIMULATION_H__
 #define __SIMULATION_H__
 
 #include "Util/Types.h"
 #include "Util/CmdArguments.h"
 
-/**
- *  \class Simulation
- *  \brief Abstract class every simulation has to implement to be able to
- *  work with the optimization pilot.
- *
- *  To be supported the simulation code has to be called as a library taking
- *  as an argument an MPI communicator specifying on which processors the
- *  simulation runs.
- *
- *  TODO:
- *    - formulate the 'simulation' part as a pipeline.. workers can simply put
- *      together their own pipelines situation-dependent.
- */
 class Simulation {
 
 public:
diff --git a/optimizer/Tests/CmdArgumentsTest.cpp b/optimizer/Tests/CmdArgumentsTest.cpp
index 0ac6f3bcb..a940ab338 100644
--- a/optimizer/Tests/CmdArgumentsTest.cpp
+++ b/optimizer/Tests/CmdArgumentsTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test CmdArgumentsTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Util/CmdArguments.h"
 #include "gtest/gtest.h"
 #include "boost/smart_ptr.hpp"
diff --git a/optimizer/Tests/ExpressionTest.cpp b/optimizer/Tests/ExpressionTest.cpp
index fb741d136..d3dda9fc8 100644
--- a/optimizer/Tests/ExpressionTest.cpp
+++ b/optimizer/Tests/ExpressionTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test ExpressionTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <set>
 #include <string>
 
diff --git a/optimizer/Tests/FromFileExpressionTest.cpp b/optimizer/Tests/FromFileExpressionTest.cpp
index 3f34f8c8f..33a44c69b 100644
--- a/optimizer/Tests/FromFileExpressionTest.cpp
+++ b/optimizer/Tests/FromFileExpressionTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test FromFileExpressionTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <set>
 #include <string>
 
diff --git a/optimizer/Tests/HashNameGeneratorTest.cpp b/optimizer/Tests/HashNameGeneratorTest.cpp
index f18b4a19b..f3fa95948 100644
--- a/optimizer/Tests/HashNameGeneratorTest.cpp
+++ b/optimizer/Tests/HashNameGeneratorTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test HashNameGeneratorTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Util/NativeHashGenerator.h"
 #include "gtest/gtest.h"
 #include <fstream>
diff --git a/optimizer/Tests/IndividualTest.cpp b/optimizer/Tests/IndividualTest.cpp
index 76125fbac..abb622430 100644
--- a/optimizer/Tests/IndividualTest.cpp
+++ b/optimizer/Tests/IndividualTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test IndividualTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Optimizer/EA/Individual.h"
 #include "Optimizer/EA/Individual.h"
 #include "gtest/gtest.h"
diff --git a/optimizer/Tests/MPIHelperTest.cpp b/optimizer/Tests/MPIHelperTest.cpp
index dcdf553af..745d37582 100644
--- a/optimizer/Tests/MPIHelperTest.cpp
+++ b/optimizer/Tests/MPIHelperTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test MPIHelperTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Util/MPIHelper.h"
 #include "gtest/gtest.h"
 
diff --git a/optimizer/Tests/ManagedIDsTest.cpp b/optimizer/Tests/ManagedIDsTest.cpp
index 34f8b3c37..2b899bd03 100644
--- a/optimizer/Tests/ManagedIDsTest.cpp
+++ b/optimizer/Tests/ManagedIDsTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test ManagedIDsTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Util/ManagedIDs.h"
 #include "gtest/gtest.h"
 #include "boost/smart_ptr.hpp"
diff --git a/optimizer/Tests/PopulationTest.cpp b/optimizer/Tests/PopulationTest.cpp
index 3f9edf39a..2ea29fd85 100644
--- a/optimizer/Tests/PopulationTest.cpp
+++ b/optimizer/Tests/PopulationTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test PopulationTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Optimizer/EA/Population.h"
 #include "Optimizer/EA/Individual.h"
 #include "gtest/gtest.h"
diff --git a/optimizer/Tests/PythonExprTest.cpp b/optimizer/Tests/PythonExprTest.cpp
index 5828e96ac..8c67e9644 100644
--- a/optimizer/Tests/PythonExprTest.cpp
+++ b/optimizer/Tests/PythonExprTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test PythonExprTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <set>
 #include <string>
 
diff --git a/optimizer/Tests/SDDSParserTest.cpp b/optimizer/Tests/SDDSParserTest.cpp
index 2604dbb9b..182f751b3 100644
--- a/optimizer/Tests/SDDSParserTest.cpp
+++ b/optimizer/Tests/SDDSParserTest.cpp
@@ -1,4 +1,23 @@
-
+//
+// Test SDDSParserTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Util/SDDSReader.h"
 #include "gtest/gtest.h"
 
diff --git a/optimizer/Tests/SumErrSqExpressionTest.cpp b/optimizer/Tests/SumErrSqExpressionTest.cpp
index 20a6c23af..6396cfd10 100644
--- a/optimizer/Tests/SumErrSqExpressionTest.cpp
+++ b/optimizer/Tests/SumErrSqExpressionTest.cpp
@@ -1,3 +1,23 @@
+//
+// Test SumErrSqExpressionTest
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <set>
 #include <string>
 
diff --git a/optimizer/Util/AsyncSendBuffers.h b/optimizer/Util/AsyncSendBuffers.h
index 1cf3dfeef..4541e94c9 100644
--- a/optimizer/Util/AsyncSendBuffers.h
+++ b/optimizer/Util/AsyncSendBuffers.h
@@ -1,3 +1,23 @@
+//
+// Class AsyncSendBuffer and AsyncSendBuffers
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <vector>
 #include <algorithm>
 #include <string.h>
diff --git a/optimizer/Util/CmdArguments.cpp b/optimizer/Util/CmdArguments.cpp
index d54a14312..14a2e1b1d 100644
--- a/optimizer/Util/CmdArguments.cpp
+++ b/optimizer/Util/CmdArguments.cpp
@@ -1,3 +1,30 @@
+//
+// Class CmdArguments
+//   Parsing command line arguments
+//
+//   In order to have a flexible framework, each component implementation gets
+//   access to all command line arguments.
+//   All command line options have the form:
+//       --name=value
+//   Spaces before and after the "=" will be trimmed.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Util/CmdArguments.h"
 
 void CmdArguments::addArguments(int argc, char **argv) {
diff --git a/optimizer/Util/CmdArguments.h b/optimizer/Util/CmdArguments.h
index 80861f7b0..e90f58896 100644
--- a/optimizer/Util/CmdArguments.h
+++ b/optimizer/Util/CmdArguments.h
@@ -1,3 +1,30 @@
+//
+// Class CmdArguments
+//   Parsing command line arguments
+//
+//   In order to have a flexible framework, each component implementation gets
+//   access to all command line arguments.
+//   All command line options have the form:
+//       --name=value
+//   Spaces before and after the "=" will be trimmed.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __CMD_ARGUMENTS__
 #define __CMD_ARGUMENTS__
 
@@ -13,16 +40,6 @@
 
 #include "Util/OptPilotException.h"
 
-/**
- *  \class CmdArguments
- *  \brief Parsing command line arguments
- *
- *  In order to have a flexible framework, each component implementation gets
- *  access to all command line arguments.
- *  All command line options have the form:
- *      --name=value
- *  Spaces before and after the "=" will be trimmed.
- */
 class CmdArguments {
 
 public:
diff --git a/optimizer/Util/MPIHelper.cpp b/optimizer/Util/MPIHelper.cpp
index 4dfe6a779..4199d7c89 100644
--- a/optimizer/Util/MPIHelper.cpp
+++ b/optimizer/Util/MPIHelper.cpp
@@ -1,3 +1,23 @@
+//
+// Global functions MPIHelper
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <string.h>
 
 #include <boost/static_assert.hpp>
diff --git a/optimizer/Util/MPIHelper.h b/optimizer/Util/MPIHelper.h
index f0446dc9d..79d8e4c2f 100644
--- a/optimizer/Util/MPIHelper.h
+++ b/optimizer/Util/MPIHelper.h
@@ -1,3 +1,23 @@
+//
+// Global functions MPIHelper
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __MPIHELPER_H__
 #define __MPIHELPER_H__
 
diff --git a/optimizer/Util/ManagedIDs.h b/optimizer/Util/ManagedIDs.h
index add88f3a9..4c5494ef7 100644
--- a/optimizer/Util/ManagedIDs.h
+++ b/optimizer/Util/ManagedIDs.h
@@ -1,11 +1,29 @@
+//
+// Class ManagedIDs
+//   Simple class to manage an ID pool.
+//
+//   Previously freed ID's are redistributed on following requests.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <cstddef>
 #include <queue>
 
-/**
- *  \brief Simple class to manage an ID pool.
- *
- *  Previously freed ID's are redistributed on following requests.
- */
 class ManagedIDs {
 
 public:
diff --git a/optimizer/Util/NativeHashGenerator.h b/optimizer/Util/NativeHashGenerator.h
index 51af7f04b..91b196d37 100644
--- a/optimizer/Util/NativeHashGenerator.h
+++ b/optimizer/Util/NativeHashGenerator.h
@@ -1,14 +1,31 @@
+//
+// Class NativeHashGenerator
+//   Generates a hash name.
+//   Concatenates and hashes a vector of strings.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include <vector>
 #include <string>
 #include <sstream>
 #include <functional>
 #include <algorithm>
 
-/**
- *  \brief Generates a hash name.
- *
- *  Concatenates and hashes a vector of strings.
- */
 class NativeHashGenerator {
 
 public:
diff --git a/optimizer/Util/OptPilotException.h b/optimizer/Util/OptPilotException.h
index cbc3b1c6d..3c14b83ba 100644
--- a/optimizer/Util/OptPilotException.h
+++ b/optimizer/Util/OptPilotException.h
@@ -1,3 +1,23 @@
+//
+// Class OptPilotException
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __OPTPILOTEXCEPTION_H__
 #define __OPTPILOTEXCEPTION_H__
 
diff --git a/optimizer/Util/ProbeReader.cpp b/optimizer/Util/ProbeReader.cpp
index e95da06ec..b211e147a 100644
--- a/optimizer/Util/ProbeReader.cpp
+++ b/optimizer/Util/ProbeReader.cpp
@@ -1,3 +1,24 @@
+//
+// Class ProbeReader
+//   Implements a parser and value extractor for Probe loss files.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "ProbeReader.h"
 
 #include "Util/OptPilotException.h"
diff --git a/optimizer/Util/ProbeReader.h b/optimizer/Util/ProbeReader.h
index 7800344e9..84d631cae 100644
--- a/optimizer/Util/ProbeReader.h
+++ b/optimizer/Util/ProbeReader.h
@@ -1,15 +1,31 @@
+//
+// Class ProbeReader
+//   Implements a parser and value extractor for Probe loss files.
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __PROBEREADER_H__
 #define __PROBEREADER_H__
 
 #include <string>
 #include <vector>
 #include <map>
-// #include <locale>
 
-/**
- *  \class SDDSReader
- *  \brief Implements a parser and value extractor for Probe loss files
- */
 class ProbeReader {
     
 public:
diff --git a/optimizer/Util/SDDSParser.cpp b/optimizer/Util/SDDSParser.cpp
index 30dc9fc75..e1cef724d 100644
--- a/optimizer/Util/SDDSParser.cpp
+++ b/optimizer/Util/SDDSParser.cpp
@@ -1,3 +1,20 @@
+//
+// Class SDDSParser
+//   This class writes column entries of SDDS files.
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "SDDSParser.h"
 
 #include <boost/algorithm/string.hpp>
diff --git a/optimizer/Util/SDDSParser.h b/optimizer/Util/SDDSParser.h
index 7143cacde..38b5ce28d 100644
--- a/optimizer/Util/SDDSParser.h
+++ b/optimizer/Util/SDDSParser.h
@@ -1,7 +1,20 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Class SDDSParser
+//   This class writes column entries of SDDS files.
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "Util/SDDSParser/ast.hpp"
 #include "Util/SDDSParser/file.hpp"
 #include "Util/SDDSParser/skipper.hpp"
diff --git a/optimizer/Util/SDDSParser/SDDSParserException.h b/optimizer/Util/SDDSParser/SDDSParserException.h
index 7fb023c5a..81d187864 100644
--- a/optimizer/Util/SDDSParser/SDDSParserException.h
+++ b/optimizer/Util/SDDSParser/SDDSParserException.h
@@ -1,3 +1,19 @@
+//
+// Class SDDSParserException
+//
+// Copyright (c) 2018, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __SDDSPARSEREXCEPTION_H__
 #define __SDDSPARSEREXCEPTION_H__
 
diff --git a/optimizer/Util/SDDSParser/array.cpp b/optimizer/Util/SDDSParser/array.cpp
index 782114951..87e1600cf 100644
--- a/optimizer/Util/SDDSParser/array.cpp
+++ b/optimizer/Util/SDDSParser/array.cpp
@@ -1,8 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct array
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-
 #include "array_def.hpp"
 
 typedef std::string::const_iterator iterator_t;
diff --git a/optimizer/Util/SDDSParser/array.hpp b/optimizer/Util/SDDSParser/array.hpp
index 0d61f9767..79a386545 100644
--- a/optimizer/Util/SDDSParser/array.hpp
+++ b/optimizer/Util/SDDSParser/array.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct array
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef ARRAY_HPP_
 #define ARRAY_HPP_
 
diff --git a/optimizer/Util/SDDSParser/array_def.hpp b/optimizer/Util/SDDSParser/array_def.hpp
index 7c9c3ac66..ab75e648f 100644
--- a/optimizer/Util/SDDSParser/array_def.hpp
+++ b/optimizer/Util/SDDSParser/array_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct array
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef ARRAY_DEF_HPP_
 #define ARRAY_DEF_HPP_
 
diff --git a/optimizer/Util/SDDSParser/associate.cpp b/optimizer/Util/SDDSParser/associate.cpp
index 9cf0fcc7d..6a6607514 100644
--- a/optimizer/Util/SDDSParser/associate.cpp
+++ b/optimizer/Util/SDDSParser/associate.cpp
@@ -1,7 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct associate
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "associate_def.hpp"
 
 typedef std::string::const_iterator iterator_t;
diff --git a/optimizer/Util/SDDSParser/associate.hpp b/optimizer/Util/SDDSParser/associate.hpp
index 9d79ece79..82c24ae56 100644
--- a/optimizer/Util/SDDSParser/associate.hpp
+++ b/optimizer/Util/SDDSParser/associate.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct associate
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef ASSOCIATE_HPP_
 #define ASSOCIATE_HPP_
 
diff --git a/optimizer/Util/SDDSParser/associate_def.hpp b/optimizer/Util/SDDSParser/associate_def.hpp
index 5114b2d9d..9158bbdc9 100644
--- a/optimizer/Util/SDDSParser/associate_def.hpp
+++ b/optimizer/Util/SDDSParser/associate_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct associate
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef ASSOCIATE_DEF_HPP_
 #define ASSOCIATE_DEF_HPP_
 
diff --git a/optimizer/Util/SDDSParser/ast.cpp b/optimizer/Util/SDDSParser/ast.cpp
index d1e4a515c..0c2a20812 100644
--- a/optimizer/Util/SDDSParser/ast.cpp
+++ b/optimizer/Util/SDDSParser/ast.cpp
@@ -1,7 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Namespace ast
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "ast_def.hpp"
 #include "skipper.hpp"
 
diff --git a/optimizer/Util/SDDSParser/ast.hpp b/optimizer/Util/SDDSParser/ast.hpp
index 9d6dc1d17..915b98431 100644
--- a/optimizer/Util/SDDSParser/ast.hpp
+++ b/optimizer/Util/SDDSParser/ast.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Namespace ast
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef AST_HPP_
 #define AST_HPP_
 
diff --git a/optimizer/Util/SDDSParser/ast_def.hpp b/optimizer/Util/SDDSParser/ast_def.hpp
index abe755ed9..dacfd936c 100644
--- a/optimizer/Util/SDDSParser/ast_def.hpp
+++ b/optimizer/Util/SDDSParser/ast_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Namespace ast
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef AST_DEF_HPP_
 #define AST_DEF_HPP_
 
diff --git a/optimizer/Util/SDDSParser/column.cpp b/optimizer/Util/SDDSParser/column.cpp
index b4ec46edb..c8048678e 100644
--- a/optimizer/Util/SDDSParser/column.cpp
+++ b/optimizer/Util/SDDSParser/column.cpp
@@ -1,7 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct column
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "column_def.hpp"
 
 unsigned int SDDS::column::count_m = 0;
diff --git a/optimizer/Util/SDDSParser/column.hpp b/optimizer/Util/SDDSParser/column.hpp
index 033123c20..b6ddb1cec 100644
--- a/optimizer/Util/SDDSParser/column.hpp
+++ b/optimizer/Util/SDDSParser/column.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct column
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef COLUMN_HPP_
 #define COLUMN_HPP_
 
diff --git a/optimizer/Util/SDDSParser/column_def.hpp b/optimizer/Util/SDDSParser/column_def.hpp
index 754ab636b..6561815e9 100644
--- a/optimizer/Util/SDDSParser/column_def.hpp
+++ b/optimizer/Util/SDDSParser/column_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct column
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef COLUMN_DEF_HPP_
 #define COLUMN_DEF_HPP_
 
diff --git a/optimizer/Util/SDDSParser/data.cpp b/optimizer/Util/SDDSParser/data.cpp
index 3c69bd377..d20f37c0f 100644
--- a/optimizer/Util/SDDSParser/data.cpp
+++ b/optimizer/Util/SDDSParser/data.cpp
@@ -1,7 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct data
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "data.hpp"
 #include "data_def.hpp"
 
diff --git a/optimizer/Util/SDDSParser/data.hpp b/optimizer/Util/SDDSParser/data.hpp
index 3d22510f2..cf3bafd6c 100644
--- a/optimizer/Util/SDDSParser/data.hpp
+++ b/optimizer/Util/SDDSParser/data.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct data
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef DATA_HPP_
 #define DATA_HPP_
 
diff --git a/optimizer/Util/SDDSParser/data_def.hpp b/optimizer/Util/SDDSParser/data_def.hpp
index 3270a0c5a..8b497b8af 100644
--- a/optimizer/Util/SDDSParser/data_def.hpp
+++ b/optimizer/Util/SDDSParser/data_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct data
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef DATA_DEF_HPP_
 #define DATA_DEF_HPP_
 
diff --git a/optimizer/Util/SDDSParser/description.cpp b/optimizer/Util/SDDSParser/description.cpp
index cb13b5552..0437b9598 100644
--- a/optimizer/Util/SDDSParser/description.cpp
+++ b/optimizer/Util/SDDSParser/description.cpp
@@ -1,7 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct description
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "description_def.hpp"
 
 typedef std::string::const_iterator iterator_t;
diff --git a/optimizer/Util/SDDSParser/description.hpp b/optimizer/Util/SDDSParser/description.hpp
index 59f5e5e97..d4dd8ee9d 100644
--- a/optimizer/Util/SDDSParser/description.hpp
+++ b/optimizer/Util/SDDSParser/description.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct description
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef DESCRIPTION_HPP_
 #define DESCRIPTION_HPP_
 
diff --git a/optimizer/Util/SDDSParser/description_def.hpp b/optimizer/Util/SDDSParser/description_def.hpp
index 8ce6c586f..03659bebb 100644
--- a/optimizer/Util/SDDSParser/description_def.hpp
+++ b/optimizer/Util/SDDSParser/description_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct description
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef DESCRIPTION_DEF_HPP_
 #define DESCRIPTION_DEF_HPP_
 
diff --git a/optimizer/Util/SDDSParser/error_handler.hpp b/optimizer/Util/SDDSParser/error_handler.hpp
index f0871eb55..e5fe9a68b 100644
--- a/optimizer/Util/SDDSParser/error_handler.hpp
+++ b/optimizer/Util/SDDSParser/error_handler.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct error_handler
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef ERROR_HANDLER_HPP_
 #define ERROR_HANDLER_HPP_
 
diff --git a/optimizer/Util/SDDSParser/file.cpp b/optimizer/Util/SDDSParser/file.cpp
index 323dd988e..41267c21e 100644
--- a/optimizer/Util/SDDSParser/file.cpp
+++ b/optimizer/Util/SDDSParser/file.cpp
@@ -1,7 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct file
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "file_def.hpp"
 
 typedef std::string::const_iterator iterator_t;
diff --git a/optimizer/Util/SDDSParser/file.hpp b/optimizer/Util/SDDSParser/file.hpp
index 6335ddd3d..14d482e31 100644
--- a/optimizer/Util/SDDSParser/file.hpp
+++ b/optimizer/Util/SDDSParser/file.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct file
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef FILE_HPP_
 #define FILE_HPP_
 
diff --git a/optimizer/Util/SDDSParser/file_def.hpp b/optimizer/Util/SDDSParser/file_def.hpp
index 521bae433..96734b21a 100644
--- a/optimizer/Util/SDDSParser/file_def.hpp
+++ b/optimizer/Util/SDDSParser/file_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct file
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef FILE_DEF_HPP_
 #define FILE_DEF_HPP_
 
diff --git a/optimizer/Util/SDDSParser/include.cpp b/optimizer/Util/SDDSParser/include.cpp
index a6c84c49d..80d8ca346 100644
--- a/optimizer/Util/SDDSParser/include.cpp
+++ b/optimizer/Util/SDDSParser/include.cpp
@@ -1,7 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct include
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "include_def.hpp"
 
 typedef std::string::const_iterator iterator_t;
diff --git a/optimizer/Util/SDDSParser/include.hpp b/optimizer/Util/SDDSParser/include.hpp
index dec789e42..06d8becd9 100644
--- a/optimizer/Util/SDDSParser/include.hpp
+++ b/optimizer/Util/SDDSParser/include.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct include
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef INCLUDE_HPP_
 #define INCLUDE_HPP_
 
diff --git a/optimizer/Util/SDDSParser/include_def.hpp b/optimizer/Util/SDDSParser/include_def.hpp
index 65da1f624..31daf4360 100644
--- a/optimizer/Util/SDDSParser/include_def.hpp
+++ b/optimizer/Util/SDDSParser/include_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct include
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef INCLUDE_DEF_HPP_
 #define INCLUDE_DEF_HPP_
 
diff --git a/optimizer/Util/SDDSParser/parameter.cpp b/optimizer/Util/SDDSParser/parameter.cpp
index 8bb963d86..56fd1ecf8 100644
--- a/optimizer/Util/SDDSParser/parameter.cpp
+++ b/optimizer/Util/SDDSParser/parameter.cpp
@@ -1,7 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct parameter
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "parameter_def.hpp"
 
 unsigned int SDDS::parameter::count_m = 0;
diff --git a/optimizer/Util/SDDSParser/parameter.hpp b/optimizer/Util/SDDSParser/parameter.hpp
index 427aecbff..969a99d68 100644
--- a/optimizer/Util/SDDSParser/parameter.hpp
+++ b/optimizer/Util/SDDSParser/parameter.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct parameter
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef PARAMETER_HPP_
 #define PARAMETER_HPP_
 
diff --git a/optimizer/Util/SDDSParser/parameter_def.hpp b/optimizer/Util/SDDSParser/parameter_def.hpp
index 80ab52ed1..cbad87aa5 100644
--- a/optimizer/Util/SDDSParser/parameter_def.hpp
+++ b/optimizer/Util/SDDSParser/parameter_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct parameter
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef PARAMETER_DEF_HPP_
 #define PARAMETER_DEF_HPP_
 
diff --git a/optimizer/Util/SDDSParser/skipper.hpp b/optimizer/Util/SDDSParser/skipper.hpp
index 56b0fca19..a73b256f6 100644
--- a/optimizer/Util/SDDSParser/skipper.hpp
+++ b/optimizer/Util/SDDSParser/skipper.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct skipper
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef SKIPPER_HPP_
 #define SKIPPER_HPP_
 
diff --git a/optimizer/Util/SDDSParser/version.cpp b/optimizer/Util/SDDSParser/version.cpp
index 8d59641e4..850aff196 100644
--- a/optimizer/Util/SDDSParser/version.cpp
+++ b/optimizer/Util/SDDSParser/version.cpp
@@ -1,7 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct version
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
 #include "version_def.hpp"
 
 typedef std::string::const_iterator iterator_t;
diff --git a/optimizer/Util/SDDSParser/version.hpp b/optimizer/Util/SDDSParser/version.hpp
index 7a8c09f3b..152533d17 100644
--- a/optimizer/Util/SDDSParser/version.hpp
+++ b/optimizer/Util/SDDSParser/version.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct version
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef VERSION_HPP_
 #define VERSION_HPP_
 
diff --git a/optimizer/Util/SDDSParser/version_def.hpp b/optimizer/Util/SDDSParser/version_def.hpp
index 7c3c0d557..43708a9a0 100644
--- a/optimizer/Util/SDDSParser/version_def.hpp
+++ b/optimizer/Util/SDDSParser/version_def.hpp
@@ -1,11 +1,19 @@
 //
-//  Copyright & License: See Copyright.readme in src directory
+// Struct version
+//
+// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer
+// All rights reserved
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
-
-/*!
-  Class documentation
-*/
-
 #ifndef VERSION_DEF_HPP_
 #define VERSION_DEF_HPP_
 
diff --git a/optimizer/Util/Statistics.h b/optimizer/Util/Statistics.h
index 32971b2a3..bf2001e14 100644
--- a/optimizer/Util/Statistics.h
+++ b/optimizer/Util/Statistics.h
@@ -1,3 +1,23 @@
+//
+// Class Statistics
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __STATISTICS_H__
 #define __STATISTICS_H__
 
diff --git a/optimizer/Util/Trace/CoutSink.h b/optimizer/Util/Trace/CoutSink.h
index d6e6e10e8..746511e92 100644
--- a/optimizer/Util/Trace/CoutSink.h
+++ b/optimizer/Util/Trace/CoutSink.h
@@ -1,3 +1,23 @@
+//
+// Class CoutSink
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __TRACE_COUT_SINK_H__
 #define __TRACE_COUT_SINK_H__
 
diff --git a/optimizer/Util/Trace/FileSink.h b/optimizer/Util/Trace/FileSink.h
index 96d3258b0..d844a5428 100644
--- a/optimizer/Util/Trace/FileSink.h
+++ b/optimizer/Util/Trace/FileSink.h
@@ -1,3 +1,23 @@
+//
+// Class FileSink
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __TRACE_FILE_SINK_H__
 #define __TRACE_FILE_SINK_H__
 
diff --git a/optimizer/Util/Trace/MyPid.h b/optimizer/Util/Trace/MyPid.h
index 13a6c3673..70931647a 100644
--- a/optimizer/Util/Trace/MyPid.h
+++ b/optimizer/Util/Trace/MyPid.h
@@ -1,3 +1,23 @@
+//
+// Class MyPid
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #include "Util/Trace/TraceComponent.h"
 
 #include "mpi.h"
diff --git a/optimizer/Util/Trace/Timestamp.h b/optimizer/Util/Trace/Timestamp.h
index eed9e4623..4a0d4c7e7 100644
--- a/optimizer/Util/Trace/Timestamp.h
+++ b/optimizer/Util/Trace/Timestamp.h
@@ -1,3 +1,23 @@
+//
+// Class Timestamp
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __TIMESTAMP_H__
 #define __TIMESTAMP_H__
 
diff --git a/optimizer/Util/Trace/Trace.h b/optimizer/Util/Trace/Trace.h
index 804da10c8..8286fbb1a 100644
--- a/optimizer/Util/Trace/Trace.h
+++ b/optimizer/Util/Trace/Trace.h
@@ -1,3 +1,23 @@
+//
+// Class Trace
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __TRACE_H__
 #define __TRACE_H__
 
diff --git a/optimizer/Util/Trace/TraceComponent.h b/optimizer/Util/Trace/TraceComponent.h
index a89378ee6..cd1c8bef2 100644
--- a/optimizer/Util/Trace/TraceComponent.h
+++ b/optimizer/Util/Trace/TraceComponent.h
@@ -1,3 +1,23 @@
+//
+// Class TraceComponent
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __TRACE_COMPONENT_H__
 #define __TRACE_COMPONENT_H__
 
diff --git a/optimizer/Util/Types.h b/optimizer/Util/Types.h
index 7d196fce3..a972d5765 100644
--- a/optimizer/Util/Types.h
+++ b/optimizer/Util/Types.h
@@ -1,3 +1,23 @@
+//
+// File Types
+//
+// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich
+// All rights reserved
+//
+// Implemented as part of the PhD thesis
+// "Toward massively parallel multi-objective optimization withapplication to
+// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359)
+//
+// This file is part of OPAL.
+//
+// OPAL 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.
+//
+// You should have received a copy of the GNU General Public License
+// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
+//
 #ifndef __TYPES_H__
 #define __TYPES_H__
 
-- 
GitLab