+PATCH,$CORR. +DECK,CORR1. Updates version: 1.36/00 to 1.37/00 +REP,*TITLE*,TITLE,1. GTRAK 1.37/00 03/07/96 11.14.51 GLOBAL TRACKING SOFTWARE +REP,$VERSION,V1_36,1-2. *CMZU: 1.36/02 03/06/96 10.57.34 by Unknown *CMZ : 1.36/01 14/02/96 17.48.21 by Unknown *CMZU: 1.36/00 21/12/95 18.48.56 by Christian Voelcker *-- Author : Christian Voelcker 21/12/95 * *::> VERSION 1.36/02 03/06/96 10.57.34 * update of installation script for solaris * *::> VERSION 1.36/01 14/02/96 17.48.21 * installed by BK * 6/2/96 F.-H.Heinsius * Save the old global vertex bank, if locater * vertex does not exist because locater was not enabled. +ADD,$VERSION,V1_37,*. &DECK,V1_37. *CMZU: 1.37/00 03/07/96 11.14.51 by Kaemmle *-- Author : Kaemmle 03/07/96 * *::> VERSION 1.37/00 03/07/96 11.14.51 * new variables added to ttks bank. * WORD 59 = golden part 1 = gold * WORD 60 = hitpattern for tracks binary coded * WORD 61 = quality from hhmenu * WORD 62 = user defineable * WORD 63 = user defineable * WORD 64 = user defineable +ADD,GTPROGRM,GTBANK,0. *CMZU: 1.37/00 17/06/96 18.12.57 by Kaemmle *CMZU: 1.36/01 07/02/96 11.23.28 by F.-H.Heinsius +ADD,GTPROGRM,GTBANK,127. * 6/2/96 F.-H.Heinsius * Save the old global vertex bank, if locater * vertex does not exist because locater was not enabled. * +REP,GTPROGRM,GTBANK,188-189. *--> WORD 38 = v directional cosine of parent cluster *--> WORD 39 = w directional cosine of parent cluster +ADD,GTPROGRM,GTBANK,199. *--> WORD 52 = Dolby C *--> WORD 53 = TAXI *--> WORD 54 = SMART return code *--> WORD 55 = SMART pointer to parent *--> WORD 56 = BRAIN splittoff probability *--> WORD 57 = BRAIN pointer to parent *--> WORD 58 = CBTRACK and LOCATER userflags *--> WORD 59 = golden part 1 = gold *--> WORD 60 = hitpattern for tracks binary coded *--> WORD 61 = quality from hhmenu *--> WORD 62 = user defineable *--> WORD 63 = user defineable *--> WORD 64 = user defineable *--> WORD 65 = user defineable *--> WORD 66 = user defineable +REP,GTPROGRM,GTBANK,215-217. &SEQ,TCFLAG. &SEQ,BCFLAG. * INTEGER ND +REP,GTPROGRM,GTBANK,223-227. > NPEDS,LINK,ITVTV,IVRTX, > ITVVH,ITCVH,ILH REAL CHI2 +REP,GTPROGRM,GTBANK,237. INTEGER NNTKS,IVERSQ,ICD, NENT, NPBS, IERR +ADD,GTPROGRM,GTBANK,267. * * If locater was not (re)tracked and no locater vertex bank exists, * save the global tracking vertex bank. * IF (LTCVX.EQ.0 .AND. LTVTX.NE.0 .AND. .NOT. TRAKTC) THEN CALL ZSHUNT(IXSTOR,LTVTX,LHTRK,-1,1) * * If BCTRAK was (re)tracked update the neutral vertex info: * IF (PEDSBC) THEN * * Is there an old neutral vertex bank? * ITVTV = LQ(LTVTX-IQ(LTVTX+1)) IF (IQ(ITVTV+3).NE.1000) ITVTV=0 IF (ITVTV.EQ.0) THEN IF (IQ(LTVTX+1).LE.0) THEN IQ(LTVTX+1) = 1 ELSE IQ(LTVTX+1) = IQ(LTVTX+1) + 1 ENDIF * Make sure there is enough link space. IF (IQ(LTVTX-2) .LT. IQ(LTVTX+1)) THEN CALL MZPUSH(IXTVTX,LTVTX, IQ(LTVTX+1)-IQ(LTVTX-2),0,' ') ENDIF MTVTV(1) = MHOL CALL UCOPY(MTCVT(2),MTVTV(2),3) NMX = 10 CALL MZIOBK(MTVTV,NMX,'4I 10F') CALL MZLIFT(IXTVTX,ITVTV,LTVTX,-IQ(LTVTX+1),MTVTV,0) ENDIF IQ(ITVTV+3) = 1000 Q(ITVTV+5) = VRTXBC(1) Q(ITVTV+6) = VRTXBC(2) Q(ITVTV+7) = VRTXBC(3) ENDIF GOTO 600 ENDIF +ADD,GTPROGRM,GTBANK,448. * end skip copy of TVTV banks. 600 CONTINUE +REP,GTPROGRM,GTBANK,941. IQ(LHTRK+2) = IQ(LTVTX+1) +REP,GTPROGRM,GTBANK,950-951. IF (LTCVX.NE.0) THEN ITCVT = LQ(LTCVX-1) IQ(ITCVT+2) = NPBS ENDIF +ADD,GTPROGRM,GTINIT,0. *CMZU: 1.37/00 01/07/96 19.42.55 by Kaemmle +REP,GTPROGRM,GTINIT,63. DATA NTRKS/4HTTKS, 0, 0, 66, 0/ CBK DATA NTRKS/4HTTKS, 0, 0, 58, 0/ +REP,GTPROGRM,GTINIT,151. CBK CALL MZFORM('TTKS','12I 39F 4I 1F 2I',MRKSGT(5)) CALL MZFORM('TTKS','12I 39F 4I 1F 4I 6F',MRKSGT(5)) +ADD,GTPROGRM,GTRACK,0. *CMZU: 1.36/01 07/02/96 11.16.46 by F.-H.Heinsius +ADD,GTPROGRM,GTRACK,35. * Feb 6/96, F.-H.Heinsius * Do not remove global vertex bank, if locater * vertex does not exist because locater was not enabled. * +REP,GTPROGRM,GTRACK,41-42. &SEQ,TCFLAG. INTEGER IER INTEGER JTTKS,I,L +REP,GTPROGRM,GTRACK,52. IF (RTRKGT.AND.LHTRK.GE.0) THEN IF (LTCVX.EQ.0 .AND. LTVTX.NE.0 .AND. .NOT. TRAKTC) THEN C C--> drop everything, but detach TVTX vertex bank first. C CALL ZSHUNT(IXSTOR,LTVTX,L,2,1) CALL MZDROP(IXSTOR,LHTRK,'LV') LHTRK = 0 ELSE CALL MZWIPE(IXHTRK) ENDIF ENDIF +ADD,GTPROGRM,GTSOFF,0. *CMZU: 1.37/00 19/06/96 17.16.13 by Kaemmle +REP,GTPROGRM,GTSOFF,25-26. &SEQ,TRKPRM. INTEGER NSPOFF,NPED,NCHARG,NTRAKS,NXTAL INTEGER I,IERR,ITMP,IJDCF,IJDCL,JTHETA,JTEST INTEGER ITCTK,ITCHT,ILAYER,IHIT,IXTL,ITHE,IPHI +ADD,GTPROGRM,GTSOFF,32. LOGICAL QGOLD ! flag for golden particle LOGICAL QLAYER(23) +REP,GTPROGRM,GTSOFF,137-138. * define golden particle: DO I=1,NTRAKS ! loop over all particles JTTKS=LQ(LTTKS-IQ(LTTKS-2)-I) IQ(JTTKS+59) = 0 ! gold = undefined (default) IF( IQ(JTTKS+4) .EQ. 0) THEN ! if part_charge = 0 (peds) IXTL = IQ(JTTKS+11)/100 ! get compount index CALL BITOPT(IXTL,IPHI,ITHE) QGOLD = DOLBGT ! dolby done & .AND. (IQ(JTTKS+52) .EQ. 0 ) ! dolbyc flag & .AND. TAXIGT ! taxi done & .AND. (IQ(JTTKS+53) .EQ. 0 ) ! taxi flag & .AND. ( Q(JTTKS+33) .LE. 0.96) ! e1/e9 < 0.96 & .AND. ( Q(JTTKS+13) .GE. 13. ) ! E_central > 13. MeV & .AND. ( ITHE.GT.1 .AND. ITHE.LT.26 ) ! exclude Xtl_type 13 * IF(QGOLD) NGAMMA = NGAMMA +1 ! count golden gammmas ELSE ! for charged particles ITMP = IQ(JTTKS +10) ! track quality C NHIT = MOD(ITMP,100) ! nhits all ITMP = ITMP/100 IJDCF = MOD(ITMP,100) ! first layer hit ITMP = ITMP/100 C IERLOC = MOD(ITMP,100) ! error code ITMP = ITMP/100 IJDCL = MOD(ITMP,100) ! last layer hit C ITMP = ITMP/100 C NHPWC = MOD(ITMP,100) ! nhits pwc C NHJDC = NHIT-NHPWC ! nhits jdc QGOLD = ( Q(JTTKS +13) .GT. 0.01 ) ! chi2 gt 0.01 & .AND. ( Q(JTTKS +13) .LT. 1.2 ) ! chi2 lt 1.2 & .AND. ( IJDCF .LE. 3 ) ! first hit & .AND. ( IJDCL .GE. 21 ) ! last hit * IF(QGOLD) NLONG = NLONG +1 ! count golden tracks ENDIF IF (QGOLD) IQ(JTTKS+59) = 1 ! set gold flag ENDDO * bitpattern for hits: IF((LTCHT .GT. 0) .AND. (LTCTK .GT. 0)) THEN ! if banks exist DO I=1,NTRAKS ! loop over all particles JTTKS=LQ(LTTKS-IQ(LTTKS-2)-I) IF( IQ(JTTKS+4) .NE. 0) THEN ! if part_charge != 0 tracks DO ILAYER = 1, 23 ! clear array QLAYER(ILAYER) = .FALSE. ENDDO * find first hit ITCTK = LQ(LTCTK-I) ! pointer in TCTK bank ILAYER = IQ(ITCTK+2) ! layer of hit 1 IHIT = IQ(ITCTK+3) ! hit# of hit 1 1000 CONTINUE QLAYER(ILAYER) = .TRUE. ! mark layer * find next hits * pointer to TCHT bank: ITCHT = LQ(LTCHT-ILAYER) + (IHIT -1)*LENHT ILAYER = IQ(ITCHT+3) ! get next layer IHIT = IQ(ITCHT+4) ! get next hit IF( (ILAYER .GT. 0) .AND. (IHIT .GT. 0)) GOTO 1000 * code hitpattern into ITMP ITMP = 0 DO ILAYER = 23 , 1, -1 ! loop over all layers ITMP = ITMP * 2 ! shift bits of ITMP IF(QLAYER(ILAYER)) ITMP = ITMP +1 ! set bit if layer was hit ENDDO IQ(JTTKS+60) = ITMP ! store result ENDIF ENDDO ENDIF RETURN END +ADD,$KUMACS,INSTALL,0. *CMZU: 1.36/02 29/05/96 18.33.52 by F.-H.Heinsius +DEL,$KUMACS,INSTALL,32. +REP,$KUMACS,INSTALL,83-85. Endcase (IBMRT) Select $OS (SGI) Select $OS (SOLARIS) Select SUN +REP,$KUMACS,INSTALL,107-109. XACL = -XACLP else XACL = -XADCLP +REP,$KUMACS,INSTALL,142. (HPUX,SGI,SUN,DECS,IBMRT,SOLARIS) DEBUGOPT=' -g -C' +REP,$KUMACS,INSTALL,150. Case $OS In (VMS) DEBUGOPT=' ' (UNIX) DEBUGOPT=' -O ' Endcase +REP,$KUMACS,INSTALL,180-193. Set '`which g77` -c'//[DEBUGOPT]//' -w $compfile' -C f77 Set '`which gcc` -c'//[DEBUGOPT]//' -w $compfile' -C C else Case $MACHINE In (HPUX) Set 'f77 -c'//[DEBUGOPT]//' +ppu $compfile' -C f77 Set 'cc -c -O -w '//[DEBUGOPT]//' $compfile' -C C (SUN) Set 'f77 -c'//[DEBUGOPT]//' -fnonstd -Nl100 -w $compfile' -C f77 Set 'gcc -c'//[DEBUGOPT]//' -w $compfile' -C C (SOLARIS) Set 'f77 -c'//[DEBUGOPT]//' -w $compfile' -C f77 Set 'gcc -c'//[DEBUGOPT]//' -w $compfile' -C C (IBMRT) Set 'xlf -c'//[DEBUGOPT]//' -qextname $compfile' -C f77 Set 'cc -c -w '//[DEBUGOPT]//' $compfile' -C C (SGI) Set 'f77 -c'//[DEBUGOPT]//' $compfile G 3' -C f77 Set 'cc -c -w '//[DEBUGOPT]//' $compfile' -C C (DECS) Set 'f77 -c -w -Nl99 '//[DEBUGOPT]//' $compfile' -C f77 Set 'cc -c -w '//[DEBUGOPT]//' $compfile' -C C +REP,$KUMACS,INSTALL,200-201. (UNIX) Set 'f77 -c -w -Nl99 '//[DEBUGOPT]//' $compfile' -C f77 Set 'cc -c -w '//[DEBUGOPT]//' $compfile' -C C