// Simple specific histo-like classes // R. Ansari - Avril-Mai 2010 #include "qhist.h" // ----------------------------------- // -- Classe ressemblant a un histo 2D // ----------------------------------- /* --Methode-- */ QHis1D::QHis1D() : nx_(0),xmin_(0.),xmax_(0.), nhis_(0), nunder_(0), nover_(0), swunder_(0.), swover_(0.) { } /* --Methode-- */ QHis1D::QHis1D(QHis1D const& a) : nx_(a.nx_),xmin_(a.xmin_),xmax_(a.xmax_), aw_(a.aw_), nhis_(a.nhis_), nunder_(a.nunder_), nover_(a.nover_), swunder_(a.swunder_), swover_(a.swover_) { } /* --Methode-- */ QHis1D::QHis1D(r_8 xMin,r_8 xMax,int_4 nxb) : nx_(0),xmin_(0.),xmax_(0.), nhis_(0), nunder_(0), nover_(0), swunder_(0.), swover_(0.) { Define(xMin, xMax, nxb); } /* --Methode-- */ void QHis1D::Define(r_8 xMin,r_8 xMax,int_4 nxb) { nx_=nxb; xmin_=xMin; xmax_=xMax; dxb_=(xmax_-xmin_)/(double)nx_; sa_size_t sz[5]; sz[0]=nx_; aw_.ReSize(1,sz); nhis_=nunder_=nover_=0; swunder_=swover_=0.; return; } /* --Methode-- */ sa_size_t QHis1D::Add(r_8 x, r_8 w) { sa_size_t ix = (sa_size_t)((x-xmin_)/dxb_); if (ix<0) { nunder_++; swunder_+=w; return 0.; } if (ix>=nx_) { nover_++; swover_+=w; return 0.; } nhis_++; aw_(ix) += w; return nhis_; } Histo QHis1D::Convert() { Histo h(xmin_,xmax_,nx_); for(sa_size_t i=0; i" << max << " @" << imx*dxb+xmin << "," << jmx*dyb+ymin << "\n ...Min:" << imn << "," << jmn << " ->" << min << " @" << imn*dxb+xmin << "," << jmn*dyb+ymin << endl; return h2; }