22 #ifndef CONVERT2DENSE_H
23 #define CONVERT2DENSE_H
28 #include <boost/assert.hpp>
29 #include <boost/cstdint.hpp>
52 std::size_t
defBreak(std::pair<double, double> & mzrange,
double ppm ){
60 template<
typename Tmass,
typename T
intens,
typename Tout >
66 for( ; beginMass != (endMass -1) ; ++beginMass, ++intens ){
67 double mass1 = *beginMass;
68 double mass2 = *(beginMass+1);
69 double predmass2 = mass1 + (
am_* sqrt(mass1))*1.01;
70 if(mass2 > predmass2){
74 double deltamass = mass2-mass1;
77 deltamasshalf= deltamass/2.;
80 deltamasshalf = deltamass;
85 double intensd =
static_cast<double>(*intens);
87 BOOST_ASSERT(fabs(deltamass- sum) < 1e-11);
90 for(std::size_t i = 0 ; i <
idx_.size();++i){
93 double bb= intensd *
weight_[i]/deltamass;
94 *(ass +
idx_[i]) += bb;
98 BOOST_ASSERT( fabs(check - intensd) < 1e-3 );
108 template<
typename Tmass,
typename T
intens >
110 std::vector<
typename std::iterator_traits<Tintens>::value_type > & gg
121 #endif // CONVERT2DENSE_H
Convert2Dense(double am=0.1)
ralab::base::resample::Bin1D bin_
std::vector< double > weight_
std::vector< int32_t > idx_
TODO Do checking on TReal thats a real.
void convert2dense(Tmass beginMass, Tmass endMass, Tintens intens, Tout ass)
Converts a sparse spec to a dense spec.
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...
void convert2dense(Tmass beginMass, Tmass endMass, Tintens intens, std::vector< typename std::iterator_traits< Tintens >::value_type > &gg)
Converts a sparse spec to a dense spec.
std::vector< double > breaks_
std::size_t defBreak(std::pair< double, double > &mzrange, double ppm)
computes split points of an map.
void getMids(std::vector< double > &mids)
TOutputIterator getMids(TInputIterator breaksBeg, TInputIterator breaksEnd, TOutputIterator midsBeg)