C =================================================================
C DCVXAR - A module implementing the ARGUS Vertex Fit for KLOE
C =================================================================
C
C Language:-
C ==========
C KLOE Fortran
C
C Modulename:-
C ============
C DCVXAR.KLOE
C
C Description:-
C =============
C This is an A_C Normal Module which contains all entries to run
C the ARGUS Vertex fit procedure on KLOE events
C
C DCVINI Initialize input program at start of job.
C DCVRIN Run Initialization Entry.
C DCVEVT Event Entry.
C DCVRFI Run End Entry.
C DCVFIN Cleanup for job termination.
C DCVBOO Histogram/ntuple booking
C DCVTLK Talk module
C
C Author:-
C ========
C F. Donno & F. Pelucchi
C KLOE Computing Group
C LNF Frascati
C
C Revision History:-
C ==================
C 10 Nov 1995 Original Creation
C
SUBROUTINE DCVINI
C =================
$$IMPLICIT
C
C Description:-
C =============
C This routine is called at program initialisation time.
C
C Call Parameters:-
C ================
C None
C
C Return Parameters:-
C ===================
C None
C
C Function Value:-
C ================
C None
C
C Global Declarations:-
C =====================
$$INCLUDE 'S_I$LIBRARY:NOARGINC.INC'
$$INCLUDE 'K$ITRK:CFLAGS.INC'
C
INTEGER GROUP,MENUID1,MENUID2,MENUID3
COMMON /VTXTLK/ GROUP,MENUID1,MENUID2,MENUID3
C
C External Functions:-
C ====================
INTEGER UIDFFI
C
C Local Declarations:-
C ====================
INTEGER STATUS
C
C Executable Code:-
C =================
C
C The Default operation mode is to run the vertex fit
C
VERT_FIT = .TRUE.
C
C Read DCVTLK Definition File
C ===========================
STATUS = UIDFFI('K$TRK:DCVTLK.UID',GROUP,MENUID1,
& N$A,N$A,MENUID3,N$A)
IF (MENUID3.GT.MENUID1) THEN
MENUID2=MENUID1+1
ENDIF
C
RETURN
END
C
SUBROUTINE DCVRIN
C =================
$$IMPLICIT
C
C Description:-
C =============
C This routine is called at run initialisation time.
C No actions at present
C
C Call Parameters:-
C ================
C None
C
C Return Parameters:-
C ===================
C None
C
C Function Value:-
C ================
C None
C
C Global Declarations:-
C =====================
C
C External Functions:-
C ====================
C
C None
C
C Local Declarations:-
C ====================
C
C Executable Code:-
C =================
C
RETURN
END
C
SUBROUTINE DCVEVT
C =================
$$IMPLICIT
C
C Description:-
C =============
C This routine applies the actual calibration algorythm for each event.
C
C Call Parameters:-
C ================
C None
C
C Return Parameters:-
C ===================
C None
C
C Function Value:-
C ================
C None
C
C Global Declarations:-
C =====================
$$INCLUDE 'K$INC:BCS.INC'
$$INCLUDE 'K$INC:BPOYBS.INC'
$$INCLUDE 'K$INC:JOBSTA.INC'
$$INCLUDE 'K$INC:ERLEVL.INC'
$$INCLUDE 'YBOS$LIBRARY:ERRCOD.INC'
$$INCLUDE 'K$ITRK:CFLAGS.INC'
$$INCLUDE 'K$ITRK:DCHD.INC'
C
C
C External Functions:-
C ====================
INTEGER BLOCAT,BLIST,BDROP
C
C
C Local Declarations:-
C ====================
INTEGER STATUS,INDH,INDDATH
C
C
C Executable Code:-
C =================
C
C
C Now locate the drift chamber header bank
STATUS = BLOCAT(IW,'DCHD',1,INDH,INDDATH)
IF (STATUS.EQ.YESUCC) THEN
INDH = INDDATH + IW(INDDATH+DCHHDS)
ELSE
CALL ERLOGR('ATFMOD',ERWARN,0,0,
+ 'DC Header Bank not found!')
RETURN
ENDIF
C
C Vertex fit will now be performed
C ================================
IF (VERT_FIT) THEN
STATUS = BDROP(IW,'DVFS')
CALL VXMAIN
C
STATUS = BLIST(IW,'A+','DVFS')
IF (STATUS .NE. YESUCC) THEN
CALL ERLOGR('ATFEVT',ERWARN,0,STATUS,
& 'DVFS banks not added to A list')
ENDIF
C
C It is complicated to shove this into VXMAIN: VXMAIN is a mess.
STATUS = BLOCAT(IW,'DCHD',1,INDH,INDDATH)
IF (STATUS .NE. YESUCC) THEN
CALL ERLOGR('ATFEVT',ERWARN,0,STATUS,
& 'DCHD bank not found!?')
RETURN
ELSE
INDH = INDDATH+IW(INDDATH+DCHHDS)
IW(INDH+DCHVTX) = NHDVTX
ENDIF
ENDIF
C
CC PRINT 100, ' Run N.',NRUN, ' Event N.',NEV,
CC + ' Tracks:', IW(INDH+DCHTRK),
CC + ' Vertices:',IW(INDH+DCHVTX)
CC 100 FORMAT (A7,I8,A9,I8,A8,I4,A10,I4)
C
RETURN
END
C
SUBROUTINE DCVRFI
C =================
$$IMPLICIT
C
C Description:-
C =============
C This routine is called at run termination.
C It does any necessary cleanup.
C
C Call Parameters:-
C ================
C None
C
C Return Parameters:-
C ===================
C None
C
C Function Value:-
C ================
C None
C
C Global Declarations:-
C =====================
C
C External Functions:-
C ====================
C
C Local Declarations:-
C ====================
C
C Executable Code:-
C =================
C
RETURN
END
C
SUBROUTINE DCVFIN
C =================
$$IMPLICIT
C
C Description:-
C =============
C This routine is called at program termination.
C It does any necessary cleanup.
C
C Call Parameters:-
C ================
C None
C
C Return Parameters:-
C ===================
C None
C
C Function Value:-
C ================
C None
C
C Global Declarations:-
C =====================
C
C
C External Functions:-
C ====================
C
C Local Declarations:-
C ====================
C
C Executable Code:-
C =================
C
RETURN
END
C
SUBROUTINE DCVBOO
C =================
$$IMPLICIT
C
C Description:-
C =============
C This routine is called at run initialisation.
C
C Call Parameters:-
C ================
C None
C
C Return Parameters:-
C ===================
C None
C
C Function Value:-
C ================
C None
C
C Global Declarations:-
C =====================
C
C External Functions:-
C ====================
C
C Local Declarations:-
C ====================
C
C Executable Code:-
C =================
C
CALL HBOOK1(500,'Vertex Fit INERR codes',100,0.,100.,0.)
C
RETURN
END
C
SUBROUTINE DCVTLK
C =================
$$IMPLICIT
C
C Description:-
C =============
C
C Call Parameters:-
C ================
C None
C
C Return Parameters:-
C ===================
C None
C
C Function Value:-
C ================
C None
C
C Global Declarations:-
C =====================
$$INCLUDE 'K$ITRK:CFLAGS.INC'
$$INCLUDE 'K$ITRK:CVXCUT.INC'
$$INCLUDE 'UIPACK$LIBRARY:UIERROR.INC'
$$INCLUDE 'S_I$LIBRARY:NOARGINC.INC'
C
INTEGER GROUP,MENUID1,MENUID2,MENUID3
COMMON /VTXTLK/ GROUP,MENUID1,MENUID2,MENUID3
C
C External Functions:-
C ====================
INTEGER UIUSGP,UIACME,UIGTYE
C
C Local Declarations:-
C ====================
INTEGER STATUS
CHARACTER*40 VERB
LOGICAL ANSWER
C
C Executable Code:-
C =================
C
1000 CONTINUE
STATUS = UIUSGP(GROUP,N$A)
STATUS = UIACME(MENUID1,VERB,N$A)
IF (STATUS.EQ.UIABRT) RETURN
C
C Process the VTXF choice
C =======================
IF (VERB.EQ.'VTXF') THEN
STATUS = UIGTYE(
& 'Do you want to perform vertex fitting?(yes/no)',
& VERT_FIT)
IF (VERT_FIT) THEN
TRACK_FIT = .TRUE.
ENDIF
C
C Process the VXSWF choice
C =========================
ELSEIF (VERB.EQ.'VXSWF') THEN
STATUS = UIGTYE(
& 'Swim tracks to the main vertex? (yes/no)',
& answer)
IF(ANSWER) THEN
KLKS_SWIM = 1
ELSE
KLKS_SWIM = -1
ENDIF
C
C Process the VXLOAD choice
C =======================
ELSE IF (VERB.EQ.'VXLOAD') THEN
C
C Process the RETURN choice
C =========================
ELSE IF(VERB.EQ.'RETURN') THEN
RETURN
ENDIF
C
GOTO 1000
C
END
C
[KLOE]
[Offline Doc]
[TRK Files]
Generated with Light on Thu Apr 8 13:00:16 MET DST 1999
.
Mail comments and suggestions.