39 template<
typename TMassComparator>
44 TMassComparator tmassComp,
45 std::vector<double> &
breaks,
50 double endMass = maxMass;
57 startMass = minMass - tmassComp(minMass)/2.;
60 breaks.push_back(startMass);
63 startMass = startMass + tmassComp(startMass);
64 breaks.push_back(startMass );
65 }
while( startMass < endMass);
69 breaks.back() = endMass;
76 typename TInputIterator,
77 typename TOutputIterator
79 TOutputIterator
getMids(TInputIterator breaksBeg,
80 TInputIterator breaksEnd,
81 TOutputIterator midsBeg
84 typedef typename std::iterator_traits<TInputIterator>::value_type TReal;
85 TReal oldval = *breaksBeg;
86 TReal divider = TReal(0.5);
88 for( ; breaksBeg != breaksEnd; ++breaksBeg, ++midsBeg )
90 TReal newval = *(breaksBeg);
91 *midsBeg = (oldval + newval)*divider;
99 const std::vector<double> &breaks,
100 std::vector<double> & mids
103 mids.resize(breaks.size()-1);
104 getMids(breaks.begin(), breaks.end(), mids.begin() );
111 #endif // BREAKSSPEC_H void breaks(double minMass, double maxMass, TMassComparator tmassComp, std::vector< double > &breaks, bool exact=false)
Segment mass range according to Mass Compare functor could be used to histogram a dataset or to compu...
EQUISPACEINTERPOL Interpolation on a equidistantly spaced grid.
TOutputIterator getMids(TInputIterator breaksBeg, TInputIterator breaksEnd, TOutputIterator midsBeg)