*-- Author : S.J. Maxfield
SUBROUTINE FPFPUX
*-----------------------------------------------------------*
* Print output banks from Forward Pattern recognition *
* in readable form. *
*-----------------------------------------------------------*
*KEEP,BCS.
INTEGER NHROW,NHCOL,NHLEN
PARAMETER (NHROW = 2, NHCOL = 1, NHLEN=2)
INTEGER NBOSIW
PARAMETER (NBOSIW=1000000)
INTEGER IW(NBOSIW)
REAL RW(NBOSIW)
COMMON /BCS/ IW
EQUIVALENCE (RW(1),IW(1))
SAVE /BCS/
*KEEP,BOSMDL.
C ------BOSMDL
LOGICAL BEGJOB,ENDRUN,BEGRUN,REVENT,ENDJOB,OTHDAT
COMMON/BOSMDL/BEGJOB,ENDRUN,BEGRUN,REVENT,ENDJOB,OTHDAT,
+ LCCRUN,NCCRUN,NEVENT,
+ IHA,IBS,IDB,IDATEL,LUP,ISN,JSN
SAVE /BOSMDL/
C ------
*KEEP,H1EVDT.
COMMON /H1EVDT/ KEVENT,IDATA,MONTE,LCONF
INTEGER KEVENT,IDATA,LCONF
LOGICAL MONTE
*
* IDATA type of information (HEAD bank word 6) :
*
* 0 - real data H1
* 1 - MC data H1SIM
* 2 - real data CERN tests
* 3 - MC data ARCET
*
* MONTE = .TRUE. if IDATA=1
* KEVENT = event processed counter for H1REC
*
*KEND.
COMMON /FPFRWW/ INDFPD
*KEEP,STFUNCT.
* index of element before row number IROW
INDR(IND,IROW)=IND+2+IW(IND+1)*(IROW-1)
* index of L'th element of row number IROW
INDCR(IND,L,IROW)=INDR(IND,IROW) + L
* L'th integer element of the IROW'th row of bank with index IND
IBTAB(IND,L,IROW)=IW(INDCR(IND,L,IROW))
* L'th real element of the IROW'th row of bank with index IND
RBTAB(IND,L,IROW)=RW(INDCR(IND,L,IROW))
*KEND.
NBN = 0
IND = NLINK('FPUX',NBN)
IF (IND .EQ. 0) THEN
WRITE(6,*) ' FPFPUX>> FPUX Bank not found in event ',NEVENT
RETURN
ENDIF
INDFPD=0
CALL BKTOW(IW,'FPUX',NBN,IW,INDFPD,*900)
NROW = IW(INDFPD+2)
WRITE(6,'('' '')')
WRITE(6,'(/,10X,'' ------ FPUX BANK: Event'',I10,
+ 3X,I4,'' hits -------'')')
+ NEVENT,NROW
WRITE(6, '('' Hit Next Sgn'',
+ '' '','' Hit Next Sgn'',
+ '' '','' Hit Next Sgn'')')
MROW = NROW/3
KMORE= NROW-3*MROW
J2 = MROW
IF(KMORE.NE.0) J2 = J2 + 1
J3 = MROW*2 + KMORE
IF(MROW.GT.0) THEN
DO 6 J= 1,MROW
WRITE(6,'( 3(1X,I6),3X,3(1X,I6),3X,3(1X,I6) )')
+ J ,(IBTAB(INDFPD,K,J ), K=1,2),
+ J+J2,(IBTAB(INDFPD,K,J+J2), K=1,2),
+ J+J3,(IBTAB(INDFPD,K,J+J3), K=1,2)
6 CONTINUE
ENDIF
IF(KMORE.EQ.1) THEN
J= MROW + 1
WRITE(6,'( 3(1X,I6) )')
+ J ,(IBTAB(INDFPD,K,J ), K=1,2)
ENDIF
IF(KMORE.EQ.2) THEN
J= MROW + 1
WRITE(6,'(3(1X,I6),3X,3(1X,I6))')
+ J ,(IBTAB(INDFPD,K,J ), K=1,2),
+ J+J2,(IBTAB(INDFPD,K,J+J2), K=1,2)
ENDIF
CALL WDROP(IW,INDFPD)
RETURN
* Error condition...
900 CONTINUE
WRITE(6,*) ' FPFPUX >> Error in Work Bank Creation'
RETURN
END
*