Go to the documentation of this file.00001
00005
00006
00007 #include <iostream>
00008
00009 #include "boost/format.hpp"
00010
00011 #include "nxyter/NxDataSummary.h"
00012
00013 using boost::format;
00014
00021
00023
00024 nxyter::NxDataSummary::NxDataSummary() :
00025 fNumEntries(128),
00026 fFull(128),
00027 fMedian(128),
00028 fWidth50(128),
00029 fWidth80(128),
00030 fMin(128),
00031 fMax(128)
00032 {
00033 }
00034
00035
00036
00037 nxyter::NxDataSummary::~NxDataSummary()
00038 {
00039 }
00040
00041
00043
00044 void nxyter::NxDataSummary::clear()
00045 {
00046 for (int ch=0; ch<128; ch++) {
00047 fNumEntries[ch] = 0;
00048 fFull[ch] = false;
00049 fMedian[ch] = 0.;
00050 fWidth50[ch] = 0.;
00051 fWidth80[ch] = 0.;
00052 fMin[ch] = 0.;
00053 fMax[ch] = 0.;
00054 }
00055 }
00056
00057
00059
00074 void nxyter::NxDataSummary::analyse(DistFuncArray& dfa)
00075 {
00076 for (int ch=0; ch<128; ch++) {
00077 fNumEntries[ch] = dfa[ch].numEntries();
00078 fFull[ch] = dfa[ch].full();
00079 fMedian[ch] = dfa[ch].getMedian();
00080 fWidth50[ch] = dfa[ch].getWidth(0.25);
00081 fWidth80[ch] = dfa[ch].getWidth(0.40);
00082 fMin[ch] = dfa[ch].getMin();
00083 fMax[ch] = dfa[ch].getMax();
00084 }
00085 }
00086
00087
00089
00090 void nxyter::NxDataSummary::print(std::ostream& os, int nxnum) const
00091 {
00092 os << "nx cha hits median w25-75 w10-90 min max" << std::endl;
00093 int chaseen = 0;
00094 for (int cha=0; cha<128; cha++) {
00095 int nent = numEntries(cha);
00096 if (nent == 0) continue;
00097 chaseen += 1;
00098 float med = getMedian(cha);
00099 float w50 = getWidth50(cha);
00100 float w80 = getWidth80(cha);
00101 float min = getMin(cha);
00102 float max = getMax(cha);
00103 char cpl = full(cha) ? '+' : ' ';
00104 static format fmt(" %1d %3d %6d%c %6.1f %6.1f %6.1f %4.0f %4.0f");
00105 os << fmt % nxnum % cha % nent % cpl % med % w50 % w80 % min % max << std::endl;
00106 }
00107 if (chaseen == 0) {
00108 os << std::dec << nxnum << " ... --- no hits seen for all channels ---"
00109 << std::endl;
00110 }
00111 }
00112
00113