Index: src/Fragmentation/Summation/Makefile.am
===================================================================
--- src/Fragmentation/Summation/Makefile.am	(revision 56df379c672f095aa9b6ac364949cfa8c0ba57d5)
+++ src/Fragmentation/Summation/Makefile.am	(revision 286e3649c8528fe76cb64a3db5b19b18282fe9e2)
@@ -11,4 +11,5 @@
 	Fragmentation/Summation/OrthogonalSummation.hpp \
 	Fragmentation/Summation/OrthogonalSummation_impl.hpp \
+	Fragmentation/Summation/printSum.hpp \
 	Fragmentation/Summation/SetValue.hpp \
 	Fragmentation/Summation/SetValueMap.hpp \
Index: src/Fragmentation/Summation/printSum.hpp
===================================================================
--- src/Fragmentation/Summation/printSum.hpp	(revision 286e3649c8528fe76cb64a3db5b19b18282fe9e2)
+++ src/Fragmentation/Summation/printSum.hpp	(revision 286e3649c8528fe76cb64a3db5b19b18282fe9e2)
@@ -0,0 +1,98 @@
+/*
+ * printSum.hpp
+ *
+ *  Created on: 29.07.2012
+ *      Author: heber
+ */
+
+#ifndef PRINTSUM_HPP_
+#define PRINTSUM_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <vector>
+
+#include "Fragmentation/Summation/IndexSetContainer.hpp"
+#include "Fragmentation/Summation/SubsetMap.hpp"
+#include "Fragmentation/Summation/Summator.hpp"
+
+/** Specific namespace for all the specialized template functions that print
+ * a useful name for each of the boost::fusion::map key.
+ */
+namespace FusionKeyNames {
+
+  /** This function needs to be specialized for every member variable in your
+   * boost::fusion::map of values to sum up each such that it prints the name
+   * of the member variable.
+   *
+   * By default, we just return an empty string.
+   */
+  template <typename T> std::string printName() {
+    return std::string();
+  };
+
+}
+/** Tiny template functor to use OrthogonalSummation, sum up and print the result.
+ *
+ */
+template <typename MapType>
+struct printSum {
+  /** Constructor takes the arguments that \a Summator also needs and stores
+   * them internally.
+   *
+   * \param _subsetmap map with hierarchy of IndexSet's
+   * \param _data MPQCData converted to MPQCDataMap_t type
+   * \param _jobids job ids to sum data in correct order
+   * \param _container container of IndexSet's such that each set has correct order
+   *        to job id and hence to _data.
+   * \param _MatrixNrLookup lookup from job id to ordering in above vectors
+   */
+  printSum(
+      SubsetMap::ptr &_subsetmap,
+      const std::vector<MapType> &_data,
+      const std::vector<JobId_t> &_jobids,
+      const IndexSetContainer::Container_t &_container,
+      std::map< JobId_t, size_t > &_MatrixNrLookup) : /* cannot make this const due to operator[] */
+    subsetmap(_subsetmap),
+    data(_data),
+    jobids(_jobids),
+    container(_container),
+    MatrixNrLookup(_MatrixNrLookup)
+  {}
+
+  /** Operator that calls on Summator and prints the value.
+   *
+   * \note the parameter is needed for boost::mpl::for_each but is not
+   * used here.
+   */
+  template <typename MapKey>
+  void operator()(MapKey &) {
+    // We retrieve the type of the MPQCData member variable from the boost::fusion::map.
+    typedef typename boost::fusion::result_of::value_at_key<MapType, MapKey>::type MapValue;
+    // create Summator instance
+    Summator<MapType, MapKey> sum_value(
+        subsetmap, data, jobids, container, MatrixNrLookup
+        );
+    // sum up
+    MapValue value = sum_value();
+    // print value
+    LOG(0, "STATUS: Resulting " << FusionKeyNames::printName<MapKey>() << " is " << value << ".");
+  }
+
+private:
+  //!> Hierarchy of IndexSet's
+  SubsetMap::ptr &subsetmap;
+  //!> vector of data converted from MPQCData
+  const std::vector<MapType> &data;
+  //!> vector of jobids
+  const std::vector<JobId_t> &jobids;
+  //!> container with all IndexSet's
+  const IndexSetContainer::Container_t &container;
+  //!> lookup map from job ids to ordering in above vectors
+  std::map< JobId_t, size_t > MatrixNrLookup;
+};
+
+#endif /* PRINTSUM_HPP_ */
