SUBROUTINE HSUM(IHIS,MIN,MAX,SUM,SUM1,SUM2) C PROGRAM CALCULATES QUANTITIES FOR HISTOGRAM IHIS FROM CHAN MIN,MAX C SUM = TOT # COUNTS, SUM1 = CENTROID, SUM2 = WIDTH INTEGER*4 IN2 COMMON /SCRAT/ I,J,IN2,IX,IY,IX0,IXS,IY0,IYS,JUMP SUM = 0. ! Clear temporary quantities SUM1 = 0. SUM2 = 0. IN2 = 0 CALL HSTAT(IHIS,IX,IY,IXS,IX0,IYS,IY0,JUMP) ! Hist status IF(IX .LE. 0) RETURN ! Hist not exist ? DO 10 I = MIN,MAX,JUMP ! Do sum over all chan between MIN,MAX CALL HGET(IHIS,IA,I,JUMP,IJ) ! Get 1 value IF(IJ .LT. JUMP) GO TO 10 ! No data ? TEMP = IN2 ! Get floatin value CHAN = (I - 1)/JUMP ! The channel number SUM = SUM + TEMP ! Area under curve SUM1 = SUM1 + TEMP * CHAN ! First moment SUM2 = SUM2 + TEMP * CHAN**2 ! Second moment 10 CONTINUE IF(SUM .EQ. 0.) RETURN SUM2 = SUM2 - SUM1**2/SUM ! Now is second moment SUM2 = SUM2/SUM ! Variance SUM2 = SSQRT(SUM2) ! Standard deviation SUM1 = SUM1 / SUM ! Average channel number (median) SUM1 =(SUM1+.5)*IXS + IX0 ! Convert to scaled average SUM2 = SUM2 *IXS*2.355 ! Convert to Full-width-at-half-max RETURN END