inlib  1.2.0
Classes | Functions
inlib::read Namespace Reference

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)

Function Documentation

template<class T >
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;     
  }
}
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines