Index: src/Fragmentation/Summation/SetValues/Histogram.cpp
===================================================================
--- src/Fragmentation/Summation/SetValues/Histogram.cpp	(revision 57fda060b3ae2dde9f8b4af969eec2eab27bcf44)
+++ src/Fragmentation/Summation/SetValues/Histogram.cpp	(revision ff7ac6d85533f168572a659ac19fab59afd62f1d)
@@ -206,56 +206,61 @@
 void Histogram::superposeOtherHistogram(const Histogram &other, const double prefactor)
 {
-  // go through each of the other histogram's bins
-  if (!other.bins.empty()) {
-    Bins_t::const_iterator enditer = --other.bins.end(); // (except internal last one)
-    for (Bins_t::const_iterator biniter = other.bins.begin();
-        biniter != enditer; /* we advance ourselves in loop */) {
-      const Bin_t &bin = *biniter;
-      ++biniter;
-      const Bin_t &nextbin = *biniter;
-
-      LOG(4, "DEBUG: Current bin is " << bin << ", next bin is " << nextbin << ".");
-
-      // Check first whether start or end actually fit into our histogram, if not extend.
-      extendMissingBins(bin.first, nextbin.first);
-
-      // The bin will in general not fit into one bin in this histogram, but overlap.
-      // Hence, we determine the contribution of the bin to each bin in this histogram
-      // its overlaps into and add this weight to the bin.
-      Bins_t::const_iterator loweriter = getLowerEndBin(bin.first);
-      Bins_t::const_iterator upperiter = getHigherEndBin(nextbin.first);
-
-      ASSERT( loweriter->first < upperiter->first,
-          "Histogram::superposeOtherHistogram() - the bin range is invalid.");
-      LOG(5, "DEBUG: bin range here is ["
-          << loweriter->first << ","  << upperiter->first << ").");
-
-      // Next, we create a vector of offsets
-      typedef std::vector< BinLowerEnd > offsets_t;
-      offsets_t offsets;
-      {
-        offsets.push_back(bin.first);
-        Bins_t::const_iterator iter = loweriter;
-        for (++iter; iter != upperiter; ++iter)
-          if (offsets.back() != iter->first)
-            offsets.push_back(iter->first);
-        if (offsets.back() != nextbin.first)
-          offsets.push_back(nextbin.first);
-        LOG(4, "DEBUG: Offsets are " << offsets << ".");
+  // check whether we just copy into an empty histogram
+  if ((bins.empty()) && (prefactor == +1.)) {
+    *this = other;
+  } else {
+    // go through each of the other histogram's bins
+    if (!other.bins.empty()) {
+      Bins_t::const_iterator enditer = --other.bins.end(); // (except internal last one)
+      for (Bins_t::const_iterator biniter = other.bins.begin();
+          biniter != enditer; /* we advance ourselves in loop */) {
+        const Bin_t &bin = *biniter;
+        ++biniter;
+        const Bin_t &nextbin = *biniter;
+
+        LOG(4, "DEBUG: Current bin is " << bin << ", next bin is " << nextbin << ".");
+
+        // Check first whether start or end actually fit into our histogram, if not extend.
+        extendMissingBins(bin.first, nextbin.first);
+
+        // The bin will in general not fit into one bin in this histogram, but overlap.
+        // Hence, we determine the contribution of the bin to each bin in this histogram
+        // its overlaps into and add this weight to the bin.
+        Bins_t::const_iterator loweriter = getLowerEndBin(bin.first);
+        Bins_t::const_iterator upperiter = getHigherEndBin(nextbin.first);
+
+        ASSERT( loweriter->first < upperiter->first,
+            "Histogram::superposeOtherHistogram() - the bin range is invalid.");
+        LOG(5, "DEBUG: bin range here is ["
+            << loweriter->first << ","  << upperiter->first << ").");
+
+        // Next, we create a vector of offsets
+        typedef std::vector< BinLowerEnd > offsets_t;
+        offsets_t offsets;
+        {
+          offsets.push_back(bin.first);
+          Bins_t::const_iterator iter = loweriter;
+          for (++iter; iter != upperiter; ++iter)
+            if (offsets.back() != iter->first)
+              offsets.push_back(iter->first);
+          if (offsets.back() != nextbin.first)
+            offsets.push_back(nextbin.first);
+          LOG(4, "DEBUG: Offsets are " << offsets << ".");
+        }
+
+        // then, we go through the offsets but the last one and add the respective area
+        {
+          offsets_t::const_iterator iter = offsets.begin();
+          offsets_t::const_iterator nextiter = ++offsets.begin();
+          for (; iter != --offsets.end(); ++iter, ++nextiter) {
+            const double length = *nextiter - *iter;
+            const double weight = bin.second * (length/binwidth);
+            Bins_t::iterator filliter = getLowerEndBin(*iter);
+            filliter->second += prefactor * weight;
+          }
+        }
+
+        LOG(4, "DEBUG: Bins are after summation " << printBins() << ".");
       }
-
-      // then, we go through the offsets but the last one and add the respective area
-      {
-        offsets_t::const_iterator iter = offsets.begin();
-        offsets_t::const_iterator nextiter = ++offsets.begin();
-        for (; iter != --offsets.end(); ++iter, ++nextiter) {
-          const double length = *nextiter - *iter;
-          const double weight = bin.second * (length/binwidth);
-          Bins_t::iterator filliter = getLowerEndBin(*iter);
-          filliter->second += prefactor * weight;
-        }
-      }
-
-      LOG(4, "DEBUG: Bins are after summation " << printBins() << ".");
     }
   }
