/* * OrthogonalSumUpPerLevel.hpp * * Created on: Aug 27, 2012 * Author: heber */ #ifndef ORTHOGONALSUMUPPERLEVEL_HPP_ #define ORTHOGONALSUMUPPERLEVEL_HPP_ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include #include #include "Fragmentation/Converter/DataConverter.hpp" #include "Fragmentation/Summation/AllLevelOrthogonalSummator.hpp" #include "Fragmentation/Summation/IndexSetContainer.hpp" #include "Jobs/MPQCData.hpp" #include template std::vector OrthogonalSumUpPerLevel( const std::map &fragmentData, const std::map< JobId_t, size_t > &MatrixNrLookup, const IndexSetContainer::ptr &container, SubsetMap::ptr &subsetmap ) { // place data into boost::fusion::map instance std::map Data_fused; convertDataTo(fragmentData, Data_fused); // instantiate summator std::vector Result_fused(subsetmap->getMaximumSubsetLevel()); AllLevelOrthogonalSummator Summer( subsetmap, Data_fused, container->getContainer(), MatrixNrLookup, Result_fused); // sum up for each type key in TypeVector boost::mpl::for_each(boost::ref(Summer)); return Result_fused; } #endif /* ORTHOGONALSUMUPPERLEVEL_HPP_ */