Changeset 3783 in Sophya for trunk/Cosmo/RadioBeam/mdish.cc
- Timestamp:
- Jun 16, 2010, 12:23:38 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/RadioBeam/mdish.cc
r3769 r3783 102 102 }; 103 103 104 // -----------------------------------105 // -- Classe ressemblant a un histo 2D106 // -----------------------------------107 QHis2D::QHis2D()108 : nx(0),ny(0),xmin(0),xmax(0),ymin(0),ymax(0),sumw0(0.)109 {110 ixb0 = jyb0 = 0;111 }112 QHis2D::QHis2D(r_8 xMin,r_8 xMax,int_4 nxb,r_8 yMin,r_8 yMax,int_4 nyb)113 : nx(0),ny(0),xmin(0),xmax(0),ymin(0),ymax(0),sumw0(0.)114 {115 Define(xMin, xMax, nxb, yMin, yMax, nyb);116 }117 void QHis2D::Define(r_8 xMin,r_8 xMax,int_4 nxb,r_8 yMin,r_8 yMax,int_4 nyb)118 {119 nx=nxb; ny=nyb;120 xmin=xMin; xmax=xMax;121 ymin=yMin; ymax=yMax;122 dxb=(xmax-xmin)/(double)nx;123 dyb=(ymax-ymin)/(double)ny;124 sa_size_t sz[5]; sz[0]=nx; sz[1]=ny;125 aw.ReSize(2,sz);126 SetZeroBin();127 sumw0=0.;128 return;129 }130 double QHis2D::Add(r_8 x, r_8 y, r_8 w, bool fgfh)131 {132 sa_size_t ix = (sa_size_t)((x-xmin)/dxb);133 sa_size_t jy = (sa_size_t)((y-ymin)/dyb);134 if ((ix<0)||(ix>=nx)||(jy<0)||(jy>=ny)) return 0.;135 double rw = ((ix==ixb0)&&(jy==jyb0)) ? w : 0.;136 sumw0 += rw;137 if (fgfh) aw(ix,jy) += w;138 return rw;139 }140 void QHis2D::SetZeroBin(r_8 x, r_8 y)141 {142 ixb0 = (sa_size_t)((x-xmin)/dxb);143 jyb0 = (sa_size_t)((y-ymin)/dyb);144 }145 Histo2D QHis2D::Convert()146 {147 int_4 imn,jmn,imx,jmx;148 r_8 min = aw(0,0);149 r_8 max = aw(0,0);150 imn=jmn=imx=jmx=0;151 Histo2D h2(xmin,xmax,nx,ymin,ymax,ny);152 for(int_4 j=0; j<ny; j++)153 for(int_4 i=0; i<nx; i++) {154 h2(i,j) = aw(i,j);155 if (aw(i,j)>max) {156 imx=i; jmx=j; max=aw(i,j);157 }158 if (aw(i,j)<min) {159 imn=i; jmn=j; min=aw(i,j);160 }161 }162 cout << "QHis2D::Convert()/Info: Nx,Ny=" << nx << "," << ny << " SumW=" << sumw0163 << "\n ... Max:" << imx << "," << jmx << " ->" << max164 << " @" << imx*dxb+xmin << "," << jmx*dyb+ymin165 << "\n ...Min:" << imn << "," << jmn << " ->" << min166 << " @" << imn*dxb+xmin << "," << jmn*dyb+ymin << endl;167 return h2;168 }169 104 170 105 //----------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.