5 * Revision 1.1.1.1 1995/10/24 10:20:59 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.38 by S.Giani
12 SUBROUTINE TWOB(IPPP,NFL,AVERN)
14 C *** GENERATION OF MOMENTA FOR ELAST. AND QUASI ELAST. 2 BODY REACT. ***
15 C *** NVE 04-MAY-1988 CERN GENEVA ***
17 C ORIGIN : H.FESEFELDT 15-SEP-1987
19 C THE SIMPLE FORMULA DS/D|T| = S0* EXP(-B*|T|) IS USED.
20 C THE B VALUES ARE PARAMETRIZATIONS FROM EXPERIMENTAL DATA .
21 C NOT AVAILABLE VALUES ARE TAKEN FROM THOSE OF SIMILAR REACTIONS
23 #include "geant321/s_defcom.inc"
29 C --- STATEMENT FUNCTIONS ---
30 BPP(X)=4.225+1.795*LOG(X)
33 C** FOR DIFFRACTION SCATTERING ON HEAVY NUCLEI USE BETTER ROUTINE
37 IF (NFL .EQ. 2) TARMAS=RMASS(16)
38 ENP(8)=RMASS(IPPP)**2+TARMAS**2+2.0*TARMAS*ENP(6)
45 CFA=0.025*((ATNO2-1.)/120.)*EXP(-(ATNO2-1.)/120.)
46 IF(ATNO2.LT.1.5) GOTO 500
53 IF(ABS(RMC-AMAS).GT.0.001) GOTO 500
55 IF (NFL .EQ. 2) RMNVE=RMASS(16)
56 IF(ABS(RMD-RMNVE).GT.0.001) GOTO 500
57 IF(ABS(RCHC-NCH).GT.0.5) GOTO 500
58 IF(NFL.EQ.1.AND.RCHD.LT.0.5) GOTO 500
59 IF(NFL.EQ.2.AND.ABS(RCHD).GT.0.5) GOTO 500
60 IF(ENP(1).GT.0.0001.OR.ENP(3).GT.0.0001) GOTO 500
64 C** SET EFFECTIVE 4-MOMENTUM OF INITIAL PARTICLE
66 500 PV( 1,MXGKPV-1)=P*PX
78 $ WRITE(NEWBCD,4001) (PV(J,MXGKPV-1),J=1,10),IPA(1),IPA(2)
80 2 PV(J,1)=PV(J,MXGKPV-1)
82 IF(PV(5,1).LT.0.) PV(7,1)=-1.
86 C** TWO-BODY SCATTERING POSSIBLE?? IF NOT, CONTINUE WITH ORIGINAL
87 C** PARTICLE, BUT SPEND THE NUCLEAR EVAPORATION ENERGY
90 IF(RS.LT.0.01) GOTO 200
92 C** CALCULATE SLOPE B FOR ELASTIC SCATTERING ON PROTON/NEUTRON
96 IF(ABS(IPA(2)).GT.13) GOTO 9
99 IF(RNDM(1).LT.0.5) IPA(2)=16
101 C** SET MASSES AND MOMENTA FOR FINAL STATE PARTICLES
103 9 RMC=RMASS(ABS(IPA(1)))
104 RMD=RMASS(ABS(IPA(2)))
105 PV(6,1)=RCHARG(ABS(IPA(1)))
106 PV(6,2)=RCHARG(ABS(IPA(2)))
107 PF=(S+RMD*RMD-RMC*RMC)**2 - 4*S*RMD*RMD
108 IF(NPRT(4)) WRITE(NEWBCD,4002) RMC,RMD,PV(6,1),PV(6,2),RS,S,PF
109 IF(PF.LT.0.001) GO TO 9999
112 C** SET BEAM AND TARGET IN CMS
118 PV(4,3)=SQRT(P*P+AMAS*AMAS)
123 IF (NFL .EQ. 2) RMNVE=RMASS(16)
127 C** TRANSFORM INTO CMS.
133 C** SET FINAL STATE MASSES AND ENERGIES IN CMS
139 IF(RMC.LT.0.) PV(7,1)=-1.
140 IF(RMD.LT.0.) PV(7,2)=-1.
141 PV(4,1)=SQRT(PF*PF+PV(5,1)*PV(5,1))
142 PV(4,2)=SQRT(PF*PF+PV(5,2)*PV(5,2))
144 C** SET |T| AND |TMIN|
150 C** SIMPLY A PROTECTION AGAINST EXPONENT OVERFLOW 1.E20 IS BIG ENOUGH
153 IF(BTRANG.LT.46) EXINDT=EXINDT+EXP(-BTRANG)
154 TDN=LOG(1.+RNDM(1)*EXINDT)/BTRANG
156 C** CACULATE (SIN(TETA/2.)**2 AND COS(TETA), SET AZIMUTH ANGLE PHI
159 IF(ABS(CTET).GT.1.) CTET=SIGN(1.,CTET)
160 STET=SQRT((1.-CTET)*(1.+CTET))
163 C** CALCULATE FINAL STATE MOMENTA IN CMS
165 PV(1,1)=PF*STET*SIN(PHI)
166 PV(2,1)=PF*STET*COS(PHI)
172 C** TRANSFORM INTO LAB
176 CALL DEFS1(I,MXGKPV-1,I)
177 IF(ATNO2.LT.1.5) GOTO 11
179 IF(PP.LT.0.001) GOTO 11
180 EKIN=PV(4,I)-ABS(PV(5,I))
182 EKIN=EKIN-CFA*(1.+0.5*RAN)
183 IF(EKIN.LT.0.0001) EKIN=0.0001
184 PP1=SQRT(EKIN*(EKIN+2.*ABS(PV(5,I))))
185 PV(4,I)=EKIN+ABS(PV(5,I))
186 PV(1,I)=PV(1,I)*PP1/PP
187 PV(2,I)=PV(2,I)*PP1/PP
188 PV(3,I)=PV(3,I)*PP1/PP
192 C** ADD BLACK TRACK PARTICLES .
193 C** HERE THE PROCEDURE IS SOMEWHAT DIFFERENT AS IN 'TWOCLU' AND 'GENXPT'
194 C** THE REASON IS, THAT WE HAVE TO SIMULATE ALSO THE NUCLEAR REACTIONS
195 C** AT LOW ENERGIES LIKE A(H,P)B, A(H,P P)B, A(H,N)B E.T.C.
197 200 IF(ENP(1).LE.0.0001.AND.ENP(3).LE.0.0001) GOTO 40
200 IF(TEX.LT.0.0001) GOTO 445
202 CALL POISSO(BLACK,NBL)
203 IF(NBL.GT.ATNO2) NBL=ATNO2
204 IF(ENP(1).GT.0.0001.AND.NBL.LE.0) NBL=1
205 IF (NPRT(4)) WRITE(NEWBCD,3003) NBL,TEX
206 IF(NT+NBL.GT.MXGKPV-2) NBL=MXGKPV-2-NT
207 IF(NBL.LE.0) GOTO 445
212 IF(NT.EQ.MXGKPV-2) GOTO 441
213 IF(EKIN2.GT.TEX) GOTO 443
217 EKIN1=-EKIN*LOG(RAN1)-CFA*(1.+0.5*RAN2)
218 IF(EKIN1.LT.0.0) EKIN1=-0.010*LOG(RAN1)
221 IF(EKIN2.GT.TEX) EKIN1=TEX-(EKIN2-EKIN1)
222 IF(EKIN1.LT.0.) EKIN1=0.0001
226 IF(RNDM(1).GT.PNRAT) IPA1=14
230 SINT=SQRT(ABS(1.-COST*COST))
233 PV(5,NT)=ABS(RMASS(IPA1))
234 PV(6,NT)=RCHARG(IPA1)
236 PV(4,NT)=EKIN1+PV(5,NT)
237 PP=SQRT(ABS(PV(4,NT)**2-PV(5,NT)**2))
238 PV(1,NT)=PP*SINT*SIN(PHI)
239 PV(2,NT)=PP*SINT*COS(PHI)
242 443 IF(ATNO2.LT.10.) GOTO 445
243 IF(EK.GT.2.0) GOTO 445
247 IF(EKA.GT.1.) EKA=EKA*EKA
248 IF(EKA.LT.0.1) EKA=0.1
249 IKA=3.6*EXP((ZNO2**2/ATNO2-35.56)/6.45)/EKA
250 IF(IKA.LE.0) GO TO 445
253 IF(IPA(II).NE.-14) GOTO 444
256 PV(5,II)=ABS(RMASS(IPA1))
257 PV(6,II)=RCHARG(IPA1)
259 IF(KK.GT.IKA) GOTO 445
262 IF(TEX.LT.0.0001) GOTO 40
263 NBL=IFIX(2.*LOG(ATNO2))
264 IF(NT+NBL.GT.MXGKPV-2) NBL=MXGKPV-2-NT
269 IF (NPRT(4)) WRITE(NEWBCD,3004) NBL,TEX
271 IF(NT.EQ.MXGKPV-2) GOTO 442
272 IF(EKIN2.GT.TEX) GOTO 40
276 EKIN1=-EKIN*LOG(RAN1)-CFA*(1.+0.5*RAN2)
277 IF(EKIN1.LT.0.0) EKIN1=-0.010*LOG(RAN1)
280 IF(EKIN2.GT.TEX) EKIN1=TEX-(EKIN2-EKIN1)
281 IF(EKIN1.LT.0.) EKIN1=0.0001
284 SINT=SQRT(ABS(1.-COST*COST))
288 IF(RAN.GT.0.60) IPA(NT+1)=-31
289 IF(RAN.GT.0.90) IPA(NT+1)=-32
291 PV(5,NT+1)=RMASS(INVE)
292 SPALL=SPALL+PV(5,NT+1)*1.066
293 IF(SPALL.GT.ATNO2) GOTO 40
295 PV(6,NT)=RCHARG(INVE)
297 PV(4,NT)=PV(5,NT)+EKIN1
298 PP=SQRT(ABS(PV(4,NT)**2-PV(5,NT)**2))
299 PV(1,NT)=PP*SINT*SIN(PHI)
300 PV(2,NT)=PP*SINT*COS(PHI)
304 C** STORE ON EVENT COMMON
306 40 EKIN=PV(4,MXGKPV)-ABS(PV(5,MXGKPV))
307 EKIN1=PV(4,MXGKPV-1)-ABS(PV(5,MXGKPV-1))
312 TOF=TOF-TOF1*LOG(RAN)
314 EKIN2=EKIN2+PV(4,I)-ABS(PV(5,I))
315 IF(PV(7,I).LT.0.) PV(5,I)=-PV(5,I)
320 IF (NPRT(4)) WRITE(NEWBCD,1003) NT,EKIN,EKIN1,EKIN2
324 IF(NT.EQ.1) GO TO 9999
327 IF(NTOT.LT.NSIZE/12) GOTO 43
332 1002 FORMAT(' *TWOB* ',5F10.4,10X,5F10.4/1H ,7X,5F10.4,10X,5F10.4/
333 $ ' LAB SYSTEM FINAL STATE FOUR VECTORS')
334 1003 FORMAT(' *TWOB* COMPARISON',2X,I5,2X,3F10.4)
335 4001 FORMAT(' *TWOB* ',10F10.4,2X,2I3)
336 4002 FORMAT(' *TWOB* ',7F10.4)
337 3003 FORMAT(' *TWOB* ',I3,' BLACK TRACK PARTICLES PRODUCED',
338 $ ' WITH TOTAL KINETIC ENERGY OF ',F8.3,' GEV')
339 3004 FORMAT(' *TWOB* ',I5,' HEAVY FRAGMENTS PRODUCED',
340 $ ' WITH TOTAL ENERGY OF',F8.4,' GEV')