inlib
1.2.0
|
Classes | |
class | icol |
class | icolumn |
class | intuple |
Functions | |
template<class T > | |
bool | column_infos (intuple &a_ntu, const icolumn< T > &a_col, T &a_mn, T &a_mx, T &a_S, T &a_S2, inlib::uint64 &a_count) |
bool | mean_rms (intuple &a_ntu, const icol &a_col, double &a_mean, double &a_rms) |
bool inlib::read::column_infos | ( | intuple & | a_ntu, |
const icolumn< T > & | a_col, | ||
T & | a_mn, | ||
T & | a_mx, | ||
T & | a_S, | ||
T & | a_S2, | ||
inlib::uint64 & | a_count | ||
) | [inline] |
Definition at line 76 of file rntuple.
{ a_mn = T(); a_mx = T(); a_S = T(); a_S2 = T(); a_count = 0; T v; a_ntu.start(); if(a_ntu.next()){ if(!a_col.get_entry(v)) { a_mn = T(); a_mx = T(); a_S = T(); a_S2 = T(); a_count = 0; return false; } a_mn = v; a_mx = v; a_S = v; a_S2 = v*v; a_count++; } while(a_ntu.next()){ if(!a_col.get_entry(v)) { a_mn = T(); a_mx = T(); a_S = T(); a_S2 = T(); a_count = 0; return false; } a_mn = inlib::mn<T>(a_mn,v); a_mx = inlib::mx<T>(a_mx,v); a_S += v; a_S2 += v*v; a_count++; } return true; }
bool inlib::read::mean_rms | ( | intuple & | a_ntu, |
const icol & | a_col, | ||
double & | a_mean, | ||
double & | a_rms | ||
) | [inline] |
Definition at line 133 of file rntuple.
{ a_mean = 0; a_rms = 0; typedef icolumn<int> icoli_t; typedef icolumn<float> icolf_t; typedef icolumn<double> icold_t; if(const icoli_t* ci = id_cast<icol, icoli_t >(a_col) ){ int mn,mx,S,S2; uint64 count; if(!column_infos<int>(a_ntu,*ci,mn,mx,S,S2,count)) return false; if(!count) return false; a_mean = S/double(count); a_rms = ::sqrt(::fabs(S2/double(count)-a_mean*a_mean)); return true; } else if(const icolf_t* cf = id_cast<icol, icolf_t >(a_col) ){ float mn,mx,S,S2; uint64 count; if(!column_infos<float>(a_ntu,*cf,mn,mx,S,S2,count)) return false; if(!count) return false; a_mean = S/double(count); a_rms = ::sqrt(::fabs(S2/double(count)-a_mean*a_mean)); return true; } else if(const icold_t* cd = id_cast<icol, icold_t >(a_col) ){ double mn,mx,S,S2; uint64 count; if(!column_infos<double>(a_ntu,*cd,mn,mx,S,S2,count)) return false; if(!count) return false; a_mean = S/double(count); a_rms = ::sqrt(::fabs(S2/double(count)-a_mean*a_mean)); return true; } else { return false; } }