4 C*******************************************************************
5 CThis subroutine performs elastic scattering between two nucleons
7 C*******************************************************************
8 SUBROUTINE HIJELS(PSC1,PSC2)
9 IMPLICIT DOUBLE PRECISION(D)
10 DIMENSION PSC1(5),PSC2(5)
11 #include "hiparnt.inc"
14 CC=1.0-HINT1(12)/HINT1(13)
15 RR=(1.0-CC)*HINT1(13)/HINT1(12)/(1.0-HIPR1(33))-1.0
16 BB=0.5*(3.0+RR+SQRT(9.0+10.0*RR+RR**2))
17 EP=SQRT((PSC1(1)-PSC2(1))**2+(PSC1(2)-PSC2(2))**2
18 & +(PSC1(3)-PSC2(3))**2)
20 ELS0=98.0/EP+52.0*(1.0+RR)**2
27 AMM=ECM**2-PCM1**2-PCM2**2-PCM3**2
28 IF(AMM.LE.PSC1(5)+PSC2(5)) RETURN
29 C ********elastic scattering only when approaching
31 PMAX=(AMM**2+AM1**2+AM2**2-2.0*AMM*AM1-2.0*AMM*AM2
32 & -2.0*AM1*AM2)/4.0/AMM
34 20 TT=RLU_HIJING(0)*MIN(PMAX,1.5)
35 ELS=98.0*EXP(-2.8*TT)/EP
36 & +52.0*EXP(-9.2*TT)*(1.0+RR*EXP(-4.6*(BB-1.0)*TT))**2
37 IF(RLU_HIJING(0).GT.ELS/ELS0) GO TO 20
38 PHI=2.0*HIPR1(40)*RLU_HIJING(0)
43 DB=SQRT(DBX**2+DBY**2+DBZ**2)
44 IF(DB.GT.0.99999999D0) THEN
45 DBX=DBX*(0.99999999D0/DB)
46 DBY=DBY*(0.99999999D0/DB)
47 DBZ=DBZ*(0.99999999D0/DB)
49 WRITE(6,*) ' (HIJELS) boost vector too large'
50 C ********Rescale boost vector if too close to unity.
52 DGA=1D0/SQRT(1D0-DB**2)
58 DBP=DBX*DP1+DBY*DP2+DBZ*DP3
59 DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP4)
65 DP1=-SQRT(TT)*SIN(PHI)
66 DP2=-SQRT(TT)*COS(PHI)
69 DBP=DBX*DP1+DBY*DP2+DBZ*DP3
70 DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP4)