--- /dev/null
+ SUBROUTINE PHOENE(MPASQR,MCHREN,BETA,IDENT)
+C.----------------------------------------------------------------------
+C.
+C. PHOTOS: PHOton radiation in decays calculation of photon ENErgy
+C. fraction
+C.
+C. Purpose: Subroutine returns photon energy fraction (in (parent
+C. mass)/2 units) for the decay bremsstrahlung.
+C.
+C. Input Parameters: MPASQR: Mass of decaying system squared,
+C. XPHCUT: Minimum energy fraction of photon,
+C. XPHMAX: Maximum energy fraction of photon.
+C.
+C. Output Parameter: MCHREN: Renormalised mass squared,
+C. BETA: Beta factor due to renormalisation,
+C. XPHOTO: Photon energy fraction,
+C. XF: Correction factor for PHOFAC.
+C.
+C. Author(s): S. Jadach, Z. Was Created at: 01/01/89
+C. B. van Eijk Last Update: 26/03/93
+C.
+C.----------------------------------------------------------------------
+ IMPLICIT NONE
+ DOUBLE PRECISION MPASQR,MCHREN,BIGLOG,BETA,DATA
+ INTEGER IWT1,IRN,IWT2
+ REAL*8 PRSOFT,PRHARD,PHORAN,PHOFAC
+ DOUBLE PRECISION MCHSQR,MNESQR
+ REAL*8 PNEUTR
+ INTEGER IDENT
+ REAL*8 PHOCHA
+ 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
+ REAL*8 PI,TWOPI
+ COMMON/PHPICO/PI,TWOPI
+ INTEGER IREP
+ REAL*8 PROBH,CORWT,XF
+ COMMON/PHOPRO/PROBH,CORWT,XF,IREP
+ LOGICAL INTERF,ISEC,IFTOP
+ REAL*8 FINT,FSEC
+ COMMON /PHOKEY/ FSEC,FINT,INTERF,ISEC,IFTOP
+C--
+ IF (XPHMAX.LE.XPHCUT) THEN
+ XPHOTO=0.0D0
+ RETURN
+ ENDIF
+C-- Probabilities for hard and soft bremstrahlung...
+ MCHREN=4.D0*MCHSQR/MPASQR/(1.D0+MCHSQR/MPASQR)**2
+ BETA=SQRT(1.D0-MCHREN)
+ BIGLOG=LOG(MPASQR/MCHSQR*(1.D0+BETA)**2/4.D0*
+ & (1.D0+MCHSQR/MPASQR)**2)
+ PRHARD=ALPHA/PI/BETA*BIGLOG*(LOG(XPHMAX/XPHCUT)-.75D0+XPHCUT/
+ &XPHMAX-.25D0*XPHCUT**2/XPHMAX**2)
+ PRHARD=PRHARD*PHOCHA(IDENT)**2*FINT*FSEC
+ IF (IREP.EQ.0) PROBH=0.D0
+ PRHARD=PRHARD*PHOFAC(0)
+ PROBH=PRHARD
+ PRSOFT=1.D0-PRHARD
+C--
+C-- Check on kinematical bounds
+ IF (PRSOFT.LT.0.1D0) THEN
+ DATA=PRSOFT
+ CALL PHOERR(2,'PHOENE',DATA)
+ ENDIF
+ IF (PHORAN(IWT1).LT.PRSOFT) THEN
+C--
+C-- No photon... (ie. photon too soft)
+ XPHOTO=0.D0
+ ELSE
+C--
+C-- Hard photon... (ie. photon hard enough).
+C-- Calculate Altarelli-Parisi Kernel
+ 10 XPHOTO=EXP(PHORAN(IRN)*LOG(XPHCUT/XPHMAX))
+ XPHOTO=XPHOTO*XPHMAX
+ IF (PHORAN(IWT2).GT.((1.D0+(1.D0-XPHOTO/XPHMAX)**2)/2.D0))
+ & GOTO 10
+ ENDIF
+C--
+C-- Calculate parameter for PHOFAC function
+ XF=4.D0*MCHSQR*MPASQR/(MPASQR+MCHSQR-MNESQR)**2
+ RETURN
+ END