296{
297 int xn[12] = { 1, -1, 0, 0, 1, 1, -1, -1, 2, 0, 0, -2 };
298 int yn[12] = { 0, 0, 1, -1, 1, -1, 1, -1, 0, 2, -2, 0 };
299
300 int nc = h->GetNbinsX();
301 int nr = h->GetNbinsY();
302 float pix,pp;
303
304 float s4, s8;
305 printf("hist: %d %d\n",nc,nr);
306
307 int npeaks=0;
308 for(int ic=2; ic<nc-3; ic++) {
309 for(int ir=2; ir<nr-3; ir++) {
310
311 pix = h->GetBinContent(ic,ir);
312
313 if( pix < thr) goto NEXTPIX;
314 int in;
315
316 s4=0;
317 for(in=0; in<4; in++) {
318 pp = h->GetBinContent( ic+xn[in], ir+yn[in] );
319 if( pix < pp ) goto NEXTPIX;
320 s4 += pp;
321 }
322
323 s8=0;
324 for(in=4; in<12; in++) {
325 pp = h->GetBinContent( ic+xn[in], ir+yn[in] );
326 if( pix < pp ) goto NEXTPIX;
327 s8 += pp;
328 }
329 s4 /= 4.;
330 s8 /= 8.;
331 if( s4 < s8+5 ) goto NEXTPIX;
332 if( pix < s4+5 ) goto NEXTPIX;
333
334 npeaks++;
335 printf("peak12(%d,%d) = %f \t %f\t %f\n",ic,ir,pix, s4,s8);
336 h->SetBinContent(ic,ir,0,5000);
337
338 NEXTPIX:
339 continue;
340 }
341 }
342
343 return npeaks;
344}