[KLOE] [Offline Doc] [TRK Files]

Track Reconstruction Library

dcvxar.kloe


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.