SUBROUTINE KINEMA C C This is a routine to look at kinematics. C C 01-Apr-1995 Modified to use TD version of RD_TRK C 04-Apr-1995 Added code from JRS to flag target fibers at t=0 and C at t=DStime. Also added JRS code to do z fitting in RS C and to get kaon stopping z position in target. C 04-May-1995 Call utc_track from the dplot. C 19-Jul-1995 Use PRPHXT, etc. instead of PRPHXT2. C Fixed bug in calculation of d0vtx. C Added more info on UTC-RSSC matching; deleted some useless C scalers. C-- Global declarations $$IMPLICIT $$INCLUDE 'KOFIA$INCLUDE:DC_TRACK.PAR' $$INCLUDE 'KOFIA$INCLUDE:FAIL.PAR' $$INCLUDE 'KOFIA$INCLUDE:TD.PAR' $$INCLUDE 'KOFIA$INCLUDE:BCS.INC' $$INCLUDE 'KOFIA$INCLUDE:INFO.CMN' $$INCLUDE 'KOFIA$INCLUDE:LUNS.CMN' $$INCLUDE 'KOFIA$INCLUDE:HCUTS.CMN' $$INCLUDE 'KOFIA$INCLUDE:SCALER.CMN' $$INCLUDE 'KOFIA$INCLUDE:CFAIL.CMN' $$INCLUDE 'KOFIA$INCLUDE:TR2BITS.CMN' $$INCLUDE 'KOFIA$INCLUDE:RDTRACK.CMN' $$INCLUDE 'KOFIA$INCLUDE:RDDATA.CMN' ! needed for RSTCK $$INCLUDE 'KOFIA$INCLUDE:RD_ANAL.CMN' $$INCLUDE 'KOFIA$INCLUDE:TTIN.CMN' $$INCLUDE 'KOFIA$INCLUDE:TTINP.CMN' $$INCLUDE 'KOFIA$INCLUDE:TTOUT.CMN' $$INCLUDE 'KOFIA$INCLUDE:UTC_GEOM.CMN' $$INCLUDE 'KOFIA$INCLUDE:UTC_CLUSTERS.CMN' $$INCLUDE 'KOFIA$INCLUDE:UTC_CANDIDATE.CMN' $$INCLUDE 'KOFIA$INCLUDE:UTC_XYZ.CMN' $$INCLUDE 'KOFIA$INCLUDE:DC_TRACK.CMN' $$INCLUDE 'KOFIA$INCLUDE:SQGEOMD.CMN' $$INCLUDE 'KOFIA$INCLUDE:UTC_FIT_INPUT.CMN' $$INCLUDE 'KOFIA$INCLUDE:ADCAMP.CMN' $$INCLUDE 'KOFIA$INCLUDE:FBTDC.CMN' $$INCLUDE 'KOFIA$INCLUDE:TDCHANNEL.CMN' $$INCLUDE 'KOFIA$INCLUDE:TRKTIM_MOD.CMN' $$INCLUDE 'KOFIA$INCLUDE:utc_xy_pat.cmn' ! Needed for B field C-- HBOOK/PAW stuff INTEGER*4 HBSIZE PARAMETER(HBSIZE=1000000) COMMON/PAWC/HMEMOR(HBSIZE) REAL*4 HMEMOR INTEGER*4 NPRIME PARAMETER(NPRIME=1024) INTEGER*4 NUMT,JJ c PARAMETER(NUMT=42) PARAMETER(NUMT=62) REAL*4 XFIL(NUMT) CHARACTER*8 NAMES(NUMT) INTEGER*4 IOFF PARAMETER(IOFF=1000) C-- Parameters REAL*4 MMU PARAMETER(MMU=105.6584) REAL*4 MPI PARAMETER(MPI=139.5679) REAL*4 RIC1 PARAMETER(RIC1=6.0) REAL*4 RIC2 PARAMETER(RIC2=6.64) INTEGER*4 PIDMU,PIDPI PARAMETER(PIDMU=2,PIDPI=1) C-- Other local declarations INTEGER*4 IERR INTEGER*4 ITDC INTEGER*4 TRIG INTEGER*4 ITRACK INTEGER*4 NLAYFIT,NHITPL(12),NPTXY,NPTZ,NDOF INTEGER*4 ICELL,ILAY,ISLAY,IP,IC,NLAYER,IHIT INTEGER*4 PID INTEGER*4 NRUN_OLD,NSCL(6) INTEGER*4 I INTEGER*4 IRDSEC,IUTSEC INTEGER*4 IROW,IELE INTEGER*4 ICODE,NTIMES REAL*4 PI,TWOPI REAL*4 ETG,RTG REAL*4 RRS,ERS REAL*4 PDC,COS3D,PHI0,EDC,RDC,D0,TANL REAL*4 XIC1,XIC2,YIC1,YIC2,ZIC1,ZIC2 REAL*4 DXIC1,DXIC2,DYIC1,DYIC2,DZIC1,DZIC2 REAL*4 RIC,EICMU,EICPI,EIC REAL*4 DCDDX REAL*4 RPCAL REAL*4 PTOT,ETOT,RTOT REAL*4 CHIDF,CHIPROB,CHIXY REAL*4 PIKTIME REAL*4 KVTX(3),D0VTX,PHI0VTX,PIEXIT(3),D0PI,XKVTX,YKVTX REAL*4 DUMMY REAL*4 TTDISP(3),TTROT,SINTT,COSTT REAL*4 VEC(3) REAL*4 SCALER(6) REAL*4 XSC1,XSC2,YSC1,YSC2,ZSC1,ZSC2 REAL*4 DXSC1,DXSC2,DYSC1,DYSC2,DZSC1,DZSC2 REAL*4 RSC1,RSC2 REAL*4 PHIUT1,PHIUT2,PHISC1,PHISC2,DPHI1,DPHI2 REAL*4 DUTSC1,DUTSC2,DZ1,DZ2 REAL*4 ELO,EHI,PLO,PHI,RLO,RHI REAL*4 CHIMIN REAL*4 XTC,YTC,RTC REAL*4 DSTIME,TTRK,TERRTRK REAL*4 CPU_BEFORE,CPU_AFTER,CPU_UTC,CPU_RDTRK,CPU_UPTD REAL*4 CPU_DPLOT,CPU_DPLOT1,CPU_DPLOT2 REAL*4 MYX,MYY,MYZ,MYDZ1,MYDZ2 REAL*4 ZZPOS(6),RESZZ(6),NZZCL,NSIZZ(12) LOGICAL*4 LUTC,LRANGE,SIG,STATUS C-- Functions REAL*4 DEDX_SCIN REAL*4 RGSCIN REAL*4 PROB LOGICAL*4 CIRCLE_EXIT C-- Data statements DATA NAMES/'NRUN','NEVT','KB1', & 'NPTXY','NLAYXY','NPTZ','PDC','COS3D','PHI0','CHIPROB', & 'D0VTX','D0PI','PIKTIME', & 'RDC','EDC','RRS','ERS','RTG','ETG','RIC','EIC', & 'PTOT','ETOT','RTOT','DUTSC1','DUTSC2','DZ1','DZ2', & 'PHIUT1','PHIUT2','ZSC1','ZSC2','TRIG','NPI', & 'TOFF','XKVTX','YKVTX','MYDZ1','MYDZ2','TANL', & 'IT2SEC','BFLD', & 'ZZPOS1','ZZPOS2','ZZPOS3','ZZPOS4','ZZPOS5','ZZPOS6', & 'RESZZ1','RESZZ2','RESZZ3','RESZZ4','RESZZ5','RESZZ6', & 'NZZCL', & 'NSIZZ1','NSIZZ2','NSIZZ3','NSIZZ4','NSIZZ5','NSIZZ6', & 'ITRACK'/ SAVE C *************************************** C Global init entrypoint C *************************************** ENTRY DEFINE C-- Initialize HBOOK CALL HLIMIT(HBSIZE) C-- Open the HBOOK RZ file given by KOFIA_HIS CALL HBKINI(IERR) IF(IERR.NE.0) THEN CALL KERROR(4,1,'define','Problem opening hbook file!!!') STOP ENDIF C-- Book the ntuples CALL HBOOKN(99,'Kinematics',NUMT,'KOFIA',NPRIME,NAMES) c-- Book the histograms C-- Initialize the cpu time counter CPU_UTC = 0. CPU_RDTRK = 0. CPU_UPTD = 0. CPU_DPLOT = 0. C-- Set up the target geometry CALL SQGEOM C-- Calculate pi and two pi PI = 2.0*ASIN(1.0) TWOPI = 2.0*PI C-- Use TD version of RD_TRK? IF(PARAM(98).EQ.1.0) THEN ITDC=1 ELSE ITDC=0 ENDIF C-- Assign particle mass IF(PARAM(99).EQ.1.0) THEN PID = PIDPI ELSE PID = PIDMU ENDIF C-- See if we want to apply a correction to the target position IF(PARAM(50).NE.0.) THEN TTDISP(1) = PARAM(51) TTDISP(2) = PARAM(52) TTDISP(3) = PARAM(53) TTROT = PARAM(54) ELSE TTDISP(1) = 0. TTDISP(2) = 0. TTDISP(3) = 0. TTROT = 0. ENDIF SINTT = SIN(TTROT) COSTT = COS(TTROT) RETURN C *************************************** C Event analysis C *************************************** ENTRY DPLOT CALL TIMEX(CPU_DPLOT1) CALL BATCH_LOG C-- Initialize stuff NPTXY=-1 NLAYFIT=-1 NPTZ=-1 PDC=-1. COS3D=-99. PHI0=-1. CHIPROB=-1. D0VTX=-1. D0PI=-1. PIKTIME=-1. RDC=-1. EDC=-1. RRS=-1. ERS=-1. RTG=-1. ETG=-1. RIC=-1. EIC=-1. PTOT=-1. ETOT=-1. RTOT=-1. DUTSC1=-99. DUTSC2=-99. DZ1=-99. DZ2=-99. ZSC1=-99. ZSC2=-99. TANL=-99. C-- Scaler info (lifted from pass1.cdf) if(nrun.ne.nrun_old) then if(nscaler_map.le.0) then ! the scaler record is not encountered go to 5 endif do i=1,6 nscl(i)=0 enddo chensm do i=1,scaler_size chensm if(scaler_descrip(i,nscaler_map) .eq. chensm & 'KB_1 ') nscl(1)=I chensm if(scaler_descrip(i,nscaler_map) .eq. chensm & 'KB_2 ') nscl(2)=I chensm if(scaler_descrip(i,nscaler_map) .eq. chensm & 'Ck ') nscl(3)=I chensm if(scaler_descrip(i,nscaler_map) .eq. chensm & 'Cpi ') nscl(4)=I chensm if(scaler_descrip(i,nscaler_map) .eq. chensm & 'T.2 ') nscl(5)=I chensm if(scaler_descrip(i,nscaler_map) .eq. chensm & 'KB_L ') nscl(6)=I chensm enddo nrun_old=nrun endif chensm do i=1,6 chensm if(nscl(i).ne.0) then chensm SCALER(i)=scaler_current(nscl(i),nscaler_map) chensm else chensm SCALER(i)=0. chensm endif chensm enddo 5 CONTINUE C-- Unpack trigger info CALL TR2UNP(0) IF(T2_KM21) THEN TRIG=1 ELSEIF(T2_KM22) THEN TRIG=2 ELSEIF(T2_KP21) THEN TRIG=3 ELSEIF(T2_KP22) THEN TRIG=4 ELSEIF(T2_PNN1) THEN TRIG=5 ELSEIF(T2_PNN2) THEN TRIG=6 ELSEIF(T2_PNN1L0) THEN TRIG=7 ELSEIF(T2_PNN1L0_OLD) THEN TRIG=8 ELSEIF(T2_KP23) THEN TRIG=9 ELSEIF(T2_3GAM) THEN TRIG=10 ELSEIF(T2_KM2G) THEN TRIG=11 ELSE TRIG=0 ENDIF IF(DEL_CO) TRIG=-TRIG C-- Get the detector strobe time IF(ITDC.EQ.1) THEN CALL TIMEX(CPU_BEFORE) CALL UPTDMOD('TR',2,1,0,-100.,200.,'CAL') CALL TIMEX(CPU_AFTER) CPU_UPTD = CPU_UPTD + CPU_AFTER-CPU_BEFORE IF(NPULSE_C.GE.1) THEN DSTIME=EDGETD_C(1) ELSE DSTIME=0. ENDIF ENDIF C-- Range-stack tracking IF(NEVT.NE.NEV_RT) THEN CALL TIMEX(CPU_BEFORE) IF(ITDC.EQ.1) THEN CALL RD_TRK(ITDC) ELSE CALL RD_TRK_OLD(ITDC) ENDIF CALL TIMEX(CPU_AFTER) CPU_RDTRK = CPU_RDTRK+CPU_AFTER-CPU_BEFORE ENDIF IF(NTRK.LE.0) GO TO 666 ERS = ETRK(1) IRDSEC = 1+(ITRK(1,1)-1)/21 IF(NTRK.GT.0) THEN UTCIN_SEC = 1+(ITRK(1,1)-1)/21 ! T.2 sector from RD_TRK IF(ITDC.EQ.1) THEN c CALL TRKTIM_RD(ITRK(1,1),NHTRK(1),TTRK,TERRTRK,NTIMES,ICODE,0) CALL TRKTIM_RD(1,0) TTRK = TIM_TM ICODE = ICODE_TM IF(ICODE.NE.0) THEN UTCIN_TOFF = TTRK-DSTIME ELSE UTCIN_TOFF = TTDOTA(1)-DSTIME ENDIF ELSE UTCIN_TOFF=0. ENDIF ELSE UTCIN_SEC = TSEC_SCF ! T.2 sector from trigger UTCIN_TOFF = 0. ENDIF ccccc IF(ITDC.EQ.1) CALL RD_TRK_ZFIT C-- UTC tracking CALL TIMEX(CPU_BEFORE) CALL UTC_TRACK(.TRUE.,.TRUE.) CALL TIMEX(CPU_AFTER) CPU_UTC = CPU_UTC + CPU_AFTER-CPU_BEFORE C-- Target analysis (using timing) UTCIN_TGTX = -100. UTCIN_TGTY = -100. UTCIN_TGTZ = -100. DCINT(1)=0. DCINT(2)=0. IF(ITDC.EQ.1) THEN TINPUT = DSTIME ELSE TINPUT=-100. ENDIF CALL TTPAT IF(IQUALT.EQ.0) THEN ETG = ENERPT PIKTIME = TIMPT-TIMKT VEC(1) = VTXTG+TTDISP(1) VEC(2) = VTYTG+TTDISP(2) KVTX(1) = VEC(1)*COSTT - VEC(2)*SINTT KVTX(2) = VEC(1)*SINTT + VEC(2)*COSTT KVTX(3) = VTZTG+TTDISP(3) XKVTX = KVTX(1) YKVTX = KVTX(2) UTCIN_TGTX = KVTX(1) UTCIN_TGTY = KVTX(2) UTCIN_TGTZ = KVTX(3) VEC(1) = PRPHXT+TTDISP(1) VEC(2) = PRPHYT+TTDISP(2) PIEXIT(1) = VEC(1)*COSTT - VEC(2)*SINTT PIEXIT(2) = VEC(1)*SINTT + VEC(2)*COSTT ENDIF C-- Target fibers in time with detector strobe IF(ITDC.EQ.1) THEN UTCIN_NPI = 0 CALL ADCUNP('TT','CAL') CALL TDCUNP('TT','CAL',DSTIME-5.,DSTIME+5.) DO IROW = 1,23 DO IELE = 1,24 IF(TTCAL(IELE,IROW).GT.0..AND.TTTHIT(IELE,IROW).GT.0) THEN UTCIN_NPI = UTCIN_NPI+1 IF(UTCIN_NPI.LE.413) THEN UTCIN_TGTPI(1,UTCIN_NPI) = XCNT(IELE,IROW) UTCIN_TGTPI(2,UTCIN_NPI) = YCNT(IELE,IROW) ENDIF ENDIF END DO END DO ENDIF C-- See if there was a UTC track pointing to the RD track CHIMIN = 9999. LUTC = .FALSE. DO ITRACK=1,NTRACK_D IF(CHARGE_D(ITRACK).NE.0.) THEN SIG = CHARGE_D(ITRACK).GT.0. RTC = RSTCK STATUS = CIRCLE_EXIT(XCEN_D(ITRACK),YCEN_D(ITRACK), & RADIUS_D(ITRACK),RTC,SIG,XTC,YTC) IF(STATUS) THEN CALL FLAT_CORR(XTC,YTC,RTC) STATUS = CIRCLE_EXIT(XCEN_D(ITRACK),YCEN_D(ITRACK), & RADIUS_D(ITRACK),RTC,SIG,XTC,YTC) PHI = ATAN2(YTC,XTC) IF(PHI.LT.0.) PHI=PHI+TWOPI IUTSEC = INT(12.*PHI/PI) + 1 IF(IUTSEC.EQ.IRDSEC) THEN IF(PZ_D(ITRACK).NE.0.) THEN LUTC = .TRUE. IF(CHIXY_D(ITRACK).LT.CHIMIN) THEN CHIMIN = CHIXY_D(ITRACK) PDC = PTOTAL_D(ITRACK) COS3D = COS3_D(ITRACK) TANL = PZ_D(ITRACK)/PXY_D(ITRACK) CALL RABRDP(CHARGE_D(ITRACK),RADIUS_D(ITRACK), & XCEN_D(ITRACK),YCEN_D(ITRACK), & DUMMY,D0,PHI0) IF(PHI0.LT.0.) PHI0=PHI0+TWOPI D0VTX = D0 - KVTX(1)*SIN(PHI0) + KVTX(2)*COS(PHI0) D0PI = D0 - PIEXIT(1)*SIN(PHI0) + PIEXIT(2)*COS(PHI0) IF(RADIUS_D(ITRACK).NE.0.) THEN NDOF = NPTSXY_D(ITRACK)-3 ELSE NDOF = NPTSXY_D(ITRACK)-2 ENDIF CHIDF = CHIXY_D(ITRACK) CHIXY = CHIDF*FLOAT(NDOF) CHIPROB = PROB(CHIXY,NDOF) NLAYFIT = NLAYXY_D(ITRACK) NPTXY = NPTSXY_D(ITRACK) NPTZ = NPTSZ_D(ITRACK) IF(PID.EQ.PIDMU) THEN EDC = SQRT(PDC**2+MMU**2)-MMU ELSE EDC = SQRT(PDC**2+MPI**2)-MPI ENDIF ENDIF ELSE PDC = -PXY_D(ITRACK) ENDIF ENDIF ! UTC track matches RD track ENDIF ! successful return from circle_exit ENDIF ! charged track END DO C-- Range-stack range analysis IF(.NOT.LUTC) GO TO 7734 NTRACK_RS = 0 CALL RD_MAIN(PID,ITDC,'B') IF(NTRACK_RS.GE.1.AND.PZ_D(ITRACK_RS(1)).NE.0.) THEN RRS = RANGE_RS(1) ERS = E_RS(1) PDC = PTOTAL_D(ITRACK_RS(1)) COS3D = COS3_D(ITRACK_RS(1)) TANL = PZ_D(ITRACK_RS(1))/PXY_D(ITRACK_RS(1)) CALL RABRDP(CHARGE_D(ITRACK_RS(1)),RADIUS_D(ITRACK_RS(1)), & XCEN_D(ITRACK_RS(1)),YCEN_D(ITRACK_RS(1)), & DUMMY,D0,PHI0) IF(PHI0.LT.0.) PHI0=PHI0+TWOPI D0VTX = D0 - KVTX(1)*SIN(PHI0) + KVTX(2)*COS(PHI0) D0PI = D0 - PIEXIT(1)*SIN(PHI0) + PIEXIT(2)*COS(PHI0) IF(RADIUS_D(ITRACK_RS(1)).NE.0.) THEN NDOF = NPTSXY_D(ITRACK_RS(1))-3 ELSE NDOF = NPTSXY_D(ITRACK_RS(1))-2 ENDIF CHIDF = CHIXY_D(ITRACK_RS(1)) CHIXY = CHIDF*FLOAT(NDOF) CHIPROB = PROB(CHIXY,NDOF) NLAYFIT = NLAYXY_D(ITRACK_RS(1)) NPTXY = NPTSXY_D(ITRACK_RS(1)) NPTZ = NPTSZ_D(ITRACK_RS(1)) IF(PID.EQ.PIDMU) THEN EDC = SQRT(PDC**2+MMU**2)-MMU ELSE EDC = SQRT(PDC**2+MPI**2)-MPI ENDIF LRANGE=.TRUE. ELSE RRS=-1. LRANGE = .FALSE. ENDIF IF(.NOT.LRANGE) GO TO 7734 C-- Target range RTG = PLTHT/SQRT(1.-COS3D**2) C-- I-counter analysis CALL TRKPOS(ITRACK_RS(1),RIC1,0.,0., & XIC1,YIC1,ZIC1,DXIC1,DYIC1,DZIC1) CALL TRKPOS(ITRACK_RS(1),RIC2,0.,0., & XIC2,YIC2,ZIC2,DXIC2,DYIC2,DZIC2) IF(XIC1.NE.0..AND.YIC1.NE.0..AND.XIC2.NE.0..AND.YIC2.NE.0.) THEN RIC = SQRT((XIC2-XIC1)**2+(YIC2-YIC1)**2+(ZIC2-ZIC1)**2) IF(PID.EQ.PIDMU) THEN DCDDX = DEDX_SCIN(PIDMU,EDC) ELSE DCDDX = DEDX_SCIN(PIDPI,EDC) ENDIF IF(DCDDX.LT.10.) EIC = DCDDX*RIC ENDIF C-- Total range/energy/momentum RPCAL = RIC+RTG IF(PID.EQ.PIDMU) THEN RDC=RGSCIN(PDC,2,PIDMU) PTOT=RGSCIN(RDC+RPCAL,3,PIDMU) ELSE RDC=RGSCIN(PDC,2,PIDPI) PTOT=RGSCIN(RDC+RPCAL,3,PIDPI) ENDIF RTOT=RRS+RPCAL ETOT=ERS+ETG+EIC C-- UTC-RSSC matching IF(LUTC) THEN IF(RS_X(1,1).LT.100..AND.RS_Y(1,1).LT.100..AND. & RS_Z(1,1).LT.100.) THEN CALL TRKPOS(ITRACK_RS(1),0.,RS_X(1,1),RS_Y(1,1), & XSC1,YSC1,ZSC1,DXSC1,DYSC1,DZSC1) IF(XSC1.NE.0..OR.YSC1.NE.0.) THEN PHIUT1 = ATAN2(YSC1,XSC1) PHISC1 = ATAN2(RS_Y(1,1),RS_X(1,1)) DPHI1 = PHIUT1-PHISC1 IF(DPHI1.GT.PI) DPHI1 = DPHI1-TWOPI IF(DPHI1.LT.-PI) DPHI1 = DPHI1+TWOPI DUTSC1 = SQRT( (RS_X(1,1)-XSC1)**2 + (RS_Y(1,1)-YSC1)**2 ) DUTSC1 = SIGN(DUTSC1,DPHI1) DZ1 = ZSC1 - RS_Z(1,1) RSC1 = SQRT(RS_X(1,1)**2 + RS_Y(1,1)**2) CALL MY_TRKPOS(ITRACK_RS(1),RSC1,MYX,MYY,MYZ) IF(MYX.NE.0..AND.MYY.NE.0.) THEN MYDZ1 = ZSC1-MYZ ELSE MYDZ1 = -99. ENDIF ENDIF ENDIF IF(RS_X(1,2).LT.100..AND.RS_Y(1,2).LT.100..AND. & RS_Z(1,2).LT.100.) THEN CALL TRKPOS(ITRACK_RS(1),0.,RS_X(1,2),RS_Y(1,2), & XSC2,YSC2,ZSC2,DXSC2,DYSC2,DZSC2) IF(XSC2.NE.0..OR.YSC2.NE.0.) THEN PHIUT2 = ATAN2(YSC2,XSC2) PHISC2 = ATAN2(RS_Y(1,2),RS_X(1,2)) DPHI2 = PHIUT2-PHISC2 IF(DPHI2.GT.PI) DPHI2 = DPHI2-TWOPI IF(DPHI2.LT.-PI) DPHI2 = DPHI2+TWOPI DUTSC2 = SQRT( (RS_X(1,2)-XSC2)**2 + (RS_Y(1,2)-YSC2)**2 ) DUTSC2 = SIGN(DUTSC2,DPHI2) DZ2 = ZSC2 - RS_Z(1,2) RSC2 = SQRT(RS_X(1,2)**2 + RS_Y(1,2)**2) CALL MY_TRKPOS(ITRACK_RS(1),RSC2,MYX,MYY,MYZ) IF(MYX.NE.0..AND.MYY.NE.0.) THEN MYDZ2 = ZSC2-MYZ ELSE MYDZ2 = -99. ENDIF ENDIF ENDIF ENDIF C-- Fill the ntuple 7734 CONTINUE XFIL(1) = FLOAT(NRUN) XFIL(2) = FLOAT(NEVT) XFIL(3) = SCALER(1) XFIL(4) = FLOAT(NPTXY) XFIL(5) = FLOAT(NLAYFIT) XFIL(6) = FLOAT(NPTZ) XFIL(7) = PDC XFIL(8) = COS3D XFIL(9) = PHI0 XFIL(10) = CHIPROB XFIL(11) = D0VTX XFIL(12) = D0PI XFIL(13) = PIKTIME XFIL(14) = RDC XFIL(15) = EDC XFIL(16) = RRS XFIL(17) = ERS XFIL(18) = RTG XFIL(19) = ETG XFIL(20) = RIC XFIL(21) = EIC XFIL(22) = PTOT XFIL(23) = ETOT XFIL(24) = RTOT XFIL(25) = DUTSC1 XFIL(26) = DUTSC2 XFIL(27) = DZ1 XFIL(28) = DZ2 XFIL(29) = PHIUT1 XFIL(30) = PHIUT2 XFIL(31) = ZSC1 XFIL(32) = ZSC2 XFIL(33) = TRIG XFIL(34) = FLOAT(UTCIN_NPI) XFIL(35) = UTCIN_TOFF XFIL(36) = XKVTX XFIL(37) = YKVTX XFIL(38) = MYDZ1 XFIL(39) = MYDZ2 XFIL(40) = TANL XFIL(41) = FLOAT(IRDSEC) XFIL(42) = UTBFLD DO JJ=1,6 XFIL(42+JJ) = ZPOSCL(JJ,1) XFIL(48+JJ) = RESZCL(JJ,1) END DO XFIL(55)=NZCL(1) DO JJ=1,6 XFIL(55+JJ) = NSIZCL(JJ,1) END DO XFIL(62)=ITRACK CALL HFN(99,XFIL) C-- Skimmed output IF(PID.EQ.PIDMU) THEN C-- Kmu21's c ELO = 140. c EHI = 160. c RLO = 49.9 c RHI = 60.7 C-- Kmu22's ELO = 100. EHI = 120. RLO = 45. RHI = 55. PLO = 220. PHI = 240. ELSE ELO = 98 EHI = 112 RLO = 28 RHI = 33 PLO = 190. PHI = 210. ENDIF c IF(PDC.GT.0..AND.RTG.GT.0..AND.RIC.GT.0..AND. c & ERS.GT.0..AND.ETG.GT.0..AND.EIC.GT.0..AND. c & RRS.GT.0..AND.ETOT.GT.ELO.AND.ETOT.LT.EHI.AND. c & RTOT.GT.RLO.AND.RTOT.LT.RHI.AND. c & (PTOT.LT.PLO.OR.PTOT.GT.PHI)) THEN c c ICFAIL = 0 c ELSE c ICFAIL = 1 c ENDIF IF(PDC.LT.0..AND. & ERS.GT.100..AND.ERS.LT.160.AND. & ETG.GT.-1..AND.UTCIN_NPI.GE.3) THEN ICFAIL = 0 ELSE ICFAIL = 1 ENDIF C-- Keep only the banks we need c CALL BLIST(IBANK,'C=', c & 'LRIDEVCLTRIGTRI2RDPAUARAUCRATTFAUTRTTTRTSCT2M1T2') 666 CONTINUE CALL TIMEX(CPU_DPLOT2) CPU_DPLOT = CPU_DPLOT+CPU_DPLOT2-CPU_DPLOT1 RETURN C ******************************************************************** C EXEC_ON_EXIT entrypoint C ******************************************************************** ENTRY EXEC_ON_EXIT WRITE(LLOG,1000) CPU_DPLOT,CPU_UTC,CPU_RDTRK,CPU_UPTD WRITE(LOUT,1000) CPU_DPLOT,CPU_UTC,CPU_RDTRK,CPU_UPTD 1000 FORMAT(' CPU time for DPLOT: ',E15.8,/, & ' UTC_TRACK: ',E15.8,/, & ' RD_TRK: ',E15.8,/, & ' UPTDMOD: ',E15.8) RETURN END