SUBROUTINE PHOPRE(IPARR,WT,NEUDAU,NCHARB) C.---------------------------------------------------------------------- C. C. PHOTOS: Photon radiation in decays C. C. Purpose: Order (alpha) radiative corrections are generated in C. the decay of the IPPAR-th particle in the HEP-like C. common /PHOEVT/. Photon radiation takes place from one C. of the charged daughters of the decaying particle IPPAR C. WT is calculated, eventual rejection will be performed C. later after inclusion of interference weight. C. C. Input Parameter: IPPAR: Pointer to decaying particle in C. /PHOEVT/ and the common itself, C. C. Output Parameters: Common /PHOEVT/, either with or without a C. photon(s) added. C. WT weight of the configuration C. C. Author(s): Z. Was, B. van Eijk Created at: 26/11/89 C. Last Update: 26/05/93 C. C.---------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION MINMAS,MPASQR,MCHREN DOUBLE PRECISION BETA,EPS,DEL1,DEL2,DATA REAL*8 PHOCHA,PHOSPI,PHORAN,PHOCOR,MASSUM INTEGER IP,IPARR,IPPAR,I,J,ME,NCHARG,NEUPOI,NLAST,THEDUM INTEGER IDABS,IDUM INTEGER NCHARB,NEUDAU REAL*8 WT INTEGER NMXPHO PARAMETER (NMXPHO=10000) INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO REAL*8 PPHO,VPHO COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO), &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO) LOGICAL CHKIF COMMON/PHOIF/CHKIF(NMXPHO) INTEGER CHAPOI(NMXPHO) DOUBLE PRECISION MCHSQR,MNESQR REAL*8 PNEUTR COMMON/PHOMOM/MCHSQR,MNESQR,PNEUTR(5) DOUBLE PRECISION COSTHG,SINTHG REAL*8 XPHMAX,XPHOTO COMMON/PHOPHS/XPHMAX,XPHOTO,COSTHG,SINTHG REAL*8 ALPHA,XPHCUT COMMON/PHOCOP/ALPHA,XPHCUT INTEGER IREP REAL*8 PROBH,CORWT,XF COMMON/PHOPRO/PROBH,CORWT,XF,IREP C-- IPPAR=IPARR C-- Store pointers for cascade treatement... IP=IPPAR NLAST=NPHO IDUM=1 C-- C-- Check decay multiplicity.. IF (JDAPHO(1,IP).EQ.0) RETURN C-- C-- Loop over daughters, determine charge multiplicity 10 NCHARG=0 IREP=0 MINMAS=0.D0 MASSUM=0.D0 DO 20 I=JDAPHO(1,IP),JDAPHO(2,IP) C-- C-- C-- Exclude marked particles, quarks and gluons etc... IDABS=ABS(IDPHO(I)) IF (CHKIF(I-JDAPHO(1,IP)+3)) THEN IF (PHOCHA(IDPHO(I)).NE.0) THEN NCHARG=NCHARG+1 IF (NCHARG.GT.NMXPHO) THEN DATA=NCHARG CALL PHOERR(1,'PHOTOS',DATA) ENDIF CHAPOI(NCHARG)=I ENDIF MINMAS=MINMAS+PPHO(5,I)**2 ENDIF MASSUM=MASSUM+PPHO(5,I) 20 CONTINUE IF (NCHARG.NE.0) THEN C-- C-- Check that sum of daughter masses does not exceed parent mass IF ((PPHO(5,IP)-MASSUM)/PPHO(5,IP).GT.2.D0*XPHCUT) THEN C-- C-- Order charged particles according to decreasing mass, this to C-- increase efficiency (smallest mass is treated first). IF (NCHARG.GT.1) CALL PHOOMA(1,NCHARG,CHAPOI) C-- 30 CONTINUE DO 70 J=1,3 70 PNEUTR(J)=-PPHO(J,CHAPOI(NCHARG)) PNEUTR(4)=PPHO(5,IP)-PPHO(4,CHAPOI(NCHARG)) C-- C-- Calculate invariant mass of 'neutral' etc. systems MPASQR=PPHO(5,IP)**2 MCHSQR=PPHO(5,CHAPOI(NCHARG))**2 IF ((JDAPHO(2,IP)-JDAPHO(1,IP)).EQ.1) THEN NEUPOI=JDAPHO(1,IP) IF (NEUPOI.EQ.CHAPOI(NCHARG)) NEUPOI=JDAPHO(2,IP) MNESQR=PPHO(5,NEUPOI)**2 PNEUTR(5)=PPHO(5,NEUPOI) ELSE MNESQR=PNEUTR(4)**2-PNEUTR(1)**2-PNEUTR(2)**2-PNEUTR(3)**2 MNESQR=MAX(MNESQR,MINMAS-MCHSQR) PNEUTR(5)=SQRT(MNESQR) ENDIF C-- C-- Determine kinematical limit... XPHMAX=(MPASQR-(PNEUTR(5)+PPHO(5,CHAPOI(NCHARG)))**2)/MPASQR C-- C-- Photon energy fraction... CALL PHOENE(MPASQR,MCHREN,BETA,IDPHO(CHAPOI(NCHARG))) C-- C-- Energy fraction not too large (very seldom) ? Define angle. IF ((XPHOTO.LT.XPHCUT).OR.(XPHOTO.GT.XPHMAX)) THEN C-- C-- No radiation was accepted, check for more daughters that may ra- C-- diate and correct radiation probability... NCHARG=NCHARG-1 IF (NCHARG.GT.0) THEN IREP=IREP+1 GOTO 30 ENDIF ELSE C-- C-- Angle is generated in the frame defined by charged vector and C-- PNEUTR, distribution is taken in the infrared limit... EPS=MCHREN/(1.D0+BETA) C-- C-- Calculate sin(theta) and cos(theta) from interval variables DEL1=(2.D0-EPS)*(EPS/(2.D0-EPS))**PHORAN(THEDUM) DEL2=2.D0-DEL1 COSTHG=(1.D0-DEL1)/BETA SINTHG=SQRT(DEL1*DEL2-MCHREN)/BETA C-- C-- Determine spin of particle and construct code for matrix element ME=2.D0*PHOSPI(IDPHO(CHAPOI(NCHARG)))+1.D0 C-- C-- Weighting procedure with 'exact' matrix element, reconstruct kine- C-- matics for photon, neutral and charged system and update /PHOEVT/. C-- Find pointer to the first component of 'neutral' system DO I=JDAPHO(1,IP),JDAPHO(2,IP) IF (I.NE.CHAPOI(NCHARG)) THEN NEUDAU=I GOTO 51 ENDIF ENDDO C-- C-- Pointer not found... DATA=NCHARG CALL PHOERR(5,'PHOKIN',DATA) 51 CONTINUE NCHARB=CHAPOI(NCHARG) NCHARB=NCHARB-JDAPHO(1,IP)+3 NEUDAU=NEUDAU-JDAPHO(1,IP)+3 WT=PHOCOR(MPASQR,MCHREN,ME) ENDIF ELSE DATA=PPHO(5,IP)-MASSUM CALL PHOERR(10,'PHOTOS',DATA) ENDIF ENDIF C-- RETURN END