528{
529 Int_t ifirst = h.GetXaxis()->GetFirst();
530 Int_t ilast = h.GetXaxis()->GetLast();
531 Int_t jfirst = h.GetYaxis()->GetFirst();
532 Int_t jlast = h.GetYaxis()->GetLast();
533
534 Int_t nxb= ilast + 2;
535 Int_t nyb= jlast + 2;
536 Int_t i0=ifirst;
537 Int_t j0=jfirst;
538 Double_t *buf = new Double_t[nxb*nyb]; memset(buf ,'\0', nxb*nyb*sizeof(Double_t));
539 Double_t *nbuf = new Double_t[nxb*nyb]; memset(nbuf,'\0', nxb*nyb*sizeof(Double_t));
540
541
542
543 for (int i=ifirst; i<=ilast; i++) {
544 for (int j=jfirst; j<=jlast; j++) {
545 int ib = nxb*(j0+j) + i0+i;
546 buf[ib] = h.GetBinContent(h.GetBin(i,j));
547 }
548 }
549
550 for (int i=ifirst; i<=ilast; i++) {
551 for (int j=jfirst; j<=jlast; j++) {
552
554 double sk=0;
555
556 for (
int ik=-(
eKX/2); ik<=
eKX/2; ik++) {
557 for (
int jk=-(
eKY/2); jk<=
eKY/2; jk++) {
559
560 if( i0+i+ik>=i0 && i0+i+ik<=nxb )
561 if( j0+j+jk>=j0 && j0+j+jk<=nyb ) {
562 int ib = nxb*(j0+j+jk) + i0+i+ik;
564 sk+=k;
565 }
566 }
567 }
568 nbuf[nxb*(j0+j) + i0+i] =
s/sk;
569 printf(
"%d %d %f %f %f %f\n", i, j,
s , sk, buf[nxb*(j0+j) + i0+i], nbuf[nxb*(j0+j) + i0+i]);
570 }
571 }
572
573 for (int i=ifirst; i<=ilast; i++) {
574 for (int j=jfirst; j<=jlast; j++) {
575 h.SetBinContent( i,j, nbuf[nxb*(j0+j) + i0+i] );
576 }
577 }
578
579}