]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/fluka/nucrel.F
Some function moved to AliZDC
[u/mrichter/AliRoot.git] / GEANT321 / fluka / nucrel.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:20:04 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.44 by S.Giani
11*-- Author :
12*$ CREATE NUCREL.FOR
13*COPY NUCREL
14*
15*=== nucrel ===========================================================*
16*
17C
18C HJM 17/11/88
19C
20C MODIFIED ELASTIC SCATTERING ROUTINE
21C (COMP. KMU-HEP INTERNAL NOTE 88-01)
22C
23C------------------------------------------------------------------
24C
25 SUBROUTINE NUCREL(IT,PLAB,EKIN,CX,CY,CZ,ANUC,WEE)
26
27#include "geant321/dblprc.inc"
28#include "geant321/dimpar.inc"
29#include "geant321/iounit.inc"
30C********************************************************************
31C VERSION JULY 81 BY J. RANFT
32C LEIPZIG
33C LAST CHANGE A. FERRARI 26-9-89: RECOIL ENERGY SCORING ADDED
34C
35C THIS IS A SUBROUTINE OF FLUKA82 TO SAMPLE ELASTIC INTERACTIONS
36C
37C INPUT VARIABLES:
38C IT = TYPE OF THE PRIMARY
39C PLAB = PRIMARY PARTICLE LAB MOMENTUM (GEV/C)
40C CX,CY,CZ = PRIMARY PARTICLE DIRECTION COSINES
41C ANUC = ATOMIC WEIGHT OF THE TARGET NUCLEUS
42C
43C OUTPUT VARIABLES:
44C CCX,CCY,CCZ = DIRECTION COSINES OF SCATTERED PARTICLE
45C
46C********************************************************************
47C
48 PARAMETER (AMUC12 = 0.9314943228D0)
49#include "geant321/aadat.inc"
50#include "geant321/finuc.inc"
51*------ Common part has been added by A. Ferrari ----------------------*
52#include "geant321/part2.inc"
53C----------------------------------------------------------------
54 REAL RNDM(1)
55 DIMENSION ITT(NALLWP),SHP(6),BP(6),XNN(6,6),BA(6,6),XNA(6),AM(6)
56 SAVE ITT,SHP,BP,XNN,BA,XNA,AM
57 DATA ITT/1,2,0,0,0,0,0,1,2,0,0,5,3,4,5,6,1,2,5,1,1,1,3,5,6,
58 & 3,0,0,0,1,2,2,2,1,2,1,2,1,2/
59C ITT(IT) - INTERNAL PARTICLE NUMBER
60 DATA AM/ 9.01D0, 12.01D0, 26.98D0, 63.55D0, 118.69D0, 207.19D0/
61C AM - ATOMIC WEIGHTS OF SEVERAL TARGET MATERIALS
62 DATA XNA/3.5D0, 3.4D0, 4.5D0, 6.7D0, 8.2D0, 9.5D0/
63C XNA(AM) - EFFECTIVE NUCLEON NUMBER
64 DATA BP/12.D0, 12.D0, 4*10.D0/
65C BP(IIT) - INCOHERENT SLOPE (GEV/C)**-2
66 DATA SHP/2*40.D0, 2*25.D0, 2*20.D0/
67C SHP(IIT) - TOTAL HADRON - NUCLEON CROSS SECTION (MB)
68C((((((((((((((( BA(IIT,A) XNN(IIT,A) (((((((((((((((((
69C BA - COHERENT SLOPE (GEV/C)**-2
70C XNN - NORMALIZATION FOR PROJECTILE -NUCLEUS SCATTERING (MB)
71 DATA XNN/
72 ( 256.6D0, 240.5D0, 181.0D0, 167.1D0, 144.0D0, 139.0D0,
73 ( 335.3D0, 355.0D0, 241.0D0, 229.7D0, 181.5D0, 196.0D0,
74 ( 755.1D0, 1344.0D0, 506.0D0, 480.8D0, 431.0D0, 403.0D0,
75 (1656.0D0, 1886.0D0, 1104.0D0, 1144.0D0, 914.0D0, 939.0D0,
76 (3005.0D0, 2559.0D0, 2112.0D0, 2068.0D0, 1723.0D0, 1791.0D0,
77 (5123.0D0, 5444.0D0, 4071.0D0, 3391.0D0, 3368.0D0, 3168.0D0/
78 DATA BA/
79 ( 72.0D0, 69.3D0, 65.2D0, 63.4D0, 60.0D0, 65.6D0,
80 ( 72.3D0, 75.9D0, 65.5D0, 63.1D0, 59.5D0, 68.1D0,
81 (119.4D0, 128.7D0, 107.3D0, 105.0D0, 105.6D0, 98.8D0,
82 (201.0D0, 212.0D0, 188.9D0, 183.0D0, 179.0D0, 178.0D0,
83 (311.0D0, 315.0D0, 286.0D0, 277.0D0, 270.0D0, 266.0D0,
84 (454.0D0, 448.0D0, 435.0D0, 397.0D0, 416.0D0, 403.0D0/
85C
86C********************************************************************
87C PARAMETRIZATION
88C DSIGMA/DOMEGA=C*EXP(-DS*THETA**2)+E*EXP(-FS*THETA**2)
89C COHERENT PART INCOHERENT PART
90C********************************************************************
91C
92C***
93 NP=1
94 TV=0.D0
95C***
96 IF(IT.EQ.30) GO TO 301
97 IF(ANUC.LT.0.99D0) THEN
98 CXR(1)=CX
99 CYR(1)=CY
100 CZR(1)=CZ
101 TKI(1)=EKIN
102 PLR(1)=PLAB
103 KPART(1)=IT
104 RETURN
105 ENDIF
106C
107C--------------------------------------------------------------------
108C HJM 10/88 ELASTIC SCATTERING INTO 2-BODY FINALSTATE
109C FOR NUCLEON-PROTON INITIAL STATE
110C AF 9/91 ALSO PBAR,NBAR-PROTON
111C FINAL STATE PARTICLES IN /FINUC/
112 IF( (ANUC.LT.1.5D0) .AND. (IT.LE.2 .OR. IT.EQ.8 .OR. IT.EQ.9)
113 & .AND. (EKIN.LT.3.5D0) ) THEN
114 CALL NUPREL(IT,EKIN,PLAB,CX,CY,CZ)
115 WEI(1)=WEE
116 WEI(2)=WEE
117C
118 RETURN
119 ENDIF
120C-------------------------------------------------------------------
121C
122C********************************************************************
123C 1=P,N, 2=AP,AN, 3=PI+, 4=PI-, 5=K+,K0, 6=K-,K0 BAR
124C********************************************************************
125C
126 IIT=ITT(IT)
127 IF(IIT.EQ.0)RETURN
128 AP=PLAB
129 AP2=AP**2
130 A=ANUC
131 IF(IIT.GE.2) GO TO 101
132 IF(AP.GT.20.D0) GO TO 101
133C
134C********************************************************************
135C FOR PROTONS BELOW 20 GEV/C
136C DSIGMA/DOMEGA=12.5*A**1.63*EXP(-14.5*A**0.66*T)+
137C 17.5*A**0.33*EXP(-10*T) FOR A<62
138C
139C DSIGMA/DOMEGA=50*A**1.33*EXP(-60*A**0.33*T)+
140C 20*A**0.4*EXP(-10*T) FOR A>62
141C********************************************************************
142C
143 A3=A**0.3333333333333333D0
144 ATAR=A
145 IF (ATAR .GT. 62.D0) GO TO 1
146 C=12.5D0*A**1.63D0
147 DS=14.5D0*A3*A3*AP2
148 E=17.5D0*A3
149 GO TO 2
150 1 CONTINUE
151 C=50.D0*A3*A
152 DS=60.D0*A3*AP2
153 E=20.D0*A**0.4D0
154 2 CONTINUE
155 FS=10.D0*AP2
156 GO TO 3
157C
158C********************************************************************
159C FOR PROTONS OVER 20 GEV/C AND OTHER PARTICLES
160C********************************************************************
161C
162 101 CONTINUE
163 DO 200 I=1,6
164 IF(A.LE.AM(I)) GO TO 201
165 200 CONTINUE
166 K=6
167 GO TO 202
168 201 K=I
169 202 KK=K+1
170 IF(KK.GT.6) KK=K-1
171 XNEL=XNN(IIT,K)+(A-AM(K))*(XNN(IIT,KK)-XNN(IIT,K))/(AM(KK)-AM(K))
172 C=XNEL**2
173 DS=LOG(BA(IIT,KK)/BA(IIT,K))/LOG(AM(KK)/AM(K))
174 DS=BA(IIT,K)*(A/AM(K))**DS
175 DS=DS*AP2
176 E=XNA(K)+(A-AM(K))*(XNA(KK)-XNA(K))/(AM(KK)-AM(K))
177 E=E*SHP(IIT)**2
178 FS=BP(IIT)*AP2
179 GO TO 3
180C
181C********************************************************************
182C FOR HEAVY IONS:
183C
184C FOR APROJ>25 OR (APROJ>10 AND ATARG>100)
185C DSIG/DOM = 216 * PTOT**1.86 * (AP**0.7 + AT**0.7)**2.2 *
186C EXP(-16.1 * (AP**1.2 + AT**0.9)**0.8 * T) +
187C 0.3 * PTOT**1.86 * (AP**0.7 + AT**0.7)**2.2 * EXP(-23 * T)
188C
189C FOR LIGHTER NUCLIDES:
190C DSIG/DOM = 78 * PTOT**1.78 * (AP + AT**0.9)**2.1 *
191C EXP(-16.1 * (AP**1.2 + AT**0.9)**0.8 * T) +
192C 0.5 * PTOT**1.78 * (AP + AT**0.9)**2.1 * EXP(-30 * T)
193C
194C THE PARAMETRIZATION IS OBTAINED BY FITTING TO
195C DATA GENERATED BY THE SOFT-SPHERES MODEL.
196C (REF. CHAUVIN & AL. PHYS.REV.C. 28 1970 (1983))
197C THE PARAMETRIZATION IS QUITE CRUDE AND FAILS AT LARGE
198C ANGLES.
199C THERE IS NO EXPERIMENTAL VERIFICATION FOR THE MODEL AT
200C ENERGIES ABOVE 100 MEV/A
201C MIKA HUHTINEN 25.8.88
202C********************************************************************
203C
204 301 CONTINUE
205 ITARA=NINT(ANUC)
206C ALWAYS LET THE LIGHTER PARTICLE BE THE PROJECTILE (THEN THE
207C PARAMETRIZATION WILL GIVE BETTER RESULTS)
208 IF (ITARA.GE.IPROA) THEN
209 PROA=IPROA
210 TARA=ITARA
211 ELSE
212 PROA=ITARA
213 TARA=IPROA
214 ENDIF
215C TOTAL LAB. MOMENTUM
216 PLTOT=PLAB*PROA
217C SQUARE OF CMS MOMENTUM
218 AP2=((PLTOT*TARA)/(TARA+PROA))**2
219
220 DS=16.1D0*(PROA**1.2D0 + TARA**0.9D0)**0.8D0*AP2
221
222 IF (PROA.GT.25.D0) GO TO 302
223 IF ((PROA.GT.10.D0).AND.(TARA.GT.100.D0)) GO TO 302
224
225 CFF=PLTOT**1.78D0*(PROA + TARA**0.9D0)**2.1D0
226 C=78.D0*CFF
227 E=0.5D0*CFF
228 FS=30.D0*AP2
229 GO TO 3
230
231 302 CONTINUE
232 CFF=PLTOT**1.86D0*(PROA**0.7D0 + TARA**0.7D0)**2.2D0
233 C=216.D0*CFF
234 E=0.3D0*CFF
235 FS=23.D0*AP2
236C
237C********************************************************************
238C SAMPLE THE ANGLE AND ROTATE TO GET NEW DIRECTION COSINES
239C********************************************************************
240C
241 3 CONTINUE
242 EDS=1.D-9
243 IF(DS.LT.10.5D0) EDS=EXP(-2.D0*DS)
244 EDS2=EDS**2
245 DD=C*(1.D0-EDS2)/DS
246 EFS=1.D-9
247 IF(FS.LT.10.5D0) EFS=EXP(-2.D0*FS)
248 EFS2=EFS**2
249 FF=E*(1.D0-EFS2)/FS
250 DF=2.D0*DS
251 CALL GRNDM(RNDM,1)
252 VV=RNDM(1)*(DD+FF)
253 IF (VV.GT.DD) DF=2.D0*FS
254 31 CONTINUE
255 CALL GRNDM(RNDM,1)
256 V2=LOG(RNDM(1))/DF
257 IF (ABS(V2).GT.2.D0) GO TO 31
258 V1=V2
259 COD=V1+1.D0
260 SID=SQRT(-V1*(2.D0+V1))
261* ******* Computing the recoil energy!!!! A. Ferrari, 26-9-89 ******* *
262 KP = IPTOKP (IT)
263 APP2 = AAM(KP)**2
264 EPROJ = EKIN + AAM(KP)
265* +-------------------------------------------------------------------*
266* | Hydrogen: generate the recoil proton
267 IF ( ANUC .LT. 1.2D+00 ) THEN
268 ATT = AAM (1)
269 ATT2 = ATT**2
270 ETTT = EPROJ + ATT
271 PTTL = PLAB
272 PTTT = 0.D+00
273 HELP = ATT2 - APP2 * ( 1.D+00 - COD ) * ( 1.D+00 + COD )
274* | Now: it can happen for amproj > amprot on hydrogen.
275 IF ( HELP .LT. 0.D+00 ) GO TO 3
276 PLAB = PLAB * ( ( APP2 + ATT*EPROJ ) * COD + (EPROJ + ATT)
277 & * SQRT (HELP) ) / ( (EPROJ + ATT)**2 - (PLAB*COD)**2 )
278 NP = 2
279 TV = 0.D+00
280 WEI (1) = WEE
281 WEI (2) = WEE
282 KPART (1) = IT
283 KPART (2) = 1
284 TKI (1) = SQRT ( PLAB**2 + APP2 ) - AAM (KP)
285 TKI (2) = EKIN - TKI (1)
286 EKIN = TKI (1)
287 PLR (1) = PLAB
288 PLR (2) = SQRT ( TKI (2) * ( TKI (2) + 2.D+00 * AAM (1) ) )
289 CALL SFECFE ( SFE, CFE )
290 CALL TTRANS ( CX, CY, CZ, COD, SID, SFE, CFE, CCX, CCY, CCZ )
291 CXR (1) = CCX
292 CYR (1) = CCY
293 CZR (1) = CCZ
294 SINTHE = PLAB / PLR (2) * SID
295 COSTHE = SQRT ( ( 1.D+00 - SINTHE ) * ( 1.D+00 + SINTHE ) )
296 CFE = - CFE
297 SFE = - SFE
298 CALL TTRANS ( CX, CY, CZ, COSTHE, SINTHE, SFE, CFE, CXR (2),
299 & CYR (2), CZR (2) )
300 RETURN
301* |
302* +-------------------------------------------------------------------*
303* | "Heavy" nuclei
304* | the following line to patch el. scatt. of an, ap, lambdas, sigmas
305* | etc on hydrogen ( Now it should be useless )
306 ELSE
307 ATT = MAX ( ANUC * AMUC12, AAM (KP) )
308 ATT2 = ATT**2
309 HELP = ATT2 - APP2 * ( 1.D+00 - COD ) * ( 1.D+00 + COD )
310 PLAB = PLAB*( (APP2 + ATT*EPROJ)*COD + (EPROJ + ATT)
311 & * SQRT (HELP) ) / ( (EPROJ + ATT)**2 - (PLAB*COD)**2 )
312 TV = EPROJ - SQRT ( PLAB**2 + APP2 )
313 EKIN = EKIN - TV
314* | ***** The following lines only for debugging *****
315 IF ( PLAB .LE. 0.D+00 ) THEN
316 WRITE (LUNOUT,*)' *** Nucrel: plab',PLAB,' ***'
317 WRITE (LUNERR,*)' *** Nucrel: plab',PLAB,' ***'
318 END IF
319* | ***** End debugging lines *****
320 END IF
321* | Now the recoil energy is put into Tv
322* +-------------------------------------------------------------------*
323 CALL SFECFE(SFE,CFE)
324 CALL TTRANS(CX,CY,CZ,COD,SID,SFE,CFE,CCX,CCY,CCZ)
325C---------------------------------------------------------
326C MODIFICATION HJM 28/10/88
327C NOTE: HEAVY ION OPTION NOT CONSISTENTLY TREATED NOW]]]
328C
329 WEI(1)=WEE
330 CXR(1)=CCX
331 CYR(1)=CCY
332 CZR(1)=CCZ
333 TKI(1)=EKIN
334 PLR(1)=PLAB
335 KPART(1)=IT
336 RETURN
337 END