1 #ifndef _theplu_yat_normalizer_range_normalizer_ 2 #define _theplu_yat_normalizer_range_normalizer_ 28 #include "yat/utility/concept_check.h" 29 #include "yat/utility/DataIterator.h" 30 #include "yat/utility/iterator_traits.h" 31 #include "yat/utility/WeightIterator.h" 33 #include <boost/concept_check.hpp> 34 #include <boost/iterator/iterator_concepts.hpp> 41 namespace normalizer {
63 template<
class UnaryFunction,
class Operator>
89 : func_(uf), op_(op) {}
114 template<
class InputIterator,
class OutputIterator>
116 OutputIterator result)
const 120 BOOST_CONCEPT_ASSERT((boost_concepts::WritableIterator<OutputIterator>));
125 BOOST_CONCEPT_ASSERT((boost_concepts::ForwardTraversal<InputIterator>));
129 check_requirements<OutputIterator>(tag);
132 detail::copy_weight_if_weighted(first, last, result);
133 double val = func_(first, last);
134 std::transform(utility::data_iterator(first),
135 utility::data_iterator(last),
136 utility::data_iterator(result),
137 [
this, val](
double x) {
return op_(x, val);});
142 template<
typename OutputIterator>
145 using boost_concepts::SinglePassIterator;
146 using boost_concepts::WritableIterator;
147 BOOST_CONCEPT_ASSERT((SinglePassIterator<OutputIterator>));
148 BOOST_CONCEPT_ASSERT((WritableIterator<OutputIterator, double>));
152 template<
typename OutputIterator>
155 using boost_concepts::ForwardTraversal;
156 using boost_concepts::WritableIterator;
157 BOOST_CONCEPT_ASSERT((ForwardTraversal<OutputIterator>));
158 BOOST_CONCEPT_ASSERT((WritableIterator<OutputIterator
detail::weighted_iterator_traits_detail< value >::type type
Definition: iterator_traits.h:114
Concept check for Data Iterator.
Definition: concept_check.h:240
RangeNormalizer(void)
default constructor
Definition: RangeNormalizer.h:73
The Department of Theoretical Physics namespace as we define it.
Definition: iterator_traits.h:47
RangeNormalizer(const UnaryFunction &uf, const Operator &op)
Definition: RangeNormalizer.h:88
Holds a pair of data and associated weight.
Definition: DataWeight.h:39
Definition: iterator_traits.h:55
void operator()(InputIterator first, InputIterator last, OutputIterator result) const
Definition: RangeNormalizer.h:115
RangeNormalizer(const UnaryFunction &uf)
Definition: RangeNormalizer.h:80
Definition: RangeNormalizer.h:64