+TITLE. *CMZ : 12/04/91 15.10.54 by Bradley Hubbard, U.C.Santa Cruz * TF - Track reconstruction control * Called from SR package +PATCH,TFDOC. *CMZ : 20/02/92 06.37.52 by Bradley Hubbard, UC Santa Cruz +DECK,HISTORY,T=TEXT. *CMZ : 20/02/92 06.37.52 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 19/11/91 History of TF package, most recent updates at the top. 20-Feb-1992 B. Hubbard 1) Add gas microstrip reconstruction (PR package) 5-Feb-1992 B. Hubbard 1) RW segment finding no longer supported 2) Some changes for RW track finding 12-Dec-1991 B. Hubbard 1) Improvements to print and draw MC particles (TFDRMC,TFPRMC). 03-Dec-1991 K. O'Shaughnessy 1) Changed sequence TFCTRL, block data TFBLKD, KUIP cdf file and TFKINI file to define a new KUIP command to ignore layers in subdetectors and modules. The bitmaps are stored in the new array LLAYER in TFCTRL and used in the TS package. 2) Account for the possibility of dropped banks in the TF printing and drawing routines TFPRTR and TFDRTR. 30-Nov-1991 B.Hubbard 1) Minor changes to some drawing routines to get impact parameter right. 18-Nov-1991 B.Hubbard 1) Add call to TSRUNB to print out TS reconstruction parameters. 2) Move call to ATINIT to TFRUNB. 10-Nov-1991 B.Hubbard 1) Add kuip command TF/DEFAULTS ON|OFF to enable or disable all default actions. +DECK,DESCRIPTION,T=TEXT. *CMZ : 20/02/92 06.39.51 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 16/09/91 TF: Combined track reconstruction package Introduction: ------------- The TF package controls track reconstruction within the SDC shell program. It combines coordinate, segment and track reconstruction code from several program packages, and provides a straightforward user interface to control its many options. The main idea is for the user to link with and run TF without detailed knowledge of what algorithms are used and have track reconstruction done in a sensible way. At present, the TF package utilizes several subpackages: TS (Silicon coordinate/segment/track reconstruction) AH (Wire/fiber hybrid segment reconstruction) AR (Straw tube segment reconstruction) AT (Combined detector track reconstruction) RW (Combined track reconstruction) TR (Fiber coordinate/combined track reconstruction) PX (Pixel coordinate/segment reconstruction) PR (Gas microstrip coordinate reconstruction) Patchy switches (xxPKG) within TF allow a subset of the above packages to be linked, provided that TF is compiled specially and not extracted from a library. That is, in general all such switches are set and all subpackages linked if a library is used, in which case the program may be excessively large. Please send comments, complaints and bug fixes to CSA::HUBBARD. How to link with the TF package: -------------------------------- To link with the TF package, the user will need to go through 2 steps. *** Note: the TF package is now called from the SR package, and not the *** US package as was done previously. Please remove calles to TF from *** us.car if there are any. *** Note: the SR package is not included in the v03 or previous releases. *** Get SR.CAR from the 'new' area, and use the most recent TF.CAR from *** 'new' or [sdcayor]. 1.) Modify the cradle file SDCSIM.CRA to include the SR package (shell reconstruction), the TF package, and the relevant subpackages. For example: (near the top, if not already there, add the line) +USE, P=SRPKG, T=EXE. (a little further down, select which TF sub packages to link) +SELF. Track reconstruction package and sub packages +USE, TFPKG, IF=SRPKG. CUSE, AHPKG, IF=TFPKG. Analysis of hybrids: M Corden +USE, ATPKG, IF=TFPKG. Analysis of tracks: M Corden +USE, TSPKG, IF=TFPKG. silicon tracking, reconstruction: B Hubbard +USE, ARPKG, IF=TFPKG. straw tube reconstruction: A Palounek CUSE, RWPKG, IF=TFPKG. straw tube reconstruction: F Leuring CUSE, TRPKG, IF=TFPKG. sci-fi reconstruction: D Adams (further down still, force compilation of TF and SR(temporarily) ) +USE, P=*TFLIB, T=EXE,TRANS, IF=TFPKG. +USE, P=*SRLIB, T=EXE,TRANS, IF=SRPKG. (add this if not already present in the +PAM lines for the frames) +PAM, LUN= 11,T=CARDS, T=ATTACH, IF=SRPKG. sdccar:sr.car (add this just above the +PAM lines for the subpackages) +PAM, LUN= 11,T=CARDS, T=ATTACH, IF=TFPKG. sdccar:tf.car 2.) Use the usual build procedure to make the SDCSIM program, described in the document SHELL_USERS_GUIDE.DOC. Command summary: ---------------- The TF package has a number of commands for choosing reconstruction options. The commands are listed below. A more extensive explanation is obtained with the command HELP TF. TF/STATUS print status of options TF/BREAK ON|OFF enable break after reconstruction TF/EVENT call event entrypoint TF/DEFAULT ON|OFF enable/disable default actions TF/DROP/EVERYTHING ON|OFF drop all reconstructed data COORDINATES drop coordinates SEGMENTS drop segments TRACKS drop tracks TF/RECONSTRUCT/COORDINATES ON|OFF reconstruct coordinates SEGMENTS reconstruct segments TRACKS reconstruct tracks TF/FIT ON|OFF fit tracks separately TF/MONITOR ON|OFF monitor reconstruction TF/DRAW/COORDINATES ... draw selected coordinates SEGMENTS segments TRACKS tracks MCTRACKS mc tracks TF/PRINT/COORDINATES print coordinate info SEGMENTS segment TRACKS track MCTRACKS mc tracks The DRAW and PRINT commands have a number of parameters, such as module/layer numbers, pt and rapidity cuts. See help for details. +DECK,SHORT,T=TEXT. *CMZ : 20/02/92 06.37.52 by Bradley Hubbard, UC Santa Cruz *-- Author : -------------------------------------------------------------------------- Package Name: TF Purpose of package: Combined track reconstruction Name of Code Manager: Bradley Hubbard, UC Santa Cruz Date of Last Update: minutes ago File name of full documentation: sdccar:tf.doc Input banks: raw data banks under /RAWD/RTRK. Output banks: reconstructed data banks under /RECO/HTRK. Default control file name: Addtional parameter file names: External package name referenced by this package: TS,AH,AT,AR,SG (for drawing) Status of released code: ------------------------ Future plans for code development and milestones: ------------------------------------------------- +PATCH, *TFLIB. *CMZ : 26/08/91 18.52.32 by Bradley Hubbard, UC Santa Cruz +DECK,TFUSE. *CMZ : 16/09/91 09.25.50 by Bradley Hubbard, UC Santa Cruz *-- Author : *-- Author : Bradley Hubbard +USE, P=TFUTIL. +USE, P=TFSUBS. +USE, P=TFDRAW. +USE, P=TFKUIP. +PATCH,TFUTIL. *CMZ : 26/08/91 18.52.47 by Bradley Hubbard, UC Santa Cruz +DECK,BLANKDEK. *CMZ : 20/02/92 11.12.13 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 26/08/91 +KEEP, TFCTRLZZ, IF=DOC. C Description: C ------------ C Control common for track reconstruction code C C Each integer*4 word contains up to 32 logical flags (0=off, 1=on) C indexed by subdetector or algorithm. C C Created : Bradley Hubbard, UC Santa Cruz 9/1/91 C Modified : C +KEEP, TFCTRL. C C Whether to drop reconstruction header info (all reconstructed data) INTEGER LDRPHD C Whether to drop reconstructed coordinates INTEGER LDRPCO C Whether to drop reconstructed segments INTEGER LDRPSG C Whether to drop TRCT combined tracks LOGICAL LDRPTR C Whether raw data is present for each system INTEGER LRAWDT C Whether to reconstruct coordinates INTEGER LRECCO C Whether to reconstruct segments INTEGER LRECSG C Whether to reconstruct tracks INTEGER LRECTR C Whether to fit tracks INTEGER LFITTR C Whether to invoke monitor code INTEGER LMONIT C Whether detector/algorithm code is linked in INTEGER LLNKDT C Bits to indicate whether or not to use layers in a C given subdetector. Have one word for each module in C each of the 16 possible subdetectors. Then each layer C in the module is one bit (use JBYT convention, bit 1 C is the lowest order bit). A value of 1 means DON'T C use the layer. Default (set in BLKDAT) is all 0. INTEGER LLAYER(3,16) C C (temporary?, make up for shell deficiency) C Whether to stop after reconstruction for viewing LOGICAL LBREAK C CHARACTER*2 CHDETI(0:31) C COMMON /TFCTRL/LDRPHD,LDRPCO,LDRPSG,LDRPTR, > LRAWDT,LRECCO,LRECSG,LRECTR,LFITTR,LMONIT, > LBREAK,LLNKDT,CHDETI,LLAYER C C Subdetector/algorithm bits. First 16 for subdetectors C These duplicate the ISDET codes C ------------------------------------------------------ C Generic detector (All detectors) Integer IDETAL Parameter (IDETAL=0) C C Silicon strip detector Integer IDETST Parameter (IDETST=1) C C Scintillating fiber detector Integer IDETSF Parameter (IDETSF=3) C C Wire fiber hybrid detector Integer IDETWF Parameter (IDETWF=5) C C Straw tube detector Integer IDETWR Parameter (IDETWR=7) C C Gas microstrip intermediate angle detector Integer IDETPM Parameter (IDETPM=9) C C Silicon pixel detector Integer IDETPX Parameter (IDETPX=11) C C Next 16 for algorithms C ---------------------- C Inclusive algorithm (generic) Integer IALGAL Parameter (IALGAL=16) C C AT track reconstruction algorithm Integer IALGAT Parameter (IALGAT=17) C C TS track reconstruction algorithm Integer IALGTS Parameter (IALGTS=18) C C AR wire segment reconstruction algorithm Integer IALGAR Parameter (IALGAR=19) C C RW wire segment and track reconstruction algorithm Integer IALGRW Parameter (IALGRW=20) C C TR fiber+silicon track reconstruction algorithm Integer IALGTR Parameter (IALGTR=21) +KEEP,TFTIME. C C Time counters for sub programs C REAL TIMERS(32,4),CPUSAV,CPUNOW COMMON /TFTIME/TIMERS,CPUSAV,CPUNOW +KEEP,TSTPAR. CA)========================================================================== C Sequence TSTPAR : Parameter description for general track bank CB)========================================================================== C Description: C ============ C This include sequence defines offsets to integer and real parameters C within the general track banks. The error matrix is a full 5 C paramter version. C C Bank version no : 2 C C Created: 14-Jun-1991 Bradley Hubbard, U.C.Santa Cruz C Modified: 10-JUL-91 KO renamed some things for general tracks C 24-Dec-91 BH add two user words at end of bank C ****** backwards incompatible change ****** C---------------------------------------------------------------------------- C Offsets to integer quantities C C Offset to track or segment ID (ISEG or ITRK) C -------------------------------------------- Integer TRTIDO Parameter (TRTIDO=1) C C Offset to number of points on track or segment (NPTS) C ----------------------------------------------------- Integer TRNPTO Parameter (TRNPTO=TRTIDO+1) C C Offset to word describing which variables used in fit (FITV) C ------------------------------------------------------------ Integer TRFTVO Parameter (TRFTVO=TRNPTO+1) C C Offset to Monte-Carlo vertex/track indicies (INDMC) C --------------------------------------------------- Integer TRMCTO Parameter (TRMCTO=TRFTVO+1) C C Number of integer words in bank C ------------------------------- Integer TRNIWD Parameter (TRNIWD=TRMCTO) C C Offsets to real quantities C C Offset to first word of track parameters C ---------------------------------------- Integer TRTPAO Parameter (TRTPAO=TRMCTO+1) C C Offset to radius of segment (not a parameter but made available) C ----------------------------------------------------------------- Integer TRRADO Parameter (TRRADO = TRTPAO) C C Offset to impact parameter (signed) C ----------------------------------- Integer TRB0O Parameter (TRB0O=TRRADO + 1) C C Offset to PHI0 C -------------- Integer TRPH0O Parameter (TRPH0O=TRB0O+1) C C Offset to curvature (signed) (RHO) C ---------------------------------- Integer TRRHOO Parameter (TRRHOO=TRPH0O+1) C C Offset to Z intercept (Z0) C -------------------------- Integer TRZ0O Parameter (TRZ0O=TRRHOO+1) C C Offset to tangent of dip angle (TANL) C ------------------------------------- Integer TRTANO Parameter (TRTANO=TRZ0O+1) C C Offset to track chi**2 (CHI2) C ----------------------------- Integer TRCH2O Parameter (TRCH2O=TRTANO+1) C C Offset to track or segment length C --------------------------------- Integer TRLENO Parameter (TRLENO=TRCH2O+1) C C Offset to fitted T0 C ------------------- Integer TRT0O Parameter (TRT0O=TRLENO+1) C C Offset to error on fitted T0 C ---------------------------- Integer TRDT0O Parameter (TRDT0O=TRT0O+1) C C Offset to start of error matrix C Integer TRERMO Parameter (TRERMO=TRDT0O+1) C C Offset to various error quantities C C Offset to C -------------------------- Integer TREBBO Parameter (TREBBO=TRERMO) C C Offsets to , C --------------------------------------------- Integer TREBPO,TREPPO Parameter (TREBPO=TREBBO+1,TREPPO=TREBPO+1) C C Offsets to , , C ----------------------------------------------------- Integer TREBRO,TREPRO,TRERRO Parameter (TREBRO=TREPPO+1,TREPRO=TREBRO+1, > TRERRO=TREPRO+1) C C Offsets to , , , C ------------------------------------------------ Integer TREBZO,TREPZO,TRERZO,TREZZO Parameter (TREBZO=TRERRO+1,TREPZO=TREBZO+1, > TRERZO=TREPZO+1,TREZZO=TRERZO+1) C C Offsets to ,,,, C C --------------------------------------------------------------------- Integer TREBTO,TREPTO,TRERTO,TREZTO,TRETTO Parameter (TREBTO=TREZZO+1,TREPTO=TREBTO+1, > TRERTO=TREPTO+1,TREZTO=TRERTO+1,TRETTO=TREZTO+1) C C The above accounts for 29 words. Two additional user words at end C make a total of 31 C C Total number of words in bank C ----------------------------- Integer TRNTWD Parameter (TRNTWD=31) C C Number of real words in track bank C --------------------------------------- Integer TRNRWD Parameter (TRNRWD=TRNTWD-TRNIWD) CD)======================================================================== +PATCH, TFSUBS. *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz +DECK,TFBLKD. *CMZ : 20/02/92 06.06.01 by Bradley Hubbard, UC Santa Cruz * Add PM detector *CMZ : 02/12/91 10.31.13 by Kathy OShaughnessy, UCSC *-- Author : Bradley Hubbard, UC Santa Cruz 10/09/91 BLOCK DATA TFBLKD CA)==================================================================== C Block data for TF track reconstruction CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 10/09/91 13.44.09, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. +SEQ,TFTIME. C Variables in argument list C Save variables C Local variables C External references C Statement functions C Local data statements CE)==================================================================== C DATA CHDETI/'AL','ST','??','SF','??','WF','??','WR', > 'PM','??','??','PX','??','??','??','??', > 'AL','AT','TS','AR','RW','TR',10*'??'/ DATA LLAYER/48*0/ DATA TIMERS/128*0.0/,CPUSAV/0./ END +DECK,TFDEFK. *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE TFDEFK CA)========================================(begin of short description) C Track reconstruction KUIP defintions. CB)-----------------------------------------(begin of long description) C C Purpose and methods : This routine is called before .CTL file C is read in by SHELL framework. In order to include control C card in .CTL, KUIP commands should be defined in this routine. C C Called by: SDC shell initialization C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 23-May-1991 Bradley Hubbard, U.C.Santa Cruz C Modified: dd-mmm-yyyy editor's name C CC)-------------------------------------------(end of long description) +SEQ,SHIMPNON. CD)----------------------------------(declare common blocks, variables) C Common blocks C+SEQ,seqname. C Variables in argument list C Save variables C Local variables C External references C Statement functions C Local data statements CE)===============================================(end of declarations) C C Set up default parameters at grand initialization CALL TFPINI C C Set up track reconstruction control KUIP commands. CALL TFKINI C C Additional KUIP commands for sub packages: C +SELF,IF=TSPKG. CALL TSDEFK +SELF. +SELF,IF=ARPKG. CALL ARDEFK +SELF. +SELF,IF=AHPKG. CALL AHDEFK +SELF. +SELF,IF=ATPKG. CALL ATDEFK +SELF. +SELF,IF=RWPKG. CALL RWDEFK +SELF. +SELF,IF=TRPKG. CALL TRDEFK +SELF. RETURN END +DECK,TFDIND. *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 16/09/91 INTEGER FUNCTION TFDIND(SDET) CA)==================================================================== C Get index in control common for subdetector SDET CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 16/09/91 08.15.10, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C C Variables in argument list CHARACTER*(*) SDET C C Save variables C Local variables INTEGER I CHARACTER*80 MESSAG C C External references C Statement functions C Local data statements CE)==================================================================== C DO I=0,31 IF (SDET(1:2).EQ.CHDETI(I)) THEN TFDIND=I RETURN END IF END DO C C Detector not found, return harmless code C WRITE(MESSAG,1000) SDET(1:2) CALL SUERR('W','0',0,'TFDIND',MESSAG) 1000 FORMAT('Unknown detector name: ',A2) TFDIND=31 RETURN END +DECK,TFDROP. *CMZ : 20/02/92 06.08.04 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 10/09/91 SUBROUTINE TFDROP CA)==================================================================== C Drop reconstructed data at beginning of reconstruction CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 10/09/91 15.10.12, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables INTEGER NBKMAX,ISTAT CHARACTER*40 BKTREE C External references INTEGER JBIT C C Statement functions C Local data statements CE)==================================================================== C C Drop reconstructed ST quantities if requested C IF (JBIT(LDRPHD,IDETST).EQ.1) THEN BKTREE = '/RECO/HTRK/STRE' CALL SZNUM1(BKTREE,NBKMAX) IF (NBKMAX.NE.0) CALL SZDRO1(BKTREE,0,ISTAT) BKTREE = '/RECO/HTRK/STIE' CALL SZNUM1(BKTREE,NBKMAX) IF (NBKMAX.NE.0) CALL SZDRO1(BKTREE,0,ISTAT) END IF C C Drop reconstructed SF quantities if requested C IF (JBIT(LDRPHD,IDETSF).EQ.1) THEN BKTREE = '/RECO/HTRK/SFRE' CALL SZNUM1(BKTREE,NBKMAX) IF (NBKMAX.NE.0) CALL SZDRO1(BKTREE,0,ISTAT) BKTREE = '/RECO/HTRK/SFIE' CALL SZNUM1(BKTREE,NBKMAX) IF (NBKMAX.NE.0) CALL SZDRO1(BKTREE,0,ISTAT) END IF C C Drop reconstructed WF quantities if requested C IF (JBIT(LDRPHD,IDETWF).EQ.1) THEN BKTREE = '/RECO/HTRK/WFRE' CALL SZNUM1(BKTREE,NBKMAX) IF (NBKMAX.NE.0) CALL SZDRO1(BKTREE,0,ISTAT) END IF C C Drop reconstructed WR quantities if requested C IF (JBIT(LDRPHD,IDETWR).EQ.1) THEN BKTREE = '/RECO/HTRK/WRRE' CALL SZNUM1(BKTREE,NBKMAX) IF (NBKMAX.NE.0) CALL SZDRO1(BKTREE,0,ISTAT) END IF C C Drop reconstructed PM quantities if requested C IF (JBIT(LDRPHD,IDETPM).EQ.1) THEN BKTREE = '/RECO/HTRK/PMRE' CALL SZNUM1(BKTREE,NBKMAX) IF (NBKMAX.NE.0) CALL SZDRO1(BKTREE,0,ISTAT) END IF C C Drop reconstructed PX quantities if requested C IF (JBIT(LDRPHD,IDETPX).EQ.1) THEN BKTREE = '/RECO/HTRK/PXRE' CALL SZNUM1(BKTREE,NBKMAX) IF (NBKMAX.NE.0) CALL SZDRO1(BKTREE,0,ISTAT) END IF C C Drop TRCT tracks C If (LDRPTR) THEN BKTREE = '/RECO/HTRK/TRCT' CALL SZNUM1(BKTREE,NBKMAX) IF (NBKMAX.NE.0) CALL SZDRO1(BKTREE,0,ISTAT) END IF RETURN END +DECK,TFEVNT. *CMZ : 20/02/92 06.01.46 by Bradley Hubbard, UC Santa Cruz * Add planar microstrip coordinate reconstruction (PR) *CMZ : 08/02/92 17.58.52 by Bradley Hubbard, UC Santa Cruz *CMZ : 05/02/92 22.25.41 by Bradley Hubbard, UC Santa Cruz * Remove RW segment finding, update RW finding and fitting *CMZ : 25/11/91 16.21.09 by Bradley Hubbard, UC Santa Cruz *CMZ : 15/10/91 16.21.13 by Bradley Hubbard, UC Santa Cruz * Add pixel segment reconstruction *CMZ : 03/10/91 14.54.05 by Bradley Hubbard, UC Santa Cruz * Add RW and TR packages *CMZ : 18/09/91 08.07.36 by Bradley Hubbard, UC Santa Cruz * Add pixel coordinate reconstruction *CMZ : 16/09/91 09.21.48 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE TFEVNT CA)========================================(begin of short description) C Event routine for track reconstruction control CB)-----------------------------------------(begin of long description) C C Purpose and methods : C C Called by: SDC SHELL C C Input arguments : None C Input/output arguments : None C Output arguments: None C C Side effects (other variables/banks modified, etc.) C C Created: 23-May-1991 Bradley Hubbard, U.C.Santa Cruz C Modified: dd-mmm-yyyy editor's name C CC)-------------------------------------------(end of long description) +SEQ,SHIMPNON. CD)----------------------------------(declare common blocks, variables) C Common blocks: +SEQ, SHCCTL. +SEQ, TFCTRL. C Variables in argument list: None C Save variables: None C Local variables: C External references: INTEGER JBIT C C Statement functions: None C Local data statements: None CE)===============================================(end of declarations) C C Drop reconstructed information from selected detectors C ------------------------------------------------------ CALL TFDROP C C Determine which systems have raw data. Unpack raw data as needed. C ------------------------------------------------------------------ CALL TFRAWD C C Event initialization for particular subdetectors or packages C ------------------------------------------------------------ +SELF,IF=TSPKG. IF (JBIT(LRAWDT,IDETST).EQ.1) CALL TSEVIN +SELF. +SELF,IF=PRPKG. IF (JBIT(LRAWDT,IDETPM).EQ.1) CALL PREVIN +SELF. +SELF,IF=TRPKG. IF (JBIT(LRAWDT,IDETSF).EQ.1) CALL TREVTI +SELF. C Coordinate reconstruction C ------------------------- +SELF,IF=PXPKG. C C Pixel coordinate reconstruction C IF (JBIT(LRECCO,IDETPX).EQ.1) THEN CALL TFSTRT(IDETPX,1) CALL PXFLCO CALL TFSTOP(IDETPX,1) END IF +SELF. +SELF,IF=TSPKG. C C Silicon strip coordinate reconstruction C IF (JBIT(LRECCO,IDETST).EQ.1) THEN CALL TFSTRT(IDETST,1) CALL TSFLCO CALL TFSTOP(IDETST,1) END IF +SELF. +SELF,IF=PRPKG. C C Gas microstrip coordinate reconstruction C IF (JBIT(LRECCO,IDETPM).EQ.1) THEN CALL TFSTRT(IDETPM,1) CALL PRFLCO CALL TFSTOP(IDETPM,1) END IF +SELF. +SELF,IF=TRPKG. C C Scintillating fiber coordinate reconstruction C IF (JBIT(LRECCO,IDETSF).EQ.1) THEN CALL TFSTRT(IDETSF,1) C C Find the superclusters in each superlayer. Each hit is assigned C a position, direction and time and an uncertainty for each. CALL TRFSCF CALL TRFSC3 C Fill the SF supercluster banks. CALL TRZSCL C Fill the SF coordinate banks. CALL TRZCOO CALL TFSTOP(IDETSF,1) END IF +SELF. C C Segment reconstruction C ---------------------- +SELF,IF=PXPKG. C C Pixel segment reconstruction C IF (JBIT(LRECSG,IDETPX).EQ.1) THEN CALL TFSTRT(IDETPX,2) CALL PXFLSG CALL TFSTOP(IDETPX,2) END IF +SELF. +SELF,IF=TSPKG. C C Reconstruct segments in silicon C IF (JBIT(LRECSG,IDETST).EQ.1) THEN CALL TFSTRT(IDETST,2) CALL TSSEGF CALL TFSTOP(IDETST,2) END IF +SELF. +SELF,IF=ARPKG. C C Reconstruct segments in Straw tubes C IF (JBIT(LRECSG,IDETWR).EQ.1.AND. > JBIT(LRECSG,IALGAR).EQ.1) THEN CALL TFSTRT(IDETWR,2) CALL AREVNT CALL TFSTOP(IDETWR,2) END IF +SELF. +SELF,IF=AHPKG. C C Reconstruct segments in Hybrid central tracker C IF (JBIT(LRECSG,IDETWF).EQ.1) THEN CALL TFSTRT(IDETWF,2) CALL AHEVNT CALL TFSTOP(IDETWF,2) END IF +SELF. C C Track reconstruction C -------------------- +SELF,IF=TSPKG. C TS Track reconstruction IF (JBIT(LRECTR,IALGTS).EQ.1) THEN CALL TFSTRT(IALGTS,3) C C Cluster segments into tracks CALL TSFIND CALL TFSTOP(IALGTS,3) END IF +SELF. +SELF,IF=ATPKG. C C Track reconstruction using AT algorithm IF (JBIT(LRECTR,IALGAT).EQ.1) THEN CALL TFSTRT(IALGAT,3) CALL ATEVNT CALL TFSTOP(IALGAT,3) END IF +SELF. +SELF,IF=RWPKG. C C Track reconstruction using RW algorithm IF (JBIT(LRECTR,IALGRW).EQ.1) THEN CALL TFSTRT(IALGRW,3) C CALL RWEVIN CALL RWGTSG CALL RWSGLK CALL TFSTOP(IALGRW,3) END IF +SELF. +SELF,IF=TRPKG. C C Track reconstruction using TR algorithm IF (JBIT(LRECTR,IALGTR).EQ.1) THEN CALL TFSTRT(IALGTR,3) C Find tracks CALL TRFTRF C Put the closed tracks into the SDC data structure CALL TRFZTR C Assign MC track numbers to these reconstructed tracks CALL TRFMCR CALL TFSTOP(IALGTR,3) END IF +SELF. C C Track fitting C ------------- +SELF,IF=TSPKG. C C TS track fitting IF (JBIT(LFITTR,IALGTS).EQ.1) THEN CALL TFSTRT(IALGTS,4) C C Fit and clean up tracks CALL TSIFIT CALL TFSTOP(IALGTS,4) END IF +SELF. +SELF,IF=RWPKG. C C RW track fitting IF (JBIT(LFITTR,IALGRW).EQ.1) THEN CALL TFSTRT(IALGRW,4) CALL RWTRFT C Fill track banks. CALL RWTRCT C Fill histograms. CALL RWFILL CALL TFSTOP(IALGRW,4) END IF +SELF. C C End of event reconstruction. Drop temporary allocations. C Optionally monitor performance. C 999 CONTINUE +SELF, IF=TSPKG. CALL TSRLSE IF (JBIT(LMONIT,IALGTS).EQ.1) CALL TSPLOT +SELF. +SELF, IF=PRPKG. CALL PRRLSE +SELF. +SELF, IF=RWPKG. C Print actual tracks IF (JBIT(LMONIT,IALGRW).EQ.1) CALL RWFDAC(-1,-1) +SELF. C C Allow for user break for viewing? C IF (LBREAK) CALL KUWHAG C RETURN END +DECK,TFINIT. ****************************************************************** *CMZ : 20/02/92 06.09.23 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE TFINIT CA)========================================(begin of short description) C TF package initialization CB)-----------------------------------------(begin of long description) C C Purpose and methods : C C Called by: SDC SHELL C C Input arguments : None C Input/output arguments : None C Output arguments: None C C Side effects (other variables/banks modified, etc.) C C Created: 23-May-1991 Bradley Hubbard, U.C.Santa Cruz C Modified: dd-mmm-yyyy editor's name C CC)-------------------------------------------(end of long description) +SEQ,SHIMPNON. CD)----------------------------------(declare common blocks, variables) C Common blocks: None +SEQ,GCONST. C Variables in argument list: None C Save variables: None C Local variables: None C External references: None C Statement functions: None C Local data statements: None CE)===============================================(end of declarations) C +SELF,IF=SGPKG. C C Initialize GEANT for graphics if not done already C This ought be fixed C IF (ABS(PI-ACOS(-1.)).GT.0.001) THEN WRITE(*,*) ' TFINIT: Initializing SG package' CALL SGINIT END IF +SELF,IF=-SGPKG. C CALL SUERR('F','0',0,'TFINIT', > 'Need to initialize SG package which is not linked') C +SELF. +SELF,IF=TSPKG. C C Initialize silicon system geometry CALL TSINIT +SELF. +SELF,IF=ARPKG. C C Initialize AR Straw segment reconstruction CALL ARINIT +SELF. +SELF,IF=RWPKG. C C Initialize RW straw segment reconstruction CALL RWINIT +SELF. +SELF,IF=AHPKG. CALL AHINIT +SELF. +SELF,IF=TRPKG. C C Sci-fi coordinate and track reconstruction CALL TRINIT +SELF. RETURN END +DECK,TFKDEF. *CMZ : 18/11/91 21.22.13 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 08/11/91 SUBROUTINE TFKDEF CA)==================================================================== C Kuip action routine, enable/disable default actions CB)-------------------------------------------------------------------- C C Description : C C Called by: KUIP, TF/DEFAULT ON|OFF command C C Input arguments : None C C Input/output arguments : None C C Output arguments: None C C Side effects (other variables/banks modified, etc.) C Common block variables /TFCTRL/ filled C C Created: 16/09/91 09.33.44, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables CHARACTER*3 ONOFF INTEGER LENGTH C C External references C C Statement functions C Local data statements CE)==================================================================== 1000 FORMAT(' TF: Enabling default track reconstruction options') 1001 FORMAT(' TF: Disabling default track reconstruction options') C C Inquire logical choice CALL KUGETC(ONOFF,LENGTH) IF (ONOFF.EQ.'ON') THEN WRITE(*,1000) CALL TFPINI ELSE WRITE(*,1001) C C Reset parameters to do nothing. Suitable for event viewing. C C Drop nothing LDRPHD = 0 LDRPCO = 0 LDRPSG = 0 LDRPTR = .FALSE. C C Reconstruct no coordinates LRECCO = 0 C C Reconstruct no segments LRECSG = 0 C C Reconstruct no tracks LRECTR = 0 C C Fit no tracks LFITTR = 0 C C Call no monitor routines LMONIT = 0 END IF RETURN END +DECK,TFKDRP. *CMZ : 20/02/92 06.13.30 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 16/09/91 SUBROUTINE TFKDRP CA)==================================================================== C Kuip action routine, select quantities to drop CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 16/09/91 09.30.35, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables CHARACTER*12 CHPATH CHARACTER*3 ONOFF CHARACTER*2 SDET INTEGER LENGTH,IDET,NPAR C C External references INTEGER TFDIND C C Statement functions C Local data statements CE)==================================================================== 1000 FORMAT(' Selective dropping not supported yet. Try EVERYTHING.') 1001 FORMAT(' Invalid detector for TF/DROP.') C C Inquire which info to drop C CALL KUPATL(CHPATH,NPAR) C IF (CHPATH.EQ.'EVERYTHING') THEN C C Inquire which detector and logical choice CALL KUGETC(SDET,LENGTH) CALL KUGETC(ONOFF,LENGTH) IDET = TFDIND(SDET) IF (IDET.EQ.IDETST .OR. IDET.EQ.IDETWR .OR. > IDET.EQ.IDETPX .OR. IDET.EQ.IDETWF .OR. > IDET.EQ.IDETSF .OR. IDET.EQ.IDETPM) THEN IF (ONOFF.EQ.'ON') THEN CALL SBIT1(LDRPHD,IDET) ELSE CALL SBIT0(LDRPHD,IDET) END IF ELSE WRITE(*,1001) END IF ELSE WRITE(*,1000) END IF RETURN END +DECK,TFKFIT. *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 16/09/91 SUBROUTINE TFKFIT CA)==================================================================== C Kuip action routine, select which tracks to fit CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 16/09/91 09.33.44, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables CHARACTER*3 ONOFF CHARACTER*2 SDET INTEGER LENGTH,IDET C C External references INTEGER TFDIND C C Statement functions C Local data statements CE)==================================================================== 1001 FORMAT(' Option not implemented: TF/FIT, detector: ',A2) C C Inquire which detector and logical choice CALL KUGETC(SDET,LENGTH) CALL KUGETC(ONOFF,LENGTH) IDET = TFDIND(SDET) IF (IDET.EQ.IALGTS) THEN IF (ONOFF.EQ.'ON') THEN CALL SBIT1(LFITTR,IDET) ELSE CALL SBIT0(LFITTR,IDET) END IF ELSE WRITE(*,1001) SDET END IF RETURN END +DECK,TFKMON. *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 16/09/91 SUBROUTINE TFKMON CA)==================================================================== C Kuip action routine, select which algs/detectors to monitor CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 16/09/91 09.33.44, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables CHARACTER*3 ONOFF CHARACTER*2 SDET INTEGER LENGTH,IDET C C External references INTEGER TFDIND C C Statement functions C Local data statements CE)==================================================================== 1001 FORMAT(' Option not implemented: TF/MONITOR, detector: ',A2) C C Inquire which detector and logical choice CALL KUGETC(SDET,LENGTH) CALL KUGETC(ONOFF,LENGTH) IDET = TFDIND(SDET) IF (IDET.EQ.IALGTS .OR. IDET.EQ.IALGRW) THEN IF (ONOFF.EQ.'ON') THEN CALL SBIT1(LMONIT,IDET) ELSE CALL SBIT0(LMONIT,IDET) END IF ELSE WRITE(*,1001) SDET END IF RETURN END +DECK,TFKREC. *CMZ : 20/02/92 06.17.22 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 16/09/91 SUBROUTINE TFKREC CA)==================================================================== C Kuip action routine, select quantities to reconstruct CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 16/09/91 09.30.35, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables CHARACTER*12 CHPATH CHARACTER*3 ONOFF CHARACTER*2 SDET INTEGER LENGTH,IDET,NPAR,IDET1 C C External references INTEGER TFDIND,JBIT C C Statement functions C Local data statements CE)==================================================================== 1001 FORMAT(' Option not implemented: TF/RECONSTRUCT/',A, > ', detector: ',A2) 1002 FORMAT(' TF: Disable track reconstruction for detector ',A2) 1003 FORMAT(' TF: Disable track reconstruction for algorithm ',A2) C C Inquire which info to reconstruct C CALL KUPATL(CHPATH,NPAR) C C Inquire which detector and logical choice CALL KUGETC(SDET,LENGTH) CALL KUGETC(ONOFF,LENGTH) IDET = TFDIND(SDET) IF (CHPATH.EQ.'COORDINATES') THEN C C Coordinates for silicon, pixels or sci-fi or gas microstrips IF (IDET.EQ.IDETST .OR. IDET.EQ.IDETPX .OR. > IDET.EQ.IDETSF .OR. IDET.EQ.IDETPM) THEN IF (ONOFF.EQ.'ON') THEN CALL SBIT1(LRECCO,IDET) ELSE CALL SBIT0(LRECCO,IDET) END IF ELSE WRITE(*,1001) CHPATH,CHDETI(IDET) END IF ELSE IF (CHPATH.EQ.'SEGMENTS') THEN C C Segments implemented for ST,WR,WF. Multiple algorithms for WR IF (IDET.EQ.IDETST .OR. IDET.EQ.IDETWR .OR. IDET.EQ.IDETWF .OR. > IDET.EQ.IALGAR) THEN IF (ONOFF.EQ.'ON') THEN CALL SBIT1(LRECSG,IDET) ELSE CALL SBIT0(LRECSG,IDET) END IF C C Insure that multiple algorithms don't do the same thing C C IF(IDET.EQ.IALGAR .AND. ONOFF.EQ.'ON' .AND. C > JBIT(LRECSG,IALGRW).EQ.1) THEN C C WRITE(*,*) C > ' TF: disabling RW segment finding since AR selected' C CALL SBIT0(LRECSG,IALGRW) C ELSE IF(IDET.EQ.IALGRW .AND. ONOFF.EQ.'ON' .AND. C > JBIT(LRECSG,IALGAR).EQ.1) THEN C C WRITE(*,*) C > ' TF: disabling AR segment finding since RW selected' C CALL SBIT0(LRECSG,IALGAR) C END IF ELSE WRITE(*,1001) CHPATH,CHDETI(IDET) END IF ELSE IF (CHPATH.EQ.'TRACKS') THEN C C Tracks implemented with AT,TS,RW,TR algorithms IF (IDET.EQ.IALGAT .OR. IDET.EQ.IALGTS .OR. > IDET.EQ.IALGRW .OR. IDET.EQ.IALGTR .OR. > IDET.EQ.IDETST .OR. IDET.EQ.IDETWR .OR. > IDET.EQ.IDETSF .OR. IDET.EQ.IDETPX .OR. > IDET.EQ.IDETWF .OR. IDET.EQ.IDETPM) THEN IF (ONOFF.EQ.'ON') THEN CALL SBIT1(LRECTR,IDET) C C Only allow one track finding algorithm to be specified IF (IDET.GE.16) THEN DO IDET1=16,31 IF (IDET.NE.IDET1 .AND. JBIT(LRECTR,IDET1).EQ.1) THEN WRITE(*,1003) CHDETI(IDET1) CALL SBIT0(LRECTR,IDET1) END IF END DO END IF C C Only allow one outer detector to be specified IF (IDET.EQ.IDETWR) THEN IF (JBIT(LRECTR,IDETSF).EQ.1) THEN WRITE (*,1002) 'SF' CALL SBIT0(LRECTR,IDETSF) ELSE IF (JBIT(LRECTR,IDETWF).EQ.1) THEN WRITE (*,1002) 'WF' CALL SBIT0(LRECTR,IDETWF) END IF ELSE IF (IDET.EQ.IDETSF) THEN IF (JBIT(LRECTR,IDETWR).EQ.1) THEN WRITE (*,1002) 'WR' CALL SBIT0(LRECTR,IDETWR) ELSE IF (JBIT(LRECTR,IDETWF).EQ.1) THEN WRITE (*,1002) 'WF' CALL SBIT0(LRECTR,IDETWF) END IF ELSE IF (IDET.EQ.IDETWF) THEN IF (JBIT(LRECTR,IDETSF).EQ.1) THEN WRITE (*,1002) 'SF' CALL SBIT0(LRECTR,IDETSF) ELSE IF (JBIT(LRECTR,IDETWR).EQ.1) THEN WRITE (*,1002) 'WR' CALL SBIT0(LRECTR,IDETWR) END IF END IF ELSE CALL SBIT0(LRECTR,IDET) END IF ELSE WRITE(*,1001) CHPATH,CHDETI(IDET) END IF END IF C RETURN END +DECK,TFKUIP. *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 10/09/91 SUBROUTINE TFKUIP CA)==================================================================== C Kuip action routine CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 10/09/91 13.33.31, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables Integer LENGTH CHARACTER*4 ONOFF C External references C Statement functions C Local data statements CE)==================================================================== C CALL KUGETC(ONOFF,LENGTH) LBREAK = .FALSE. IF (ONOFF(1:2).EQ.'ON') LBREAK = .TRUE. RETURN END +DECK,TFLAST. *CMZ : 05/02/92 22.28.17 by Bradley Hubbard, UC Santa Cruz * Add call to RWLAST *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE TFLAST CA)========================================(begin of short description) C Track reconstruction end of job routine CB)-----------------------------------------(begin of long description) C C Purpose and methods : C C Called by: SDC SHELL C C Input arguments : None C Input/output arguments : None C Output arguments: None C C Side effects (other variables/banks modified, etc.) C C Created: 23-May-1991 Bradley Hubbard, U.C.Santa Cruz C Modified: dd-mmm-yyyy editor's name C CC)-------------------------------------------(end of long description) +SEQ,SHIMPNON. CD)----------------------------------(declare common blocks, variables) C Common blocks: None C+SEQ,seqname. C Variables in argument list: None C Save variables: None C Local variables: None C External references: None C Statement functions: None C Local data statements: None CE)===============================================(end of declarations) C +SELF,IF=TSPKG. CALL TSEFF +SELF. +SELF,IF=AHPKG. CALL AHLAST +SELF. +SELF,IF=ATPKG. CALL ATLAST +SELF. +SELF,IF=RWPKG. CALL RWLAST +SELF. C C Print timing summary CALL TFPTIM C RETURN END +DECK,TFPINI. *CMZ : 20/02/92 09.59.18 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 03/09/91 SUBROUTINE TFPINI CA)==================================================================== C Initialize control parameters for track reconstruction CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 03/09/91 17.43.24, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables C External references C Statement functions C Local data statements CE)==================================================================== C Set up default actions for track reconstruction C C First, determine which detector and algorithm code is linked in C LLNKDT = 0 +SELF,IF=STPKG. CALL SBIT1(LLNKDT,IDETST) +SELF,IF=WRPKG. CALL SBIT1(LLNKDT,IDETWR) +SELF,IF=PRPKG. CALL SBIT1(LLNKDT,IDETPM) +SELF,IF=WFPKG. CALL SBIT1(LLNKDT,IDETWF) +SELF,IF=SFPKG. CALL SBIT1(LLNKDT,IDETSF) +SELF,IF=PXPKG. CALL SBIT1(LLNKDT,IDETPX) +SELF,IF=ATPKG. CALL SBIT1(LLNKDT,IALGAT) +SELF,IF=TSPKG. CALL SBIT1(LLNKDT,IALGTS) +SELF,IF=ARPKG. CALL SBIT1(LLNKDT,IALGAR) +SELF,IF=RWPKG. CALL SBIT1(LLNKDT,IALGRW) +SELF,IF=TRPKG. CALL SBIT1(LLNKDT,IALGTR) +SELF. C C Drop everything C LDRPHD = -1 LDRPCO = 0 LDRPSG = 0 LDRPTR = .TRUE. C C Reconstruct coordinates in silicon and gas microstrips C LRECCO = 0 CALL SBIT1(LRECCO,IDETST) CALL SBIT1(LRECCO,IDETPM) C C Reconstruct segments in silicon and straw tubes C For the straw tube reconstruction, use AR algorithm by default C LRECSG = 0 CALL SBIT1(LRECSG,IDETST) CALL SBIT1(LRECSG,IDETWR) CALL SBIT1(LRECSG,IALGAR) C C Reconstruct tracks with TS algorithm, using data from C ST and WR and PM detectors. C LRECTR = 0 CALL SBIT1(LRECTR,IALGTS) CALL SBIT1(LRECTR,IDETST) CALL SBIT1(LRECTR,IDETWR) CALL SBIT1(LRECTR,IDETPM) C C Fit tracks in TS algorithm LFITTR = 0 CALL SBIT1(LFITTR,IALGTS) C C Call monitor routine for TS algorithm C LMONIT = 0 CALL SBIT1(LMONIT,IALGTS) RETURN END +DECK,TFPTIM. *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 24/09/91 SUBROUTINE TFPTIM CA)==================================================================== C Print timing statistics CB)-------------------------------------------------------------------- C C Description : C C Called by: end of run C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 24/09/91 08.30.50, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. +SEQ,TFTIME. C+SEQ,seqname. C Variables in argument list C Save variables C Local variables INTEGER IDET,INDEX CHARACTER*16 ACTION(4) C External references C Statement functions C Local data statements DATA ACTION/'Coordinates','Segments', > 'Track finding','Track fitting'/ SAVE ACTION CE)==================================================================== C WRITE(*,1000) 1000 FORMAT(' TF: end of run timing summary:',//, > ' Det/Alg Action Time (sec)',/, > ' ==================================') 1001 FORMAT(4X,A2,6X,A16,3X,F8.2) DO INDEX=1,4 DO IDET=1,32 IF (TIMERS(IDET,INDEX).GT.0) > WRITE(*,1001) CHDETI(IDET),ACTION(INDEX),TIMERS(IDET,INDEX) END DO END DO RETURN END +DECK,TFRAWD. *CMZ : 20/02/92 06.23.16 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 10/09/91 SUBROUTINE TFRAWD CA)==================================================================== C Determine which raw data banks are present CB)-------------------------------------------------------------------- C C Description : C C Called by: TFEVNT C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 10/09/91 22.29.26, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables INTEGER BKMAX C C External references C Statement functions C Local data statements CE)==================================================================== C CALL SZNUM('/RAWD/RTRK/STRA',0,BKMAX) IF (BKMAX.GT.0) CALL SBIT1(LRAWDT,IDETST) C CALL SZNUM('/RAWD/RTRK/SFRA',0,BKMAX) IF (BKMAX.GT.0) CALL SBIT1(LRAWDT,IDETSF) C CALL SZNUM('/RAWD/RTRK/WFRA',0,BKMAX) IF (BKMAX.GT.0) CALL SBIT1(LRAWDT,IDETWF) C CALL SZNUM('/RAWD/RTRK/WRRA',0,BKMAX) IF (BKMAX.GT.0) CALL SBIT1(LRAWDT,IDETWR) C CALL SZNUM('/RAWD/RTRK/PXRA',0,BKMAX) IF (BKMAX.GT.0) CALL SBIT1(LRAWDT,IDETPX) C CALL SZNUM('/RAWD/RTRK/PMRA',0,BKMAX) IF (BKMAX.GT.0) CALL SBIT1(LRAWDT,IDETPM) C RETURN END +DECK,TFRUNB. ****************************************************************** *CMZ : 16/11/91 22.59.34 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE TFRUNB CA)========================================(begin of short description) C TR begin run routine CB)-----------------------------------------(begin of long description) C C Purpose and methods : C C Called by: SDC SHELL C C Input arguments : None C Input/output arguments : None C Output arguments: None C C Side effects (other variables/banks modified, etc.) C C Created: 23-May-1991 Bradley Hubbard, U.C.Santa Cruz C Modified: dd-mmm-yyyy editor's name C CC)-------------------------------------------(end of long description) +SEQ,SHIMPNON. CD)----------------------------------(declare common blocks, variables) C Common blocks: +SEQ,TFCTRL. C Variables in argument list: None C Save variables: None C Local variables: None C External references: None INTEGER JBIT C Statement functions: None C Local data statements: None CE)===============================================(end of declarations) C Print TF option status CALL TFSTAT C +SELF,IF=TSPKG. IF (JBIT(LRECSG,IDETST).EQ.1 .OR. > JBIT(LRECTR,IALGTS).EQ.1 .OR. > JBIT(LFITTR,IALGTS).EQ.1) THEN CALL TSRUNB END IF +SELF. +SELF,IF=ATPKG. IF (JBIT(LRECTR,IALGAT).EQ.1) CALL ATINIT +SELF. RETURN END +DECK,TFRUNE. ****************************************************************** *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE TFRUNE CA)========================================(begin of short description) C end of run routine for track reconstruction CB)-----------------------------------------(begin of long description) C C Purpose and methods : C C Called by: SDC SHELL C C Input arguments : None C Input/output arguments : None C Output arguments: None C C Side effects (other variables/banks modified, etc.) C C Created: 23-May-1991 Bradley Hubbard, U.C.Santa Cruz C Modified: dd-mmm-yyyy editor's name C CC)-------------------------------------------(end of long description) +SEQ,SHIMPNON. CD)----------------------------------(declare common blocks, variables) C Common blocks: C+SEQ,seqname. C Variables in argument list: None C Save variables: None C Local variables: None C External references: None C Statement functions: None C Local data statements: None CE)===============================================(end of declarations) C RETURN END +DECK,TFSTAT. *CMZ : 18/11/91 21.22.13 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 16/09/91 SUBROUTINE TFSTAT CA)==================================================================== C Print status of TF package options CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 16/09/91 09.01.08, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. C C Variables in argument list C Save variables C Local variables INTEGER IDET,IALG C C External references INTEGER JBIT C C Statement functions C Local data statements CE)==================================================================== 1000 FORMAT(/,' TF track reconstruction status:',/, > ' ===============================') 1001 FORMAT(1x, A,' will be dropped for ',A2,'.') 1002 FORMAT(1x, A,' will be reconstructed for ',A2,'.') 1003 FORMAT(' Tracks will be reconstucted with ',A2,' algorithm.') 1004 FORMAT(' Tracks will be fit with ',A2,' algorithm.') 1005 FORMAT(' Monitor routine will be invoked for ',A2,' algorithm.') C WRITE(*,1000) C C Which information is dropped? C DO IDET=1,15 C IF (CHDETI(IDET).NE.'??') THEN C IF (JBIT(LDRPHD,IDET).EQ.1) THEN C WRITE(*,1001) 'All reconstructed info',CHDETI(IDET) C ELSE C Specifically, what is dropped for this detector? C IF (JBIT(LDRPCO,IDET).EQ.1) C > WRITE(*,1001) 'Coordinates',CHDETI(IDET) C IF (JBIT(LDRPSG,IDET).EQ.1) C > WRITE(*,1001) 'Segments',CHDETI(IDET) C END IF C END IF C END DO C C C Which information is reconstructed? DO IDET=1,15 IF (CHDETI(IDET).NE.'??') THEN IF (JBIT(LRECCO,IDET).EQ.1) > WRITE(*,1002) 'Coordinates',CHDETI(IDET) IF (JBIT(LRECSG,IDET).EQ.1) > WRITE(*,1002) 'Segments',CHDETI(IDET) IF (JBIT(LRECTR,IDET).EQ.1) > WRITE(*,1002) 'Tracks',CHDETI(IDET) END IF END DO C C Which algorithms used for track reconstruction? DO IALG=17,18 IF (CHDETI(IALG).NE.'??') THEN IF (JBIT(LRECTR,IALG).EQ.1) > WRITE(*,1003) CHDETI(IALG) IF (JBIT(LFITTR,IALG).EQ.1) > WRITE(*,1004) CHDETI(IALG) IF (JBIT(LMONIT,IALG).EQ.1) > WRITE(*,1005) CHDETI(IALG) END IF END DO RETURN END +DECK,TFSTOP. *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 24/09/91 SUBROUTINE TFSTOP(IDET,INDEX) CA)==================================================================== C brief description CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 24/09/91 08.30.50, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. +SEQ,TFTIME. C C Variables in argument list C Save variables C Local variables INTEGER IDET,INDEX C External references C Statement functions C Local data statements CE)==================================================================== C CALL TIMEX(CPUNOW) TIMERS(IDET,INDEX) = TIMERS(IDET,INDEX) + CPUNOW-CPUSAV CPUSAV=0 RETURN END +DECK,TFSTRT. *CMZ : 08/11/91 08.57.21 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 24/09/91 SUBROUTINE TFSTRT(IDET,INDEX) CA)==================================================================== C brief description CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 24/09/91 08.30.50, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks +SEQ,TFCTRL. +SEQ,TFTIME. C+SEQ,seqname. C Variables in argument list INTEGER IDET,INDEX C Save variables C Local variables C External references C Statement functions C Local data statements CE)==================================================================== C IF (CPUSAV.NE.0) THEN WRITE(*,*) 'TFSTRT: Timer started twice' ELSE CALL TIMEX(CPUSAV) END IF RETURN END +DECK,TFKIGN. *CMZ : 02/12/91 11.04.12 by Kathy OShaughnessy, UCSC *-- Author : Kathy OShaughnessy, UCSC 02/12/91 SUBROUTINE TFKIGN CA)==================================================================== C Kuip action routine, set bits for layers to be ignored CB)-------------------------------------------------------------------- C C Description : process KUIP command and set bits in C sequence TFCTRL to allow layers to not C be used in event reconstruction. C Routines that use these bits are in the C TS package and include TSLCLU and TSXXRD C (the subpackage road routines). C C Called by: KUIP command C C Input arguments : none C C Input/output arguments : none C C Output arguments: none C C Side effects (other variables/banks modified, etc.) C set bits in array LLAYER in TFCTRL C C Created: 02/12/91 10.48.21, Kathy OShaughnessy, UCSC C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks C+SEQ,seqname. +SEQ,TFCTRL. C Variables in argument list C Save variables C Local variables CHARACTER*2 SDET INTEGER LENGTH, MODULE, BITMAP, IDET C External references INTEGER TFDIND C Statement functions C Local data statements CE)==================================================================== C C Get the input parameters to say which detectors and C which layers. CALL KUGETC(SDET,LENGTH) CALL KUGETI(MODULE) CALL KUGETI(BITMAP) C IDET = TFDIND(SDET) C TFDIND returns 31 if the SDET doesn't correspond to any C ISDET number. In that case don't do anything (error message C already printed). IF(IDET.GT.16)GOTO 999 C C Now we have all the information we need to set the array C values. LLAYER(MODULE,IDET) = BITMAP C 999 CONTINUE RETURN END +PATCH,TFDRAW. *CMZ : 16/09/91 09.22.08 by Bradley Hubbard, UC Santa Cruz +DECK,AHDMPT. *CMZ : 05/02/92 22.33.57 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE AHDMPT(AMPT,IFLAG) C. C. ****************************************************************** C. * * C. * Online display of master points * C. * * C. * ==>Called by : * C. * Authors : Martyn Corden ********* * C. * * C. ****************************************************************** C. +SEQ,SHIMPNON. +SEQ,GCDRAW. REAL AMPT(29) REAL UU(2),VV(2),VTEMP(6),ALEN,XP,YP,X,Y INTEGER KCOL,ICOL(2),MODE(2),IFLAG,LSTY,LCOL,JBYT SAVE MODE,ICOL +SEQ,SGCKUI. DATA MODE/1,2/,ICOL/3,7/ C. C. ------------------------------------------------------------------ C. IF(IFLAG.LT.1.OR.IFLAG.GT.2) RETURN IF(ICOL(IFLAG).EQ.0 .OR. MODE(IFLAG).EQ.0) RETURN KCOL=LOOKTB(ICOL(IFLAG)) LSTY=JBYT(LINATT,15,3) LCOL=JBYT(LINATT,8,4) C X = AMPT(5) * COS(AMPT(6)) Y = AMPT(5) * SIN(AMPT(6)) ALEN = AMPT(12)/2. C make sure segment is long enough that we can see it.... ALEN = MAX(ALEN,1.) XP=COS(AMPT(7)+AMPT(6)) YP=SIN(AMPT(7)+AMPT(6)) VTEMP(1) = X - ALEN*XP VTEMP(2) = Y - ALEN*YP VTEMP(3) = AMPT(9) - ALEN*AMPT(10) VTEMP(4) = X + ALEN*XP VTEMP(5) = Y + ALEN*YP VTEMP(6) = AMPT(9) + ALEN*AMPT(10) C CALL GDFR3D(VTEMP,-2,UU(1),VV(1)) IF(KCOL.NE.LCOL) CALL ISPLCI(KCOL) IF(LSTY.NE.MODE(IFLAG)) CALL ISLN(MODE(IFLAG)) CALL IPL(2,UU,VV) C reset color and linestyle IF (MODE(IFLAG).NE.LSTY) CALL ISLN(LSTY) IF(KCOL.NE.LCOL) CALL ISPLCI(LCOL) END +DECK,ATDTRK. *CMZ : 05/02/92 22.33.57 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE ATDTRK (AMPT) C. C. ****************************************************************** C. * * C. * Online display of fitted tracks * C. * Stub for previous ATDTRK compatibility * C. * * C. * ==>Called by : * C. * Authors : Mike Gross * C. * * C. ****************************************************************** INTEGER LMPT PARAMETER (LMPT = 29) REAL AMPT (LMPT) CALL ATDTRX (AMPT(6), AMPT(7), AMPT(8), AMPT(9), AMPT(10), + AMPT(12)) RETURN END +DECK,ATDTRX *CMZ : 02/12/91 11.52.17 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE ATDTRX(B0, PHI0, CVTURE, Z0, TANL, SS) C. C. ****************************************************************** C. * * C. * Online display of fitted tracks (formerly ATDTRK) * C. * * C. * ==>Called by : ATDTRK, TFPRMC * C. * Authors : Martyn Corden, M. Mermikides, Mike Gross * C. * * C. ****************************************************************** +SEQ,SHIMPNON. C+SEQ,ATCONS +SEQ,GCONST. INTEGER NSTD PARAMETER (NSTD=100) REAL XX(NSTD),YY(NSTD),VTEMP(3*NSTD) INTEGER J REAL RHO,SGN,PHR,CP,SP,UC,U0,X0,Y0,SS,PSI,DPSI,DW REAL U,V,W,B0,PHI0,CVTURE,Z0,TANL C C Draw track from parameters C RHO = 1./ABS(CVTURE) SGN = SIGN(1.,CVTURE) C C Find position of point of closest approach and determine arc length C to last point. PHR = PHI0 - PIBY2 CP = COS(PHR) SP = SIN(PHR) UC = -SGN*(RHO - B0) CC U0 = SGN*RHO + UC X0 = U0*CP Y0 = U0*SP IF (SGN.GT.0.) THEN PSI = 0. ELSE PSI = PI ENDIF DPSI = SGN * SS / (FLOAT(NSTD - 1) * RHO) W = Z0 DW = SGN * DPSI * TANL * RHO DO 30 J = 1,NSTD U = UC + RHO*COS(PSI) V = RHO*SIN(PSI) VTEMP(3*J-2) = U*CP - V*SP VTEMP(3*J-1) = V*CP + U*SP VTEMP(3*J ) = W PSI = PSI + DPSI W = W + DW 30 CONTINUE CALL GDFR3D(VTEMP,-NSTD,XX(1),YY(1)) CALL IPL(NSTD,XX,YY) 999 CONTINUE END +DECK,TFDRCO. *CMZ : 20/02/92 06.32.28 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 10/09/91 SUBROUTINE TFDRCO CA)==================================================================== C Draw coordinates CB)-------------------------------------------------------------------- C C Description : Kuip action routine C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 10/09/91 13.33.32, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks C+SEQ,seqname. C Variables in argument list C Save variables C Local variables INTEGER LENCO PARAMETER (LENCO=8) INTEGER ICOL,MODE INTEGER IMOD,NMOD,IDNUMB(3),NBSLMX,ISL,NCOR,ICOR,ISYMB,ISTAT,IOFF INTEGER MODNUM,MMIN,MMAX,LAYNUM,LMIN,LMAX,COONUM,CMIN,CMAX,LEN REAL X,Y,Z,SSYMB,PTCUT,YMIN,YMAX INTEGER IDATA(LENCO) REAL RDATA(LENCO) EQUIVALENCE (IDATA(1),RDATA(1)) CHARACTER*4 SDET CHARACTER*40 BKTREE,BKTRE C External references SAVE MODE,ICOL DATA MODE/1/,ICOL/4/ C Statement functions C Local data statements CE)==================================================================== C ISYMB = 840 SSYMB = .1 C C get arguments C CALL KUGETC (SDET,LEN) CALL KUGETI (MODNUM) CALL KUGETI (LAYNUM) CALL KUGETI (COONUM) CALL KUGETR (PTCUT) CALL KUGETR (YMIN) CALL KUGETR (YMAX) C C Set color and marker mode C C MSTY=JBYT(LINATT,15,3) C MCOL=JBYT(LINATT,8,4) C KCOL=LOOKTB(ICOL) C IF(KCOL.NE.LCOL) CALL ISPLCI(KCOL) C IF(MODE.NE.LSTY) CALL ISLN(MODE) C C which subdetector? C NMOD = 1 IF (SDET.EQ.'ST') THEN NMOD = 3 BKTRE ='/RECO/HTRK/STRE/STRS ' BKTREE='/RECO/HTRK/STRE/STRS/STCO ' ELSEIF (SDET.EQ.'WF') THEN BKTRE ='/RECO/HTRK/WFRE/WFRS ' BKTREE='/RECO/HTRK/WFRE/WFRS/WFCO ' ELSEIF (SDET.EQ.'WG') THEN BKTRE ='/RECO/HTRK/WFRE/WFRF ' BKTREE='/RECO/HTRK/WFRE/WFRF/WFCO ' ELSEIF (SDET.EQ.'WR') THEN BKTRE ='/RECO/HTRK/WRRE/WRRS ' BKTREE='/RECO/HTRK/WRRE/WRRS/WRCO ' ELSEIF (SDET.EQ.'SF') THEN BKTRE ='/RECO/HTRK/SFRE/SFRS ' BKTREE='/RECO/HTRK/SFRE/SFRS/SFCO ' ELSEIF (SDET.EQ.'PX') THEN NMOD = 3 BKTRE ='/RECO/HTRK/PXRE/PXRS ' BKTREE='/RECO/HTRK/PXRE/PXRS/PXCO ' ELSEIF (SDET.EQ.'PM') THEN NMOD = 2 BKTRE ='/RECO/HTRK/PMRE/PMRS ' BKTREE='/RECO/HTRK/PMRE/PMRS/PMCO ' ELSE GO TO 999 ENDIF C C loop over modules C IF (MODNUM.EQ.0) THEN MMIN = 1 MMAX = NMOD ELSE MMIN = MODNUM MMAX = MODNUM END IF DO 3 IMOD=MMIN,MMAX C C Determine number of layers C IDNUMB(1) = IMOD IF (IMOD.GT.1 .AND. SDET.EQ.'ST') THEN BKTRE ='/RECO/HTRK/STIE/STRS ' BKTREE='/RECO/HTRK/STIE/STRS/STCO ' END IF CALL SZNUM(BKTRE ,IDNUMB,NBSLMX) IF(NBSLMX.LE.0) GO TO 999 C C Loop over superlayers or layers C IF (LAYNUM.EQ.0) THEN LMIN = 1 LMAX = NBSLMX ELSE LMIN = LAYNUM LMAX = LAYNUM END IF DO 1 ISL = LMIN,LMAX C C loop over coordinates C IDNUMB(3) = 1 IDNUMB(2) = ISL CALL SZGET(BKTREE,IDNUMB,1,3,IDATA,ISTAT) IF(ISTAT.NE.3) GO TO 1 C C this appropriate for ST/PX, what about for others? C NCOR = IDATA(3) IF (COONUM.EQ.0) THEN CMIN = 1 CMAX = NCOR ELSE CMIN = COONUM CMAX = COONUM END IF DO 2 ICOR = CMIN,CMAX IOFF = 3+(ICOR-1)*LENCO CALL SZGET(BKTREE,IDNUMB,IOFF+1,IOFF+LENCO,RDATA,ISTAT) IF(ISTAT.NE.LENCO) GO TO 2 X=RDATA(1)*COS(RDATA(2)) Y=RDATA(1)*SIN(RDATA(2)) Z=RDATA(3) CALL GDAHIT(X,Y,Z,ISYMB,SSYMB) 2 CONTINUE 1 CONTINUE 3 CONTINUE C C restore linestyle and color C IF(MODE.NE.LSTY) CALL ISLN(LSTY) C IF(KCOL.NE.LCOL) CALL ISPLCI(LCOL) 999 RETURN END +DECK, TFDRMC. *CMZ : 13/12/91 09.57.59 by Bradley Hubbard, UC Santa Cruz *-- Author : *-- Author : Michael A. Gross, UC Santa Cruz 08/21/91 SUBROUTINE TFDRMC C. C. ****************************************************************** C. * * C. * Online display of tracks for vertex number VRTNUM and * C. * track number TRKNUM using graphics output. * C. * invoked by KUIP command TF/DRAW/MC * C. * tracks are taken from SDC data structure. * C. * * C. * ==>Called by : * C. * Authors : Michael Gross ********* * C. * * C. ****************************************************************** C. +SEQ,SHIMPNON. +SEQ,SGCKUI. +SEQ,TSTPAR. +SEQ,GCDRAW. +SEQ,GCONST. INTEGER VRTNUM, TRKNUM, VRTMIN,VRTMAX, TRKMIN,TRKMAX REAL PTMIN, YMIN, YMAX REAL RDATA(20) INTEGER IVERT,ITRAK,ISTAT,IDATA(10) INTEGER ICOL,MODE,LSTY,LCOL,KCOL C C Externals Integer JBYT SAVE MODE,ICOL DATA MODE/3/,ICOL/6/ C C make color vertex-association dependent? C LSTY=JBYT(LINATT,15,3) LCOL=JBYT(LINATT,8,4) KCOL=LOOKTB(ICOL) IF(KCOL.NE.LCOL) CALL ISPLCI(KCOL) IF(MODE.NE.LSTY) CALL ISLN(MODE) C get arguments CALL KUGETI(VRTNUM) CALL KUGETI(TRKNUM) CALL KUGETR(PTMIN) CALL KUGETR(YMIN) CALL KUGETR(YMAX) C C get maximum vertex bank number CALL SZNUM('/SIMU/HEVT/VERT',0,VRTMAX) VRTMIN=1 IF (VRTNUM.GT.0) THEN IF (VRTNUM.GT.VRTMAX) THEN CALL SUERR('W','0',0,'TFDRMC','MC vertex out of range') RETURN ELSE VRTMIN=VRTNUM VRTMAX=VRTNUM END IF END IF C C Loop over vertices DO IVERT=VRTMIN,VRTMAX C C Get maximum PTRK bank number CALL SZNUM('/SIMU/HEVT/VERT/PTRK',IVERT,TRKMAX) TRKMIN=1 IF (TRKNUM.GT.0) THEN IF (TRKNUM.GT.TRKMAX) THEN CALL SUERR('W','0',0,'TFDRMC','MC vert/track out of range') RETURN ELSE TRKMIN=TRKNUM TRKMAX=TRKNUM END IF END IF C C Loop over tracks DO ITRAK=TRKMIN,TRKMAX C C Get data for this track CALL UTGETP(IVERT,ITRAK,RDATA,IDATA,ISTAT) IF (ISTAT.LT.0) THEN CALL SUERR('W','0',0,'TFDRMC','Error retrieving track data') RETURN END IF IF (ABS(RDATA(11)).NE.0 .OR. VRTNUM.NE.0) THEN IF (RDATA(8).GT.YMIN .AND. RDATA(8).LT.YMAX .AND. > RDATA(6).GT.PTMIN) THEN C The hard-coded 200. should be replaced by the radius of impact with C calorimeter CALL ATDTRX( RDATA(15), RDATA(9), + - RDATA(11)*2*1.49898e-4*RSGFLD/RDATA(6), + RDATA(14), + 1. / TAN(2.*ATAN(EXP(-RDATA(8)))), + 200.) END IF END IF END DO END DO C C restore linestyle and color IF(MODE.NE.LSTY) CALL ISLN(LSTY) IF(KCOL.NE.LCOL) CALL ISPLCI(LCOL) RETURN END +DECK,TFDRSG. *CMZ : 20/02/92 06.34.13 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 10/09/91 SUBROUTINE TFDRSG CA)==================================================================== C Offline display of reconstructed segments CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 10/09/91 13.33.32, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks C+SEQ,seqname. C Variables in argument list C Save variables C Local variables INTEGER LEN,MODNUM,LAYNUM,SEGNUM INTEGER NMOD,MMIN,MMAX,IMOD,IDNUMB(3),NBSLMX,LMIN,LMAX,ISL INTEGER NSEG,SMIN,SMAX,ISEG,ISTAT,IFLAG REAL PTCUT,YMIN,YMAX,ALPHA,PHIP INTEGER LMPT PARAMETER (LMPT=29) REAL AMPT(LMPT) CHARACTER*2 SDET CHARACTER*40 BKTRE,BKTREE C C External references INTEGER JBIT C Statement functions C Local data statements CE)==================================================================== C C C get arguments C CALL KUGETC (SDET,LEN) CALL KUGETI (MODNUM) CALL KUGETI (LAYNUM) CALL KUGETI (SEGNUM) CALL KUGETR (PTCUT) CALL KUGETR (YMIN) CALL KUGETR (YMAX) C C which subdetector? C NMOD = 1 IF (SDET.EQ.'ST') THEN NMOD = 3 BKTRE ='/RECO/HTRK/STRE/STRS ' BKTREE='/RECO/HTRK/STRE/STRS/STSG ' ELSEIF (SDET.EQ.'WF') THEN BKTRE ='/RECO/HTRK/WFRE/WFRS ' BKTREE='/RECO/HTRK/WFRE/WFRS/WFSG ' ELSEIF (SDET.EQ.'WG') THEN BKTRE ='/RECO/HTRK/WFRE/WFRF ' BKTREE='/RECO/HTRK/WFRE/WFRF/WFSG ' ELSEIF (SDET.EQ.'WR') THEN BKTRE ='/RECO/HTRK/WRRE/WRRS ' BKTREE='/RECO/HTRK/WRRE/WRRS/WRSG ' ELSEIF (SDET.EQ.'SF') THEN BKTRE ='/RECO/HTRK/SFRE/SFRS ' BKTREE='/RECO/HTRK/SFRE/SFRS/SFSG ' ELSEIF (SDET.EQ.'PX') THEN NMOD=3 BKTRE ='/RECO/HTRK/PXRE/PXRS ' BKTREE='/RECO/HTRK/PXRE/PXRS/PXSG ' ELSEIF (SDET.EQ.'PM') THEN NMOD=2 BKTRE ='/RECO/HTRK/PMRE/PMRS ' BKTREE='/RECO/HTRK/PMRE/PMRS/PMSG ' ELSE GO TO 999 ENDIF C C loop over modules C IF (MODNUM.EQ.0) THEN MMIN = 1 MMAX = NMOD ELSE MMIN = MODNUM MMAX = MODNUM END IF DO 3 IMOD=MMIN,MMAX C C Determine number of layers C IDNUMB(1) = IMOD IF (IMOD.GT.1 .AND. SDET.EQ.'ST') THEN BKTRE ='/RECO/HTRK/STIE/STRS ' BKTREE='/RECO/HTRK/STIE/STRS/STSG ' END IF CALL SZNUM(BKTRE ,IDNUMB,NBSLMX) IF(NBSLMX.LE.0) GO TO 999 C C Loop over superlayers or layers C IF (LAYNUM.EQ.0) THEN LMIN = 1 LMAX = NBSLMX ELSE LMIN = LAYNUM LMAX = LAYNUM END IF DO 1 ISL = LMIN,LMAX C C loop over segments C IDNUMB(3) = 1 IDNUMB(2) = ISL CALL SZNUM(BKTREE,IDNUMB,NSEG) IF (SEGNUM.EQ.0) THEN SMIN = 1 SMAX = NSEG ELSE SMIN = SEGNUM SMAX = SEGNUM END IF DO 2 ISEG = SMIN,SMAX CALL VZERO(AMPT,LMPT) IDNUMB(3) = ISEG CALL SZGET(BKTREE,IDNUMB,1,LMPT,AMPT,ISTAT) IF(ISTAT.LE.0) GO TO 2 IFLAG = 1 IF(SDET.EQ.'ST') THEN C C Silicon segment parameters C IF(JBIT(AMPT(3),5).NE.1) GO TO 2 C C Display non-stereo segments in different color C IF(JBIT(AMPT(3),17).NE.1) IFLAG = 2 IF(JBIT(AMPT(3),16).EQ.1) THEN C C Transform from forward to barrel parameters C IF (AMPT(10).EQ.0.) GO TO 2 AMPT(10) = 1/AMPT(10) AMPT(9) = -AMPT(9)*AMPT(10) AMPT(8) = AMPT(8)*AMPT(10) AMPT(7) = AMPT(7)+(AMPT(8)*AMPT(9))/(2.*AMPT(10)) ELSE IF (JBIT(AMPT(3),15).NE.1) THEN C Unknown parameter set GO TO 2 END IF C C Transform to outer segment parameters C ALPHA = ASIN(0.5*AMPT(5)*AMPT(8)) PHIP = AMPT(7)+ALPHA AMPT(6) = PHIP AMPT(7) = ALPHA AMPT(9) = AMPT(9) + AMPT(5)*AMPT(10) IF(AMPT(12).EQ.0.) GO TO 2 ENDIF C draw segment CALL AHDMPT(AMPT,IFLAG) 2 CONTINUE 1 CONTINUE 3 CONTINUE C C restore linestyle and color C IF(MODE.NE.LSTY) CALL ISLN(LSTY) C IF(KCOL.NE.LCOL) CALL ISPLCI(LCOL) 999 RETURN END +DECK, TFDRTR. *CMZ : 02/12/91 16.56.39 by Kathy OShaughnessy, UCSC *-- Author : SUBROUTINE TFDRTR C. C. ****************************************************************** C. * * C. * Offline display of reconstructed tracks * C. * Invoked by KUIP command TF/DRAW/TRACKS * C. * Tracks are taken from SDC data structure TRCT or STTK. * C. * calls ATDTRK * C. * * C. * ==>Called by : * C. * Authors : Michael Gross ********* * C. * * C. ****************************************************************** C. +SEQ,SHIMPNON. +SEQ,SGCKUI. +SEQ,TSTPAR. +SEQ,GCDRAW. +SEQ,GCONST. INTEGER TRKNUM REAL PTCUT, YMIN, YMAX, RAPIDT INTEGER LMPT PARAMETER (LMPT=29) REAL AMPT(LMPT) INTEGER IDNUMB(8),NBMAX,ISTAT,ILEV,KTRK,LEN INTEGER ICOL,MODE,LSTY,LCOL,KCOL CHARACTER*40 BKTREE CHARACTER*4 TRKBNK C C Externals Integer JBYT SAVE MODE,ICOL DATA MODE/1/,ICOL/2/ C C get arguments C CALL KUGETC (TRKBNK,LEN) CALL KUGETI (TRKNUM) CALL KUGETR (PTCUT) CALL KUGETR (YMIN) CALL KUGETR (YMAX) C C Set color and polyline mode C LSTY=JBYT(LINATT,15,3) LCOL=JBYT(LINATT,8,4) KCOL=LOOKTB(ICOL) IF(KCOL.NE.LCOL) CALL ISPLCI(KCOL) IF(MODE.NE.LSTY) CALL ISLN(MODE) C C which subdetector? C IF (TRKBNK(1:2).EQ.'TR') THEN ILEV = 1 BKTREE='/RECO/HTRK/TRCT' ELSE IF (TRKBNK(1:2).EQ.'ST') THEN ILEV = 2 BKTREE='/RECO/HTRK/STRE/STTK ' END IF C C how many track banks? C IDNUMB(1) = 1 CALL SZNUM(BKTREE,IDNUMB,NBMAX) IF (NBMAX.LT.0) THEN WRITE (*,*)'Error counting tracks in TFDRTR.' WRITE (*,*)'NBMAX = ', NBMAX GO TO 999 ENDIF C C track bank loop C DO 2 KTRK = 1,NBMAX IF ((TRKNUM.EQ.KTRK) .OR. (TRKNUM.EQ.0)) THEN CALL VZERO(AMPT,LMPT) IDNUMB(ILEV) = KTRK CALL SZGET(BKTREE,IDNUMB,1,LMPT,AMPT,ISTAT) IF (ISTAT.LT.-3) THEN CALL SUERR('W','KTRK',KTRK,'TFDRTR', > 'Error getting track KTRK.') GO TO 999 ELSEIF(ISTAT.GE.-3.AND.ISTAT.LE.0)THEN C probably dropped the track, just skip it WRITE(*,100)KTRK 100 FORMAT(' Track number ',I5,' not in banks.') GOTO 2 END IF C output track fit quantities IF (ABS(2*1.49898e-4*RSGFLD/AMPT(TRRHOO)) .GT. PTCUT) THEN RAPIDT = - LOG (TAN ((PIBY2 - ATAN (AMPT (TRTANO))) / 2.)) IF (RAPIDT .GT. YMIN) THEN IF (RAPIDT .LT. YMAX) THEN CALL ATDTRK (AMPT) END IF END IF END IF END IF 2 CONTINUE 999 CONTINUE C C restore linestyle and color IF(MODE.NE.LSTY) CALL ISLN(LSTY) IF(KCOL.NE.LCOL) CALL ISPLCI(LCOL) RETURN END +DECK,TFPRCO. *CMZ : 01/10/91 08.24.56 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 10/09/91 SUBROUTINE TFPRCO CA)==================================================================== C brief description CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 10/09/91 13.33.33, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks C+SEQ,seqname. C Variables in argument list C Save variables C Local variables C External references C Statement functions C Local data statements CE)==================================================================== C WRITE(*,*) ' Command not yet implemented!' RETURN END +DECK,TFPRMC. *CMZ : 27/12/91 12.51.44 by Bradley Hubbard, UC Santa Cruz *-- Author : *-- Author : Michael A. Gross, UC Santa Cruz 07/26/91 SUBROUTINE TFPRMC C. C. ****************************************************************** C. * * C. * Online display of tracks for vertex number VRTNUM and * C. * track number TRKNUM using text output. * C. * invoked by KUIP command TR/PRINT/PTRK * C. * tracks are taken from SDC data structure. * C. * * C. * ==>Called by : * C. * Authors : Michael Gross ********* * C. * * C. ****************************************************************** C. +SEQ, SHIMPNONE. INTEGER VRTNUM, TRKNUM, VRTMIN,VRTMAX, TRKMIN,TRKMAX REAL PTMIN, YMIN, YMAX REAL RDATA(20) INTEGER IVERT,ITRAK,TRKNDX,ISTAT,IDATA(10) C get arguments CALL KUGETI(VRTNUM) CALL KUGETI(TRKNUM) CALL KUGETR(PTMIN) CALL KUGETR(YMIN) CALL KUGETR(YMAX) C C get maximum vertex bank number CALL SZNUM('/SIMU/HEVT/VERT',0,VRTMAX) VRTMIN=1 IF (VRTNUM.GT.0) THEN IF (VRTNUM.GT.VRTMAX) THEN CALL SUERR('W','0',0,'TFPRMC','MC vertex out of range') RETURN ELSE VRTMIN=VRTNUM VRTMAX=VRTNUM END IF END IF WRITE (*,300)'Vrt#', 'Trk#','ID','GC','TC','TVrt', > 'Pt','P','Y','Phi','Z0','B0' C C Loop over vertices DO IVERT=VRTMIN,VRTMAX C C Get maximum PTRK bank number CALL SZNUM('/SIMU/HEVT/VERT/PTRK',IVERT,TRKMAX) TRKMIN=1 IF (TRKNUM.GT.0) THEN IF (TRKNUM.GT.TRKMAX) THEN CALL SUERR('W','0',0,'TFPRMC','MC vert/track out of range') RETURN ELSE TRKMIN=TRKNUM TRKMAX=TRKNUM END IF END IF C C Loop over tracks DO ITRAK=TRKMIN,TRKMAX C C Get data for this track CALL UTGETP(IVERT,ITRAK,RDATA,IDATA,ISTAT) IF (ISTAT.LT.0) THEN CALL SUERR('W','0',0,'TFPRMC','Error retrieving track data') RETURN END IF IF (RDATA(11).NE.0 .OR. VRTNUM.NE.0) THEN IF (RDATA(8).GT.YMIN .AND. RDATA(8).LT.YMAX .AND. > RDATA(6).GT.PTMIN) THEN IF (RDATA(11).NE.0.) RDATA(6) = SIGN(RDATA(6),RDATA(11)) C C Output track data, if any (otherwise, give error message) 300 FORMAT(6A5, 5A9, 1A11) 400 FORMAT(6I5, 3F9.3,1F9.4,1F9.3,1F11.5) WRITE (*,400) IVERT,ITRAK,IDATA(1),IDATA(2),IDATA(3), + IDATA(5),RDATA(6), + (RDATA(TRKNDX),TRKNDX=7,9), + RDATA(14),RDATA(15) END IF END IF END DO END DO RETURN END +DECK,TFPRSG. *CMZ : 01/10/91 08.24.57 by Bradley Hubbard, UC Santa Cruz *-- Author : Bradley Hubbard, UC Santa Cruz 10/09/91 SUBROUTINE TFPRSG CA)==================================================================== C brief description CB)-------------------------------------------------------------------- C C Description : C C Called by: C C Input arguments : C C Input/output arguments : C C Output arguments: C C Side effects (other variables/banks modified, etc.) C C Created: 10/09/91 13.33.32, Bradley Hubbard, UC Santa Cruz C Modified: C CC)-------------------------------------------------------------------- +SEQ,SHIMPNON. CD)-------------------------------------------------------------------- C Common blocks C+SEQ,seqname. C Variables in argument list C Save variables C Local variables C External references C Statement functions C Local data statements CE)==================================================================== C WRITE(*,*) ' Command not yet implemented!' RETURN END +DECK, TFPRTR. *CMZ : 27/12/91 16.02.05 by Bradley Hubbard, UC Santa Cruz *-- Author : *-- Author : Michael A. Gross, UC Santa Cruz 07/26/91 SUBROUTINE TFPRTR C. C. ****************************************************************** C. * * C. * Online display of tracks for track number TRKNUM using * C. * text output. * C. * invoked by KUIP command TR/PRINT/STTK * C. * tracks are taken from SDC data structure. * C. * * C. * ==>Called by : * C. * Authors : Michael Gross ********* * C. * * C. ****************************************************************** C. +SEQ,SHIMPNON. +SEQ,SGCKUI. +SEQ,TSTPAR. +SEQ,TFCTRL. +SEQ,GCONST. INTEGER TRKNUM,POINTR REAL PTCUT, YMIN, YMAX, RAPIDT, P, PT INTEGER LMPT PARAMETER (LMPT=29) REAL AMPT(LMPT) INTEGER IDNUMB(8),NBMAX,ISTAT,ILEV,KTRK,LEN CHARACTER*4 TRKBNK CHARACTER*40 BKTREE,BKPTR INTEGER MAXPTR PARAMETER (MAXPTR = 200) INTEGER ITPTR(MAXPTR),IP,I,COUNT C get arguments CALL KUGETC(TRKBNK,LEN) CALL KUGETI (TRKNUM) CALL KUGETR (PTCUT) CALL KUGETR (YMIN) CALL KUGETR (YMAX) CALL KUGETI (POINTR) C which subdetector? IF (TRKBNK(1:2).EQ.'TR') THEN ILEV = 1 BKTREE='/RECO/HTRK/TRCT' BKPTR ='/RECO/HTRK/TRCT/TRCP' ELSE IF (TRKBNK(1:2).EQ.'ST') THEN ILEV = 2 BKTREE='/RECO/HTRK/STRE/STTK ' BKPTR ='/RECO/HTRK/STRE/STTK/STTP ' END IF C C how many track banks? IDNUMB(1) = 1 CALL SZNUM(BKTREE,IDNUMB,NBMAX) IF (NBMAX.LE.0) THEN CALL SUERR('W','NBMAX',NBMAX,'TFPRTR', > 'Error counting track banks') GO TO 999 ENDIF C track (STTK bank) loop 100 FORMAT(A5, 6A11) 200 FORMAT(I5, 6F11.5) 300 FORMAT(' Number of subdetectors = ',I5) 400 FORMAT(' ISDET = ',I2,' NSEG = ',I3,' NCOR = ',I3) 500 FORMAT(5(2X,Z8)) 600 FORMAT(' Track number ',I5,'not in bank') WRITE (*,100)'ID#', 'q*Pt', 'P', 'Y', 'Phi', 'Z0', 'B0' DO 2 KTRK = 1,NBMAX IF ((TRKNUM.EQ.KTRK) .OR. (TRKNUM.EQ.0)) THEN CALL VZERO(AMPT,LMPT) IDNUMB(ILEV) = KTRK CALL SZGET(BKTREE,IDNUMB,1,LMPT,AMPT,ISTAT) IF (ISTAT.LT.-3) THEN CALL SUERR('W','KTRK',KTRK,'TFPRTR', > 'Error getting track number KTRK bank') GO TO 999 ELSEIF (ISTAT.LE.0.AND.ISTAT.GE.-3)THEN C bank was probably dropped; print out message if C asked for this one specifically IF(TRKNUM.NE.0)WRITE(*,600)KTRK GOTO 2 END IF C output track fit quantities PT = ABS(2*1.49898e-4*RSGFLD/AMPT(TRRHOO)) IF (PT .GT. PTCUT) THEN RAPIDT = - LOG (TAN ( (PIBY2 - ATAN (AMPT (TRTANO)))/2. ) ) IF (RAPIDT .GT. YMIN) THEN IF (RAPIDT .LT. YMAX) THEN P = PT * SQRT (1. + AMPT(10)**2) WRITE (*,200) KTRK, PT, P, RAPIDT, AMPT(7), AMPT(9), + AMPT(6) C C now print out track pointers if flag is set C IF(POINTR.GT.0)THEN IDNUMB(ILEV+1) = 1 CALL SZGET(BKPTR,IDNUMB,1,MAXPTR,ITPTR,ISTAT) IF(ISTAT.LE.1)THEN CALL SUERR('W','ISTAT',ISTAT,'TFPRTR', > 'Unable to get track pointer bank') ELSEIF(ISTAT.EQ.MAXPTR)THEN CALL SUERR('W','ISTAT',ISTAT,'TFPRTR', > 'Pointer bank overflow, truncated') ELSE COUNT = 3 WRITE(*,300) ITPTR(2) DO 10 IP=1,ITPTR(2) IF (ITPTR(COUNT+1).EQ.IDETST) THEN CALL TSPRHT(ITPTR(COUNT+1)) ELSE WRITE(*,400)ITPTR(COUNT+1),ITPTR(COUNT+2), > ITPTR(COUNT+3) IF(ITPTR(COUNT+2).GT.0) > WRITE(*,500)(ITPTR(COUNT+3+I), > I=1,ITPTR(COUNT+2)) IF(ITPTR(COUNT+3).GT.0) > WRITE(*,500)(ITPTR(COUNT+3+ITPTR(COUNT+2)+I), > I=1,ITPTR(COUNT+3)) END IF COUNT = COUNT + ITPTR(COUNT) 10 CONTINUE ENDIF ENDIF C END IF END IF END IF END IF 2 CONTINUE 999 CONTINUE RETURN END +PATCH,TFKUIP. *CMZ : 23/05/91 19.27.04 by Bradley Hubbard, U.C.Santa Cruz +DECK,TFKINI. *CMZ : 20/02/92 06.30.20 by Bradley Hubbard, UC Santa Cruz *-- Author : SUBROUTINE TFKINI INTEGER MGUIDL PARAMETER (MGUIDL=199) CHARACTER*80 GUID COMMON /KCGUID/ GUID(MGUIDL) EXTERNAL TFEVNT EXTERNAL TFKUIP EXTERNAL TFSTAT EXTERNAL TFKDEF EXTERNAL TFKMON EXTERNAL TFKFIT EXTERNAL TFKDRP EXTERNAL TFKIGN EXTERNAL TFKREC EXTERNAL TFDRTR EXTERNAL TFDRSG EXTERNAL TFDRCO EXTERNAL TFDRMC EXTERNAL TFPRTR EXTERNAL TFPRSG EXTERNAL TFPRCO EXTERNAL TFPRMC CALL KUNWG( 8) CALL KUCMD(' ','TF','C') GUID( 1)='Combined tracking package' CALL KUGUID('TF',GUID, 1,'S') CALL KUCMD('TF',' ','SW') CALL KUNWG( 7) CALL KUCMD(' ','EVENT','C') GUID( 1)='Invoke TF event routine' CALL KUGUID('EVENT',GUID, 1,'S') CALL KUACT('EVENT',TFEVNT) CALL KUNWG( 12) CALL KUCMD(' ','BREAK','C') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('BREAK','LBREAK','Whether to break after reconstruction +','CO','S') CALL KUPVAL('BREAK','LBREAK',0,0.,'ON','D') CALL KUPVAL('BREAK','LBREAK',0,0.,'ON,OFF','V') GUID( 1)='Stop after track reconstruction for view'// +'ing' CALL KUGUID('BREAK',GUID, 1,'S') CALL KUACT('BREAK',TFKUIP) CALL KUNWG( 10) CALL KUCMD(' ','STATUS','C') GUID( 1)='Print status of TF package options.' CALL KUGUID('STATUS',GUID, 1,'S') CALL KUACT('STATUS',TFSTAT) CALL KUNWG( 99) CALL KUCMD(' ','DEFAULT','C') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('DEFAULT','LDEFAU','Whether to perform default actions' +,'C','S') CALL KUPVAL('DEFAULT','LDEFAU',0,0.,'ON','D') CALL KUPVAL('DEFAULT','LDEFAU',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable default actions for track'// +' reconstruction.' GUID( 2)='The default actions are:' GUID( 3)=' - coordinate finding for all linked det'// +'ectors' GUID( 4)=' - segment finding for all linked detect'// +'ors' GUID( 5)=' - track finding using TS algorithm' GUID( 6)=' - track fitting with TS algorithm' GUID( 7)=' - monitor routine for TS algorithm' GUID( 8)='These can be disabled with TF/DEFAULT OF'// +'F. This is useful for' GUID( 9)='event viewing.' CALL KUGUID('DEFAULT',GUID, 9,'S') CALL KUACT('DEFAULT',TFKDEF) CALL KUNWG( 15) CALL KUCMD(' ','MONITOR','C') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('MONITOR','SDET','Sub-detector or package','C','S') CALL KUPVAL('MONITOR','SDET',0,0.,'TS','D') CALL KUPVAL('MONITOR','SDET',0,0.,'TS,RW','V') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('MONITOR','LMONIT','Whether to call monitor routines' +,'CO','S') CALL KUPVAL('MONITOR','LMONIT',0,0.,'ON','D') CALL KUPVAL('MONITOR','LMONIT',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable monitor routines after re'// +'construction.' CALL KUGUID('MONITOR',GUID, 1,'S') CALL KUACT('MONITOR',TFKMON) CALL KUNWG( 13) CALL KUCMD(' ','FIT','C') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('FIT','SDET','Sub-detector or package','C','S') CALL KUPVAL('FIT','SDET',0,0.,'TS','D') CALL KUPVAL('FIT','SDET',0,0.,'TS,RW','V') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('FIT','LFIT','Whether to fit or refit tracks','CO','S') CALL KUPVAL('FIT','LFIT',0,0.,'ON','D') CALL KUPVAL('FIT','LFIT',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable fitting or re-fitting of '// +'tracks.' CALL KUGUID('FIT',GUID, 1,'S') CALL KUACT('FIT',TFKFIT) CALL KUNWG( 13) CALL KUCMD(' ','DROP','C') GUID( 1)='Enable/disable dropping reconstructed qu'// +'antities' CALL KUGUID('DROP',GUID, 1,'S') CALL KUCMD('DROP',' ','SW') CALL KUNWG( 15) CALL KUCMD(' ','EVERYTHING','C') CALL KUNDPV( 1, 1, 1, 1, 5) CALL KUPAR('EVERYTHING','SDET','Sub-detector or package','C','S') CALL KUPVAL('EVERYTHING','SDET',0,0.,'ST','D') CALL KUPVAL('EVERYTHING','SDET',0,0.,'ST,WR,WF,SF,PX,PM','V') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('EVERYTHING','LDROP','Whether to drop everything','CO', +'S') CALL KUPVAL('EVERYTHING','LDROP',0,0.,'ON','D') CALL KUPVAL('EVERYTHING','LDROP',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable dropping all reconstructe'// +'d quantities.' CALL KUGUID('EVERYTHING',GUID, 1,'S') CALL KUACT('EVERYTHING',TFKDRP) CALL KUNWG( 11) CALL KUCMD(' ','COORDINATES','C') CALL KUNDPV( 1, 1, 1, 1, 3) CALL KUPAR('COORDINATES','SDET','Sub-detector or package','C','S') CALL KUPVAL('COORDINATES','SDET',0,0.,'ST','D') CALL KUPVAL('COORDINATES','SDET',0,0.,'ST,PX,SF,PM','V') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('COORDINATES','LDROP','Whether to drop coordinates','CO +','S') CALL KUPVAL('COORDINATES','LDROP',0,0.,'ON','D') CALL KUPVAL('COORDINATES','LDROP',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable dropping of coordinates.' CALL KUGUID('COORDINATES',GUID, 1,'S') CALL KUACT('COORDINATES',TFKDRP) CALL KUNWG( 10) CALL KUCMD(' ','SEGMENTS','C') CALL KUNDPV( 1, 1, 1, 1, 4) CALL KUPAR('SEGMENTS','SDET','Sub-detector or package','C','S') CALL KUPVAL('SEGMENTS','SDET',0,0.,'ST','D') CALL KUPVAL('SEGMENTS','SDET',0,0.,'ST,PX,WR,WF,SF','V') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('SEGMENTS','LDROP','Whether to drop segments','CO','S') CALL KUPVAL('SEGMENTS','LDROP',0,0.,'ON','D') CALL KUPVAL('SEGMENTS','LDROP',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable dropping of segments.' CALL KUGUID('SEGMENTS',GUID, 1,'S') CALL KUACT('SEGMENTS',TFKDRP) CALL KUNWG( 9) CALL KUCMD(' ','TRACKS','C') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('TRACKS','SDET','Sub-detector or package','C','S') CALL KUPVAL('TRACKS','SDET',0,0.,'AT','D') CALL KUPVAL('TRACKS','SDET',0,0.,'AT,TS','V') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('TRACKS','LDROP','Whether to drop tracks','CO','S') CALL KUPVAL('TRACKS','LDROP',0,0.,'ON','D') CALL KUPVAL('TRACKS','LDROP',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable dropping tracks.' CALL KUGUID('TRACKS',GUID, 1,'S') CALL KUACT('TRACKS',TFKDRP) CALL KUCMD('..',' ','SW') CALL KUNWG( 12) CALL KUCMD(' ','IGNORE','C') GUID( 1)='Set bits to ignore pieces of the detecto'// +'r' CALL KUGUID('IGNORE',GUID, 1,'S') CALL KUCMD('IGNORE',' ','SW') CALL KUNWG( 22) CALL KUCMD(' ','LAYERS','C') CALL KUNDPV( 1, 1, 1, 1, 4) CALL KUPAR('LAYERS','SDET','Sub-detector','C','S') CALL KUPVAL('LAYERS','SDET',0,0.,'ST','D') CALL KUPVAL('LAYERS','SDET',0,0.,'ST,WR,PX,SF,PM','V') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('LAYERS','MODULE','Module','I','S') CALL KUPVAL('LAYERS','MODULE',1,0.,' ','D') CALL KUPVAL('LAYERS','MODULE',1,0.,' ','L') CALL KUPVAL('LAYERS','MODULE',3,0.,' ','H') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('LAYERS','BITMAP','Bitmap of layers to ignore','IO','S' +) CALL KUPVAL('LAYERS','BITMAP',0,0.,' ','D') CALL KUPVAL('LAYERS','BITMAP',0,0.,' ','L') GUID( 1)='Turn off layers of subdetector.' GUID( 2)='Use a bitmap eg layer 1 = 1, layer1 and '// +'2 = 3.' CALL KUGUID('LAYERS',GUID, 2,'S') CALL KUACT('LAYERS',TFKIGN) CALL KUCMD('..',' ','SW') CALL KUNWG( 11) CALL KUCMD(' ','RECONSTRUCT','C') GUID( 1)='Enable/disable reconstruction options.' CALL KUGUID('RECONSTRUCT',GUID, 1,'S') CALL KUCMD('RECONSTRUCT',' ','SW') CALL KUNWG( 13) CALL KUCMD(' ','COORDINATES','C') CALL KUNDPV( 1, 1, 1, 1, 3) CALL KUPAR('COORDINATES','SDET','Sub-detector or package','C','S') CALL KUPVAL('COORDINATES','SDET',0,0.,'ST','D') CALL KUPVAL('COORDINATES','SDET',0,0.,'ST,PX,SF,PM','V') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('COORDINATES','LDOIT','Whether to reconstruct coordinat +es','CO','S') CALL KUPVAL('COORDINATES','LDOIT',0,0.,'ON','D') CALL KUPVAL('COORDINATES','LDOIT',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable reconstruction of coordin'// +'ates.' CALL KUGUID('COORDINATES',GUID, 1,'S') CALL KUACT('COORDINATES',TFKREC) CALL KUNWG( 12) CALL KUCMD(' ','SEGMENTS','C') CALL KUNDPV( 1, 1, 1, 1, 5) CALL KUPAR('SEGMENTS','SDET','Sub-detector or package','C','S') CALL KUPVAL('SEGMENTS','SDET',0,0.,'ST','D') CALL KUPVAL('SEGMENTS','SDET',0,0.,'ST,PX,WR,WF,SF,AR','V') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('SEGMENTS','LDOIT','Whether to reconstruct segments','C +O','S') CALL KUPVAL('SEGMENTS','LDOIT',0,0.,'ON','D') CALL KUPVAL('SEGMENTS','LDOIT',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable reconstruction of segment'// +'s.' CALL KUGUID('SEGMENTS',GUID, 1,'S') CALL KUACT('SEGMENTS',TFKREC) CALL KUNWG( 57) CALL KUCMD(' ','TRACKS','C') CALL KUNDPV( 1, 1, 1, 1, 8) CALL KUPAR('TRACKS','SDET','Sub-detector or package','C','S') CALL KUPVAL('TRACKS','SDET',0,0.,'AT','D') CALL KUPVAL('TRACKS','SDET',0,0.,'AT,TS,TR,RW,ST,WR,WF,SF,PX,PM' +,'V') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('TRACKS','LDOIT','Whether to reconstruct tracks','CO' +,'S') CALL KUPVAL('TRACKS','LDOIT',0,0.,'ON','D') CALL KUPVAL('TRACKS','LDOIT',0,0.,'ON,OFF','V') GUID( 1)='Enable/disable reconstruction of tracks.' GUID( 2)='If SDET is a subdetector name, then this'// +' detector will be used in track' GUID( 3)='reconstruction. Otherwise, if SDET is a'// +'n algorithm name, the algorithm' GUID( 4)='will be used to find tracks.' CALL KUGUID('TRACKS',GUID, 4,'S') CALL KUACT('TRACKS',TFKREC) CALL KUCMD('..',' ','SW') CALL KUNWG( 13) CALL KUCMD(' ','DRAW','C') GUID( 1)='Draw MC and reconstructed tracks, segmen'// +'ts, etc.' CALL KUGUID('DRAW',GUID, 1,'S') CALL KUCMD('DRAW',' ','SW') CALL KUNWG( 15) CALL KUCMD(' ','TRACKS','C') CALL KUNDPV( 1, 1, 1, 1, 2) CALL KUPAR('TRACKS','TRKBNK','Subdetector name (TR:combined tracks +)','C','S') CALL KUPVAL('TRACKS','TRKBNK',0,0.,'TR','D') CALL KUPVAL('TRACKS','TRKBNK',0,0.,'TR,ST','V') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('TRACKS','TRKNUM','Track bank number (0:all)','I','S') CALL KUPVAL('TRACKS','TRKNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('TRACKS','PTCUT','Minimum Pt','RO','S') CALL KUPVAL('TRACKS','PTCUT',0,0.,' ','D') CALL KUPVAL('TRACKS','PTCUT',0,0.,' ','L') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('TRACKS','YMIN','Minimum pseudo-rapidity','RO','S') CALL KUPVAL('TRACKS','YMIN',0,-5.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('TRACKS','YMAX','Maximum pseudo-rapidity','RO','S') CALL KUPVAL('TRACKS','YMAX',0,5.,' ','D') GUID( 1)='Draw reconstructed tracks from the TRCT '// +'or STTK bank.' CALL KUGUID('TRACKS',GUID, 1,'S') CALL KUACT('TRACKS',TFDRTR) CALL KUNWG( 8) CALL KUCMD(' ','SEGMENTS','C') CALL KUNDPV( 1, 1, 1, 1, 5) CALL KUPAR('SEGMENTS','TRKBNK','Subdetector name','C','S') CALL KUPVAL('SEGMENTS','TRKBNK',0,0.,'ST','D') CALL KUPVAL('SEGMENTS','TRKBNK',0,0.,'ST,WR,WF,SF,PX,PM','V') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','MODNUM','Module number (0:all)','IO','S') CALL KUPVAL('SEGMENTS','MODNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','LAYNUM','Layer or superlayer number (0:all) +','IO','S') CALL KUPVAL('SEGMENTS','LAYNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','SEGNUM','Segment number (0:all)','IO','S') CALL KUPVAL('SEGMENTS','SEGNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','PTCUT','Minimum Pt','RO','S') CALL KUPVAL('SEGMENTS','PTCUT',0,0.,' ','D') CALL KUPVAL('SEGMENTS','PTCUT',0,0.,' ','L') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','YMIN','Minimum pseudo-rapidity','RO','S') CALL KUPVAL('SEGMENTS','YMIN',0,-5.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','YMAX','Maximum pseudo-rapidity','RO','S') CALL KUPVAL('SEGMENTS','YMAX',0,5.,' ','D') GUID( 1)='Draw reconstructed segments.' CALL KUGUID('SEGMENTS',GUID, 1,'S') CALL KUACT('SEGMENTS',TFDRSG) CALL KUNWG( 9) CALL KUCMD(' ','COORDINATES','C') CALL KUNDPV( 1, 1, 1, 1, 5) CALL KUPAR('COORDINATES','TRKBNK','Subdetector name','C','S') CALL KUPVAL('COORDINATES','TRKBNK',0,0.,'ST','D') CALL KUPVAL('COORDINATES','TRKBNK',0,0.,'ST,SF,WF,WR,PX,PM','V') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','MODNUM','Module number (0:all)','IO','S' +) CALL KUPVAL('COORDINATES','MODNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','LAYNUM','Layer or superlayer number (0:a +ll)','IO','S') CALL KUPVAL('COORDINATES','LAYNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','COONUM','Coordinate number (0:all)','IO' +,'S') CALL KUPVAL('COORDINATES','COONUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','PTCUT','Minimum Pt','RO','S') CALL KUPVAL('COORDINATES','PTCUT',0,0.,' ','D') CALL KUPVAL('COORDINATES','PTCUT',0,0.,' ','L') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','YMIN','Minimum pseudo-rapidity','RO','S' +) CALL KUPVAL('COORDINATES','YMIN',0,-5.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','YMAX','Maximum pseudo-rapidity','RO','S' +) CALL KUPVAL('COORDINATES','YMAX',0,5.,' ','D') GUID( 1)='Draw reconstructed coordinates.' CALL KUGUID('COORDINATES',GUID, 1,'S') CALL KUACT('COORDINATES',TFDRCO) CALL KUNWG( 17) CALL KUCMD(' ','MCTRACKS','C') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','VRTNUM','Monte Carlo vertex number (0:all)' +,'I','S') CALL KUPVAL('MCTRACKS','VRTNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','TRKNUM','Monte Carlo particle number (0:all + charged, -1:all)','I','S') CALL KUPVAL('MCTRACKS','TRKNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','PTCUT','Minimum Pt','RO','S') CALL KUPVAL('MCTRACKS','PTCUT',0,0.,' ','D') CALL KUPVAL('MCTRACKS','PTCUT',0,0.,' ','L') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','YMIN','Minimum pseudo-rapidity','RO','S') CALL KUPVAL('MCTRACKS','YMIN',0,-5.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','YMAX','Maximum pseudo-rapidity','RO','S') CALL KUPVAL('MCTRACKS','YMAX',0,5.,' ','D') GUID( 1)='Draw Monte-Carlo charged and/or neutral '// +'tracks from PTRK bank.' CALL KUGUID('MCTRACKS',GUID, 1,'S') CALL KUACT('MCTRACKS',TFDRMC) CALL KUCMD('..',' ','SW') CALL KUNWG( 16) CALL KUCMD(' ','PRINT','C') GUID( 1)='Print info on MC and reconstructed track'// +'s, segments, etc.' CALL KUGUID('PRINT',GUID, 1,'S') CALL KUCMD('PRINT',' ','SW') CALL KUNWG( 16) CALL KUCMD(' ','TRACKS','C') CALL KUNDPV( 1, 1, 1, 1, 3) CALL KUPAR('TRACKS','TRKBNK','Track bank name','C','S') CALL KUPVAL('TRACKS','TRKBNK',0,0.,'TRCT','D') CALL KUPVAL('TRACKS','TRKBNK',0,0.,'TRCT,STTK','V') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('TRACKS','TRKNUM','Track bank number (0:all)','I','S') CALL KUPVAL('TRACKS','TRKNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('TRACKS','PTCUT','Minimum Pt','RO','S') CALL KUPVAL('TRACKS','PTCUT',0,0.,' ','D') CALL KUPVAL('TRACKS','PTCUT',0,0.,' ','L') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('TRACKS','YMIN','Minimum pseudo-rapidity','RO','S') CALL KUPVAL('TRACKS','YMIN',0,-5.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('TRACKS','YMAX','Maximum pseudo-rapidity','RO','S') CALL KUPVAL('TRACKS','YMAX',0,5.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('TRACKS','POINTR','Flag to print out pointers','IO','S' +) CALL KUPVAL('TRACKS','POINTR',0,0.,' ','D') GUID( 1)='Print reconstructed track info from the '// +'TRCT or STTK bank.' CALL KUGUID('TRACKS',GUID, 1,'S') CALL KUACT('TRACKS',TFPRTR) CALL KUNWG( 10) CALL KUCMD(' ','SEGMENTS','C') CALL KUNDPV( 1, 1, 1, 1, 5) CALL KUPAR('SEGMENTS','SDET','Subdetector name','C','S') CALL KUPVAL('SEGMENTS','SDET',0,0.,'ST','D') CALL KUPVAL('SEGMENTS','SDET',0,0.,'ST,WR,WF,SF,PX,PM','V') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','LAYNUM','Layer or superlayer number (0:all) +','IO','S') CALL KUPVAL('SEGMENTS','LAYNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','SEGNUM','Segment number (0:all)','IO','S') CALL KUPVAL('SEGMENTS','SEGNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','PTCUT','Minimum Pt','RO','S') CALL KUPVAL('SEGMENTS','PTCUT',0,0.,' ','D') CALL KUPVAL('SEGMENTS','PTCUT',0,0.,' ','L') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','YMIN','Minimum pseudo-rapidity','RO','S') CALL KUPVAL('SEGMENTS','YMIN',0,-5.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('SEGMENTS','YMAX','Maximum pseudo-rapidity','RO','S') CALL KUPVAL('SEGMENTS','YMAX',0,5.,' ','D') GUID( 1)='Print reconstructed segment info.' CALL KUGUID('SEGMENTS',GUID, 1,'S') CALL KUACT('SEGMENTS',TFPRSG) CALL KUNWG( 10) CALL KUCMD(' ','COORDINATES','C') CALL KUNDPV( 1, 1, 1, 1, 5) CALL KUPAR('COORDINATES','SDET','Subdetector name','C','S') CALL KUPVAL('COORDINATES','SDET',0,0.,'ST','D') CALL KUPVAL('COORDINATES','SDET',0,0.,'ST,WR,WF,SF,PX,PM','V') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','LAYNUM','Layer or superlayer number (0:a +ll)','IO','S') CALL KUPVAL('COORDINATES','LAYNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','COONUM','Coordinate number (0:all)','IO' +,'S') CALL KUPVAL('COORDINATES','COONUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','PTCUT','Minimum Pt','RO','S') CALL KUPVAL('COORDINATES','PTCUT',0,0.,' ','D') CALL KUPVAL('COORDINATES','PTCUT',0,0.,' ','L') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','YMIN','Minimum pseudo-rapidity','RO','S' +) CALL KUPVAL('COORDINATES','YMIN',0,-5.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('COORDINATES','YMAX','Maximum pseudo-rapidity','RO','S' +) CALL KUPVAL('COORDINATES','YMAX',0,5.,' ','D') GUID( 1)='Print reconstructed coordinate info.' CALL KUGUID('COORDINATES',GUID, 1,'S') CALL KUACT('COORDINATES',TFPRCO) CALL KUNWG( 18) CALL KUCMD(' ','MCTRACKS','C') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','VRTNUM','Monte Carlo vertex number (0:all)' +,'I','S') CALL KUPVAL('MCTRACKS','VRTNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','TRKNUM','Monte Carlo particle number (0:all + charged, -1:all)','I','S') CALL KUPVAL('MCTRACKS','TRKNUM',0,0.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','PTCUT','Minimum Pt','RO','S') CALL KUPVAL('MCTRACKS','PTCUT',0,0.,' ','D') CALL KUPVAL('MCTRACKS','PTCUT',0,0.,' ','L') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','YMIN','Minimum pseudo-rapidity','RO','S') CALL KUPVAL('MCTRACKS','YMIN',0,-5.,' ','D') CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUPAR('MCTRACKS','YMAX','Maximum pseudo-rapidity','RO','S') CALL KUPVAL('MCTRACKS','YMAX',0,5.,' ','D') GUID( 1)='Print Monte-Carlo charged and/or neutral'// +' track info from PTRK bank.' CALL KUGUID('MCTRACKS',GUID, 1,'S') CALL KUACT('MCTRACKS',TFPRMC) CALL KUNWG( 0) CALL KUNDPV( 1, 1, 1, 0, 1) CALL KUCMD(' ',' ','E') CALL KUCMD('/',' ','SW') END +PATCH,TFCDF. *CMZ : 20/02/92 06.29.35 by Bradley Hubbard, UC Santa Cruz +DECK,TF,T=TEXT. *CMZ : 20/02/92 06.29.35 by Bradley Hubbard, UC Santa Cruz *-- Author : *-- Author : * KUIP CDF for TF track reconstruction >Name TFKINI >Menu TF >Guidance Combined tracking package * * Command to invoke TF package for current event * >Command EVENT >Guidance Invoke TF event routine >Action TFEVNT * * Command to enable/disable break after reconstruction * >Command BREAK >Parameters + LBREAK 'Whether to break after reconstruction' C D='ON' R='ON,OFF' >Guidance Stop after track reconstruction for viewing >Action TFKUIP * * Command to show TF package status * >Command STATUS >Guidance Print status of TF package options. >Action TFSTAT * * Command to enable/disable default actions * >Command DEFAULT >Parameters LDEFAU 'Whether to perform default actions' C D='ON' R='ON,OFF' >Guidance Enable/disable default actions for track reconstruction. The default actions are: - coordinate finding for all linked detectors - segment finding for all linked detectors - track finding using TS algorithm - track fitting with TS algorithm - monitor routine for TS algorithm These can be disabled with TF/DEFAULT OFF. This is useful for event viewing. >Action TFKDEF * * Command to enable/disable monitor routines after reconstruction * >Command MONITOR >Parameters SDET 'Sub-detector or package' C D='TS' R='TS,RW' + LMONIT 'Whether to call monitor routines' C D='ON' R='ON,OFF' >Guidance Enable/disable monitor routines after reconstruction. >Action TFKMON * * Command to enable/disable fitting or re-fitting of tracks * >Command FIT >Parameters SDET 'Sub-detector or package' C D='TS' R='TS,RW' + LFIT 'Whether to fit or refit tracks' C D='ON' R='ON,OFF' >Guidance Enable/disable fitting or re-fitting of tracks. >Action TFKFIT * * Commands to enable/disable dropping ZEBRA banks before reconstruction * >Menu DROP >Guidance Enable/disable dropping reconstructed quantities >Command EVERYTHING >Parameters SDET 'Sub-detector or package' C D='ST' R='ST,WR,WF,SF,PX,PM' + LDROP 'Whether to drop everything' C D='ON' R='ON,OFF' >Guidance Enable/disable dropping all reconstructed quantities. >Action TFKDRP >Command COORDINATES >Parameters SDET 'Sub-detector or package' C D='ST' R='ST,PX,SF,PM' + LDROP 'Whether to drop coordinates' C D='ON' R='ON,OFF' >Guidance Enable/disable dropping of coordinates. >Action TFKDRP >Command SEGMENTS >Parameters SDET 'Sub-detector or package' C D='ST' R='ST,PX,WR,WF,SF' + LDROP 'Whether to drop segments' C D='ON' R='ON,OFF' >Guidance Enable/disable dropping of segments. >Action TFKDRP >Command TRACKS >Parameters SDET 'Sub-detector or package' C D='AT' R='AT,TS' + LDROP 'Whether to drop tracks' C D='ON' R='ON,OFF' >Guidance Enable/disable dropping tracks. >Action TFKDRP >Menu \IGNORE >Guidance Set bits to ignore pieces of the detector >Command LAYERS >Parameters SDET 'Sub-detector' C D='ST' R='ST,WR,PX,SF,PM' MODULE 'Module' I D=1 R=1:3 + BITMAP 'Bitmap of layers to ignore' I D=0 R=0: >Guidance Turn off layers of subdetector. Use a bitmap eg layer 1 = 1, layer1 and 2 = 3. >Action TFKIGN * * Commands to enable/disable reconstruction of coordinates, segments, tracks * >Menu \RECONSTRUCT >Guidance Enable/disable reconstruction options. >Command COORDINATES >Parameters SDET 'Sub-detector or package' C D='ST' R='ST,PX,SF,PM' + LDOIT 'Whether to reconstruct coordinates' C D='ON' R='ON,OFF' >Guidance Enable/disable reconstruction of coordinates. >Action TFKREC >Command SEGMENTS >Parameters SDET 'Sub-detector or package' C D='ST' R='ST,PX,WR,WF,SF,AR' + LDOIT 'Whether to reconstruct segments' C D='ON' R='ON,OFF' >Guidance Enable/disable reconstruction of segments. >Action TFKREC >Command TRACKS >Parameters SDET 'Sub-detector or package' C D='AT' R='AT,TS,TR,RW,ST,WR,WF,SF,PX,PM' + LDOIT 'Whether to reconstruct tracks' C D='ON' R='ON,OFF' >Guidance Enable/disable reconstruction of tracks. If SDET is a subdetector name, then this detector will be used in track reconstruction. Otherwise, if SDET is an algorithm name, the algorithm will be used to find tracks. >Action TFKREC * * Commands to draw coordinates, segments, tracks * >Menu \DRAW >Guidance Draw MC and reconstructed tracks, segments, etc. >Command TRACKS >Parameters TRKBNK 'Subdetector name (TR:combined tracks)' C D='TR' R='TR,ST' TRKNUM 'Track bank number (0:all)' I D=0 + PTCUT 'Minimum Pt' R D=0. R=0.: YMIN 'Minimum pseudo-rapidity' R D=-5. YMAX 'Maximum pseudo-rapidity' R D=5. >Guidance Draw reconstructed tracks from the TRCT or STTK bank. >Action TFDRTR >Command SEGMENTS >Parameters TRKBNK 'Subdetector name' C D='ST' R='ST,WR,WF,SF,PX,PM' + MODNUM 'Module number (0:all)' I D=0 LAYNUM 'Layer or superlayer number (0:all)' I D=0 SEGNUM 'Segment number (0:all)' I D=0 PTCUT 'Minimum Pt' R D=0. R=0.: YMIN 'Minimum pseudo-rapidity' R D=-5. YMAX 'Maximum pseudo-rapidity' R D=5. >Guidance Draw reconstructed segments. >Action TFDRSG >Command COORDINATES >Parameters TRKBNK 'Subdetector name' C D='ST' R='ST,SF,WF,WR,PX,PM' + MODNUM 'Module number (0:all)' I D=0 LAYNUM 'Layer or superlayer number (0:all)' I D=0 COONUM 'Coordinate number (0:all)' I D=0 PTCUT 'Minimum Pt' R D=0. R=0.: YMIN 'Minimum pseudo-rapidity' R D=-5. YMAX 'Maximum pseudo-rapidity' R D=5. >Guidance Draw reconstructed coordinates. >Action TFDRCO >Command MCTRACKS >Parameters VRTNUM 'Monte Carlo vertex number (0:all)' I D=0 TRKNUM 'Monte Carlo particle number (0:all charged, -1:all)' I D=0 + PTCUT 'Minimum Pt' R D=0. R=0.: YMIN 'Minimum pseudo-rapidity' R D=-5. YMAX 'Maximum pseudo-rapidity' R D=5. >Guidance Draw Monte-Carlo charged and/or neutral tracks from PTRK bank. >Action TFDRMC * * Commands to print coordinates, segments, tracks * >Menu \PRINT >Guidance Print info on MC and reconstructed tracks, segments, etc. >Command TRACKS >Parameters TRKBNK 'Track bank name' C D='TRCT' R='TRCT,STTK' TRKNUM 'Track bank number (0:all)' I D=0 + PTCUT 'Minimum Pt' R D=0. R=0.: YMIN 'Minimum pseudo-rapidity' R D=-5. YMAX 'Maximum pseudo-rapidity' R D=5. POINTR 'Flag to print out pointers' I D=0 >Guidance Print reconstructed track info from the TRCT or STTK bank. >Action TFPRTR >Command SEGMENTS >Parameters SDET 'Subdetector name' C D='ST' R='ST,WR,WF,SF,PX,PM' + LAYNUM 'Layer or superlayer number (0:all)' I D=0 SEGNUM 'Segment number (0:all)' I D=0 PTCUT 'Minimum Pt' R D=0. R=0.: YMIN 'Minimum pseudo-rapidity' R D=-5. YMAX 'Maximum pseudo-rapidity' R D=5. >Guidance Print reconstructed segment info. >Action TFPRSG >Command COORDINATES >Parameters SDET 'Subdetector name' C D='ST' R='ST,WR,WF,SF,PX,PM' + LAYNUM 'Layer or superlayer number (0:all)' I D=0 COONUM 'Coordinate number (0:all)' I D=0 PTCUT 'Minimum Pt' R D=0. R=0.: YMIN 'Minimum pseudo-rapidity' R D=-5. YMAX 'Maximum pseudo-rapidity' R D=5. >Guidance Print reconstructed coordinate info. >Action TFPRCO >Command MCTRACKS >Parameters VRTNUM 'Monte Carlo vertex number (0:all)' I D=0 TRKNUM 'Monte Carlo particle number (0:all charged, -1:all)' I D=0 + PTCUT 'Minimum Pt' R D=0. R=0.: YMIN 'Minimum pseudo-rapidity' R D=-5. YMAX 'Maximum pseudo-rapidity' R D=5. >Guidance Print Monte-Carlo charged and/or neutral track info from PTRK bank. >Action TFPRMC