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;
83 bin_(mass1-deltamasshalf,mass2-deltamasshalf,idx_,weight_);
85 double intensd =
static_cast<double>(*intens);
86 double sum = std::accumulate(weight_.begin(),weight_.end(),0.);
87 BOOST_ASSERT(fabs(deltamass- sum) < 1e-11);
90 for(std::size_t i = 0 ; i < idx_.size();++i){
91 if((idx_[i]>=0) &(idx_[i] <
static_cast<int32_t
>(bin_.
breaks_.size() - 1)))
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
112 gg.resize(bin_.
breaks_.size() - 1);
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.
EQUISPACEINTERPOL Interpolation on a equidistantly spaced grid.
void getMids(std::vector< double > &mids)
TOutputIterator getMids(TInputIterator breaksBeg, TInputIterator breaksEnd, TOutputIterator midsBeg)