*-- Author : S.J. Maxfield
SUBROUTINE FPTINT
**: FPTINT.......SM. Pick up pattern recognition parameters from bank.
**----------------------------------------------------------------------
*=====================================================================*
* *
* This routine performs several initialisation functions for the *
* Forward tracker reconstruction. Parameters, flags etc are read *
* from the following banks:- *
* *
* FRCS - Diagnostic flags *
* FPRP - Flags and parameters used by pattern recognition *
* FPPP - Flags and parameters used by pattern recognition *
* *
* Calls FTDGEO - initialise geometry etc. for IOS *
* FTCORG - initialise geometrical constants - create FRG1 *
* FPG1 *
* *
*=====================================================================*
*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,CNSTBF.
INTEGER LW(NBOSIW)
REAL SW(NBOSIW)
EQUIVALENCE (RW(1),IW(1),LW(1),SW(1))
*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.
*
*KEEP,FGMIOS.
COMMON/FGMIOS/
* Planar geometry
+ ZPP(140),C(140),S(140),ITYPE(140),WZERO(140),WSPACE,
*
* Radial geometry
+ ZP(36),PHW(36),WS(36)
*
*KEEP,FPLGEO.
C---
COMMON /FPLGEO/ ZPLAN(36) , TP(9) , YP(26) , PLANE(3,9),
1 RMAX , RMIN , YSTART , YSPACE ,
2 X0 , Y0 , PZSTRU (8), STAGER ,
3 RESOL , ACUT , CTP(9) , STP(9)
C---
*KEEP,FPTVTX.
COMMON/VERTVV/ZV ,XVV,YVV
**the common/VERTEX/ becomes /VERTVV/ (in analogy to /VERTFF/) on the
** 17/6/91, since it is in conflict with the VERTEX module (g.bernardi)
** (note that all these common names should start by F in this deck...)
*KEEP,FDIFLG.
COMMON/LDIAG/IDIAG,IDIAG2,MAXPRT,IDOHIS,PMCUT
*KEEP,FRWERR.
COMMON /WERR/ERRVL,ERRV,ERRP,ERRRX
*KEEP,FPTFLG.
COMMON/FPTFLG/IPLAR, NIT, IREZ, LUNFP, NPLMAX
*KEEP,FPTPAR.
COMMON/FPTPAR/PCUT1, PCUT2, PCUT3, CXP, CYP,
+ DRPCT1, DRPCT2, DRPCT3,
+ DRCUT1, DRCUT2, DRCUT3
*KEEP,FSGPAR.
COMMON/FSGPAR/DMINX, PHIT, TSCUT, SLCUT, RCUT, TSLPC,
+ MINHTS, MINPTS, MAXCLU, LSCUT, NWIRES, IPLOT
*KEEP,FJNPAR.
COMMON/FJNPAR/
+ CHT3, CHT12, CHT23, CHT13,
+ PCT3, PCT12, PCT23, PCT13,
+ PSC3, PSC12, PSC23, PSC13,
+ RCT3, RCT12, RCT23, RCT13
*KEEP,FPJPAR.
COMMON/FPJPAR/
+ RRCUT1, RRCUT2, RRCUT3,
+ PLCC3, PLCC12, PLCC23, PLCC13
*KEND.
PARAMETER(TWOPI=6.2831853)
* Access Steering (Diagnostics, Histograms etc.)
*
*
CALL UGTBNK('FRCS',INDRCS)
IF(INDRCS.EQ.0) THEN
* Assume no diagnostics wanted but give warning...
CALL ERRLOG(108,'F:FPTINT: No FRCS bank found. Defaults taken')
IDIAG = 0
IDIAG2= 0
MAXPRT= 0
IDOHIS= 0
IREZ = 0
* Unit number for HBOOK Histogram output.
LUNFP = 17
* Diagnostics applied only if measured momentum greater than...
PMCUT = 10000.
ELSE
IVERS1= LW(INDRCS + 1)
IF(IVERS1 .EQ. 290492) THEN
IDIAG = LW(INDRCS + 2)
IDIAG2= LW(INDRCS + 3)
MAXPRT= LW(INDRCS + 4)
IDOHIS= LW(INDRCS + 5)
IREZ = LW(INDRCS + 6)
PMCUT = SW(INDRCS + 7)
ELSE
CALL ERRLOG(109,'F:FPTINT: Wrong FRCS version. Defaults taken')
ENDIF
ENDIF
* Vertex. Assume at zero for now.
ZV = 0.0
XVV = 0.0
YVV = 0.0
* Cuts and parameters from FPRP bank.
* Set default values...
*
* Drift and radial coordinate errors...
ERRP = 0.04
ERRRX = 4.5
ERRV = 0.02
ERRVL = 10.0
* Cuts and parameters for FTLSEG...
* Maximum distance ( in drift) for digitising
* to be associated with cluster
* ie road width is 2.*dminx (cms.)
DMINX=0.20
* Maximum distance ( in phi ) for digitising
* to be associated with cluster = .1 cm/r approx
PHIT = 0.05
* Minimum size of cluster for starting triple finding
MINHTS = 3
* minimum number of points/track segment
MINPTS = 4
* max size of cluster for analysis
MAXCLU = 50
* ABS((D1+D3)/2 -D2 ).LT.TSCUT for triple
TSCUT = 0.1
* Max slope for triple
TSLPC = 0.5
* Slope cut for joining triples
SLCUT = 0.2
* Min length of segment before extension by projection
LSCUT = 3
* Cut in r for triple and projection
RCUT = 20.
* Number of wires in radials
NWIRES = 12
* IPLOT=0 for no diagnostic t0, rms to line seg, plots: max speed
IPLOT = 0
* Cuts and parameters for Planar pickup.
IPLAR = 1
NIT = 3
* Road widths for single point pick-up...
PCUT1 = 1.0
PCUT2 = 0.5
PCUT3 = 0.2
CXP = 0.0
CYP = 0.0
* Road widths for segment pick-up (millimetres!)
DRPCT1 = 30.
DRPCT2 = 20.
DRPCT3 = 20.
DRCUT1 = 200.
DRCUT2 = 75.
DRCUT3 = 75.
* Cuts and parameters for radial segment linking...
CHT3 = 100.0
CHT12 = 100.0
CHT23 = 100.0
CHT13 = 100.0
PCT3 = 0.04
PCT12 = 0.04
PCT23 = 0.04
PCT13 = 0.04
PSC3 = 0.002
PSC12 = 0.002
PSC13 = 0.002
PSC23 = 0.002
RCT3 = 20.0
RCT12 = 20.0
RCT23 = 20.0
RCT13 = 20.0
CALL UGTRUN('FPRP',INDPRP)
IF(INDPRP.EQ.0) THEN
* Take defaults but give warning...
CALL ERRLOG(110,'F:FPTINT: No FPRP bank found. Defaults taken')
ELSE
IVERS2= LW(INDPRP + 1)
IF(IVERS2 .EQ. 300994)THEN
ERRP = SW(INDPRP + 2)
ERRRX = SW(INDPRP + 3)
ERRV = SW(INDPRP + 4)
ERRVL = SW(INDPRP + 5)
IPLAR = LW(INDPRP + 6)
NIT = LW(INDPRP + 7)
PCUT1 = SW(INDPRP + 8)
PCUT2 = SW(INDPRP + 9)
PCUT3 = SW(INDPRP +10)
CXP = SW(INDPRP +11)
CYP = SW(INDPRP +12)
DRPCT1= SW(INDPRP +13)
DRPCT2= SW(INDPRP +14)
DRPCT3= SW(INDPRP +15)
DRCUT1= SW(INDPRP +16)
DRCUT2= SW(INDPRP +17)
DRCUT3= SW(INDPRP +18)
DMINX = SW(INDPRP +19)
PHIT = SW(INDPRP +20)
MINHTS= LW(INDPRP +21)
MINPTS= LW(INDPRP +22)
MAXCLU= LW(INDPRP +23)
TSCUT = SW(INDPRP +24)
TSLPC = SW(INDPRP +25)
SLCUT = SW(INDPRP +26)
LSCUT = LW(INDPRP +27)
RCUT = SW(INDPRP +28)
NWIRES= LW(INDPRP +29)
IPLOT = LW(INDPRP +30)
CHT3 = SW(INDPRP +31)
CHT12 = SW(INDPRP +32)
CHT23 = SW(INDPRP +33)
CHT13 = SW(INDPRP +34)
PCT3 = SW(INDPRP +35)
PCT12 = SW(INDPRP +36)
PCT23 = SW(INDPRP +37)
PCT13 = SW(INDPRP +38)
PSC3 = SW(INDPRP +39)
PSC12 = SW(INDPRP +40)
PSC13 = SW(INDPRP +41)
PSC23 = SW(INDPRP +42)
RCT3 = SW(INDPRP +43)
RCT12 = SW(INDPRP +44)
RCT23 = SW(INDPRP +45)
RCT13 = SW(INDPRP +46)
ELSE
CALL ERRLOG(111,'F:FPTINT: Wrong FPRP version. Defaults taken')
ENDIF
ENDIF
* Errors and cuts used in pattern recognition in Planars(RWCH)
RESOL = 0.24
ACUT = 7.0
RMIN = 185.0
RMAX = 755.0
NPLMAX = 10000
* Cuts used in planar-planar linking.
RRCUT1 = 5.0
RRCUT2 = 1.0
RRCUT3 = 1.0
PLCC3 = 100.0
PLCC12 = 100.0
PLCC23 = 100.0
PLCC13 = 100.0
CALL UGTBNK('FPPP',INDPPP)
IF(INDPPP.EQ.0) THEN
* Take defaults but give warning...
CALL ERRLOG(112,'F:FPTINT: No FPPP bank found. Defaults taken')
ELSE
IVERS3= LW(INDPPP + 1)
IF(IVERS3 .EQ. 11194) THEN
RESOL = SW(INDPPP + 2)
ACUT = SW(INDPPP + 3)
RMIN = SW(INDPPP + 4)
RMAX = SW(INDPPP + 5)
NPLMAX= LW(INDPPP + 6)
RRCUT1= SW(INDPPP + 7)
RRCUT2= SW(INDPPP + 8)
RRCUT3= SW(INDPPP + 9)
PLCC3 = SW(INDPPP +10)
PLCC12= SW(INDPPP +11)
PLCC23= SW(INDPPP +12)
PLCC13= SW(INDPPP +13)
ELSE
CALL ERRLOG(113,'F:FPTINT: Wrong FPPP version. Defaults taken')
ENDIF
ENDIF
* One small consistency check:-
IF(IDOHIS .EQ. 0 .AND. IREZ .NE. 0) THEN
IREZ=0
ENDIF
* Fill COMMONS FRDGEO and FPLGEO with nominal geometry...
* ...and set up Geometry by wire plane number for IOS
CALL FTDGEO
* Create corrected geometry banks FRG1 and FPG1...
CALL FTCORG
WRITE(6,*)
+ ' '
WRITE(6,*)
+ ' '
WRITE(6,*)
+ '+----------------------------------------------------------+'
WRITE(6,*)
+ ' FTREC Steering parameters and flags '
WRITE(6,*)
+ ' ===== ======== ========== === ===== '
WRITE(6,*)
+ ' '
WRITE(6,*)
+ '--------- FRCS Steering Flags ------------------- '
WRITE(6,'(A50,I10)')
+ ' Bank version number ', IVERS1
WRITE(6,'(A50,I10)')
+ ' DIAGNOSTIC print FLAG 0 = None;1=more;2=yet more ', IDIAG
WRITE(6,'(A50,I10)')
+ ' DIAGNOSTIC print FLAG 1 = single line per event ', IDIAG2
WRITE(6,'(A50,I10)')
+ ' Number of events for diag print out ', MAXPRT
WRITE(6,'(A50,I10)')
+ ' Histograms 0=off 1=some 2=more(lots) ', IDOHIS
WRITE(6,'(A50,I10)')
+ ' Additional residual histograms if >0 ', IREZ
WRITE(6,'(A50,F10.3)')
+ ' PMCUT (GeV) - no diags if pmeas < PMCUT ', PMCUT
WRITE(6,*)
+ ' '
WRITE(6,*)
+ '--------- FPRP Parameters ------------------- '
WRITE(6,'(A50,I10)')
+ ' Bank version number ', IVERS2
WRITE(6,'(A50,F10.3)')
+ ' Nominal drift coordinate error ', ERRP
WRITE(6,'(A50,F10.3)')
+ ' Nominal radial coordinate error ', ERRRX
WRITE(6,'(A50,F10.3)')
+ ' Nominal vertex error ', ERRV
WRITE(6,'(A50,F10.3)')
+ ' Nominal verex error 2 ', ERRVL
WRITE(6,'(A50,I10)')
+ ' IPLAR Pick up planar points as:- ', IPLAR
WRITE(6,'(A50,I10)')
+ ' NIT Number of iterations in point pick-up ', NIT
WRITE(6,'(A50,F10.3)')
+ ' PCUT1 ) (mm) ', PCUT1
WRITE(6,'(A50,F10.3)')
+ ' PCUT2 ) road widths for planar point pick-up ', PCUT2
WRITE(6,'(A50,F10.3)')
+ ' PCUT3 ) ', PCUT3
WRITE(6,'(A50,F10.3)')
+ ' CXP ) planar displacements. ', CXP
WRITE(6,'(A50,F10.3)')
+ ' CYP ) ', CYP
WRITE(6,'(A50,F10.3)')
+ ' DRPCT1 ) ', DRPCT1
WRITE(6,'(A50,F10.3)')
+ ' DRPCT2 ) r-Phi road for segment pick-up ', DRPCT2
WRITE(6,'(A50,F10.3)')
+ ' DRPCT3 ) ', DRPCT3
WRITE(6,'(A50,F10.3)')
+ ' DRCUT1 ) ', DRCUT1
WRITE(6,'(A50,F10.3)')
+ ' DRCUT2 ) Max allowed r-sep ', DRCUT2
WRITE(6,'(A50,F10.3)')
+ ' DRCUT3 ) ', DRCUT3
*
WRITE(6,'('' '')')
WRITE(6,'(10X,'' Ftlseg Cuts:-'')')
WRITE(6,'(10X,'' ====== ====:-'')')
WRITE(6,'(A50,F10.3)')
+ ' DMINX Max dist in drift digi->cluster ', DMINX
WRITE(6,'(A50,F10.3)')
+ ' PHIT Max dist in Phi digi->cluster ', PHIT
WRITE(6,'(A50,I10)')
+ ' MINHTS Min cluster size to start triple ', MINHTS
WRITE(6,'(A50,I10)')
+ ' MINPTS Min points per radia segment ', MINPTS
WRITE(6,'(A50,I10)')
+ ' MAXCLU Max size of cluster for analysis ', MAXCLU
WRITE(6,'(A50,F10.3)')
+ ' TSCUT abs( (d1+d3)/2 - d2 )