|
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;
}
}
1.7.5.1