Index: src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.hpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.hpp	(revision fbf143b9fb3d409937862a091c997ab0428c8b3e)
+++ src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.hpp	(revision fbf143b9fb3d409937862a091c997ab0428c8b3e)
@@ -0,0 +1,122 @@
+/*
+ * FragmentationLongRangeResults.hpp
+ *
+ *  Created on: Aug 31, 2012
+ *      Author: heber
+ */
+
+#ifndef FRAGMENTATIONLONGRANGERESULTS_HPP_
+#define FRAGMENTATIONLONGRANGERESULTS_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <map>
+#include <vector>
+
+#ifdef HAVE_JOBMARKET
+#include "JobMarket/types.hpp"
+#else
+typedef size_t JobId_t;
+#endif
+
+#include "Fragmentation/KeySetsContainer.hpp"
+#include "Fragmentation/Summation/IndexSet.hpp"
+#include "Fragmentation/Summation/IndexSetContainer.hpp"
+#include "Fragmentation/Summation/SubsetMap.hpp"
+
+#include "Fragmentation/Summation/Containers/MPQCData.hpp"
+#include "Fragmentation/Summation/Containers/MPQCDataMap.hpp"
+#include "Fragmentation/Summation/Containers/VMGData.hpp"
+#include "Fragmentation/Summation/Containers/VMGDataMap.hpp"
+#include "Fragmentation/Summation/SetValues/SamplingGrid.hpp"
+
+/** FragmentationLongRangeResults contains the summed up results per level resulting
+ * from the fragmentation of the molecular system and clever combination of
+ * fragmentary energies, forces, timings, and so on.
+ *
+ * This structure is mostly a storage wherein the summed up results are
+ * contained for subsequent pretty printing and so on.
+ *
+ */
+struct FragmentationLongRangeResults
+{
+  /** Constructor for class FragmentationLongRangeResults, based on KeySets.
+   *
+   * @param fragmentData results from short-range fragment calculations
+   * @param longrangeData results from long-range fragment calculations
+   * @param _KeySet KeySets of all (non-hydrogen) atoms
+   * @param _ForceKeySet KeySets of all atoms except those added by saturation
+   */
+  FragmentationLongRangeResults(
+      const std::map<JobId_t,MPQCData> &fragmentData,
+      std::map<JobId_t,VMGData> &longrangeData,
+      const KeySetsContainer& _KeySet,
+      const KeySetsContainer& _ForceKeySet);
+
+  /** Performs the summation and fills all result vectors.
+   *
+   * @param fragmentData results from short-range fragment calculations
+   * @param longrangeData results from long-range fragment calculations
+   * @param fullsolutionData long-range solution
+   * @param full_sample sampled density
+   */
+  void operator()(
+      const std::map<JobId_t,MPQCData> &fragmentData,
+      std::map<JobId_t,VMGData> &longrangeData,
+      const std::vector<VMGData> &fullsolutionData,
+      const std::vector<SamplingGrid> &full_sample);
+
+  size_t getMaxLevel() const {
+    return MaxLevel;
+  }
+
+  IndexSetContainer::Container_t getContainer() const {
+    return container->getContainer();
+  }
+
+  const KeySetsContainer& getKeySet() const {
+    return KeySet;
+  }
+
+  const KeySetsContainer& getForceKeySet() const {
+    return ForceKeySet;
+  }
+
+private:
+  std::map< JobId_t, size_t > MPQCMatrixNrLookup;
+  std::map< JobId_t, size_t > VMGMatrixNrLookup;
+  KeySetsContainer KeySet;
+  KeySetsContainer ForceKeySet;
+  IndexSetContainer::ptr container;
+  SubsetMap::ptr subsetmap;
+
+public:
+  //!> results per level of summed up sampled grid charge
+  std::vector<MPQCDataGridMap_t> Result_Grid_fused;
+  //!> results per level of summed up fragment positions and charges
+  std::vector<MPQCDataFragmentMap_t> Result_Fragment_fused;
+  //!> results per level of summed up long range potential grids and energy
+  std::vector<VMGDataMap_t> Result_LongRange_fused;
+  //!> results per level of summed up long range true energy
+  std::vector<VMGDataLongRangeMap_t> Result_LongRangeIntegrated_fused;
+
+  //!> results per IndexSet of summed up sampled grid charge
+  std::map<IndexSet::ptr, std::pair<MPQCDataGridMap_t,MPQCDataGridMap_t> > Result_perIndexSet_Grid;
+  //!> results per IndexSet of summed up fragment positions and charges
+  std::map<IndexSet::ptr, std::pair<MPQCDataFragmentMap_t,MPQCDataFragmentMap_t> > Result_perIndexSet_Fragment;
+  //!> results per IndexSet of summed up long range potential grids and energy
+  std::map<IndexSet::ptr, std::pair<VMGDataMap_t, VMGDataMap_t> > Result_perIndexSet_LongRange;
+  // we don't need the map pendant for Result_LongRangeIntegrated_fused, as this
+  // quantity makes sense only level-wise
+
+private:
+  //!> maximum level of summation
+  size_t MaxLevel;
+};
+
+
+#endif /* FRAGMENTATIONLONGRANGERESULTS_HPP_ */
