]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HIJING/hijing1_36/hijels.F
Typo in the calculation of procetile-target distance is corrected
[u/mrichter/AliRoot.git] / HIJING / hijing1_36 / hijels.F
1 * $Id$
2 C
3 C
4 C*******************************************************************
5 CThis subroutine performs elastic scattering between two nucleons
6 C
7 C*******************************************************************
8         SUBROUTINE HIJELS(PSC1,PSC2)
9         IMPLICIT DOUBLE PRECISION(D)
10         DIMENSION PSC1(5),PSC2(5)
11 #include "hiparnt.inc"
12         SAVE
13 C
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)
19         IF(EP.LE.0.1) RETURN
20         ELS0=98.0/EP+52.0*(1.0+RR)**2
21         PCM1=PSC1(1)+PSC2(1)
22         PCM2=PSC1(2)+PSC2(2)
23         PCM3=PSC1(3)+PSC2(3)
24         ECM=PSC1(4)+PSC2(4)
25         AM1=PSC1(5)**2
26         AM2=PSC2(5)**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
30 C                               to each other
31         PMAX=(AMM**2+AM1**2+AM2**2-2.0*AMM*AM1-2.0*AMM*AM2
32      &                  -2.0*AM1*AM2)/4.0/AMM
33         PMAX=ABS(PMAX)
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)
39 C
40         DBX=PCM1/ECM
41         DBY=PCM2/ECM
42         DBZ=PCM3/ECM
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) 
48           DB=0.99999999D0   
49           WRITE(6,*) ' (HIJELS) boost vector too large' 
50 C               ********Rescale boost vector if too close to unity. 
51         ENDIF   
52         DGA=1D0/SQRT(1D0-DB**2)      
53 C
54         DP1=SQRT(TT)*SIN(PHI)
55         DP2=SQRT(TT)*COS(PHI)
56         DP3=SQRT(PMAX-TT)
57         DP4=SQRT(PMAX+AM1)
58         DBP=DBX*DP1+DBY*DP2+DBZ*DP3   
59         DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP4) 
60         PSC1(1)=DP1+DGABP*DBX
61         PSC1(2)=DP2+DGABP*DBY  
62         PSC1(3)=DP3+DGABP*DBZ  
63         PSC1(4)=DGA*(DP4+DBP)    
64 C       
65         DP1=-SQRT(TT)*SIN(PHI)
66         DP2=-SQRT(TT)*COS(PHI)
67         DP3=-SQRT(PMAX-TT)
68         DP4=SQRT(PMAX+AM2)
69         DBP=DBX*DP1+DBY*DP2+DBZ*DP3   
70         DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP4) 
71         PSC2(1)=DP1+DGABP*DBX
72         PSC2(2)=DP2+DGABP*DBY  
73         PSC2(3)=DP3+DGABP*DBZ  
74         PSC2(4)=DGA*(DP4+DBP)
75         RETURN
76         END