| 1 | //  Simple specific histo-like classes | 
|---|
| 2 | //  R. Ansari - Avril-Mai 2010 | 
|---|
| 3 |  | 
|---|
| 4 | #ifndef QHIST_SEEN | 
|---|
| 5 | #define QHIST_SEEN | 
|---|
| 6 |  | 
|---|
| 7 | #include "histats.h"       // SOPHYA .h | 
|---|
| 8 |  | 
|---|
| 9 | #include "machdefs.h"      // SOPHYA .h | 
|---|
| 10 | #include "sopnamsp.h"      // SOPHYA .h | 
|---|
| 11 | #include <iostream> | 
|---|
| 12 |  | 
|---|
| 13 | #include "histats.h"       // SOPHYA .h | 
|---|
| 14 |  | 
|---|
| 15 | // ----------------------------------- | 
|---|
| 16 | // -- Classe ressemblant a un histo 1D | 
|---|
| 17 | class QHis1D { | 
|---|
| 18 | QHis1D(); | 
|---|
| 19 | QHis1D(QHis1D const& a); | 
|---|
| 20 | QHis1D(r_8 xMin,r_8 xMax,int_4 nxBin); | 
|---|
| 21 | void Define(r_8 xMin,r_8 xMax,int_4 nxBin); | 
|---|
| 22 | sa_size_t Add(r_8 x, r_8 w=1.); | 
|---|
| 23 | inline double WBinX() { return dxb_; } | 
|---|
| 24 | inline double NBinX() { return nx_; } | 
|---|
| 25 |  | 
|---|
| 26 | Histo Convert(); | 
|---|
| 27 |  | 
|---|
| 28 | r_8 xmin_,xmax_; | 
|---|
| 29 | r_8 dxb_; | 
|---|
| 30 | sa_size_t nx_; | 
|---|
| 31 | TArray<r_8> aw_; | 
|---|
| 32 | sa_size_t nhis_, nunder_, nover_; | 
|---|
| 33 | r_8 swunder_, swover_ ; | 
|---|
| 34 | }; | 
|---|
| 35 |  | 
|---|
| 36 | // ----------------------------------- | 
|---|
| 37 | // -- Classe ressemblant a un histo 2D | 
|---|
| 38 | class QHis2D { | 
|---|
| 39 | public: | 
|---|
| 40 | QHis2D(); | 
|---|
| 41 | QHis2D(r_8 xMin,r_8 xMax,int_4 nxBin,r_8 yMin,r_8 yMax,int_4 nyBin); | 
|---|
| 42 | void Define(r_8 xMin,r_8 xMax,int_4 nxBin,r_8 yMin,r_8 yMax,int_4 nyBin); | 
|---|
| 43 | double Add(r_8 x, r_8 y, r_8 w, bool fgfh); | 
|---|
| 44 | void SetZeroBin(r_8 x=0, r_8 y=0); | 
|---|
| 45 | inline r_8 WBinX() { return dxb; } | 
|---|
| 46 | inline r_8 WBinY() { return dyb; } | 
|---|
| 47 | inline sa_size_t NBinX() { return nx; } | 
|---|
| 48 | inline sa_size_t NBinY() { return ny; } | 
|---|
| 49 | inline r_8 X(sa_size_t i) { return (dxb*((double)i+0.5)+xmin); } | 
|---|
| 50 | inline r_8 Y(sa_size_t j) { return (dyb*((double)j+0.5)+ymin); } | 
|---|
| 51 | inline r_8 operator()(sa_size_t i, sa_size_t j) { return aw(i,j); } | 
|---|
| 52 |  | 
|---|
| 53 | inline void GetMinMax(r_8& min, r_8& max) { return aw.MinMax(min,max); } | 
|---|
| 54 |  | 
|---|
| 55 | inline double SumWBinZero() { return sumw0; } | 
|---|
| 56 | void Renormalize(r_8 mfac=1.) { aw*=mfac; } | 
|---|
| 57 |  | 
|---|
| 58 | Histo2D Convert(); | 
|---|
| 59 |  | 
|---|
| 60 | protected: | 
|---|
| 61 | r_8 xmin,xmax,ymin,ymax; | 
|---|
| 62 | r_8 dxb,dyb; | 
|---|
| 63 | sa_size_t nx,ny; | 
|---|
| 64 | sa_size_t ixb0, jyb0; | 
|---|
| 65 | TArray<r_8> aw; | 
|---|
| 66 | double sumw0; | 
|---|
| 67 | }; | 
|---|
| 68 |  | 
|---|
| 69 |  | 
|---|
| 70 | #endif | 
|---|