112 INTEGER(mpi),
INTENT(IN) :: ih
113 REAL(mps),
INTENT(IN) :: xa
114 REAL(mps),
INTENT(IN) :: xb
115 CHARACTER (LEN=*),
INTENT(IN) :: text
116 INTEGER(mpi),
PARAMETER :: numhis=15
117 INTEGER(mpi) :: inhist(120,numhis)
118 INTEGER(mpi) ::jnhist(5,numhis)
119 INTEGER(mpi) ::khist(numhis)
120 REAL(mps) :: fnhist(120,numhis)
121 equivalence(inhist(1,1),fnhist(1,1))
122 INTEGER(mpi) :: kvers(numhis)
123 REAL(mps) :: xl(6,numhis)
124 REAL(mpd):: dl(2,numhis)
125 CHARACTER (LEN=60):: htext(numhis)
127 DATA khist/numhis*0/,lun/7/
129 IF(ih <= 0.OR.ih > numhis)
RETURN
140 IF(xa /= xb) xl(3,ih)=120.0/(xb-xa)
142 IF(khist(ih) == 0)
THEN
145 kvers(ih)=kvers(ih)+1
153 entry hmpldf(ih,text)
154 IF(ih <= 0.OR.ih > numhis)
RETURN
161 IF(khist(ih) == 0)
THEN
164 kvers(ih)=kvers(ih)+1
173 IF(ih <= 0.OR.ih > numhis)
RETURN
174 IF(khist(ih) /= 1)
RETURN
175 IF(jnhist(4,ih) >= 2147483647)
RETURN
176 jnhist(4,ih)=jnhist(4,ih)+1
177 IF(jnhist(4,ih) <= 120)
THEN
178 fnhist(jnhist(4,ih),ih)=x
179 IF(jnhist(4,ih) == 120)
THEN
180 CALL hmpmak(inhist(1,ih),fnhist(1,ih),jnhist(1,ih), xl(1,ih),dl(1,ih))
188 i=int(1.0+xl(3,ih)*(x-xl(1,ih)),
mpi)
192 jnhist(j,ih)=jnhist(j,ih)+1
193 xl(4,ih)=min(xl(4,ih),x)
194 xl(5,ih)=max(xl(5,ih),x)
196 inhist(i,ih)=inhist(i,ih)+1
197 dl(1,ih)=dl(1,ih)+ x-xl(6,ih)
198 dl(2,ih)=dl(2,ih)+(x-xl(6,ih))**2
202 IF(ih <= 0.OR.ih > numhis)
RETURN
203 IF(khist(ih) /= 2)
RETURN
204 IF(jnhist(1,ih) >= 2147483647)
RETURN
206 jnhist(1,ih)=jnhist(1,ih)+1
208 IF(jnhist(4,ih) == 0) jnhist(4,ih)=ix
209 IF(jnhist(5,ih) == 0) jnhist(5,ih)=ix
210 jnhist(4,ih)=min(jnhist(4,ih),ix)
211 jnhist(5,ih)=max(jnhist(5,ih),ix)
212 i=int(1.0+20.0*log10(real(ix,mps)),
mpi)
216 IF(j == 2) inhist(i,ih)=inhist(i,ih)+1
217 jnhist(j,ih)=jnhist(j,ih)+1
226 IF(ih <= 0.OR.ih > numhis)
RETURN
231 IF(khist(ihc) /= 0)
THEN
232 IF(khist(ihc) == 1)
THEN
233 CALL hmpmak(inhist(1,ihc),fnhist(1,ihc),jnhist(1,ihc), &
236 nn=jnhist(1,ihc)+jnhist(2,ihc)+jnhist(3,ihc)
237 IF(nn /= 0.OR.khist(ihc) == 3)
THEN
239111
FORMAT(
' ______',2(
'______________________________'))
240 IF(kvers(ihc) == 1)
THEN
241 WRITE(*,*)
'Histogram',ihc,
': ',htext(ihc)
243 WRITE(*,*)
'Histogram',ihc,
'/',kvers(ihc),
': ',htext(ihc)
245 IF(khist(ihc) == 1)
THEN
246 WRITE(*,*)
' Out_low inside out_high = ', (jnhist(j,ihc),j=1,3)
247 ELSE IF(khist(ihc) == 2)
THEN
248 WRITE(*,*)
' 0_or_negative inside above_10^6 = ', &
249 (jnhist(j,ihc),j=1,3)
251 IF(khist(ihc) == 3)
THEN
252 CALL pfvert(120,fnhist(1,ihc))
254 IF(jnhist(2,ihc) /= 0)
THEN
255 CALL pivert(120,inhist(1,ihc))
256 IF(khist(ihc) == 1)
THEN
257 CALL psvert(xl(1,ihc),xl(2,ihc))
258 ELSE IF(khist(ihc) == 2)
THEN
262 IF(khist(ihc) == 1)
THEN
263 WRITE(*,*)
' Min and Max are',xl(4,ihc),xl(5,ihc)
264 IF(jnhist(2,ihc) > 1)
THEN
265 xmean=real(xl(6,ihc)+dl(1,ihc)/real(jnhist(2,ihc),mps),mps)
266 xcent=0.5*(xl(1,ihc)+xl(2,ihc))
267 xsigm=real((dl(2,ihc)-dl(1,ihc)**2/real(jnhist(2,ihc),mps)),mps)
268 xsigm=sqrt(xsigm/real(jnhist(2,ihc)-1,mps))
269 WRITE(*,*)
' Mean and sigma are', xmean,
' +-',xsigm
271 ELSE IF(khist(ihc) == 2)
THEN
272 WRITE(*,*)
' Plot of log10 of entries. Min and Max are', &
273 jnhist(4,ihc),jnhist(5,ihc)
290 IF(ih <= 0.OR.ih > numhis)
RETURN
296 IF(khist(ihc) /= 0)
THEN
297 IF(khist(ihc) == 1)
THEN
298 CALL hmpmak(inhist(1,ihc),fnhist(1,ihc),jnhist(1,ihc), &
303 WRITE(lun,201) ihc,kvers(ihc),khist(ihc)
304 WRITE(lun,204) htext(ihc)
305 IF (jnhist(1,ihc)+jnhist(2,ihc)+jnhist(3,ihc) == 0 &
306 .AND.xl(1,ihc) == xl(2,ihc))
THEN
310 WRITE(lun,202) nbin,xl(1,ihc)-0.001,xl(2,ihc)+0.001
312 WRITE(lun,202) nbin,xl(1,ihc),xl(2,ihc)
314 WRITE(lun,203) (jnhist(j,ihc),j=1,3)
315 WRITE(lun,204)
'bincontent'
316 IF(khist(ihc) == 1.OR.khist(ihc) == 2)
THEN
317 CALL kprint(lun,inhist(1,ihc),nbin)
319 WRITE(lun,219) (fnhist(i,ihc),i=1,nbin)
322 IF(khist(ihc) == 1)
THEN
323 WRITE(lun,205) xl(4,ihc),xl(5,ihc)
324 ELSE IF(khist(ihc) == 2)
THEN
325 WRITE(lun,205) real(jnhist(4,ihc),mps),real(jnhist(5,ihc),mps)
327 IF(khist(ihc) == 1)
THEN
328 IF(jnhist(2,ihc) > 1)
THEN
329 xmean=real(xl(6,ihc)+dl(1,ihc)/real(jnhist(2,ihc),mps),mps)
330 xcent=0.5*(xl(1,ihc)+xl(2,ihc))
331 xsigm=real((dl(2,ihc)-dl(1,ihc)**2/real(jnhist(2,ihc),mps)),mps)
332 xsigm=sqrt(xsigm/real(jnhist(2,ihc)-1,mps))
333 WRITE(lun,206) xmean,xsigm
336 WRITE(lun,204)
'end of histogram'
340201
FORMAT(
'Histogram ',i4,10x,
'version ',i4,10x,
'type',i2)
341202
FORMAT(10x,
' bins, limits ',i4,2g15.5)
342203
FORMAT(10x,
'out-low inside out-high ',3i10)
344205
FORMAT(
'minmax',2e15.7)
345206
FORMAT(
'meansigma',2e15.7)
605 INTEGER(mpi),
INTENT(IN) :: ig
606 INTEGER(mpi),
INTENT(IN) :: ityp
607 CHARACTER (LEN=*),
INTENT(IN) :: text
608 INTEGER(mpi),
PARAMETER :: narr=1000
609 REAL(mps) :: array(2,narr)
610 REAL(mps) ::array4(4,narr/2)
611 REAL(mps) ::array1(narr+narr)
613 equivalence(array(1,1),array4(1,1),array1(1))
614 INTEGER(mpi),
PARAMETER :: numgxy=10
615 INTEGER(mpi),
PARAMETER :: nlimit=500
616 INTEGER(mpi) :: nstr(numgxy)
617 INTEGER(mpi) ::igtp(numgxy)
618 INTEGER(mpi) ::lvers(numgxy)
619 INTEGER(mpi) ::nst(3,numgxy)
620 REAL(mps) :: xyplws(10,numgxy)
621 INTEGER(mpi) :: jflc(5,numgxy)
622 INTEGER(mpi) ::kflc(5,numgxy)
628 CHARACTER (LEN=60):: gtext(numgxy)
632 DATA start/.true./,lun/7/
646 IF(ig < 1.OR.ig > numgxy)
RETURN
647 IF(ityp < 1.OR.ityp > 5)
RETURN
648 IF(nstr(ig) == 0)
THEN
651 lvers(ig)=lvers(ig)+1
655 IF(jflc(1,ig) /= 0)
CALL stmarm(jflc(1,ig))
656 IF(kflc(1,ig) /= 0)
CALL stmarm(kflc(1,ig))
679 IF(ig < 1.OR.ig > numgxy)
RETURN
680 IF(igtp(ig) < 1.OR.igtp(ig) > 3)
RETURN
681 CALL stmapr(jflc(1,ig),x,y)
684 entry gmpxyd(ig,x,y,dx,dy)
685 IF(ig < 1.OR.ig > numgxy)
RETURN
686 IF(igtp(ig) /= 4)
RETURN
691 CALL stmadp(jflc(1,ig),four)
698 IF(ig < 1.OR.ig > numgxy)
RETURN
699 IF(igtp(ig) /= 5)
RETURN
702 IF(nst(1,ig) == 0)
THEN
705 IF(kflc(3,ig) == 0) xyplws(9,ig)=x
708 CALL stmapr(kflc(1,ig),y1,y)
709 IF(kflc(3,ig) >= kflc(5,ig))
THEN
710 CALL stmacp(kflc(1,ig),array,n)
711 CALL stmarm(kflc(1,ig))
713 CALL rmesig(array,n,xyplws(2,ig),xyplws(4,ig))
714 nst(2,ig)=nst(2,ig)+1
715 IF(nst(2,ig) == 1) xyplws(7,ig)=xyplws(9,ig)
717 xyplws(5,ig)=xyplws(5,ig)+xyplws(2,ig)
718 xyplws(6,ig)=xyplws(6,ig)+xyplws(4,ig)
719 IF(nst(2,ig) == nst(3,ig))
THEN
720 xyplws(1,ig)=0.5*(xyplws(7,ig)+xyplws(8,ig))
721 xyplws(2,ig)=xyplws(5,ig)/real(nst(3,ig),mps)
722 xyplws(3,ig)=0.5*(xyplws(8,ig)-xyplws(7,ig))
723 xyplws(4,ig)=xyplws(6,ig)/real(nst(3,ig),mps)
727 CALL stmadp(jflc(1,ig),xyplws(1,ig))
728 IF(jflc(3,ig) >= jflc(5,ig))
THEN
729 CALL stmacp(jflc(1,ig),array4,n)
731 CALL stmarm(jflc(1,ig))
733 xyplws(7,ig)=array4(1,i )-array4(3, i)
734 xyplws(8,ig)=array4(1,i+1)+array4(3,i+1)
735 xyplws(1,ig)=0.5*(xyplws(7,ig)+xyplws(8,ig))
736 xyplws(2,ig)=0.5*(array4(2,i)+array4(2,i+1))
737 xyplws(3,ig)=0.5*(xyplws(8,ig)-xyplws(7,ig))
738 xyplws(4,ig)=0.5*(array4(4,i)+array4(4,i+1))
739 CALL stmadp(jflc(1,ig),xyplws(1,ig))
741 nst(3,ig)=nst(3,ig)+nst(3,ig)
753 IF(ig <= 0.OR.ig > numgxy)
RETURN
759 IF(igtp(igc) >= 1.AND.igtp(igc) <= 3)
THEN
761 WRITE(*,*)
'Store ',igc,
': ',gtext(igc)
762 IF(jflc(4,igc) == 0)
THEN
763 WRITE(*,*)
' stored n-tuples: ',jflc(3,igc)
765 WRITE(*,*)
' stored n-tuples, not-stored n-tuples: ', &
766 jflc(3,igc),
', ',jflc(4,igc)
769 CALL stmacp(jflc(1,igc),array,na)
772 WRITE(*,102) n, array(1,n),array(2,n)
775 ELSE IF(igtp(igc) == 4)
THEN
778 WRITE(*,*)
'Store ',igc,
': ',gtext(igc)
779 IF(jflc(4,igc) == 0)
THEN
780 WRITE(*,*)
' stored n-tuples: ',jflc(3,igc)
782 WRITE(*,*)
' stored n-tuples, not-stored n-tuples: ', &
783 jflc(3,igc),
', ',jflc(4,igc)
786 CALL stmacp(jflc(1,igc),array,na)
790 WRITE(*,102) n,(array4(j,n),j=1,4)
793 ELSE IF(igtp(igc) == 5)
THEN
795 CALL stmacp(kflc(1,igc),array,n)
796 CALL stmarm(kflc(1,igc))
798 IF(nst(1,igc) == 1)
THEN
804 xyplws(7,igc)=xyplws( 9,igc)
805 xyplws(8,igc)=xyplws(10,igc)
806 CALL rmesig(array1,n,xyplws(2,igc),xyplws(4,igc))
807 wght=real(n,mps)/real(nst(3,igc)*kflc(5,igc),mps)
808 xyplws(5,igc)=xyplws(5,igc)+xyplws(2,igc)*wght
809 xyplws(6,igc)=xyplws(6,igc)+xyplws(4,igc)*wght
810 xyplws(2,igc)=xyplws(5,igc)/(real(nst(2,igc),mps)+wght)
811 xyplws(4,igc)=xyplws(6,igc)/(real(nst(2,igc),mps)+wght)
812 xyplws(1,igc)=0.5*(xyplws(7,igc)+xyplws(8,igc))
813 xyplws(3,igc)=0.5*(xyplws(8,igc)-xyplws(7,igc))
814 CALL stmadp(jflc(1,igc),xyplws(1,igc))
818 WRITE(*,*)
'Store ',igc,
': ',gtext(igc)
819 IF(jflc(4,igc) == 0)
THEN
820 WRITE(*,*)
' stored n-tuples: ',jflc(3,igc)
822 WRITE(*,*)
' stored n-tuples, not-stored n-tuples: ', &
823 jflc(3,igc),
', ',jflc(4,igc)
826 CALL stmacp(jflc(1,igc),array,na)
829 WRITE(*,102) n,(array4(j,n),j=1,4)
845 IF(ig <= 0.OR.ig > numgxy)
RETURN
850 IF(igtp(igc) == 5)
THEN
852 CALL stmacp(kflc(1,igc),array,n)
853 CALL stmarm(kflc(1,igc))
855 IF(nst(1,igc) == 1)
THEN
861 xyplws(7,igc)=xyplws( 9,igc)
862 xyplws(8,igc)=xyplws(10,igc)
863 CALL rmesig(array1,n,xyplws(2,igc),xyplws(4,igc))
864 wght=real(n,mps)/real(nst(3,igc)*kflc(5,igc),mps)
865 xyplws(5,igc)=xyplws(5,igc)+xyplws(2,igc)*wght
866 xyplws(6,igc)=xyplws(6,igc)+xyplws(4,igc)*wght
867 xyplws(2,igc)=xyplws(5,igc)/(real(nst(2,igc),mps)+wght)
868 xyplws(4,igc)=xyplws(6,igc)/(real(nst(2,igc),mps)+wght)
869 xyplws(1,igc)=0.5*(xyplws(7,igc)+xyplws(8,igc))
870 xyplws(3,igc)=0.5*(xyplws(8,igc)-xyplws(7,igc))
871 CALL stmadp(jflc(1,igc),xyplws(1,igc))
875 IF(jflc(3,igc)+jflc(4,igc) /= 0)
THEN
877 WRITE(lun,201) igc,lvers(igc),igtp(igc)
878 WRITE(lun,204) gtext(igc)
879 WRITE(lun,203) jflc(3,igc)+jflc(4,igc)
880 CALL stmacp(jflc(1,igc),array,na)
881 IF(igtp(igc) >= 1.AND.igtp(igc) <= 3)
THEN
884 WRITE(lun,205) array(1,n),array(2,n)
886 ELSE IF(igtp(igc) == 4.OR.igtp(igc) == 5)
THEN
887 WRITE(lun,204)
'x-y-dx-dy'
890 WRITE(lun,205) (array4(j,n),j=1,4)
893 WRITE(lun,204)
'end of xy-data'
896102
FORMAT(i12,4g15.7)
903201
FORMAT(
'XY-Data ',i4,10x,
'version ',i4,10x,
'type',i2)
904203
FORMAT(10x,
'stored not-stored ',2i10)