C ================== SUBROUTINE DO_KINE C ================== IMPLICIT NONE #include "zescommon.inc" #include "zestmpcommon.inc" #include "ctrlcm.inc" INTEGER Ierr REAL XV(3),EmPzCut,PtCut,GammaCut, & EmPzCor,PtCor,GammaCor, & PxCut, PyCut, EtCut, PxCor, PyCor, EtCor, & yjb, Q2jb, xjb, & EE, EP, ST2, A, B, COSG, SING, GAMMA, & COSTH, SINTH, BETA, DELTA, NOUSE DATA NOUSE /-999.9/ DATA EE, EP /27.52, 819.91/ LOGICAL ITSDAT CALL MODIN('DO_KINE', IErr) C ---------------------------------------------- C --- check for MC vs DATA (T. H. 7 Aug 98 ----- C ---------------------------------------------- ITSDAT = .TRUE. if (CTRL_RUNPRD.eq.-1) ITSDAT = .FALSE. C ------------------------------------------------------ C --- corrected hadronic E-Pz and P_t for SINISTRA95 --- C ------------------------------------------------------ CALL SETVTX(XV) CALL CorAndCut(XV, & ZESTMP_Ncell_si, & ZESTMP_CellList_si, & CTRL_YEAR, & ITSDAT, & EmPzCut, & PxCut, & PyCut, & EtCut, & GammaCut, & EmPzCor, & PxCor, & PyCor, & EtCor, & GammaCor, & yjb, & Q2jb, & xjb, & Ierr) PtCut = sqrt(PxCut**2 + PyCut**2) PtCor = sqrt(PxCor**2 + PyCor**2) ZES_pth_si = PtCor ZES_empzh_si = EmPzCor IF (ZES_Eeu_si.gt.-999) THEN C ------------------------------------------ C --- electron kinematics for SINISTRA95 --- C ------------------------------------------ ST2 = SIN(ZES_Theta_si * 0.5)**2 ZES_yel_si = 1. - ZES_Eeu_si/EE * ST2 ZES_q2el_si = 4.0 * EE * ZES_Eeu_si * (1. - ST2) C ---------------------------------------------- C --- double angle kinematics for SINISTRA95 --- C ---------------------------------------------- A = ZES_V_H_px_zu**2 + ZES_V_H_py_zu**2 & -(ZES_V_H_E_zu-ZES_V_H_pz_zu)**2 B = ZES_V_H_px_zu**2 + ZES_V_H_py_zu**2 & +(ZES_V_H_E_zu-ZES_V_H_pz_zu)**2 IF (B.NE.0.0) THEN COSG = A/B GAMMA = ACOS(COSG) SING = SIN(GAMMA) COSTH = COS(ZES_Theta_si) SINTH = SIN(ZES_Theta_si) BETA = SING + SINTH - SIN(ZES_Theta_si+GAMMA) DELTA = SING + SINTH + SIN(ZES_Theta_si+GAMMA) ELSE BETA = 0.0 ENDIF IF (BETA.NE.0.0) THEN ZES_yda_si = (SINTH*(1.-COSG)) / BETA ZES_q2da_si = 4.0*(EE**2*SING*(1.0+COSTH)) / BETA ELSE ZES_yda_si = NOUSE ZES_q2da_si = NOUSE ENDIF ELSE ZES_yel_si = NOUSE ZES_q2el_si = NOUSE ZES_yda_si = NOUSE ZES_q2da_si = NOUSE ENDIF C ------------------------------------------------- C --- Jacquet Blondel kinematics for SINISTRA95 --- C ------------------------------------------------- ZES_yjb_si = (ZES_V_H_E_zu-ZES_V_H_pz_zu)/(2.0*EE) IF (ZES_Eeu_em.gt.-999) THEN C ---------------------------------------------- C --- corrected hadronic E-Pz and P_t for EM --- C ---------------------------------------------- CALL SETVTX(XV) CALL CorAndCut(XV, & ZESTMP_Ncell_em, & ZESTMP_CellList_em, & CTRL_YEAR, & ITSDAT, & EmPzCut, & PxCut, & PyCut, & EtCut, & GammaCut, & EmPzCor, & PxCor, & PyCor, & EtCor, & GammaCor, & yjb, & Q2jb, & xjb, & Ierr) PtCut = sqrt(PxCut**2 + PyCut**2) PtCor = sqrt(PxCor**2 + PyCor**2) ZES_pth_em = PtCor ZES_empzh_em = EmPzCor C ------------------------------------------ C --- electron kinematics for SINISTRA95 --- C ------------------------------------------ ST2 = SIN(ZES_Theta_em * 0.5)**2 ZES_yel_em = 1. - ZES_Eeu_em/EE * ST2 ZES_q2el_em = 4.0 * EE * ZES_Eeu_em * (1. - ST2) C ---------------------------------------------- C --- double angle kinematics for SINISTRA95 --- C ---------------------------------------------- A = ZESTMP_ZUFOPX_em**2 + ZESTMP_ZUFOPY_em**2 & -(ZESTMP_ZUFOEN_em-ZESTMP_ZUFOPZ_em)**2 B = ZESTMP_ZUFOPX_em**2 + ZESTMP_ZUFOPY_em**2 & +(ZESTMP_ZUFOEN_em-ZESTMP_ZUFOPZ_em)**2 IF (B.NE.0.0) THEN COSG = A/B GAMMA = ACOS(COSG) SING = SIN(GAMMA) COSTH = COS(ZES_Theta_em) SINTH = SIN(ZES_Theta_em) BETA = SING + SINTH - SIN(ZES_Theta_em+GAMMA) DELTA = SING + SINTH + SIN(ZES_Theta_em+GAMMA) ELSE BETA = 0.0 ENDIF IF (BETA.NE.0.0) THEN ZES_yda_em = (SINTH*(1.-COSG)) / BETA ZES_q2da_em = 4.0*(EE**2*SING*(1.0+COSTH)) / BETA ENDIF ELSE ZES_yel_em = NOUSE ZES_q2el_em = NOUSE ZES_yda_em = NOUSE ZES_q2da_em = NOUSE ENDIF C ------------------------------------------------- C --- Jacquet Blondel kinematics for SINISTRA95 --- C ------------------------------------------------- ZES_yjb_em = (ZESTMP_ZUFOEN_em-ZESTMP_ZUFOPZ_em)/(2.0*EE) CALL MODOUT('DO_KINE') RETURN END