2.
Peaks finder: loop over 36 strips in one layer, produces sorted list of 1-dim
peaks with
energy above Õpeak_threshold'
npeak = 0;
for(i=0; i<36; i++) {
if(strip[i].energy >
strip_threshold) {
if(strip1 == 0)
strip1 = i;
nstrip++;
sumadc = sumadc
+ strip[i].energy;
str = str + (i+0.5)*strip[i].energy;
rstrip = rstrip
+ (i+0.5)*(i+0.5)*strip[i].energy;
sumtdc = sumtdc
+ strip[i].time;
if(i >= max
|| strip[i+1].energy <= strip_threshold) {
npeak++;
str
= str/sumadc;
peak[npeak].strip1 = strip1;
peak[npeak].stripn = nstrip;
peak[npeak].coord =
str;
peak[npeak].energy = sumadc;
peak[npeak].time =
sumtdc/nstrip;
rstrip = rstrip/sumadc - str*str;
rstrip = (rstrip > (1./12.)) ? rstrip : (1./12.);
peak[npeak].width = sqrt(rstrip);
strip1 = 0;
nstrip = 0;
str = 0.0;
sumadc = 0.0;
sumtdc = 0.0;
rstrip = 0.0;
}
}
}
npeak++;
qsort((void *)peak, npeak,
sizeof(ECPeak), (int (*) (const void *, const void *))peak_compare);
npeak = 0;
while(peak[npeak].energy >
peak_threshold) npeak++;