[3783] | 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);
|
---|
[3947] | 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 |
|
---|
[3783] | 58 | Histo2D Convert();
|
---|
| 59 |
|
---|
[3947] | 60 | protected:
|
---|
[3783] | 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
|
---|