]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TAmpt/AMPT/art1f.f
A follow-up of the savannah ticket #76291: Moving the V0 and cascade finder cuts...
[u/mrichter/AliRoot.git] / TAmpt / AMPT / art1f.f
1 c....................art1f.f
2 **************************************
3 *
4 *                           PROGRAM ART1.0 
5 *
6 *        A relativistic transport (ART) model for heavy-ion collisions
7 *
8 *   sp/01/04/2002
9 *   calculates K+K- from phi decay, dimuons from phi decay
10 *   has finite baryon density & possibilites of varying Kaon 
11 *   in-medium mass in phiproduction-annhilation channel only.
12 *
13 *
14 * RELEASING DATE: JAN., 1997 
15 ***************************************
16
17 * Bao-An Li & Che Ming Ko
18 * Cyclotron Institute, Texas A&M University.
19 * Phone: (409) 845-1411
20 * e-mail: Bali@comp.tamu.edu & Ko@comp.tamu.edu 
21 * http://wwwcyc.tamu.edu/~bali
22 ***************************************
23 * Speical notice on the limitation of the code:
24
25 * (1) ART is a hadronic transport model
26
27 * (2) E_beam/A <= 15 GeV
28
29 * (3) The mass of the colliding system is limited by the dimensions of arrays
30 *    which can be extended purposely. Presently the dimensions are large enough
31 *     for running Au+Au at 15 GeV/A.
32 *
33 * (4) The production and absorption of antiparticles (e.g., ki-, anti-nucleons,
34 *     etc) are not fully included in this version of the model. They, however, 
35 *     have essentially no effect on the reaction dynamics and observables 
36 *     related to nucleons, pions and kaons (K+) at and below AGS energies.
37
38 * (5) Bose enhancement for mesons and Pauli blocking for fermions are 
39 *     turned off.
40
41 *********************************
42 *
43 * USEFUL REFERENCES ON PHYSICS AND NUMERICS OF NUCLEAR TRANSPORT MODELS:
44 *     G.F. BERTSCH AND DAS GUPTA, PHYS. REP. 160 (1988) 189.
45 *     B.A. LI AND W. BAUER, PHYS. REV. C44 (1991) 450.
46 *     B.A. LI, W. BAUER AND G.F. BERTSCH, PHYS. REV. C44 (1991) 2095.
47 *     P. DANIELEWICZ AND G.F. BERTSCH, NUCL. PHYS. A533 (1991) 712.
48
49 * MAIN REFERENCES ON THIS VERSION OF ART MODEL:
50 *     B.A. LI AND C.M. KO, PHYS. REV. C52 (1995) 2037; 
51 *                          NUCL. PHYS. A601 (1996) 457. 
52 *
53 **********************************
54 **********************************
55 *  VARIABLES IN INPUT-SECTION:                                               * 
56 *                                                                      *
57 *  1) TARGET-RELATED QUANTITIES                                        *
58 *       MASSTA, ZTA -  TARGET MASS IN AMU, TARGET CHARGE  (INTEGER)    *
59 *                                                                      *
60 *  2) PROJECTILE-RELATED QUANTITIES                                    *
61 *       MASSPR, ZPR -  PROJECTILE MASS IN AMU, PROJ. CHARGE(INTEGER)   *
62 *       ELAB     -  BEAM ENERGY IN [MEV/NUCLEON]               (REAL)  *
63 *       ZEROPT   -  DISPLACEMENT OF THE SYSTEM IN Z-DIREC. [FM](REAL)  *
64 *       B        -  IMPACT PARAMETER [FM]                      (REAL)  *
65 *                                                                      *
66 *  3) PROGRAM-CONTROL PARAMETERS                                       *
67 *       ISEED    -  SEED FOR RANDOM NUMBER GENERATOR        (INTEGER)  *
68 *       DT       -  TIME-STEP-SIZE [FM/C]                      (REAL)  *
69 *       NTMAX    -  TOTAL NUMBER OF TIMESTEPS               (INTEGER)  *
70 *       ICOLL    -  (= 1 -> MEAN FIELD ONLY,                           *
71 *                -   =-1 -> CACADE ONLY, ELSE FULL ART)     (INTEGER)  *
72 *       NUM      -  NUMBER OF TESTPARTICLES PER NUCLEON     (INTEGER)  *
73 *       INSYS    -  (=0 -> LAB-SYSTEM, ELSE C.M. SYSTEM)    (INTEGER)  *
74 *       IPOT     -  1 -> SIGMA=2; 2 -> SIGMA=4/3; 3 -> SIGMA=7/6       *
75 *                   IN MEAN FIELD POTENTIAL                 (INTEGER)  *
76 *       MODE     -  (=1 -> interpolation for pauli-blocking,           *
77 *                    =2 -> local lookup, other -> unblocked)(integer)  *
78 *       DX,DY,DZ -  widths of cell for paulat in coor. sp. [fm](real)  *
79 *       DPX,DPY,DPZ-widths of cell for paulat in mom. sp.[GeV/c](real) *
80 *       IAVOID   -  (=1 -> AVOID FIRST COLL. WITHIN SAME NUCL.         *
81 *                    =0 -> ALLOW THEM)                      (INTEGER)  *
82 *       IMOMEN   -  FLAG FOR CHOICE OF INITIAL MOMENTUM DISTRIBUTION   *
83 *                   (=1 -> WOODS-SAXON DENSITY AND LOCAL THOMAS-FERMI  *
84 *                    =2 -> NUCLEAR MATTER DEN. AND LOCAL THOMAS-FERMI  *
85 *                    =3 -> COHERENT BOOST IN Z-DIRECTION)   (INTEGER)  *
86 *  4) CONTROL-PRINTOUT OPTIONS                                         *
87 *       NFREQ    -  NUMBER OF TIMSTEPS AFTER WHICH PRINTOUT            *
88 *                   IS REQUIRED OR ON-LINE ANALYSIS IS PERFORMED       *
89 *       ICFLOW      =1 PERFORM ON-LINE FLOW ANALYSIS EVERY NFREQ STEPS *
90 *       ICRHO       =1 PRINT OUT THE BARYON,PION AND ENERGY MATRIX IN  *
91 *                      THE REACTION PLANE EVERY NFREQ TIME-STEPS       *
92 *  5)
93 *       CYCBOX   -  ne.0 => cyclic boundary conditions;boxsize CYCBOX  *
94 *
95 **********************************
96 *               Lables of particles used in this code                     *
97 **********************************
98 *         
99 *         LB(I) IS USED TO LABEL PARTICLE'S CHARGE STATE
100 *    
101 *         LB(I)   =
102 clin-11/07/00:
103 *                -30 K*-
104 clin-8/29/00
105 *                -13 anti-N*(+1)(1535),s_11
106 *                -12 anti-N*0(1535),s_11
107 *                 -11 anti-N*(+1)(1440),p_11
108 *                 -10 anti-N*0(1440), p_11
109 *                  -9 anti-DELTA+2
110 *                  -8 anti-DELTA+1
111 *                  -7 anti-DELTA0
112 *                  -6 anti-DELTA-1
113 clin-8/29/00-end
114
115 cbali2/7/99 
116 *                  -2 antineutron 
117 *                             -1       antiproton
118 cbali2/7/99 end 
119 *                   0 eta
120 *                        1 PROTON
121 *                   2 NUETRON
122 *                   3 PION-
123 *                   4 PION0
124 *                   5 PION+
125 *                   6 DELTA-1
126 *                   7 DELTA0
127 *                   8 DELTA+1
128 *                   9 DELTA+2
129 *                   10 N*0(1440), p_11
130 *                   11 N*(+1)(1440),p_11
131 *                  12 N*0(1535),s_11
132 *                  13 N*(+1)(1535),s_11
133 *                  14 LAMBDA
134 *                   15 sigma-, since we used isospin averaged xsection for
135 *                   16 sigma0  sigma associated K+ production, sigma0 and 
136 *                   17 sigma+  sigma+ are counted as sigma-
137 *                   21 kaon-
138 *                   23 KAON+
139 *                   24 kaon0
140 *                   25 rho-
141 *                         26 rho0
142 *                   27 rho+
143 *                   28 omega meson
144 *                   29 phi
145 clin-11/07/00:
146 *                  30 K*+
147 * sp01/03/01
148 *                 -14 LAMBDA(bar)
149 *                  -15 sigma-(bar)
150 *                  -16 sigma0(bar)
151 *                  -17 sigma+(bar)
152 *                   31 eta-prime
153 *                   40 cascade-
154 *                  -40 cascade-(bar)
155 *                   41 cascade0
156 *                  -41 cascade0(bar)
157 *                   45 Omega baryon
158 *                  -45 Omega baryon(bar)
159 * sp01/03/01 end
160 clin-5/2008:
161 *                   42 Deuteron (same in ampt.dat)
162 *                  -42 anti-Deuteron (same in ampt.dat)
163 c
164 *                   ++  ------- SEE BAO-AN LI'S NOTE BOOK
165 **********************************
166 cbz11/16/98
167 c      PROGRAM ART
168        SUBROUTINE ARTMN
169 cbz11/16/98end
170 **********************************
171 * PARAMETERS:                                                           *
172 *  MAXPAR     - MAXIMUM NUMBER OF PARTICLES      PROGRAM CAN HANDLE     *
173 *  MAXP       - MAXIMUM NUMBER OF CREATED MESONS PROGRAM CAN HANDLE     *
174 *  MAXR       - MAXIMUM NUMBER OF EVENTS AT EACH IMPACT PARAMETER       *
175 *  MAXX       - NUMBER OF MESHPOINTS IN X AND Y DIRECTION = 2 MAXX + 1  *
176 *  MAXZ       - NUMBER OF MESHPOINTS IN Z DIRECTION       = 2 MAXZ + 1  *
177 *  AMU        - 1 ATOMIC MASS UNIT "GEV/C**2"                           *
178 *  MX,MY,MZ   - MESH SIZES IN COORDINATE SPACE [FM] FOR PAULI LATTICE   *
179 *  MPX,MPY,MPZ- MESH SIZES IN MOMENTUM SPACE [GEV/C] FOR PAULI LATTICE  *
180 *---------------------------------------------------------------------- *
181 clin      PARAMETER     (maxpar=200000,MAXR=50,AMU= 0.9383,
182       PARAMETER     (MAXSTR=150001,MAXR=1,AMU= 0.9383,
183      1               AKA=0.498,etaM=0.5475)
184       PARAMETER     (MAXX   =   20,  MAXZ  =    24)
185       PARAMETER     (ISUM   =   1001,  IGAM  =    1100)
186       parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
187 clin      PARAMETER (MAXP = 14000)
188 *----------------------------------------------------------------------*
189       INTEGER   OUTPAR, zta,zpr
190       COMMON  /AA/      R(3,MAXSTR)
191 cc      SAVE /AA/
192       COMMON  /BB/      P(3,MAXSTR)
193 cc      SAVE /BB/
194       COMMON  /CC/      E(MAXSTR)
195 cc      SAVE /CC/
196       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
197      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
198      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
199 cc      SAVE /DD/
200       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
201 cc      SAVE /EE/
202       COMMON  /HH/  PROPER(MAXSTR)
203 cc      SAVE /HH/
204       common  /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
205 cc      SAVE /ff/
206       common  /gg/      dx,dy,dz,dpx,dpy,dpz
207 cc      SAVE /gg/
208       COMMON  /INPUT/ NSTAR,NDIRCT,DIR
209 cc      SAVE /INPUT/
210       COMMON  /PP/      PRHO(-20:20,-24:24)
211       COMMON  /QQ/      PHRHO(-MAXZ:MAXZ,-24:24)
212       COMMON  /RR/      MASSR(0:MAXR)
213 cc      SAVE /RR/
214       common  /ss/      inout(20)
215 cc      SAVE /ss/
216       common  /zz/      zta,zpr
217 cc      SAVE /zz/
218       COMMON  /RUN/     NUM
219 cc      SAVE /RUN/
220 clin-4/2008:
221 c      COMMON  /KKK/     TKAON(7),EKAON(7,0:200)
222       COMMON  /KKK/     TKAON(7),EKAON(7,0:2000)
223 cc      SAVE /KKK/
224       COMMON  /KAON/    AK(3,50,36),SPECK(50,36,7),MF
225 cc      SAVE /KAON/
226       COMMON/TABLE/ xarray(0:1000),earray(0:1000)
227 cc      SAVE /TABLE/
228       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
229 cc      SAVE /input1/
230       COMMON  /DDpi/    piRHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
231 cc      SAVE /DDpi/
232       common  /tt/  PEL(-maxx:maxx,-maxx:maxx,-maxz:maxz)
233      &,rxy(-maxx:maxx,-maxx:maxx,-maxz:maxz)
234 cc      SAVE /tt/
235 clin-4/2008:
236 c      DIMENSION TEMP(3,MAXSTR),SKAON(7),SEKAON(7,0:200)
237       DIMENSION TEMP(3,MAXSTR),SKAON(7),SEKAON(7,0:2000)
238 cbz12/2/98
239       COMMON /INPUT2/ ILAB, MANYB, NTMAX, ICOLL, INSYS, IPOT, MODE, 
240      &   IMOMEN, NFREQ, ICFLOW, ICRHO, ICOU, KPOTEN, KMUL
241 cc      SAVE /INPUT2/
242       COMMON /INPUT3/ PLAB, ELAB, ZEROPT, B0, BI, BM, DENCUT, CYCBOX
243 cc      SAVE /INPUT3/
244 cbz12/2/98end
245 cbz11/16/98
246       COMMON /ARPRNT/ ARPAR1(100), IAPAR2(50), ARINT1(100), IAINT2(50)
247 cc      SAVE /ARPRNT/
248
249 c.....note in the below, since a common block in ART is called EE,
250 c.....the variable EE in /ARPRC/is changed to PEAR.
251 clin-9/29/03 changed name in order to distinguish from /prec2/
252 c        COMMON /ARPRC/ ITYPAR(MAXSTR),
253 c     &       GXAR(MAXSTR), GYAR(MAXSTR), GZAR(MAXSTR), FTAR(MAXSTR),
254 c     &       PXAR(MAXSTR), PYAR(MAXSTR), PZAR(MAXSTR), PEAR(MAXSTR),
255 c     &       XMAR(MAXSTR)
256 cc      SAVE /ARPRC/
257 clin-9/29/03-end
258       COMMON /ARERCP/PRO1(MAXSTR, MAXR)
259 cc      SAVE /ARERCP/
260       COMMON /ARERC1/MULTI1(MAXR)
261 cc      SAVE /ARERC1/
262       COMMON /ARPRC1/ITYP1(MAXSTR, MAXR),
263      &     GX1(MAXSTR, MAXR), GY1(MAXSTR, MAXR), GZ1(MAXSTR, MAXR), 
264      &     FT1(MAXSTR, MAXR),
265      &     PX1(MAXSTR, MAXR), PY1(MAXSTR, MAXR), PZ1(MAXSTR, MAXR),
266      &     EE1(MAXSTR, MAXR), XM1(MAXSTR, MAXR)
267 cc      SAVE /ARPRC1/
268 c
269       DIMENSION NPI(MAXR)
270       DIMENSION RT(3, MAXSTR, MAXR), PT(3, MAXSTR, MAXR)
271      &     , ET(MAXSTR, MAXR), LT(MAXSTR, MAXR), PROT(MAXSTR, MAXR)
272
273       EXTERNAL IARFLV, INVFLV
274 cbz11/16/98end
275       common /lastt/itimeh,bimp 
276 cc      SAVE /lastt/
277       common/snn/efrm,npart1,npart2
278 cc      SAVE /snn/
279       COMMON/hbt/lblast(MAXSTR),xlast(4,MAXSTR),plast(4,MAXSTR),nlast
280 cc      SAVE /hbt/
281       common/resdcy/NSAV,iksdcy
282 cc      SAVE /resdcy/
283       COMMON/RNDF77/NSEED
284 cc      SAVE /RNDF77/
285       COMMON/FTMAX/ftsv(MAXSTR),ftsvt(MAXSTR, MAXR)
286       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
287      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
288      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
289       COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
290 clin-4/2008 zet() expanded to avoid out-of-bound errors:
291       real zet(-45:45)
292       SAVE   
293       data zet /
294      4     1.,0.,0.,0.,0.,
295      3     1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
296      2     -1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
297      1     0.,0.,0.,-1.,0.,1.,0.,-1.,0.,-1.,
298      s     0.,-2.,-1.,0.,1.,0.,0.,0.,0.,-1.,
299      e     0.,
300      s     1.,0.,-1.,0.,1.,-1.,0.,1.,2.,0.,
301      1     1.,0.,1.,0.,-1.,0.,1.,0.,0.,0.,
302      2     -1.,0.,1.,0.,-1.,0.,1.,0.,0.,1.,
303      3     0.,0.,0.,0.,0.,0.,0.,0.,0.,-1.,
304      4     0.,0.,0.,0.,-1./
305
306       nlast=0
307       do 1002 i=1,MAXSTR
308          ftsv(i)=0.
309          do 1101 irun=1,maxr
310             ftsvt(i,irun)=0.
311  1101    continue
312          lblast(i)=999
313          do 1001 j=1,4
314 clin-4/2008 bugs pointed out by Vander Molen & Westfall:
315 c            xlast(i,j)=0.
316 c            plast(i,j)=0.
317             xlast(j,i)=0.
318             plast(j,i)=0.
319  1001    continue
320  1002 continue
321
322 *-------------------------------------------------------------------*
323 * Input information about the reaction system and contral parameters* 
324 *-------------------------------------------------------------------*
325 *              input section starts here                           *
326 *-------------------------------------------------------------------*
327
328 cbz12/2/98
329 c.....input section is moved to subroutine ARTSET
330 cbz12/2/98end
331
332 *-----------------------------------------------------------------------*
333 *                   input section ends here                            *
334 *-----------------------------------------------------------------------*
335 * read in the table for gengrating the transverse momentum
336 * IN THE NN-->DDP PROCESS
337        call tablem
338 * several control parameters, keep them fixed in this code. 
339        ikaon=1
340        nstar=1
341        ndirct=0
342        dir=0.02
343        asy=0.032
344        ESBIN=0.04
345        MF=36
346 *----------------------------------------------------------------------*
347 c      CALL FRONT(12,MASSTA,MASSPR,ELAB)
348 *----------------------------------------------------------------------*
349       RADTA  = 1.124 * FLOAT(MASSTA)**(1./3.)
350       RADPR  = 1.124 * FLOAT(MASSPR)**(1./3.)
351       ZDIST  = RADTA + RADPR
352 c      if ( cycbox.ne.0 ) zdist=0
353       BMAX   = RADTA + RADPR
354       MASS   = MASSTA + MASSPR
355       NTOTAL = NUM * MASS
356 *
357       IF (NTOTAL .GT. MAXSTR) THEN
358         WRITE(12,'(//10X,''**** FATAL ERROR: TOO MANY TEST PART. ****'//
359      & ' '')')
360         STOP
361       END IF
362 *
363 *-----------------------------------------------------------------------
364 *       RELATIVISTIC KINEMATICS
365 *
366 *       1) LABSYSTEM
367 *
368       ETA    = FLOAT(MASSTA) * AMU
369       PZTA   = 0.0
370       BETATA = 0.0
371       GAMMTA = 1.0
372 *
373       EPR    = FLOAT(MASSPR) * (AMU + 0.001 * ELAB)
374       PZPR   = SQRT( EPR**2 - (AMU * FLOAT(MASSPR))**2 )
375       BETAPR = PZPR / EPR
376       GAMMPR = 1.0 / SQRT( 1.0 - BETAPR**2 )
377 *
378 * BETAC AND GAMMAC OF THE C.M. OBSERVED IN THE LAB. FRAME
379         BETAC=(PZPR+PZTA)/(EPR+ETA)
380         GAMMC=1.0 / SQRT(1.-BETAC**2)
381 *
382 c      WRITE(12,'(/10x,''****    KINEMATICAL PARAMETERS    ****''/)')
383 c      WRITE(12,'(10x,''1) LAB-FRAME:        TARGET PROJECTILE'')')
384 c      WRITE(12,'(10x,''   ETOTAL "GEV" '',2F11.4)') ETA, EPR
385 c      WRITE(12,'(10x,''   P "GEV/C"    '',2F11.4)') PZTA, PZPR
386 c      WRITE(12,'(10x,''   BETA         '',2F11.4)') BETATA, BETAPR
387 c      WRITE(12,'(10x,''   GAMMA        '',2F11.4)') GAMMTA, GAMMPR
388       IF (INSYS .NE. 0) THEN
389 *
390 *       2) C.M. SYSTEM
391 *
392         S      = (EPR+ETA)**2 - PZPR**2
393         xx1=4.*alog(float(massta))
394         xx2=4.*alog(float(masspr))
395         xx1=exp(xx1)
396         xx2=exp(xx2)
397         PSQARE = (S**2 + (xx1+ xx2) * AMU**4
398      &             - 2.0 * S * AMU**2 * FLOAT(MASSTA**2 + MASSPR**2)
399      &             - 2.0 * FLOAT(MASSTA**2 * MASSPR**2) * AMU**4)
400      &           / (4.0 * S)
401 *
402         ETA    = SQRT ( PSQARE + (FLOAT(MASSTA) * AMU)**2 )
403         PZTA   = - SQRT(PSQARE)
404         BETATA = PZTA / ETA
405         GAMMTA = 1.0 / SQRT( 1.0 - BETATA**2 )
406 *
407         EPR    = SQRT ( PSQARE + (FLOAT(MASSPR) * AMU)**2 )
408         PZPR   = SQRT(PSQARE)
409         BETAPR = PZPR/ EPR
410         GAMMPR = 1.0 / SQRT( 1.0 - BETAPR**2 )
411 *
412 c        WRITE(12,'(10x,''2) C.M.-FRAME:  '')')
413 c        WRITE(12,'(10x,''   ETOTAL "GEV" '',2F11.4)') ETA, EPR
414 c        WRITE(12,'(10x,''   P "GEV/C"    '',2F11.4)') PZTA, PZPR
415 c        WRITE(12,'(10x,''   BETA         '',2F11.4)') BETATA, BETAPR
416 c        WRITE(12,'(10x,''   GAMMA        '',2F11.4)') GAMMTA, GAMMPR
417 c        WRITE(12,'(10x,''S "GEV**2"      '',F11.4)')  S
418 c        WRITE(12,'(10x,''PSQARE "GEV/C"2 '',E14.3)')  PSQARE
419 c        WRITE(12,'(/10x,''*** CALCULATION DONE IN CM-FRAME ***''/)')
420       ELSE
421 c        WRITE(12,'(/10x,''*** CALCULATION DONE IN LAB-FRAME ***''/)')
422       END IF
423 * MOMENTUM PER PARTICLE
424       PZTA = PZTA / FLOAT(MASSTA)
425       PZPR = PZPR / FLOAT(MASSPR)
426 * total initial energy in the N-N cms frame
427       ECMS0=ETA+EPR
428 *-----------------------------------------------------------------------
429 *
430 * Start loop over many runs of different impact parameters
431 * IF MANYB=1, RUN AT A FIXED IMPACT PARAMETER B0, OTHERWISE GENERATE 
432 * MINIMUM BIAS EVENTS WITHIN THE IMPACT PARAMETER RANGE OF B_MIN AND B_MAX
433        DO 50000 IMANY=1,MANYB
434 *------------------------------------------------------------------------
435 * Initialize the impact parameter B
436        if (manyb. gt.1) then
437 111       BX=1.0-2.0*RANART(NSEED)
438        BY=1.0-2.0*RANART(NSEED)
439        B2=BX*BX+BY*BY
440        IF(B2.GT.1.0) GO TO 111       
441        B=SQRT(B2)*(BM-BI)+BI
442        ELSE
443        B=B0
444        ENDIF
445 c      WRITE(12,'(///10X,''RUN NUMBER:'',I6)') IMANY       
446 c      WRITE(12,'(//10X,''IMPACT PARAMETER B FOR THIS RUN:'',
447 c     &             F9.3,'' FM''/10X,49(''*'')/)') B
448 *
449 *-----------------------------------------------------------------------
450 *       INITIALIZATION
451 *1 INITIALIZATION IN ISOSPIN SPACE FOR BOTH THE PROJECTILE AND TARGET
452       call coulin(masspr,massta,NUM)
453 *2 INITIALIZATION IN PHASE SPACE FOR THE TARGET
454       CALL INIT(1       ,MASSTA   ,NUM     ,RADTA,
455      &          B/2.    ,ZEROPT+ZDIST/2.   ,PZTA,
456      &          GAMMTA  ,ISEED    ,MASS    ,IMOMEN)
457 *3.1 INITIALIZATION IN PHASE SPACE FOR THE PROJECTILE
458       CALL INIT(1+MASSTA,MASS     ,NUM     ,RADPR,
459      &          -B/2.   ,ZEROPT-ZDIST/2.   ,PZPR,
460      &          GAMMPR  ,ISEED    ,MASS    ,IMOMEN)
461 *3.2 OUTPAR IS THE NO. OF ESCAPED PARTICLES
462       OUTPAR = 0
463 *3.3 INITIALIZATION FOR THE NO. OF PARTICLES IN EACH SAMPLE
464 *    THIS IS NEEDED DUE TO THE FACT THAT PIONS CAN BE PRODUCED OR ABSORBED
465       MASSR(0)=0
466       DO 1003 IR =1,NUM
467       MASSR(IR)=MASS
468  1003 CONTINUE
469 *3.4 INITIALIZation FOR THE KAON SPECTRUM
470 *      CALL KSPEC0(BETAC,GAMMC)
471 * calculate the local baryon density matrix
472       CALL DENS(IPOT,MASS,NUM,OUTPAR)
473 *
474 *-----------------------------------------------------------------------
475 *       CONTROL PRINTOUT OF INITIAL CONFIGURATION
476 *
477 *      WRITE(12,'(''**********  INITIAL CONFIGURATION  **********''/)')
478 *
479 c print out the INITIAL density matrix in the reaction plane
480 c       do ix=-10,10
481 c       do iz=-10,10
482 c       write(1053,992)ix,iz,rho(ix,0,iz)/0.168
483 c       end do
484 c       end do
485 *-----------------------------------------------------------------------
486 *       CALCULATE MOMENTA FOR T = 0.5 * DT 
487 *       (TO OBTAIN 2ND DEGREE ACCURACY!)
488 *       "Reference: J. AICHELIN ET AL., PHYS. REV. C31, 1730 (1985)"
489 *
490       IF (ICOLL .NE. -1) THEN
491         DO 700 I = 1,NTOTAL
492           IX = NINT( R(1,I) )
493           IY = NINT( R(2,I) )
494           IZ = NINT( R(3,I) )
495 clin-4/2008 check bounds:
496           IF(IX.GE.MAXX.OR.IY.GE.MAXX.OR.IZ.GE.MAXZ
497      1         .OR.IX.LE.-MAXX.OR.IY.LE.-MAXX.OR.IZ.LE.-MAXZ) goto 700
498           CALL GRADU(IPOT,IX,IY,IZ,GRADX,GRADY,GRADZ)
499           P(1,I) = P(1,I) - (0.5 * DT) * GRADX
500           P(2,I) = P(2,I) - (0.5 * DT) * GRADY
501           P(3,I) = P(3,I) - (0.5 * DT) * GRADZ
502   700   CONTINUE
503       END IF
504 *-----------------------------------------------------------------------
505 *-----------------------------------------------------------------------
506 *4 INITIALIZATION OF TIME-LOOP VARIABLES
507 *4.1 COLLISION NUMBER COUNTERS
508 clin 51      RCNNE  = 0
509         RCNNE  = 0
510        RDD  = 0
511        RPP  = 0
512        rppk = 0
513        RPN  = 0
514        rpd  = 0
515        RKN  = 0
516        RNNK = 0
517        RDDK = 0
518        RNDK = 0
519       RCNND  = 0
520       RCNDN  = 0
521       RCOLL  = 0
522       RBLOC  = 0
523       RDIRT  = 0
524       RDECAY = 0
525       RRES   = 0
526 *4.11 KAON PRODUCTION PROBABILITY COUNTER FOR PERTURBATIVE CALCULATIONS ONLY
527       DO 1005 KKK=1,5
528          SKAON(KKK)  = 0
529          DO 1004 IS=1,2000
530             SEKAON(KKK,IS)=0
531  1004    CONTINUE
532  1005 CONTINUE
533 *4.12 anti-proton and anti-kaon counters
534        pr0=0.
535        pr1=0.
536        ska0=0.
537        ska1=0.
538 *       ============== LOOP OVER ALL TIME STEPS ================       *
539 *                             STARTS HERE                              *
540 *       ========================================================       *
541 cbz11/16/98
542       IF (IAPAR2(1) .NE. 1) THEN
543          DO 1016 I = 1, MAXSTR
544             DO 1015 J = 1, 3
545                R(J, I) = 0.
546                P(J, I) = 0.
547  1015       CONTINUE
548             E(I) = 0.
549             LB(I) = 0
550 cbz3/25/00
551             ID(I)=0
552 c     sp 12/19/00
553            PROPER(I) = 1.
554  1016   CONTINUE
555          MASS = 0
556 cbz12/22/98
557 c         MASSR(1) = 0
558 c         NP = 0
559 c         NPI = 1
560          NP = 0
561          DO 1017 J = 1, NUM
562             MASSR(J) = 0
563             NPI(J) = 1
564  1017    CONTINUE
565          DO 1019 I = 1, MAXR
566             DO 1018 J = 1, MAXSTR
567                RT(1, J, I) = 0.
568                RT(2, J, I) = 0.
569                RT(3, J, I) = 0.
570                PT(1, J, I) = 0.
571                PT(2, J, I) = 0.
572                PT(3, J, I) = 0.
573                ET(J, I) = 0.
574                LT(J, I) = 0
575 c     sp 12/19/00
576                PROT(J, I) = 1.
577  1018       CONTINUE
578  1019    CONTINUE
579 cbz12/22/98end
580       END IF
581 cbz11/16/98end
582         
583       DO 10000 NT = 1,NTMAX
584
585 *TEMPORARY PARTICLE COUNTERS
586 *4.2 PION COUNTERS : LP1,LP2 AND LP3 ARE THE NO. OF P+,P0 AND P-
587       LP1=0
588       LP2=0
589       LP3=0
590 *4.3 DELTA COUNTERS : LD1,LD2,LD3 AND LD4 ARE THE NO. OF D++,D+,D0 AND D-
591       LD1=0
592       LD2=0
593       LD3=0
594       LD4=0
595 *4.4 N*(1440) COUNTERS : LN1 AND LN2 ARE THE NO. OF N*+ AND N*0
596       LN1=0
597       LN2=0
598 *4.5 N*(1535) counters
599       LN5=0
600 *4.6 ETA COUNTERS
601       LE=0
602 *4.7 KAON COUNTERS
603       LKAON=0
604
605 clin-11/09/00:
606 * KAON* COUNTERS
607       LKAONS=0
608
609 *-----------------------------------------------------------------------
610         IF (ICOLL .NE. 1) THEN
611 * STUDYING BINARY COLLISIONS AMONG PARTICLES DURING THIS TIME INTERVAL *
612 clin-10/25/02 get rid of argument usage mismatch in relcol(.nt.):
613            numnt=nt
614           CALL RELCOL(LCOLL,LBLOC,LCNNE,LDD,LPP,lppk,
615      &    LPN,lpd,LRHO,LOMEGA,LKN,LNNK,LDDK,LNDK,LCNND,
616      &    LCNDN,LDIRT,LDECAY,LRES,LDOU,LDDRHO,LNNRHO,
617      &    LNNOM,numnt,ntmax,sp,akaon,sk)
618 c     &    LNNOM,NT,ntmax,sp,akaon,sk)
619 clin-10/25/02-end
620 *-----------------------------------------------------------------------
621
622 c dilepton production from Dalitz decay
623 c of pi0 at final time
624 *      if(nt .eq. ntmax) call dalitz_pi(nt,ntmax)
625 *                                                                      *
626 **********************************
627 *                Lables of collision channels                             *
628 **********************************
629 *         LCOLL   - NUMBER OF COLLISIONS              (INTEGER,OUTPUT) *
630 *         LBLOC   - NUMBER OF PULI-BLOCKED COLLISIONS (INTEGER,OUTPUT) *
631 *         LCNNE   - NUMBER OF ELASTIC COLLISION       (INTEGER,OUTPUT) *
632 *         LCNND   - NUMBER OF N+N->N+DELTA REACTION   (INTEGER,OUTPUT) *
633 *         LCNDN   - NUMBER OF N+DELTA->N+N REACTION   (INTEGER,OUTPUT) *
634 *         LDD     - NUMBER OF RESONANCE+RESONANCE COLLISIONS
635 *         LPP     - NUMBER OF PION+PION elastic COLIISIONS
636 *         lppk    - number of pion(RHO,OMEGA)+pion(RHO,OMEGA)
637 *                 -->K+K- collisions
638 *         LPN     - NUMBER OF PION+N-->KAON+X
639 *         lpd     - number of pion+n-->delta+pion
640 *         lrho    - number of pion+n-->Delta+rho
641 *         lomega  - number of pion+n-->Delta+omega
642 *         LKN     - NUMBER OF KAON RESCATTERINGS
643 *         LNNK    - NUMBER OF bb-->kAON PROCESS
644 *         LDDK    - NUMBER OF DD-->KAON PROCESS
645 *         LNDK    - NUMBER OF ND-->KAON PROCESS
646 ***********************************
647 * TIME-INTEGRATED COLLISIONS NUMBERS OF VARIOUS PROCESSES
648           RCOLL = RCOLL + FLOAT(LCOLL)/num
649           RBLOC = RBLOC + FLOAT(LBLOC)/num
650           RCNNE = RCNNE + FLOAT(LCNNE)/num
651          RDD   = RDD   + FLOAT(LDD)/num
652          RPP   = RPP   + FLOAT(LPP)/NUM
653          rppk  =rppk   + float(lppk)/num
654          RPN   = RPN   + FLOAT(LPN)/NUM
655          rpd   =rpd    + float(lpd)/num
656          RKN   = RKN   + FLOAT(LKN)/NUM
657          RNNK  =RNNK   + FLOAT(LNNK)/NUM
658          RDDK  =RDDK   + FLOAT(LDDK)/NUM
659          RNDK  =RNDK   + FLOAT(LNDK)/NUM
660           RCNND = RCNND + FLOAT(LCNND)/num
661           RCNDN = RCNDN + FLOAT(LCNDN)/num
662           RDIRT = RDIRT + FLOAT(LDIRT)/num
663           RDECAY= RDECAY+ FLOAT(LDECAY)/num
664           RRES  = RRES  + FLOAT(LRES)/num
665 * AVERAGE RATES OF VARIOUS COLLISIONS IN THE CURRENT TIME STEP
666           ADIRT=LDIRT/DT/num
667           ACOLL=(LCOLL-LBLOC)/DT/num
668           ACNND=LCNND/DT/num
669           ACNDN=LCNDN/DT/num
670           ADECAY=LDECAY/DT/num
671           ARES=LRES/DT/num
672          ADOU=LDOU/DT/NUM
673          ADDRHO=LDDRHO/DT/NUM
674          ANNRHO=LNNRHO/DT/NUM
675          ANNOM=LNNOM/DT/NUM
676          ADD=LDD/DT/num
677          APP=LPP/DT/num
678          appk=lppk/dt/num
679           APN=LPN/DT/num
680          apd=lpd/dt/num
681          arh=lrho/dt/num
682          aom=lomega/dt/num
683          AKN=LKN/DT/num
684          ANNK=LNNK/DT/num
685          ADDK=LDDK/DT/num
686          ANDK=LNDK/DT/num
687 * PRINT OUT THE VARIOUS COLLISION RATES
688 * (1)N-N COLLISIONS 
689 c       WRITE(1010,9991)NT*DT,ACNND,ADOU,ADIRT,ADDRHO,ANNRHO+ANNOM
690 c9991       FORMAT(6(E10.3,2X))
691 * (2)PION-N COLLISIONS
692 c       WRITE(1011,'(5(E10.3,2X))')NT*DT,apd,ARH,AOM,APN
693 * (3)KAON PRODUCTION CHANNELS
694 c        WRITE(1012,9993)NT*DT,ANNK,ADDK,ANDK,APN,Appk
695 * (4)D(N*)+D(N*) COLLISION
696 c       WRITE(1013,'(4(E10.3,2X))')NT*DT,ADDK,ADD,ADD+ADDK
697 * (5)MESON+MESON
698 c       WRITE(1014,'(4(E10.3,2X))')NT*DT,APPK,APP,APP+APPK
699 * (6)DECAY AND RESONANCE
700 c       WRITE(1016,'(3(E10.3,2X))')NT*DT,ARES,ADECAY
701 * (7)N+D(N*)
702 c       WRITE(1017,'(4(E10.3,2X))')NT*DT,ACNDN,ANDK,ACNDN+ANDK
703 c9992    FORMAT(5(E10.3,2X))
704 c9993    FORMAT(6(E10.3,2X))
705 * PRINT OUT TIME-INTEGRATED COLLISION INFORMATION
706 cbz12/28/98
707 c        write(1018,'(5(e10.3,2x),/, 4(e10.3,2x))')
708 c     &           RCNNE,RCNND,RCNDN,RDIRT,rpd,
709 c     &           RDECAY,RRES,RDD,RPP
710 c        write(1018,'(6(e10.3,2x),/, 5(e10.3,2x))')
711 c     &           NT*DT,RCNNE,RCNND,RCNDN,RDIRT,rpd,
712 c     &           NT*DT,RDECAY,RRES,RDD,RPP
713 cbz12/18/98end
714 * PRINT OUT TIME-INTEGRATED KAON MULTIPLICITIES FROM DIFFERENT CHANNELS
715 c       WRITE(1019,'(7(E10.3,2X))')NT*DT,RNNK,RDDK,RNDK,RPN,Rppk,
716 c     &                           RNNK+RDDK+RNDK+RPN+Rppk
717 *                                                                      *
718
719         END IF
720 *
721 *       UPDATE BARYON DENSITY
722 *
723         CALL DENS(IPOT,MASS,NUM,OUTPAR)
724 *
725 *       UPDATE POSITIONS FOR ALL THE PARTICLES PRESENT AT THIS TIME
726 *
727        sumene=0
728         ISO=0
729         DO 201 MRUN=1,NUM
730         ISO=ISO+MASSR(MRUN-1)
731         DO 201 I0=1,MASSR(MRUN)
732         I =I0+ISO
733         ETOTAL = SQRT( E(I)**2 + P(1,I)**2 + P(2,I)**2 +P(3,I)**2 )
734        sumene=sumene+etotal
735 C for kaons, if there is a potential
736 C CALCULATE THE ENERGY OF THE KAON ACCORDING TO THE IMPULSE APPROXIMATION
737 C REFERENCE: B.A. LI AND C.M. KO, PHYS. REV. C 54 (1996) 3283. 
738          if(kpoten.ne.0.and.lb(i).eq.23)then
739              den=0.
740               IX = NINT( R(1,I) )
741               IY = NINT( R(2,I) )
742               IZ = NINT( R(3,I) )
743 clin-4/2008:
744 c       IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
745 c     & ABS(IZ) .LT. MAXZ) den=rho(ix,iy,iz)
746               IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
747      1             .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ)
748      2             den=rho(ix,iy,iz)
749 c         ecor=0.1973**2*0.255*kmul*4*3.14159*(1.+0.4396/0.938)
750 c         etotal=sqrt(etotal**2+ecor*den)
751 c** G.Q Li potential form with n_s = n_b and pot(n_0)=29 MeV, m^*=m
752 c     GeV^2 fm^3
753           akg = 0.1727
754 c     GeV fm^3
755           bkg = 0.333
756          rnsg = den
757          ecor = - akg*rnsg + (bkg*den)**2
758          etotal = sqrt(etotal**2 + ecor)
759          endif
760 c
761          if(kpoten.ne.0.and.lb(i).eq.21)then
762              den=0.
763               IX = NINT( R(1,I) )
764               IY = NINT( R(2,I) )
765               IZ = NINT( R(3,I) )
766 clin-4/2008:
767 c       IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
768 c     & ABS(IZ) .LT. MAXZ) den=rho(ix,iy,iz)
769               IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
770      1             .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ)
771      2             den=rho(ix,iy,iz)
772 c* for song potential no effect on position
773 c** G.Q Li potential form with n_s = n_b and pot(n_0)=29 MeV, m^*=m
774 c     GeV^2 fm^3
775           akg = 0.1727
776 c     GeV fm^3
777           bkg = 0.333
778          rnsg = den
779          ecor = - akg*rnsg + (bkg*den)**2
780          etotal = sqrt(etotal**2 + ecor)
781           endif
782 c
783 C UPDATE POSITIONS
784           R(1,I) = R(1,I) + DT*P(1,I)/ETOTAL
785           R(2,I) = R(2,I) + DT*P(2,I)/ETOTAL
786           R(3,I) = R(3,I) + DT*P(3,I)/ETOTAL
787 c use cyclic boundary conitions
788             if ( cycbox.ne.0 ) then
789               if ( r(1,i).gt. cycbox/2 ) r(1,i)=r(1,i)-cycbox
790               if ( r(1,i).le.-cycbox/2 ) r(1,i)=r(1,i)+cycbox
791               if ( r(2,i).gt. cycbox/2 ) r(2,i)=r(2,i)-cycbox
792               if ( r(2,i).le.-cycbox/2 ) r(2,i)=r(2,i)+cycbox
793               if ( r(3,i).gt. cycbox/2 ) r(3,i)=r(3,i)-cycbox
794               if ( r(3,i).le.-cycbox/2 ) r(3,i)=r(3,i)+cycbox
795             end if
796 * UPDATE THE DELTA, N* AND PION COUNTERS
797           LB1=LB(I)
798 * 1. FOR DELTA++
799         IF(LB1.EQ.9)LD1=LD1+1
800 * 2. FOR DELTA+
801         IF(LB1.EQ.8)LD2=LD2+1
802 * 3. FOR DELTA0
803         IF(LB1.EQ.7)LD3=LD3+1
804 * 4. FOR DELTA-
805         IF(LB1.EQ.6)LD4=LD4+1
806 * 5. FOR N*+(1440)
807         IF(LB1.EQ.11)LN1=LN1+1
808 * 6. FOR N*0(1440)
809         IF(LB1.EQ.10)LN2=LN2+1
810 * 6.1 FOR N*(1535)
811        IF((LB1.EQ.13).OR.(LB1.EQ.12))LN5=LN5+1
812 * 6.2 FOR ETA
813        IF(LB1.EQ.0)LE=LE+1
814 * 6.3 FOR KAONS
815        IF(LB1.EQ.23)LKAON=LKAON+1
816 clin-11/09/00: FOR KAON*
817        IF(LB1.EQ.30)LKAONS=LKAONS+1
818
819 * UPDATE PION COUNTER
820 * 7. FOR PION+
821         IF(LB1.EQ.5)LP1=LP1+1
822 * 8. FOR PION0
823         IF(LB1.EQ.4)LP2=LP2+1
824 * 9. FOR PION-
825         IF(LB1.EQ.3)LP3=LP3+1
826 201     CONTINUE
827         LP=LP1+LP2+LP3
828         LD=LD1+LD2+LD3+LD4
829         LN=LN1+LN2
830         ALP=FLOAT(LP)/FLOAT(NUM)
831         ALD=FLOAT(LD)/FLOAT(NUM)
832         ALN=FLOAT(LN)/FLOAT(NUM)
833        ALN5=FLOAT(LN5)/FLOAT(NUM)
834         ATOTAL=ALP+ALD+ALN+0.5*ALN5
835        ALE=FLOAT(LE)/FLOAT(NUM)
836        ALKAON=FLOAT(LKAON)/FLOAT(NUM)
837 * UPDATE MOMENTUM DUE TO COULOMB INTERACTION 
838         if (icou .eq. 1) then
839 *       with Coulomb interaction
840           iso=0
841           do 1026 irun = 1,num
842             iso=iso+massr(irun-1)
843             do 1021 il = 1,massr(irun)
844                temp(1,il) = 0.
845                temp(2,il) = 0.
846                temp(3,il) = 0.
847  1021       continue
848             do 1023 il = 1, massr(irun)
849               i=iso+il
850               if (zet(lb(i)).ne.0) then
851                 do 1022 jl = 1,il-1
852                   j=iso+jl
853                   if (zet(lb(j)).ne.0) then
854                     ddx=r(1,i)-r(1,j)
855                     ddy=r(2,i)-r(2,j)
856                     ddz=r(3,i)-r(3,j)
857                     rdiff = sqrt(ddx**2+ddy**2+ddz**2)
858                     if (rdiff .le. 1.) rdiff = 1.
859                     grp=zet(lb(i))*zet(lb(j))/rdiff**3
860                     ddx=ddx*grp
861                     ddy=ddy*grp
862                     ddz=ddz*grp
863                     temp(1,il)=temp(1,il)+ddx
864                     temp(2,il)=temp(2,il)+ddy
865                     temp(3,il)=temp(3,il)+ddz
866                     temp(1,jl)=temp(1,jl)-ddx
867                     temp(2,jl)=temp(2,jl)-ddy
868                     temp(3,jl)=temp(3,jl)-ddz
869                   end if
870  1022          continue
871               end if
872  1023      continue
873             do 1025 il = 1,massr(irun)
874               i= iso+il
875               if (zet(lb(i)).ne.0) then
876                 do 1024 idir = 1,3
877                   p(idir,i) = p(idir,i) + temp(idir,il)
878      &                                    * dt * 0.00144
879  1024          continue
880               end if
881  1025      continue
882  1026   continue
883         end if
884 *       In the following, we shall:  
885 *       (1) UPDATE MOMENTA DUE TO THE MEAN FIELD FOR BARYONS AND KAONS,
886 *       (2) calculate the thermalization, temperature in a sphere of 
887 *           radius 2.0 fm AROUND THE CM
888 *       (3) AND CALCULATE THE NUMBER OF PARTICLES IN THE HIGH DENSITY REGION 
889        spt=0
890        spz=0
891        ncen=0
892        ekin=0
893           NLOST = 0
894           MEAN=0
895          nquark=0
896          nbaryn=0
897 csp06/18/01
898            rads = 2.
899            zras = 0.1
900            denst = 0.
901            edenst = 0.
902 csp06/18/01 end
903           DO 6000 IRUN = 1,NUM
904           MEAN=MEAN+MASSR(IRUN-1)
905           DO 5800 J = 1,MASSR(irun)
906           I=J+MEAN
907 c
908 csp06/18/01
909            radut = sqrt(r(1,i)**2+r(2,i)**2)
910        if( radut .le. rads )then
911         if( abs(r(3,i)) .le. zras*nt*dt )then
912 c         vols = 3.14159*radut**2*abs(r(3,i))      ! cylinder pi*r^2*l
913 c     cylinder pi*r^2*l
914          vols = 3.14159*rads**2*zras
915          engs=sqrt(p(1,i)**2+p(2,i)**2+p(3,i)**2+e(i)**2)
916          gammas=1.
917          if(e(i).ne.0.)gammas=engs/e(i)
918 c     rho
919          denst = denst + 1./gammas/vols
920 c     energy density
921          edenst = edenst + engs/gammas/gammas/vols
922         endif
923        endif
924 csp06/18/01 end
925 c
926          drr=sqrt(r(1,i)**2+r(2,i)**2+r(3,i)**2)
927          if(drr.le.2.0)then
928          spt=spt+p(1,i)**2+p(2,i)**2
929          spz=spz+p(3,i)**2
930          ncen=ncen+1
931          ekin=ekin+sqrt(p(1,i)**2+p(2,i)**2+p(3,i)**2+e(i)**2)-e(i)
932          endif
933               IX = NINT( R(1,I) )
934               IY = NINT( R(2,I) )
935               IZ = NINT( R(3,I) )
936 C calculate the No. of particles in the high density region
937 clin-4/2008:
938 c              IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
939 c     & ABS(IZ) .LT. MAXZ) THEN
940               IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
941      1          .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ) THEN
942        if(rho(ix,iy,iz)/0.168.gt.dencut)go to 5800
943        if((rho(ix,iy,iz)/0.168.gt.5.).and.(e(i).gt.0.9))
944      &  nbaryn=nbaryn+1
945        if(pel(ix,iy,iz).gt.2.0)nquark=nquark+1
946        endif
947 c*
948 c If there is a kaon potential, propogating kaons 
949         if(kpoten.ne.0.and.lb(i).eq.23)then
950         den=0.
951 clin-4/2008:
952 c       IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
953 c     & ABS(IZ) .LT. MAXZ)then
954         IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
955      1       .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ) THEN
956            den=rho(ix,iy,iz)
957 c        ecor=0.1973**2*0.255*kmul*4*3.14159*(1.+0.4396/0.938)
958 c       etotal=sqrt(P(1,i)**2+p(2,I)**2+p(3,i)**2+e(i)**2+ecor*den)
959 c** for G.Q Li potential form with n_s = n_b and pot(n_0)=29 MeV
960 c     !! GeV^2 fm^3
961             akg = 0.1727
962 c     !! GeV fm^3
963             bkg = 0.333
964           rnsg = den
965           ecor = - akg*rnsg + (bkg*den)**2
966           etotal = sqrt(P(1,i)**2+p(2,I)**2+p(3,i)**2+e(i)**2 + ecor)
967           ecor = - akg + 2.*bkg**2*den + 2.*bkg*etotal
968 c** G.Q. Li potential (END)           
969         CALL GRADUK(IX,IY,IZ,GRADXk,GRADYk,GRADZk)
970         P(1,I) = P(1,I) - DT * GRADXk*ecor/(2.*etotal)
971         P(2,I) = P(2,I) - DT * GRADYk*ecor/(2.*etotal)
972         P(3,I) = P(3,I) - DT * GRADZk*ecor/(2.*etotal)
973         endif
974          endif
975 c
976         if(kpoten.ne.0.and.lb(i).eq.21)then
977          den=0.
978 clin-4/2008:
979 c           IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
980 c     &        ABS(IZ) .LT. MAXZ)then
981          IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
982      1        .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ) THEN
983                den=rho(ix,iy,iz)
984         CALL GRADUK(IX,IY,IZ,GRADXk,GRADYk,GRADZk)
985 c        P(1,I) = P(1,I) - DT * GRADXk*(-0.12/0.168)    !! song potential
986 c        P(2,I) = P(2,I) - DT * GRADYk*(-0.12/0.168)
987 c        P(3,I) = P(3,I) - DT * GRADZk*(-0.12/0.168)
988 c** for G.Q Li potential form with n_s = n_b and pot(n_0)=29 MeV
989 c    !! GeV^2 fm^3
990             akg = 0.1727
991 c     !! GeV fm^3
992             bkg = 0.333
993           rnsg = den
994           ecor = - akg*rnsg + (bkg*den)**2
995           etotal = sqrt(P(1,i)**2+p(2,I)**2+p(3,i)**2+e(i)**2 + ecor)
996           ecor = - akg + 2.*bkg**2*den - 2.*bkg*etotal
997         P(1,I) = P(1,I) - DT * GRADXk*ecor/(2.*etotal)
998         P(2,I) = P(2,I) - DT * GRADYk*ecor/(2.*etotal)
999         P(3,I) = P(3,I) - DT * GRADZk*ecor/(2.*etotal)
1000 c** G.Q. Li potential (END)           
1001         endif
1002          endif
1003 c
1004 c for other mesons, there is no potential
1005        if(j.gt.mass)go to 5800         
1006 c  with mean field interaction for baryons   (open endif below) !!sp05
1007 **      if( (iabs(lb(i)).eq.1.or.iabs(lb(i)).eq.2) .or.
1008 **    &     (iabs(lb(i)).ge.6.and.iabs(lb(i)).le.17) .or.
1009 **    &      iabs(lb(i)).eq.40.or.iabs(lb(i)).eq.41 )then  
1010         IF (ICOLL .NE. -1) THEN
1011 * check if the baryon has run off the lattice
1012 *             IX0=NINT(R(1,I)/DX)
1013 *             IY0=NINT(R(2,I)/DY)
1014 *             IZ0=NINT(R(3,I)/DZ)
1015 *             IPX0=NINT(P(1,I)/DPX)
1016 *             IPY0=NINT(P(2,I)/DPY)
1017 *             IPZ0=NINT(P(3,I)/DPZ)
1018 *      if ( (abs(ix0).gt.mx) .or. (abs(iy0).gt.my) .or. (abs(iz0).gt.mz)
1019 *     &  .or. (abs(ipx0).gt.mpx) .or. (abs(ipy0) 
1020 *     &  .or. (ipz0.lt.-mpz) .or. (ipz0.gt.mpzp)) NLOST=NLOST+1
1021 clin-4/2008:
1022 c              IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
1023 c     &                                    ABS(IZ) .LT. MAXZ     ) THEN
1024            IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
1025      1          .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ) THEN
1026                 CALL GRADU(IPOT,IX,IY,IZ,GRADX,GRADY,GRADZ)
1027               TZ=0.
1028               GRADXN=0
1029               GRADYN=0
1030               GRADZN=0
1031               GRADXP=0
1032               GRADYP=0
1033               GRADZP=0
1034              IF(ICOU.EQ.1)THEN
1035                 CALL GRADUP(IX,IY,IZ,GRADXP,GRADYP,GRADZP)
1036                 CALL GRADUN(IX,IY,IZ,GRADXN,GRADYN,GRADZN)
1037                IF(ZET(LB(I)).NE.0)TZ=-1
1038                IF(ZET(LB(I)).EQ.0)TZ= 1
1039              END IF
1040            if(iabs(lb(i)).ge.14.and.iabs(lb(i)).le.17)then
1041               facl = 2./3.
1042             elseif(iabs(lb(i)).eq.40.or.iabs(lb(i)).eq.41)then
1043               facl = 1./3.
1044             else
1045               facl = 1.
1046             endif
1047         P(1,I) = P(1,I) - facl*DT * (GRADX+asy*(GRADXN-GRADXP)*TZ)
1048         P(2,I) = P(2,I) - facl*DT * (GRADY+asy*(GRADYN-GRADYP)*TZ)
1049         P(3,I) = P(3,I) - facl*DT * (GRADZ+asy*(GRADZN-GRADZP)*TZ)
1050                 end if                                                       
1051               ENDIF
1052 **          endif          !!sp05     
1053  5800       CONTINUE
1054  6000       CONTINUE
1055 c print out the average no. of particles in regions where the local 
1056 c baryon density is higher than 5*rho0 
1057 c       write(1072,'(e10.3,2x,e10.3)')nt*dt,float(nbaryn)/float(num)
1058 C print out the average no. of particles in regions where the local 
1059 c energy density is higher than 2 GeV/fm^3. 
1060 c       write(1073,'(e10.3,2x,e10.3)')nt*dt,float(nquark)/float(num)
1061 c print out the no. of particles that have run off the lattice
1062 *          IF (NLOST .NE. 0 .AND. (NT/NFREQ)*NFREQ .EQ. NT) THEN
1063 *            WRITE(12,'(5X,''***'',I7,'' TESTPARTICLES LOST AFTER '',
1064 *     &                   ''TIME STEP NUMBER'',I4)') NLOST, NT
1065 *         END IF
1066 *
1067 *       update phase space density
1068 *        call platin(mode,mass,num,dx,dy,dz,dpx,dpy,dpz,fnorm)
1069 *
1070 *       CONTROL-PRINTOUT OF CONFIGURATION (IF REQUIRED)
1071 *
1072 *        if (inout(5) .eq. 2) CALL ENERGY(NT,IPOT,NUM,MASS,EMIN,EMAX)
1073 *
1074
1075 * print out central baryon density as a function of time
1076        CDEN=RHO(0,0,0)/0.168
1077 cc        WRITE(1002,990)FLOAT(NT)*DT,CDEN
1078 c        WRITE(1002,1990)FLOAT(NT)*DT,CDEN,denst/real(num)
1079 * print out the central energy density as a function of time
1080 cc        WRITE(1003,990)FLOAT(NT)*DT,PEL(0,0,0)
1081 c        WRITE(1003,1990)FLOAT(NT)*DT,PEL(0,0,0),edenst/real(num)
1082 * print out the no. of pion-like particles as a function of time 
1083 c        WRITE(1004,9999)FLOAT(NT)*DT,ALD,ALN,ALP,ALN5,
1084 c     &               ALD+ALN+ALP+0.5*ALN5
1085 * print out the no. of eta-like particles as a function of time
1086 c        WRITE(1005,991)FLOAT(NT)*DT,ALN5,ALE,ALE+0.5*ALN5
1087 c990       FORMAT(E10.3,2X,E10.3)
1088 c1990       FORMAT(E10.3,2X,E10.3,2X,E10.3)
1089 c991       FORMAT(E10.3,2X,E10.3,2X,E10.3,2X,E10.3)
1090 c9999    FORMAT(e10.3,2X,e10.3,2X,E10.3,2X,E10.3,2X,
1091 c     1  E10.3,2X,E10.3)
1092 C THE FOLLOWING OUTPUTS CAN BE TURNED ON/OFF by setting icflow and icrho=0  
1093 c print out the baryon and meson density matrix in the reaction plane
1094         IF ((NT/NFREQ)*NFREQ .EQ. NT ) THEN
1095        if(icflow.eq.1)call flow(nt)
1096 cbz11/18/98
1097 c       if(icrho.ne.1)go to 10000 
1098 c       if (icrho .eq. 1) then 
1099 cbz11/18/98end
1100 c       do ix=-10,10
1101 c       do iz=-10,10
1102 c       write(1053,992)ix,iz,rho(ix,0,iz)/0.168
1103 c       write(1054,992)ix,iz,pirho(ix,0,iz)/0.168
1104 c       write(1055,992)ix,iz,pel(ix,0,iz)
1105 c       end do
1106 c       end do
1107 cbz11/18/98
1108 c        end if
1109 cbz11/18/98end
1110 c992       format(i3,i3,e11.4)
1111        endif
1112 c print out the ENERGY density matrix in the reaction plane
1113 C CHECK LOCAL MOMENTUM EQUILIBRIUM IN EACH CELL, 
1114 C AND PERFORM ON-LINE FLOW ANALYSIS AT A FREQUENCY OF NFREQ
1115 c        IF ((NT/NFREQ)*NFREQ .EQ. NT ) THEN
1116 c       call flow(nt)
1117 c       call equ(ipot,mass,num,outpar)
1118 c       do ix=-10,10
1119 c       do iz=-10,10
1120 c       write(1055,992)ix,iz,pel(ix,0,iz)
1121 c       write(1056,992)ix,iz,rxy(ix,0,iz)
1122 c       end do
1123 c       end do
1124 c       endif
1125 C calculate the volume of high BARYON AND ENERGY density 
1126 C matter as a function of time
1127 c       vbrho=0.
1128 c       verho=0.
1129 c       do ix=-20,20
1130 c       do iy=-20,20
1131 c       do iz=-20,20
1132 c       if(rho(ix,iy,iz)/0.168.gt.5.)vbrho=vbrho+1.
1133 c       if(pel(ix,iy,iz).gt.2.)verho=verho+1.
1134 c       end do
1135 c       end do
1136 c       end do
1137 c       write(1081,993)dt*nt,vbrho
1138 c       write(1082,993)dt*nt,verho
1139 c993       format(e11.4,2x,e11.4)
1140 *-----------------------------------------------------------------------
1141 cbz11/16/98
1142 c.....for read-in initial conditions produce particles from read-in 
1143 c.....common block.
1144 c.....note that this part is only for cascade with number of test particles
1145 c.....NUM = 1.
1146       IF (IAPAR2(1) .NE. 1) THEN
1147          CT = NT * DT
1148 cbz12/22/98
1149 c         NP = MASSR(1)
1150 c         DO WHILE (FTAR(NPI) .GT. CT - DT .AND. FTAR(NPI) .LE. CT)
1151 c            NP = NP + 1
1152 c            R(1, NP) = GXAR(NPI) + PXAR(NPI) / PEAR(NPI) * (CT - FTAR(NPI))
1153 c            R(2, NP) = GYAR(NPI) + PYAR(NPI) / PEAR(NPI) * (CT - FTAR(NPI))
1154 c            R(3, NP) = GZAR(NPI) + PZAR(NPI) / PEAR(NPI) * (CT - FTAR(NPI))
1155 c            P(1, NP) = PXAR(NPI)
1156 c            P(2, NP) = PYAR(NPI)
1157 c            P(3, NP) = PZAR(NPI)
1158 c            E(NP) = XMAR(NPI)
1159 c            LB(NP) = IARFLV(ITYPAR(NPI))
1160 c            NPI = NPI + 1
1161 c         END DO
1162 c         MASSR(1) = NP
1163          IA = 0
1164          DO 1028 IRUN = 1, NUM
1165             DO 1027 IC = 1, MASSR(IRUN)
1166                IE = IA + IC
1167                RT(1, IC, IRUN) = R(1, IE)
1168                RT(2, IC, IRUN) = R(2, IE)
1169                RT(3, IC, IRUN) = R(3, IE)
1170                PT(1, IC, IRUN) = P(1, IE)
1171                PT(2, IC, IRUN) = P(2, IE)
1172                PT(3, IC, IRUN) = P(3, IE)
1173                ET(IC, IRUN) = E(IE)
1174                LT(IC, IRUN) = LB(IE)
1175 c         !! sp 12/19/00
1176                PROT(IC, IRUN) = PROPER(IE)
1177 clin-5/2008:
1178                dpertt(IC, IRUN)=dpertp(IE)
1179  1027       CONTINUE
1180             NP = MASSR(IRUN)
1181             NP1 = NPI(IRUN)
1182
1183 cbz10/05/99
1184 c            DO WHILE (FT1(NP1, IRUN) .GT. CT - DT .AND. 
1185 c     &           FT1(NP1, IRUN) .LE. CT)
1186 cbz10/06/99
1187 c            DO WHILE (NPI(IRUN).LE.MULTI1(IRUN).AND.
1188 cbz10/06/99 end
1189 clin-11/13/00 finally read in all unformed particles and do the decays in ART:
1190 c           DO WHILE (NP1.LE.MULTI1(IRUN).AND.
1191 c    &           FT1(NP1, IRUN) .GT. CT - DT .AND. 
1192 c    &           FT1(NP1, IRUN) .LE. CT)
1193 c
1194                ctlong = ct
1195              if(nt .eq. (ntmax-1))then
1196                ctlong = 1.E30
1197              elseif(nt .eq. ntmax)then
1198                go to 1111
1199              endif
1200             DO WHILE (NP1.LE.MULTI1(IRUN).AND.
1201      &           FT1(NP1, IRUN) .GT. (CT - DT) .AND. 
1202      &           FT1(NP1, IRUN) .LE. ctlong)
1203                NP = NP + 1
1204                UDT = (CT - FT1(NP1, IRUN)) / EE1(NP1, IRUN)
1205 clin-10/28/03 since all unformed hadrons at time ct are read in at nt=ntmax-1, 
1206 c     their positions should not be propagated to time ct:
1207                if(nt.eq.(ntmax-1)) then
1208                   ftsvt(NP,IRUN)=FT1(NP1, IRUN)
1209                   if(FT1(NP1, IRUN).gt.ct) UDT=0.
1210                endif
1211                RT(1, NP, IRUN) = GX1(NP1, IRUN) + 
1212      &              PX1(NP1, IRUN) * UDT
1213                RT(2, NP, IRUN) = GY1(NP1, IRUN) + 
1214      &              PY1(NP1, IRUN) * UDT
1215                RT(3, NP, IRUN) = GZ1(NP1, IRUN) + 
1216      &              PZ1(NP1, IRUN) * UDT
1217                PT(1, NP, IRUN) = PX1(NP1, IRUN)
1218                PT(2, NP, IRUN) = PY1(NP1, IRUN)
1219                PT(3, NP, IRUN) = PZ1(NP1, IRUN)
1220                ET(NP, IRUN) = XM1(NP1, IRUN)
1221                LT(NP, IRUN) = IARFLV(ITYP1(NP1, IRUN))
1222 clin-5/2008:
1223                dpertt(NP,IRUN)=dpp1(NP1,IRUN)
1224 clin-4/30/03 ctest off 
1225 c     record initial phi,K*,Lambda(1520) resonances formed during the timestep:
1226 c               if(LT(NP, IRUN).eq.29.or.iabs(LT(NP, IRUN)).eq.30)
1227 c     1              write(17,112) 'formed',LT(NP, IRUN),PX1(NP1, IRUN),
1228 c     2 PY1(NP1, IRUN),PZ1(NP1, IRUN),XM1(NP1, IRUN),nt
1229 c 112           format(a10,1x,I4,4(1x,f9.3),1x,I4)
1230 c
1231                NP1 = NP1 + 1
1232 c     !! sp 12/19/00
1233                PROT(NP, IRUN) = 1.
1234             END DO
1235 *
1236  1111      continue
1237             NPI(IRUN) = NP1
1238             IA = IA + MASSR(IRUN)
1239             MASSR(IRUN) = NP
1240  1028    CONTINUE
1241          IA = 0
1242          DO 1030 IRUN = 1, NUM
1243             IA = IA + MASSR(IRUN - 1)
1244             DO 1029 IC = 1, MASSR(IRUN)
1245                IE = IA + IC
1246                R(1, IE) = RT(1, IC, IRUN)
1247                R(2, IE) = RT(2, IC, IRUN)
1248                R(3, IE) = RT(3, IC, IRUN)
1249                P(1, IE) = PT(1, IC, IRUN)
1250                P(2, IE) = PT(2, IC, IRUN)
1251                P(3, IE) = PT(3, IC, IRUN)
1252                E(IE) = ET(IC, IRUN)
1253                LB(IE) = LT(IC, IRUN)
1254 c     !! sp 12/19/00
1255                PROPER(IE) = PROT(IC, IRUN)
1256                if(nt.eq.(ntmax-1)) ftsv(IE)=ftsvt(IC,IRUN)
1257 clin-5/2008:
1258                dpertp(IE)=dpertt(IC, IRUN)
1259  1029       CONTINUE
1260 clin-3/2009 Moved here to better take care of freezeout spacetime:
1261             call hbtout(MASSR(IRUN),nt,ntmax)
1262  1030    CONTINUE
1263 cbz12/22/98end
1264       END IF
1265 cbz11/16/98end
1266
1267 clin-5/2009 ctest off:
1268 c      call flowh(ct) 
1269
1270 10000       continue
1271
1272 *                                                                      *
1273 *       ==============  END OF TIME STEP LOOP   ================       *
1274
1275 ************************************
1276 *     WRITE OUT particle's MOMENTA ,and/OR COORDINATES ,
1277 *     label and/or their local baryon density in the final state
1278         iss=0
1279         do 1032 lrun=1,num
1280            iss=iss+massr(lrun-1)
1281            do 1031 l0=1,massr(lrun)
1282               ipart=iss+l0
1283  1031      continue
1284  1032   continue
1285
1286 cbz11/16/98
1287       IF (IAPAR2(1) .NE. 1) THEN
1288 cbz12/22/98
1289 c        NSH = MASSR(1) - NPI + 1
1290 c        IAINT2(1) = IAINT2(1) + NSH
1291 c.....to shift the unformed particles to the end of the common block
1292 c        IF (NSH .GT. 0) THEN
1293 c           IB = IAINT2(1)
1294 c           IE = MASSR(1) + 1
1295 c           II = -1
1296 c        ELSE IF (NSH .LT. 0) THEN
1297 c           IB = MASSR(1) + 1
1298 c           IE = IAINT2(1)
1299 c           II = 1
1300 c        END IF
1301 c        IF (NSH .NE. 0) THEN
1302 c           DO I = IB, IE, II
1303 c              J = I - NSH
1304 c              ITYPAR(I) = ITYPAR(J)
1305 c              GXAR(I) = GXAR(J)
1306 c              GYAR(I) = GYAR(J)
1307 c              GZAR(I) = GZAR(J)
1308 c              FTAR(I) = FTAR(J)
1309 c              PXAR(I) = PXAR(J)
1310 c              PYAR(I) = PYAR(J)
1311 c              PZAR(I) = PZAR(J)
1312 c              PEAR(I) = PEAR(J)
1313 c              XMAR(I) = XMAR(J)
1314 c           END DO
1315 c        END IF
1316
1317 c.....to copy ART particle info to COMMON /ARPRC/
1318 c        DO I = 1, MASSR(1)
1319 c           ITYPAR(I) = INVFLV(LB(I))
1320 c           GXAR(I) = R(1, I)
1321 c           GYAR(I) = R(2, I)
1322 c           GZAR(I) = R(3, I)
1323 c           FTAR(I) = CT
1324 c           PXAR(I) = P(1, I)
1325 c           PYAR(I) = P(2, I)
1326 c           PZAR(I) = P(3, I)
1327 c           XMAR(I) = E(I)
1328 c           PEAR(I) = SQRT(PXAR(I) ** 2 + PYAR(I) ** 2 + PZAR(I) ** 2
1329 c     &        + XMAR(I) ** 2)
1330 c        END DO
1331         IA = 0
1332         DO 1035 IRUN = 1, NUM
1333            IA = IA + MASSR(IRUN - 1)
1334            NP1 = NPI(IRUN)
1335            NSH = MASSR(IRUN) - NP1 + 1
1336            MULTI1(IRUN) = MULTI1(IRUN) + NSH
1337 c.....to shift the unformed particles to the end of the common block
1338            IF (NSH .GT. 0) THEN
1339               IB = MULTI1(IRUN)
1340               IE = MASSR(IRUN) + 1
1341               II = -1
1342            ELSE IF (NSH .LT. 0) THEN
1343               IB = MASSR(IRUN) + 1
1344               IE = MULTI1(IRUN)
1345               II = 1
1346            END IF
1347            IF (NSH .NE. 0) THEN
1348               DO 1033 I = IB, IE, II
1349                  J = I - NSH
1350                  ITYP1(I, IRUN) = ITYP1(J, IRUN)
1351                  GX1(I, IRUN) = GX1(J, IRUN)
1352                  GY1(I, IRUN) = GY1(J, IRUN)
1353                  GZ1(I, IRUN) = GZ1(J, IRUN)
1354                  FT1(I, IRUN) = FT1(J, IRUN)
1355                  PX1(I, IRUN) = PX1(J, IRUN)
1356                  PY1(I, IRUN) = PY1(J, IRUN)
1357                  PZ1(I, IRUN) = PZ1(J, IRUN)
1358                  EE1(I, IRUN) = EE1(J, IRUN)
1359                  XM1(I, IRUN) = XM1(J, IRUN)
1360 c     !! sp 12/19/00
1361                  PRO1(I, IRUN) = PRO1(J, IRUN)
1362 clin-5/2008:
1363                  dpp1(I,IRUN)=dpp1(J,IRUN)
1364  1033         CONTINUE
1365            END IF
1366            
1367 c.....to copy ART particle info to COMMON /ARPRC1/
1368            DO 1034 I = 1, MASSR(IRUN)
1369               IB = IA + I
1370               ITYP1(I, IRUN) = INVFLV(LB(IB))
1371               GX1(I, IRUN) = R(1, IB)
1372               GY1(I, IRUN) = R(2, IB)
1373               GZ1(I, IRUN) = R(3, IB)
1374 clin-10/28/03:
1375 c since all unformed hadrons at time ct are read in at nt=ntmax-1, 
1376 c their formation time ft1 should be kept to determine their freezeout(x,t):
1377 c              FT1(I, IRUN) = CT
1378               if(FT1(I, IRUN).lt.CT) FT1(I, IRUN) = CT
1379               PX1(I, IRUN) = P(1, IB)
1380               PY1(I, IRUN) = P(2, IB)
1381               PZ1(I, IRUN) = P(3, IB)
1382               XM1(I, IRUN) = E(IB)
1383               EE1(I, IRUN) = SQRT(PX1(I, IRUN) ** 2 + 
1384      &             PY1(I, IRUN) ** 2 +
1385      &             PZ1(I, IRUN) ** 2 + 
1386      &             XM1(I, IRUN) ** 2)
1387 c     !! sp 12/19/00
1388               PRO1(I, IRUN) = PROPER(IB)
1389  1034      CONTINUE
1390  1035   CONTINUE
1391 cbz12/22/98end
1392       END IF
1393 cbz11/16/98end
1394 c
1395 **********************************
1396 *                                                                      *
1397 *       ======= END OF MANY LOOPS OVER IMPACT PARAMETERS ==========    *
1398 *                                                               *
1399 **********************************
1400 50000   CONTINUE
1401 *
1402 *-----------------------------------------------------------------------
1403 *                       ==== ART COMPLETED ====
1404 *-----------------------------------------------------------------------
1405 cbz11/16/98
1406 c      STOP
1407       RETURN
1408 cbz11/16/98end
1409       END
1410 **********************************
1411       subroutine coulin(masspr,massta,NUM)
1412 *                                                                      *
1413 *     purpose:   initialization of array zet() and lb() for all runs  *
1414 *                lb(i) = 1   =>  proton                               *
1415 *                lb(i) = 2   =>  neutron                              *
1416 **********************************
1417         integer  zta,zpr
1418         PARAMETER (MAXSTR=150001)
1419         common  /EE/ ID(MAXSTR),LB(MAXSTR)
1420 cc      SAVE /EE/
1421         COMMON  /ZZ/ ZTA,ZPR
1422 cc      SAVE /zz/
1423       SAVE   
1424         MASS=MASSTA+MASSPR
1425         DO 500 IRUN=1,NUM
1426         do 100 i = 1+(IRUN-1)*MASS,zta+(IRUN-1)*MASS
1427         LB(i) = 1
1428   100   continue
1429         do 200 i = zta+1+(IRUN-1)*MASS,massta+(IRUN-1)*MASS
1430         LB(i) = 2
1431   200   continue
1432         do 300 i = massta+1+(IRUN-1)*MASS,massta+zpr+(IRUN-1)*MASS
1433         LB(i) = 1
1434   300   continue
1435         do 400 i = massta+zpr+1+(IRUN-1)*MASS,
1436      1  massta+masspr+(IRUN-1)*MASS
1437         LB(i) = 2
1438   400   continue
1439   500   CONTINUE
1440         return
1441         end
1442 **********************************
1443 *                                                                      *
1444       SUBROUTINE RELCOL(LCOLL,LBLOC,LCNNE,LDD,LPP,lppk,
1445      &LPN,lpd,lrho,lomega,LKN,LNNK,LDDK,LNDK,LCNND,LCNDN,
1446      &LDIRT,LDECAY,LRES,LDOU,LDDRHO,LNNRHO,LNNOM,
1447      &NT,ntmax,sp,akaon,sk)
1448 *                                                                      *
1449 *       PURPOSE:    CHECK CONDITIONS AND CALCULATE THE KINEMATICS      * 
1450 *                   FOR BINARY COLLISIONS AMONG PARTICLES              *
1451 *                                 - RELATIVISTIC FORMULA USED          *
1452 *                                                                      *
1453 *       REFERENCES: HAGEDORN, RELATIVISTIC KINEMATICS (1963)           *
1454 *                                                                      *
1455 *       VARIABLES:                                                     *
1456 *         MASSPR  - NUMBER OF NUCLEONS IN PROJECTILE   (INTEGER,INPUT) *
1457 *         MASSTA  - NUMBER OF NUCLEONS IN TARGET       (INTEGER,INPUT) *
1458 *         NUM     - NUMBER OF TESTPARTICLES PER NUCLEON(INTEGER,INPUT) *
1459 *         ISEED   - SEED FOR RANDOM NUMBER GENERATOR   (INTEGER,INPUT) *
1460 *         IAVOID  - (= 1 => AVOID FIRST CLLISIONS WITHIN THE SAME      *
1461 *                   NUCLEUS, ELSE ALL COLLISIONS)      (INTEGER,INPUT) *
1462 *         DELTAR  - MAXIMUM SPATIAL DISTANCE FOR WHICH A COLLISION     *
1463 *                   STILL CAN OCCUR                       (REAL,INPUT) *
1464 *         DT      - TIME STEP SIZE                        (REAL,INPUT) *
1465 *         LCOLL   - NUMBER OF COLLISIONS              (INTEGER,OUTPUT) *
1466 *         LBLOC   - NUMBER OF PULI-BLOCKED COLLISIONS (INTEGER,OUTPUT) *
1467 *         LCNNE   - NUMBER OF ELASTIC COLLISION       (INTEGER,OUTPUT) *
1468 *         LCNND   - NUMBER OF N+N->N+DELTA REACTION   (INTEGER,OUTPUT) *
1469 *         LCNDN   - NUMBER OF N+DELTA->N+N REACTION   (INTEGER,OUTPUT) *
1470 *         LDD     - NUMBER OF RESONANCE+RESONANCE COLLISIONS
1471 *         LPP     - NUMBER OF PION+PION elastic COLIISIONS
1472 *         lppk    - number of pion(RHO,OMEGA)+pion(RHO,OMEGA)
1473 *                   -->K+K- collisions
1474 *         LPN     - NUMBER OF PION+N-->KAON+X
1475 *         lpd     - number of pion+n-->delta+pion
1476 *         lrho    - number of pion+n-->Delta+rho
1477 *         lomega  - number of pion+n-->Delta+omega
1478 *         LKN     - NUMBER OF KAON RESCATTERINGS
1479 *         LNNK    - NUMBER OF bb-->kAON PROCESS
1480 *         LDDK    - NUMBER OF DD-->KAON PROCESS
1481 *         LNDK    - NUMBER OF ND-->KAON PROCESS
1482 *         LB(I) IS USED TO LABEL PARTICLE'S CHARGE STATE
1483 *         LB(I)   = 
1484 cbali2/7/99 
1485 *                 -45 Omega baryon(bar)
1486 *                 -41 cascade0(bar)
1487 *                 -40 cascade-(bar)
1488 clin-11/07/00:
1489 *                 -30 K*-
1490 *                 -17 sigma+(bar)
1491 *                 -16 sigma0(bar)
1492 *                 -15 sigma-(bar)
1493 *                 -14 LAMBDA(bar)
1494 clin-8/29/00
1495 *                 -13 anti-N*(+1)(1535),s_11
1496 *                 -12 anti-N*0(1535),s_11
1497 *                 -11 anti-N*(+1)(1440),p_11
1498 *                 -10 anti-N*0(1440), p_11
1499 *                  -9 anti-DELTA+2
1500 *                  -8 anti-DELTA+1
1501 *                  -7 anti-DELTA0
1502 *                  -6 anti-DELTA-1
1503 *
1504 *                  -2 antineutron 
1505 *                  -1 antiproton
1506 cbali2/7/99end 
1507 *                   0 eta
1508 *                   1 PROTON
1509 *                   2 NUETRON
1510 *                   3 PION-
1511 *                   4 PION0
1512 *                   5 PION+          
1513 *                   6 DELTA-1
1514 *                   7 DELTA0
1515 *                   8 DELTA+1
1516 *                   9 DELTA+2
1517 *                   10 N*0(1440), p_11
1518 *                   11 N*(+1)(1440),p_11
1519 *                  12 N*0(1535),s_11
1520 *                  13 N*(+1)(1535),s_11
1521 *                  14 LAMBDA
1522 *                   15 sigma-
1523 *                   16 sigma0
1524 *                   17 sigma+
1525 *                   21 kaon-
1526 clin-2/23/03        22 Kaon0Long (converted at the last timestep)
1527 *                   23 KAON+
1528 *                   24 Kaon0short (converted at the last timestep then decay)
1529 *                   25 rho-
1530 *                   26 rho0
1531 *                   27 rho+
1532 *                   28 omega meson
1533 *                   29 phi
1534 *                   30 K*+
1535 * sp01/03/01
1536 *                   31 eta-prime
1537 *                   40 cascade-
1538 *                   41 cascade0
1539 *                   45 Omega baryon
1540 * sp01/03/01 end
1541 *                   
1542 *                   ++  ------- SEE NOTE BOOK
1543 *         NSTAR=1 INCLUDING N* RESORANCE
1544 *         ELSE DELTA RESORANCE ONLY
1545 *         NDIRCT=1 INCLUDING DIRECT PROCESS,ELSE NOT
1546 *         DIR - PERCENTAGE OF DIRECT PION PRODUCTION PROCESS
1547 **********************************
1548       PARAMETER      (MAXSTR=150001,MAXR=1,PI=3.1415926)
1549       parameter      (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
1550       PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,aks=0.895)
1551       PARAMETER      (AA1=1.26,APHI=1.02,AP1=0.13496)
1552       parameter            (maxx=20,maxz=24)
1553       parameter            (rrkk=0.6,prkk=0.3,srhoks=5.,ESBIN=0.04)
1554       DIMENSION MASSRN(0:MAXR),RT(3,MAXSTR),PT(3,MAXSTR),ET(MAXSTR)
1555       DIMENSION LT(MAXSTR), PROT(MAXSTR)
1556       COMMON   /AA/  R(3,MAXSTR)
1557 cc      SAVE /AA/
1558       COMMON   /BB/  P(3,MAXSTR)
1559 cc      SAVE /BB/
1560       COMMON   /CC/  E(MAXSTR)
1561 cc      SAVE /CC/
1562       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
1563      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
1564      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
1565 cc      SAVE /DD/
1566       COMMON   /EE/  ID(MAXSTR),LB(MAXSTR)
1567 cc      SAVE /EE/
1568       COMMON   /HH/  PROPER(MAXSTR)
1569 cc      SAVE /HH/
1570       common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
1571 cc      SAVE /ff/
1572       common   /gg/  dx,dy,dz,dpx,dpy,dpz
1573 cc      SAVE /gg/
1574       COMMON   /INPUT/ NSTAR,NDIRCT,DIR
1575 cc      SAVE /INPUT/
1576       COMMON   /NN/NNN
1577 cc      SAVE /NN/
1578       COMMON   /RR/  MASSR(0:MAXR)
1579 cc      SAVE /RR/
1580       common   /ss/  inout(20)
1581 cc      SAVE /ss/
1582       COMMON   /BG/BETAX,BETAY,BETAZ,GAMMA
1583 cc      SAVE /BG/
1584       COMMON   /RUN/NUM
1585 cc      SAVE /RUN/
1586       COMMON   /PA/RPION(3,MAXSTR,MAXR)
1587 cc      SAVE /PA/
1588       COMMON   /PB/PPION(3,MAXSTR,MAXR)
1589 cc      SAVE /PB/
1590       COMMON   /PC/EPION(MAXSTR,MAXR)
1591 cc      SAVE /PC/
1592       COMMON   /PD/LPION(MAXSTR,MAXR)
1593 cc      SAVE /PD/
1594       COMMON   /PE/PROPI(MAXSTR,MAXR)
1595 cc      SAVE /PE/
1596       COMMON   /KKK/TKAON(7),EKAON(7,0:2000)
1597 cc      SAVE /KKK/
1598       COMMON  /KAON/    AK(3,50,36),SPECK(50,36,7),MF
1599 cc      SAVE /KAON/
1600       COMMON/TABLE/ xarray(0:1000),earray(0:1000)
1601 cc      SAVE /TABLE/
1602       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
1603 cc      SAVE /input1/
1604       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
1605      1 px1n,py1n,pz1n,dp1n
1606 cc      SAVE /leadng/
1607       COMMON/tdecay/tfdcy(MAXSTR),tfdpi(MAXSTR,MAXR),tft(MAXSTR)
1608 cc      SAVE /tdecay/
1609       common /lastt/itimeh,bimp 
1610 cc      SAVE /lastt/
1611 c
1612       COMMON/ppbmas/niso(15),nstate,ppbm(15,2),thresh(15),weight(15)
1613 cc      SAVE /ppbmas/
1614       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
1615 cc      SAVE /ppb1/
1616       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
1617 cc      SAVE /ppmm/
1618       COMMON/hbt/lblast(MAXSTR),xlast(4,MAXSTR),plast(4,MAXSTR),nlast
1619 cc      SAVE /hbt/
1620       common/resdcy/NSAV,iksdcy
1621 cc      SAVE /resdcy/
1622       COMMON/RNDF77/NSEED
1623 cc      SAVE /RNDF77/
1624       COMMON/FTMAX/ftsv(MAXSTR),ftsvt(MAXSTR, MAXR)
1625       dimension ftpisv(MAXSTR,MAXR),fttemp(MAXSTR)
1626       common /dpi/em2,lb2
1627       common/phidcy/iphidcy,pttrig,ntrig,maxmiss
1628 clin-5/2008:
1629       DIMENSION dptemp(MAXSTR)
1630       common /para8/ idpert,npertd,idxsec
1631       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
1632      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
1633      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
1634 c
1635       real zet(-45:45)
1636       SAVE   
1637       data zet /
1638      4     1.,0.,0.,0.,0.,
1639      3     1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
1640      2     -1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
1641      1     0.,0.,0.,-1.,0.,1.,0.,-1.,0.,-1.,
1642      s     0.,-2.,-1.,0.,1.,0.,0.,0.,0.,-1.,
1643      e     0.,
1644      s     1.,0.,-1.,0.,1.,-1.,0.,1.,2.,0.,
1645      1     1.,0.,1.,0.,-1.,0.,1.,0.,0.,0.,
1646      2     -1.,0.,1.,0.,-1.,0.,1.,0.,0.,1.,
1647      3     0.,0.,0.,0.,0.,0.,0.,0.,0.,-1.,
1648      4     0.,0.,0.,0.,-1./
1649
1650 clin-2/19/03 initialize n and nsav for resonance decay at each timestep
1651 c     in order to prevent integer overflow:
1652       call inidcy
1653
1654 c OFF skip ART collisions to reproduce HJ:      
1655 cc       if(nt.ne.ntmax) return
1656
1657 clin-11/07/00 rrkk is assumed to be 0.6mb(default) for mm->KKbar 
1658 c     with m=rho or omega, estimated from Ko's paper:
1659 c      rrkk=0.6
1660 c prkk: cross section of pi (rho or omega) -> K* Kbar (AND) K*bar K:
1661 c      prkk=0.3
1662 c     cross section in mb for (rho or omega) K* -> pi K:
1663 c      srhoks=5.
1664 clin-11/07/00-end
1665 c      ESBIN=0.04
1666       RESONA=5.
1667 *-----------------------------------------------------------------------
1668 *     INITIALIZATION OF COUNTING VARIABLES
1669       NODELT=0
1670       SUMSRT =0.
1671       LCOLL  = 0
1672       LBLOC  = 0
1673       LCNNE  = 0
1674       LDD  = 0
1675       LPP  = 0
1676       lpd  = 0
1677       lpdr=0
1678       lrho = 0
1679       lrhor=0
1680       lomega=0
1681       lomgar=0
1682       LPN  = 0
1683       LKN  = 0
1684       LNNK = 0
1685       LDDK = 0
1686       LNDK = 0
1687       lppk =0
1688       LCNND  = 0
1689       LCNDN  = 0
1690       LDIRT  = 0
1691       LDECAY = 0
1692       LRES   = 0
1693       Ldou   = 0
1694       LDDRHO = 0
1695       LNNRHO = 0
1696       LNNOM  = 0
1697       MSUM   = 0
1698       MASSRN(0)=0
1699 * COM: MSUM IS USED TO COUNT THE TOTAL NO. OF PARTICLES 
1700 *      IN PREVIOUS IRUN-1 RUNS
1701 * KAON COUNTERS
1702       DO 1002 IL=1,5
1703          TKAON(IL)=0
1704          DO 1001 IS=1,2000
1705             EKAON(IL,IS)=0
1706  1001    CONTINUE
1707  1002 CONTINUE
1708 c sp 12/19/00
1709       DO 1004 i =1,NUM
1710          DO 1003 j =1,MAXSTR
1711             PROPI(j,i) = 1.
1712  1003    CONTINUE
1713  1004 CONTINUE
1714       
1715       do 1102 i=1,maxstr
1716          fttemp(i)=0.
1717          do 1101 irun=1,maxr
1718             ftpisv(i,irun)=0.
1719  1101    continue
1720  1102 continue
1721
1722 c sp 12/19/00 end
1723       sp=0
1724 * antikaon counters
1725       akaon=0
1726       sk=0
1727 *-----------------------------------------------------------------------
1728 *     LOOP OVER ALL PARALLEL RUNS
1729 cbz11/17/98
1730 c      MASS=MASSPR+MASSTA
1731       MASS = 0
1732 cbz11/17/98end
1733       DO 1000 IRUN = 1,NUM
1734          NNN=0
1735          MSUM=MSUM+MASSR(IRUN-1)
1736 *     LOOP OVER ALL PSEUDOPARTICLES 1 IN THE SAME RUN
1737          J10=2
1738          IF(NT.EQ.NTMAX)J10=1
1739 c
1740 ctest off skips the check of energy conservation after each timestep:
1741 c         enetot=0.
1742 c         do ip=1,MASSR(IRUN)
1743 c            if(e(ip).ne.0.or.lb(ip).eq.10022) enetot=enetot
1744 c     1           +sqrt(p(1,ip)**2+p(2,ip)**2+p(3,ip)**2+e(ip)**2)
1745 c         enddo
1746 c         write(91,*) 'A:',nt,enetot,massr(irun),bimp 
1747
1748          DO 800 J1 = J10,MASSR(IRUN)
1749             I1  = J1 + MSUM
1750 * E(I)=0 are for pions having been absorbed or photons which do not enter here:
1751             IF(E(I1).EQ.0.)GO TO 800
1752
1753 c     To include anti-(Delta,N*1440 and N*1535):
1754 c          IF ((LB(I1) .LT. -13 .OR. LB(I1) .GT. 28)
1755 c     1         .and.iabs(LB(I1)) .ne. 30 ) GOTO 800
1756             IF (LB(I1) .LT. -45 .OR. LB(I1) .GT. 45) GOTO 800
1757             X1  = R(1,I1)
1758             Y1  = R(2,I1)
1759             Z1  = R(3,I1)
1760             PX1 = P(1,I1)
1761             PY1 = P(2,I1)
1762             PZ1 = P(3,I1)
1763             EM1 = E(I1)
1764             am1= em1
1765             E1  = SQRT( EM1**2 + PX1**2 + PY1**2 + PZ1**2 )
1766             ID1 = ID(I1)
1767             LB1 = LB(I1)
1768
1769 c     generate k0short and k0long from K+ and K- at the last timestep:
1770             if(nt.eq.ntmax.and.(lb1.eq.21.or.lb1.eq.23)) then
1771                pk0=RANART(NSEED)
1772                if(pk0.lt.0.25) then
1773                   LB(I1)=22
1774                elseif(pk0.lt.0.50) then
1775                   LB(I1)=24
1776                endif
1777                LB1=LB(I1)
1778             endif
1779             
1780 clin-8/07/02 these particles don't decay strongly, so skip decay routines:     
1781 c            IF( (lb1.ge.-2.and.lb1.le.5) .OR. lb1.eq.31 .OR.
1782 c     &           (iabs(lb1).ge.14.and.iabs(lb1).le.24) .OR.
1783 c     &           (iabs(lb1).ge.40.and.iabs(lb1).le.45) .or. 
1784 c     &           lb1.eq.31)GO TO 1 
1785 c     only decay K0short when iksdcy=1:
1786             if(lb1.eq.0.or.lb1.eq.25.or.lb1.eq.26.or.lb1.eq.27
1787      &           .or.lb1.eq.28.or.lb1.eq.29.or.iabs(lb1).eq.30
1788      &           .or.(iabs(lb1).ge.6.and.iabs(lb1).le.13)
1789      &           .or.(iksdcy.eq.1.and.lb1.eq.24)
1790      &           .or.iabs(lb1).eq.16) then
1791                continue
1792             else
1793                goto 1
1794             endif
1795 * IF I1 IS A RESONANCE, CHECK WHETHER IT DECAYS DURING THIS TIME STEP
1796          IF(lb1.ge.25.and.lb1.le.27) then
1797              wid=0.151
1798          ELSEIF(lb1.eq.28) then
1799              wid=0.00841
1800          ELSEIF(lb1.eq.29) then
1801              wid=0.00443
1802           ELSEIF(iabs(LB1).eq.30) then
1803              WID=0.051
1804          ELSEIF(lb1.eq.0) then
1805              wid=1.18e-6
1806 c     to give K0short ct0=2.676cm:
1807          ELSEIF(iksdcy.eq.1.and.lb1.eq.24) then
1808              wid=7.36e-15
1809 clin-4/29/03 add Sigma0 decay to Lambda, ct0=2.22E-11m:
1810          ELSEIF(iabs(lb1).eq.16) then
1811              wid=8.87e-6
1812 csp-07/25/01 test a1 resonance:
1813 cc          ELSEIF(LB1.EQ.32) then
1814 cc             WID=0.40
1815           ELSEIF(LB1.EQ.32) then
1816              call WIDA1(EM1,rhomp,WID,iseed)
1817           ELSEIF(iabs(LB1).ge.6.and.iabs(LB1).le.9) then
1818              WID=WIDTH(EM1)
1819           ELSEIF((iabs(LB1).EQ.10).OR.(iabs(LB1).EQ.11)) then
1820              WID=W1440(EM1)
1821           ELSEIF((iabs(LB1).EQ.12).OR.(iabs(LB1).EQ.13)) then
1822              WID=W1535(EM1)
1823           ENDIF
1824
1825 * if it is the last time step, FORCE all resonance to strong-decay
1826 * and go out of the loop
1827           if(nt.eq.ntmax)then
1828              pdecay=1.1
1829 clin-5b/2008 forbid phi decay at the end of hadronic cascade:
1830              if(iphidcy.eq.0.and.iabs(LB1).eq.29) pdecay=0.
1831           else
1832              T0=0.19733/WID
1833              GFACTR=E1/EM1
1834              T0=T0*GFACTR
1835              IF(T0.GT.0.)THEN
1836                 PDECAY=1.-EXP(-DT/T0)
1837              ELSE
1838                 PDECAY=0.
1839              ENDIF
1840           endif
1841           XDECAY=RANART(NSEED)
1842
1843 cc dilepton production from rho0, omega, phi decay 
1844 cc        if(lb1.eq.26 .or. lb1.eq.28 .or. lb1.eq.29)
1845 cc     &   call dec_ceres(nt,ntmax,irun,i1)
1846 cc
1847           IF(XDECAY.LT.PDECAY) THEN
1848 clin-10/25/02 get rid of argument usage mismatch in rhocay():
1849              idecay=irun
1850              tfnl=nt*dt
1851 clin-10/28/03 keep formation time of hadrons unformed at nt=ntmax-1:
1852              if(nt.eq.ntmax.and.ftsv(i1).gt.((ntmax-1)*dt)) 
1853      1            tfnl=ftsv(i1)
1854              xfnl=x1
1855              yfnl=y1
1856              zfnl=z1
1857 * use PYTHIA to perform decays of eta,rho,omega,phi,K*,(K0s) and Delta:
1858              if(lb1.eq.0.or.lb1.eq.25.or.lb1.eq.26.or.lb1.eq.27
1859      &           .or.lb1.eq.28.or.lb1.eq.29.or.iabs(lb1).eq.30
1860      &           .or.(iabs(lb1).ge.6.and.iabs(lb1).le.9)
1861      &           .or.(iksdcy.eq.1.and.lb1.eq.24)
1862      &           .or.iabs(lb1).eq.16) then
1863 c     previous rho decay performed in rhodecay():
1864 c                nnn=nnn+1
1865 c                call rhodecay(idecay,i1,nnn,iseed)
1866 c
1867 ctest off record decays of phi,K*,Lambda(1520) resonances:
1868 c                if(lb1.eq.29.or.iabs(lb1).eq.30) 
1869 c     1               write(18,112) 'decay',lb1,px1,py1,pz1,am1,nt
1870                 call resdec(i1,nt,nnn,wid,idecay)
1871                 p(1,i1)=px1n
1872                 p(2,i1)=py1n
1873                 p(3,i1)=pz1n
1874 clin-5/2008:
1875                 dpertp(i1)=dp1n
1876 c     add decay time to freezeout positions & time at the last timestep:
1877                 if(nt.eq.ntmax) then
1878                    R(1,i1)=xfnl
1879                    R(2,i1)=yfnl
1880                    R(3,i1)=zfnl
1881                    tfdcy(i1)=tfnl
1882                 endif
1883 c
1884 * decay number for baryon resonance or L/S decay
1885                 if(iabs(lb1).ge.6.and.iabs(lb1).le.9) then
1886                    LDECAY=LDECAY+1
1887                 endif
1888
1889 * for a1 decay 
1890 c             elseif(lb1.eq.32)then
1891 c                NNN=NNN+1
1892 c                call a1decay(idecay,i1,nnn,iseed,rhomp)
1893
1894 * FOR N*(1440)
1895              elseif(iabs(LB1).EQ.10.OR.iabs(LB1).EQ.11) THEN
1896                 NNN=NNN+1
1897                 LDECAY=LDECAY+1
1898                 PNSTAR=1.
1899                 IF(E(I1).GT.1.22)PNSTAR=0.6
1900                 IF(RANART(NSEED).LE.PNSTAR)THEN
1901 * (1) DECAY TO SINGLE PION+NUCLEON
1902                    CALL DECAY(idecay,I1,NNN,ISEED,wid,nt)
1903                 ELSE
1904 * (2) DECAY TO TWO PIONS + NUCLEON
1905                    CALL DECAY2(idecay,I1,NNN,ISEED,wid,nt)
1906                    NNN=NNN+1
1907                 ENDIF
1908 c for N*(1535) decay
1909              elseif(iabs(LB1).eq.12.or.iabs(LB1).eq.13) then
1910                 NNN=NNN+1
1911                 CALL DECAY(idecay,I1,NNN,ISEED,wid,nt)
1912                 LDECAY=LDECAY+1
1913              endif
1914 c
1915 *COM: AT HIGH ENERGIES WE USE VERY SHORT TIME STEPS,
1916 *     IN ORDER TO TAKE INTO ACCOUNT THE FINITE FORMATIOM TIME, WE
1917 *     DO NOT ALLOW PARTICLES FROM THE DECAY OF RESONANCE TO INTERACT 
1918 *     WITH OTHERS IN THE SAME TIME STEP. CHANGE 9000 TO REVERSE THIS 
1919 *     ASSUMPTION. EFFECTS OF THIS ASSUMPTION CAN BE STUDIED BY CHANGING 
1920 *     THE STATEMENT OF 9000. See notebook for discussions on effects of
1921 *     changing statement 9000.
1922 c
1923 c     kaons from K* decay are converted to k0short (and k0long), 
1924 c     phi decay may produce rho, K0S or eta, N*(1535) decay may produce eta,
1925 c     and these decay daughters need to decay again if at the last timestep:
1926 c     (note: these daughters have been assigned to lb(i1) only, not to lpion)
1927 c             if(nt.eq.ntmax.and.(lb1.eq.29.or.iabs(lb1).eq.30
1928 c     1            .iabs(lb1).eq.12.or.iabs(lb1).eq.13)) then
1929              if(nt.eq.ntmax) then
1930                 if(lb(i1).eq.25.or.lb(i1).eq.26.or.lb(i1).eq.27) then
1931                    wid=0.151
1932                 elseif(lb(i1).eq.0) then
1933                    wid=1.18e-6
1934                 elseif(lb(i1).eq.24.and.iksdcy.eq.1) then
1935                    wid=7.36e-17
1936                 else
1937                    goto 9000
1938                 endif
1939                 LB1=LB(I1)
1940                 PX1=P(1,I1)
1941                 PY1=P(2,I1)
1942                 PZ1=P(3,I1)
1943                 EM1=E(I1)
1944                 E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
1945                 call resdec(i1,nt,nnn,wid,idecay)
1946                 p(1,i1)=px1n
1947                 p(2,i1)=py1n
1948                 p(3,i1)=pz1n
1949                 R(1,i1)=xfnl
1950                 R(2,i1)=yfnl
1951                 R(3,i1)=zfnl
1952                 tfdcy(i1)=tfnl
1953 clin-5/2008:
1954                 dpertp(i1)=dp1n
1955              endif
1956
1957 * negelecting the Pauli blocking at high energies
1958  9000        go to 800
1959           ENDIF
1960 * LOOP OVER ALL PSEUDOPARTICLES 2 IN THE SAME RUN
1961 * SAVE ALL THE COORDINATES FOR POSSIBLE CHANGE IN THE FOLLOWING COLLISION
1962  1        if(nt.eq.ntmax)go to 800
1963           X1 = R(1,I1)
1964           Y1 = R(2,I1)
1965           Z1 = R(3,I1)
1966 c
1967            DO 600 J2 = 1,J1-1
1968             I2  = J2 + MSUM
1969 * IF I2 IS A MESON BEING ABSORBED, THEN GO OUT OF THE LOOP
1970             IF(E(I2).EQ.0.) GO TO 600
1971 clin-5/2008 in case the first particle is already destroyed:
1972             IF(E(I1).EQ.0.) GO TO 800
1973             IF (LB(I2) .LT. -45 .OR. LB(I2) .GT. 45) GOTO 600
1974 clin-7/26/03 improve speed
1975             X2=R(1,I2)
1976             Y2=R(2,I2)
1977             Z2=R(3,I2)
1978             dr0max=5.
1979 clin-9/2008 deuteron+nucleon elastic cross sections could reach ~2810mb:
1980             ilb1=iabs(LB(I1))
1981             ilb2=iabs(LB(I2))
1982             IF(ilb1.EQ.42.or.ilb2.EQ.42) THEN
1983                if((ILB1.GE.1.AND.ILB1.LE.2)
1984      1              .or.(ILB1.GE.6.AND.ILB1.LE.13)
1985      2              .or.(ILB2.GE.1.AND.ILB2.LE.2)
1986      3              .or.(ILB2.GE.6.AND.ILB2.LE.13)) then
1987                   if((lb(i1)*lb(i2)).gt.0) dr0max=10.
1988                endif
1989             ENDIF
1990 c
1991             if(((X1-X2)**2+(Y1-Y2)**2+(Z1-Z2)**2).GT.dr0max**2)
1992      1           GO TO 600
1993             IF (ID(I1)*ID(I2).EQ.IAVOID) GOTO 400
1994             ID1=ID(I1)
1995             ID2 = ID(I2)
1996 c
1997             ix1= nint(x1/dx)
1998             iy1= nint(y1/dy)
1999             iz1= nint(z1/dz)
2000             PX1=P(1,I1)
2001             PY1=P(2,I1)
2002             PZ1=P(3,I1)
2003             EM1=E(I1)
2004             AM1=EM1
2005             LB1=LB(I1)
2006             E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
2007             IPX1=NINT(PX1/DPX)
2008             IPY1=NINT(PY1/DPY)
2009             IPZ1=NINT(PZ1/DPZ)         
2010             LB2 = LB(I2)
2011             PX2 = P(1,I2)
2012             PY2 = P(2,I2)
2013             PZ2 = P(3,I2)
2014             EM2=E(I2)
2015             AM2=EM2
2016             lb1i=lb(i1)
2017             lb2i=lb(i2)
2018             px1i=P(1,I1)
2019             py1i=P(2,I1)
2020             pz1i=P(3,I1)
2021             em1i=E(I1)
2022             px2i=P(1,I2)
2023             py2i=P(2,I2)
2024             pz2i=P(3,I2)
2025             em2i=E(I2)
2026 clin-2/26/03 ctest off check energy conservation after each binary search:
2027             eini=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
2028      1           +SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
2029             pxini=P(1,I1)+P(1,I2)
2030             pyini=P(2,I1)+P(2,I2)
2031             pzini=P(3,I1)+P(3,I2)
2032             nnnini=nnn
2033 c
2034 clin-4/30/03 initialize value:
2035             iblock=0
2036 c
2037 * TO SAVE COMPUTING TIME we do the following
2038 * (1) make a ROUGH estimate to see whether particle i2 will collide with
2039 * particle I1, and (2) skip the particle pairs for which collisions are 
2040 * not modeled in the code.
2041 * FOR MESON-BARYON AND MESON-MESON COLLISIONS, we use a maximum 
2042 * interaction distance DELTR0=2.6
2043 * for ppbar production from meson (pi rho omega) interactions:
2044 c
2045             DELTR0=3.
2046         if( (iabs(lb1).ge.14.and.iabs(lb1).le.17) .or.
2047      &      (iabs(lb1).ge.30.and.iabs(lb1).le.45) ) DELTR0=5.0
2048         if( (iabs(lb2).ge.14.and.iabs(lb2).le.17) .or.
2049      &      (iabs(lb2).ge.30.and.iabs(lb2).le.45) ) DELTR0=5.0
2050
2051             if(lb1.eq.28.and.lb2.eq.28) DELTR0=4.84
2052 clin-10/08/00 to include pi pi -> rho rho:
2053             if((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5)) then
2054                E2=SQRT(EM2**2+PX2**2+PY2**2+PZ2**2)
2055          spipi=(e1+e2)**2-(px1+px2)**2-(py1+py2)**2-(pz1+pz2)**2
2056                if(spipi.ge.(4*0.77**2)) DELTR0=3.5
2057             endif
2058
2059 c khyperon
2060         IF (LB1.EQ.23 .AND. (LB2.GE.14.AND.LB2.LE.17)) GOTO 3699
2061         IF (LB2.EQ.23 .AND. (LB1.GE.14.AND.LB1.LE.17)) GOTO 3699
2062
2063 * K(K*) + Kbar(K*bar) scattering including 
2064 *     K(K*) + Kbar(K*bar) --> phi + pi(rho,omega) and pi pi(rho,omega)
2065        if(lb1.eq.21.and.lb2.eq.23)go to 3699
2066        if(lb2.eq.21.and.lb1.eq.23)go to 3699
2067        if(lb1.eq.30.and.lb2.eq.21)go to 3699
2068        if(lb2.eq.30.and.lb1.eq.21)go to 3699
2069        if(lb1.eq.-30.and.lb2.eq.23)go to 3699
2070        if(lb2.eq.-30.and.lb1.eq.23)go to 3699
2071        if(lb1.eq.-30.and.lb2.eq.30)go to 3699
2072        if(lb2.eq.-30.and.lb1.eq.30)go to 3699
2073 c
2074 clin-12/15/00
2075 c     kaon+rho(omega,eta) collisions:
2076       if(lb1.eq.21.or.lb1.eq.23) then
2077          if(lb2.eq.0.or.(lb2.ge.25.and.lb2.le.28)) then
2078             go to 3699
2079          endif
2080       elseif(lb2.eq.21.or.lb2.eq.23) then
2081          if(lb1.eq.0.or.(lb1.ge.25.and.lb1.le.28)) then
2082             goto 3699
2083          endif
2084       endif
2085
2086 clin-8/14/02 K* (pi, rho, omega, eta) collisions:
2087       if(iabs(lb1).eq.30 .and.
2088      1     (lb2.eq.0.or.(lb2.ge.25.and.lb2.le.28)
2089      2     .or.(lb2.ge.3.and.lb2.le.5))) then
2090          go to 3699
2091       elseif(iabs(lb2).eq.30 .and.
2092      1        (lb1.eq.0.or.(lb1.ge.25.and.lb1.le.28)
2093      2        .or.(lb1.ge.3.and.lb1.le.5))) then
2094          goto 3699
2095 clin-8/14/02-end
2096 c K*/K*-bar + baryon/antibaryon collisions:
2097         elseif( iabs(lb1).eq.30 .and.
2098      1     (iabs(lb2).eq.1.or.iabs(lb2).eq.2.or.
2099      2     (iabs(lb2).ge.6.and.iabs(lb2).le.13)) )then
2100               go to 3699
2101            endif
2102          if( iabs(lb2).eq.30 .and.
2103      1         (iabs(lb1).eq.1.or.iabs(lb1).eq.2.or.
2104      2         (iabs(lb1).ge.6.and.iabs(lb1).le.13)) )then
2105                 go to 3699
2106         endif                                                              
2107 * K^+ baryons and antibaryons:
2108 c** K+ + B-bar  --> La(Si)-bar + pi
2109 * K^- and antibaryons, note K^- and baryons are included in newka():
2110 * note that we fail to satisfy charge conjugation for these cross sections:
2111         if((lb1.eq.23.or.lb1.eq.21).and.
2112      1       (iabs(lb2).eq.1.or.iabs(lb2).eq.2.or.
2113      2       (iabs(lb2).ge.6.and.iabs(lb2).le.13))) then
2114            go to 3699
2115         elseif((lb2.eq.23.or.lb2.eq.21).and.
2116      1       (iabs(lb1).eq.1.or.iabs(lb1).eq.2.or.
2117      2       (iabs(lb1).ge.6.and.iabs(lb1).le.13))) then
2118            go to 3699
2119         endif
2120 *
2121 * For anti-nucleons annihilations:
2122 * Assumptions: 
2123 * (1) for collisions involving a p_bar or n_bar,
2124 * we allow only collisions between a p_bar and a baryon or a baryon 
2125 * resonance (as well as a n_bar and a baryon or a baryon resonance),
2126 * we skip all other reactions involving a p_bar or n_bar, 
2127 * such as collisions between p_bar (n_bar) and mesons, 
2128 * and collisions between two p_bar's (n_bar's). 
2129 * (2) we introduce a new parameter rppmax: the maximum interaction 
2130 * distance to make the quick collision check,rppmax=3.57 fm 
2131 * corresponding to a cutoff of annihilation xsection= 400mb which is
2132 * also used consistently in the actual annihilation xsection to be 
2133 * used in the following as given in the subroutine xppbar(srt)
2134         rppmax=3.57   
2135 * anti-baryon on baryons
2136         if((lb1.eq.-1.or.lb1.eq.-2.or.(lb1.ge.-13.and.lb1.le.-6))
2137      1 .and.(lb2.eq.1.or.lb2.eq.2.or.(lb2.ge.6.and.lb2.le.13))) then
2138             DELTR0 = RPPMAX
2139             GOTO 2699
2140        else if((lb2.eq.-1.or.lb2.eq.-2.or.(lb2.ge.-13.and.lb2.le.-6))
2141      1 .and.(lb1.eq.1.or.lb1.eq.2.or.(lb1.ge.6.and.lb1.le.13))) then
2142             DELTR0 = RPPMAX
2143             GOTO 2699
2144          END IF
2145
2146 c*  ((anti) lambda, cascade, omega  should not be rejected)
2147         if( (iabs(lb1).ge.14.and.iabs(lb1).le.17) .or.
2148      &      (iabs(lb2).ge.14.and.iabs(lb2).le.17) )go to 3699
2149 c
2150 clin-9/2008 maximum sigma~2810mb for deuteron+nucleon elastic collisions:
2151          IF (iabs(LB1).EQ.42.or.iabs(LB2).EQ.42) THEN
2152             ilb1=iabs(LB1)
2153             ilb2=iabs(LB2)
2154             if((ILB1.GE.1.AND.ILB1.LE.2)
2155      1           .or.(ILB1.GE.6.AND.ILB1.LE.13)
2156      2           .or.(ILB2.GE.1.AND.ILB2.LE.2)
2157      3           .or.(ILB2.GE.6.AND.ILB2.LE.13)) then
2158                if((lb1*lb2).gt.0) deltr0=9.5
2159             endif
2160          ENDIF
2161 c
2162         if( (iabs(lb1).ge.40.and.iabs(lb1).le.45) .or. 
2163      &      (iabs(lb2).ge.40.and.iabs(lb2).le.45) )go to 3699
2164 c
2165 c* phi channel --> elastic + inelastic scatt.  
2166          IF( (lb1.eq.29 .and.((lb2.ge.1.and.lb2.le.13).or.  
2167      &       (lb2.ge.21.and.lb2.le.28).or.iabs(lb2).eq.30)) .OR.
2168      &     (lb2.eq.29 .and.((lb1.ge.1.and.lb1.le.13).or.
2169      &       (lb1.ge.21.and.lb1.le.28).or.iabs(lb1).eq.30)) )THEN
2170              DELTR0=3.0
2171              go to 3699
2172         endif
2173 c
2174 c  La/Si, Cas, Om (bar)-meson elastic colln
2175 * pion vs. La & Ca (bar) coll. are treated in resp. subroutines
2176
2177 * SKIP all other K* RESCATTERINGS
2178         If(iabs(lb1).eq.30.or.iabs(lb2).eq.30) go to 400
2179 * SKIP KAON(+) RESCATTERINGS WITH particles other than pions and baryons 
2180          If(lb1.eq.23.and.(lb2.lt.1.or.lb2.gt.17))go to 400
2181          If(lb2.eq.23.and.(lb1.lt.1.or.lb1.gt.17))go to 400
2182 c
2183 c anti-baryon proccess: B-bar+M, N-bar+R-bar, N-bar+N-bar, R-bar+R-bar
2184 c  R = (D,N*)
2185          if( ((lb1.le.-1.and.lb1.ge.-13)
2186      &        .and.(lb2.eq.0.or.(lb2.ge.3.and.lb2.le.5)
2187      &            .or.(lb2.ge.25.and.lb2.le.28))) 
2188      &      .OR.((lb2.le.-1.and.lb2.ge.-13)
2189      &         .and.(lb1.eq.0.or.(lb1.ge.3.and.lb1.le.5)
2190      &              .or.(lb1.ge.25.and.lb1.le.28))) ) then
2191          elseIF( ((LB1.eq.-1.or.lb1.eq.-2).
2192      &             and.(LB2.LT.-5.and.lb2.ge.-13))
2193      &      .OR. ((LB2.eq.-1.or.lb2.eq.-2).
2194      &             and.(LB1.LT.-5.and.lb1.ge.-13)) )then
2195          elseIF((LB1.eq.-1.or.lb1.eq.-2)
2196      &     .AND.(LB2.eq.-1.or.lb2.eq.-2))then
2197          elseIF((LB1.LT.-5.and.lb1.ge.-13).AND.
2198      &          (LB2.LT.-5.and.lb2.ge.-13)) then
2199 c        elseif((lb1.lt.0).or.(lb2.lt.0)) then
2200 c         go to 400
2201        endif               
2202
2203  2699    CONTINUE
2204 * for baryon-baryon collisions
2205          IF (LB1 .EQ. 1 .OR. LB1 .EQ. 2 .OR. (LB1 .GE. 6 .AND.
2206      &        LB1 .LE. 17)) THEN
2207             IF (LB2 .EQ. 1 .OR. LB2 .EQ. 2 .OR. (LB2 .GE. 6 .AND.
2208      &           LB2 .LE. 17)) THEN
2209                DELTR0 = 2.
2210             END IF
2211          END IF
2212 c
2213  3699   RSQARE = (X1-X2)**2 + (Y1-Y2)**2 + (Z1-Z2)**2
2214         IF (RSQARE .GT. DELTR0**2) GO TO 400
2215 *NOW PARTICLES ARE CLOSE ENOUGH TO EACH OTHER !
2216 * KEEP ALL COORDINATES FOR POSSIBLE PHASE SPACE CHANGE
2217             ix2 = nint(x2/dx)
2218             iy2 = nint(y2/dy)
2219             iz2 = nint(z2/dz)
2220             ipx2 = nint(px2/dpx)
2221             ipy2 = nint(py2/dpy)
2222             ipz2 = nint(pz2/dpz)
2223 * FIND MOMENTA OF PARTICLES IN THE CMS OF THE TWO COLLIDING PARTICLES
2224 * AND THE CMS ENERGY SRT
2225           CALL CMS(I1,I2,PCX,PCY,PCZ,SRT)
2226 clin-7/26/03 improve speed
2227           drmax=dr0max
2228           call distc0(drmax,deltr0,DT,
2229      1         Ifirst,PCX,PCY,PCZ,
2230      2         x1,y1,z1,px1,py1,pz1,em1,x2,y2,z2,px2,py2,pz2,em2)
2231           if(Ifirst.eq.-1) goto 400
2232
2233          ISS=NINT(SRT/ESBIN)
2234 clin-4/2008 use last bin if ISS is out of EKAON's upper bound of 2000:
2235          if(ISS.gt.2000) ISS=2000
2236 *Sort collisions
2237 c
2238 clin-8/2008 Deuteron+Meson->B+B; 
2239 c     meson=(pi,rho,omega,eta), B=(n,p,Delta,N*1440,N*1535):
2240          IF (iabs(LB1).EQ.42.or.iabs(LB2).EQ.42) THEN
2241             ilb1=iabs(LB1)
2242             ilb2=iabs(LB2)
2243             if(LB1.eq.0.or.(LB1.GE.3.AND.LB1.LE.5)
2244      1           .or.(LB1.GE.25.AND.LB1.LE.28)
2245      2           .or.
2246      3           LB2.eq.0.or.(LB2.GE.3.AND.LB2.LE.5)
2247      4           .or.(LB2.GE.25.AND.LB2.LE.28)) then
2248                GOTO 505
2249 clin-9/2008 Deuteron+Baryon or antiDeuteron+antiBaryon elastic collisions:
2250             elseif(((ILB1.GE.1.AND.ILB1.LE.2)
2251      1              .or.(ILB1.GE.6.AND.ILB1.LE.13)
2252      2              .or.(ILB2.GE.1.AND.ILB2.LE.2)
2253      3              .or.(ILB2.GE.6.AND.ILB2.LE.13))
2254      4              .and.(lb1*lb2).gt.0) then
2255                GOTO 506
2256             else
2257                GOTO 400
2258             endif
2259          ENDIF
2260 c
2261 * K+ + (N,N*,D)-bar --> L/S-bar + pi
2262           if( ((lb1.eq.23.or.lb1.eq.30).and.
2263      &         (lb2.eq.-1.or.lb2.eq.-2.or.(lb2.ge.-13.and.lb2.le.-6))) 
2264      &         .OR.((lb2.eq.23.or.lb2.eq.30).and.
2265      &         (lb1.eq.-1.or.lb1.eq.-2.or.(lb1.ge.-13.and.lb1.le.-6))) )
2266      &         then
2267              bmass=0.938
2268              if(srt.le.(bmass+aka)) then
2269                 pkaon=0.
2270              else
2271                 pkaon=sqrt(((srt**2-(aka**2+bmass**2))
2272      1               /2./bmass)**2-aka**2)
2273              endif
2274 clin-10/31/02 cross sections are isospin-averaged, same as those in newka
2275 c     for K- + (N,N*,D) --> L/S + pi:
2276              sigela = 0.5 * (AKPEL(PKAON) + AKNEL(PKAON))
2277              SIGSGM = 1.5 * AKPSGM(PKAON) + AKNSGM(PKAON)
2278              SIG = sigela + SIGSGM + AKPLAM(PKAON)
2279              if(sig.gt.1.e-7) then
2280 c     ! K+ + N-bar reactions
2281                 icase=3
2282                 brel=sigela/sig
2283                 brsgm=sigsgm/sig
2284                 brsig = sig
2285                 nchrg = 1
2286                 go to 3555
2287              endif
2288              go to 400
2289           endif
2290 c
2291 c
2292 c  meson + hyperon-bar -> K+ + N-bar
2293           if(((lb1.ge.-17.and.lb1.le.-14).and.(lb2.ge.3.and.lb2.le.5)) 
2294      &         .OR.((lb2.ge.-17.and.lb2.le.-14)
2295      &         .and.(lb1.ge.3.and.lb1.le.5)))then
2296              nchrg=-100
2297  
2298 C*       first classify the reactions due to total charge.
2299              if((lb1.eq.-15.and.(lb2.eq.5.or.lb2.eq.27)).OR.
2300      &            (lb2.eq.-15.and.(lb1.eq.5.or.lb1.eq.27))) then
2301                 nchrg=-2
2302 c     ! D-(bar)
2303                 bmass=1.232
2304                 go to 110
2305              endif
2306              if( (lb1.eq.-15.and.(lb2.eq.0.or.lb2.eq.4.or.lb2.eq.26.or.
2307      &            lb2.eq.28)).OR.(lb2.eq.-15.and.(lb1.eq.0.or.
2308      &            lb1.eq.4.or.lb1.eq.26.or.lb1.eq.28)).OR.
2309      &   ((lb1.eq.-14.or.lb1.eq.-16).and.(lb2.eq.5.or.lb2.eq.27)).OR.
2310      &   ((lb2.eq.-14.or.lb2.eq.-16).and.(lb1.eq.5.or.lb1.eq.27)) )then
2311                 nchrg=-1
2312 c     ! n-bar
2313                 bmass=0.938
2314                 go to 110
2315              endif
2316              if(  (lb1.eq.-15.and.(lb2.eq.3.or.lb2.eq.25)).OR.
2317      &            (lb2.eq.-15.and.(lb1.eq.3.or.lb1.eq.25)).OR.
2318      &            (lb1.eq.-17.and.(lb2.eq.5.or.lb2.eq.27)).OR.
2319      &            (lb2.eq.-17.and.(lb1.eq.5.or.lb1.eq.27)).OR.
2320      &            ((lb1.eq.-14.or.lb1.eq.-16).and.(lb2.eq.0.or.lb2.eq.4
2321      &            .or.lb2.eq.26.or.lb2.eq.28)).OR.
2322      &            ((lb2.eq.-14.or.lb2.eq.-16).and.(lb1.eq.0.or.lb1.eq.4
2323      &            .or.lb1.eq.26.or.lb1.eq.28)) )then
2324                nchrg=0
2325 c     ! p-bar
2326                 bmass=0.938
2327                 go to 110
2328              endif
2329              if( (lb1.eq.-17.and.(lb2.eq.0.or.lb2.eq.4.or.lb2.eq.26.or.
2330      &            lb2.eq.28)).OR.(lb2.eq.-17.and.(lb1.eq.0.or.
2331      &            lb1.eq.4.or.lb1.eq.26.or.lb1.eq.28)).OR.
2332      &  ((lb1.eq.-14.or.lb1.eq.-16).and.(lb2.eq.3.or.lb2.eq.25)).OR.
2333      &  ((lb2.eq.-14.or.lb2.eq.-16).and.(lb1.eq.3.or.lb1.eq.25)))then
2334                nchrg=1
2335 c     ! D++(bar)
2336                 bmass=1.232
2337              endif
2338 c
2339 c 110     if(nchrg.ne.-100.and.srt.ge.(aka+bmass))then !! for elastic
2340  110         sig = 0.
2341 c !! for elastic
2342          if(nchrg.ne.-100.and.srt.ge.(aka+bmass))then
2343 cc110        if(nchrg.eq.-100.or.srt.lt.(aka+bmass)) go to 400
2344 c             ! PI + La(Si)-bar => K+ + N-bar reactions
2345             icase=4
2346 cc       pkaon=sqrt(((srt**2-(aka**2+bmass**2))/2./bmass)**2-aka**2)
2347             pkaon=sqrt(((srt**2-(aka**2+0.938**2))/2./0.938)**2-aka**2)
2348 c ! lambda-bar + Pi
2349             if(lb1.eq.-14.or.lb2.eq.-14) then
2350                if(nchrg.ge.0) sigma0=akPlam(pkaon)
2351                if(nchrg.lt.0) sigma0=akNlam(pkaon)
2352 c                ! sigma-bar + pi
2353             else
2354 c !K-p or K-D++
2355                if(nchrg.ge.0) sigma0=akPsgm(pkaon)
2356 c !K-n or K-D-
2357                if(nchrg.lt.0) sigma0=akNsgm(pkaon)
2358                SIGMA0 = 1.5 * AKPSGM(PKAON) + AKNSGM(PKAON)
2359             endif
2360             sig=(srt**2-(aka+bmass)**2)*(srt**2-(aka-bmass)**2)/
2361      &           (srt**2-(em1+em2)**2)/(srt**2-(em1-em2)**2)*sigma0
2362 c ! K0barD++, K-D-
2363             if(nchrg.eq.-2.or.nchrg.eq.2) sig=2.*sig
2364 C*     the factor 2 comes from spin of delta, which is 3/2
2365 C*     detailed balance. copy from Page 423 of N.P. A614 1997
2366             IF (LB1 .EQ. -14 .OR. LB2 .EQ. -14) THEN
2367                SIG = 4.0 / 3.0 * SIG
2368             ELSE IF (NCHRG .EQ. -2 .OR. NCHRG .EQ. 2) THEN
2369                SIG = 8.0 / 9.0 * SIG
2370             ELSE
2371                SIG = 4.0 / 9.0 * SIG
2372             END IF
2373 cc        brel=0.
2374 cc        brsgm=0.
2375 cc        brsig = sig
2376 cc          if(sig.lt.1.e-7) go to 400
2377 *-
2378          endif
2379 c                ! PI + La(Si)-bar => elastic included
2380          icase=4
2381          sigela = 10.
2382          sig = sig + sigela
2383          brel= sigela/sig
2384          brsgm=0.
2385          brsig = sig
2386 *-
2387          go to 3555
2388       endif
2389       
2390 ** MULTISTRANGE PARTICLE (Cas,Omega -bar) PRODUCTION - (NON)PERTURBATIVE
2391
2392 * K-/K*0bar + La/Si --> cascade + pi/eta
2393       if( ((lb1.eq.21.or.lb1.eq.-30).and.(lb2.ge.14.and.lb2.le.17)).OR.
2394      &  ((lb2.eq.21.or.lb2.eq.-30).and.(lb1.ge.14.and.lb1.le.17)) )then
2395           kp = 0
2396           go to 3455
2397         endif
2398 c K+/K*0 + La/Si(bar) --> cascade-bar + pi/eta
2399       if( ((lb1.eq.23.or.lb1.eq.30).and.(lb2.le.-14.and.lb2.ge.-17)).OR.
2400      &  ((lb2.eq.23.or.lb2.eq.30).and.(lb1.le.-14.and.lb1.ge.-17)) )then
2401           kp = 1
2402           go to 3455
2403         endif
2404 * K-/K*0bar + cascade --> omega + pi
2405        if( ((lb1.eq.21.or.lb1.eq.-30).and.(lb2.eq.40.or.lb2.eq.41)).OR.
2406      & ((lb2.eq.21.or.lb2.eq.-30).and.(lb1.eq.40.or.lb1.eq.41)) )then
2407           kp = 0
2408           go to 3455
2409         endif
2410 * K+/K*0 + cascade-bar --> omega-bar + pi
2411        if( ((lb1.eq.23.or.lb1.eq.30).and.(lb2.eq.-40.or.lb2.eq.-41)).OR.
2412      &  ((lb2.eq.23.or.lb2.eq.30).and.(lb1.eq.-40.or.lb1.eq.-41)) )then
2413           kp = 1
2414           go to 3455
2415         endif
2416 * Omega + Omega --> Di-Omega + photon(eta)
2417 cc        if( lb1.eq.45.and.lb2.eq.45 ) go to 3455
2418
2419 c annhilation of cascade(bar), omega(bar)
2420          kp = 3
2421 * K- + L/S <-- cascade(bar) + pi/eta
2422        if( (((lb1.ge.3.and.lb1.le.5).or.lb1.eq.0) 
2423      &       .and.(iabs(lb2).eq.40.or.iabs(lb2).eq.41))
2424      & .OR. (((lb2.ge.3.and.lb2.le.5).or.lb2.eq.0) 
2425      &       .and.(iabs(lb1).eq.40.or.iabs(lb1).eq.41)) )go to 3455
2426 * K- + cascade(bar) <-- omega(bar) + pi
2427 *         if(  (lb1.eq.0.and.iabs(lb2).eq.45)
2428 *    &       .OR. (lb2.eq.0.and.iabs(lb1).eq.45) )go to 3455
2429         if( ((lb1.ge.3.and.lb1.le.5).and.iabs(lb2).eq.45)
2430      &  .OR.((lb2.ge.3.and.lb2.le.5).and.iabs(lb1).eq.45) )go to 3455
2431 c
2432
2433 ***  MULTISTRANGE PARTICLE PRODUCTION  (END)
2434
2435 c* K+ + La(Si) --> Meson + B
2436         IF (LB1.EQ.23 .AND. (LB2.GE.14.AND.LB2.LE.17)) GOTO 5699
2437         IF (LB2.EQ.23 .AND. (LB1.GE.14.AND.LB1.LE.17)) GOTO 5699
2438 c* K- + La(Si)-bar --> Meson + B-bar
2439        IF (LB1.EQ.21 .AND. (LB2.GE.-17.AND.LB2.LE.-14)) GOTO 5699
2440        IF (LB2.EQ.21 .AND. (LB1.GE.-17.AND.LB1.LE.-14)) GOTO 5699
2441
2442 c La/Si-bar + B --> pi + K+
2443        IF( (((LB1.eq.1.or.LB1.eq.2).or.(LB1.ge.6.and.LB1.le.13))
2444      &       .AND.(LB2.GE.-17.AND.LB2.LE.-14)) .OR.
2445      &     (((LB2.eq.1.or.LB2.eq.2).or.(LB2.ge.6.and.LB2.le.13))
2446      &      .AND.(LB1.GE.-17.AND.LB1.LE.-14)) )go to 5999
2447 c La/Si + B-bar --> pi + K-
2448        IF( (((LB1.eq.-1.or.LB1.eq.-2).or.(LB1.le.-6.and.LB1.ge.-13))
2449      &       .AND.(LB2.GE.14.AND.LB2.LE.17)) .OR.
2450      &     (((LB2.eq.-1.or.LB2.eq.-2).or.(LB2.le.-6.and.LB2.ge.-13))
2451      &       .AND.(LB1.GE.14.AND.LB1.LE.17)) )go to 5999 
2452 *
2453 *
2454 * K(K*) + Kbar(K*bar) --> phi + pi(rho,omega), M + M (M=pi,rho,omega,eta)
2455        if(lb1.eq.21.and.lb2.eq.23) go to 8699
2456        if(lb2.eq.21.and.lb1.eq.23) go to 8699
2457        if(lb1.eq.30.and.lb2.eq.21) go to 8699
2458        if(lb2.eq.30.and.lb1.eq.21) go to 8699
2459        if(lb1.eq.-30.and.lb2.eq.23) go to 8699
2460        if(lb2.eq.-30.and.lb1.eq.23) go to 8699
2461        if(lb1.eq.-30.and.lb2.eq.30) go to 8699
2462        if(lb2.eq.-30.and.lb1.eq.30) go to 8699
2463 c* (K,K*)-bar + rho(omega) --> phi +(K,K*)-bar, piK and elastic
2464        IF( ((lb1.eq.23.or.lb1.eq.21.or.iabs(lb1).eq.30) .and.
2465      &      (lb2.ge.25.and.lb2.le.28)) .OR.
2466      &     ((lb2.eq.23.or.lb2.eq.21.or.iabs(lb2).eq.30) .and.
2467      &      (lb1.ge.25.and.lb1.le.28)) ) go to 8799
2468 c
2469 c* K*(-bar) + pi --> phi + (K,K*)-bar
2470        IF( (iabs(lb1).eq.30.and.(lb2.ge.3.and.lb2.le.5)) .OR.
2471      &     (iabs(lb2).eq.30.and.(lb1.ge.3.and.lb1.le.5)) )go to 8799
2472 *
2473 c
2474 c* phi + N --> pi+N(D),  rho+N(D),  K+ +La
2475 c* phi + D --> pi+N(D),  rho+N(D)
2476        IF( (lb1.eq.29 .and.(lb2.eq.1.or.lb2.eq.2.or.
2477      &       (lb2.ge.6.and.lb2.le.9))) .OR.
2478      &     (lb2.eq.29 .and.(lb1.eq.1.or.lb1.eq.2.or.
2479      &       (lb1.ge.6.and.lb1.le.9))) )go to 7222
2480 c
2481 c* phi + (pi,rho,ome,K,K*-bar) --> K+K, K+K*, K*+K*, (pi,rho,omega)+(K,K*-bar)
2482        IF( (lb1.eq.29 .and.((lb2.ge.3.and.lb2.le.5).or.
2483      &      (lb2.ge.21.and.lb2.le.28).or.iabs(lb2).eq.30)) .OR.
2484      &     (lb2.eq.29 .and.((lb1.ge.3.and.lb1.le.5).or.
2485      &      (lb1.ge.21.and.lb1.le.28).or.iabs(lb1).eq.30)) )THEN
2486              go to 7444
2487       endif
2488 *
2489 c
2490 * La/Si, Cas, Om (bar)-(rho,omega,phi) elastic colln
2491 * pion vs. La, Ca, Omega-(bar) elastic coll. treated in resp. subroutines
2492       if( ((iabs(lb1).ge.14.and.iabs(lb1).le.17).or.iabs(lb1).ge.40)
2493      &    .and.((lb2.ge.25.and.lb2.le.29).or.lb2.eq.0) )go to 888
2494       if( ((iabs(lb2).ge.14.and.iabs(lb2).le.17).or.iabs(lb2).ge.40)
2495      &    .and.((lb1.ge.25.and.lb1.le.29).or.lb1.eq.0) )go to 888
2496 c
2497 c K+/K* (N,R)  OR   K-/K*- (N,R)-bar  elastic scatt
2498         if( ((lb1.eq.23.or.lb1.eq.30).and.(lb2.eq.1.or.lb2.eq.2.or.
2499      &         (lb2.ge.6.and.lb2.le.13))) .OR.
2500      &      ((lb2.eq.23.or.lb2.eq.30).and.(lb1.eq.1.or.lb1.eq.2.or.
2501      &         (lb1.ge.6.and.lb1.le.13))) ) go to 888
2502         if( ((lb1.eq.21.or.lb1.eq.-30).and.(lb2.eq.-1.or.lb2.eq.-2.or.
2503      &       (lb2.ge.-13.and.lb2.le.-6))) .OR. 
2504      &      ((lb2.eq.21.or.lb2.eq.-30).and.(lb1.eq.-1.or.lb1.eq.-2.or.
2505      &       (lb1.ge.-13.and.lb1.le.-6))) ) go to 888
2506 c
2507 * L/S-baryon elastic collision 
2508        If( ((lb1.ge.14.and.lb1.le.17).and.(lb2.ge.6.and.lb2.le.13))
2509      & .OR.((lb2.ge.14.and.lb2.le.17).and.(lb1.ge.6.and.lb1.le.13)) )
2510      &   go to 7799
2511        If(((lb1.le.-14.and.lb1.ge.-17).and.(lb2.le.-6.and.lb2.ge.-13))
2512      &.OR.((lb2.le.-14.and.lb2.ge.-17).and.(lb1.le.-6.and.lb1.ge.-13)))
2513      &   go to 7799
2514 c
2515 c skip other collns with perturbative particles or hyperon-bar
2516        if( iabs(lb1).ge.40 .or. iabs(lb2).ge.40
2517      &    .or. (lb1.le.-14.and.lb1.ge.-17) 
2518      &    .or. (lb2.le.-14.and.lb2.ge.-17) )go to 400
2519 c
2520 c
2521 * anti-baryon on baryon resonaces 
2522         if((lb1.eq.-1.or.lb1.eq.-2.or.(lb1.ge.-13.and.lb1.le.-6))
2523      1 .and.(lb2.eq.1.or.lb2.eq.2.or.(lb2.ge.6.and.lb2.le.13))) then
2524             GOTO 2799
2525        else if((lb2.eq.-1.or.lb2.eq.-2.or.(lb2.ge.-13.and.lb2.le.-6))
2526      1 .and.(lb1.eq.1.or.lb1.eq.2.or.(lb1.ge.6.and.lb1.le.13))) then
2527             GOTO 2799
2528          END IF
2529 c
2530 clin-10/25/02 get rid of argument usage mismatch in newka():
2531          inewka=irun
2532 c        call newka(icase,irun,iseed,dt,nt,
2533 clin-5/01/03 set iblock value in art1f.f, necessary for resonance studies:
2534 c        call newka(icase,inewka,iseed,dt,nt,
2535 c     &                  ictrl,i1,i2,srt,pcx,pcy,pcz)
2536         call newka(icase,inewka,iseed,dt,nt,
2537      &                  ictrl,i1,i2,srt,pcx,pcy,pcz,iblock)
2538
2539 clin-10/25/02-end
2540         IF (ICTRL .EQ. 1) GOTO 400
2541 c
2542 * SEPARATE NUCLEON+NUCLEON( BARYON RESONANCE+ BARYON RESONANCE ELASTIC
2543 * COLLISION), BARYON RESONANCE+NUCLEON AND BARYON-PION
2544 * COLLISIONS INTO THREE PARTS TO CHECK IF THEY ARE GOING TO SCATTER,
2545 * WE only allow L/S to COLLIDE elastically with a nucleon and meson
2546        if((iabs(lb1).ge.14.and.iabs(lb1).le.17).
2547      &  or.(iabs(lb2).ge.14.and.iabs(lb2).le.17))go to 400
2548 * IF PION+PION COLLISIONS GO TO 777
2549 * if pion+eta, eta+eta to create kaons go to 777 
2550        IF((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5))GO TO 777
2551        if(lb1.eq.0.and.(lb2.ge.3.and.lb2.le.5)) go to 777
2552        if(lb2.eq.0.and.(lb1.ge.3.and.lb1.le.5)) go to 777
2553        if(lb1.eq.0.and.lb2.eq.0)go to 777
2554 * we assume that rho and omega behave the same way as pions in 
2555 * kaon production
2556 * (1) rho(omega)+rho(omega)
2557        if( (lb1.ge.25.and.lb1.le.28).and.
2558      &     (lb2.ge.25.and.lb2.le.28) )goto 777
2559 * (2) rho(omega)+pion
2560       If((lb1.ge.25.and.lb1.le.28).and.(lb2.ge.3.and.lb2.le.5))go to 777
2561       If((lb2.ge.25.and.lb2.le.28).and.(lb1.ge.3.and.lb1.le.5))go to 777
2562 * (3) rho(omega)+eta
2563        if((lb1.ge.25.and.lb1.le.28).and.lb2.eq.0)go to 777
2564        if((lb2.ge.25.and.lb2.le.28).and.lb1.eq.0)go to 777
2565 c
2566 * if kaon+pion collisions go to 889
2567        if((lb1.eq.23.or.lb1.eq.21).and.(lb2.ge.3.and.lb2.le.5))go to 889
2568        if((lb2.eq.23.or.lb2.eq.21).and.(lb1.ge.3.and.lb1.le.5))go to 889
2569 c
2570 clin-2/06/03 skip all other (K K* Kbar K*bar) channels:
2571 * SKIP all other K and K* RESCATTERINGS
2572         If(iabs(lb1).eq.30.or.iabs(lb2).eq.30) go to 400
2573         If(lb1.eq.21.or.lb2.eq.21) go to 400
2574         If(lb1.eq.23.or.lb2.eq.23) go to 400
2575 c
2576 * IF PION+baryon COLLISION GO TO 3
2577            IF( (LB1.ge.3.and.LB1.le.5) .and. 
2578      &         (iabs(LB2).eq.1.or.iabs(LB2).eq.2.or.
2579      &          (iabs(LB2).ge.6.and.iabs(LB2).le.13)) )GO TO 3
2580            IF( (LB2.ge.3.and.LB2.le.5) .and. 
2581      &         (iabs(LB1).eq.1.or.iabs(LB1).eq.2.or.
2582      &          (iabs(LB1).ge.6.and.iabs(LB1).le.13)) )GO TO 3
2583 c
2584 * IF rho(omega)+NUCLEON (baryon resonance) COLLISION GO TO 33
2585            IF( (LB1.ge.25.and.LB1.le.28) .and. 
2586      &         (iabs(LB2).eq.1.or.iabs(LB2).eq.2.or.
2587      &          (iabs(LB2).ge.6.and.iabs(LB2).le.13)) )GO TO 33
2588            IF( (LB2.ge.25.and.LB2.le.28) .and. 
2589      &         (iabs(LB1).eq.1.or.iabs(LB1).eq.2.or.
2590      &          (iabs(LB1).ge.6.and.iabs(LB1).le.13)) )GO TO 33
2591 c
2592 * IF ETA+NUCLEON (baryon resonance) COLLISIONS GO TO 547
2593            IF( LB1.eq.0 .and. 
2594      &         (iabs(LB2).eq.1.or.iabs(LB2).eq.2.or.
2595      &          (iabs(LB2).ge.6.and.iabs(LB2).le.13)) )GO TO 547
2596            IF( LB2.eq.0 .and. 
2597      &         (iabs(LB1).eq.1.or.iabs(LB1).eq.2.or.
2598      &          (iabs(LB1).ge.6.and.iabs(LB1).le.13)) )GO TO 547
2599 c
2600 * IF NUCLEON+BARYON RESONANCE COLLISION GO TO 44
2601             IF((LB1.eq.1.or.lb1.eq.2).
2602      &        AND.(LB2.GT.5.and.lb2.le.13))GOTO 44
2603             IF((LB2.eq.1.or.lb2.eq.2).
2604      &        AND.(LB1.GT.5.and.lb1.le.13))GOTO 44
2605             IF((LB1.eq.-1.or.lb1.eq.-2).
2606      &        AND.(LB2.LT.-5.and.lb2.ge.-13))GOTO 44
2607             IF((LB2.eq.-1.or.lb2.eq.-2).
2608      &        AND.(LB1.LT.-5.and.lb1.ge.-13))GOTO 44
2609 c
2610 * IF NUCLEON+NUCLEON COLLISION GO TO 4
2611        IF((LB1.eq.1.or.lb1.eq.2).AND.(LB2.eq.1.or.lb2.eq.2))GOTO 4
2612        IF((LB1.eq.-1.or.lb1.eq.-2).AND.(LB2.eq.-1.or.lb2.eq.-2))GOTO 4
2613 c
2614 * IF BARYON RESONANCE+BARYON RESONANCE COLLISION GO TO 444
2615             IF((LB1.GT.5.and.lb1.le.13).AND.
2616      &         (LB2.GT.5.and.lb2.le.13)) GOTO 444
2617             IF((LB1.LT.-5.and.lb1.ge.-13).AND.
2618      &         (LB2.LT.-5.and.lb2.ge.-13)) GOTO 444
2619 c
2620 * if L/S+L/S or L/s+nucleon go to 400
2621 * otherwise, develop a model for their collisions
2622        if((lb1.lt.3).and.(lb2.ge.14.and.lb2.le.17))goto 400
2623        if((lb2.lt.3).and.(lb1.ge.14.and.lb1.le.17))goto 400
2624        if((lb1.ge.14.and.lb1.le.17).and.
2625      &  (lb2.ge.14.and.lb2.le.17))goto 400
2626 c
2627 * otherwise, go out of the loop
2628               go to 400
2629 *
2630 *
2631 547           IF(LB1*LB2.EQ.0)THEN
2632 * (1) FOR ETA+NUCLEON SYSTEM, we allow both elastic collision, 
2633 *     i.e. N*(1535) formation and kaon production
2634 *     the total kaon production cross section is
2635 *     ASSUMED to be THE SAME AS PION+NUCLEON COLLISIONS
2636 * (2) for eta+baryon resonance we only allow kaon production
2637            ece=(em1+em2+0.02)**2
2638            xkaon0=0.
2639            if(srt.ge.1.63.AND.SRT.LE.1.7)xkaon0=pnlka(srt)
2640            IF(SRT.GT.1.7)XKAON0=PNLKA(SRT)+pnska(srt)
2641 cbz3/7/99 neutralk
2642             XKAON0 = 2.0 * XKAON0
2643 cbz3/7/99 neutralk end
2644
2645 * Here we negelect eta+n inelastic collisions other than the 
2646 * kaon production, therefore the total inelastic cross section
2647 * xkaon equals to the xkaon0 (kaon production cross section)
2648            xkaon=xkaon0
2649 * note here the xkaon is in unit of fm**2
2650             XETA=XN1535(I1,I2,0)
2651         If((iabs(LB(I1)).ge.6.and.iabs(LB(I1)).le.13).or.
2652      &     (iabs(LB(I2)).ge.6.and.iabs(LB(I2)).le.13)) xeta=0.      
2653             IF((XETA+xkaon).LE.1.e-06)GO TO 400
2654             DSE=SQRT((XETA+XKAON)/PI)
2655            DELTRE=DSE+0.1
2656         px1cm=pcx
2657         py1cm=pcy
2658         pz1cm=pcz
2659 * CHECK IF N*(1535) resonance CAN BE FORMED
2660          CALL DISTCE(I1,I2,DELTRE,DSE,DT,ECE,SRT,IC,
2661      1   PCX,PCY,PCZ)
2662          IF(IC.EQ.-1) GO TO 400
2663          ekaon(4,iss)=ekaon(4,iss)+1
2664         IF(XKAON0/(XKAON+XETA).GT.RANART(NSEED))then
2665 * kaon production, USE CREN TO CALCULATE THE MOMENTUM OF L/S K+
2666         CALL CREN(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
2667 * kaon production
2668        IF(IBLOCK.EQ.7) then
2669           LPN=LPN+1
2670        elseIF(IBLOCK.EQ.-7) then
2671        endif
2672 c
2673        em1=e(i1)
2674        em2=e(i2)
2675        GO TO 440
2676        endif
2677 * N*(1535) FORMATION
2678         resona=1.
2679          GO TO 98
2680          ENDIF
2681 *IF PION+NUCLEON (baryon resonance) COLLISION THEN
2682 3           CONTINUE
2683            px1cm=pcx
2684            py1cm=pcy
2685            pz1cm=pcz
2686 * the total kaon production cross section for pion+baryon (resonance) is
2687 * assumed to be the same as in pion+nucleon
2688            xkaon0=0.
2689            if(srt.ge.1.63.AND.SRT.LE.1.7)xkaon0=pnlka(srt)
2690            IF(SRT.GT.1.7)XKAON0=PNLKA(SRT)+pnska(srt)
2691             XKAON0 = 2.0 * XKAON0
2692 c
2693 c sp11/21/01  phi production: pi +N(D) -> phi + N(D)
2694          Xphi = 0.
2695        if( ( ((lb1.ge.1.and.lb1.le.2).or.
2696      &        (lb1.ge.6.and.lb1.le.9))
2697      &   .OR.((lb2.ge.1.and.lb2.le.2).or.
2698      &        (lb2.ge.6.and.lb2.le.9)) )
2699      &       .AND. srt.gt.1.958)
2700      &        call pibphi(srt,lb1,lb2,em1,em2,Xphi,xphin)
2701 c !! in fm^2 above
2702
2703 * if a pion collide with a baryon resonance, 
2704 * we only allow kaon production AND the reabsorption 
2705 * processes: Delta+pion-->N+pion, N*+pion-->N+pion
2706 * Later put in pion+baryon resonance elastic
2707 * cross through forming higher resonances implicitly.
2708 c          If(em1.gt.1.or.em2.gt.1.)go to 31
2709          If((iabs(LB(I1)).ge.6.and.iabs(LB(I1)).le.13).or.
2710      &      (iabs(LB(I2)).ge.6.and.iabs(LB(I2)).le.13)) go to 31
2711 * For pion+nucleon collisions: 
2712 * using the experimental pion+nucleon inelastic cross section, we assume it
2713 * is exhausted by the Delta+pion, Delta+rho and Delta+omega production 
2714 * and kaon production. In the following we first check whether 
2715 * inelastic pion+n collision can happen or not, then determine in 
2716 * crpn whether it is through pion production or through kaon production
2717 * note that the xkaon0 is the kaon production cross section
2718 * Note in particular that: 
2719 * xkaon in the following is the total pion+nucleon inelastic cross section
2720 * note here the xkaon is in unit of fm**2, xnpi is also in unit of fm**2
2721 * FOR PION+NUCLEON SYSTEM, THE MINIMUM S IS 1.2056 the minimum srt for 
2722 * elastic scattering, and it is 1.60 for pion production, 1.63 for LAMBDA+kaon 
2723 * production and 1.7 FOR SIGMA+KAON
2724 * (EC = PION MASS+NUCLEON MASS+20MEV)**2
2725             EC=(em1+em2+0.02)**2
2726            xkaon=0.
2727            if(srt.gt.1.23)xkaon=(pionpp(srt)+PIPP1(SRT))/2.
2728 * pion+nucleon elastic cross section is divided into two parts:
2729 * (1) forming D(1232)+N*(1440) +N*(1535)
2730 * (2) cross sections forming higher resonances are calculated as
2731 *     the difference between the total elastic and (1), this part is 
2732 *     treated as direct process since we do not explicitLY include
2733 *     higher resonances.
2734 * the following is the resonance formation cross sections.
2735 *1. PION(+)+PROTON-->DELTA++,PION(-)+NEUTRON-->DELTA(-)
2736            IF( (LB1*LB2.EQ.5.OR.((LB1*LB2.EQ.6).AND.
2737      &         (LB1.EQ.3.OR.LB2.EQ.3)))
2738      &    .OR. (LB1*LB2.EQ.-3.OR.((LB1*LB2.EQ.-10).AND.
2739      &         (LB1.EQ.5.OR.LB2.EQ.5))) )then    
2740               XMAX=190.
2741               xmaxn=0
2742               xmaxn1=0
2743               xdirct=dirct1(srt)
2744                go to 678
2745            endif
2746 *2. PION(-)+PROTON-->DELTA0,PION(+)+NEUTRON-->DELTA+ 
2747 *   or N*(+)(1440) or N*(+)(1535)
2748 * note the factor 2/3 is from the isospin consideration and
2749 * the factor 0.6 or 0.5 is the branching ratio for the resonance to decay
2750 * into pion+nucleon
2751             IF( (LB1*LB2.EQ.3.OR.((LB1*LB2.EQ.10).AND.
2752      &          (LB1.EQ.5.OR.LB2.EQ.5)))
2753      &     .OR. (LB1*LB2.EQ.-5.OR.((LB1*LB2.EQ.-6).AND.
2754      &          (LB1.EQ.3.OR.LB2.EQ.3))) )then      
2755               XMAX=27.
2756               xmaxn=2./3.*25.*0.6
2757                xmaxn1=2./3.*40.*0.5
2758               xdirct=dirct2(srt)
2759                go to 678
2760               endif
2761 *3. PION0+PROTON-->DELTA+,PION0+NEUTRON-->DELTA0, or N*(0)(1440) or N*(0)(1535)
2762             IF((LB1.EQ.4.OR.LB2.EQ.4).AND.
2763      &         (iabs(LB1*LB2).EQ.4.OR.iabs(LB1*LB2).EQ.8))then
2764               XMAX=50.
2765               xmaxn=1./3.*25*0.6
2766               xmaxn1=1/3.*40.*0.5
2767               xdirct=dirct3(srt)
2768                 go to 678
2769               endif
2770 678           xnpin1=0
2771            xnpin=0
2772             XNPID=XNPI(I1,I2,1,XMAX)
2773            if(xmaxn1.ne.0)xnpin1=XNPI(i1,i2,2,XMAXN1)
2774             if(xmaxn.ne.0)XNPIN=XNPI(I1,I2,0,XMAXN)
2775 * the following 
2776            xres=xnpid+xnpin+xnpin1
2777            xnelas=xres+xdirct 
2778            icheck=1
2779            go to 34
2780 * For pion + baryon resonance the reabsorption 
2781 * cross section is calculated from the detailed balance
2782 * using reab(i1,i2,srt,ictrl), ictrl=1, 2 and 3
2783 * for pion, rho and omega + baryon resonance
2784 31           ec=(em1+em2+0.02)**2
2785            xreab=reab(i1,i2,srt,1)
2786
2787 clin-12/02/00 to satisfy detailed balance, forbid N* absorptions:
2788           if((iabs(lb1).ge.10.and.iabs(lb1).le.13)
2789      1         .or.(iabs(lb2).ge.10.and.iabs(lb2).le.13)) XREAB = 0.
2790
2791            xkaon=xkaon0+xreab
2792 * a constant of 10 mb IS USED FOR PION + N* RESONANCE, 
2793         IF((iabs(LB1).GT.9.AND.iabs(LB1).LE.13) .OR.
2794      &      (iabs(LB2).GT.9.AND.iabs(LB2).LE.13))THEN
2795            Xnelas=1.0
2796         ELSE
2797            XNELAS=DPION(EM1,EM2,LB1,LB2,SRT)
2798         ENDIF
2799            icheck=2
2800 34          IF((Xnelas+xkaon+Xphi).LE.0.000001)GO TO 400
2801             DS=SQRT((Xnelas+xkaon+Xphi)/PI)
2802 csp09/20/01
2803 c           totcr = xnelas+xkaon
2804 c           if(srt .gt. 3.5)totcr = max1(totcr,3.)
2805 c           DS=SQRT(totcr/PI)
2806 csp09/20/01 end
2807             
2808            deltar=ds+0.1
2809          CALL DISTCE(I1,I2,DELTAR,DS,DT,EC,SRT,IC,
2810      1   PCX,PCY,PCZ)
2811          IF(IC.EQ.-1) GO TO 400
2812        ekaon(4,iss)=ekaon(4,iss)+1
2813 c***
2814 * check what kind of collision has happened
2815 * (1) pion+baryon resonance
2816 * if direct elastic process
2817         if(icheck.eq.2)then
2818 c  !!sp11/21/01
2819       if(xnelas/(xnelas+xkaon+Xphi).ge.RANART(NSEED))then
2820 c               call Crdir(PX1CM,PY1CM,PZ1CM,SRT,I1,I2)
2821                call Crdir(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
2822               go to 440
2823               else
2824 * for inelastic process, go to 96 to check
2825 * kaon production and pion reabsorption : pion+D(N*)-->pion+N
2826                go to 96
2827                 endif
2828               endif
2829 *(2) pion+n
2830 * CHECK IF inELASTIC COLLISION IS POSSIBLE FOR PION+N COLLISIONS
2831 clin-8/17/00 typo corrected, many other occurences:
2832 c        IF(XKAON/(XKAON+Xnelas).GT.RANART(NSEED))GO TO 95
2833        IF((XKAON+Xphi)/(XKAON+Xphi+Xnelas).GT.RANART(NSEED))GO TO 95
2834
2835 * direct process
2836         if(xdirct/xnelas.ge.RANART(NSEED))then
2837 c               call Crdir(PX1CM,PY1CM,PZ1CM,SRT,I1,I2)
2838                call Crdir(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
2839               go to 440
2840               endif
2841 * now resonance formation or direct process (higher resonances)
2842            IF( (LB1*LB2.EQ.5.OR.((LB1*LB2.EQ.6).AND.
2843      &         (LB1.EQ.3.OR.LB2.EQ.3)))
2844      &    .OR. (LB1*LB2.EQ.-3.OR.((LB1*LB2.EQ.-10).AND.
2845      &         (LB1.EQ.5.OR.LB2.EQ.5))) )then    
2846 c
2847 * ONLY DELTA RESONANCE IS POSSIBLE, go to 99
2848         GO TO 99
2849        else
2850 * NOW BOTH DELTA AND N* RESORANCE ARE POSSIBLE
2851 * DETERMINE THE RESORANT STATE BY USING THE MONTRE CARLO METHOD
2852             XX=(XNPIN+xnpin1)/xres
2853             IF(RANART(NSEED).LT.XX)THEN
2854 * N* RESONANCE IS SELECTED
2855 * decide N*(1440) or N*(1535) formation
2856         xx0=xnpin/(xnpin+xnpin1)
2857         if(RANART(NSEED).lt.xx0)then
2858          RESONA=0.
2859 * N*(1440) formation
2860          GO TO 97
2861         else
2862 * N*(1535) formation
2863         resona=1.
2864          GO TO 98
2865         endif
2866          ELSE
2867 * DELTA RESONANCE IS SELECTED
2868          GO TO 99
2869          ENDIF
2870          ENDIF
2871 97       CONTINUE
2872             IF(RESONA.EQ.0.)THEN
2873 *N*(1440) IS PRODUCED,WE DETERMINE THE CHARGE STATE OF THE PRODUCED N*
2874             I=I1
2875             IF(EM1.LT.0.6)I=I2
2876 * (0.1) n+pion(+)-->N*(+)
2877            IF( (LB1*LB2.EQ.10.AND.(LB1.EQ.5.OR.LB2.EQ.5))
2878      &      .OR.(LB1*LB2.EQ.-6.AND.(LB1.EQ.3.OR.LB2.EQ.3)) )THEN
2879             LB(I)=11
2880            go to 303
2881             ENDIF
2882 * (0.2) p+pion(0)-->N*(+)
2883 c            IF(LB(I1)*LB(I2).EQ.4.AND.(LB(I1).EQ.1.OR.LB(I2).EQ.1))THEN
2884             IF(iabs(LB(I1)*LB(I2)).EQ.4.AND.
2885      &         (LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN    
2886             LB(I)=11
2887            go to 303
2888             ENDIF
2889 * (0.3) n+pion(0)-->N*(0)
2890 c            IF(LB(I1)*LB(I2).EQ.8.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
2891             IF(iabs(LB(I1)*LB(I2)).EQ.8.AND.
2892      &        (LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN    
2893             LB(I)=10
2894            go to 303
2895             ENDIF
2896 * (0.4) p+pion(-)-->N*(0)
2897 c            IF(LB(I1)*LB(I2).EQ.3)THEN
2898             IF( (LB(I1)*LB(I2).EQ.3)
2899      &      .OR.(LB(I1)*LB(I2).EQ.-5) )THEN
2900             LB(I)=10
2901             ENDIF
2902 303         CALL DRESON(I1,I2)
2903             if(LB1.lt.0.or.LB2.lt.0) LB(I)=-LB(I)
2904             lres=lres+1
2905             GO TO 101
2906 *COM: GO TO 101 TO CHANGE THE PHASE SPACE DENSITY OF THE NUCLEON
2907             ENDIF
2908 98          IF(RESONA.EQ.1.)THEN
2909 *N*(1535) IS PRODUCED, WE DETERMINE THE CHARGE STATE OF THE PRODUCED N*
2910             I=I1
2911             IF(EM1.LT.0.6)I=I2
2912 * note: this condition applies to both eta and pion
2913 * (0.1) n+pion(+)-->N*(+)
2914 c            IF(LB1*LB2.EQ.10.AND.(LB1.EQ.2.OR.LB2.EQ.2))THEN
2915             IF( (LB1*LB2.EQ.10.AND.(LB1.EQ.5.OR.LB2.EQ.5))
2916      &      .OR.(LB1*LB2.EQ.-6.AND.(LB1.EQ.3.OR.LB2.EQ.3)) )THEN
2917             LB(I)=13
2918            go to 304
2919             ENDIF
2920 * (0.2) p+pion(0)-->N*(+)
2921 c            IF(LB(I1)*LB(I2).EQ.4.AND.(LB(I1).EQ.1.OR.LB(I2).EQ.1))THEN
2922             IF(iabs(LB(I1)*LB(I2)).EQ.4.AND.
2923      &           (LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN 
2924             LB(I)=13
2925            go to 304
2926             ENDIF
2927 * (0.3) n+pion(0)-->N*(0)
2928 c            IF(LB(I1)*LB(I2).EQ.8.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
2929             IF(iabs(LB(I1)*LB(I2)).EQ.8.AND.
2930      &           (LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN      
2931             LB(I)=12
2932            go to 304
2933             ENDIF
2934 * (0.4) p+pion(-)-->N*(0)
2935 c            IF(LB(I1)*LB(I2).EQ.3)THEN
2936             IF( (LB(I1)*LB(I2).EQ.3)
2937      &      .OR.(LB(I1)*LB(I2).EQ.-5) )THEN
2938             LB(I)=12
2939            go to 304
2940            endif
2941 * (0.5) p+eta-->N*(+)(1535),n+eta-->N*(0)(1535)
2942            if(lb(i1)*lb(i2).eq.0)then
2943 c            if((lb(i1).eq.1).or.(lb(i2).eq.1))then
2944             if(iabs(lb(i1)).eq.1.or.iabs(lb(i2)).eq.1)then
2945            LB(I)=13
2946            go to 304
2947            ELSE
2948            LB(I)=12
2949            ENDIF
2950            endif
2951 304         CALL DRESON(I1,I2)
2952             if(LB1.lt.0.or.LB2.lt.0) LB(I)=-LB(I) 
2953             lres=lres+1
2954             GO TO 101
2955 *COM: GO TO 101 TO CHANGE THE PHASE SPACE DENSITY OF THE NUCLEON
2956             ENDIF
2957 *DELTA IS PRODUCED,IN THE FOLLOWING WE DETERMINE THE
2958 *CHARGE STATE OF THE PRODUCED DELTA
2959 99      LRES=LRES+1
2960         I=I1
2961         IF(EM1.LE.0.6)I=I2
2962 * (1) p+pion(+)-->DELTA(++)
2963 c        IF(LB(I1)*LB(I2).EQ.5)THEN
2964             IF( (LB(I1)*LB(I2).EQ.5)
2965      &      .OR.(LB(I1)*LB(I2).EQ.-3) )THEN
2966         LB(I)=9
2967        go to 305
2968         ENDIF
2969 * (2) p+pion(0)-->delta(+)
2970 c        IF(LB(I1)*LB(I2).EQ.4.AND.(LB(I1).EQ.1.OR.LB(I2).EQ.1))then
2971        IF(iabs(LB(I1)*LB(I2)).EQ.4.AND.(LB(I1).EQ.4.OR.LB(I2).EQ.4))then
2972         LB(I)=8
2973        go to 305
2974         ENDIF
2975 * (3) n+pion(+)-->delta(+)
2976 c        IF(LB(I1)*LB(I2).EQ.10.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
2977        IF( (LB(I1)*LB(I2).EQ.10.AND.(LB(I1).EQ.5.OR.LB(I2).EQ.5))
2978      & .OR.(LB(I1)*LB(I2).EQ.-6.AND.(LB(I1).EQ.3.OR.LB(I2).EQ.3)) )THEN
2979         LB(I)=8
2980        go to 305
2981         ENDIF
2982 * (4) n+pion(0)-->delta(0)
2983 c        IF(LB(I1)*LB(I2).EQ.8.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
2984        IF(iabs(LB(I1)*LB(I2)).EQ.8.AND.(LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN
2985         LB(I)=7
2986        go to 305
2987         ENDIF
2988 * (5) p+pion(-)-->delta(0)
2989 c        IF(LB(I1)*LB(I2).EQ.3)THEN
2990             IF( (LB(I1)*LB(I2).EQ.3)
2991      &      .OR.(LB(I1)*LB(I2).EQ.-5) )THEN
2992         LB(I)=7
2993        go to 305
2994         ENDIF
2995 * (6) n+pion(-)-->delta(-)
2996 c        IF(LB(I1)*LB(I2).EQ.6.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
2997        IF( (LB(I1)*LB(I2).EQ.6.AND.(LB(I1).EQ.3.OR.LB(I2).EQ.3))
2998      & .OR.(LB(I1)*LB(I2).EQ.-10.AND.(LB(I1).EQ.5.OR.LB(I2).EQ.5)) )THEN 
2999         LB(I)=6
3000         ENDIF
3001 305     CALL DRESON(I1,I2)
3002         if(LB1.lt.0.or.LB2.lt.0) LB(I)=-LB(I) 
3003        GO TO 101
3004
3005 csp-11/08/01 K*
3006 * FOR kaON+pion COLLISIONS, form K* (bar) or
3007 c La/Si-bar + N <-- pi + K+
3008 c La/Si + N-bar <-- pi + K-                                             
3009 c phi + K <-- pi + K                                             
3010 clin (rho,omega) + K* <-- pi + K
3011 889       CONTINUE
3012         PX1CM=PCX
3013         PY1CM=PCY
3014         PZ1CM=PCZ
3015         EC=(em1+em2+0.02)**2
3016 * the cross section is from C.M. Ko, PRC 23, 2760 (1981).
3017        spika=60./(1.+4.*(srt-0.895)**2/(0.05)**2)
3018 c
3019 cc       if(lb(i1).eq.23.or.lb(i2).eq.23)then   !! block  K- + pi->La + B-bar
3020
3021         call Crkpla(PX1CM,PY1CM,PZ1CM,EC,SRT,spika,
3022      &                  emm1,emm2,lbp1,lbp2,I1,I2,icase,srhoks)
3023 cc
3024 c* only K* or K*bar formation
3025 c       else 
3026 c      DSkn=SQRT(spika/PI/10.)
3027 c      dsknr=dskn+0.1
3028 c      CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
3029 c    1     PX1CM,PY1CM,PZ1CM)
3030 c        IF(IC.EQ.-1) GO TO 400
3031 c       icase = 1
3032 c      endif
3033 c
3034          if(icase .eq. 0) then
3035             iblock=0
3036             go to 400
3037          endif
3038
3039        if(icase .eq. 1)then
3040              call KSRESO(I1,I2)
3041 clin-4/30/03 give non-zero iblock for resonance selections:
3042              iblock = 171
3043 ctest off for resonance (phi, K*) studies:
3044 c             if(iabs(lb(i1)).eq.30) then
3045 c             write(17,112) 'ks',lb(i1),p(1,i1),p(2,i1),p(3,i1),e(i1),nt
3046 c             elseif(iabs(lb(i2)).eq.30) then
3047 c             write(17,112) 'ks',lb(i2),p(1,i2),p(2,i2),p(3,i2),e(i2),nt
3048 c             endif
3049 c
3050               lres=lres+1
3051               go to 101
3052        elseif(icase .eq. 2)then
3053              iblock = 71
3054 c
3055 * La/Si (bar) formation                                                   
3056
3057        elseif(iabs(icase).eq.5)then
3058              iblock = 88
3059
3060        else
3061 *
3062 * phi formation
3063              iblock = 222
3064        endif
3065              LB(I1) = lbp1
3066              LB(I2) = lbp2
3067              E(I1) = emm1
3068              E(I2) = emm2
3069              em1=e(i1)
3070              em2=e(i2)
3071              ntag = 0
3072              go to 440
3073 c             
3074 33       continue
3075        em1=e(i1)
3076        em2=e(i2)
3077 * (1) if rho or omega collide with a nucleon we allow both elastic 
3078 *     scattering and kaon production to happen if collision conditions 
3079 *     are satisfied.
3080 * (2) if rho or omega collide with a baryon resonance we allow
3081 *     kaon production, pion reabsorption: rho(omega)+D(N*)-->pion+N
3082 *     and NO elastic scattering to happen
3083            xelstc=0
3084             if((lb1.ge.25.and.lb1.le.28).and.
3085      &    (iabs(lb2).eq.1.or.iabs(lb2).eq.2))
3086      &      xelstc=ERHON(EM1,EM2,LB1,LB2,SRT)
3087             if((lb2.ge.25.and.lb2.le.28).and.
3088      &   (iabs(lb1).eq.1.or.iabs(lb1).eq.2))
3089      &      xelstc=ERHON(EM1,EM2,LB1,LB2,SRT)
3090             ec=(em1+em2+0.02)**2
3091 * the kaon production cross section is
3092            xkaon0=0
3093            if(srt.ge.1.63.AND.SRT.LE.1.7)xkaon0=pnlka(srt)
3094            IF(SRT.GT.1.7)XKAON0=PNLKA(SRT)+pnska(srt)
3095            if(xkaon0.lt.0)xkaon0=0
3096
3097 cbz3/7/99 neutralk
3098             XKAON0 = 2.0 * XKAON0
3099 cbz3/7/99 neutralk end
3100
3101 * the total inelastic cross section for rho(omega)+N is
3102            xkaon=xkaon0
3103            ichann=0
3104 * the total inelastic cross section for rho (omega)+D(N*) is 
3105 * xkaon=xkaon0+reab(**) 
3106
3107 c sp11/21/01  phi production: rho + N(D) -> phi + N(D)
3108          Xphi = 0.
3109        if( ( (((lb1.ge.1.and.lb1.le.2).or.
3110      &         (lb1.ge.6.and.lb1.le.9))
3111      &         .and.(lb2.ge.25.and.lb2.le.27))
3112      &   .OR.(((lb2.ge.1.and.lb2.le.2).or.
3113      &         (lb2.ge.6.and.lb2.le.9))
3114      &        .and.(lb1.ge.25.and.lb1.le.27)) ).AND. srt.gt.1.958)
3115      &    call pibphi(srt,lb1,lb2,em1,em2,Xphi,xphin)
3116 c !! in fm^2 above
3117 c
3118         if((iabs(lb1).ge.6.and.lb2.ge.25).or.
3119      &    (lb1.ge.25.and.iabs(lb2).ge.6))then
3120            ichann=1
3121            ictrl=2
3122            if(lb1.eq.28.or.lb2.eq.28)ictrl=3
3123             xreab=reab(i1,i2,srt,ictrl)
3124
3125 clin-12/02/00 to satisfy detailed balance, forbid N* absorptions:
3126             if((iabs(lb1).ge.10.and.iabs(lb1).le.13)
3127      1           .or.(iabs(lb2).ge.10.and.iabs(lb2).le.13)) XREAB = 0.
3128
3129         if(xreab.lt.0)xreab=1.E-06
3130             xkaon=xkaon0+xreab
3131           XELSTC=1.0
3132            endif
3133             DS=SQRT((XKAON+Xphi+xelstc)/PI)
3134 c
3135 csp09/20/01
3136 c           totcr = xelstc+xkaon
3137 c           if(srt .gt. 3.5)totcr = max1(totcr,3.)
3138 c           DS=SQRT(totcr/PI)
3139 csp09/20/01 end
3140 c
3141         DELTAR=DS+0.1
3142        px1cm=pcx
3143        py1cm=pcy
3144        pz1cm=pcz
3145 * CHECK IF the collision can happen
3146          CALL DISTCE(I1,I2,DELTAR,DS,DT,EC,SRT,IC,
3147      1   PCX,PCY,PCZ)
3148          IF(IC.EQ.-1) GO TO 400
3149         ekaon(4,iss)=ekaon(4,iss)+1
3150 c*
3151 * NOW rho(omega)+N or D(N*) COLLISION IS POSSIBLE
3152 * (1) check elastic collision
3153        if(xelstc/(xelstc+xkaon+Xphi).gt.RANART(NSEED))then
3154 c       call crdir(px1CM,py1CM,pz1CM,srt,I1,i2)
3155        call crdir(px1CM,py1CM,pz1CM,srt,I1,i2,IBLOCK)
3156        go to 440
3157        endif
3158 * (2) check pion absorption or kaon production
3159         CALL CRRD(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3160      1  IBLOCK,xkaon0,xkaon,Xphi,xphin)
3161
3162 * kaon production
3163 csp05/16/01
3164        IF(IBLOCK.EQ.7) then
3165           LPN=LPN+1
3166        elseIF(IBLOCK.EQ.-7) then
3167        endif
3168 csp05/16/01 end
3169 * rho obsorption
3170        if(iblock.eq.81) lrhor=lrhor+1
3171 * omega obsorption
3172        if(iblock.eq.82) lomgar=lomgar+1
3173        em1=e(i1)
3174        em2=e(i2)
3175        GO TO 440
3176 * for pion+n now using the subroutine crpn to change 
3177 * the particle label and set the new momentum of L/S+K final state
3178 95       continue
3179 * NOW PION+N INELASTIC COLLISION IS POSSIBLE
3180 * check pion production or kaon production
3181         CALL CRPN(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3182      1  IBLOCK,xkaon0,xkaon,Xphi,xphin)
3183
3184 * kaon production
3185 csp05/16/01
3186        IF(IBLOCK.EQ.7) then
3187           LPN=LPN+1
3188        elseIF(IBLOCK.EQ.-7) then
3189        endif
3190 csp05/16/01 end
3191 * pion production
3192        if(iblock.eq.77) lpd=lpd+1
3193 * rho production
3194        if(iblock.eq.78) lrho=lrho+1
3195 * omega production
3196        if(iblock.eq.79) lomega=lomega+1
3197        em1=e(i1)
3198        em2=e(i2)
3199        GO TO 440
3200 * for pion+D(N*) now using the subroutine crpd to 
3201 * (1) check kaon production or pion reabsorption 
3202 * (2) change the particle label and set the new 
3203 *     momentum of L/S+K final state
3204 96       continue
3205         CALL CRPD(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3206      1  IBLOCK,xkaon0,xkaon,Xphi,xphin)
3207
3208 * kaon production
3209 csp05/16/01
3210        IF(IBLOCK.EQ.7) then
3211           LPN=LPN+1
3212        elseIF(IBLOCK.EQ.-7) then
3213        endif
3214 csp05/16/01 end
3215 * pion obserption
3216        if(iblock.eq.80) lpdr=lpdr+1
3217        em1=e(i1)
3218        em2=e(i2)
3219        GO TO 440
3220 * CALCULATE KAON PRODUCTION PROBABILITY FROM PION + N COLLISIONS
3221 C        IF(SRT.GT.1.615)THEN
3222 C        CALL PKAON(SRT,XXp,PK)
3223 C        TKAON(7)=TKAON(7)+PK 
3224 C        EKAON(7,ISS)=EKAON(7,ISS)+1
3225 c        CALL KSPEC1(SRT,PK)
3226 C        call LK(3,srt,iseed,pk)
3227 C        ENDIF
3228 * negelecting the pauli blocking at high energies
3229
3230 101       continue
3231         IF(E(I2).EQ.0.)GO TO 600
3232         IF(E(I1).EQ.0.)GO TO 800
3233 * IF NUCLEON+BARYON RESONANCE COLLISIONS
3234 44      CONTINUE
3235 * CALCULATE THE TOTAL CROSS SECTION OF NUCLEON+ BARYON RESONANCE COLLISION
3236 * WE ASSUME THAT THE ELASTIC CROSS SECTION IS THE SAME AS NUCLEON+NUCLEON
3237 * COM: WE USE THE PARAMETERISATION BY CUGNON FOR LOW ENERGIES
3238 *      AND THE PARAMETERIZATIONS FROM CERN DATA BOOK FOR HIGHER 
3239 *      ENERGIES. THE CUTOFF FOR THE TOTAL CROSS SECTION IS 55 MB 
3240        cutoff=em1+em2+0.02
3241        IF(SRT.LE.CUTOFF)GO TO 400
3242         IF(SRT.GT.2.245)THEN
3243        SIGNN=PP2(SRT)
3244        ELSE
3245         SIGNN = 35.0 / (1. + (SRT - CUTOFF) * 100.0)  +  20.0
3246        ENDIF 
3247         call XND(pcx,pcy,pcz,srt,I1,I2,xinel,
3248      &               sigk,xsk1,xsk2,xsk3,xsk4,xsk5)
3249        sig=signn+xinel
3250 * For nucleon+baryon resonance collision, the minimum cms**2 energy is
3251         EC=(EM1+EM2+0.02)**2
3252 * CHECK THE DISTENCE BETWEEN THE TWO PARTICLES
3253         PX1CM=PCX
3254         PY1CM=PCY
3255         PZ1CM=PCZ
3256
3257 clin-6/2008 Deuteron production:
3258         ianti=0
3259         if(lb(i1).lt.0 .and. lb(i2).lt.0) ianti=1
3260         call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
3261         sig=sig+sdprod
3262 clin-6/2008 perturbative treatment of deuterons:
3263         ipdflag=0
3264         if(idpert.eq.1) then
3265            ipert1=1
3266            sigr0=sig
3267            dspert=sqrt(sigr0/pi/10.)
3268            dsrpert=dspert+0.1
3269            CALL DISTCE(I1,I2,dsrpert,dspert,DT,EC,SRT,IC,
3270      1          PX1CM,PY1CM,PZ1CM)
3271            IF(IC.EQ.-1) GO TO 363
3272            signn0=0.
3273            CALL CRND(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3274      &  IBLOCK,SIGNN0,SIGr0,sigk,xsk1,xsk2,xsk3,xsk4,xsk5,NT,ipert1)
3275 c     &  IBLOCK,SIGNN,SIG,sigk,xsk1,xsk2,xsk3,xsk4,xsk5)
3276            ipdflag=1
3277  363       continue
3278            ipert1=0
3279         endif
3280         if(idpert.eq.2) ipert1=1
3281 c
3282         DS=SQRT(SIG/(10.*PI))
3283         DELTAR=DS+0.1
3284         CALL DISTCE(I1,I2,DELTAR,DS,DT,EC,SRT,IC,
3285      1  PX1CM,PY1CM,PZ1CM)
3286 c        IF(IC.EQ.-1)GO TO 400
3287         IF(IC.EQ.-1) then
3288            if(ipdflag.eq.1) iblock=501
3289            GO TO 400
3290         endif
3291
3292         ekaon(3,iss)=ekaon(3,iss)+1
3293 * CALCULATE KAON PRODUCTION PROBABILITY FROM NUCLEON + BARYON RESONANCE 
3294 * COLLISIONS
3295         go to 361
3296
3297 * CHECK WHAT KIND OF COLLISION HAS HAPPENED
3298  361    continue 
3299         CALL CRND(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3300      &     IBLOCK,SIGNN,SIG,sigk,xsk1,xsk2,xsk3,xsk4,xsk5,NT,ipert1)
3301 c     &  IBLOCK,SIGNN,SIG,sigk,xsk1,xsk2,xsk3,xsk4,xsk5)
3302         IF(iblock.eq.0.and.ipdflag.eq.1) iblock=501
3303         IF(IBLOCK.EQ.11)THEN
3304            LNDK=LNDK+1
3305            GO TO 400
3306 c        elseIF(IBLOCK.EQ.-11) then
3307         elseIF(IBLOCK.EQ.-11.or.iblock.eq.501) then
3308            GO TO 400
3309         ENDIF
3310         if(iblock .eq. 222)then
3311 c    !! sp12/17/01 
3312            GO TO 400
3313         ENDIF
3314         em1=e(i1)
3315         em2=e(i2)
3316         GO TO 440
3317 * IF NUCLEON+NUCLEON OR BARYON RESONANCE+BARYON RESONANCE COLLISIONS
3318 4       CONTINUE
3319 * PREPARE THE EALSTIC CROSS SECTION FOR BARYON+BARYON COLLISIONS
3320 * COM: WE USE THE PARAMETERISATION BY CUGNON FOR SRT LEQ 2.0 GEV
3321 *      AND THE PARAMETERIZATIONS FROM CERN DATA BOOK FOR HIGHER 
3322 *      ENERGIES. THE CUTOFF FOR THE TOTAL CROSS SECTION IS 55 MB 
3323 *      WITH LOW-ENERGY-CUTOFF
3324         CUTOFF=em1+em2+0.14
3325 * AT HIGH ENERGIES THE ISOSPIN DEPENDENCE IS NEGLIGIBLE
3326 * THE TOTAL CROSS SECTION IS TAKEN AS THAT OF THE PP 
3327 * ABOVE E_KIN=800 MEV, WE USE THE ISOSPIN INDEPENDNET XSECTION
3328         IF(SRT.GT.2.245)THEN
3329            SIG=ppt(srt)
3330            SIGNN=SIG-PP1(SRT)
3331         ELSE
3332 * AT LOW ENERGIES THE ISOSPIN DEPENDENCE FOR NN COLLISION IS STRONG
3333            SIG=XPP(SRT)
3334            IF(ZET(LB(I1))*ZET(LB(I2)).LE.0)SIG=XNP(SRT)
3335            IF(ZET(LB(I1))*ZET(LB(I2)).GT.0)SIG=XPP(SRT)
3336            IF(ZET(LB(I1)).EQ.0.
3337      &          AND.ZET(LB(I2)).EQ.0)SIG=XPP(SRT)
3338            if((lb(i1).eq.-1.and.lb(i2).eq.-2) .or.
3339      &          (lb(i2).eq.-1.and.lb(i1).eq.-2))sig=xnp(srt)
3340 *     WITH LOW-ENERGY-CUTOFF
3341            IF (SRT .LT. 1.897) THEN
3342               SIGNN = SIG
3343            ELSE 
3344               SIGNN = 35.0 / (1. + (SRT - 1.897) * 100.0)  +  20.0
3345            ENDIF
3346         ENDIF 
3347         PX1CM=PCX
3348         PY1CM=PCY
3349         PZ1CM=PCZ
3350 clin-5/2008 Deuteron production cross sections were not included 
3351 c     in the previous parameterized inelastic cross section of NN collisions  
3352 c     (SIGinel=SIG-SIGNN), so they are added here:
3353         ianti=0
3354         if(lb(i1).lt.0 .and. lb(i2).lt.0) ianti=1
3355         call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
3356         sig=sig+sdprod
3357 c
3358 clin-5/2008 perturbative treatment of deuterons:
3359         ipdflag=0
3360         if(idpert.eq.1) then
3361 c     For idpert=1: ipert1=1 means we will first treat deuteron perturbatively,
3362 c     then we set ipert1=0 to treat regular NN or NbarNbar collisions including
3363 c     the regular deuteron productions.
3364 c     ipdflag=1 means perturbative deuterons are produced here:
3365            ipert1=1
3366            EC=2.012**2
3367 c     Use the same cross section for NN/NNBAR collisions 
3368 c     to trigger perturbative production
3369            sigr0=sig
3370 c     One can also trigger with X*sbbdm() so the weight will not be too small;
3371 c     but make sure to limit the maximum trigger Xsec:
3372 c           sigr0=sdprod*25.
3373 c           if(sigr0.ge.100.) sigr0=100.
3374            dspert=sqrt(sigr0/pi/10.)
3375            dsrpert=dspert+0.1
3376            CALL DISTCE(I1,I2,dsrpert,dspert,DT,EC,SRT,IC,
3377      1          PX1CM,PY1CM,PZ1CM)
3378            IF(IC.EQ.-1) GO TO 365
3379            signn0=0.
3380            CALL CRNN(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK,
3381      1          NTAG,signn0,sigr0,NT,ipert1)
3382            ipdflag=1
3383  365       continue
3384            ipert1=0
3385         endif
3386         if(idpert.eq.2) ipert1=1
3387 c
3388 clin-5/2008 in case perturbative deuterons are produced for idpert=1:
3389 c        IF(SIGNN.LE.0)GO TO 400
3390         IF(SIGNN.LE.0) then
3391            if(ipdflag.eq.1) iblock=501
3392            GO TO 400
3393         endif
3394 c
3395         EC=3.59709
3396         ds=sqrt(sig/pi/10.)
3397         dsr=ds+0.1
3398         IF((E(I1).GE.1.).AND.(e(I2).GE.1.))EC=4.75
3399         CALL DISTCE(I1,I2,dsr,ds,DT,EC,SRT,IC,
3400      1       PX1CM,PY1CM,PZ1CM)
3401 clin-5/2008 in case perturbative deuterons are produced above:
3402 c        IF(IC.EQ.-1) GO TO 400
3403         IF(IC.EQ.-1) then
3404            if(ipdflag.eq.1) iblock=501
3405            GO TO 400
3406         endif
3407 c
3408 * CALCULATE KAON PRODUCTION PROBABILITY FROM NUCLEON+NUCLEON OR 
3409 * RESONANCE+RESONANCE COLLISIONS
3410         go to 362
3411
3412 C CHECK WHAT KIND OF COLLISION HAS HAPPENED 
3413  362    ekaon(1,iss)=ekaon(1,iss)+1
3414         CALL CRNN(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK,
3415      1       NTAG,SIGNN,SIG,NT,ipert1)
3416 clin-5/2008 give iblock # in case pert deuterons are produced for idpert=1:
3417         IF(iblock.eq.0.and.ipdflag.eq.1) iblock=501
3418 clin-5/2008 add iblock # for deuteron formation:
3419 c        IF(IBLOCK.EQ.4.OR.IBLOCK.Eq.9.or.iblock.ge.44.OR.IBLOCK.EQ.-9
3420 c     &       .or.iblock.eq.222)THEN
3421         IF(IBLOCK.EQ.4.OR.IBLOCK.Eq.9.or.iblock.ge.44.OR.IBLOCK.EQ.-9
3422      &       .or.iblock.eq.222.or.iblock.eq.501)THEN
3423 c
3424 c     !! sp12/17/01 above
3425 * momentum of the three particles in the final state have been calculated
3426 * in the crnn, go out of the loop
3427            LCOLL=LCOLL+1
3428            if(iblock.eq.4)then
3429               LDIRT=LDIRT+1
3430            elseif(iblock.eq.44)then
3431               LDdrho=LDdrho+1
3432            elseif(iblock.eq.45)then
3433               Lnnrho=Lnnrho+1
3434            elseif(iblock.eq.46)then
3435               Lnnom=Lnnom+1
3436            elseif(iblock .eq. 222)then
3437            elseIF(IBLOCK.EQ.9) then
3438               LNNK=LNNK+1
3439            elseIF(IBLOCK.EQ.-9) then
3440            endif
3441            GO TO 400
3442         ENDIF
3443
3444         em1=e(i1)
3445         em2=e(i2)
3446         GO TO 440
3447 clin-8/2008 B+B->Deuteron+Meson over
3448 c
3449 clin-8/2008 Deuteron+Meson->B+B collisions:
3450  505    continue
3451         ianti=0
3452         if(lb(i1).lt.0 .or. lb(i2).lt.0) ianti=1
3453         call sdmbb(SRT,sdm,ianti)
3454         PX1CM=PCX
3455         PY1CM=PCY
3456         PZ1CM=PCZ
3457 c     minimum srt**2, note a 2.012GeV lower cutoff is used in N+N->Deuteron+pi:
3458         EC=2.012**2
3459         ds=sqrt(sdm/31.4)
3460         dsr=ds+0.1
3461         CALL DISTCE(I1,I2,dsr,ds,DT,EC,SRT,IC,PX1CM,PY1CM,PZ1CM)
3462         IF(IC.EQ.-1) GO TO 400
3463         CALL crdmbb(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK,
3464      1       NTAG,sdm,NT,ianti)
3465         LCOLL=LCOLL+1
3466         GO TO 400
3467 clin-8/2008 Deuteron+Meson->B+B collisions over
3468 c
3469 clin-9/2008 Deuteron+Baryon elastic collisions:
3470  506    continue
3471         ianti=0
3472         if(lb(i1).lt.0 .or. lb(i2).lt.0) ianti=1
3473         call sdbelastic(SRT,sdb)
3474         PX1CM=PCX
3475         PY1CM=PCY
3476         PZ1CM=PCZ
3477 c     minimum srt**2, note a 2.012GeV lower cutoff is used in N+N->Deuteron+pi:
3478         EC=2.012**2
3479         ds=sqrt(sdb/31.4)
3480         dsr=ds+0.1
3481         CALL DISTCE(I1,I2,dsr,ds,DT,EC,SRT,IC,PX1CM,PY1CM,PZ1CM)
3482         IF(IC.EQ.-1) GO TO 400
3483         CALL crdbel(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK,
3484      1       NTAG,sdb,NT,ianti)
3485         LCOLL=LCOLL+1
3486         GO TO 400
3487 clin-9/2008 Deuteron+Baryon elastic collisions over
3488 c
3489 * IF BARYON RESONANCE+BARYON RESONANCE COLLISIONS
3490  444    CONTINUE
3491 * PREPARE THE EALSTIC CROSS SECTION FOR BARYON+BARYON COLLISIONS
3492        CUTOFF=em1+em2+0.02
3493 * AT HIGH ENERGIES THE ISOSPIN DEPENDENCE IS NEGLIGIBLE
3494 * THE TOTAL CROSS SECTION IS TAKEN AS THAT OF THE PP 
3495        IF(SRT.LE.CUTOFF)GO TO 400
3496         IF(SRT.GT.2.245)THEN
3497        SIGNN=PP2(SRT)
3498        ELSE
3499         SIGNN = 35.0 / (1. + (SRT - CUTOFF) * 100.0)  +  20.0
3500        ENDIF 
3501        IF(SIGNN.LE.0)GO TO 400
3502       CALL XDDIN(PCX,PCY,PCZ,SRT,I1,I2,
3503      &XINEL,SIGK,XSK1,XSK2,XSK3,XSK4,XSK5)
3504        SIG=SIGNN+XINEL
3505        EC=(EM1+EM2+0.02)**2
3506         PX1CM=PCX
3507         PY1CM=PCY
3508         PZ1CM=PCZ
3509
3510 clin-6/2008 Deuteron production:
3511         ianti=0
3512         if(lb(i1).lt.0 .and. lb(i2).lt.0) ianti=1
3513         call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
3514         sig=sig+sdprod
3515 clin-6/2008 perturbative treatment of deuterons:
3516         ipdflag=0
3517         if(idpert.eq.1) then
3518            ipert1=1
3519            sigr0=sig
3520            dspert=sqrt(sigr0/pi/10.)
3521            dsrpert=dspert+0.1
3522            CALL DISTCE(I1,I2,dsrpert,dspert,DT,EC,SRT,IC,
3523      1          PX1CM,PY1CM,PZ1CM)
3524            IF(IC.EQ.-1) GO TO 367
3525            signn0=0.
3526            CALL CRDD(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3527      1          IBLOCK,NTAG,SIGNN0,SIGr0,NT,ipert1)
3528 c     1          IBLOCK,NTAG,SIGNN,SIG)
3529            ipdflag=1
3530  367       continue
3531            ipert1=0
3532         endif
3533         if(idpert.eq.2) ipert1=1
3534 c
3535         ds=sqrt(sig/31.4)
3536         dsr=ds+0.1
3537         CALL DISTCE(I1,I2,dsr,ds,DT,EC,SRT,IC,
3538      1  PX1CM,PY1CM,PZ1CM)
3539 c        IF(IC.EQ.-1) GO TO 400
3540         IF(IC.EQ.-1) then
3541            if(ipdflag.eq.1) iblock=501
3542            GO TO 400
3543         endif
3544
3545 * CALCULATE KAON PRODUCTION PROBABILITY FROM NUCLEON+NUCLEON OR 
3546 * RESONANCE+RESONANCE COLLISIONS
3547        go to 364
3548
3549 C CHECK WHAT KIND OF COLLISION HAS HAPPENED 
3550 364       ekaon(2,iss)=ekaon(2,iss)+1
3551 * for resonance+resonance
3552 clin-6/2008:
3553         CALL CRDD(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3554      1  IBLOCK,NTAG,SIGNN,SIG,NT,ipert1)
3555 c     1  IBLOCK,NTAG,SIGNN,SIG)
3556         IF(iblock.eq.0.and.ipdflag.eq.1) iblock=501
3557 c
3558         IF(iabs(IBLOCK).EQ.10)THEN
3559 * momentum of the three particles in the final state have been calculated
3560 * in the crnn, go out of the loop
3561            LCOLL=LCOLL+1
3562            IF(IBLOCK.EQ.10)THEN
3563               LDDK=LDDK+1
3564            elseIF(IBLOCK.EQ.-10) then
3565            endif
3566            GO TO 400
3567         ENDIF
3568 clin-6/2008
3569 c        if(iblock .eq. 222)then
3570         if(iblock .eq. 222.or.iblock.eq.501)then
3571 c    !! sp12/17/01 
3572            GO TO 400
3573         ENDIF
3574         em1=e(i1)
3575         em2=e(i2)
3576         GO TO 440
3577 * FOR PION+PION,pion+eta, eta+eta and rho(omega)+pion(rho,omega) or eta 
3578 777       CONTINUE
3579         PX1CM=PCX
3580         PY1CM=PCY
3581         PZ1CM=PCZ
3582 * energy thresh for collisions
3583        ec0=em1+em2+0.02
3584        IF(SRT.LE.ec0)GO TO 400
3585        ec=(em1+em2+0.02)**2
3586 * we negelect the elastic collision between mesons except that betwen
3587 * two pions because of the lack of information about these collisions
3588 * However, we do let them to collide inelastically to produce kaons
3589 clin-8/15/02       ppel=1.e-09
3590        ppel=20.
3591         ipp=1
3592        if(lb1.lt.3.or.lb1.gt.5.or.lb2.lt.3.or.lb2.gt.5)go to 778       
3593        CALL PPXS(LB1,LB2,SRT,PPSIG,spprho,IPP)
3594        ppel=ppsig
3595 778       ppink=pipik(srt)
3596
3597 * pi+eta and eta+eta are assumed to be the same as pipik( for pi+pi -> K+K-) 
3598 * estimated from Ko's paper:
3599         ppink = 2.0 * ppink
3600        if(lb1.ge.25.and.lb2.ge.25) ppink=rrkk
3601
3602 clin-2/13/03 include omega the same as rho, eta the same as pi:
3603 c        if(((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.25.and.lb2.le.27))
3604 c     1  .or.((lb2.ge.3.and.lb2.le.5).and.(lb1.ge.25.and.lb1.le.27)))
3605         if( ( (lb1.eq.0.or.(lb1.ge.3.and.lb1.le.5))
3606      1       .and.(lb2.ge.25.and.lb2.le.28))
3607      2       .or. ( (lb2.eq.0.or.(lb2.ge.3.and.lb2.le.5))
3608      3       .and.(lb1.ge.25.and.lb1.le.28))) then
3609            ppink=0.
3610            if(srt.ge.(aka+aks)) ppink = prkk
3611         endif
3612
3613 c pi pi <-> rho rho:
3614         call spprr(lb1,lb2,srt)
3615 clin-4/03/02 pi pi <-> eta eta:
3616         call sppee(lb1,lb2,srt)
3617 clin-4/03/02 pi pi <-> pi eta:
3618         call spppe(lb1,lb2,srt)
3619 clin-4/03/02 rho pi <-> rho eta:
3620         call srpre(lb1,lb2,srt)
3621 clin-4/03/02 omega pi <-> omega eta:
3622         call sopoe(lb1,lb2,srt)
3623 clin-4/03/02 rho rho <-> eta eta:
3624         call srree(lb1,lb2,srt)
3625
3626         ppinnb=0.
3627         if(srt.gt.thresh(1)) then
3628            call getnst(srt)
3629            if(lb1.ge.3.and.lb1.le.5.and.lb2.ge.3.and.lb2.le.5) then
3630               ppinnb=ppbbar(srt)
3631            elseif((lb1.ge.3.and.lb1.le.5.and.lb2.ge.25.and.lb2.le.27)
3632      1 .or.(lb2.ge.3.and.lb2.le.5.and.lb1.ge.25.and.lb1.le.27)) then
3633               ppinnb=prbbar(srt)
3634            elseif(lb1.ge.25.and.lb1.le.27
3635      1             .and.lb2.ge.25.and.lb2.le.27) then
3636               ppinnb=rrbbar(srt)
3637            elseif((lb1.ge.3.and.lb1.le.5.and.lb2.eq.28)
3638      1             .or.(lb2.ge.3.and.lb2.le.5.and.lb1.eq.28)) then
3639               ppinnb=pobbar(srt)
3640            elseif((lb1.ge.25.and.lb1.le.27.and.lb2.eq.28)
3641      1             .or.(lb2.ge.25.and.lb2.le.27.and.lb1.eq.28)) then
3642               ppinnb=robbar(srt)
3643            elseif(lb1.eq.28.and.lb2.eq.28) then
3644               ppinnb=oobbar(srt)
3645            else
3646               if(lb1.ne.0.and.lb2.ne.0) 
3647      1             write(6,*) 'missed MM lb1,lb2=',lb1,lb2
3648            endif
3649         endif
3650         ppin=ppink+ppinnb+pprr+ppee+pppe+rpre+xopoe+rree
3651
3652 * check if a collision can happen
3653        if((ppel+ppin).le.0.01)go to 400
3654        DSPP=SQRT((ppel+ppin)/31.4)
3655        dsppr=dspp+0.1
3656         CALL DISTCE(I1,I2,dsppr,DSPP,DT,EC,SRT,IC,
3657      1  PX1CM,PY1CM,PZ1CM)
3658         IF(IC.EQ.-1) GO TO 400
3659        if(ppel.eq.0)go to 400
3660 * the collision can happen
3661 * check what kind collision has happened
3662        ekaon(5,iss)=ekaon(5,iss)+1
3663         CALL CRPP(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3664      1  IBLOCK,ppel,ppin,spprho,ipp)
3665
3666 * rho formation, go to 400
3667 c       if(iblock.eq.666)go to 600
3668        if(iblock.eq.666)go to 555
3669        if(iblock.eq.6)LPP=LPP+1
3670        if(iblock.eq.66)then
3671           LPPk=LPPk+1
3672        elseif(iblock.eq.366)then
3673           LPPk=LPPk+1
3674        elseif(iblock.eq.367)then
3675           LPPk=LPPk+1
3676        endif
3677        em1=e(i1)
3678        em2=e(i2)
3679        go to 440
3680
3681 * In this block we treat annihilations of
3682 clin-9/28/00* an anti-nucleon and a baryon or baryon resonance  
3683 * an anti-baryon and a baryon (including resonances)
3684 2799        CONTINUE
3685         PX1CM=PCX
3686         PY1CM=PCY
3687         PZ1CM=PCZ
3688         EC=(em1+em2+0.02)**2
3689 clin assume the same cross section (as a function of sqrt s) as for PPbar:
3690
3691 clin-ctest annih maximum
3692 c        DSppb=SQRT(amin1(xppbar(srt),30.)/PI/10.)
3693        DSppb=SQRT(xppbar(srt)/PI/10.)
3694        dsppbr=dsppb+0.1
3695         CALL DISTCE(I1,I2,dsppbr,DSppb,DT,EC,SRT,IC,
3696      1  PX1CM,PY1CM,PZ1CM)
3697         IF(IC.EQ.-1) GO TO 400
3698         CALL Crppba(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3699      1  IBLOCK)
3700        em1=e(i1)
3701        em2=e(i2)
3702        go to 440
3703 c
3704 3555    PX1CM=PCX
3705         PY1CM=PCY
3706         PZ1CM=PCZ
3707         EC=(em1+em2+0.02)**2
3708        DSkk=SQRT(SIG/PI/10.)
3709        dskk0=dskk+0.1
3710         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3711      1  PX1CM,PY1CM,PZ1CM)
3712         IF(IC.EQ.-1) GO TO 400
3713         CALL Crlaba(PX1CM,PY1CM,PZ1CM,SRT,brel,brsgm,
3714      &                  I1,I2,nt,IBLOCK,nchrg,icase)
3715        em1=e(i1)
3716        em2=e(i2)
3717        go to 440
3718 *
3719 c perturbative production of cascade and omega
3720 3455    PX1CM=PCX
3721         PY1CM=PCY
3722         PZ1CM=PCZ
3723         call pertur(PX1CM,PY1CM,PZ1CM,SRT,IRUN,I1,I2,nt,kp,icontp)
3724         if(icontp .eq. 0)then
3725 c     inelastic collisions:
3726          em1 = e(i1)
3727          em2 = e(i2)
3728          iblock = 727
3729           go to 440
3730         endif
3731 c     elastic collisions:
3732         if (e(i1) .eq. 0.) go to 800
3733         if (e(i2) .eq. 0.) go to 600
3734         go to 400
3735 *
3736 c* phi + N --> pi+N(D),  N(D,N*)+N(D,N*),  K+ +La
3737 c* phi + D --> pi+N(D)
3738 7222        CONTINUE
3739         PX1CM=PCX
3740         PY1CM=PCY
3741         PZ1CM=PCZ
3742         EC=(em1+em2+0.02)**2
3743         CALL XphiB(LB1, LB2, EM1, EM2, SRT,
3744      &             XSK1, XSK2, XSK3, XSK4, XSK5, SIGP)
3745        DSkk=SQRT(SIGP/PI/10.)
3746        dskk0=dskk+0.1
3747         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3748      1  PX1CM,PY1CM,PZ1CM)
3749         IF(IC.EQ.-1) GO TO 400
3750         CALL CRPHIB(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3751      &     XSK1, XSK2, XSK3, XSK4, XSK5, SIGP, IBLOCK)
3752        em1=e(i1)
3753        em2=e(i2)
3754        go to 440
3755 *
3756 c* phi + M --> K+ + K* .....
3757 7444        CONTINUE
3758         PX1CM=PCX
3759         PY1CM=PCY
3760         PZ1CM=PCZ
3761         EC=(em1+em2+0.02)**2
3762         CALL PHIMES(I1, I2, SRT, XSK1, XSK2, XSK3, XSK4, XSK5,
3763      1     XSK6, XSK7, SIGPHI)
3764        DSkk=SQRT(SIGPHI/PI/10.)
3765        dskk0=dskk+0.1
3766         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3767      1  PX1CM,PY1CM,PZ1CM)
3768         IF(IC.EQ.-1) GO TO 400
3769 c*---
3770         PZRT = p(3,i1)+p(3,i2)
3771         ER1 = sqrt( p(1,i1)**2+p(2,i1)**2+p(3,i1)**2+E(i1)**2 )
3772         ER2 = sqrt( p(1,i2)**2+p(2,i2)**2+p(3,i2)**2+E(i2)**2 )
3773         ERT = ER1+ER2
3774         yy = 0.5*log( (ERT+PZRT)/(ERT-PZRT) )
3775 c*------
3776         CALL CRPHIM(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3777      &  XSK1, XSK2, XSK3, XSK4, XSK5, XSK6, SIGPHI, IKKG, IKKL, IBLOCK)
3778        em1=e(i1)
3779        em2=e(i2)
3780        go to 440
3781 c
3782 c lambda-N elastic xsection, Li & Ko, PRC 54(1996)1897.
3783  7799    CONTINUE
3784          PX1CM=PCX
3785          PY1CM=PCY
3786          PZ1CM=PCZ
3787          EC=(em1+em2+0.02)**2
3788          call lambar(i1,i2,srt,siglab)
3789         DShn=SQRT(siglab/PI/10.)
3790         dshnr=dshn+0.1
3791          CALL DISTCE(I1,I2,dshnr,DShn,DT,EC,SRT,IC,
3792      1    PX1CM,PY1CM,PZ1CM)
3793         IF(IC.EQ.-1) GO TO 400
3794          CALL Crhb(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
3795         em1=e(i1)
3796         em2=e(i2)
3797         go to 440
3798 c
3799 c* K+ + La(Si) --> Meson + B
3800 c* K- + La(Si)-bar --> Meson + B-bar
3801 5699        CONTINUE
3802         PX1CM=PCX
3803         PY1CM=PCY
3804         PZ1CM=PCZ
3805         EC=(em1+em2+0.02)**2
3806         CALL XKHYPE(I1, I2, SRT, XKY1, XKY2, XKY3, XKY4, XKY5,
3807      &     XKY6, XKY7, XKY8, XKY9, XKY10, XKY11, XKY12, XKY13,
3808      &     XKY14, XKY15, XKY16, XKY17, SIGK)
3809        DSkk=SQRT(sigk/PI)
3810        dskk0=dskk+0.1
3811         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3812      1  PX1CM,PY1CM,PZ1CM)
3813         IF(IC.EQ.-1) GO TO 400
3814 c
3815        if(lb(i1).eq.23 .or. lb(i2).eq.23)then
3816              IKMP = 1
3817         else
3818              IKMP = -1
3819         endif
3820         CALL Crkhyp(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3821      &     XKY1, XKY2, XKY3, XKY4, XKY5,
3822      &     XKY6, XKY7, XKY8, XKY9, XKY10, XKY11, XKY12, XKY13,
3823      &     XKY14, XKY15, XKY16, XKY17, SIGK, IKMP,
3824      1  IBLOCK)
3825        em1=e(i1)
3826        em2=e(i2)
3827        go to 440
3828 c khyperon end
3829 *
3830 csp11/03/01 La/Si-bar + N --> pi + K+
3831 c  La/Si + N-bar --> pi + K-
3832 5999     CONTINUE
3833         PX1CM=PCX
3834         PY1CM=PCY
3835         PZ1CM=PCZ
3836         EC=(em1+em2+0.02)**2
3837         sigkp = 15.
3838 c      if((lb1.ge.14.and.lb1.le.17)
3839 c     &    .or.(lb2.ge.14.and.lb2.le.17))sigkp=10.
3840         DSkk=SQRT(SIGKP/PI/10.)
3841         dskk0=dskk+0.1
3842         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3843      1  PX1CM,PY1CM,PZ1CM)
3844         IF(IC.EQ.-1) GO TO 400
3845 c
3846         CALL CRLAN(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
3847         em1=e(i1)
3848         em2=e(i2)
3849         go to 440
3850 c
3851 c*
3852 * K(K*) + K(K*) --> phi + pi(rho,omega)
3853 8699     CONTINUE
3854         PX1CM=PCX
3855         PY1CM=PCY
3856         PZ1CM=PCZ
3857         EC=(em1+em2+0.02)**2
3858 *  CALL CROSSKKPHI(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)  used for KK*->phi+rho
3859
3860          CALL Crkphi(PX1CM,PY1CM,PZ1CM,EC,SRT,IBLOCK,
3861      &                  emm1,emm2,lbp1,lbp2,I1,I2,ikk,icase,rrkk,prkk)
3862          if(icase .eq. 0) then
3863             iblock=0
3864             go to 400
3865          endif
3866
3867 c*---
3868          if(lbp1.eq.29.or.lbp2.eq.29) then
3869         PZRT = p(3,i1)+p(3,i2)
3870         ER1 = sqrt( p(1,i1)**2+p(2,i1)**2+p(3,i1)**2+E(i1)**2 )
3871         ER2 = sqrt( p(1,i2)**2+p(2,i2)**2+p(3,i2)**2+E(i2)**2 )
3872         ERT = ER1+ER2
3873         yy = 0.5*log( (ERT+PZRT)/(ERT-PZRT) )
3874 c*------
3875              iblock = 222
3876              ntag = 0
3877           endif
3878
3879              LB(I1) = lbp1
3880              LB(I2) = lbp2
3881              E(I1) = emm1
3882              E(I2) = emm2
3883              em1=e(i1)
3884              em2=e(i2)
3885              go to 440
3886 c*
3887 * rho(omega) + K(K*)  --> phi + K(K*)
3888 8799     CONTINUE
3889         PX1CM=PCX
3890         PY1CM=PCY
3891         PZ1CM=PCZ
3892         EC=(em1+em2+0.02)**2
3893 *  CALL CROSSKKPHI(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)  used for KK*->phi+rho
3894          CALL Crksph(PX1CM,PY1CM,PZ1CM,EC,SRT,
3895      &       emm1,emm2,lbp1,lbp2,I1,I2,ikkg,ikkl,iblock,icase,srhoks)
3896          if(icase .eq. 0) then
3897             iblock=0
3898             go to 400
3899          endif
3900 c
3901          if(lbp1.eq.29.or.lbp2.eq.20) then
3902 c*---
3903         PZRT = p(3,i1)+p(3,i2)
3904         ER1 = sqrt( p(1,i1)**2+p(2,i1)**2+p(3,i1)**2+E(i1)**2 )
3905         ER2 = sqrt( p(1,i2)**2+p(2,i2)**2+p(3,i2)**2+E(i2)**2 )
3906         ERT = ER1+ER2
3907         yy = 0.5*log( (ERT+PZRT)/(ERT-PZRT) )
3908           endif
3909
3910              LB(I1) = lbp1
3911              LB(I2) = lbp2
3912              E(I1) = emm1
3913              E(I2) = emm2
3914              em1=e(i1)
3915              em2=e(i2)
3916              go to 440
3917
3918 * for kaon+baryon scattering, using a constant xsection of 10 mb.
3919 888       CONTINUE
3920         PX1CM=PCX
3921         PY1CM=PCY
3922         PZ1CM=PCZ
3923         EC=(em1+em2+0.02)**2
3924          sig = 10.
3925          if(iabs(lb1).eq.14.or.iabs(lb2).eq.14 .or.
3926      &      iabs(lb1).eq.30.or.iabs(lb2).eq.30)sig=20.
3927          if(lb1.eq.29.or.lb2.eq.29)sig=5.0
3928
3929        DSkn=SQRT(sig/PI/10.)
3930        dsknr=dskn+0.1
3931         CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
3932      1  PX1CM,PY1CM,PZ1CM)
3933         IF(IC.EQ.-1) GO TO 400
3934         CALL Crkn(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3935      1  IBLOCK)
3936        em1=e(i1)
3937        em2=e(i2)
3938        go to 440
3939 ***
3940
3941  440    CONTINUE
3942 *                IBLOCK = 0 ; NOTHING HAS HAPPENED
3943 *                IBLOCK = 1 ; ELASTIC N-N COLLISION
3944 *                IBLOCK = 2 ; N + N -> N + DELTA
3945 *                IBLOCK = 3 ; N + DELTA -> N + N
3946 *                IBLOCK = 4 ; N + N -> d + d + PION,DIRECT PROCESS
3947 *               IBLOCK = 5 ; D(N*)+D(N*) COLLISIONS
3948 *                IBLOCK = 6 ; PION+PION COLLISIONS
3949 *                iblock = 7 ; pion+nucleon-->l/s+kaon
3950 *               iblock =77;  pion+nucleon-->delta+pion
3951 *               iblock = 8 ; kaon+baryon rescattering
3952 *                IBLOCK = 9 ; NN-->KAON+X
3953 *                IBLOCK = 10; DD-->KAON+X
3954 *               IBLOCK = 11; ND-->KAON+X
3955 cbali2/1/99
3956 *                
3957 *           iblock   - 1902 annihilation-->pion(+)+pion(-)   (2 pion)
3958 *           iblock   - 1903 annihilation-->pion(+)+rho(-)    (3 pion)
3959 *           iblock   - 1904 annihilation-->rho(+)+rho(-)     (4 pion)
3960 *           iblock   - 1905 annihilation-->rho(0)+omega      (5 pion)
3961 *           iblock   - 1906 annihilation-->omega+omega       (6 pion)
3962 cbali3/5/99
3963 *           iblock   - 1907 K+K- to pi+pi-
3964 cbali3/5/99 end
3965 cbz3/9/99 khyperon
3966 *           iblock   - 1908 K+Y -> piN
3967 cbz3/9/99 khyperon end
3968 cbali2/1/99end
3969
3970 clin-9/28/00 Processes: m(pi rho omega)+m(pi rho omega)
3971 c     to anti-(p n D N*1 N*2)+(p n D N*1 N*2):
3972 *           iblock   - 1801  mm -->pbar p 
3973 *           iblock   - 18021 mm -->pbar n 
3974 *           iblock   - 18022 mm -->nbar p 
3975 *           iblock   - 1803  mm -->nbar n 
3976 *           iblock   - 18041 mm -->pbar Delta 
3977 *           iblock   - 18042 mm -->anti-Delta p
3978 *           iblock   - 18051 mm -->nbar Delta 
3979 *           iblock   - 18052 mm -->anti-Delta n
3980 *           iblock   - 18061 mm -->pbar N*(1400) 
3981 *           iblock   - 18062 mm -->anti-N*(1400) p
3982 *           iblock   - 18071 mm -->nbar N*(1400)
3983 *           iblock   - 18072 mm -->anti-N*(1400) n
3984 *           iblock   - 1808  mm -->anti-Delta Delta 
3985 *           iblock   - 18091 mm -->pbar N*(1535)
3986 *           iblock   - 18092 mm -->anti-N*(1535) p
3987 *           iblock   - 18101 mm -->nbar N*(1535)
3988 *           iblock   - 18102 mm -->anti-N*(1535) n
3989 *           iblock   - 18111 mm -->anti-Delta N*(1440)
3990 *           iblock   - 18112 mm -->anti-N*(1440) Delta
3991 *           iblock   - 18121 mm -->anti-Delta N*(1535)
3992 *           iblock   - 18122 mm -->anti-N*(1535) Delta
3993 *           iblock   - 1813  mm -->anti-N*(1440) N*(1440)
3994 *           iblock   - 18141 mm -->anti-N*(1440) N*(1535)
3995 *           iblock   - 18142 mm -->anti-N*(1535) N*(1440)
3996 *           iblock   - 1815  mm -->anti-N*(1535) N*(1535)
3997 clin-9/28/00-end
3998
3999 clin-10/08/00 Processes: pi pi <-> rho rho
4000 *           iblock   - 1850  pi pi -> rho rho
4001 *           iblock   - 1851  rho rho -> pi pi
4002 clin-10/08/00-end
4003
4004 clin-08/14/02 Processes: pi pi <-> eta eta
4005 *           iblock   - 1860  pi pi -> eta eta
4006 *           iblock   - 1861  eta eta -> pi pi
4007 * Processes: pi pi <-> pi eta
4008 *           iblock   - 1870  pi pi -> pi eta
4009 *           iblock   - 1871  pi eta -> pi pi
4010 * Processes: rho pi <-> rho eta
4011 *           iblock   - 1880  pi pi -> pi eta
4012 *           iblock   - 1881  pi eta -> pi pi
4013 * Processes: omega pi <-> omega eta
4014 *           iblock   - 1890  pi pi -> pi eta
4015 *           iblock   - 1891  pi eta -> pi pi
4016 * Processes: rho rho <-> eta eta
4017 *           iblock   - 1895  rho rho -> eta eta
4018 *           iblock   - 1896  eta eta -> rho rho
4019 clin-08/14/02-end
4020
4021 clin-11/07/00 Processes: 
4022 *           iblock   - 366  pi rho -> K* Kbar or K*bar K
4023 *           iblock   - 466  pi rho <- K* Kbar or K*bar K
4024
4025 clin-9/2008 Deuteron:
4026 *           iblock   - 501  B+B -> Deuteron+Meson
4027 *           iblock   - 502  Deuteron+Meson -> B+B
4028 *           iblock   - 503  Deuteron+Baryon elastic
4029 *           iblock   - 504  Deuteron+Meson elastic
4030 c
4031                  IF(IBLOCK.EQ.0)        GOTO 400
4032 *COM: FOR DIRECT PROCESS WE HAVE TREATED THE PAULI BLOCKING AND FIND
4033 *     THE MOMENTUM OF PARTICLES IN THE ''LAB'' FRAME. SO GO TO 400
4034 * A COLLISION HAS TAKEN PLACE !!
4035               LCOLL = LCOLL +1
4036 * WAS COLLISION PAULI-FORBIDEN? IF YES, NTAG = -1
4037               NTAG = 0
4038 *
4039 *             LORENTZ-TRANSFORMATION INTO CMS FRAME
4040               E1CM    = SQRT (EM1**2 + PX1CM**2 + PY1CM**2 + PZ1CM**2)
4041               P1BETA  = PX1CM*BETAX + PY1CM*BETAY + PZ1CM*BETAZ
4042               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
4043               Pt1I1 = BETAX * TRANSF + PX1CM
4044               Pt2I1 = BETAY * TRANSF + PY1CM
4045               Pt3I1 = BETAZ * TRANSF + PZ1CM
4046 * negelect the pauli blocking at high energies
4047               go to 90002
4048
4049 clin-10/25/02-comment out following, since there is no path to it:
4050 c*CHECK IF PARTICLE #1 IS PAULI BLOCKED
4051 c              CALL PAULat(I1,occup)
4052 c              if (RANART(NSEED) .lt. occup) then
4053 c                ntag = -1
4054 c              else
4055 c                ntag = 0
4056 c              end if
4057 clin-10/25/02-end
4058
4059 90002              continue
4060 *IF PARTICLE #1 IS NOT PAULI BLOCKED
4061 c              IF (NTAG .NE. -1) THEN
4062                 E2CM    = SQRT (EM2**2 + PX1CM**2 + PY1CM**2 + PZ1CM**2)
4063                 TRANSF  = GAMMA * (-GAMMA*P1BETA / (GAMMA + 1.) + E2CM)
4064                 Pt1I2 = BETAX * TRANSF - PX1CM
4065                 Pt2I2 = BETAY * TRANSF - PY1CM
4066                 Pt3I2 = BETAZ * TRANSF - PZ1CM
4067               go to 90003
4068
4069 clin-10/25/02-comment out following, since there is no path to it:
4070 c*CHECK IF PARTICLE #2 IS PAULI BLOCKED
4071 c                CALL PAULat(I2,occup)
4072 c                if (RANART(NSEED) .lt. occup) then
4073 c                  ntag = -1
4074 c                else
4075 c                  ntag = 0
4076 c                end if
4077 cc              END IF
4078 c* IF COLLISION IS BLOCKED,RESTORE THE MOMENTUM,MASSES
4079 c* AND LABELS OF I1 AND I2
4080 cc             IF (NTAG .EQ. -1) THEN
4081 c                LBLOC  = LBLOC + 1
4082 c                P(1,I1) = PX1
4083 c                P(2,I1) = PY1
4084 c                P(3,I1) = PZ1
4085 c                P(1,I2) = PX2
4086 c                P(2,I2) = PY2
4087 c                P(3,I2) = PZ2
4088 c                E(I1)   = EM1
4089 c                E(I2)   = EM2
4090 c                LB(I1)  = LB1
4091 c                LB(I2)  = LB2
4092 cc              ELSE
4093 clin-10/25/02-end
4094
4095 90003           IF(IBLOCK.EQ.1) LCNNE=LCNNE+1
4096               IF(IBLOCK.EQ.5) LDD=LDD+1
4097                 if(iblock.eq.2) LCNND=LCNND+1
4098               IF(IBLOCK.EQ.8) LKN=LKN+1
4099                    if(iblock.eq.43) Ldou=Ldou+1
4100 c                IF(IBLOCK.EQ.2) THEN
4101 * CALCULATE THE AVERAGE SRT FOR N + N---> N + DELTA PROCESS
4102 C                NODELT=NODELT+1
4103 C                SUMSRT=SUMSRT+SRT
4104 c                ENDIF
4105                 IF(IBLOCK.EQ.3) LCNDN=LCNDN+1
4106 * assign final momenta to particles while keep the leadng particle
4107 * behaviour
4108 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
4109               p(1,i1)=pt1i1
4110               p(2,i1)=pt2i1
4111               p(3,i1)=pt3i1
4112               p(1,i2)=pt1i2
4113               p(2,i2)=pt2i2
4114               p(3,i2)=pt3i2
4115 C              else
4116 C              p(1,i1)=pt1i2
4117 C              p(2,i1)=pt2i2
4118 C              p(3,i1)=pt3i2
4119 C              p(1,i2)=pt1i1
4120 C              p(2,i2)=pt2i1
4121 C              p(3,i2)=pt3i1
4122 C              endif
4123                 PX1     = P(1,I1)
4124                 PY1     = P(2,I1)
4125                 PZ1     = P(3,I1)
4126                 EM1     = E(I1)
4127                 EM2     = E(I2)
4128                 LB1     = LB(I1)
4129                 LB2     = LB(I2)
4130                 ID(I1)  = 2
4131                 ID(I2)  = 2
4132                 E1      = SQRT( EM1**2 + PX1**2 + PY1**2 + PZ1**2 )
4133                 ID1     = ID(I1)
4134               go to 90004
4135 clin-10/25/02-comment out following, since there is no path to it:
4136 c* change phase space density FOR NUCLEONS INVOLVED :
4137 c* NOTE THAT f is the phase space distribution function for nucleons only
4138 c                if ((abs(ix1).le.mx) .and. (abs(iy1).le.my) .and.
4139 c     &              (abs(iz1).le.mz)) then
4140 c                  ipx1p = nint(p(1,i1)/dpx)
4141 c                  ipy1p = nint(p(2,i1)/dpy)
4142 c                  ipz1p = nint(p(3,i1)/dpz)
4143 c                  if ((ipx1p.ne.ipx1) .or. (ipy1p.ne.ipy1) .or.
4144 c     &                (ipz1p.ne.ipz1)) then
4145 c                    if ((abs(ipx1).le.mpx) .and. (abs(ipy1).le.my)
4146 c     &                .and. (ipz1.ge.-mpz) .and. (ipz1.le.mpzp)
4147 c     &                .AND. (AM1.LT.1.))
4148 c     &                f(ix1,iy1,iz1,ipx1,ipy1,ipz1) =
4149 c     &                f(ix1,iy1,iz1,ipx1,ipy1,ipz1) - 1.
4150 c                    if ((abs(ipx1p).le.mpx) .and. (abs(ipy1p).le.my)
4151 c     &                .and. (ipz1p.ge.-mpz).and. (ipz1p.le.mpzp)
4152 c     &                .AND. (EM1.LT.1.))
4153 c     &                f(ix1,iy1,iz1,ipx1p,ipy1p,ipz1p) =
4154 c     &                f(ix1,iy1,iz1,ipx1p,ipy1p,ipz1p) + 1.
4155 c                  end if
4156 c                end if
4157 c                if ((abs(ix2).le.mx) .and. (abs(iy2).le.my) .and.
4158 c     &              (abs(iz2).le.mz)) then
4159 c                  ipx2p = nint(p(1,i2)/dpx)
4160 c                  ipy2p = nint(p(2,i2)/dpy)
4161 c                  ipz2p = nint(p(3,i2)/dpz)
4162 c                  if ((ipx2p.ne.ipx2) .or. (ipy2p.ne.ipy2) .or.
4163 c     &                (ipz2p.ne.ipz2)) then
4164 c                    if ((abs(ipx2).le.mpx) .and. (abs(ipy2).le.my)
4165 c     &                .and. (ipz2.ge.-mpz) .and. (ipz2.le.mpzp)
4166 c     &                .AND. (AM2.LT.1.))
4167 c     &                f(ix2,iy2,iz2,ipx2,ipy2,ipz2) =
4168 c     &                f(ix2,iy2,iz2,ipx2,ipy2,ipz2) - 1.
4169 c                    if ((abs(ipx2p).le.mpx) .and. (abs(ipy2p).le.my)
4170 c     &                .and. (ipz2p.ge.-mpz) .and. (ipz2p.le.mpzp)
4171 c     &                .AND. (EM2.LT.1.))
4172 c     &                f(ix2,iy2,iz2,ipx2p,ipy2p,ipz2p) =
4173 c     &                f(ix2,iy2,iz2,ipx2p,ipy2p,ipz2p) + 1.
4174 c                  end if
4175 c                end if
4176 clin-10/25/02-end
4177
4178 90004              continue
4179             AM1=EM1
4180             AM2=EM2
4181 c            END IF
4182
4183
4184   400       CONTINUE
4185 c
4186 clin-6/10/03 skips the info output on resonance creations:
4187 c            goto 550
4188 cclin-4/30/03 study phi,K*,Lambda(1520) resonances at creation:
4189 cc     note that no decays give these particles, so don't need to consider nnn:
4190 c            if(iblock.ne.0.and.(lb(i1).eq.29.or.iabs(lb(i1)).eq.30
4191 c     1           .or.lb(i2).eq.29.or.iabs(lb(i2)).eq.30
4192 c     2           .or.lb1i.eq.29.or.iabs(lb1i).eq.30
4193 c     3           .or.lb2i.eq.29.or.iabs(lb2i).eq.30)) then
4194 c               lb1now=lb(i1)
4195 c               lb2now=lb(i2)
4196 cc
4197 c               nphi0=0
4198 c               nksp0=0
4199 c               nksm0=0
4200 cc               nlar0=0
4201 cc               nlarbar0=0
4202 c               if(lb1i.eq.29) then
4203 c                  nphi0=nphi0+1
4204 c               elseif(lb1i.eq.30) then
4205 c                  nksp0=nksp0+1
4206 c               elseif(lb1i.eq.-30) then
4207 c                  nksm0=nksm0+1
4208 c               endif
4209 c               if(lb2i.eq.29) then
4210 c                  nphi0=nphi0+1
4211 c               elseif(lb2i.eq.30) then
4212 c                  nksp0=nksp0+1
4213 c               elseif(lb2i.eq.-30) then
4214 c                  nksm0=nksm0+1
4215 c               endif
4216 cc
4217 c               nphi=0
4218 c               nksp=0
4219 c               nksm=0
4220 c               nlar=0
4221 c               nlarbar=0
4222 c               if(lb1now.eq.29) then
4223 c                  nphi=nphi+1
4224 c               elseif(lb1now.eq.30) then
4225 c                  nksp=nksp+1
4226 c               elseif(lb1now.eq.-30) then
4227 c                  nksm=nksm+1
4228 c               endif
4229 c               if(lb2now.eq.29) then
4230 c                  nphi=nphi+1
4231 c               elseif(lb2now.eq.30) then
4232 c                  nksp=nksp+1
4233 c               elseif(lb2now.eq.-30) then
4234 c                  nksm=nksm+1
4235 c               endif
4236 cc     
4237 c               if(nphi.eq.2.or.nksp.eq.2.or.nksm.eq.2) then
4238 c                  write(91,*) '2 same resonances in one reaction!'
4239 c                  write(91,*) nphi,nksp,nksm,iblock
4240 c               endif
4241 c
4242 cc     All reactions create or destroy no more than 1 these resonance,
4243 cc     otherwise file "fort.91" warns us:
4244 c               do 222 ires=1,3
4245 c                  if(ires.eq.1.and.nphi.ne.nphi0) then
4246 c                     idr=29
4247 c                  elseif(ires.eq.2.and.nksp.ne.nksp0) then
4248 c                     idr=30
4249 c                  elseif(ires.eq.3.and.nksm.ne.nksm0) then
4250 c                     idr=-30
4251 c                  else
4252 c                     goto 222
4253 c                  endif
4254 cctest off for resonance (phi, K*) studies:
4255 cc               if(lb1now.eq.idr) then
4256 cc       write(17,112) 'collision',lb1now,P(1,I1),P(2,I1),P(3,I1),e(I1),nt
4257 cc               elseif(lb2now.eq.idr) then
4258 cc       write(17,112) 'collision',lb2now,P(1,I2),P(2,I2),P(3,I2),e(I2),nt
4259 cc               elseif(lb1i.eq.idr) then
4260 cc       write(18,112) 'collision',lb1i,px1i,py1i,pz1i,em1i,nt
4261 cc               elseif(lb2i.eq.idr) then
4262 cc       write(18,112) 'collision',lb2i,px2i,py2i,pz2i,em2i,nt
4263 cc               endif
4264 c 222           continue
4265 c
4266 c            else
4267 c            endif
4268 cc 112        format(a10,I4,4(1x,f9.3),1x,I4)
4269 c
4270 clin-2/26/03 skips the check of energy conservation after each binary search:
4271 c 550        goto 555
4272 c            pxfin=0
4273 c            pyfin=0
4274 c            pzfin=0
4275 c            efin=0
4276 c            if(e(i1).ne.0.or.lb(i1).eq.10022) then
4277 c               efin=efin+SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
4278 c               pxfin=pxfin+P(1,I1)
4279 c               pyfin=pyfin+P(2,I1)
4280 c               pzfin=pzfin+P(3,I1)
4281 c            endif
4282 c            if(e(i2).ne.0.or.lb(i2).eq.10022) then
4283 c               efin=efin+SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
4284 c               pxfin=pxfin+P(1,I2)
4285 c               pyfin=pyfin+P(2,I2)
4286 c               pzfin=pzfin+P(3,I2)
4287 c            endif
4288 c            if((nnn-nnnini).ge.1) then
4289 c               do imore=nnnini+1,nnn
4290 c                  if(EPION(imore,IRUN).ne.0) then
4291 c                     efin=efin+SQRT(EPION(imore,IRUN)**2
4292 c     1                    +PPION(1,imore,IRUN)**2+PPION(2,imore,IRUN)**2
4293 c     2                    +PPION(3,imore,IRUN)**2)
4294 c                     pxfin=pxfin+PPION(1,imore,IRUN)
4295 c                     pyfin=pyfin+PPION(2,imore,IRUN)
4296 c                     pzfin=pzfin+PPION(3,imore,IRUN)
4297 c                  endif
4298 c               enddo
4299 c            endif
4300 c            devio=sqrt((pxfin-pxini)**2+(pyfin-pyini)**2
4301 c     1           +(pzfin-pzini)**2+(efin-eini)**2)
4302 cc
4303 c            if(devio.ge.0.1) then
4304 c               write(92,'a20,5(1x,i6),2(1x,f8.3)') 'iblock,lb,npi=',
4305 c     1              iblock,lb1i,lb2i,lb(i1),lb(i2),e(i1),e(i2)
4306 c               do imore=nnnini+1,nnn
4307 c                  if(EPION(imore,IRUN).ne.0) then
4308 c                     write(92,'a10,2(1x,i6)') 'ipi,lbm=',
4309 c     1                    imore,LPION(imore,IRUN)
4310 c                  endif
4311 c               enddo
4312 c               write(92,'a3,4(1x,f8.3)') 'I:',eini,pxini,pyini,pzini
4313 c               write(92,'a3,5(1x,f8.3)') 
4314 c     1              'F:',efin,pxfin,pyfin,pzfin,devio
4315 c            endif
4316 c
4317  555        continue
4318 ctest off only one collision for the same 2 particles in the same timestep:
4319 c            if(iblock.ne.0) then
4320 c               goto 800
4321 c            endif
4322 ctest off collisions history:
4323 c            if(iblock.ne.0) then 
4324 c               write(10,*) nt,i1,i2,iblock,x1,z1,x2,z2
4325 c            endif
4326
4327   600     CONTINUE
4328   800   CONTINUE
4329 * RELABLE MESONS LEFT IN THIS RUN EXCLUDING THOSE BEING CREATED DURING
4330 * THIS TIME STEP AND COUNT THE TOTAL NO. OF PARTICLES IN THIS RUN
4331 * note that the first mass=mta+mpr particles are baryons
4332 c        write(*,*)'I: NNN,massr ', nnn,massr(irun)
4333         N0=MASS+MSUM
4334         DO 1005 N=N0+1,MASSR(IRUN)+MSUM
4335 cbz11/25/98
4336 clin-2/19/03 lb>5000: keep particles with no LB codes in ART(photon,lepton,..):
4337 c        IF(E(N).GT.0.)THEN
4338         IF(E(N) .GT. 0. .OR. LB(N) .GT. 5000)THEN
4339 cbz11/25/98end
4340         NNN=NNN+1
4341         RPION(1,NNN,IRUN)=R(1,N)
4342         RPION(2,NNN,IRUN)=R(2,N)
4343         RPION(3,NNN,IRUN)=R(3,N)
4344 clin-10/28/03:
4345         if(nt.eq.ntmax) then
4346            ftpisv(NNN,IRUN)=ftsv(N)
4347            tfdpi(NNN,IRUN)=tfdcy(N)
4348         endif
4349 c
4350         PPION(1,NNN,IRUN)=P(1,N)
4351         PPION(2,NNN,IRUN)=P(2,N)
4352         PPION(3,NNN,IRUN)=P(3,N)
4353         EPION(NNN,IRUN)=E(N)
4354         LPION(NNN,IRUN)=LB(N)
4355 c       !! sp 12/19/00
4356         PROPI(NNN,IRUN)=PROPER(N)
4357 clin-5/2008:
4358         dppion(NNN,IRUN)=dpertp(N)
4359 c        if(lb(n) .eq. 45)
4360 c    &   write(*,*)'IN-1  NT,NNN,LB,P ',nt,NNN,lb(n),proper(n)
4361         ENDIF
4362  1005 CONTINUE
4363         MASSRN(IRUN)=NNN+MASS
4364 c        write(*,*)'F: NNN,massrn ', nnn,massrn(irun)
4365 1000   CONTINUE
4366 * CALCULATE THE AVERAGE SRT FOR N + N--->N +DELTA PROCESSES
4367 C        IF(NODELT.NE.0)THEN
4368 C        AVSRT=SUMSRT/FLOAT(NODELT)
4369 C        ELSE
4370 C        AVSRT=0.
4371 C        ENDIF
4372 C        WRITE(1097,'(F8.2,2X,E10.3)')FLOAT(NT)*DT,AVSRT
4373 * RELABLE ALL THE PARTICLES EXISTING AFTER THIS TIME STEP
4374         IA=0
4375         IB=0
4376         DO 10001 IRUN=1,NUM
4377         IA=IA+MASSR(IRUN-1)
4378         IB=IB+MASSRN(IRUN-1)
4379         DO 10001 IC=1,MASSRN(IRUN)
4380         IE=IA+IC
4381         IG=IB+IC
4382         IF(IC.LE.MASS)THEN
4383         RT(1,IG)=R(1,IE)
4384         RT(2,IG)=R(2,IE)
4385         RT(3,IG)=R(3,IE)
4386 clin-10/28/03:
4387         if(nt.eq.ntmax) then
4388            fttemp(IG)=ftsv(IE)
4389            tft(IG)=tfdcy(IE)
4390         endif
4391 c
4392         PT(1,IG)=P(1,IE)
4393         PT(2,IG)=P(2,IE)
4394         PT(3,IG)=P(3,IE)
4395         ET(IG)=E(IE)
4396         LT(IG)=LB(IE)
4397         PROT(IG)=PROPER(IE)
4398 clin-5/2008:
4399         dptemp(IG)=dpertp(IE)
4400         ELSE
4401         I0=IC-MASS
4402         RT(1,IG)=RPION(1,I0,IRUN)
4403         RT(2,IG)=RPION(2,I0,IRUN)
4404         RT(3,IG)=RPION(3,I0,IRUN)
4405 clin-10/28/03:
4406         if(nt.eq.ntmax) then
4407            fttemp(IG)=ftpisv(I0,IRUN)
4408            tft(IG)=tfdpi(I0,IRUN)
4409         endif
4410 c
4411         PT(1,IG)=PPION(1,I0,IRUN)
4412         PT(2,IG)=PPION(2,I0,IRUN)
4413         PT(3,IG)=PPION(3,I0,IRUN)
4414         ET(IG)=EPION(I0,IRUN)
4415         LT(IG)=LPION(I0,IRUN)
4416         PROT(IG)=PROPI(I0,IRUN)
4417 clin-5/2008:
4418         dptemp(IG)=dppion(I0,IRUN)
4419         ENDIF
4420 10001   CONTINUE
4421 c
4422         IL=0
4423 clin-10/26/01-hbt:
4424 c        DO 10002 IRUN=1,NUM
4425         DO 10003 IRUN=1,NUM
4426
4427         MASSR(IRUN)=MASSRN(IRUN)
4428         IL=IL+MASSR(IRUN-1)
4429         DO 10002 IM=1,MASSR(IRUN)
4430         IN=IL+IM
4431         R(1,IN)=RT(1,IN)
4432         R(2,IN)=RT(2,IN)
4433         R(3,IN)=RT(3,IN)
4434 clin-10/28/03:
4435         if(nt.eq.ntmax) then
4436            ftsv(IN)=fttemp(IN)
4437            tfdcy(IN)=tft(IN)
4438         endif
4439         P(1,IN)=PT(1,IN)
4440         P(2,IN)=PT(2,IN)
4441         P(3,IN)=PT(3,IN)
4442         E(IN)=ET(IN)
4443         LB(IN)=LT(IN)
4444         PROPER(IN)=PROT(IN)
4445 clin-5/2008:
4446         dpertp(IN)=dptemp(IN)
4447        IF(LB(IN).LT.1.OR.LB(IN).GT.2)ID(IN)=0
4448 10002   CONTINUE
4449 clin-ctest off check energy conservation after each timestep
4450 c         enetot=0.
4451 c         do ip=1,MASSR(IRUN)
4452 c            if(e(ip).ne.0.or.lb(ip).eq.10022) enetot=enetot
4453 c     1           +sqrt(p(1,ip)**2+p(2,ip)**2+p(3,ip)**2+e(ip)**2)
4454 c         enddo
4455 c         write(91,*) 'B:',nt,enetot,massr(irun),bimp 
4456 clin-3/2009 move to the end of a timestep to take care of freezeout spacetime:
4457 c        call hbtout(MASSR(IRUN),nt,ntmax)
4458 10003 CONTINUE
4459 c
4460       RETURN
4461       END
4462 ****************************************
4463             SUBROUTINE CMS(I1,I2,PX1CM,PY1CM,PZ1CM,SRT)
4464 * PURPOSE : FIND THE MOMENTA OF PARTICLES IN THE CMS OF THE
4465 *          TWO COLLIDING PARTICLES
4466 * VARIABLES :
4467 *****************************************
4468             PARAMETER (MAXSTR=150001)
4469             COMMON   /AA/  R(3,MAXSTR)
4470 cc      SAVE /AA/
4471             COMMON   /BB/  P(3,MAXSTR)
4472 cc      SAVE /BB/
4473             COMMON   /CC/  E(MAXSTR)
4474 cc      SAVE /CC/
4475             COMMON   /BG/  BETAX,BETAY,BETAZ,GAMMA
4476 cc      SAVE /BG/
4477       SAVE   
4478             PX1=P(1,I1)
4479             PY1=P(2,I1)
4480             PZ1=P(3,I1)
4481             PX2=P(1,I2)
4482             PY2=P(2,I2)
4483             PZ2=P(3,I2)
4484             EM1=E(I1)
4485             EM2=E(I2)
4486             E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
4487             E2=SQRT(EM2**2 + PX2**2 + PY2**2 + PZ2**2 )
4488             S=(E1+E2)**2-(PX1+PX2)**2-(PY1+PY2)**2-(PZ1+PZ2)**2
4489             SRT=SQRT(S)
4490 *LORENTZ-TRANSFORMATION IN I1-I2-C.M. SYSTEM
4491               ETOTAL = E1 + E2
4492               BETAX  = (PX1+PX2) / ETOTAL
4493               BETAY  = (PY1+PY2) / ETOTAL
4494               BETAZ  = (PZ1+PZ2) / ETOTAL
4495               GAMMA  = 1.0 / SQRT(1.0-BETAX**2-BETAY**2-BETAZ**2)
4496 *TRANSFORMATION OF MOMENTA (PX1CM = - PX2CM)
4497               P1BETA = PX1*BETAX + PY1*BETAY + PZ1 * BETAZ
4498               TRANSF = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) - E1 )
4499               PX1CM  = BETAX * TRANSF + PX1
4500               PY1CM  = BETAY * TRANSF + PY1
4501               PZ1CM  = BETAZ * TRANSF + PZ1
4502               RETURN
4503               END
4504 ***************************************
4505             SUBROUTINE DISTCE(I1,I2,DELTAR,DS,DT,EC,SRT
4506      1      ,IC,PX1CM,PY1CM,PZ1CM)
4507 * PURPOSE : CHECK IF THE COLLISION BETWEEN TWO PARTICLES CAN HAPPEN
4508 *           BY CHECKING
4509 *                      (1) IF THE DISTANCE BETWEEN THEM IS SMALLER
4510 *           THAN THE MAXIMUM DISTANCE DETERMINED FROM THE CROSS SECTION.
4511 *                      (2) IF PARTICLE WILL PASS EACH OTHER WITHIN
4512 *           TWO HARD CORE RADIUS.
4513 *                      (3) IF PARTICLES WILL GET CLOSER.
4514 * VARIABLES :
4515 *           IC=1 COLLISION HAPPENED
4516 *           IC=-1 COLLISION CAN NOT HAPPEN
4517 *****************************************
4518             PARAMETER (MAXSTR=150001)
4519             COMMON   /AA/  R(3,MAXSTR)
4520 cc      SAVE /AA/
4521             COMMON   /BB/  P(3,MAXSTR)
4522 cc      SAVE /BB/
4523             COMMON   /CC/  E(MAXSTR)
4524 cc      SAVE /CC/
4525             COMMON   /BG/  BETAX,BETAY,BETAZ,GAMMA
4526             COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
4527 cc      SAVE /BG/
4528             common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
4529      1           px1n,py1n,pz1n,dp1n
4530             common /dpi/em2,lb2
4531             SAVE   
4532             IC=0
4533             X1=R(1,I1)
4534             Y1=R(2,I1)
4535             Z1=R(3,I1)
4536             PX1=P(1,I1)
4537             PY1=P(2,I1)
4538             PZ1=P(3,I1)
4539             X2=R(1,I2)
4540             Y2=R(2,I2)
4541             Z2=R(3,I2)
4542             PX2=P(1,I2)
4543             PY2=P(2,I2)
4544             PZ2=P(3,I2)
4545             EM1=E(I1)
4546             EM2=E(I2)
4547             E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
4548 c            IF (ABS(X1-X2) .GT. DELTAR) GO TO 400
4549 c            IF (ABS(Y1-Y2) .GT. DELTAR) GO TO 400
4550 c            IF (ABS(Z1-Z2) .GT. DELTAR) GO TO 400
4551             RSQARE = (X1-X2)**2 + (Y1-Y2)**2 + (Z1-Z2)**2
4552             IF (RSQARE .GT. DELTAR**2) GO TO 400
4553 *NOW PARTICLES ARE CLOSE ENOUGH TO EACH OTHER !
4554               E2     = SQRT ( EM2**2 + PX2**2 + PY2**2 + PZ2**2 )
4555               S      = SRT*SRT
4556             IF (S .LT. EC) GO TO 400
4557 *NOW THERE IS ENOUGH ENERGY AVAILABLE !
4558 *LORENTZ-TRANSFORMATION IN I1-I2-C.M. SYSTEM
4559 * BETAX, BETAY, BETAZ AND GAMMA HAVE BEEN GIVEN IN THE SUBROUTINE CMS
4560 *TRANSFORMATION OF MOMENTA (PX1CM = - PX2CM)
4561               P1BETA = PX1*BETAX + PY1*BETAY + PZ1 * BETAZ
4562               TRANSF = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) - E1 )
4563               PRCM   = SQRT (PX1CM**2 + PY1CM**2 + PZ1CM**2)
4564               IF (PRCM .LE. 0.00001) GO TO 400
4565 *TRANSFORMATION OF SPATIAL DISTANCE
4566               DRBETA = BETAX*(X1-X2) + BETAY*(Y1-Y2) + BETAZ*(Z1-Z2)
4567               TRANSF = GAMMA * GAMMA * DRBETA / (GAMMA + 1)
4568               DXCM   = BETAX * TRANSF + X1 - X2
4569               DYCM   = BETAY * TRANSF + Y1 - Y2
4570               DZCM   = BETAZ * TRANSF + Z1 - Z2
4571 *DETERMINING IF THIS IS THE POINT OF CLOSEST APPROACH
4572               DRCM   = SQRT (DXCM**2  + DYCM**2  + DZCM**2 )
4573               DZZ    = (PX1CM*DXCM + PY1CM*DYCM + PZ1CM*DZCM) / PRCM
4574               if ((drcm**2 - dzz**2) .le. 0.) then
4575                 BBB = 0.
4576               else
4577                 BBB    = SQRT (DRCM**2 - DZZ**2)
4578               end if
4579 *WILL PARTICLE PASS EACH OTHER WITHIN 2 * HARD CORE RADIUS ?
4580               IF (BBB .GT. DS) GO TO 400
4581               RELVEL = PRCM * (1.0/E1 + 1.0/E2)
4582               DDD    = RELVEL * DT * 0.5
4583 *WILL PARTICLES GET CLOSER ?
4584               IF (ABS(DDD) .LT. ABS(DZZ)) GO TO 400
4585               IC=1
4586               GO TO 500
4587 400           IC=-1
4588 500           CONTINUE
4589               RETURN
4590               END
4591 ****************************************
4592 *                                                                      *
4593 *                                                                      *
4594       SUBROUTINE CRNN(IRUN,PX,PY,PZ,SRT,I1,I2,IBLOCK,
4595      1NTAG,SIGNN,SIG,NT,ipert1)
4596 *     PURPOSE:                                                         *
4597 *             DEALING WITH NUCLEON-NUCLEON COLLISIONS                    *
4598 *     NOTE   :                                                         *
4599 *     QUANTITIES:                                                 *
4600 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
4601 *           SRT      - SQRT OF S                                       *
4602 *           NSTAR =1 INCLUDING N* RESORANCE,ELSE NOT                   *
4603 *           NDIRCT=1 INCLUDING DIRECT PION PRODUCTION PROCESS         *
4604 *           IBLOCK   - THE INFORMATION BACK                            *
4605 *                      0-> COLLISION CANNOT HAPPEN                     *
4606 *                      1-> N-N ELASTIC COLLISION                       *
4607 *                      2-> N+N->N+DELTA,OR N+N->N+N* REACTION          *
4608 *                      3-> N+DELTA->N+N OR N+N*->N+N REACTION          *
4609 *                      4-> N+N->D+D+pion reaction
4610 *                     43->N+N->D(N*)+D(N*) reaction
4611 *                     44->N+N->D+D+rho reaction
4612 *                     45->N+N->N+N+rho
4613 *                     46->N+N->N+N+omega
4614 *           N12       - IS USED TO SPECIFY BARYON-BARYON REACTION      *
4615 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
4616 *                      N12,                                            *
4617 *                      M12=1 FOR p+n-->delta(+)+ n                     *
4618 *                          2     p+n-->delta(0)+ p                     *
4619 *                          3     p+p-->delta(++)+n                     *
4620 *                          4     p+p-->delta(+)+p                      *
4621 *                          5     n+n-->delta(0)+n                      *
4622 *                          6     n+n-->delta(-)+p                      *
4623 *                          7     n+p-->N*(0)(1440)+p                   *
4624 *                          8     n+p-->N*(+)(1440)+n                   *
4625 *                        9     p+p-->N*(+)(1535)+p                     *
4626 *                        10    n+n-->N*(0)(1535)+n                     *
4627 *                         11    n+p-->N*(+)(1535)+n                     *
4628 *                        12    n+p-->N*(0)(1535)+p
4629 *                        13    D(++)+D(-)-->N*(+)(1440)+n
4630 *                         14    D(++)+D(-)-->N*(0)(1440)+p
4631 *                        15    D(+)+D(0)--->N*(+)(1440)+n
4632 *                        16    D(+)+D(0)--->N*(0)(1440)+p
4633 *                        17    D(++)+D(0)-->N*(+)(1535)+p
4634 *                        18    D(++)+D(-)-->N*(0)(1535)+p
4635 *                        19    D(++)+D(-)-->N*(+)(1535)+n
4636 *                        20    D(+)+D(+)-->N*(+)(1535)+p
4637 *                        21    D(+)+D(0)-->N*(+)(1535)+n
4638 *                        22    D(+)+D(0)-->N*(0)(1535)+p
4639 *                        23    D(+)+D(-)-->N*(0)(1535)+n
4640 *                        24    D(0)+D(0)-->N*(0)(1535)+n
4641 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
4642 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
4643 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
4644 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
4645 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
4646 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
4647 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
4648 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
4649 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
4650 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
4651 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
4652 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
4653 *                        ++    see the note book for more listing
4654 *                     
4655 *
4656 *     NOTE ABOUT N*(1440) RESORANCE IN Nucleon+NUCLEON COLLISION:      * 
4657 *     As it has been discussed in VerWest's paper,I= 1(initial isospin)*
4658 *     channel can all be attributed to delta resorance while I= 0      *
4659 *     channel can all be  attribured to N* resorance.Only in n+p       *
4660 *     one can have I=0 channel so is the N*(1440) resonance            *
4661 *                                                                      *
4662 *                             REFERENCES:                            *    
4663 *                    J. CUGNON ET AL., NUCL. PHYS. A352, 505 (1981)    *
4664 *                    Y. KITAZOE ET AL., PHYS. LETT. 166B, 35 (1986)    *
4665 *                    B. VerWest el al., PHYS. PRV. C25 (1982)1979      *
4666 *                    Gy. Wolf  et al, Nucl Phys A517 (1990) 615;       *
4667 *                                     Nucl phys A552 (1993) 349.       *
4668 **********************************
4669         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
4670      1  AMP=0.93828,AP1=0.13496,aka=0.498,AP2=0.13957,AM0=1.232,
4671      2  PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383,APHI=1.020)
4672         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
4673         parameter (xmd=1.8756,npdmax=10000)
4674         COMMON /AA/ R(3,MAXSTR)
4675 cc      SAVE /AA/
4676         COMMON /BB/ P(3,MAXSTR)
4677 cc      SAVE /BB/
4678         COMMON /CC/ E(MAXSTR)
4679 cc      SAVE /CC/
4680         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
4681 cc      SAVE /EE/
4682         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
4683 cc      SAVE /ff/
4684         common /gg/ dx,dy,dz,dpx,dpy,dpz
4685 cc      SAVE /gg/
4686         COMMON /INPUT/ NSTAR,NDIRCT,DIR
4687 cc      SAVE /INPUT/
4688         COMMON /NN/NNN
4689 cc      SAVE /NN/
4690         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
4691 cc      SAVE /BG/
4692         COMMON   /RUN/NUM
4693 cc      SAVE /RUN/
4694         COMMON   /PA/RPION(3,MAXSTR,MAXR)
4695 cc      SAVE /PA/
4696         COMMON   /PB/PPION(3,MAXSTR,MAXR)
4697 cc      SAVE /PB/
4698         COMMON   /PC/EPION(MAXSTR,MAXR)
4699 cc      SAVE /PC/
4700         COMMON   /PD/LPION(MAXSTR,MAXR)
4701 cc      SAVE /PD/
4702         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
4703 cc      SAVE /TABLE/
4704         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
4705 cc      SAVE /input1/
4706       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
4707      1 px1n,py1n,pz1n,dp1n
4708 cc      SAVE /leadng/
4709       COMMON/RNDF77/NSEED
4710 cc      SAVE /RNDF77/
4711       common /dpi/em2,lb2
4712       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
4713      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
4714      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
4715       common /para8/ idpert,npertd,idxsec
4716       dimension ppd(3,npdmax),lbpd(npdmax)
4717       SAVE   
4718 *-----------------------------------------------------------------------
4719       n12=0
4720       m12=0
4721       IBLOCK=0
4722       NTAG=0
4723       EM1=E(I1)
4724       EM2=E(I2)
4725       PR=SQRT( PX**2 + PY**2 + PZ**2 )
4726       C2=PZ / PR
4727       X1=RANART(NSEED)
4728       ianti=0
4729       if(lb(i1).lt.0 .and. lb(i2).lt.0) ianti=1
4730       call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
4731 clin-5/2008 Production of perturbative deuterons for idpert=1:
4732       if(idpert.eq.1.and.ipert1.eq.1) then
4733          IF (SRT .LT. 2.012) RETURN
4734          if((iabs(lb(i1)).eq.1.or.iabs(lb(i1)).eq.2)
4735      1        .and.(iabs(lb(i2)).eq.1.or.iabs(lb(i2)).eq.2)) then
4736             goto 108
4737          else
4738             return
4739          endif
4740       endif
4741 c
4742 *-----------------------------------------------------------------------
4743 *COM: TEST FOR ELASTIC SCATTERING (EITHER N-N OR DELTA-DELTA 0R
4744 *      N-DELTA OR N*-N* or N*-Delta)
4745 c      IF (X1 .LE. SIGNN/SIG) THEN
4746       IF (X1.LE.(SIGNN/SIG)) THEN
4747 *COM:  PARAMETRISATION IS TAKEN FROM THE CUGNON-PAPER
4748          AS  = ( 3.65 * (SRT - 1.8766) )**6
4749          A   = 6.0 * AS / (1.0 + AS)
4750          TA  = -2.0 * PR**2
4751          X   = RANART(NSEED)
4752 clin-10/24/02        T1  = DLOG( (1-X) * DEXP(dble(A)*dble(TA)) + X )  /  A
4753          T1  = sngl(DLOG(dble(1.-X)*DEXP(dble(A)*dble(TA))+dble(X)))/  A
4754          C1  = 1.0 - T1/TA
4755          T1  = 2.0 * PI * RANART(NSEED)
4756          IBLOCK=1
4757          GO TO 107
4758       ELSE
4759 *COM: TEST FOR INELASTIC SCATTERING
4760 *     IF THE AVAILABLE ENERGY IS LESS THAN THE PION-MASS, NOTHING
4761 *     CAN HAPPEN ANY MORE ==> RETURN (2.012 = 2*AVMASS + PI-MASS)
4762 clin-5/2008: Mdeuteron+Mpi=2.0106 to 2.0152 GeV/c2, so we can still use this:
4763          IF (SRT .LT. 2.012) RETURN
4764 *     calculate the N*(1535) production cross section in N+N collisions
4765 *     note that the cross sections in this subroutine are in units of mb
4766 *     as only ratios of the cross sections are used to determine the
4767 *     reaction channels
4768        call N1535(iabs(lb(i1)),iabs(lb(i2)),srt,x1535)
4769 *COM: HERE WE HAVE A PROCESS N+N ==> N+DELTA,OR N+N==>N+N*(144) or N*(1535)
4770 *     OR 
4771 * 3 pi channel : N+N==>d1+d2+PION
4772        SIG3=3.*(X3pi(SRT)+x33pi(srt))
4773 * 2 pi channel : N+N==>d1+d2+d1*n*+n*n*
4774        SIG4=4.*X2pi(srt)
4775 * 4 pi channel : N+N==>d1+d2+rho
4776        s4pi=x4pi(srt)
4777 * N+N-->NN+rho channel
4778        srho=xrho(srt)
4779 * N+N-->NN+omega
4780        somega=omega(srt)
4781 * CROSS SECTION FOR KAON PRODUCTION from the four channels
4782 * for NLK channel
4783        akp=0.498
4784        ak0=0.498
4785        ana=0.94
4786        ada=1.232
4787        al=1.1157
4788        as=1.1197
4789        xsk1=0
4790        xsk2=0
4791        xsk3=0
4792        xsk4=0
4793        xsk5=0
4794        t1nlk=ana+al+akp
4795        if(srt.le.t1nlk)go to 222
4796        XSK1=1.5*PPLPK(SRT)
4797 * for DLK channel
4798        t1dlk=ada+al+akp
4799        t2dlk=ada+al-akp
4800        if(srt.le.t1dlk)go to 222
4801        es=srt
4802        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
4803        pmdlk=sqrt(pmdlk2)
4804        XSK3=1.5*PPLPK(srt)
4805 * for NSK channel
4806        t1nsk=ana+as+akp
4807        t2nsk=ana+as-akp
4808        if(srt.le.t1nsk)go to 222
4809        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
4810        pmnsk=sqrt(pmnsk2)
4811        XSK2=1.5*(PPK1(srt)+PPK0(srt))
4812 * for DSK channel
4813        t1DSk=aDa+aS+akp
4814        t2DSk=aDa+aS-akp
4815        if(srt.le.t1dsk)go to 222
4816        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
4817        pmDSk=sqrt(pmDSk2)
4818        XSK4=1.5*(PPK1(srt)+PPK0(srt))
4819 csp11/21/01
4820 c phi production
4821        if(srt.le.(2.*amn+aphi))go to 222
4822 c  !! mb put the correct form
4823        xsk5 = 0.0001
4824 csp11/21/01 end
4825 c
4826 * THE TOTAL KAON+ PRODUCTION CROSS SECTION IS THEN
4827  222   SIGK=XSK1+XSK2+XSK3+XSK4
4828
4829 cbz3/7/99 neutralk
4830         XSK1 = 2.0 * XSK1
4831         XSK2 = 2.0 * XSK2
4832         XSK3 = 2.0 * XSK3
4833         XSK4 = 2.0 * XSK4
4834         SIGK = 2.0 * SIGK + xsk5
4835 cbz3/7/99 neutralk end
4836 c
4837 ** FOR P+P or L/S+L/S COLLISION:
4838 c       lb1=lb(i1)
4839 c       lb2=lb(i2)
4840         lb1=iabs(lb(i1))
4841         lb2=iabs(lb(i2))
4842         IF((LB(I1)*LB(I2).EQ.1).or.
4843      &       ((lb1.le.17.and.lb1.ge.14).and.(lb2.le.17.and.lb2.ge.14)).
4844      &       or.((lb1.le.2).and.(lb2.le.17.and.lb2.ge.14)).
4845      &       or.((lb2.le.2).and.(lb1.le.17.and.lb1.ge.14)))THEN
4846 clin-8/2008 PP->d+meson here:
4847            IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
4848            SIG1=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
4849            SIG2=1.5*SIGMA(SRT,1,1,1)
4850            SIGND=SIG1+SIG2+SIG3+SIG4+X1535+SIGK+s4pi+srho+somega
4851 clin-5/2008:
4852 c           IF (X1.GT.(SIGNN+SIGND)/SIG)RETURN
4853            IF (X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
4854            DIR=SIG3/SIGND
4855            IF(RANART(NSEED).LE.DIR)GO TO 106
4856            IF(RANART(NSEED).LE.SIGK/(SIGK+X1535+SIG4+SIG2+SIG1
4857      &          +s4pi+srho+somega))GO TO 306
4858            if(RANART(NSEED).le.s4pi/(x1535+sig4+sig2+sig1
4859      &          +s4pi+srho+somega))go to 307
4860            if(RANART(NSEED).le.srho/(x1535+sig4+sig2+sig1
4861      &          +srho+somega))go to 308
4862            if(RANART(NSEED).le.somega/(x1535+sig4+sig2+sig1
4863      &          +somega))go to 309
4864            if(RANART(NSEED).le.x1535/(sig1+sig2+sig4+x1535))then
4865 * N*(1535) production
4866               N12=9
4867            ELSE 
4868               IF(RANART(NSEED).LE.SIG4/(SIG1+sig2+sig4))THEN
4869 * DOUBLE DELTA PRODUCTION
4870                  N12=66
4871                  GO TO 1012
4872               else
4873 *DELTA PRODUCTION
4874                  N12=3
4875                  IF (RANART(NSEED).GT.SIG1/(SIG1+SIG2))N12=4
4876               ENDIF
4877            endif
4878            GO TO 1011
4879         ENDIF
4880 ** FOR N+N COLLISION:
4881         IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
4882 clin-8/2008 NN->d+meson here:
4883            IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
4884            SIG1=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
4885            SIG2=1.5*SIGMA(SRT,1,1,1)
4886            SIGND=SIG1+SIG2+X1535+SIG3+SIG4+SIGK+s4pi+srho+somega
4887 clin-5/2008:
4888 c           IF (X1.GT.(SIGNN+SIGND)/SIG)RETURN
4889            IF (X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
4890            dir=sig3/signd
4891            IF(RANART(NSEED).LE.DIR)GO TO 106
4892            IF(RANART(NSEED).LE.SIGK/(SIGK+X1535+SIG4+SIG2+SIG1
4893      &          +s4pi+srho+somega))GO TO 306
4894            if(RANART(NSEED).le.s4pi/(x1535+sig4+sig2+sig1
4895      &          +s4pi+srho+somega))go to 307
4896            if(RANART(NSEED).le.srho/(x1535+sig4+sig2+sig1
4897      &          +srho+somega))go to 308
4898            if(RANART(NSEED).le.somega/(x1535+sig4+sig2+sig1
4899      &          +somega))go to 309
4900            IF(RANART(NSEED).LE.X1535/(x1535+sig1+sig2+sig4))THEN
4901 * N*(1535) PRODUCTION
4902               N12=10
4903            ELSE 
4904               if(RANART(NSEED).le.sig4/(sig1+sig2+sig4))then
4905 * double delta production
4906                  N12=67
4907                  GO TO 1013
4908               else
4909 * DELTA PRODUCTION
4910                  N12=6
4911                  IF (RANART(NSEED).GT.SIG1/(SIG1+SIG2))N12=5
4912               ENDIF
4913            endif
4914            GO TO 1011
4915         ENDIF
4916 ** FOR N+P COLLISION
4917         IF(LB(I1)*LB(I2).EQ.2)THEN
4918 clin-5/2008 NP->d+meson here:
4919            IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
4920            SIG1=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
4921            IF(NSTAR.EQ.1)THEN
4922               SIG2=(3./4.)*SIGMA(SRT,2,0,1)
4923            ELSE
4924               SIG2=0.
4925            ENDIF
4926            SIGND=2.*(SIG1+SIG2+X1535)+sig3+sig4+SIGK+s4pi+srho+somega
4927 clin-5/2008:
4928 c           IF (X1.GT.(SIGNN+SIGND)/SIG)RETURN
4929            IF (X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
4930            dir=sig3/signd
4931            IF(RANART(NSEED).LE.DIR)GO TO 106
4932            IF(RANART(NSEED).LE.SIGK/(SIGND-SIG3))GO TO 306
4933            if(RANART(NSEED).le.s4pi/(signd-sig3-sigk))go to 307
4934            if(RANART(NSEED).le.srho/(signd-sig3-sigk-s4pi))go to 308
4935            if(RANART(NSEED).le.somega/(signd-sig3-sigk-s4pi-srho))
4936      1          go to 309
4937            IF(RANART(NSEED).LT.X1535/(SIG1+SIG2+X1535+0.5*sig4))THEN
4938 * N*(1535) PRODUCTION
4939               N12=11
4940               IF(RANART(NSEED).LE.0.5)N12=12
4941            ELSE 
4942               if(RANART(NSEED).le.sig4/(sig4+2.*(sig1+sig2)))then
4943 * double resonance production
4944                  N12=68
4945                  GO TO 1014
4946               else
4947                  IF(RANART(NSEED).LE.SIG1/(SIG1+SIG2))THEN
4948 * DELTA PRODUCTION
4949                     N12=2
4950                     IF(RANART(NSEED).GE.0.5)N12=1
4951                  ELSE
4952 * N*(1440) PRODUCTION
4953                     N12=8
4954                     IF(RANART(NSEED).GE.0.5)N12=7
4955                  ENDIF
4956               ENDIF
4957            ENDIF
4958         endif
4959  1011   iblock=2
4960         CONTINUE
4961 *PARAMETRIZATION OF THE SHAPE OF THE DELTA RESONANCE ACCORDING
4962 *     TO kitazoe's or J.D.JACKSON'S MASS FORMULA AND BREIT WIGNER
4963 *     FORMULA FOR N* RESORANCE
4964 *     DETERMINE DELTA MASS VIA REJECTION METHOD.
4965           DMAX = SRT - AVMASS-0.005
4966           DMAX = SRT - AVMASS-0.005
4967           DMIN = 1.078
4968                    IF(N12.LT.7)THEN
4969 * Delta(1232) production
4970           IF(DMAX.LT.1.232) THEN
4971           FM=FDE(DMAX,SRT,0.)
4972           ELSE
4973
4974 clin-10/25/02 get rid of argument usage mismatch in FDE():
4975              xdmass=1.232
4976 c          FM=FDE(1.232,SRT,1.)
4977           FM=FDE(xdmass,SRT,1.)
4978 clin-10/25/02-end
4979
4980           ENDIF
4981           IF(FM.EQ.0.)FM=1.E-09
4982           NTRY1=0
4983 10        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
4984           NTRY1=NTRY1+1
4985           IF((RANART(NSEED) .GT. FDE(DM,SRT,1.)/FM).AND.
4986      1    (NTRY1.LE.30)) GOTO 10
4987
4988 clin-2/26/03 limit the Delta mass below a certain value 
4989 c     (here taken as its central value + 2* B-W fullwidth):
4990           if(dm.gt.1.47) goto 10
4991
4992               GO TO 13
4993               ENDIF
4994                    IF((n12.eq.7).or.(n12.eq.8))THEN
4995 * N*(1440) production
4996           IF(DMAX.LT.1.44) THEN
4997           FM=FNS(DMAX,SRT,0.)
4998           ELSE
4999
5000 clin-10/25/02 get rid of argument usage mismatch in FNS():
5001              xdmass=1.44
5002 c          FM=FNS(1.44,SRT,1.)
5003           FM=FNS(xdmass,SRT,1.)
5004 clin-10/25/02-end
5005
5006           ENDIF
5007           IF(FM.EQ.0.)FM=1.E-09
5008           NTRY2=0
5009 11        DM=RANART(NSEED)*(DMAX-DMIN)+DMIN
5010           NTRY2=NTRY2+1
5011           IF((RANART(NSEED).GT.FNS(DM,SRT,1.)/FM).AND.
5012      1    (NTRY2.LE.10)) GO TO 11
5013
5014 clin-2/26/03 limit the N* mass below a certain value 
5015 c     (here taken as its central value + 2* B-W fullwidth):
5016           if(dm.gt.2.14) goto 11
5017
5018               GO TO 13
5019               ENDIF
5020                     IF(n12.ge.17)then
5021 * N*(1535) production
5022           IF(DMAX.LT.1.535) THEN
5023           FM=FD5(DMAX,SRT,0.)
5024           ELSE
5025
5026 clin-10/25/02 get rid of argument usage mismatch in FNS():
5027              xdmass=1.535
5028 c          FM=FD5(1.535,SRT,1.)
5029           FM=FD5(xdmass,SRT,1.)
5030 clin-10/25/02-end
5031
5032           ENDIF
5033           IF(FM.EQ.0.)FM=1.E-09
5034           NTRY1=0
5035 12        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
5036           NTRY1=NTRY1+1
5037           IF((RANART(NSEED) .GT. FD5(DM,SRT,1.)/FM).AND.
5038      1    (NTRY1.LE.10)) GOTO 12
5039
5040 clin-2/26/03 limit the N* mass below a certain value 
5041 c     (here taken as its central value + 2* B-W fullwidth):
5042           if(dm.gt.1.84) goto 12
5043
5044          GO TO 13
5045              ENDIF
5046 * CALCULATE THE MASSES OF BARYON RESONANCES IN THE DOUBLE RESONANCE
5047 * PRODUCTION PROCESS AND RELABLE THE PARTICLES
5048 1012       iblock=43
5049        call Rmasdd(srt,1.232,1.232,1.08,
5050      &  1.08,ISEED,1,dm1,dm2)
5051        call Rmasdd(srt,1.232,1.44,1.08,
5052      &  1.08,ISEED,3,dm1n,dm2n)
5053        IF(N12.EQ.66)THEN
5054 *(1) PP-->DOUBLE RESONANCES
5055 * DETERMINE THE FINAL STATE
5056        XFINAL=RANART(NSEED)
5057        IF(XFINAL.LE.0.25)THEN
5058 * (1.1) D+++D0 
5059        LB(I1)=9
5060        LB(I2)=7
5061        e(i1)=dm1
5062        e(i2)=dm2
5063        GO TO 200
5064 * go to 200 to set the new momentum
5065        ENDIF
5066        IF((XFINAL.gt.0.25).and.(xfinal.le.0.5))THEN
5067 * (1.2) D++D+
5068        LB(I1)=8
5069        LB(I2)=8
5070        e(i1)=dm1
5071        e(i2)=dm2
5072        GO TO 200
5073 * go to 200 to set the new momentum
5074        ENDIF
5075        IF((XFINAL.gt.0.5).and.(xfinal.le.0.75))THEN
5076 * (1.3) D+++N*0 
5077        LB(I1)=9
5078        LB(I2)=10
5079        e(i1)=dm1n
5080        e(i2)=dm2n
5081        GO TO 200
5082 * go to 200 to set the new momentum
5083        ENDIF
5084        IF(XFINAL.gt.0.75)then
5085 * (1.4) D++N*+ 
5086        LB(I1)=8
5087        LB(I2)=11
5088        e(i1)=dm1n
5089        e(i2)=dm2n
5090        GO TO 200
5091 * go to 200 to set the new momentum
5092        ENDIF
5093        ENDIF
5094 1013       iblock=43
5095        call Rmasdd(srt,1.232,1.232,1.08,
5096      &  1.08,ISEED,1,dm1,dm2)
5097        call Rmasdd(srt,1.232,1.44,1.08,
5098      &  1.08,ISEED,3,dm1n,dm2n)
5099        IF(N12.EQ.67)THEN
5100 *(2) NN-->DOUBLE RESONANCES
5101 * DETERMINE THE FINAL STATE
5102        XFINAL=RANART(NSEED)
5103        IF(XFINAL.LE.0.25)THEN
5104 * (2.1) D0+D0 
5105        LB(I1)=7
5106        LB(I2)=7
5107        e(i1)=dm1
5108        e(i2)=dm2
5109        GO TO 200
5110 * go to 200 to set the new momentum
5111         ENDIF
5112        IF((XFINAL.gt.0.25).and.(xfinal.le.0.5))THEN
5113 * (2.2) D++D+
5114        LB(I1)=6
5115        LB(I2)=8
5116        e(i1)=dm1
5117        e(i2)=dm2
5118        GO TO 200
5119 * go to 200 to set the new momentum
5120        ENDIF
5121        IF((XFINAL.gt.0.5).and.(xfinal.le.0.75))THEN
5122 * (2.3) D0+N*0 
5123        LB(I1)=7
5124        LB(I2)=10
5125        e(i1)=dm1n
5126        e(i2)=dm2n
5127        GO TO 200
5128 * go to 200 to set the new momentum
5129        ENDIF
5130        IF(XFINAL.gt.0.75)then
5131 * (2.4) D++N*+ 
5132        LB(I1)=8
5133        LB(I2)=11
5134        e(i1)=dm1n
5135        e(i2)=dm2n
5136        GO TO 200
5137 * go to 200 to set the new momentum
5138        ENDIF
5139        ENDIF
5140 1014       iblock=43
5141        call Rmasdd(srt,1.232,1.232,1.08,
5142      &  1.08,ISEED,1,dm1,dm2)
5143        call Rmasdd(srt,1.232,1.44,1.08,
5144      &  1.08,ISEED,3,dm1n,dm2n)
5145        IF(N12.EQ.68)THEN
5146 *(3) NP-->DOUBLE RESONANCES
5147 * DETERMINE THE FINAL STATE
5148        XFINAL=RANART(NSEED)
5149        IF(XFINAL.LE.0.25)THEN
5150 * (3.1) D0+D+ 
5151        LB(I1)=7
5152        LB(I2)=8
5153        e(i1)=dm1
5154        e(i2)=dm2
5155        GO TO 200
5156 * go to 200 to set the new momentum
5157        ENDIF
5158        IF((XFINAL.gt.0.25).and.(xfinal.le.0.5))THEN
5159 * (3.2) D+++D-
5160        LB(I1)=9
5161        LB(I2)=6
5162        e(i1)=dm1
5163        e(i2)=dm2
5164        GO TO 200
5165 * go to 200 to set the new momentum
5166        ENDIF
5167        IF((XFINAL.gt.0.5).and.(xfinal.le.0.75))THEN
5168 * (3.3) D0+N*+ 
5169        LB(I1)=7
5170        LB(I2)=11
5171        e(i1)=dm1n
5172        e(i2)=dm2n
5173        GO TO 200
5174 * go to 200 to set the new momentum
5175        ENDIF
5176        IF(XFINAL.gt.0.75)then
5177 * (3.4) D++N*0
5178        LB(I1)=8
5179        LB(I2)=10
5180        e(i1)=dm1n
5181        e(i2)=dm2n
5182        GO TO 200
5183 * go to 200 to set the new momentum
5184        ENDIF
5185        ENDIF
5186 13       CONTINUE
5187 *-------------------------------------------------------
5188 * RELABLE BARYON I1 AND I2
5189 *1. p+n-->delta(+)+n
5190           IF(N12.EQ.1)THEN
5191           IF(iabs(LB(I1)).EQ.1)THEN
5192           LB(I2)=2
5193           LB(I1)=8
5194           E(I1)=DM
5195           ELSE
5196           LB(I1)=2
5197           LB(I2)=8
5198           E(I2)=DM
5199           ENDIF
5200          GO TO 200
5201           ENDIF
5202 *2 p+n-->delta(0)+p
5203           IF(N12.EQ.2)THEN
5204           IF(iabs(LB(I1)).EQ.2)THEN
5205           LB(I2)=1
5206           LB(I1)=7
5207           E(I1)=DM
5208           ELSE
5209           LB(I1)=1
5210           LB(I2)=7
5211           E(I2)=DM
5212           ENDIF
5213          GO TO 200
5214           ENDIF
5215 *3 p+p-->delta(++)+n
5216           IF(N12.EQ.3)THEN
5217           LB(I1)=9
5218           E(I1)=DM
5219           LB(I2)=2
5220           E(I2)=AMN
5221          GO TO 200
5222           ENDIF
5223 *4 p+p-->delta(+)+p
5224           IF(N12.EQ.4)THEN
5225           LB(I2)=1
5226           LB(I1)=8
5227           E(I1)=DM
5228          GO TO 200
5229           ENDIF
5230 *5 n+n--> delta(0)+n
5231           IF(N12.EQ.5)THEN
5232           LB(I2)=2
5233           LB(I1)=7
5234           E(I1)=DM
5235          GO TO 200
5236           ENDIF
5237 *6 n+n--> delta(-)+p
5238           IF(N12.EQ.6)THEN
5239           LB(I1)=6
5240           E(I1)=DM
5241           LB(I2)=1
5242           E(I2)=AMP
5243          GO TO 200
5244           ENDIF
5245 *7 n+p--> N*(0)+p
5246           IF(N12.EQ.7)THEN
5247           IF(iabs(LB(I1)).EQ.1)THEN
5248           LB(I1)=1
5249           LB(I2)=10
5250           E(I2)=DM
5251           ELSE
5252           LB(I2)=1
5253           LB(I1)=10
5254           E(I1)=DM
5255           ENDIF
5256          GO TO 200
5257           ENDIF
5258 *8 n+p--> N*(+)+n
5259           IF(N12.EQ.8)THEN
5260           IF(iabs(LB(I1)).EQ.1)THEN
5261           LB(I2)=2
5262           LB(I1)=11
5263           E(I1)=DM
5264           ELSE
5265           LB(I1)=2
5266           LB(I2)=11
5267           E(I2)=DM
5268           ENDIF
5269          GO TO 200
5270           ENDIF
5271 *9 p+p--> N*(+)(1535)+p
5272           IF(N12.EQ.9)THEN
5273           IF(RANART(NSEED).le.0.5)THEN
5274           LB(I2)=1
5275           LB(I1)=13
5276           E(I1)=DM
5277           ELSE
5278           LB(I1)=1
5279           LB(I2)=13
5280           E(I2)=DM
5281           ENDIF
5282          GO TO 200
5283           ENDIF
5284 *10 n+n--> N*(0)(1535)+n
5285           IF(N12.EQ.10)THEN
5286           IF(RANART(NSEED).le.0.5)THEN
5287           LB(I2)=2
5288           LB(I1)=12
5289           E(I1)=DM
5290           ELSE
5291           LB(I1)=2
5292           LB(I2)=12
5293           E(I2)=DM
5294           ENDIF
5295          GO TO 200
5296           ENDIF
5297 *11 n+p--> N*(+)(1535)+n
5298           IF(N12.EQ.11)THEN
5299           IF(iabs(LB(I1)).EQ.2)THEN
5300           LB(I1)=2
5301           LB(I2)=13
5302           E(I2)=DM
5303           ELSE
5304           LB(I2)=2
5305           LB(I1)=13
5306           E(I1)=DM
5307           ENDIF
5308          GO TO 200
5309           ENDIF
5310 *12 n+p--> N*(0)(1535)+p
5311           IF(N12.EQ.12)THEN
5312           IF(iabs(LB(I1)).EQ.1)THEN
5313           LB(I1)=1
5314           LB(I2)=12
5315           E(I2)=DM
5316           ELSE
5317           LB(I2)=1
5318           LB(I1)=12
5319           E(I1)=DM
5320           ENDIF
5321           ENDIF
5322          endif
5323 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
5324 * ENERGY CONSERVATION
5325 200       EM1=E(I1)
5326           EM2=E(I2)
5327           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
5328      1                - 4.0 * (EM1*EM2)**2
5329           IF(PR2.LE.0.)PR2=1.e-09
5330           PR=SQRT(PR2)/(2.*SRT)
5331               if(srt.le.2.14)C1= 1.0 - 2.0 * RANART(NSEED)
5332          if(srt.gt.2.14.and.srt.le.2.4)c1=ang(srt,iseed)
5333          if(srt.gt.2.4)then
5334
5335 clin-10/25/02 get rid of argument usage mismatch in PTR():
5336              xptr=0.33*pr
5337 c         cc1=ptr(0.33*pr,iseed)
5338              cc1=ptr(xptr,iseed)
5339 clin-10/25/02-end
5340
5341          c1=sqrt(pr**2-cc1**2)/pr
5342          endif
5343           T1   = 2.0 * PI * RANART(NSEED)
5344        if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
5345          lb(i1) = -lb(i1)
5346          lb(i2) = -lb(i2)
5347        endif
5348           GO TO 107
5349 *FOR THE NN-->D1+D2+PI PROCESS, FIND MOMENTUM OF THE FINAL TWO
5350 *DELTAS AND PION IN THE NUCLEUS-NUCLEUS CMS.
5351 106     CONTINUE
5352            NTRY1=0
5353 123        CALL DDP2(SRT,ISEED,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
5354      &  PPX,PPY,PPZ,icou1)
5355        NTRY1=NTRY1+1
5356        if((icou1.lt.0).AND.(NTRY1.LE.40))GO TO 123
5357 C       if(icou1.lt.0)return
5358 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
5359        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
5360        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
5361        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
5362                 NNN=NNN+1
5363 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
5364 * (1) FOR P+P
5365               XDIR=RANART(NSEED)
5366                 IF(LB(I1)*LB(I2).EQ.1)THEN
5367                 IF(XDIR.Le.0.2)then
5368 * (1.1)P+P-->D+++D0+PION(0)
5369                 LPION(NNN,IRUN)=4
5370                 EPION(NNN,IRUN)=AP1
5371               LB(I1)=9
5372               LB(I2)=7
5373        GO TO 205
5374                 ENDIF
5375 * (1.2)P+P -->D++D+PION(0)
5376                 IF((XDIR.LE.0.4).AND.(XDIR.GT.0.2))THEN
5377                 LPION(NNN,IRUN)=4
5378                 EPION(NNN,IRUN)=AP1
5379                 LB(I1)=8
5380                 LB(I2)=8
5381        GO TO 205
5382               ENDIF 
5383 * (1.3)P+P-->D+++D+PION(-)
5384                 IF((XDIR.LE.0.6).AND.(XDIR.GT.0.4))THEN
5385                 LPION(NNN,IRUN)=3
5386                 EPION(NNN,IRUN)=AP2
5387                 LB(I1)=9
5388                 LB(I2)=8
5389        GO TO 205
5390               ENDIF 
5391                 IF((XDIR.LE.0.8).AND.(XDIR.GT.0.6))THEN
5392                 LPION(NNN,IRUN)=5
5393                 EPION(NNN,IRUN)=AP2
5394                 LB(I1)=9
5395                 LB(I2)=6
5396        GO TO 205
5397               ENDIF 
5398                 IF(XDIR.GT.0.8)THEN
5399                 LPION(NNN,IRUN)=5
5400                 EPION(NNN,IRUN)=AP2
5401                 LB(I1)=7
5402                 LB(I2)=8
5403        GO TO 205
5404               ENDIF 
5405                ENDIF
5406 * (2)FOR N+N
5407                 IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
5408                 IF(XDIR.Le.0.2)then
5409 * (2.1)N+N-->D++D-+PION(0)
5410                 LPION(NNN,IRUN)=4
5411                 EPION(NNN,IRUN)=AP1
5412               LB(I1)=6
5413               LB(I2)=7
5414        GO TO 205
5415                 ENDIF
5416 * (2.2)N+N -->D+++D-+PION(-)
5417                 IF((XDIR.LE.0.4).AND.(XDIR.GT.0.2))THEN
5418                 LPION(NNN,IRUN)=3
5419                 EPION(NNN,IRUN)=AP2
5420                 LB(I1)=6
5421                 LB(I2)=9
5422        GO TO 205
5423               ENDIF 
5424 * (2.3)P+P-->D0+D-+PION(+)
5425                 IF((XDIR.GT.0.4).AND.(XDIR.LE.0.6))THEN
5426                 LPION(NNN,IRUN)=5
5427                 EPION(NNN,IRUN)=AP2
5428                 LB(I1)=9
5429                 LB(I2)=8
5430        GO TO 205
5431               ENDIF 
5432 * (2.4)P+P-->D0+D0+PION(0)
5433                 IF((XDIR.GT.0.6).AND.(XDIR.LE.0.8))THEN
5434                 LPION(NNN,IRUN)=4
5435                 EPION(NNN,IRUN)=AP1
5436                 LB(I1)=7
5437                 LB(I2)=7
5438        GO TO 205
5439               ENDIF 
5440 * (2.5)P+P-->D0+D++PION(-)
5441                 IF(XDIR.GT.0.8)THEN
5442                 LPION(NNN,IRUN)=3
5443                 EPION(NNN,IRUN)=AP2
5444                 LB(I1)=7
5445                 LB(I2)=8
5446        GO TO 205
5447               ENDIF 
5448               ENDIF
5449 * (3)FOR N+P
5450                 IF(LB(I1)*LB(I2).EQ.2)THEN
5451                 IF(XDIR.Le.0.17)then
5452 * (3.1)N+P-->D+++D-+PION(0)
5453                 LPION(NNN,IRUN)=4
5454                 EPION(NNN,IRUN)=AP1
5455               LB(I1)=6
5456               LB(I2)=9
5457        GO TO 205
5458                 ENDIF
5459 * (3.2)N+P -->D+++D0+PION(-)
5460                 IF((XDIR.LE.0.34).AND.(XDIR.GT.0.17))THEN
5461                 LPION(NNN,IRUN)=3
5462                 EPION(NNN,IRUN)=AP2
5463                 LB(I1)=7
5464                 LB(I2)=9
5465        GO TO 205
5466               ENDIF 
5467 * (3.3)N+P-->D++D-+PION(+)
5468                 IF((XDIR.GT.0.34).AND.(XDIR.LE.0.51))THEN
5469                 LPION(NNN,IRUN)=5
5470                 EPION(NNN,IRUN)=AP2
5471                 LB(I1)=7
5472                 LB(I2)=8
5473        GO TO 205
5474               ENDIF 
5475 * (3.4)N+P-->D++D++PION(-)
5476                 IF((XDIR.GT.0.51).AND.(XDIR.LE.0.68))THEN
5477                 LPION(NNN,IRUN)=3
5478                 EPION(NNN,IRUN)=AP2
5479                 LB(I1)=8
5480                 LB(I2)=8
5481        GO TO 205
5482               ENDIF 
5483 * (3.5)N+P-->D0+D++PION(0)
5484                 IF((XDIR.GT.0.68).AND.(XDIR.LE.0.85))THEN
5485                 LPION(NNN,IRUN)=4
5486                 EPION(NNN,IRUN)=AP2
5487                 LB(I1)=7
5488                 LB(I2)=8
5489        GO TO 205
5490               ENDIF 
5491 * (3.6)N+P-->D0+D0+PION(+)
5492                 IF(XDIR.GT.0.85)THEN
5493                 LPION(NNN,IRUN)=5
5494                 EPION(NNN,IRUN)=AP2
5495                 LB(I1)=7
5496                 LB(I2)=7
5497               ENDIF 
5498                 ENDIF
5499 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
5500 * NUCLEUS CMS. FRAME 
5501 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
5502 205           E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
5503               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
5504               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
5505               Pt1i1 = BETAX * TRANSF + PX3
5506               Pt2i1 = BETAY * TRANSF + PY3
5507               Pt3i1 = BETAZ * TRANSF + PZ3
5508              Eti1   = DM3
5509 c
5510              if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
5511                lb(i1) = -lb(i1)
5512                lb(i2) = -lb(i2)
5513                 if(LPION(NNN,IRUN) .eq. 3)then
5514                   LPION(NNN,IRUN)=5
5515                 elseif(LPION(NNN,IRUN) .eq. 5)then
5516                   LPION(NNN,IRUN)=3
5517                 endif
5518                endif
5519 c
5520              lb1=lb(i1)
5521 * FOR DELTA2
5522                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
5523                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
5524                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
5525                 Pt1I2 = BETAX * TRANSF + PX4
5526                 Pt2I2 = BETAY * TRANSF + PY4
5527                 Pt3I2 = BETAZ * TRANSF + PZ4
5528               EtI2   = DM4
5529               lb2=lb(i2)
5530 * assign delta1 and delta2 to i1 or i2 to keep the leadng particle
5531 * behaviour
5532 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
5533               p(1,i1)=pt1i1
5534               p(2,i1)=pt2i1
5535               p(3,i1)=pt3i1
5536               e(i1)=eti1
5537               lb(i1)=lb1
5538               p(1,i2)=pt1i2
5539               p(2,i2)=pt2i2
5540               p(3,i2)=pt3i2
5541               e(i2)=eti2
5542               lb(i2)=lb2
5543                 PX1     = P(1,I1)
5544                 PY1     = P(2,I1)
5545                 PZ1     = P(3,I1)
5546               EM1       = E(I1)
5547                 ID(I1)  = 2
5548                 ID(I2)  = 2
5549                 ID1     = ID(I1)
5550                 IBLOCK=4
5551 * GET PION'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
5552                 EPCM=SQRT(EPION(NNN,IRUN)**2+PPX**2+PPY**2+PPZ**2)
5553                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
5554                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
5555                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
5556                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
5557                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
5558 clin-5/2008:
5559                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
5560 clin-5/2008 do not allow smearing in position of produced particles 
5561 c     to avoid immediate reinteraction with the particle I1, I2 or themselves:
5562 c2002        X01 = 1.0 - 2.0 * RANART(NSEED)
5563 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
5564 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
5565 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2002
5566 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
5567 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
5568 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
5569                 RPION(1,NNN,IRUN)=R(1,I1)
5570                 RPION(2,NNN,IRUN)=R(2,I1)
5571                 RPION(3,NNN,IRUN)=R(3,I1)
5572 c
5573               go to 90005
5574 clin-5/2008 N+N->Deuteron+pi:
5575 *     FIND MOMENTUM OF THE FINAL PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
5576  108       CONTINUE
5577            if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
5578 c     For idpert=1: we produce npertd pert deuterons:
5579               ndloop=npertd
5580            elseif(idpert.eq.2.and.npertd.ge.1) then
5581 c     For idpert=2: we first save information for npertd pert deuterons;
5582 c     at the last ndloop we create the regular deuteron+pi 
5583 c     and those pert deuterons:
5584               ndloop=npertd+1
5585            else
5586 c     Just create the regular deuteron+pi:
5587               ndloop=1
5588            endif
5589 c
5590            dprob1=sdprod/sig/float(npertd)
5591            do idloop=1,ndloop
5592               CALL bbdangle(pxd,pyd,pzd,nt,ipert1,ianti,idloop,pfinal,
5593      1 dprob1,lbm)
5594               CALL ROTATE(PX,PY,PZ,PXd,PYd,PZd)
5595 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
5596 *     FROM THE NN CMS FRAME INTO THE GLOBAL CMS FRAME:
5597 *     For the Deuteron:
5598               xmass=xmd
5599               E1dCM=SQRT(xmass**2+PXd**2+PYd**2+PZd**2)
5600               P1dBETA=PXd*BETAX+PYd*BETAY+PZd*BETAZ
5601               TRANSF=GAMMA*(GAMMA*P1dBETA/(GAMMA+1.)+E1dCM)
5602               pxi1=BETAX*TRANSF+PXd
5603               pyi1=BETAY*TRANSF+PYd
5604               pzi1=BETAZ*TRANSF+PZd
5605               if(ianti.eq.0)then
5606                  lbd=42
5607               else
5608                  lbd=-42
5609               endif
5610               if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
5611 cccc  Perturbative production for idpert=1:
5612                  nnn=nnn+1
5613                  PPION(1,NNN,IRUN)=pxi1
5614                  PPION(2,NNN,IRUN)=pyi1
5615                  PPION(3,NNN,IRUN)=pzi1
5616                  EPION(NNN,IRUN)=xmd
5617                  LPION(NNN,IRUN)=lbd
5618                  RPION(1,NNN,IRUN)=R(1,I1)
5619                  RPION(2,NNN,IRUN)=R(2,I1)
5620                  RPION(3,NNN,IRUN)=R(3,I1)
5621 clin-5/2008 assign the perturbative probability:
5622                  dppion(NNN,IRUN)=sdprod/sig/float(npertd)
5623               elseif(idpert.eq.2.and.idloop.le.npertd) then
5624 clin-5/2008 For idpert=2, we produce NPERTD perturbative (anti)deuterons 
5625 c     only when a regular (anti)deuteron+pi is produced in NN collisions.
5626 c     First save the info for the perturbative deuterons:
5627                  ppd(1,idloop)=pxi1
5628                  ppd(2,idloop)=pyi1
5629                  ppd(3,idloop)=pzi1
5630                  lbpd(idloop)=lbd
5631               else
5632 cccc  Regular production:
5633 c     For the regular pion: do LORENTZ-TRANSFORMATION:
5634                  E(i1)=xmm
5635                  E2piCM=SQRT(xmm**2+PXd**2+PYd**2+PZd**2)
5636                  P2piBETA=-PXd*BETAX-PYd*BETAY-PZd*BETAZ
5637                  TRANSF=GAMMA*(GAMMA*P2piBETA/(GAMMA+1.)+E2piCM)
5638                  pxi2=BETAX*TRANSF-PXd
5639                  pyi2=BETAY*TRANSF-PYd
5640                  pzi2=BETAZ*TRANSF-PZd
5641                  p(1,i1)=pxi2
5642                  p(2,i1)=pyi2
5643                  p(3,i1)=pzi2
5644 c     Remove regular pion to check the equivalence 
5645 c     between the perturbative and regular deuteron results:
5646 c                 E(i1)=0.
5647 c
5648                  LB(I1)=lbm
5649                  PX1=P(1,I1)
5650                  PY1=P(2,I1)
5651                  PZ1=P(3,I1)
5652                  EM1=E(I1)
5653                  ID(I1)=2
5654                  ID1=ID(I1)
5655                  E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
5656                  lb1=lb(i1)
5657 c     For the regular deuteron:
5658                  p(1,i2)=pxi1
5659                  p(2,i2)=pyi1
5660                  p(3,i2)=pzi1
5661                  lb(i2)=lbd
5662                  lb2=lb(i2)
5663                  E(i2)=xmd
5664                  EtI2=E(I2)
5665                  ID(I2)=2
5666 c     For idpert=2: create the perturbative deuterons:
5667                  if(idpert.eq.2.and.idloop.eq.ndloop) then
5668                     do ipertd=1,npertd
5669                        nnn=nnn+1
5670                        PPION(1,NNN,IRUN)=ppd(1,ipertd)
5671                        PPION(2,NNN,IRUN)=ppd(2,ipertd)
5672                        PPION(3,NNN,IRUN)=ppd(3,ipertd)
5673                        EPION(NNN,IRUN)=xmd
5674                        LPION(NNN,IRUN)=lbpd(ipertd)
5675                        RPION(1,NNN,IRUN)=R(1,I1)
5676                        RPION(2,NNN,IRUN)=R(2,I1)
5677                        RPION(3,NNN,IRUN)=R(3,I1)
5678 clin-5/2008 assign the perturbative probability:
5679                        dppion(NNN,IRUN)=1./float(npertd)
5680                     enddo
5681                  endif
5682               endif
5683            enddo
5684            IBLOCK=501
5685            go to 90005
5686 clin-5/2008 N+N->Deuteron+pi over
5687 * FOR THE NN-->KAON+X PROCESS, FIND MOMENTUM OF THE FINAL PARTICLES IN 
5688 * THE NUCLEUS-NUCLEUS CMS.
5689 306     CONTINUE
5690 csp11/21/01 phi production
5691               if(XSK5/sigK.gt.RANART(NSEED))then
5692               pz1=p(3,i1)
5693               pz2=p(3,i2)
5694                 LB(I1) = 1 + int(2 * RANART(NSEED))
5695                 LB(I2) = 1 + int(2 * RANART(NSEED))
5696               nnn=nnn+1
5697                 LPION(NNN,IRUN)=29
5698                 EPION(NNN,IRUN)=APHI
5699                 iblock = 222
5700               GO TO 208
5701                ENDIF
5702 c
5703                  IBLOCK=9
5704                  if(ianti .eq. 1)iblock=-9
5705 c
5706               pz1=p(3,i1)
5707               pz2=p(3,i2)
5708 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
5709               nnn=nnn+1
5710                 LPION(NNN,IRUN)=23
5711                 EPION(NNN,IRUN)=Aka
5712               if(srt.le.2.63)then
5713 * only lambda production is possible
5714 * (1.1)P+P-->p+L+kaon+
5715               ic=1
5716                 LB(I1) = 1 + int(2 * RANART(NSEED))
5717               LB(I2)=14
5718               GO TO 208
5719                 ENDIF
5720        if(srt.le.2.74.and.srt.gt.2.63)then
5721 * both Lambda and sigma production are possible
5722               if(XSK1/(XSK1+XSK2).gt.RANART(NSEED))then
5723 * lambda production
5724               ic=1
5725                 LB(I1) = 1 + int(2 * RANART(NSEED))
5726               LB(I2)=14
5727               else
5728 * sigma production
5729                 LB(I1) = 1 + int(2 * RANART(NSEED))
5730                 LB(I2) = 15 + int(3 * RANART(NSEED))
5731               ic=2
5732               endif
5733               GO TO 208
5734        endif
5735        if(srt.le.2.77.and.srt.gt.2.74)then
5736 * then pp-->Delta lamda kaon can happen
5737               if(xsk1/(xsk1+xsk2+xsk3).
5738      1          gt.RANART(NSEED))then
5739 * * (1.1)P+P-->p+L+kaon+
5740               ic=1
5741                 LB(I1) = 1 + int(2 * RANART(NSEED))
5742               LB(I2)=14
5743               go to 208
5744               else
5745               if(xsk2/(xsk2+xsk3).gt.RANART(NSEED))then
5746 * pp-->psk
5747               ic=2
5748                 LB(I1) = 1 + int(2 * RANART(NSEED))
5749                 LB(I2) = 15 + int(3 * RANART(NSEED))
5750               else
5751 * pp-->D+l+k        
5752               ic=3
5753                 LB(I1) = 6 + int(4 * RANART(NSEED))
5754               lb(i2)=14
5755               endif
5756               GO TO 208
5757               endif
5758        endif
5759        if(srt.gt.2.77)then
5760 * all four channels are possible
5761               if(xsk1/(xsk1+xsk2+xsk3+xsk4).gt.RANART(NSEED))then
5762 * p lambda k production
5763               ic=1
5764                 LB(I1) = 1 + int(2 * RANART(NSEED))
5765               LB(I2)=14
5766               go to 208
5767        else
5768           if(xsk3/(xsk2+xsk3+xsk4).gt.RANART(NSEED))then
5769 * delta l K production
5770               ic=3
5771                 LB(I1) = 6 + int(4 * RANART(NSEED))
5772               lb(i2)=14
5773               go to 208
5774           else
5775               if(xsk2/(xsk2+xsk4).gt.RANART(NSEED))then
5776 * n sigma k production
5777                    LB(I1) = 1 + int(2 * RANART(NSEED))
5778                    LB(I2) = 15 + int(3 * RANART(NSEED))
5779               ic=2
5780               else
5781               ic=4
5782                 LB(I1) = 6 + int(4 * RANART(NSEED))
5783                 LB(I2) = 15 + int(3 * RANART(NSEED))
5784               endif
5785               go to 208
5786           endif
5787        endif
5788        endif
5789 208             continue
5790          if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
5791           lb(i1) = - lb(i1)
5792           lb(i2) = - lb(i2)
5793           if(LPION(NNN,IRUN) .eq. 23)LPION(NNN,IRUN)=21
5794          endif
5795 * KEEP ALL COORDINATES OF PARTICLE 2 FOR POSSIBLE PHASE SPACE CHANGE
5796            NTRY1=0
5797 127        CALL BBKAON(ic,SRT,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
5798      &  PPX,PPY,PPZ,icou1)
5799        NTRY1=NTRY1+1
5800        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 127
5801 c       if(icou1.lt.0)return
5802 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
5803        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
5804        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
5805        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
5806 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
5807 * NUCLEUS CMS. FRAME 
5808 * (1) for the necleon/delta
5809 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
5810               E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
5811               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
5812               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
5813               Pt1i1 = BETAX * TRANSF + PX3
5814               Pt2i1 = BETAY * TRANSF + PY3
5815               Pt3i1 = BETAZ * TRANSF + PZ3
5816              Eti1   = DM3
5817              lbi1=lb(i1)
5818 * (2) for the lambda/sigma
5819                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
5820                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
5821                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
5822                 Pt1I2 = BETAX * TRANSF + PX4
5823                 Pt2I2 = BETAY * TRANSF + PY4
5824                 Pt3I2 = BETAZ * TRANSF + PZ4
5825               EtI2   = DM4
5826               lbi2=lb(i2)
5827 * GET the kaon'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
5828                 EPCM=SQRT(aka**2+PPX**2+PPY**2+PPZ**2)
5829                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
5830                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
5831                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
5832                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
5833                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
5834 clin-5/2008
5835                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
5836 clin-5/2008
5837 c2003        X01 = 1.0 - 2.0 * RANART(NSEED)
5838 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
5839 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
5840 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2003
5841 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
5842 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
5843 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
5844                 RPION(1,NNN,IRUN)=R(1,I1)
5845                 RPION(2,NNN,IRUN)=R(2,I1)
5846                 RPION(3,NNN,IRUN)=R(3,I1)
5847 c
5848 * assign the nucleon/delta and lambda/sigma to i1 or i2 to keep the 
5849 * leadng particle behaviour
5850 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
5851               p(1,i1)=pt1i1
5852               p(2,i1)=pt2i1
5853               p(3,i1)=pt3i1
5854               e(i1)=eti1
5855               lb(i1)=lbi1
5856               p(1,i2)=pt1i2
5857               p(2,i2)=pt2i2
5858               p(3,i2)=pt3i2
5859               e(i2)=eti2
5860               lb(i2)=lbi2
5861                 PX1     = P(1,I1)
5862                 PY1     = P(2,I1)
5863                 PZ1     = P(3,I1)
5864               EM1       = E(I1)
5865                 ID(I1)  = 2
5866                 ID(I2)  = 2
5867                 ID1     = ID(I1)
5868               go to 90005
5869 * FOR THE NN-->Delta+Delta+rho PROCESS, FIND MOMENTUM OF THE FINAL 
5870 * PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
5871 307     CONTINUE
5872            NTRY1=0
5873 125        CALL DDrho(SRT,ISEED,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
5874      &  PPX,PPY,PPZ,amrho,icou1)
5875        NTRY1=NTRY1+1
5876        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 125
5877 C       if(icou1.lt.0)return
5878 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
5879        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
5880        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
5881        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
5882                 NNN=NNN+1
5883               arho=amrho
5884 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
5885 * (1) FOR P+P
5886               XDIR=RANART(NSEED)
5887                 IF(LB(I1)*LB(I2).EQ.1)THEN
5888                 IF(XDIR.Le.0.2)then
5889 * (1.1)P+P-->D+++D0+rho(0)
5890                 LPION(NNN,IRUN)=26
5891                 EPION(NNN,IRUN)=Arho
5892               LB(I1)=9
5893               LB(I2)=7
5894        GO TO 2051
5895                 ENDIF
5896 * (1.2)P+P -->D++D+rho(0)
5897                 IF((XDIR.LE.0.4).AND.(XDIR.GT.0.2))THEN
5898                 LPION(NNN,IRUN)=26
5899                 EPION(NNN,IRUN)=Arho
5900                 LB(I1)=8
5901                 LB(I2)=8
5902        GO TO 2051
5903               ENDIF 
5904 * (1.3)P+P-->D+++D+arho(-)
5905                 IF((XDIR.LE.0.6).AND.(XDIR.GT.0.4))THEN
5906                 LPION(NNN,IRUN)=25
5907                 EPION(NNN,IRUN)=Arho
5908                 LB(I1)=9
5909                 LB(I2)=8
5910        GO TO 2051
5911               ENDIF 
5912                 IF((XDIR.LE.0.8).AND.(XDIR.GT.0.6))THEN
5913                 LPION(NNN,IRUN)=27
5914                 EPION(NNN,IRUN)=Arho
5915                 LB(I1)=9
5916                 LB(I2)=6
5917        GO TO 2051
5918               ENDIF 
5919                 IF(XDIR.GT.0.8)THEN
5920                 LPION(NNN,IRUN)=27
5921                 EPION(NNN,IRUN)=Arho
5922                 LB(I1)=7
5923                 LB(I2)=8
5924        GO TO 2051
5925               ENDIF 
5926                ENDIF
5927 * (2)FOR N+N
5928                 IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
5929                 IF(XDIR.Le.0.2)then
5930 * (2.1)N+N-->D++D-+rho(0)
5931                 LPION(NNN,IRUN)=26
5932                 EPION(NNN,IRUN)=Arho
5933               LB(I1)=6
5934               LB(I2)=7
5935        GO TO 2051
5936                 ENDIF
5937 * (2.2)N+N -->D+++D-+rho(-)
5938                 IF((XDIR.LE.0.4).AND.(XDIR.GT.0.2))THEN
5939                 LPION(NNN,IRUN)=25
5940                 EPION(NNN,IRUN)=Arho
5941                 LB(I1)=6
5942                 LB(I2)=9
5943        GO TO 2051
5944               ENDIF 
5945 * (2.3)P+P-->D0+D-+rho(+)
5946                 IF((XDIR.GT.0.4).AND.(XDIR.LE.0.6))THEN
5947                 LPION(NNN,IRUN)=27
5948                 EPION(NNN,IRUN)=Arho
5949                 LB(I1)=9
5950                 LB(I2)=8
5951        GO TO 2051
5952               ENDIF 
5953 * (2.4)P+P-->D0+D0+rho(0)
5954                 IF((XDIR.GT.0.6).AND.(XDIR.LE.0.8))THEN
5955                 LPION(NNN,IRUN)=26
5956                 EPION(NNN,IRUN)=Arho
5957                 LB(I1)=7
5958                 LB(I2)=7
5959        GO TO 2051
5960               ENDIF 
5961 * (2.5)P+P-->D0+D++rho(-)
5962                 IF(XDIR.GT.0.8)THEN
5963                 LPION(NNN,IRUN)=25
5964                 EPION(NNN,IRUN)=Arho
5965                 LB(I1)=7
5966                 LB(I2)=8
5967        GO TO 2051
5968               ENDIF 
5969               ENDIF
5970 * (3)FOR N+P
5971                 IF(LB(I1)*LB(I2).EQ.2)THEN
5972                 IF(XDIR.Le.0.17)then
5973 * (3.1)N+P-->D+++D-+rho(0)
5974                 LPION(NNN,IRUN)=25
5975                 EPION(NNN,IRUN)=Arho
5976               LB(I1)=6
5977               LB(I2)=9
5978        GO TO 2051
5979                 ENDIF
5980 * (3.2)N+P -->D+++D0+rho(-)
5981                 IF((XDIR.LE.0.34).AND.(XDIR.GT.0.17))THEN
5982                 LPION(NNN,IRUN)=25
5983                 EPION(NNN,IRUN)=Arho
5984                 LB(I1)=7
5985                 LB(I2)=9
5986        GO TO 2051
5987               ENDIF 
5988 * (3.3)N+P-->D++D-+rho(+)
5989                 IF((XDIR.GT.0.34).AND.(XDIR.LE.0.51))THEN
5990                 LPION(NNN,IRUN)=27
5991                 EPION(NNN,IRUN)=Arho
5992                 LB(I1)=7
5993                 LB(I2)=8
5994        GO TO 2051
5995               ENDIF 
5996 * (3.4)N+P-->D++D++rho(-)
5997                 IF((XDIR.GT.0.51).AND.(XDIR.LE.0.68))THEN
5998                 LPION(NNN,IRUN)=25
5999                 EPION(NNN,IRUN)=Arho
6000                 LB(I1)=8
6001                 LB(I2)=8
6002        GO TO 2051
6003               ENDIF 
6004 * (3.5)N+P-->D0+D++rho(0)
6005                 IF((XDIR.GT.0.68).AND.(XDIR.LE.0.85))THEN
6006                 LPION(NNN,IRUN)=26
6007                 EPION(NNN,IRUN)=Arho
6008                 LB(I1)=7
6009                 LB(I2)=8
6010        GO TO 2051
6011               ENDIF 
6012 * (3.6)N+P-->D0+D0+rho(+)
6013                 IF(XDIR.GT.0.85)THEN
6014                 LPION(NNN,IRUN)=27
6015                 EPION(NNN,IRUN)=Arho
6016                 LB(I1)=7
6017                 LB(I2)=7
6018               ENDIF 
6019                 ENDIF
6020 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
6021 * NUCLEUS CMS. FRAME 
6022 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
6023 2051          E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
6024               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
6025               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
6026               Pt1i1 = BETAX * TRANSF + PX3
6027               Pt2i1 = BETAY * TRANSF + PY3
6028               Pt3i1 = BETAZ * TRANSF + PZ3
6029              Eti1   = DM3
6030 c
6031              if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
6032                lb(i1) = -lb(i1)
6033                lb(i2) = -lb(i2)
6034                 if(LPION(NNN,IRUN) .eq. 25)then
6035                   LPION(NNN,IRUN)=27
6036                 elseif(LPION(NNN,IRUN) .eq. 27)then
6037                   LPION(NNN,IRUN)=25
6038                 endif
6039                endif
6040 c
6041              lb1=lb(i1)
6042 * FOR DELTA2
6043                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
6044                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
6045                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
6046                 Pt1I2 = BETAX * TRANSF + PX4
6047                 Pt2I2 = BETAY * TRANSF + PY4
6048                 Pt3I2 = BETAZ * TRANSF + PZ4
6049               EtI2   = DM4
6050               lb2=lb(i2)
6051 * assign delta1 and delta2 to i1 or i2 to keep the leadng particle
6052 * behaviour
6053 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
6054               p(1,i1)=pt1i1
6055               p(2,i1)=pt2i1
6056               p(3,i1)=pt3i1
6057               e(i1)=eti1
6058               lb(i1)=lb1
6059               p(1,i2)=pt1i2
6060               p(2,i2)=pt2i2
6061               p(3,i2)=pt3i2
6062               e(i2)=eti2
6063               lb(i2)=lb2
6064                 PX1     = P(1,I1)
6065                 PY1     = P(2,I1)
6066                 PZ1     = P(3,I1)
6067               EM1       = E(I1)
6068                 ID(I1)  = 2
6069                 ID(I2)  = 2
6070                 ID1     = ID(I1)
6071                 IBLOCK=44
6072 * GET rho'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
6073                 EPCM=SQRT(EPION(NNN,IRUN)**2+PPX**2+PPY**2+PPZ**2)
6074                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
6075                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
6076                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
6077                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
6078                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
6079 clin-5/2008:
6080                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
6081 clin-5/2008:
6082 c2004        X01 = 1.0 - 2.0 * RANART(NSEED)
6083 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
6084 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
6085 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2004
6086 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
6087 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
6088 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
6089                 RPION(1,NNN,IRUN)=R(1,I1)
6090                 RPION(2,NNN,IRUN)=R(2,I1)
6091                 RPION(3,NNN,IRUN)=R(3,I1)
6092 c
6093               go to 90005
6094 * FOR THE NN-->N+N+rho PROCESS, FIND MOMENTUM OF THE FINAL 
6095 * PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
6096 308     CONTINUE
6097            NTRY1=0
6098 126        CALL pprho(SRT,ISEED,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
6099      &  PPX,PPY,PPZ,amrho,icou1)
6100        NTRY1=NTRY1+1
6101        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 126
6102 C       if(icou1.lt.0)return
6103 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
6104        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
6105        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
6106        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
6107                 NNN=NNN+1
6108               arho=amrho
6109 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
6110 * (1) FOR P+P
6111               XDIR=RANART(NSEED)
6112                 IF(LB(I1)*LB(I2).EQ.1)THEN
6113                 IF(XDIR.Le.0.5)then
6114 * (1.1)P+P-->P+P+rho(0)
6115                 LPION(NNN,IRUN)=26
6116                 EPION(NNN,IRUN)=Arho
6117               LB(I1)=1
6118               LB(I2)=1
6119        GO TO 2052
6120                 Else
6121 * (1.2)P+P -->p+n+rho(+)
6122                 LPION(NNN,IRUN)=27
6123                 EPION(NNN,IRUN)=Arho
6124                 LB(I1)=1
6125                 LB(I2)=2
6126        GO TO 2052
6127               ENDIF 
6128               endif
6129 * (2)FOR N+N
6130                 IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
6131                 IF(XDIR.Le.0.5)then
6132 * (2.1)N+N-->N+N+rho(0)
6133                 LPION(NNN,IRUN)=26
6134                 EPION(NNN,IRUN)=Arho
6135               LB(I1)=2
6136               LB(I2)=2
6137        GO TO 2052
6138                 Else
6139 * (2.2)N+N -->N+P+rho(-)
6140                 LPION(NNN,IRUN)=25
6141                 EPION(NNN,IRUN)=Arho
6142                 LB(I1)=1
6143                 LB(I2)=2
6144        GO TO 2052
6145               ENDIF 
6146               endif
6147 * (3)FOR N+P
6148                 IF(LB(I1)*LB(I2).EQ.2)THEN
6149                 IF(XDIR.Le.0.33)then
6150 * (3.1)N+P-->N+P+rho(0)
6151                 LPION(NNN,IRUN)=26
6152                 EPION(NNN,IRUN)=Arho
6153               LB(I1)=1
6154               LB(I2)=2
6155        GO TO 2052
6156 * (3.2)N+P -->P+P+rho(-)
6157                 else IF((XDIR.LE.0.67).AND.(XDIR.GT.0.34))THEN
6158                 LPION(NNN,IRUN)=25
6159                 EPION(NNN,IRUN)=Arho
6160                 LB(I1)=1
6161                 LB(I2)=1
6162        GO TO 2052
6163               Else 
6164 * (3.3)N+P-->N+N+rho(+)
6165                 LPION(NNN,IRUN)=27
6166                 EPION(NNN,IRUN)=Arho
6167                 LB(I1)=2
6168                 LB(I2)=2
6169        GO TO 2052
6170               ENDIF 
6171               endif
6172 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
6173 * NUCLEUS CMS. FRAME 
6174 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
6175 2052          E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
6176               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
6177               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
6178               Pt1i1 = BETAX * TRANSF + PX3
6179               Pt2i1 = BETAY * TRANSF + PY3
6180               Pt3i1 = BETAZ * TRANSF + PZ3
6181              Eti1   = DM3
6182 c
6183               if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
6184                lb(i1) = -lb(i1)
6185                lb(i2) = -lb(i2)
6186                 if(LPION(NNN,IRUN) .eq. 25)then
6187                   LPION(NNN,IRUN)=27
6188                 elseif(LPION(NNN,IRUN) .eq. 27)then
6189                   LPION(NNN,IRUN)=25
6190                 endif
6191                endif
6192 c
6193              lb1=lb(i1)
6194 * FOR p2
6195                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
6196                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
6197                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
6198                 Pt1I2 = BETAX * TRANSF + PX4
6199                 Pt2I2 = BETAY * TRANSF + PY4
6200                 Pt3I2 = BETAZ * TRANSF + PZ4
6201               EtI2   = DM4
6202               lb2=lb(i2)
6203 * assign p1 and p2 to i1 or i2 to keep the leadng particle
6204 * behaviour
6205 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
6206               p(1,i1)=pt1i1
6207               p(2,i1)=pt2i1
6208               p(3,i1)=pt3i1
6209               e(i1)=eti1
6210               lb(i1)=lb1
6211               p(1,i2)=pt1i2
6212               p(2,i2)=pt2i2
6213               p(3,i2)=pt3i2
6214               e(i2)=eti2
6215               lb(i2)=lb2
6216                 PX1     = P(1,I1)
6217                 PY1     = P(2,I1)
6218                 PZ1     = P(3,I1)
6219               EM1       = E(I1)
6220                 ID(I1)  = 2
6221                 ID(I2)  = 2
6222                 ID1     = ID(I1)
6223                 IBLOCK=45
6224 * GET rho'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
6225                 EPCM=SQRT(EPION(NNN,IRUN)**2+PPX**2+PPY**2+PPZ**2)
6226                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
6227                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
6228                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
6229                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
6230                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
6231 clin-5/2008:
6232                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
6233 clin-5/2008:
6234 c2005        X01 = 1.0 - 2.0 * RANART(NSEED)
6235 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
6236 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
6237 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2005
6238 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
6239 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
6240 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
6241                 RPION(1,NNN,IRUN)=R(1,I1)
6242                 RPION(2,NNN,IRUN)=R(2,I1)
6243                 RPION(3,NNN,IRUN)=R(3,I1)
6244 c
6245               go to 90005
6246 * FOR THE NN-->p+p+omega PROCESS, FIND MOMENTUM OF THE FINAL 
6247 * PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
6248 309     CONTINUE
6249            NTRY1=0
6250 138        CALL ppomga(SRT,ISEED,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
6251      &  PPX,PPY,PPZ,icou1)
6252        NTRY1=NTRY1+1
6253        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 138
6254 C       if(icou1.lt.0)return
6255 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
6256        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
6257        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
6258        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
6259                 NNN=NNN+1
6260               aomega=0.782
6261 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
6262 * (1) FOR P+P
6263                 IF(LB(I1)*LB(I2).EQ.1)THEN
6264 * (1.1)P+P-->P+P+omega(0)
6265                 LPION(NNN,IRUN)=28
6266                 EPION(NNN,IRUN)=Aomega
6267               LB(I1)=1
6268               LB(I2)=1
6269        GO TO 2053
6270                 ENDIF
6271 * (2)FOR N+N
6272                 IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
6273 * (2.1)N+N-->N+N+omega(0)
6274                 LPION(NNN,IRUN)=28
6275                 EPION(NNN,IRUN)=Aomega
6276               LB(I1)=2
6277               LB(I2)=2
6278        GO TO 2053
6279                 ENDIF
6280 * (3)FOR N+P
6281                 IF(LB(I1)*LB(I2).EQ.2)THEN
6282 * (3.1)N+P-->N+P+omega(0)
6283                 LPION(NNN,IRUN)=28
6284                 EPION(NNN,IRUN)=Aomega
6285               LB(I1)=1
6286               LB(I2)=2
6287        GO TO 2053
6288                 ENDIF
6289 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
6290 * NUCLEUS CMS. FRAME 
6291 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
6292 2053          E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
6293               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
6294               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
6295               Pt1i1 = BETAX * TRANSF + PX3
6296               Pt2i1 = BETAY * TRANSF + PY3
6297               Pt3i1 = BETAZ * TRANSF + PZ3
6298              Eti1   = DM3
6299               if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
6300                lb(i1) = -lb(i1)
6301                lb(i2) = -lb(i2)
6302                endif
6303              lb1=lb(i1)
6304 * FOR DELTA2
6305                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
6306                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
6307                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
6308                 Pt1I2 = BETAX * TRANSF + PX4
6309                 Pt2I2 = BETAY * TRANSF + PY4
6310                 Pt3I2 = BETAZ * TRANSF + PZ4
6311               EtI2   = DM4
6312                 lb2=lb(i2)
6313 * assign delta1 and delta2 to i1 or i2 to keep the leadng particle
6314 * behaviour
6315 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
6316               p(1,i1)=pt1i1
6317               p(2,i1)=pt2i1
6318               p(3,i1)=pt3i1
6319               e(i1)=eti1
6320               lb(i1)=lb1
6321               p(1,i2)=pt1i2
6322               p(2,i2)=pt2i2
6323               p(3,i2)=pt3i2
6324               e(i2)=eti2
6325               lb(i2)=lb2
6326                 PX1     = P(1,I1)
6327                 PY1     = P(2,I1)
6328                 PZ1     = P(3,I1)
6329               EM1       = E(I1)
6330                 ID(I1)  = 2
6331                 ID(I2)  = 2
6332                 ID1     = ID(I1)
6333                 IBLOCK=46
6334 * GET omega'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
6335                 EPCM=SQRT(EPION(NNN,IRUN)**2+PPX**2+PPY**2+PPZ**2)
6336                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
6337                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
6338                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
6339                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
6340                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
6341 clin-5/2008:
6342                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
6343 clin-5/2008:
6344 c2006        X01 = 1.0 - 2.0 * RANART(NSEED)
6345 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
6346 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
6347 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2006
6348 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
6349 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
6350 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
6351                     RPION(1,NNN,IRUN)=R(1,I1)
6352                     RPION(2,NNN,IRUN)=R(2,I1)
6353                     RPION(3,NNN,IRUN)=R(3,I1)
6354 c
6355               go to 90005
6356 * change phase space density FOR NUCLEONS AFTER THE PROCESS
6357
6358 clin-10/25/02-comment out following, since there is no path to it:
6359 clin-8/16/02 used before set
6360 c     IX1,IY1,IZ1,IPX1,IPY1,IPZ1, IX2,IY2,IZ2,IPX2,IPY2,IPZ2:
6361 c                if ((abs(ix1).le.mx) .and. (abs(iy1).le.my) .and.
6362 c     &              (abs(iz1).le.mz)) then
6363 c                  ipx1p = nint(p(1,i1)/dpx)
6364 c                  ipy1p = nint(p(2,i1)/dpy)
6365 c                  ipz1p = nint(p(3,i1)/dpz)
6366 c                  if ((ipx1p.ne.ipx1) .or. (ipy1p.ne.ipy1) .or.
6367 c     &                (ipz1p.ne.ipz1)) then
6368 c                    if ((abs(ipx1).le.mpx) .and. (abs(ipy1).le.my)
6369 c     &                .and. (ipz1.ge.-mpz) .and. (ipz1.le.mpzp))
6370 c     &                f(ix1,iy1,iz1,ipx1,ipy1,ipz1) =
6371 c     &                f(ix1,iy1,iz1,ipx1,ipy1,ipz1) - 1.
6372 c                    if ((abs(ipx1p).le.mpx) .and. (abs(ipy1p).le.my)
6373 c     &                .and. (ipz1p.ge.-mpz).and. (ipz1p.le.mpzp))
6374 c     &                f(ix1,iy1,iz1,ipx1p,ipy1p,ipz1p) =
6375 c     &                f(ix1,iy1,iz1,ipx1p,ipy1p,ipz1p) + 1.
6376 c                  end if
6377 c                end if
6378 c                if ((abs(ix2).le.mx) .and. (abs(iy2).le.my) .and.
6379 c     &              (abs(iz2).le.mz)) then
6380 c                  ipx2p = nint(p(1,i2)/dpx)
6381 c                  ipy2p = nint(p(2,i2)/dpy)
6382 c                  ipz2p = nint(p(3,i2)/dpz)
6383 c                  if ((ipx2p.ne.ipx2) .or. (ipy2p.ne.ipy2) .or.
6384 c     &                (ipz2p.ne.ipz2)) then
6385 c                    if ((abs(ipx2).le.mpx) .and. (abs(ipy2).le.my)
6386 c     &                .and. (ipz2.ge.-mpz) .and. (ipz2.le.mpzp))
6387 c     &                f(ix2,iy2,iz2,ipx2,ipy2,ipz2) =
6388 c     &                f(ix2,iy2,iz2,ipx2,ipy2,ipz2) - 1.
6389 c                    if ((abs(ipx2p).le.mpx) .and. (abs(ipy2p).le.my)
6390 c     &                .and. (ipz2p.ge.-mpz) .and. (ipz2p.le.mpzp))
6391 c     &                f(ix2,iy2,iz2,ipx2p,ipy2p,ipz2p) =
6392 c     &                f(ix2,iy2,iz2,ipx2p,ipy2p,ipz2p) + 1.
6393 c                  end if
6394 c                end if
6395 clin-10/25/02-end
6396
6397 90005       continue
6398        RETURN
6399 *-----------------------------------------------------------------------
6400 *COM: SET THE NEW MOMENTUM COORDINATES
6401 107     IF(PX .EQ. 0.0 .AND. PY .EQ. 0.0) THEN
6402         T2 = 0.0
6403       ELSE
6404         T2=ATAN2(PY,PX)
6405       END IF
6406       S1   = 1.0 - C1**2 
6407        IF(S1.LE.0)S1=0
6408        S1=SQRT(S1)
6409       S2  =  SQRT( 1.0 - C2**2 )
6410       CT1  = COS(T1)
6411       ST1  = SIN(T1)
6412       CT2  = COS(T2)
6413       ST2  = SIN(T2)
6414       PZ   = PR * ( C1*C2 - S1*S2*CT1 )
6415       SS   = C2 * S1 * CT1  +  S2 * C1
6416       PX   = PR * ( SS*CT2 - S1*ST1*ST2 )
6417       PY   = PR * ( SS*ST2 + S1*ST1*CT2 )
6418       RETURN
6419       END
6420 clin-5/2008 CRNN over
6421
6422 **********************************
6423 **********************************
6424 *                                                                      *
6425 *                                                                      *
6426 c
6427       SUBROUTINE CRPP(PX,PY,PZ,SRT,I1,I2,IBLOCK,
6428      &ppel,ppin,spprho,ipp)
6429 *     PURPOSE:                                                         *
6430 *             DEALING WITH PION-PION COLLISIONS                        *
6431 *     NOTE   :                                                         *
6432 *           VALID ONLY FOR PION-PION-DISTANCES LESS THAN 2.5 FM        *
6433 *     QUANTITIES:                                                 *
6434 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
6435 *           SRT      - SQRT OF S                                       *
6436 *           IBLOCK   - THE INFORMATION BACK                            *
6437 *                     6-> Meson+Meson elastic
6438 *                     66-> Meson+meson-->K+K-
6439 **********************************
6440       PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
6441      1     AMP=0.93828,AP1=0.13496,
6442      2 AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
6443       PARAMETER      (AKA=0.498,aks=0.895)
6444       parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
6445       COMMON /AA/ R(3,MAXSTR)
6446 cc      SAVE /AA/
6447       COMMON /BB/ P(3,MAXSTR)
6448 cc      SAVE /BB/
6449       COMMON /CC/ E(MAXSTR)
6450 cc      SAVE /CC/
6451       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
6452 cc      SAVE /EE/
6453       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
6454 cc      SAVE /input1/
6455       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
6456 cc      SAVE /ppb1/
6457       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
6458 cc      SAVE /ppmm/
6459       COMMON/RNDF77/NSEED
6460 cc      SAVE /RNDF77/
6461       SAVE   
6462
6463       lb1i=lb(i1)
6464       lb2i=lb(i2)
6465
6466        PX0=PX
6467        PY0=PY
6468        PZ0=PZ
6469         iblock=1
6470 *-----------------------------------------------------------------------
6471 * check Meson+Meson inelastic collisions
6472 clin-9/28/00
6473 c        if((srt.gt.1.).and.(ppin/(ppin+ppel).gt.RANART(NSEED)))then
6474 c        iblock=66
6475 c        e(i1)=0.498
6476 c        e(i2)=0.498
6477 c        lb(i1)=21
6478 c        lb(i2)=23
6479 c        go to 10
6480 clin-11/07/00
6481 c        if(srt.gt.1.and.(ppin/(ppin+ppel)).gt.RANART(NSEED)) then
6482 clin-4/03/02
6483         if(srt.gt.(2*aka).and.(ppin/(ppin+ppel)).gt.RANART(NSEED)) then
6484 c        if(ppin/(ppin+ppel).gt.RANART(NSEED)) then
6485 clin-10/08/00
6486
6487            ranpi=RANART(NSEED)
6488            if((pprr/ppin).ge.ranpi) then
6489
6490 c     1) pi pi <-> rho rho:
6491               call pi2ro2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6492
6493 clin-4/03/02 eta equilibration:
6494            elseif((pprr+ppee)/ppin.ge.ranpi) then
6495 c     4) pi pi <-> eta eta:
6496               call pi2et2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6497            elseif(((pprr+ppee+pppe)/ppin).ge.ranpi) then
6498 c     5) pi pi <-> pi eta:
6499               call pi3eta(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6500            elseif(((pprr+ppee+pppe+rpre)/ppin).ge.ranpi) then
6501 c     6) rho pi <-> pi eta:
6502               call rpiret(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6503            elseif(((pprr+ppee+pppe+rpre+xopoe)/ppin).ge.ranpi) then
6504 c     7) omega pi <-> omega eta:
6505               call opioet(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6506            elseif(((pprr+ppee+pppe+rpre+xopoe+rree)
6507      1             /ppin).ge.ranpi) then
6508 c     8) rho rho <-> eta eta:
6509               call ro2et2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6510 clin-4/03/02-end
6511
6512 c     2) BBbar production:
6513            elseif(((pprr+ppee+pppe+rpre+xopoe+rree+ppinnb)/ppin)
6514      1             .ge.ranpi) then
6515
6516               call bbarfs(lbb1,lbb2,ei1,ei2,iblock,iseed)
6517 c     3) KKbar production:
6518            else
6519               iblock=66
6520               ei1=aka
6521               ei2=aka
6522               lbb1=21
6523               lbb2=23
6524 clin-11/07/00 pi rho -> K* Kbar and K*bar K productions:
6525               lb1=lb(i1)
6526               lb2=lb(i2)
6527 clin-2/13/03 include omega the same as rho, eta the same as pi:
6528 c        if(((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.25.and.lb2.le.27))
6529 c     1  .or.((lb2.ge.3.and.lb2.le.5).and.(lb1.ge.25.and.lb1.le.27)))
6530         if( ( (lb1.eq.0.or.(lb1.ge.3.and.lb1.le.5))
6531      1       .and.(lb2.ge.25.and.lb2.le.28))
6532      2       .or. ( (lb2.eq.0.or.(lb2.ge.3.and.lb2.le.5))
6533      3       .and.(lb1.ge.25.and.lb1.le.28))) then
6534            ei1=aks
6535            ei2=aka
6536            if(RANART(NSEED).ge.0.5) then
6537               iblock=366
6538               lbb1=30
6539               lbb2=21
6540            else
6541               iblock=367
6542               lbb1=-30
6543               lbb2=23
6544            endif
6545         endif
6546 clin-11/07/00-end
6547            endif
6548 clin-ppbar-8/25/00
6549            e(i1)=ei1
6550            e(i2)=ei2
6551            lb(i1)=lbb1
6552            lb(i2)=lbb2
6553 clin-10/08/00-end
6554
6555        else
6556 cbzdbg10/15/99
6557 c.....for meson+meson elastic srt.le.2Mk, if not pi+pi collision return
6558          if ((lb(i1).lt.3.or.lb(i1).gt.5).and.
6559      &        (lb(i2).lt.3.or.lb(i2).gt.5)) return
6560 cbzdbg10/15/99 end
6561
6562 * check Meson+Meson elastic collisions
6563         IBLOCK=6
6564 * direct process
6565        if(ipp.eq.1.or.ipp.eq.4.or.ipp.eq.6)go to 10
6566        if(spprho/ppel.gt.RANART(NSEED))go to 20
6567        endif
6568 10      NTAG=0
6569         EM1=E(I1)
6570         EM2=E(I2)
6571
6572 *-----------------------------------------------------------------------
6573 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
6574 * ENERGY CONSERVATION
6575           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
6576      1                - 4.0 * (EM1*EM2)**2
6577           IF(PR2.LE.0.)PR2=1.e-09
6578           PR=SQRT(PR2)/(2.*SRT)
6579           C1   = 1.0 - 2.0 * RANART(NSEED)
6580           T1   = 2.0 * PI * RANART(NSEED)
6581       S1   = SQRT( 1.0 - C1**2 )
6582       CT1  = COS(T1)
6583       ST1  = SIN(T1)
6584       PZ   = PR * C1
6585       PX   = PR * S1*CT1 
6586       PY   = PR * S1*ST1
6587 * for isotropic distribution no need to ROTATE THE MOMENTUM
6588
6589 * ROTATE IT 
6590       CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
6591
6592       RETURN
6593 20       continue
6594        iblock=666
6595 * treat rho formation in pion+pion collisions
6596 * calculate the mass and momentum of rho in the nucleus-nucleus frame
6597        call rhores(i1,i2)
6598        if(ipp.eq.2)lb(i1)=27
6599        if(ipp.eq.3)lb(i1)=26
6600        if(ipp.eq.5)lb(i1)=25
6601        return       
6602       END
6603 **********************************
6604 **********************************
6605 *                                                                      *
6606 *                                                                      *
6607       SUBROUTINE CRND(IRUN,PX,PY,PZ,SRT,I1,I2,IBLOCK,
6608      &SIGNN,SIG,sigk,xsk1,xsk2,xsk3,xsk4,xsk5,NT,ipert1)
6609 *     PURPOSE:                                                         *
6610 *             DEALING WITH NUCLEON-BARYON RESONANCE COLLISIONS         *
6611 *     NOTE   :                                                         *
6612 *           VALID ONLY FOR BARYON-BARYON-DISTANCES LESS THAN 1.32 FM   *
6613 *           (1.32 = 2 * HARD-CORE-RADIUS [HRC] )                       *
6614 *     QUANTITIES:                                                 *
6615 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
6616 *           SRT      - SQRT OF S                                       *
6617 *           NSTAR =1 INCLUDING N* RESORANCE,ELSE NOT                   *
6618 *           NDIRCT=1 INCLUDING DIRECT PION PRODUCTION PROCESS         *
6619 *           IBLOCK   - THE INFORMATION BACK                            *
6620 *                      0-> COLLISION CANNOT HAPPEN                     *
6621 *                      1-> N-N ELASTIC COLLISION                       *
6622 *                      2-> N+N->N+DELTA,OR N+N->N+N* REACTION          *
6623 *                      3-> N+DELTA->N+N OR N+N*->N+N REACTION          *
6624 *                      4-> N+N->N+N+PION,DIRTCT PROCESS                *
6625 *           N12       - IS USED TO SPECIFY BARYON-BARYON REACTION      *
6626 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
6627 *                      N12,                                            *
6628 *                      M12=1 FOR p+n-->delta(+)+ n                     *
6629 *                          2     p+n-->delta(0)+ p                     *
6630 *                          3     p+p-->delta(++)+n                     *
6631 *                          4     p+p-->delta(+)+p                      *
6632 *                          5     n+n-->delta(0)+n                      *
6633 *                          6     n+n-->delta(-)+p                      *
6634 *                          7     n+p-->N*(0)(1440)+p                   *
6635 *                          8     n+p-->N*(+)(1440)+n                   *
6636 *                        9     p+p-->N*(+)(1535)+p                     *
6637 *                        10    n+n-->N*(0)(1535)+n                     *
6638 *                         11    n+p-->N*(+)(1535)+n                     *
6639 *                        12    n+p-->N*(0)(1535)+p
6640 *                        13    D(++)+D(-)-->N*(+)(1440)+n
6641 *                         14    D(++)+D(-)-->N*(0)(1440)+p
6642 *                        15    D(+)+D(0)--->N*(+)(1440)+n
6643 *                        16    D(+)+D(0)--->N*(0)(1440)+p
6644 *                        17    D(++)+D(0)-->N*(+)(1535)+p
6645 *                        18    D(++)+D(-)-->N*(0)(1535)+p
6646 *                        19    D(++)+D(-)-->N*(+)(1535)+n
6647 *                        20    D(+)+D(+)-->N*(+)(1535)+p
6648 *                        21    D(+)+D(0)-->N*(+)(1535)+n
6649 *                        22    D(+)+D(0)-->N*(0)(1535)+p
6650 *                        23    D(+)+D(-)-->N*(0)(1535)+n
6651 *                        24    D(0)+D(0)-->N*(0)(1535)+n
6652 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
6653 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
6654 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
6655 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
6656 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
6657 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
6658 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
6659 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
6660 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
6661 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
6662 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
6663 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
6664 *                        ++    see the note book for more listing
6665 **********************************
6666         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
6667      1  AMP=0.93828,AP1=0.13496,AKA=0.498,APHI=1.020,
6668      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
6669         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
6670         parameter (xmd=1.8756,npdmax=10000)
6671         COMMON /AA/ R(3,MAXSTR)
6672 cc      SAVE /AA/
6673         COMMON /BB/ P(3,MAXSTR)
6674 cc      SAVE /BB/
6675         COMMON /CC/ E(MAXSTR)
6676 cc      SAVE /CC/
6677         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
6678 cc      SAVE /EE/
6679         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
6680 cc      SAVE /ff/
6681         common /gg/ dx,dy,dz,dpx,dpy,dpz
6682 cc      SAVE /gg/
6683         COMMON /INPUT/ NSTAR,NDIRCT,DIR
6684 cc      SAVE /INPUT/
6685         COMMON /NN/NNN
6686 cc      SAVE /NN/
6687         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
6688 cc      SAVE /BG/
6689         COMMON   /RUN/NUM
6690 cc      SAVE /RUN/
6691         COMMON   /PA/RPION(3,MAXSTR,MAXR)
6692 cc      SAVE /PA/
6693         COMMON   /PB/PPION(3,MAXSTR,MAXR)
6694 cc      SAVE /PB/
6695         COMMON   /PC/EPION(MAXSTR,MAXR)
6696 cc      SAVE /PC/
6697         COMMON   /PD/LPION(MAXSTR,MAXR)
6698 cc      SAVE /PD/
6699         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
6700 cc      SAVE /input1/
6701       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
6702      1 px1n,py1n,pz1n,dp1n
6703 cc      SAVE /leadng/
6704       COMMON/RNDF77/NSEED
6705 cc      SAVE /RNDF77/
6706       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
6707      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
6708      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
6709       common /dpi/em2,lb2
6710       common /para8/ idpert,npertd,idxsec
6711       dimension ppd(3,npdmax),lbpd(npdmax)
6712       SAVE   
6713 *-----------------------------------------------------------------------
6714        n12=0
6715        m12=0
6716         IBLOCK=0
6717         NTAG=0
6718         EM1=E(I1)
6719         EM2=E(I2)
6720         PR  = SQRT( PX**2 + PY**2 + PZ**2 )
6721         C2  = PZ / PR
6722         X1  = RANART(NSEED)
6723         ianti=0
6724         if(lb(i1).lt.0 .and. lb(i2).lt.0)ianti=1
6725
6726 clin-6/2008 Production of perturbative deuterons for idpert=1:
6727       call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
6728       if(idpert.eq.1.and.ipert1.eq.1) then
6729          IF (SRT .LT. 2.012) RETURN
6730          if((iabs(lb(i1)).eq.1.or.iabs(lb(i1)).eq.2)
6731      1        .and.(iabs(lb(i2)).ge.6.and.iabs(lb(i2)).le.13)) then
6732             goto 108
6733          elseif((iabs(lb(i2)).eq.1.or.iabs(lb(i2)).eq.2)
6734      1           .and.(iabs(lb(i1)).ge.6.and.iabs(lb(i1)).le.13)) then
6735             goto 108
6736          else
6737             return
6738          endif
6739       endif
6740 *-----------------------------------------------------------------------
6741 *COM: TEST FOR ELASTIC SCATTERING (EITHER N-N OR DELTA-DELTA 0R
6742 *      N-DELTA OR N*-N* or N*-Delta)
6743       IF (X1 .LE. SIGNN/SIG) THEN
6744 *COM:  PARAMETRISATION IS TAKEN FROM THE CUGNON-PAPER
6745         AS  = ( 3.65 * (SRT - 1.8766) )**6
6746         A   = 6.0 * AS / (1.0 + AS)
6747         TA  = -2.0 * PR**2
6748         X   = RANART(NSEED)
6749 clin-10/24/02        T1  = ALOG( (1-X) * DEXP(dble(A)*dble(TA)) + X )  /  A
6750         T1  = sngl(DLOG(dble(1.-X)*DEXP(dble(A)*dble(TA))+dble(X)))/  A
6751         C1  = 1.0 - T1/TA
6752         T1  = 2.0 * PI * RANART(NSEED)
6753         IBLOCK=1
6754        GO TO 107
6755       ELSE
6756 *COM: TEST FOR INELASTIC SCATTERING
6757 *     IF THE AVAILABLE ENERGY IS LESS THAN THE PION-MASS, NOTHING
6758 *     CAN HAPPEN ANY MORE ==> RETURN (2.04 = 2*AVMASS + PI-MASS+0.02)
6759         IF (SRT .LT. 2.04) RETURN
6760 clin-6/2008 add d+meson production for n*N*(0)(1440) and p*N*(+)(1440) channels
6761 c     (they did not have any inelastic reactions before):
6762         if(((iabs(LB(I1)).EQ.2.or.iabs(LB(I2)).EQ.2).AND.
6763      1       (LB(I1)*LB(I2)).EQ.20).or.(LB(I1)*LB(I2)).EQ.13) then
6764            IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6765         ENDIF
6766 c
6767 * Resonance absorption or Delta + N-->N*(1440), N*(1535)
6768 * COM: TEST FOR DELTA OR N* ABSORPTION
6769 *      IN THE PROCESS DELTA+N-->NN, N*+N-->NN
6770         PRF=SQRT(0.25*SRT**2-AVMASS**2)
6771         IF(EM1.GT.1.)THEN
6772         DELTAM=EM1
6773         ELSE
6774         DELTAM=EM2
6775         ENDIF
6776         RENOM=DELTAM*PRF**2/DENOM(SRT,1.)/PR
6777         RENOMN=DELTAM*PRF**2/DENOM(SRT,2.)/PR
6778         RENOM1=DELTAM*PRF**2/DENOM(SRT,-1.)/PR
6779 * avoid the inelastic collisions between n+delta- -->N+N 
6780 *       and p+delta++ -->N+N due to charge conservation,
6781 *       but they can scatter to produce kaons 
6782        if((iabs(lb(i1)).eq.2).and.(iabs(lb(i2)).eq.6)) renom=0.
6783        if((iabs(lb(i2)).eq.2).and.(iabs(lb(i1)).eq.6)) renom=0.
6784        if((iabs(lb(i1)).eq.1).and.(iabs(lb(i2)).eq.9)) renom=0.
6785        if((iabs(lb(i2)).eq.1).and.(iabs(lb(i1)).eq.9)) renom=0.
6786        Call M1535(iabs(lb(i1)),iabs(lb(i2)),srt,x1535)
6787         X1440=(3./4.)*SIGMA(SRT,2,0,1)
6788 * CROSS SECTION FOR KAON PRODUCTION from the four channels
6789 * for NLK channel
6790 * avoid the inelastic collisions between n+delta- -->N+N 
6791 *       and p+delta++ -->N+N due to charge conservation,
6792 *       but they can scatter to produce kaons 
6793        if(((iabs(lb(i1)).eq.2).and.(iabs(lb(i2)).eq.6)).OR. 
6794      &         ((iabs(lb(i2)).eq.2).and.(iabs(lb(i1)).eq.6)).OR.
6795      &         ((iabs(lb(i1)).eq.1).and.(iabs(lb(i2)).eq.9)).OR.
6796      &         ((iabs(lb(i2)).eq.1).and.(iabs(lb(i1)).eq.9)))THEN
6797 clin-6/2008
6798           IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6799 c          IF((SIGK+SIGNN)/SIG.GE.X1)GO TO 306
6800           IF((SIGK+SIGNN+sdprod)/SIG.GE.X1)GO TO 306
6801 c
6802        ENDIF
6803 * WE DETERMINE THE REACTION CHANNELS IN THE FOLLOWING
6804 * FOR n+delta(++)-->p+p or n+delta(++)-->n+N*(+)(1440),n+N*(+)(1535)
6805 * REABSORPTION OR N*(1535) PRODUCTION LIKE IN P+P OR N*(1440) LIKE PN, 
6806         IF(LB(I1)*LB(I2).EQ.18.AND.
6807      &  (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))then
6808         SIGND=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
6809         SIGDN=0.25*SIGND*RENOM
6810 clin-6/2008
6811         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6812 c        IF(X1.GT.(SIGNN+SIGDN+X1440+X1535+SIGK)/SIG)RETURN
6813         IF(X1.GT.(SIGNN+SIGDN+X1440+X1535+SIGK+sdprod)/SIG)RETURN
6814 c
6815        IF(SIGK/(SIGK+SIGDN+X1440+X1535).GT.RANART(NSEED))GO TO 306
6816 * REABSORPTION:
6817        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1440+X1535))THEN
6818         M12=3
6819        GO TO 206
6820        ELSE
6821 * N* PRODUCTION
6822               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
6823 * N*(1440)
6824               M12=37
6825               ELSE
6826 * N*(1535)       M12=38
6827 clin-2/26/03 why is the above commented out? leads to M12=0 but 
6828 c     particle mass is changed after 204 (causes energy violation).
6829 c     replace by elastic process (return):
6830                    return
6831
6832               ENDIF
6833        GO TO 204
6834        ENDIF
6835         ENDIF
6836 * FOR p+delta(-)-->n+n or p+delta(-)-->n+N*(0)(1440),n+N*(0)(1535)
6837 * REABSORPTION OR N*(1535) PRODUCTION LIKE IN P+P OR N*(1440) LIKE PN, 
6838         IF(LB(I1)*LB(I2).EQ.6.AND.
6839      &   ((iabs(LB(I1)).EQ.1).OR.(iabs(LB(I2)).EQ.1)))then
6840         SIGND=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
6841         SIGDN=0.25*SIGND*RENOM
6842 clin-6/2008
6843         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6844 c        IF (X1.GT.(SIGNN+SIGDN+X1440+X1535+SIGK)/SIG)RETURN
6845         IF (X1.GT.(SIGNN+SIGDN+X1440+X1535+SIGK+sdprod)/SIG)RETURN
6846 c
6847        IF(SIGK/(SIGK+SIGDN+X1440+X1535).GT.RANART(NSEED))GO TO 306
6848 * REABSORPTION:
6849        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1440+X1535))THEN
6850         M12=6
6851        GO TO 206
6852        ELSE
6853 * N* PRODUCTION
6854               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
6855 * N*(1440)
6856               M12=47
6857               ELSE
6858 * N*(1535)       M12=48
6859 clin-2/26/03 causes energy violation, replace by elastic process (return):
6860                    return
6861
6862               ENDIF
6863        GO TO 204
6864        ENDIF
6865         ENDIF
6866 * FOR p+delta(+)-->p+p, N*(+)(144)+p, N*(+)(1535)+p
6867         IF(LB(I1)*LB(I2).EQ.8.AND.
6868      &   (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))THEN
6869         SIGND=1.5*SIGMA(SRT,1,1,1)
6870         SIGDN=0.25*SIGND*RENOM
6871 clin-6/2008
6872         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6873 c        IF(X1.GT.(SIGNN+SIGDN+x1440+x1535+SIGK)/SIG)RETURN
6874         IF(X1.GT.(SIGNN+SIGDN+x1440+x1535+SIGK+sdprod)/SIG)RETURN
6875 c
6876        IF(SIGK/(SIGK+SIGDN+X1440+X1535).GT.RANART(NSEED))GO TO 306
6877        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1440+X1535))THEN
6878         M12=4
6879        GO TO 206
6880        ELSE
6881               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
6882 * N*(144)
6883               M12=39
6884               ELSE
6885               M12=40
6886               ENDIF
6887               GO TO 204
6888        ENDIF
6889         ENDIF
6890 * FOR n+delta(0)-->n+n, N*(0)(144)+n, N*(0)(1535)+n
6891         IF(LB(I1)*LB(I2).EQ.14.AND.
6892      &   (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))THEN
6893         SIGND=1.5*SIGMA(SRT,1,1,1)
6894         SIGDN=0.25*SIGND*RENOM
6895 clin-6/2008
6896         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6897 c        IF(X1.GT.(SIGNN+SIGDN+x1440+x1535+SIGK)/SIG)RETURN
6898         IF(X1.GT.(SIGNN+SIGDN+x1440+x1535+SIGK+sdprod)/SIG)RETURN
6899 c
6900        IF(SIGK/(SIGK+SIGDN+X1440+X1535).GT.RANART(NSEED))GO TO 306
6901        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1440+X1535))THEN
6902         M12=5
6903        GO TO 206
6904        ELSE
6905               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
6906 * N*(144)
6907               M12=48
6908               ELSE
6909               M12=49
6910               ENDIF
6911               GO TO 204
6912        ENDIF
6913         ENDIF
6914 * FOR n+delta(+)-->n+p, N*(+)(1440)+n,N*(0)(1440)+p,
6915 *                       N*(+)(1535)+n,N*(0)(1535)+p
6916         IF(LB(I1)*LB(I2).EQ.16.AND.
6917      &   (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))THEN
6918         SIGND=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
6919         SIGDN=0.5*SIGND*RENOM
6920 clin-6/2008
6921         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6922 c        IF(X1.GT.(SIGNN+SIGDN+2.*x1440+2.*x1535+SIGK)/SIG)RETURN
6923         IF(X1.GT.(SIGNN+SIGDN+2.*x1440+2.*x1535+SIGK+sdprod)/SIG)RETURN
6924 c
6925        IF(SIGK/(SIGK+SIGDN+2*X1440+2*X1535).GT.RANART(NSEED))GO TO 306
6926        IF(RANART(NSEED).LT.SIGDN/(SIGDN+2.*X1440+2.*X1535))THEN
6927         M12=1
6928        GO TO 206
6929        ELSE
6930               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
6931               M12=41
6932               IF(RANART(NSEED).LE.0.5)M12=43
6933               ELSE
6934               M12=42
6935               IF(RANART(NSEED).LE.0.5)M12=44
6936               ENDIF
6937               GO TO 204
6938        ENDIF
6939         ENDIF
6940 * FOR p+delta(0)-->n+p, N*(+)(1440)+n,N*(0)(1440)+p,
6941 *                       N*(+)(1535)+n,N*(0)(1535)+p
6942         IF(LB(I1)*LB(I2).EQ.7)THEN
6943         SIGND=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
6944         SIGDN=0.5*SIGND*RENOM
6945 clin-6/2008
6946         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6947 c        IF(X1.GT.(SIGNN+SIGDN+2.*x1440+2.*x1535+SIGK)/SIG)RETURN
6948         IF(X1.GT.(SIGNN+SIGDN+2.*x1440+2.*x1535+SIGK+sdprod)/SIG)RETURN
6949 c
6950        IF(SIGK/(SIGK+SIGDN+2*X1440+2*X1535).GT.RANART(NSEED))GO TO 306
6951        IF(RANART(NSEED).LT.SIGDN/(SIGDN+2.*X1440+2.*X1535))THEN
6952         M12=2
6953        GO TO 206
6954        ELSE
6955               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
6956               M12=50
6957               IF(RANART(NSEED).LE.0.5)M12=51
6958               ELSE
6959               M12=52
6960               IF(RANART(NSEED).LE.0.5)M12=53
6961               ENDIF
6962               GO TO 204
6963        ENDIF
6964         ENDIF
6965 * FOR p+N*(0)(14)-->p+n, N*(+)(1535)+n,N*(0)(1535)+p
6966 * OR  P+N*(0)(14)-->D(+)+N, D(0)+P, 
6967         IF(LB(I1)*LB(I2).EQ.10.AND.
6968      &  (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))then
6969         SIGND=(3./4.)*SIGMA(SRT,2,0,1)
6970         SIGDN=SIGND*RENOMN
6971 clin-6/2008
6972         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6973 c        IF(X1.GT.(SIGNN+SIGDN+X1535+SIGK)/SIG)RETURN
6974         IF(X1.GT.(SIGNN+SIGDN+X1535+SIGK+sdprod)/SIG)RETURN
6975 c
6976        IF(SIGK/(SIGK+SIGDN+X1535).GT.RANART(NSEED))GO TO 306
6977        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1535))THEN
6978         M12=7
6979         GO TO 206
6980        ELSE
6981        M12=54
6982        IF(RANART(NSEED).LE.0.5)M12=55
6983        ENDIF
6984        GO TO 204
6985         ENDIF
6986 * FOR n+N*(+)-->p+n, N*(+)(1535)+n,N*(0)(1535)+p
6987         IF(LB(I1)*LB(I2).EQ.22.AND.
6988      &   (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))then
6989         SIGND=(3./4.)*SIGMA(SRT,2,0,1)
6990         SIGDN=SIGND*RENOMN
6991 clin-6/2008
6992         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6993 c        IF(X1.GT.(SIGNN+SIGDN+X1535+SIGK)/SIG)RETURN
6994         IF(X1.GT.(SIGNN+SIGDN+X1535+SIGK+sdprod)/SIG)RETURN
6995 c
6996        IF(SIGK/(SIGK+SIGDN+X1535).GT.RANART(NSEED))GO TO 306
6997        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1535))THEN
6998         M12=8
6999         GO TO 206
7000        ELSE
7001        M12=56
7002        IF(RANART(NSEED).LE.0.5)M12=57
7003        ENDIF
7004        GO TO 204
7005         ENDIF
7006 * FOR N*(1535)+N-->N+N COLLISIONS
7007         IF((iabs(LB(I1)).EQ.12).OR.(iabs(LB(I1)).EQ.13).OR.
7008      1  (iabs(LB(I2)).EQ.12).OR.(iabs(LB(I2)).EQ.13))THEN
7009         SIGND=X1535
7010         SIGDN=SIGND*RENOM1
7011 clin-6/2008
7012         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
7013 c        IF(X1.GT.(SIGNN+SIGDN+SIGK)/SIG)RETURN
7014         IF(X1.GT.(SIGNN+SIGDN+SIGK+sdprod)/SIG)RETURN
7015 c
7016        IF(SIGK/(SIGK+SIGDN).GT.RANART(NSEED))GO TO 306
7017         IF(LB(I1)*LB(I2).EQ.24)M12=10
7018         IF(LB(I1)*LB(I2).EQ.12)M12=12
7019         IF(LB(I1)*LB(I2).EQ.26)M12=11
7020        IF(LB(I1)*LB(I2).EQ.13)M12=9
7021        GO TO 206
7022         ENDIF
7023 204       CONTINUE
7024 * (1) GENERATE THE MASS FOR THE N*(1440) AND N*(1535)
7025 * (2) CALCULATE THE FINAL MOMENTUM OF THE n+N* SYSTEM
7026 * (3) RELABLE THE FINAL STATE PARTICLES
7027 *PARAMETRIZATION OF THE SHAPE OF THE N* RESONANCE ACCORDING
7028 *     TO kitazoe's or J.D.JACKSON'S MASS FORMULA AND BREIT WIGNER
7029 *     FORMULA FOR N* RESORANCE
7030 *     DETERMINE DELTA MASS VIA REJECTION METHOD.
7031           DMAX = SRT - AVMASS-0.005
7032           DMIN = 1.078
7033           IF((M12.eq.37).or.(M12.eq.39).or.
7034      1    (M12.eQ.41).OR.(M12.eQ.43).OR.(M12.EQ.46).
7035      2     OR.(M12.EQ.48).OR.(M12.EQ.50).OR.(M12.EQ.51))then
7036 * N*(1440) production
7037           IF(DMAX.LT.1.44) THEN
7038           FM=FNS(DMAX,SRT,0.)
7039           ELSE
7040
7041 clin-10/25/02 get rid of argument usage mismatch in FNS():
7042              xdmass=1.44
7043 c          FM=FNS(1.44,SRT,1.)
7044           FM=FNS(xdmass,SRT,1.)
7045 clin-10/25/02-end
7046
7047           ENDIF
7048           IF(FM.EQ.0.)FM=1.E-09
7049           NTRY2=0
7050 11        DM=RANART(NSEED)*(DMAX-DMIN)+DMIN
7051           NTRY2=NTRY2+1
7052           IF((RANART(NSEED).GT.FNS(DM,SRT,1.)/FM).AND.
7053      1    (NTRY2.LE.10)) GO TO 11
7054
7055 clin-2/26/03 limit the N* mass below a certain value 
7056 c     (here taken as its central value + 2* B-W fullwidth):
7057           if(dm.gt.2.14) goto 11
7058
7059               GO TO 13
7060               ELSE
7061 * N*(1535) production
7062           IF(DMAX.LT.1.535) THEN
7063           FM=FD5(DMAX,SRT,0.)
7064           ELSE
7065
7066 clin-10/25/02 get rid of argument usage mismatch in FNS():
7067              xdmass=1.535
7068 c          FM=FD5(1.535,SRT,1.)
7069           FM=FD5(xdmass,SRT,1.)
7070 clin-10/25/02-end
7071
7072           ENDIF
7073           IF(FM.EQ.0.)FM=1.E-09
7074           NTRY1=0
7075 12        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
7076           NTRY1=NTRY1+1
7077           IF((RANART(NSEED) .GT. FD5(DM,SRT,1.)/FM).AND.
7078      1    (NTRY1.LE.10)) GOTO 12
7079
7080 clin-2/26/03 limit the N* mass below a certain value 
7081 c     (here taken as its central value + 2* B-W fullwidth):
7082           if(dm.gt.1.84) goto 12
7083
7084              ENDIF
7085 13       CONTINUE
7086 * (2) DETERMINE THE FINAL MOMENTUM
7087        PRF=0.
7088        PF2=((SRT**2-DM**2+AVMASS**2)/(2.*SRT))**2-AVMASS**2
7089        IF(PF2.GT.0.)PRF=SQRT(PF2)
7090 * (3) RELABLE FINAL STATE PARTICLES
7091 * 37 D(++)+n-->N*(+)(14)+p
7092           IF(M12.EQ.37)THEN
7093           IF(iabs(LB(I1)).EQ.9)THEN
7094           LB(I1)=1
7095           E(I1)=AMP
7096          LB(I2)=11
7097          E(I2)=DM
7098           ELSE
7099           LB(I2)=1
7100           E(I2)=AMP
7101          LB(I1)=11
7102          E(I1)=DM
7103           ENDIF
7104          GO TO 207
7105           ENDIF
7106 * 38 D(++)+n-->N*(+)(15)+p
7107           IF(M12.EQ.38)THEN
7108           IF(iabs(LB(I1)).EQ.9)THEN
7109           LB(I1)=1
7110           E(I1)=AMP
7111          LB(I2)=13
7112          E(I2)=DM
7113           ELSE
7114           LB(I2)=1
7115           E(I2)=AMP
7116          LB(I1)=13
7117          E(I1)=DM
7118           ENDIF
7119          GO TO 207
7120          ENDIF
7121 * 39 D(+)+P-->N*(+)(14)+p
7122           IF(M12.EQ.39)THEN
7123           IF(iabs(LB(I1)).EQ.8)THEN
7124           LB(I1)=1
7125           E(I1)=AMP
7126          LB(I2)=11
7127          E(I2)=DM
7128           ELSE
7129           LB(I2)=1
7130           E(I2)=AMP
7131          LB(I1)=11
7132          E(I1)=DM
7133           ENDIF
7134          GO TO 207
7135          ENDIF
7136 * 40 D(+)+P-->N*(+)(15)+p
7137           IF(M12.EQ.40)THEN
7138           IF(iabs(LB(I1)).EQ.8)THEN
7139           LB(I1)=1
7140           E(I1)=AMP
7141          LB(I2)=13
7142          E(I2)=DM
7143           ELSE
7144           LB(I2)=1
7145           E(I2)=AMP
7146          LB(I1)=13
7147          E(I1)=DM
7148           ENDIF
7149          GO TO 207
7150          ENDIF
7151 * 41 D(+)+N-->N*(+)(14)+N
7152           IF(M12.EQ.41)THEN
7153           IF(iabs(LB(I1)).EQ.8)THEN
7154           LB(I1)=2
7155           E(I1)=AMN
7156          LB(I2)=11
7157          E(I2)=DM
7158           ELSE
7159           LB(I2)=2
7160           E(I2)=AMN
7161          LB(I1)=11
7162          E(I1)=DM
7163           ENDIF
7164          GO TO 207
7165          ENDIF
7166 * 42 D(+)+N-->N*(+)(15)+N
7167           IF(M12.EQ.42)THEN
7168           IF(iabs(LB(I1)).EQ.8)THEN
7169           LB(I1)=2
7170           E(I1)=AMN
7171          LB(I2)=13
7172          E(I2)=DM
7173           ELSE
7174           LB(I2)=2
7175           E(I2)=AMN
7176          LB(I1)=13
7177          E(I1)=DM
7178           ENDIF
7179          GO TO 207
7180          ENDIF
7181 * 43 D(+)+N-->N*(0)(14)+P
7182           IF(M12.EQ.43)THEN
7183           IF(iabs(LB(I1)).EQ.8)THEN
7184           LB(I1)=1
7185           E(I1)=AMP
7186          LB(I2)=10
7187          E(I2)=DM
7188           ELSE
7189           LB(I2)=1
7190           E(I2)=AMP
7191          LB(I1)=10
7192          E(I1)=DM
7193           ENDIF
7194          GO TO 207
7195          ENDIF
7196 * 44 D(+)+N-->N*(0)(15)+P
7197           IF(M12.EQ.44)THEN
7198           IF(iabs(LB(I1)).EQ.8)THEN
7199           LB(I1)=1
7200           E(I1)=AMP
7201          LB(I2)=12
7202          E(I2)=DM
7203           ELSE
7204           LB(I2)=1
7205           E(I2)=AMP
7206          LB(I1)=12
7207          E(I1)=DM
7208           ENDIF
7209          GO TO 207
7210          ENDIF
7211 * 46 D(-)+P-->N*(0)(14)+N
7212           IF(M12.EQ.46)THEN
7213           IF(iabs(LB(I1)).EQ.6)THEN
7214           LB(I1)=2
7215           E(I1)=AMN
7216          LB(I2)=10
7217          E(I2)=DM
7218           ELSE
7219           LB(I2)=2
7220           E(I2)=AMN
7221          LB(I1)=10
7222          E(I1)=DM
7223           ENDIF
7224          GO TO 207
7225          ENDIF
7226 * 47 D(-)+P-->N*(0)(15)+N
7227           IF(M12.EQ.47)THEN
7228           IF(iabs(LB(I1)).EQ.6)THEN
7229           LB(I1)=2
7230           E(I1)=AMN
7231          LB(I2)=12
7232          E(I2)=DM
7233           ELSE
7234           LB(I2)=2
7235           E(I2)=AMN
7236          LB(I1)=12
7237          E(I1)=DM
7238           ENDIF
7239          GO TO 207
7240          ENDIF
7241 * 48 D(0)+N-->N*(0)(14)+N
7242           IF(M12.EQ.48)THEN
7243           IF(iabs(LB(I1)).EQ.7)THEN
7244           LB(I1)=2
7245           E(I1)=AMN
7246          LB(I2)=11
7247          E(I2)=DM
7248           ELSE
7249           LB(I2)=2
7250           E(I2)=AMN
7251          LB(I1)=11
7252          E(I1)=DM
7253           ENDIF
7254          GO TO 207
7255          ENDIF
7256 * 49 D(0)+N-->N*(0)(15)+N
7257           IF(M12.EQ.49)THEN
7258           IF(iabs(LB(I1)).EQ.7)THEN
7259           LB(I1)=2
7260           E(I1)=AMN
7261          LB(I2)=12
7262          E(I2)=DM
7263           ELSE
7264           LB(I2)=2
7265           E(I2)=AMN
7266          LB(I1)=12
7267          E(I1)=DM
7268           ENDIF
7269          GO TO 207
7270          ENDIF
7271 * 50 D(0)+P-->N*(0)(14)+P
7272           IF(M12.EQ.50)THEN
7273           IF(iabs(LB(I1)).EQ.7)THEN
7274           LB(I1)=1
7275           E(I1)=AMP
7276          LB(I2)=10
7277          E(I2)=DM
7278           ELSE
7279           LB(I2)=1
7280           E(I2)=AMP
7281          LB(I1)=10
7282          E(I1)=DM
7283           ENDIF
7284          GO TO 207
7285          ENDIF
7286 * 51 D(0)+P-->N*(+)(14)+N
7287           IF(M12.EQ.51)THEN
7288           IF(iabs(LB(I1)).EQ.7)THEN
7289           LB(I1)=2
7290           E(I1)=AMN
7291          LB(I2)=11
7292          E(I2)=DM
7293           ELSE
7294           LB(I2)=2
7295           E(I2)=AMN
7296          LB(I1)=11
7297          E(I1)=DM
7298           ENDIF
7299          GO TO 207
7300          ENDIF
7301 * 52 D(0)+P-->N*(0)(15)+P
7302           IF(M12.EQ.52)THEN
7303           IF(iabs(LB(I1)).EQ.7)THEN
7304           LB(I1)=1
7305           E(I1)=AMP
7306          LB(I2)=12
7307          E(I2)=DM
7308           ELSE
7309           LB(I2)=1
7310           E(I2)=AMP
7311          LB(I1)=12
7312          E(I1)=DM
7313           ENDIF
7314          GO TO 207
7315          ENDIF
7316 * 53 D(0)+P-->N*(+)(15)+N
7317           IF(M12.EQ.53)THEN
7318           IF(iabs(LB(I1)).EQ.7)THEN
7319           LB(I1)=2
7320           E(I1)=AMN
7321          LB(I2)=13
7322          E(I2)=DM
7323           ELSE
7324           LB(I2)=2
7325           E(I2)=AMN
7326          LB(I1)=13
7327          E(I1)=DM
7328           ENDIF
7329          GO TO 207
7330          ENDIF
7331 * 54 N*(0)(14)+P-->N*(+)(15)+N
7332           IF(M12.EQ.54)THEN
7333           IF(iabs(LB(I1)).EQ.10)THEN
7334           LB(I1)=2
7335           E(I1)=AMN
7336          LB(I2)=13
7337          E(I2)=DM
7338           ELSE
7339           LB(I2)=2
7340           E(I2)=AMN
7341          LB(I1)=13
7342          E(I1)=DM
7343           ENDIF
7344          GO TO 207
7345          ENDIF
7346 * 55 N*(0)(14)+P-->N*(0)(15)+P
7347           IF(M12.EQ.55)THEN
7348           IF(iabs(LB(I1)).EQ.10)THEN
7349           LB(I1)=1
7350           E(I1)=AMP
7351          LB(I2)=12
7352          E(I2)=DM
7353           ELSE
7354           LB(I2)=1
7355           E(I2)=AMP
7356          LB(I1)=12
7357          E(I1)=DM
7358           ENDIF
7359          GO TO 207
7360          ENDIF
7361 * 56 N*(+)(14)+N-->N*(+)(15)+N
7362           IF(M12.EQ.56)THEN
7363           IF(iabs(LB(I1)).EQ.11)THEN
7364           LB(I1)=2
7365           E(I1)=AMN
7366          LB(I2)=13
7367          E(I2)=DM
7368           ELSE
7369           LB(I2)=2
7370           E(I2)=AMN
7371          LB(I1)=13
7372          E(I1)=DM
7373           ENDIF
7374          GO TO 207
7375          ENDIF
7376 * 57 N*(+)(14)+N-->N*(0)(15)+P
7377           IF(M12.EQ.57)THEN
7378           IF(iabs(LB(I1)).EQ.11)THEN
7379           LB(I1)=1
7380           E(I1)=AMP
7381          LB(I2)=12
7382          E(I2)=DM
7383           ELSE
7384           LB(I2)=1
7385           E(I2)=AMP
7386          LB(I1)=12
7387          E(I1)=DM
7388           ENDIF
7389          ENDIF
7390           GO TO 207
7391 *------------------------------------------------
7392 * RELABLE NUCLEONS AFTER DELTA OR N* BEING ABSORBED
7393 *(1) n+delta(+)-->n+p
7394 206       IF(M12.EQ.1)THEN
7395           IF(iabs(LB(I1)).EQ.8)THEN
7396           LB(I2)=2
7397           LB(I1)=1
7398           E(I1)=AMP
7399           ELSE
7400           LB(I1)=2
7401           LB(I2)=1
7402           E(I2)=AMP
7403           ENDIF
7404          GO TO 207
7405           ENDIF
7406 *(2) p+delta(0)-->p+n
7407           IF(M12.EQ.2)THEN
7408           IF(iabs(LB(I1)).EQ.7)THEN
7409           LB(I2)=1
7410           LB(I1)=2
7411           E(I1)=AMN
7412           ELSE
7413           LB(I1)=1
7414           LB(I2)=2
7415           E(I2)=AMN
7416           ENDIF
7417          GO TO 207
7418           ENDIF
7419 *(3) n+delta(++)-->p+p
7420           IF(M12.EQ.3)THEN
7421           LB(I1)=1
7422           LB(I2)=1
7423           E(I1)=AMP
7424           E(I2)=AMP
7425          GO TO 207
7426           ENDIF
7427 *(4) p+delta(+)-->p+p
7428           IF(M12.EQ.4)THEN
7429           LB(I1)=1
7430           LB(I2)=1
7431           E(I1)=AMP
7432           E(I2)=AMP
7433          GO TO 207
7434           ENDIF
7435 *(5) n+delta(0)-->n+n
7436           IF(M12.EQ.5)THEN
7437           LB(I1)=2
7438           LB(I2)=2
7439           E(I1)=AMN
7440           E(I2)=AMN
7441          GO TO 207
7442           ENDIF
7443 *(6) p+delta(-)-->n+n
7444           IF(M12.EQ.6)THEN
7445           LB(I1)=2
7446           LB(I2)=2
7447           E(I1)=AMN
7448           E(I2)=AMN
7449          GO TO 207
7450           ENDIF
7451 *(7) p+N*(0)-->n+p
7452           IF(M12.EQ.7)THEN
7453           IF(iabs(LB(I1)).EQ.1)THEN
7454           LB(I1)=1
7455           LB(I2)=2
7456           E(I1)=AMP
7457           E(I2)=AMN
7458           ELSE
7459           LB(I1)=2
7460           LB(I2)=1
7461           E(I1)=AMN
7462           E(I2)=AMP
7463           ENDIF
7464          GO TO 207
7465           ENDIF
7466 *(8) n+N*(+)-->n+p
7467           IF(M12.EQ.8)THEN
7468           IF(iabs(LB(I1)).EQ.2)THEN
7469           LB(I1)=2
7470           LB(I2)=1
7471           E(I1)=AMN
7472           E(I2)=AMP
7473           ELSE
7474           LB(I1)=1
7475           LB(I2)=2
7476           E(I1)=AMP
7477           E(I2)=AMN
7478           ENDIF
7479          GO TO 207
7480           ENDIF
7481 clin-6/2008
7482 c*(9) N*(+)p-->pp
7483 *(9) N*(+)(1535) p-->pp
7484           IF(M12.EQ.9)THEN
7485           LB(I1)=1
7486           LB(I2)=1
7487           E(I1)=AMP
7488           E(I2)=AMP
7489          GO TO 207
7490          ENDIF
7491 *(12) N*(0)P-->nP
7492           IF(M12.EQ.12)THEN
7493           LB(I1)=2
7494           LB(I2)=1
7495           E(I1)=AMN
7496           E(I2)=AMP
7497          GO TO 207
7498          ENDIF
7499 *(11) N*(+)n-->nP
7500           IF(M12.EQ.11)THEN
7501           LB(I1)=2
7502           LB(I2)=1
7503           E(I1)=AMN
7504           E(I2)=AMP
7505          GO TO 207
7506          ENDIF
7507 clin-6/2008
7508 c*(12) N*(0)p-->Np
7509 *(12) N*(0)(1535) p-->Np
7510           IF(M12.EQ.12)THEN
7511           LB(I1)=1
7512           LB(I2)=2
7513           E(I1)=AMP
7514           E(I2)=AMN
7515          ENDIF
7516 *----------------------------------------------
7517 207       PR   = PRF
7518           C1   = 1.0 - 2.0 * RANART(NSEED)
7519               if(srt.le.2.14)C1= 1.0 - 2.0 * RANART(NSEED)
7520          if(srt.gt.2.14.and.srt.le.2.4)c1=ang(srt,iseed)
7521          if(srt.gt.2.4)then
7522
7523 clin-10/25/02 get rid of argument usage mismatch in PTR():
7524              xptr=0.33*pr
7525 c         cc1=ptr(0.33*pr,iseed)
7526          cc1=ptr(xptr,iseed)
7527 clin-10/25/02-end
7528
7529          c1=sqrt(pr**2-cc1**2)/pr
7530          endif
7531           T1   = 2.0 * PI * RANART(NSEED)
7532           IBLOCK=3
7533       ENDIF
7534       if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
7535          lb(i1) = -lb(i1)
7536          lb(i2) = -lb(i2)
7537       endif
7538
7539 *-----------------------------------------------------------------------
7540 *COM: SET THE NEW MOMENTUM COORDINATES
7541  107  IF(PX .EQ. 0.0 .AND. PY .EQ. 0.0) THEN
7542          T2 = 0.0
7543       ELSE
7544          T2=ATAN2(PY,PX)
7545       END IF
7546       S1   = SQRT( 1.0 - C1**2 )
7547       S2  =  SQRT( 1.0 - C2**2 )
7548       CT1  = COS(T1)
7549       ST1  = SIN(T1)
7550       CT2  = COS(T2)
7551       ST2  = SIN(T2)
7552       PZ   = PR * ( C1*C2 - S1*S2*CT1 )
7553       SS   = C2 * S1 * CT1  +  S2 * C1
7554       PX   = PR * ( SS*CT2 - S1*ST1*ST2 )
7555       PY   = PR * ( SS*ST2 + S1*ST1*CT2 )
7556       RETURN
7557 * FOR THE NN-->KAON+X PROCESS, FIND MOMENTUM OF THE FINAL PARTICLES IN 
7558 * THE NUCLEUS-NUCLEUS CMS.
7559 306     CONTINUE
7560 csp11/21/01 phi production
7561               if(XSK5/sigK.gt.RANART(NSEED))then
7562               pz1=p(3,i1)
7563               pz2=p(3,i2)
7564                 LB(I1) = 1 + int(2 * RANART(NSEED))
7565                 LB(I2) = 1 + int(2 * RANART(NSEED))
7566               nnn=nnn+1
7567                 LPION(NNN,IRUN)=29
7568                 EPION(NNN,IRUN)=APHI
7569                 iblock = 222
7570               GO TO 208
7571                ENDIF
7572 csp11/21/01 end
7573                 IBLOCK=11
7574                 if(ianti .eq. 1)iblock=-11
7575 c
7576               pz1=p(3,i1)
7577               pz2=p(3,i2)
7578 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
7579               nnn=nnn+1
7580                 LPION(NNN,IRUN)=23
7581                 EPION(NNN,IRUN)=Aka
7582               if(srt.le.2.63)then
7583 * only lambda production is possible
7584 * (1.1)P+P-->p+L+kaon+
7585               ic=1
7586
7587                 LB(I1) = 1 + int(2 * RANART(NSEED))
7588               LB(I2)=14
7589               GO TO 208
7590                 ENDIF
7591        if(srt.le.2.74.and.srt.gt.2.63)then
7592 * both Lambda and sigma production are possible
7593               if(XSK1/(XSK1+XSK2).gt.RANART(NSEED))then
7594 * lambda production
7595               ic=1
7596
7597                 LB(I1) = 1 + int(2 * RANART(NSEED))
7598               LB(I2)=14
7599               else
7600 * sigma production
7601
7602                    LB(I1) = 1 + int(2 * RANART(NSEED))
7603                    LB(I2) = 15 + int(3 * RANART(NSEED))
7604               ic=2
7605               endif
7606               GO TO 208
7607        endif
7608        if(srt.le.2.77.and.srt.gt.2.74)then
7609 * then pp-->Delta lamda kaon can happen
7610               if(xsk1/(xsk1+xsk2+xsk3).
7611      1          gt.RANART(NSEED))then
7612 * * (1.1)P+P-->p+L+kaon+
7613               ic=1
7614
7615                 LB(I1) = 1 + int(2 * RANART(NSEED))
7616               LB(I2)=14
7617               go to 208
7618               else
7619               if(xsk2/(xsk2+xsk3).gt.RANART(NSEED))then
7620 * pp-->psk
7621               ic=2
7622
7623                 LB(I1) = 1 + int(2 * RANART(NSEED))
7624                 LB(I2) = 15 + int(3 * RANART(NSEED))
7625
7626               else
7627 * pp-->D+l+k        
7628               ic=3
7629
7630                 LB(I1) = 6 + int(4 * RANART(NSEED))
7631               lb(i2)=14
7632               endif
7633               GO TO 208
7634               endif
7635        endif
7636        if(srt.gt.2.77)then
7637 * all four channels are possible
7638               if(xsk1/(xsk1+xsk2+xsk3+xsk4).gt.RANART(NSEED))then
7639 * p lambda k production
7640               ic=1
7641
7642                 LB(I1) = 1 + int(2 * RANART(NSEED))
7643               LB(I2)=14
7644               go to 208
7645        else
7646           if(xsk3/(xsk2+xsk3+xsk4).gt.RANART(NSEED))then
7647 * delta l K production
7648               ic=3
7649
7650                 LB(I1) = 6 + int(4 * RANART(NSEED))
7651               lb(i2)=14
7652               go to 208
7653           else
7654               if(xsk2/(xsk2+xsk4).gt.RANART(NSEED))then
7655 * n sigma k production
7656
7657                    LB(I1) = 1 + int(2 * RANART(NSEED))
7658                    LB(I2) = 15 + int(3 * RANART(NSEED))
7659
7660               ic=2
7661               else
7662               ic=4
7663
7664                 LB(I1) = 6 + int(4 * RANART(NSEED))
7665                 LB(I2) = 15 + int(3 * RANART(NSEED))
7666
7667               endif
7668               go to 208
7669           endif
7670        endif
7671        endif
7672 208             continue
7673          if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
7674           lb(i1) = - lb(i1)
7675           lb(i2) = - lb(i2)
7676           if(LPION(NNN,IRUN) .eq. 23)LPION(NNN,IRUN)=21
7677          endif
7678        lbi1=lb(i1)
7679        lbi2=lb(i2)
7680 * KEEP ALL COORDINATES OF PARTICLE 2 FOR POSSIBLE PHASE SPACE CHANGE
7681            NTRY1=0
7682 128        CALL BBKAON(ic,SRT,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
7683      &  PPX,PPY,PPZ,icou1)
7684        NTRY1=NTRY1+1
7685        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 128
7686 c       if(icou1.lt.0)return
7687 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
7688        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
7689        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
7690        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
7691 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
7692 * NUCLEUS CMS. FRAME 
7693 * (1) for the necleon/delta
7694 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
7695               E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
7696               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
7697               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
7698               Pt1i1 = BETAX * TRANSF + PX3
7699               Pt2i1 = BETAY * TRANSF + PY3
7700               Pt3i1 = BETAZ * TRANSF + PZ3
7701              Eti1   = DM3
7702 * (2) for the lambda/sigma
7703                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
7704                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
7705                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
7706                 Pt1I2 = BETAX * TRANSF + PX4
7707                 Pt2I2 = BETAY * TRANSF + PY4
7708                 Pt3I2 = BETAZ * TRANSF + PZ4
7709               EtI2   = DM4
7710 * GET the kaon'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
7711                 EPCM=SQRT(aka**2+PPX**2+PPY**2+PPZ**2)
7712                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
7713                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
7714                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
7715                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
7716                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
7717 clin-5/2008:
7718                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
7719 clin-5/2008:
7720 c2008        X01 = 1.0 - 2.0 * RANART(NSEED)
7721 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
7722 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
7723 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2008
7724 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
7725 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
7726 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
7727                     RPION(1,NNN,IRUN)=R(1,I1)
7728                     RPION(2,NNN,IRUN)=R(2,I1)
7729                     RPION(3,NNN,IRUN)=R(3,I1)
7730 c
7731 * assign the nucleon/delta and lambda/sigma to i1 or i2 to keep the 
7732 * leadng particle behaviour
7733 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
7734               p(1,i1)=pt1i1
7735               p(2,i1)=pt2i1
7736               p(3,i1)=pt3i1
7737               e(i1)=eti1
7738               lb(i1)=lbi1
7739               p(1,i2)=pt1i2
7740               p(2,i2)=pt2i2
7741               p(3,i2)=pt3i2
7742               e(i2)=eti2
7743               lb(i2)=lbi2
7744                 PX1     = P(1,I1)
7745                 PY1     = P(2,I1)
7746                 PZ1     = P(3,I1)
7747               EM1       = E(I1)
7748                 ID(I1)  = 2
7749                 ID(I2)  = 2
7750                 ID1     = ID(I1)
7751                 if(LPION(NNN,IRUN) .ne. 29) IBLOCK=11
7752         LB1=LB(I1)
7753         LB2=LB(I2)
7754         AM1=EM1
7755        am2=em2
7756         E1= SQRT( EM1**2 + PX1**2 + PY1**2 + PZ1**2 )
7757        RETURN
7758
7759 clin-6/2008 N+D->Deuteron+pi:
7760 *     FIND MOMENTUM OF THE FINAL PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
7761  108   CONTINUE
7762            if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
7763 c     For idpert=1: we produce npertd pert deuterons:
7764               ndloop=npertd
7765            elseif(idpert.eq.2.and.npertd.ge.1) then
7766 c     For idpert=2: we first save information for npertd pert deuterons;
7767 c     at the last ndloop we create the regular deuteron+pi 
7768 c     and those pert deuterons:
7769               ndloop=npertd+1
7770            else
7771 c     Just create the regular deuteron+pi:
7772               ndloop=1
7773            endif
7774 c
7775            dprob1=sdprod/sig/float(npertd)
7776            do idloop=1,ndloop
7777               CALL bbdangle(pxd,pyd,pzd,nt,ipert1,ianti,idloop,pfinal,
7778      1 dprob1,lbm)
7779               CALL ROTATE(PX,PY,PZ,PXd,PYd,PZd)
7780 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
7781 *     FROM THE NN CMS FRAME INTO THE GLOBAL CMS FRAME:
7782 *     For the Deuteron:
7783               xmass=xmd
7784               E1dCM=SQRT(xmass**2+PXd**2+PYd**2+PZd**2)
7785               P1dBETA=PXd*BETAX+PYd*BETAY+PZd*BETAZ
7786               TRANSF=GAMMA*(GAMMA*P1dBETA/(GAMMA+1.)+E1dCM)
7787               pxi1=BETAX*TRANSF+PXd
7788               pyi1=BETAY*TRANSF+PYd
7789               pzi1=BETAZ*TRANSF+PZd
7790               if(ianti.eq.0)then
7791                  lbd=42
7792               else
7793                  lbd=-42
7794               endif
7795               if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
7796 cccc  Perturbative production for idpert=1:
7797                  nnn=nnn+1
7798                  PPION(1,NNN,IRUN)=pxi1
7799                  PPION(2,NNN,IRUN)=pyi1
7800                  PPION(3,NNN,IRUN)=pzi1
7801                  EPION(NNN,IRUN)=xmd
7802                  LPION(NNN,IRUN)=lbd
7803                  RPION(1,NNN,IRUN)=R(1,I1)
7804                  RPION(2,NNN,IRUN)=R(2,I1)
7805                  RPION(3,NNN,IRUN)=R(3,I1)
7806 clin-6/2008 assign the perturbative probability:
7807                  dppion(NNN,IRUN)=sdprod/sig/float(npertd)
7808               elseif(idpert.eq.2.and.idloop.le.npertd) then
7809 clin-6/2008 For idpert=2, we produce NPERTD perturbative (anti)deuterons 
7810 c     only when a regular (anti)deuteron+pi is produced in NN collisions.
7811 c     First save the info for the perturbative deuterons:
7812                  ppd(1,idloop)=pxi1
7813                  ppd(2,idloop)=pyi1
7814                  ppd(3,idloop)=pzi1
7815                  lbpd(idloop)=lbd
7816               else
7817 cccc  Regular production:
7818 c     For the regular pion: do LORENTZ-TRANSFORMATION:
7819                  E(i1)=xmm
7820                  E2piCM=SQRT(xmm**2+PXd**2+PYd**2+PZd**2)
7821                  P2piBETA=-PXd*BETAX-PYd*BETAY-PZd*BETAZ
7822                  TRANSF=GAMMA*(GAMMA*P2piBETA/(GAMMA+1.)+E2piCM)
7823                  pxi2=BETAX*TRANSF-PXd
7824                  pyi2=BETAY*TRANSF-PYd
7825                  pzi2=BETAZ*TRANSF-PZd
7826                  p(1,i1)=pxi2
7827                  p(2,i1)=pyi2
7828                  p(3,i1)=pzi2
7829 c     Remove regular pion to check the equivalence 
7830 c     between the perturbative and regular deuteron results:
7831 c                 E(i1)=0.
7832 c
7833                  LB(I1)=lbm
7834                  PX1=P(1,I1)
7835                  PY1=P(2,I1)
7836                  PZ1=P(3,I1)
7837                  EM1=E(I1)
7838                  ID(I1)=2
7839                  ID1=ID(I1)
7840                  E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
7841                  lb1=lb(i1)
7842 c     For the regular deuteron:
7843                  p(1,i2)=pxi1
7844                  p(2,i2)=pyi1
7845                  p(3,i2)=pzi1
7846                  lb(i2)=lbd
7847                  lb2=lb(i2)
7848                  E(i2)=xmd
7849                  EtI2=E(I2)
7850                  ID(I2)=2
7851 c     For idpert=2: create the perturbative deuterons:
7852                  if(idpert.eq.2.and.idloop.eq.ndloop) then
7853                     do ipertd=1,npertd
7854                        nnn=nnn+1
7855                        PPION(1,NNN,IRUN)=ppd(1,ipertd)
7856                        PPION(2,NNN,IRUN)=ppd(2,ipertd)
7857                        PPION(3,NNN,IRUN)=ppd(3,ipertd)
7858                        EPION(NNN,IRUN)=xmd
7859                        LPION(NNN,IRUN)=lbpd(ipertd)
7860                        RPION(1,NNN,IRUN)=R(1,I1)
7861                        RPION(2,NNN,IRUN)=R(2,I1)
7862                        RPION(3,NNN,IRUN)=R(3,I1)
7863 clin-6/2008 assign the perturbative probability:
7864                        dppion(NNN,IRUN)=1./float(npertd)
7865                     enddo
7866                  endif
7867               endif
7868            enddo
7869            IBLOCK=501
7870            return
7871 clin-6/2008 N+D->Deuteron+pi over
7872
7873       END
7874 **********************************
7875 *                                                                      *
7876 *                                                                      *
7877       SUBROUTINE CRDD(IRUN,PX,PY,PZ,SRT,I1,I2,IBLOCK,
7878      1NTAG,SIGNN,SIG,NT,ipert1)
7879 c     1NTAG,SIGNN,SIG)
7880 *     PURPOSE:                                                         *
7881 *             DEALING WITH BARYON RESONANCE-BARYON RESONANCE COLLISIONS*
7882 *     NOTE   :                                                         *
7883 *     QUANTITIES:                                                 *
7884 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
7885 *           SRT      - SQRT OF S                                       *
7886 *           NSTAR =1 INCLUDING N* RESORANCE,ELSE NOT                   *
7887 *           NDIRCT=1 INCLUDING DIRECT PION PRODUCTION PROCESS         *
7888 *           IBLOCK   - THE INFORMATION BACK                            *
7889 *                      0-> COLLISION CANNOT HAPPEN                     *
7890 *                      1-> N-N ELASTIC COLLISION                       *
7891 *                      2-> N+N->N+DELTA,OR N+N->N+N* REACTION          *
7892 *                      3-> N+DELTA->N+N OR N+N*->N+N REACTION          *
7893 *                      4-> N+N->N+N+PION,DIRTCT PROCESS                *
7894 *                     5-> DELTA(N*)+DELTA(N*)   TOTAL   COLLISIONS    *
7895 *           N12       - IS USED TO SPECIFY BARYON-BARYON REACTION      *
7896 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
7897 *                      N12,                                            *
7898 *                      M12=1 FOR p+n-->delta(+)+ n                     *
7899 *                          2     p+n-->delta(0)+ p                     *
7900 *                          3     p+p-->delta(++)+n                     *
7901 *                          4     p+p-->delta(+)+p                      *
7902 *                          5     n+n-->delta(0)+n                      *
7903 *                          6     n+n-->delta(-)+p                      *
7904 *                          7     n+p-->N*(0)(1440)+p                   *
7905 *                          8     n+p-->N*(+)(1440)+n                   *
7906 *                        9     p+p-->N*(+)(1535)+p                     *
7907 *                        10    n+n-->N*(0)(1535)+n                     *
7908 *                         11    n+p-->N*(+)(1535)+n                     *
7909 *                        12    n+p-->N*(0)(1535)+p
7910 *                        13    D(++)+D(-)-->N*(+)(1440)+n
7911 *                         14    D(++)+D(-)-->N*(0)(1440)+p
7912 *                        15    D(+)+D(0)--->N*(+)(1440)+n
7913 *                        16    D(+)+D(0)--->N*(0)(1440)+p
7914 *                        17    D(++)+D(0)-->N*(+)(1535)+p
7915 *                        18    D(++)+D(-)-->N*(0)(1535)+p
7916 *                        19    D(++)+D(-)-->N*(+)(1535)+n
7917 *                        20    D(+)+D(+)-->N*(+)(1535)+p
7918 *                        21    D(+)+D(0)-->N*(+)(1535)+n
7919 *                        22    D(+)+D(0)-->N*(0)(1535)+p
7920 *                        23    D(+)+D(-)-->N*(0)(1535)+n
7921 *                        24    D(0)+D(0)-->N*(0)(1535)+n
7922 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
7923 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
7924 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
7925 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
7926 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
7927 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
7928 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
7929 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
7930 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
7931 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
7932 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
7933 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
7934 *                        +++
7935 *               AND MORE CHANNELS AS LISTED IN THE NOTE BOOK      
7936 *
7937 * NOTE ABOUT N*(1440) RESORANCE:                                       *
7938 *     As it has been discussed in VerWest's paper,I= 1 (initial isospin)
7939 *     channel can all be attributed to delta resorance while I= 0      *
7940 *     channel can all be  attribured to N* resorance.Only in n+p       *
7941 *     one can have I=0 channel so is the N*(1440) resorance            *
7942 * REFERENCES:    J. CUGNON ET AL., NUCL. PHYS. A352, 505 (1981)        *
7943 *                    Y. KITAZOE ET AL., PHYS. LETT. 166B, 35 (1986)    *
7944 *                    B. VerWest el al., PHYS. PRV. C25 (1982)1979      *
7945 *                    Gy. Wolf  et al, Nucl Phys A517 (1990) 615        *
7946 *                    CUTOFF = 2 * AVMASS + 20 MEV                      *
7947 *                                                                      *
7948 *       for N*(1535) we use the parameterization by Gy. Wolf et al     *
7949 *       Nucl phys A552 (1993) 349, added May 18, 1994                  *
7950 **********************************
7951         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
7952      1  AMP=0.93828,AP1=0.13496,AKA=0.498,APHI=1.020,
7953      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
7954         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
7955         parameter (xmd=1.8756,npdmax=10000)
7956         COMMON /AA/ R(3,MAXSTR)
7957 cc      SAVE /AA/
7958         COMMON /BB/ P(3,MAXSTR)
7959 cc      SAVE /BB/
7960         COMMON /CC/ E(MAXSTR)
7961 cc      SAVE /CC/
7962         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
7963 cc      SAVE /EE/
7964         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
7965 cc      SAVE /ff/
7966         common /gg/ dx,dy,dz,dpx,dpy,dpz
7967 cc      SAVE /gg/
7968         COMMON /INPUT/ NSTAR,NDIRCT,DIR
7969 cc      SAVE /INPUT/
7970         COMMON /NN/NNN
7971 cc      SAVE /NN/
7972         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
7973 cc      SAVE /BG/
7974         COMMON   /RUN/NUM
7975 cc      SAVE /RUN/
7976         COMMON   /PA/RPION(3,MAXSTR,MAXR)
7977 cc      SAVE /PA/
7978         COMMON   /PB/PPION(3,MAXSTR,MAXR)
7979 cc      SAVE /PB/
7980         COMMON   /PC/EPION(MAXSTR,MAXR)
7981 cc      SAVE /PC/
7982         COMMON   /PD/LPION(MAXSTR,MAXR)
7983 cc      SAVE /PD/
7984         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
7985 cc      SAVE /input1/
7986       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
7987      1 px1n,py1n,pz1n,dp1n
7988 cc      SAVE /leadng/
7989       COMMON/RNDF77/NSEED
7990 cc      SAVE /RNDF77/
7991       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
7992      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
7993      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
7994       common /dpi/em2,lb2
7995       common /para8/ idpert,npertd,idxsec
7996       dimension ppd(3,npdmax),lbpd(npdmax)
7997       SAVE   
7998 *-----------------------------------------------------------------------
7999        n12=0
8000        m12=0
8001         IBLOCK=0
8002         NTAG=0
8003         EM1=E(I1)
8004         EM2=E(I2)
8005       PR  = SQRT( PX**2 + PY**2 + PZ**2 )
8006       C2  = PZ / PR
8007       IF(PX .EQ. 0.0 .AND. PY .EQ. 0.0) THEN
8008         T2 = 0.0
8009       ELSE
8010         T2=ATAN2(PY,PX)
8011       END IF
8012       X1  = RANART(NSEED)
8013       ianti=0
8014       if(lb(i1).lt.0 .and. lb(i2).lt.0)ianti=1
8015
8016 clin-6/2008 Production of perturbative deuterons for idpert=1:
8017       call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
8018       if(idpert.eq.1.and.ipert1.eq.1) then
8019          IF (SRT .LT. 2.012) RETURN
8020          if((iabs(lb(i1)).ge.6.and.iabs(lb(i1)).le.13)
8021      1        .and.(iabs(lb(i2)).ge.6.and.iabs(lb(i2)).le.13)) then
8022             goto 108
8023          else
8024             return
8025          endif
8026       endif
8027       
8028 *-----------------------------------------------------------------------
8029 *COM: TEST FOR ELASTIC SCATTERING (EITHER N-N OR DELTA-DELTA 0R
8030 *      N-DELTA OR N*-N* or N*-Delta)
8031       IF (X1 .LE. SIGNN/SIG) THEN
8032 *COM:  PARAMETRISATION IS TAKEN FROM THE CUGNON-PAPER
8033         AS  = ( 3.65 * (SRT - 1.8766) )**6
8034         A   = 6.0 * AS / (1.0 + AS)
8035         TA  = -2.0 * PR**2
8036         X   = RANART(NSEED)
8037 clin-10/24/02        T1  = DLOG( (1-X) * DEXP(dble(A)*dble(TA)) + X )  /  A
8038         T1  = sngl(DLOG(dble(1.-X)*DEXP(dble(A)*dble(TA))+dble(X)))/  A
8039         C1  = 1.0 - T1/TA
8040         T1  = 2.0 * PI * RANART(NSEED)
8041         IBLOCK=20
8042        GO TO 107
8043       ELSE
8044 *COM: TEST FOR INELASTIC SCATTERING
8045 *     IF THE AVAILABLE ENERGY IS LESS THAN THE PION-MASS, NOTHING
8046 *     CAN HAPPEN ANY MORE ==> RETURN (2.15 = 2*AVMASS +2*PI-MASS)
8047         IF (SRT .LT. 2.15) RETURN
8048 *     IF THERE WERE 2 N*(1535) AND THEY DIDN'T SCATT. ELAST., 
8049 *     ALLOW THEM TO PRODUCE KAONS. NO OTHER INELASTIC CHANNELS
8050 *     ARE KNOWN
8051 C       if((lb(i1).ge.12).and.(lb(i2).ge.12))return
8052 *     ALL the inelastic collisions between N*(1535) and Delta as well
8053 *     as N*(1440) TO PRODUCE KAONS, NO OTHER CHANNELS ARE KNOWN
8054 C       if((lb(i1).ge.12).and.(lb(i2).ge.3))return
8055 C       if((lb(i2).ge.12).and.(lb(i1).ge.3))return
8056 *     calculate the N*(1535) production cross section in I1+I2 collisions
8057        call N1535(iabs(lb(i1)),iabs(lb(i2)),srt,X1535)
8058
8059 * for Delta+Delta-->N*(1440 OR 1535)+N AND N*(1440)+N*(1440)-->N*(1535)+X 
8060 *     AND DELTA+N*(1440)-->N*(1535)+X
8061 * WE ASSUME THEY HAVE THE SAME CROSS SECTIONS as CORRESPONDING N+N COLLISION):
8062 * FOR D++D0, D+D+,D+D-,D0D0,N*+N*+,N*0N*0,N*(+)D+,N*(+)D(-),N*(0)D(0)
8063 * N*(1535) production, kaon production and reabsorption through 
8064 * D(N*)+D(N*)-->NN are ALLOWED.
8065 * CROSS SECTION FOR KAON PRODUCTION from the four channels are
8066 * for NLK channel
8067        akp=0.498
8068        ak0=0.498
8069        ana=0.938
8070        ada=1.232
8071        al=1.1157
8072        as=1.1197
8073        xsk1=0
8074        xsk2=0
8075        xsk3=0
8076        xsk4=0
8077        xsk5=0
8078        t1nlk=ana+al+akp
8079        if(srt.le.t1nlk)go to 222
8080        XSK1=1.5*PPLPK(SRT)
8081 * for DLK channel
8082        t1dlk=ada+al+akp
8083        t2dlk=ada+al-akp
8084        if(srt.le.t1dlk)go to 222
8085        es=srt
8086        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
8087        pmdlk=sqrt(pmdlk2)
8088        XSK3=1.5*PPLPK(srt)
8089 * for NSK channel
8090        t1nsk=ana+as+akp
8091        t2nsk=ana+as-akp
8092        if(srt.le.t1nsk)go to 222
8093        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
8094        pmnsk=sqrt(pmnsk2)
8095        XSK2=1.5*(PPK1(srt)+PPK0(srt))
8096 * for DSK channel
8097        t1DSk=aDa+aS+akp
8098        t2DSk=aDa+aS-akp
8099        if(srt.le.t1dsk)go to 222
8100        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
8101        pmDSk=sqrt(pmDSk2)
8102        XSK4=1.5*(PPK1(srt)+PPK0(srt))
8103 csp11/21/01
8104 c phi production
8105        if(srt.le.(2.*amn+aphi))go to 222
8106 c  !! mb put the correct form
8107          xsk5 = 0.0001
8108 csp11/21/01 end
8109 * THE TOTAL KAON+ PRODUCTION CROSS SECTION IS THEN
8110 222       SIGK=XSK1+XSK2+XSK3+XSK4
8111
8112 cbz3/7/99 neutralk
8113         XSK1 = 2.0 * XSK1
8114         XSK2 = 2.0 * XSK2
8115         XSK3 = 2.0 * XSK3
8116         XSK4 = 2.0 * XSK4
8117         SIGK = 2.0 * SIGK + xsk5
8118 cbz3/7/99 neutralk end
8119
8120 * The reabsorption cross section for the process
8121 * D(N*)D(N*)-->NN is
8122        s2d=reab2d(i1,i2,srt)
8123
8124 cbz3/16/99 pion
8125         S2D = 0.
8126 cbz3/16/99 pion end
8127
8128 *(1) N*(1535)+D(N*(1440)) reactions
8129 *    we allow kaon production and reabsorption only
8130        if(((iabs(lb(i1)).ge.12).and.(iabs(lb(i2)).ge.12)).OR.
8131      &       ((iabs(lb(i1)).ge.12).and.(iabs(lb(i2)).ge.6)).OR.
8132      &       ((iabs(lb(i2)).ge.12).and.(iabs(lb(i1)).ge.6)))THEN
8133        signd=sigk+s2d
8134 clin-6/2008
8135        IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
8136 c       if(x1.gt.(signd+signn)/sig)return
8137        if(x1.gt.(signd+signn+sdprod)/sig)return
8138 c
8139 * if kaon production
8140 clin-6/2008
8141 c       IF(SIGK/SIG.GE.RANART(NSEED))GO TO 306
8142        IF((SIGK+sdprod)/SIG.GE.RANART(NSEED))GO TO 306
8143 c
8144 * if reabsorption
8145        go to 1012
8146        ENDIF
8147        IDD=iabs(LB(I1)*LB(I2))
8148 * channels have the same charge as pp 
8149         IF((IDD.EQ.63).OR.(IDD.EQ.64).OR.(IDD.EQ.48).
8150      1  OR.(IDD.EQ.49).OR.(IDD.EQ.11*11).OR.(IDD.EQ.10*10).
8151      2  OR.(IDD.EQ.88).OR.(IDD.EQ.66).
8152      3  OR.(IDD.EQ.90).OR.(IDD.EQ.70))THEN
8153         SIGND=X1535+SIGK+s2d
8154 clin-6/2008
8155         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
8156 c        IF (X1.GT.(SIGNN+SIGND)/SIG)RETURN
8157         IF (X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
8158 c
8159 * if kaon production
8160        IF(SIGK/SIGND.GT.RANART(NSEED))GO TO 306
8161 * if reabsorption
8162        if(s2d/(x1535+s2d).gt.RANART(NSEED))go to 1012
8163 * if N*(1535) production
8164        IF(IDD.EQ.63)N12=17
8165        IF(IDD.EQ.64)N12=20
8166        IF(IDD.EQ.48)N12=23
8167        IF(IDD.EQ.49)N12=24
8168        IF(IDD.EQ.121)N12=25
8169        IF(IDD.EQ.100)N12=26
8170        IF(IDD.EQ.88)N12=29
8171        IF(IDD.EQ.66)N12=31
8172        IF(IDD.EQ.90)N12=32
8173        IF(IDD.EQ.70)N12=35
8174        GO TO 1011
8175         ENDIF
8176 * IN DELTA+N*(1440) and N*(1440)+N*(1440) COLLISIONS, 
8177 * N*(1535), kaon production and reabsorption are ALLOWED
8178 * IN N*(1440)+N*(1440) COLLISIONS, ONLY N*(1535) IS ALLOWED
8179        IF((IDD.EQ.110).OR.(IDD.EQ.77).OR.(IDD.EQ.80))THEN
8180 clin-6/2008
8181           IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
8182 c       IF(X1.GT.(SIGNN+X1535+SIGK+s2d)/SIG)RETURN
8183           IF(X1.GT.(SIGNN+X1535+SIGK+s2d+sdprod)/SIG)RETURN
8184 c
8185        IF(SIGK/(X1535+SIGK+s2d).GT.RANART(NSEED))GO TO 306
8186        if(s2d/(x1535+s2d).gt.RANART(NSEED))go to 1012
8187        IF(IDD.EQ.77)N12=30
8188        IF((IDD.EQ.77).AND.(RANART(NSEED).LE.0.5))N12=36
8189        IF(IDD.EQ.80)N12=34
8190        IF((IDD.EQ.80).AND.(RANART(NSEED).LE.0.5))N12=35
8191        IF(IDD.EQ.110)N12=27
8192        IF((IDD.EQ.110).AND.(RANART(NSEED).LE.0.5))N12=28
8193        GO TO 1011
8194         ENDIF
8195        IF((IDD.EQ.54).OR.(IDD.EQ.56))THEN
8196 * LIKE FOR N+P COLLISION, 
8197 * IN DELTA+DELTA COLLISIONS BOTH N*(1440) AND N*(1535) CAN BE PRODUCED
8198         SIG2=(3./4.)*SIGMA(SRT,2,0,1)
8199         SIGND=2.*(SIG2+X1535)+SIGK+s2d
8200 clin-6/2008
8201         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
8202 c        IF(X1.GT.(SIGNN+SIGND)/SIG)RETURN
8203         IF(X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
8204 c
8205        IF(SIGK/SIGND.GT.RANART(NSEED))GO TO 306
8206        if(s2d/(2.*(sig2+x1535)+s2d).gt.RANART(NSEED))go to 1012
8207        IF(RANART(NSEED).LT.X1535/(SIG2+X1535))THEN
8208 * N*(1535) PRODUCTION
8209        IF(IDD.EQ.54)N12=18
8210        IF((IDD.EQ.54).AND.(RANART(NSEED).LE.0.5))N12=19
8211        IF(IDD.EQ.56)N12=21
8212        IF((IDD.EQ.56).AND.(RANART(NSEED).LE.0.5))N12=22
8213                ELSE 
8214 * N*(144) PRODUCTION
8215        IF(IDD.EQ.54)N12=13
8216        IF((IDD.EQ.54).AND.(RANART(NSEED).LE.0.5))N12=14
8217        IF(IDD.EQ.56)N12=15
8218        IF((IDD.EQ.56).AND.(RANART(NSEED).LE.0.5))N12=16
8219               ENDIF
8220        ENDIF
8221 1011       CONTINUE
8222        iblock=5
8223 *PARAMETRIZATION OF THE SHAPE OF THE N*(1440) AND N*(1535) 
8224 * RESONANCE ACCORDING
8225 *     TO kitazoe's or J.D.JACKSON'S MASS FORMULA AND BREIT WIGNER
8226 *     FORMULA FOR N* RESORANCE
8227 *     DETERMINE DELTA MASS VIA REJECTION METHOD.
8228           DMAX = SRT - AVMASS-0.005
8229           DMIN = 1.078
8230           IF((n12.ge.13).and.(n12.le.16))then
8231 * N*(1440) production
8232           IF(DMAX.LT.1.44) THEN
8233           FM=FNS(DMAX,SRT,0.)
8234           ELSE
8235
8236 clin-10/25/02 get rid of argument usage mismatch in FNS():
8237              xdmass=1.44
8238 c          FM=FNS(1.44,SRT,1.)
8239           FM=FNS(xdmass,SRT,1.)
8240 clin-10/25/02-end
8241
8242           ENDIF
8243           IF(FM.EQ.0.)FM=1.E-09
8244           NTRY2=0
8245 11        DM=RANART(NSEED)*(DMAX-DMIN)+DMIN
8246           NTRY2=NTRY2+1
8247           IF((RANART(NSEED).GT.FNS(DM,SRT,1.)/FM).AND.
8248      1    (NTRY2.LE.10)) GO TO 11
8249
8250 clin-2/26/03 limit the N* mass below a certain value 
8251 c     (here taken as its central value + 2* B-W fullwidth):
8252           if(dm.gt.2.14) goto 11
8253
8254               GO TO 13
8255               ENDIF
8256                     IF((n12.ge.17).AND.(N12.LE.36))then
8257 * N*(1535) production
8258           IF(DMAX.LT.1.535) THEN
8259           FM=FD5(DMAX,SRT,0.)
8260           ELSE
8261
8262 clin-10/25/02 get rid of argument usage mismatch in FNS():
8263              xdmass=1.535
8264 c          FM=FD5(1.535,SRT,1.)
8265           FM=FD5(xdmass,SRT,1.)
8266 clin-10/25/02-end
8267
8268           ENDIF
8269           IF(FM.EQ.0.)FM=1.E-09
8270           NTRY1=0
8271 12        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
8272           NTRY1=NTRY1+1
8273           IF((RANART(NSEED) .GT. FD5(DM,SRT,1.)/FM).AND.
8274      1    (NTRY1.LE.10)) GOTO 12
8275
8276 clin-2/26/03 limit the N* mass below a certain value 
8277 c     (here taken as its central value + 2* B-W fullwidth):
8278           if(dm.gt.1.84) goto 12
8279
8280              ENDIF
8281 13       CONTINUE
8282 *-------------------------------------------------------
8283 * RELABLE BARYON I1 AND I2
8284 *13 D(++)+D(-)--> N*(+)(14)+n
8285           IF(N12.EQ.13)THEN
8286           IF(RANART(NSEED).LE.0.5)THEN
8287           LB(I2)=11
8288           E(I2)=DM
8289          LB(I1)=2
8290          E(I1)=AMN
8291           ELSE
8292           LB(I1)=11
8293           E(I1)=DM
8294          LB(I2)=2
8295          E(I2)=AMN
8296           ENDIF
8297          go to 200
8298           ENDIF
8299 *14 D(++)+D(-)--> N*(0)(14)+P
8300           IF(N12.EQ.14)THEN
8301           IF(RANART(NSEED).LE.0.5)THEN
8302           LB(I2)=10
8303           E(I2)=DM
8304          LB(I1)=1
8305          E(I1)=AMP
8306           ELSE
8307           LB(I1)=10
8308           E(I1)=DM
8309          LB(I2)=1
8310          E(I2)=AMP
8311           ENDIF
8312          go to 200
8313           ENDIF
8314 *15 D(+)+D(0)--> N*(+)(14)+n
8315           IF(N12.EQ.15)THEN
8316           IF(RANART(NSEED).LE.0.5)THEN
8317           LB(I2)=11
8318           E(I2)=DM
8319          LB(I1)=2
8320          E(I1)=AMN
8321           ELSE
8322           LB(I1)=11
8323           E(I1)=DM
8324          LB(I2)=2
8325          E(I2)=AMN
8326           ENDIF
8327          go to 200
8328           ENDIF
8329 *16 D(+)+D(0)--> N*(0)(14)+P
8330           IF(N12.EQ.16)THEN
8331           IF(RANART(NSEED).LE.0.5)THEN
8332           LB(I2)=10
8333           E(I2)=DM
8334          LB(I1)=1
8335          E(I1)=AMP
8336           ELSE
8337           LB(I1)=10
8338           E(I1)=DM
8339          LB(I2)=1
8340          E(I2)=AMP
8341           ENDIF
8342          go to 200
8343           ENDIF
8344 *17 D(++)+D(0)--> N*(+)(14)+P
8345           IF(N12.EQ.17)THEN
8346           LB(I2)=13
8347           E(I2)=DM
8348          LB(I1)=1
8349          E(I1)=AMP
8350          go to 200
8351           ENDIF
8352 *18 D(++)+D(-)--> N*(0)(15)+P
8353           IF(N12.EQ.18)THEN
8354           IF(RANART(NSEED).LE.0.5)THEN
8355           LB(I2)=12
8356           E(I2)=DM
8357          LB(I1)=1
8358          E(I1)=AMP
8359           ELSE
8360           LB(I1)=12
8361           E(I1)=DM
8362          LB(I2)=1
8363          E(I2)=AMP
8364           ENDIF
8365          go to 200
8366           ENDIF
8367 *19 D(++)+D(-)--> N*(+)(15)+N
8368           IF(N12.EQ.19)THEN
8369           IF(RANART(NSEED).LE.0.5)THEN
8370           LB(I2)=13
8371           E(I2)=DM
8372          LB(I1)=2
8373          E(I1)=AMN
8374           ELSE
8375           LB(I1)=13
8376           E(I1)=DM
8377          LB(I2)=2
8378          E(I2)=AMN
8379           ENDIF
8380          go to 200
8381           ENDIF
8382 *20 D(+)+D(+)--> N*(+)(15)+P
8383           IF(N12.EQ.20)THEN
8384           IF(RANART(NSEED).LE.0.5)THEN
8385           LB(I2)=13
8386           E(I2)=DM
8387          LB(I1)=1
8388          E(I1)=AMP
8389           ELSE
8390           LB(I1)=13
8391           E(I1)=DM
8392          LB(I2)=1
8393          E(I2)=AMP
8394           ENDIF
8395          go to 200
8396           ENDIF
8397 *21 D(+)+D(0)--> N*(+)(15)+N
8398           IF(N12.EQ.21)THEN
8399           IF(RANART(NSEED).LE.0.5)THEN
8400           LB(I2)=13
8401           E(I2)=DM
8402          LB(I1)=2
8403          E(I1)=AMN
8404           ELSE
8405           LB(I1)=13
8406           E(I1)=DM
8407          LB(I2)=2
8408          E(I2)=AMN
8409           ENDIF
8410          go to 200
8411           ENDIF
8412 *22 D(+)+D(0)--> N*(0)(15)+P
8413           IF(N12.EQ.22)THEN
8414           IF(RANART(NSEED).LE.0.5)THEN
8415           LB(I2)=12
8416           E(I2)=DM
8417          LB(I1)=1
8418          E(I1)=AMP
8419           ELSE
8420           LB(I1)=12
8421           E(I1)=DM
8422          LB(I2)=1
8423          E(I2)=AMP
8424           ENDIF
8425          go to 200
8426           ENDIF
8427 *23 D(+)+D(-)--> N*(0)(15)+N
8428           IF(N12.EQ.23)THEN
8429           IF(RANART(NSEED).LE.0.5)THEN
8430           LB(I2)=12
8431           E(I2)=DM
8432          LB(I1)=2
8433          E(I1)=AMN
8434           ELSE
8435           LB(I1)=12
8436           E(I1)=DM
8437          LB(I2)=2
8438          E(I2)=AMN
8439           ENDIF
8440          go to 200
8441           ENDIF
8442 *24 D(0)+D(0)--> N*(0)(15)+N
8443           IF(N12.EQ.24)THEN
8444           LB(I2)=12
8445           E(I2)=DM
8446          LB(I1)=2
8447          E(I1)=AMN
8448          go to 200
8449           ENDIF
8450 *25 N*(+)+N*(+)--> N*(0)(15)+P
8451           IF(N12.EQ.25)THEN
8452           LB(I2)=12
8453           E(I2)=DM
8454          LB(I1)=1
8455          E(I1)=AMP
8456          go to 200
8457           ENDIF
8458 *26 N*(0)+N*(0)--> N*(0)(15)+N
8459           IF(N12.EQ.26)THEN
8460           LB(I2)=12
8461           E(I2)=DM
8462          LB(I1)=2
8463          E(I1)=AMN
8464          go to 200
8465           ENDIF
8466 *27 N*(+)+N*(0)--> N*(+)(15)+N
8467           IF(N12.EQ.27)THEN
8468           IF(RANART(NSEED).LE.0.5)THEN
8469           LB(I2)=13
8470           E(I2)=DM
8471          LB(I1)=2
8472          E(I1)=AMN
8473           ELSE
8474           LB(I1)=13
8475           E(I1)=DM
8476          LB(I2)=2
8477          E(I2)=AMN
8478           ENDIF
8479          go to 200
8480           ENDIF
8481 *28 N*(+)+N*(0)--> N*(0)(15)+P
8482           IF(N12.EQ.28)THEN
8483           IF(RANART(NSEED).LE.0.5)THEN
8484           LB(I2)=12
8485           E(I2)=DM
8486          LB(I1)=1
8487          E(I1)=AMP
8488           ELSE
8489           LB(I1)=12
8490           E(I1)=DM
8491          LB(I2)=1
8492          E(I2)=AMP
8493           ENDIF
8494          go to 200
8495           ENDIF
8496 *27 N*(+)+N*(0)--> N*(+)(15)+N
8497           IF(N12.EQ.27)THEN
8498           IF(RANART(NSEED).LE.0.5)THEN
8499           LB(I2)=13
8500           E(I2)=DM
8501          LB(I1)=2
8502          E(I1)=AMN
8503           ELSE
8504           LB(I1)=13
8505           E(I1)=DM
8506          LB(I2)=2
8507          E(I2)=AMN
8508           ENDIF
8509          go to 200
8510           ENDIF
8511 *29 N*(+)+D(+)--> N*(+)(15)+P
8512           IF(N12.EQ.29)THEN
8513           IF(RANART(NSEED).LE.0.5)THEN
8514           LB(I2)=13
8515           E(I2)=DM
8516          LB(I1)=1
8517          E(I1)=AMP
8518           ELSE
8519           LB(I1)=13
8520           E(I1)=DM
8521          LB(I2)=1
8522          E(I2)=AMP
8523           ENDIF
8524          go to 200
8525           ENDIF
8526 *30 N*(+)+D(0)--> N*(+)(15)+N
8527           IF(N12.EQ.30)THEN
8528           IF(RANART(NSEED).LE.0.5)THEN
8529           LB(I2)=13
8530           E(I2)=DM
8531          LB(I1)=2
8532          E(I1)=AMN
8533           ELSE
8534           LB(I1)=13
8535           E(I1)=DM
8536          LB(I2)=2
8537          E(I2)=AMN
8538           ENDIF
8539          go to 200
8540           ENDIF
8541 *31 N*(+)+D(-)--> N*(0)(15)+N
8542           IF(N12.EQ.31)THEN
8543           IF(RANART(NSEED).LE.0.5)THEN
8544           LB(I2)=12
8545           E(I2)=DM
8546          LB(I1)=2
8547          E(I1)=AMN
8548           ELSE
8549           LB(I1)=12
8550           E(I1)=DM
8551          LB(I2)=2
8552          E(I2)=AMN
8553           ENDIF
8554          go to 200
8555           ENDIF
8556 *32 N*(0)+D(++)--> N*(+)(15)+P
8557           IF(N12.EQ.32)THEN
8558           IF(RANART(NSEED).LE.0.5)THEN
8559           LB(I2)=13
8560           E(I2)=DM
8561          LB(I1)=1
8562          E(I1)=AMP
8563           ELSE
8564           LB(I1)=13
8565           E(I1)=DM
8566          LB(I2)=1
8567          E(I2)=AMP
8568           ENDIF
8569          go to 200
8570           ENDIF
8571 *33 N*(0)+D(+)--> N*(+)(15)+N
8572           IF(N12.EQ.33)THEN
8573           IF(RANART(NSEED).LE.0.5)THEN
8574           LB(I2)=13
8575           E(I2)=DM
8576          LB(I1)=2
8577          E(I1)=AMN
8578           ELSE
8579           LB(I1)=13
8580           E(I1)=DM
8581          LB(I2)=2
8582          E(I2)=AMN
8583           ENDIF
8584          go to 200
8585           ENDIF
8586 *34 N*(0)+D(+)--> N*(0)(15)+P
8587           IF(N12.EQ.34)THEN
8588           IF(RANART(NSEED).LE.0.5)THEN
8589           LB(I2)=12
8590           E(I2)=DM
8591          LB(I1)=1
8592          E(I1)=AMP
8593           ELSE
8594           LB(I1)=12
8595           E(I1)=DM
8596          LB(I2)=1
8597          E(I2)=AMP
8598           ENDIF
8599          go to 200
8600           ENDIF
8601 *35 N*(0)+D(0)--> N*(0)(15)+N
8602           IF(N12.EQ.35)THEN
8603           IF(RANART(NSEED).LE.0.5)THEN
8604           LB(I2)=12
8605           E(I2)=DM
8606          LB(I1)=2
8607          E(I1)=AMN
8608           ELSE
8609           LB(I1)=12
8610           E(I1)=DM
8611          LB(I2)=2
8612          E(I2)=AMN
8613           ENDIF
8614          go to 200
8615           ENDIF
8616 *36 N*(+)+D(0)--> N*(0)(15)+P
8617           IF(N12.EQ.36)THEN
8618           IF(RANART(NSEED).LE.0.5)THEN
8619           LB(I2)=12
8620           E(I2)=DM
8621          LB(I1)=1
8622          E(I1)=AMP
8623           ELSE
8624           LB(I1)=12
8625           E(I1)=DM
8626          LB(I2)=1
8627          E(I2)=AMP
8628           ENDIF
8629          go to 200
8630           ENDIF
8631 1012         continue
8632          iblock=55
8633          lb1=lb(i1)
8634          lb2=lb(i2)
8635          ich=iabs(lb1*lb2)
8636 *-------------------------------------------------------
8637 * RELABLE BARYON I1 AND I2 in the reabsorption processes
8638 *37 D(++)+D(-)--> n+p
8639           IF(ich.EQ.9*6)THEN
8640           IF(RANART(NSEED).LE.0.5)THEN
8641           LB(I2)=1
8642           E(I2)=amp
8643          LB(I1)=2
8644          E(I1)=AMN
8645           ELSE
8646           LB(I1)=1
8647           E(I1)=amp
8648          LB(I2)=2
8649          E(I2)=AMN
8650           ENDIF
8651          go to 200
8652           ENDIF
8653 *38 D(+)+D(0)--> n+p
8654           IF(ich.EQ.8*7)THEN
8655           IF(RANART(NSEED).LE.0.5)THEN
8656           LB(I2)=1
8657           E(I2)=amp
8658          LB(I1)=2
8659          E(I1)=AMN
8660           ELSE
8661           LB(I1)=1
8662           E(I1)=amp
8663          LB(I2)=2
8664          E(I2)=AMN
8665           ENDIF
8666          go to 200
8667           ENDIF
8668 *39 D(++)+D(0)--> p+p
8669           IF(ich.EQ.9*7)THEN
8670           LB(I2)=1
8671           E(I2)=amp
8672          LB(I1)=1
8673          E(I1)=AMP
8674          go to 200
8675           ENDIF
8676 *40 D(+)+D(+)--> p+p
8677           IF(ich.EQ.8*8)THEN
8678           LB(I2)=1
8679           E(I2)=amp
8680          LB(I1)=1
8681          E(I1)=AMP
8682           go to 200
8683           ENDIF
8684 *41 D(+)+D(-)--> n+n
8685           IF(ich.EQ.8*6)THEN
8686           LB(I2)=2
8687           E(I2)=amn
8688          LB(I1)=2
8689          E(I1)=AMN
8690           go to 200
8691           ENDIF
8692 *42 D(0)+D(0)--> n+n
8693           IF(ich.EQ.6*6)THEN
8694           LB(I2)=2
8695           E(I2)=amn
8696          LB(I1)=2
8697          E(I1)=AMN
8698          go to 200
8699           ENDIF
8700 *43 N*(+)+N*(+)--> p+p
8701           IF(ich.EQ.11*11.or.ich.eq.13*13.or.ich.eq.11*13)THEN
8702           LB(I2)=1
8703           E(I2)=amp
8704          LB(I1)=1
8705          E(I1)=AMP
8706          go to 200
8707           ENDIF
8708 *44 N*(0)(1440)+N*(0)--> n+n
8709           IF(ich.EQ.10*10.or.ich.eq.12*12.or.ich.eq.10*12)THEN
8710           LB(I2)=2
8711           E(I2)=amn
8712          LB(I1)=2
8713          E(I1)=AMN
8714          go to 200
8715           ENDIF
8716 *45 N*(+)+N*(0)--> n+p
8717           IF(ich.EQ.10*11.or.ich.eq.12*13.or.ich.
8718      &    eq.10*13.or.ich.eq.11*12)THEN
8719           IF(RANART(NSEED).LE.0.5)THEN
8720           LB(I2)=1
8721           E(I2)=amp
8722          LB(I1)=2
8723          E(I1)=AMN
8724           ELSE
8725           LB(I1)=1
8726           E(I1)=amp
8727          LB(I2)=2
8728          E(I2)=AMN
8729           ENDIF
8730          go to 200
8731           ENDIF
8732 *46 N*(+)+D(+)--> p+p
8733           IF(ich.eq.11*8.or.ich.eq.13*8)THEN
8734           LB(I2)=1
8735           E(I2)=amp
8736          LB(I1)=1
8737          E(I1)=AMP
8738           go to 200
8739           ENDIF
8740 *47 N*(+)+D(0)--> n+p
8741           IF(ich.EQ.11*7.or.ich.eq.13*7)THEN
8742           IF(RANART(NSEED).LE.0.5)THEN
8743           LB(I2)=1
8744           E(I2)=amp
8745          LB(I1)=2
8746          E(I1)=AMN
8747           ELSE
8748           LB(I1)=1
8749           E(I1)=amp
8750          LB(I2)=2
8751          E(I2)=AMN
8752           ENDIF
8753          go to 200
8754           ENDIF
8755 *48 N*(+)+D(-)--> n+n
8756           IF(ich.EQ.11*6.or.ich.eq.13*6)THEN
8757           LB(I2)=2
8758           E(I2)=amn
8759          LB(I1)=2
8760          E(I1)=AMN
8761           go to 200
8762           ENDIF
8763 *49 N*(0)+D(++)--> p+p
8764           IF(ich.EQ.10*9.or.ich.eq.12*9)THEN
8765           LB(I2)=1
8766           E(I2)=amp
8767          LB(I1)=1
8768          E(I1)=AMP
8769          go to 200
8770           ENDIF
8771 *50 N*(0)+D(0)--> n+n
8772           IF(ich.EQ.10*7.or.ich.eq.12*7)THEN
8773           LB(I2)=2
8774           E(I2)=amn
8775          LB(I1)=2
8776          E(I1)=AMN
8777           go to 200
8778           ENDIF
8779 *51 N*(0)+D(+)--> n+p
8780           IF(ich.EQ.10*8.or.ich.eq.12*8)THEN
8781           IF(RANART(NSEED).LE.0.5)THEN
8782           LB(I2)=2
8783           E(I2)=amn
8784          LB(I1)=1
8785          E(I1)=AMP
8786           ELSE
8787           LB(I1)=2
8788           E(I1)=amn
8789          LB(I2)=1
8790          E(I2)=AMP
8791           ENDIF
8792          go to 200
8793           ENDIF
8794          lb(i1)=1
8795          e(i1)=amp
8796          lb(i2)=2
8797          e(i2)=amn
8798 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
8799 * ENERGY CONSERVATION
8800 * resonance production or absorption in resonance+resonance collisions is
8801 * assumed to have the same pt distribution as pp
8802 200       EM1=E(I1)
8803           EM2=E(I2)
8804           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
8805      1                - 4.0 * (EM1*EM2)**2
8806           IF(PR2.LE.0.)PR2=1.e-09
8807           PR=SQRT(PR2)/(2.*SRT)
8808              if(srt.le.2.14)C1= 1.0 - 2.0 * RANART(NSEED)
8809          if(srt.gt.2.14.and.srt.le.2.4)c1=ang(srt,iseed)       
8810          if(srt.gt.2.4)then
8811
8812 clin-10/25/02 get rid of argument usage mismatch in PTR():
8813              xptr=0.33*pr
8814 c         cc1=ptr(0.33*pr,iseed)
8815          cc1=ptr(xptr,iseed)
8816 clin-10/25/02-end
8817
8818          c1=sqrt(pr**2-cc1**2)/pr
8819          endif
8820           T1   = 2.0 * PI * RANART(NSEED)
8821        if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
8822          lb(i1) = -lb(i1)
8823          lb(i2) = -lb(i2)
8824        endif
8825          ENDIF
8826 *COM: SET THE NEW MOMENTUM COORDINATES
8827 107   S1   = SQRT( 1.0 - C1**2 )
8828       S2  =  SQRT( 1.0 - C2**2 )
8829       CT1  = COS(T1)
8830       ST1  = SIN(T1)
8831       CT2  = COS(T2)
8832       ST2  = SIN(T2)
8833       PZ   = PR * ( C1*C2 - S1*S2*CT1 )
8834       SS   = C2 * S1 * CT1  +  S2 * C1
8835       PX   = PR * ( SS*CT2 - S1*ST1*ST2 )
8836       PY   = PR * ( SS*ST2 + S1*ST1*CT2 )
8837       RETURN
8838 * FOR THE DD-->KAON+X PROCESS, FIND MOMENTUM OF THE FINAL PARTICLES IN 
8839 * THE NUCLEUS-NUCLEUS CMS.
8840 306     CONTINUE
8841 csp11/21/01 phi production
8842               if(XSK5/sigK.gt.RANART(NSEED))then
8843               pz1=p(3,i1)
8844               pz2=p(3,i2)
8845                 LB(I1) = 1 + int(2 * RANART(NSEED))
8846                 LB(I2) = 1 + int(2 * RANART(NSEED))
8847               nnn=nnn+1
8848                 LPION(NNN,IRUN)=29
8849                 EPION(NNN,IRUN)=APHI
8850                 iblock = 222
8851               GO TO 208
8852                ENDIF
8853               iblock=10
8854                 if(ianti .eq. 1)iblock=-10
8855               pz1=p(3,i1)
8856               pz2=p(3,i2)
8857 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
8858               nnn=nnn+1
8859                 LPION(NNN,IRUN)=23
8860                 EPION(NNN,IRUN)=Aka
8861               if(srt.le.2.63)then
8862 * only lambda production is possible
8863 * (1.1)P+P-->p+L+kaon+
8864               ic=1
8865                 LB(I1) = 1 + int(2 * RANART(NSEED))
8866               LB(I2)=14
8867               GO TO 208
8868                 ENDIF
8869        if(srt.le.2.74.and.srt.gt.2.63)then
8870 * both Lambda and sigma production are possible
8871               if(XSK1/(XSK1+XSK2).gt.RANART(NSEED))then
8872 * lambda production
8873               ic=1
8874                 LB(I1) = 1 + int(2 * RANART(NSEED))
8875               LB(I2)=14
8876               else
8877 * sigma production
8878                 LB(I1) = 1 + int(2 * RANART(NSEED))
8879                 LB(I2) = 15 + int(3 * RANART(NSEED))
8880               ic=2
8881               endif
8882               GO TO 208
8883        endif
8884        if(srt.le.2.77.and.srt.gt.2.74)then
8885 * then pp-->Delta lamda kaon can happen
8886               if(xsk1/(xsk1+xsk2+xsk3).gt.RANART(NSEED))then
8887 * * (1.1)P+P-->p+L+kaon+
8888               ic=1
8889                 LB(I1) = 1 + int(2 * RANART(NSEED))
8890               LB(I2)=14
8891               go to 208
8892               else
8893               if(xsk2/(xsk2+xsk3).gt.RANART(NSEED))then
8894 * pp-->psk
8895               ic=2
8896                 LB(I1) = 1 + int(2 * RANART(NSEED))
8897                 LB(I2) = 15 + int(3 * RANART(NSEED))
8898               else
8899 * pp-->D+l+k        
8900               ic=3
8901                 LB(I1) = 6 + int(4 * RANART(NSEED))
8902               lb(i2)=14
8903               endif
8904               GO TO 208
8905               endif
8906        endif
8907        if(srt.gt.2.77)then
8908 * all four channels are possible
8909               if(xsk1/(xsk1+xsk2+xsk3+xsk4).gt.RANART(NSEED))then
8910 * p lambda k production
8911               ic=1
8912                 LB(I1) = 1 + int(2 * RANART(NSEED))
8913               LB(I2)=14
8914               go to 208
8915        else
8916           if(xsk3/(xsk2+xsk3+xsk4).gt.RANART(NSEED))then
8917 * delta l K production
8918               ic=3
8919                 LB(I1) = 6 + int(4 * RANART(NSEED))
8920               lb(i2)=14
8921               go to 208
8922           else
8923               if(xsk2/(xsk2+xsk4).gt.RANART(NSEED))then
8924 * n sigma k production
8925                 LB(I1) = 1 + int(2 * RANART(NSEED))
8926                 LB(I2) = 15 + int(3 * RANART(NSEED))
8927               ic=2
8928               else
8929 * D sigma K
8930               ic=4
8931                 LB(I1) = 6 + int(4 * RANART(NSEED))
8932                 LB(I2) = 15 + int(3 * RANART(NSEED))
8933               endif
8934               go to 208
8935           endif
8936        endif
8937        endif
8938 208             continue
8939          if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
8940           lb(i1) = - lb(i1)
8941           lb(i2) = - lb(i2)
8942           if(LPION(NNN,IRUN) .eq. 23)LPION(NNN,IRUN)=21
8943          endif
8944        lbi1=lb(i1)
8945        lbi2=lb(i2)
8946 * KEEP ALL COORDINATES OF PARTICLE 2 FOR POSSIBLE PHASE SPACE CHANGE
8947            NTRY1=0
8948 129        CALL BBKAON(ic,SRT,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
8949      &  PPX,PPY,PPZ,icou1)
8950        NTRY1=NTRY1+1
8951        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 129
8952 c       if(icou1.lt.0)return
8953 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
8954        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
8955        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
8956        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
8957 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
8958 * NUCLEUS CMS. FRAME 
8959 * (1) for the necleon/delta
8960 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
8961               E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
8962               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
8963               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
8964               Pt1i1 = BETAX * TRANSF + PX3
8965               Pt2i1 = BETAY * TRANSF + PY3
8966               Pt3i1 = BETAZ * TRANSF + PZ3
8967              Eti1   = DM3
8968 * (2) for the lambda/sigma
8969                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
8970                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
8971                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
8972                 Pt1I2 = BETAX * TRANSF + PX4
8973                 Pt2I2 = BETAY * TRANSF + PY4
8974                 Pt3I2 = BETAZ * TRANSF + PZ4
8975               EtI2   = DM4
8976 * GET the kaon'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
8977                 EPCM=SQRT(aka**2+PPX**2+PPY**2+PPZ**2)
8978                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
8979                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
8980                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
8981                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
8982                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
8983 clin-5/2008:
8984                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
8985 clin-5/2008:
8986 c2007        X01 = 1.0 - 2.0 * RANART(NSEED)
8987 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
8988 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
8989 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2007
8990 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
8991 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
8992 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
8993                     RPION(1,NNN,IRUN)=R(1,I1)
8994                     RPION(2,NNN,IRUN)=R(2,I1)
8995                     RPION(3,NNN,IRUN)=R(3,I1)
8996 c
8997 * assign the nucleon/delta and lambda/sigma to i1 or i2 to keep the 
8998 * leadng particle behaviour
8999 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
9000               p(1,i1)=pt1i1
9001               p(2,i1)=pt2i1
9002               p(3,i1)=pt3i1
9003               e(i1)=eti1
9004               lb(i1)=lbi1
9005               p(1,i2)=pt1i2
9006               p(2,i2)=pt2i2
9007               p(3,i2)=pt3i2
9008               e(i2)=eti2
9009               lb(i2)=lbi2
9010                 PX1     = P(1,I1)
9011                 PY1     = P(2,I1)
9012                 PZ1     = P(3,I1)
9013               EM1       = E(I1)
9014                 ID(I1)  = 2
9015                 ID(I2)  = 2
9016                 ID1     = ID(I1)
9017         LB1=LB(I1)
9018         LB2=LB(I2)
9019         AM1=EM1
9020        am2=em2
9021         E1= SQRT( EM1**2 + PX1**2 + PY1**2 + PZ1**2 )
9022        RETURN
9023
9024 clin-6/2008 D+D->Deuteron+pi:
9025 *     FIND MOMENTUM OF THE FINAL PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
9026  108   CONTINUE
9027            if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
9028 c     For idpert=1: we produce npertd pert deuterons:
9029               ndloop=npertd
9030            elseif(idpert.eq.2.and.npertd.ge.1) then
9031 c     For idpert=2: we first save information for npertd pert deuterons;
9032 c     at the last ndloop we create the regular deuteron+pi 
9033 c     and those pert deuterons:
9034               ndloop=npertd+1
9035            else
9036 c     Just create the regular deuteron+pi:
9037               ndloop=1
9038            endif
9039 c
9040            dprob1=sdprod/sig/float(npertd)
9041            do idloop=1,ndloop
9042               CALL bbdangle(pxd,pyd,pzd,nt,ipert1,ianti,idloop,pfinal,
9043      1 dprob1,lbm)
9044               CALL ROTATE(PX,PY,PZ,PXd,PYd,PZd)
9045 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
9046 *     FROM THE NN CMS FRAME INTO THE GLOBAL CMS FRAME:
9047 *     For the Deuteron:
9048               xmass=xmd
9049               E1dCM=SQRT(xmass**2+PXd**2+PYd**2+PZd**2)
9050               P1dBETA=PXd*BETAX+PYd*BETAY+PZd*BETAZ
9051               TRANSF=GAMMA*(GAMMA*P1dBETA/(GAMMA+1.)+E1dCM)
9052               pxi1=BETAX*TRANSF+PXd
9053               pyi1=BETAY*TRANSF+PYd
9054               pzi1=BETAZ*TRANSF+PZd
9055               if(ianti.eq.0)then
9056                  lbd=42
9057               else
9058                  lbd=-42
9059               endif
9060               if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
9061 cccc  Perturbative production for idpert=1:
9062                  nnn=nnn+1
9063                  PPION(1,NNN,IRUN)=pxi1
9064                  PPION(2,NNN,IRUN)=pyi1
9065                  PPION(3,NNN,IRUN)=pzi1
9066                  EPION(NNN,IRUN)=xmd
9067                  LPION(NNN,IRUN)=lbd
9068                  RPION(1,NNN,IRUN)=R(1,I1)
9069                  RPION(2,NNN,IRUN)=R(2,I1)
9070                  RPION(3,NNN,IRUN)=R(3,I1)
9071 clin-6/2008 assign the perturbative probability:
9072                  dppion(NNN,IRUN)=sdprod/sig/float(npertd)
9073               elseif(idpert.eq.2.and.idloop.le.npertd) then
9074 clin-6/2008 For idpert=2, we produce NPERTD perturbative (anti)deuterons 
9075 c     only when a regular (anti)deuteron+pi is produced in NN collisions.
9076 c     First save the info for the perturbative deuterons:
9077                  ppd(1,idloop)=pxi1
9078                  ppd(2,idloop)=pyi1
9079                  ppd(3,idloop)=pzi1
9080                  lbpd(idloop)=lbd
9081               else
9082 cccc  Regular production:
9083 c     For the regular pion: do LORENTZ-TRANSFORMATION:
9084                  E(i1)=xmm
9085                  E2piCM=SQRT(xmm**2+PXd**2+PYd**2+PZd**2)
9086                  P2piBETA=-PXd*BETAX-PYd*BETAY-PZd*BETAZ
9087                  TRANSF=GAMMA*(GAMMA*P2piBETA/(GAMMA+1.)+E2piCM)
9088                  pxi2=BETAX*TRANSF-PXd
9089                  pyi2=BETAY*TRANSF-PYd
9090                  pzi2=BETAZ*TRANSF-PZd
9091                  p(1,i1)=pxi2
9092                  p(2,i1)=pyi2
9093                  p(3,i1)=pzi2
9094 c     Remove regular pion to check the equivalence 
9095 c     between the perturbative and regular deuteron results:
9096 c                 E(i1)=0.
9097 c
9098                  LB(I1)=lbm
9099                  PX1=P(1,I1)
9100                  PY1=P(2,I1)
9101                  PZ1=P(3,I1)
9102                  EM1=E(I1)
9103                  ID(I1)=2
9104                  ID1=ID(I1)
9105                  E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
9106                  lb1=lb(i1)
9107 c     For the regular deuteron:
9108                  p(1,i2)=pxi1
9109                  p(2,i2)=pyi1
9110                  p(3,i2)=pzi1
9111                  lb(i2)=lbd
9112                  lb2=lb(i2)
9113                  E(i2)=xmd
9114                  EtI2=E(I2)
9115                  ID(I2)=2
9116 c     For idpert=2: create the perturbative deuterons:
9117                  if(idpert.eq.2.and.idloop.eq.ndloop) then
9118                     do ipertd=1,npertd
9119                        nnn=nnn+1
9120                        PPION(1,NNN,IRUN)=ppd(1,ipertd)
9121                        PPION(2,NNN,IRUN)=ppd(2,ipertd)
9122                        PPION(3,NNN,IRUN)=ppd(3,ipertd)
9123                        EPION(NNN,IRUN)=xmd
9124                        LPION(NNN,IRUN)=lbpd(ipertd)
9125                        RPION(1,NNN,IRUN)=R(1,I1)
9126                        RPION(2,NNN,IRUN)=R(2,I1)
9127                        RPION(3,NNN,IRUN)=R(3,I1)
9128 clin-6/2008 assign the perturbative probability:
9129                        dppion(NNN,IRUN)=1./float(npertd)
9130                     enddo
9131                  endif
9132               endif
9133            enddo
9134            IBLOCK=501
9135            return
9136 clin-6/2008 D+D->Deuteron+pi over
9137
9138         END
9139 **********************************
9140 **********************************
9141 *                                                                      *
9142       SUBROUTINE INIT(MINNUM,MAXNUM,NUM,RADIUS,X0,Z0,P0,
9143      &                GAMMA,ISEED,MASS,IOPT)
9144 *                                                                      *
9145 *       PURPOSE:     PROVIDING INITIAL CONDITIONS FOR PHASE-SPACE      *
9146 *                    DISTRIBUTION OF TESTPARTICLES                     *
9147 *       VARIABLES:   (ALL INPUT)                                       *
9148 *         MINNUM  - FIRST TESTPARTICLE TREATED IN ONE RUN    (INTEGER) *
9149 *         MAXNUM  - LAST TESTPARTICLE TREATED IN ONE RUN     (INTEGER) *
9150 *         NUM     - NUMBER OF TESTPARTICLES PER NUCLEON      (INTEGER) *
9151 *         RADIUS  - RADIUS OF NUCLEUS "FM"                      (REAL) *
9152 *         X0,Z0   - DISPLACEMENT OF CENTER OF NUCLEUS IN X,Z-          *
9153 *                   DIRECTION "FM"                              (REAL) *
9154 *         P0      - MOMENTUM-BOOST IN C.M. FRAME "GEV/C"        (REAL) *
9155 *         GAMMA   - RELATIVISTIC GAMMA-FACTOR                   (REAL) *
9156 *         ISEED   - SEED FOR RANDOM-NUMBER GENERATOR         (INTEGER) *
9157 *         MASS    - TOTAL MASS OF THE SYSTEM                 (INTEGER) *
9158 *         IOPT    - OPTION FOR DIFFERENT OCCUPATION OF MOMENTUM        *
9159 *                   SPACE                                    (INTEGER) *
9160 *                                                                      *
9161 **********************************
9162       PARAMETER     (MAXSTR=150001,  AMU   = 0.9383)
9163       PARAMETER     (MAXX   =   20,  MAXZ  =    24)
9164       PARAMETER     (PI=3.1415926)
9165 *
9166       REAL              PTOT(3)
9167       COMMON  /AA/      R(3,MAXSTR)
9168 cc      SAVE /AA/
9169       COMMON  /BB/      P(3,MAXSTR)
9170 cc      SAVE /BB/
9171       COMMON  /CC/      E(MAXSTR)
9172 cc      SAVE /CC/
9173       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9174      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9175      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9176 cc      SAVE /DD/
9177       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
9178 cc      SAVE /EE/
9179       common  /ss/      inout(20)
9180 cc      SAVE /ss/
9181       COMMON/RNDF77/NSEED
9182 cc      SAVE /RNDF77/
9183       SAVE   
9184 *----------------------------------------------------------------------
9185 *     PREPARATION FOR LORENTZ-TRANSFORMATIONS
9186 *
9187       ISEED=ISEED
9188       IF (P0 .NE. 0.) THEN
9189         SIGN = P0 / ABS(P0)
9190       ELSE
9191         SIGN = 0.
9192       END IF
9193       BETA = SIGN * SQRT(GAMMA**2-1.)/GAMMA
9194 *-----------------------------------------------------------------------
9195 *     TARGET-ID = 1 AND PROJECTILE-ID = -1
9196 *
9197       IF (MINNUM .EQ. 1) THEN
9198         IDNUM = 1
9199       ELSE
9200         IDNUM = -1
9201       END IF
9202 *-----------------------------------------------------------------------
9203 *     IDENTIFICATION OF TESTPARTICLES AND ASSIGMENT OF RESTMASS
9204 *
9205 *     LOOP OVER ALL PARALLEL RUNS:
9206       DO 400 IRUN = 1,NUM
9207         DO 100 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9208           ID(I) = IDNUM
9209           E(I)  = AMU
9210   100   CONTINUE
9211 *-----------------------------------------------------------------------
9212 *       OCCUPATION OF COORDINATE-SPACE
9213 *
9214         DO 300 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9215   200     CONTINUE
9216             X = 1.0 - 2.0 * RANART(NSEED)
9217             Y = 1.0 - 2.0 * RANART(NSEED)
9218             Z = 1.0 - 2.0 * RANART(NSEED)
9219           IF ((X*X+Y*Y+Z*Z) .GT. 1.0) GOTO 200
9220           R(1,I) = X * RADIUS
9221           R(2,I) = Y * RADIUS
9222           R(3,I) = Z * RADIUS
9223   300   CONTINUE
9224   400 CONTINUE
9225 *=======================================================================
9226       IF (IOPT .NE. 3) THEN
9227 *-----
9228 *     OPTION 1: USE WOODS-SAXON PARAMETRIZATION FOR DENSITY AND
9229 *-----          CALCULATE LOCAL FERMI-MOMENTUM
9230 *
9231         RHOW0  = 0.168
9232         DO 1000 IRUN = 1,NUM
9233           DO 600 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9234   500       CONTINUE
9235               PX = 1.0 - 2.0 * RANART(NSEED)
9236               PY = 1.0 - 2.0 * RANART(NSEED)
9237               PZ = 1.0 - 2.0 * RANART(NSEED)
9238             IF (PX*PX+PY*PY+PZ*PZ .GT. 1.0) GOTO 500
9239             RDIST  = SQRT( R(1,I)**2 + R(2,I)**2 + R(3,I)**2 )
9240             RHOWS  = RHOW0 / (  1.0 + EXP( (RDIST-RADIUS) / 0.55 )  )
9241             PFERMI = 0.197 * (1.5 * PI*PI * RHOWS)**(1./3.)
9242 *-----
9243 *     OPTION 2: NUCLEAR MATTER CASE
9244             IF(IOPT.EQ.2) PFERMI=0.27
9245            if(iopt.eq.4) pfermi=0.
9246 *-----
9247             P(1,I) = PFERMI * PX
9248             P(2,I) = PFERMI * PY
9249             P(3,I) = PFERMI * PZ
9250   600     CONTINUE
9251 *
9252 *         SET TOTAL MOMENTUM TO 0 IN REST FRAME AND BOOST
9253 *
9254           DO 700 IDIR = 1,3
9255             PTOT(IDIR) = 0.0
9256   700     CONTINUE
9257           NPART = 0
9258           DO 900 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9259             NPART = NPART + 1
9260             DO 800 IDIR = 1,3
9261               PTOT(IDIR) = PTOT(IDIR) + P(IDIR,I)
9262   800       CONTINUE
9263   900     CONTINUE
9264           DO 950 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9265             DO 925 IDIR = 1,3
9266               P(IDIR,I) = P(IDIR,I) - PTOT(IDIR) / FLOAT(NPART)
9267   925       CONTINUE
9268 *           BOOST
9269             IF ((IOPT .EQ. 1).or.(iopt.eq.2)) THEN
9270               EPART = SQRT(P(1,I)**2+P(2,I)**2+P(3,I)**2+AMU**2)
9271               P(3,I) = GAMMA*(P(3,I) + BETA*EPART)
9272             ELSE
9273               P(3,I) = P(3,I) + P0
9274             END IF
9275   950     CONTINUE
9276  1000   CONTINUE
9277 *-----
9278       ELSE
9279 *-----
9280 *     OPTION 3: GIVE ALL NUCLEONS JUST A Z-MOMENTUM ACCORDING TO
9281 *               THE BOOST OF THE NUCLEI
9282 *
9283         DO 1200 IRUN = 1,NUM
9284           DO 1100 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9285             P(1,I) = 0.0
9286             P(2,I) = 0.0
9287             P(3,I) = P0
9288  1100     CONTINUE
9289  1200   CONTINUE
9290 *-----
9291       END IF
9292 *=======================================================================
9293 *     PUT PARTICLES IN THEIR POSITION IN COORDINATE-SPACE
9294 *     (SHIFT AND RELATIVISTIC CONTRACTION)
9295 *
9296       DO 1400 IRUN = 1,NUM
9297         DO 1300 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9298           R(1,I) = R(1,I) + X0
9299 * two nuclei in touch after contraction
9300           R(3,I) = (R(3,I)+Z0)/ GAMMA 
9301 * two nuclei in touch before contraction
9302 c          R(3,I) = R(3,I) / GAMMA + Z0
9303  1300   CONTINUE
9304  1400 CONTINUE
9305 *
9306       RETURN
9307       END
9308 **********************************
9309 *                                                                      *
9310       SUBROUTINE DENS(IPOT,MASS,NUM,NESC)
9311 *                                                                      *
9312 *       PURPOSE:     CALCULATION OF LOCAL BARYON, MESON AND ENERGY     * 
9313 *                    DENSITY FROM SPATIAL DISTRIBUTION OF TESTPARTICLES*
9314 *                                                                      *
9315 *       VARIABLES (ALL INPUT, ALL INTEGER)                             *
9316 *         MASS    -  MASS NUMBER OF THE SYSTEM                         *
9317 *         NUM     -  NUMBER OF TESTPARTICLES PER NUCLEON               *
9318 *                                                                      *
9319 *         NESC    -  NUMBER OF ESCAPED PARTICLES      (INTEGER,OUTPUT) *
9320 *                                                                      *
9321 **********************************
9322       PARAMETER     (MAXSTR= 150001,MAXR=1)
9323       PARAMETER     (MAXX   =    20,  MAXZ  =    24)
9324 *
9325       dimension pxl(-maxx:maxx,-maxx:maxx,-maxz:maxz),
9326      1          pyl(-maxx:maxx,-maxx:maxx,-maxz:maxz),
9327      2          pzl(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9328       COMMON  /AA/      R(3,MAXSTR)
9329 cc      SAVE /AA/
9330       COMMON  /BB/      P(3,MAXSTR)
9331 cc      SAVE /BB/
9332       COMMON  /CC/      E(MAXSTR)
9333 cc      SAVE /CC/
9334       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9335      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9336      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9337 cc      SAVE /DD/
9338       COMMON  /DDpi/    piRHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9339 cc      SAVE /DDpi/
9340       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
9341 cc      SAVE /EE/
9342       common  /ss/  inout(20)
9343 cc      SAVE /ss/
9344       COMMON  /RR/  MASSR(0:MAXR)
9345 cc      SAVE /RR/
9346       common  /tt/  PEL(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9347      &,rxy(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9348 cc      SAVE /tt/
9349       common  /bbb/ bxx(-maxx:maxx,-maxx:maxx,-maxz:maxz),
9350      &byy(-maxx:maxx,-maxx:maxx,-maxz:maxz),
9351      &bzz(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9352 *
9353       real zet(-45:45)
9354       SAVE   
9355       data zet /
9356      4     1.,0.,0.,0.,0.,
9357      3     1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
9358      2     -1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
9359      1     0.,0.,0.,-1.,0.,1.,0.,-1.,0.,-1.,
9360      s     0.,-2.,-1.,0.,1.,0.,0.,0.,0.,-1.,
9361      e     0.,
9362      s     1.,0.,-1.,0.,1.,-1.,0.,1.,2.,0.,
9363      1     1.,0.,1.,0.,-1.,0.,1.,0.,0.,0.,
9364      2     -1.,0.,1.,0.,-1.,0.,1.,0.,0.,1.,
9365      3     0.,0.,0.,0.,0.,0.,0.,0.,0.,-1.,
9366      4     0.,0.,0.,0.,-1./
9367
9368       DO 300 IZ = -MAXZ,MAXZ
9369         DO 200 IY = -MAXX,MAXX
9370           DO 100 IX = -MAXX,MAXX
9371             RHO(IX,IY,IZ) = 0.0
9372             RHOn(IX,IY,IZ) = 0.0
9373             RHOp(IX,IY,IZ) = 0.0
9374             piRHO(IX,IY,IZ) = 0.0
9375            pxl(ix,iy,iz) = 0.0
9376            pyl(ix,iy,iz) = 0.0
9377            pzl(ix,iy,iz) = 0.0
9378            pel(ix,iy,iz) = 0.0
9379            bxx(ix,iy,iz) = 0.0
9380            byy(ix,iy,iz) = 0.0
9381            bzz(ix,iy,iz) = 0.0
9382   100     CONTINUE
9383   200   CONTINUE
9384   300 CONTINUE
9385 *
9386       NESC  = 0
9387       BIG   = 1.0 / ( 3.0 * FLOAT(NUM) )
9388       SMALL = 1.0 / ( 9.0 * FLOAT(NUM) )
9389 *
9390       MSUM=0
9391       DO 400 IRUN = 1,NUM
9392       MSUM=MSUM+MASSR(IRUN-1)
9393       DO 400 J=1,MASSr(irun)
9394       I=J+MSUM
9395         IX = NINT( R(1,I) )
9396         IY = NINT( R(2,I) )
9397         IZ = NINT( R(3,I) )
9398         IF( IX .LE. -MAXX .OR. IX .GE. MAXX .OR.
9399      &      IY .LE. -MAXX .OR. IY .GE. MAXX .OR.
9400      &      IZ .LE. -MAXZ .OR. IZ .GE. MAXZ )    THEN
9401           NESC = NESC + 1
9402         ELSE
9403 c
9404 csp01/04/02 include baryon density
9405           if(j.gt.mass)go to 30
9406 c         if( (lb(i).eq.1.or.lb(i).eq.2) .or.
9407 c    &    (lb(i).ge.6.and.lb(i).le.17) )then                       
9408 * (1) baryon density
9409           RHO(IX,  IY,  IZ  ) = RHO(IX,  IY,  IZ  ) + BIG
9410           RHO(IX+1,IY,  IZ  ) = RHO(IX+1,IY,  IZ  ) + SMALL
9411           RHO(IX-1,IY,  IZ  ) = RHO(IX-1,IY,  IZ  ) + SMALL
9412           RHO(IX,  IY+1,IZ  ) = RHO(IX,  IY+1,IZ  ) + SMALL
9413           RHO(IX,  IY-1,IZ  ) = RHO(IX,  IY-1,IZ  ) + SMALL
9414           RHO(IX,  IY,  IZ+1) = RHO(IX,  IY,  IZ+1) + SMALL
9415           RHO(IX,  IY,  IZ-1) = RHO(IX,  IY,  IZ-1) + SMALL
9416 * (2) CALCULATE THE PROTON DENSITY
9417          IF(ZET(LB(I)).NE.0)THEN
9418           RHOP(IX,  IY,  IZ  ) = RHOP(IX,  IY,  IZ  ) + BIG
9419           RHOP(IX+1,IY,  IZ  ) = RHOP(IX+1,IY,  IZ  ) + SMALL
9420           RHOP(IX-1,IY,  IZ  ) = RHOP(IX-1,IY,  IZ  ) + SMALL
9421           RHOP(IX,  IY+1,IZ  ) = RHOP(IX,  IY+1,IZ  ) + SMALL
9422           RHOP(IX,  IY-1,IZ  ) = RHOP(IX,  IY-1,IZ  ) + SMALL
9423           RHOP(IX,  IY,  IZ+1) = RHOP(IX,  IY,  IZ+1) + SMALL
9424           RHOP(IX,  IY,  IZ-1) = RHOP(IX,  IY,  IZ-1) + SMALL
9425          go to 40
9426          ENDIF
9427 * (3) CALCULATE THE NEUTRON DENSITY
9428          IF(ZET(LB(I)).EQ.0)THEN
9429           RHON(IX,  IY,  IZ  ) = RHON(IX,  IY,  IZ  ) + BIG
9430           RHON(IX+1,IY,  IZ  ) = RHON(IX+1,IY,  IZ  ) + SMALL
9431           RHON(IX-1,IY,  IZ  ) = RHON(IX-1,IY,  IZ  ) + SMALL
9432           RHON(IX,  IY+1,IZ  ) = RHON(IX,  IY+1,IZ  ) + SMALL
9433           RHON(IX,  IY-1,IZ  ) = RHON(IX,  IY-1,IZ  ) + SMALL
9434           RHON(IX,  IY,  IZ+1) = RHON(IX,  IY,  IZ+1) + SMALL
9435           RHON(IX,  IY,  IZ-1) = RHON(IX,  IY,  IZ-1) + SMALL
9436          go to 40
9437           END IF
9438 c           else    !! sp01/04/02
9439 * (4) meson density       
9440 30              piRHO(IX,  IY,  IZ  ) = piRHO(IX,  IY,  IZ  ) + BIG
9441           piRHO(IX+1,IY,  IZ  ) = piRHO(IX+1,IY,  IZ  ) + SMALL
9442           piRHO(IX-1,IY,  IZ  ) = piRHO(IX-1,IY,  IZ  ) + SMALL
9443           piRHO(IX,  IY+1,IZ  ) = piRHO(IX,  IY+1,IZ  ) + SMALL
9444           piRHO(IX,  IY-1,IZ  ) = piRHO(IX,  IY-1,IZ  ) + SMALL
9445           piRHO(IX,  IY,  IZ+1) = piRHO(IX,  IY,  IZ+1) + SMALL
9446           piRHO(IX,  IY,  IZ-1) = piRHO(IX,  IY,  IZ-1) + SMALL
9447 c           endif    !! sp01/04/02
9448 * to calculate the Gamma factor in each cell
9449 *(1) PX
9450 40       pxl(ix,iy,iz)=pxl(ix,iy,iz)+p(1,I)*BIG
9451        pxl(ix+1,iy,iz)=pxl(ix+1,iy,iz)+p(1,I)*SMALL
9452        pxl(ix-1,iy,iz)=pxl(ix-1,iy,iz)+p(1,I)*SMALL
9453        pxl(ix,iy+1,iz)=pxl(ix,iy+1,iz)+p(1,I)*SMALL
9454        pxl(ix,iy-1,iz)=pxl(ix,iy-1,iz)+p(1,I)*SMALL
9455        pxl(ix,iy,iz+1)=pxl(ix,iy,iz+1)+p(1,I)*SMALL
9456        pxl(ix,iy,iz-1)=pxl(ix,iy,iz-1)+p(1,I)*SMALL
9457 *(2) PY
9458        pYl(ix,iy,iz)=pYl(ix,iy,iz)+p(2,I)*BIG
9459        pYl(ix+1,iy,iz)=pYl(ix+1,iy,iz)+p(2,I)*SMALL
9460        pYl(ix-1,iy,iz)=pYl(ix-1,iy,iz)+p(2,I)*SMALL
9461        pYl(ix,iy+1,iz)=pYl(ix,iy+1,iz)+p(2,I)*SMALL
9462        pYl(ix,iy-1,iz)=pYl(ix,iy-1,iz)+p(2,I)*SMALL
9463        pYl(ix,iy,iz+1)=pYl(ix,iy,iz+1)+p(2,I)*SMALL
9464        pYl(ix,iy,iz-1)=pYl(ix,iy,iz-1)+p(2,I)*SMALL
9465 * (3) PZ
9466        pZl(ix,iy,iz)=pZl(ix,iy,iz)+p(3,I)*BIG
9467        pZl(ix+1,iy,iz)=pZl(ix+1,iy,iz)+p(3,I)*SMALL
9468        pZl(ix-1,iy,iz)=pZl(ix-1,iy,iz)+p(3,I)*SMALL
9469        pZl(ix,iy+1,iz)=pZl(ix,iy+1,iz)+p(3,I)*SMALL
9470        pZl(ix,iy-1,iz)=pZl(ix,iy-1,iz)+p(3,I)*SMALL
9471        pZl(ix,iy,iz+1)=pZl(ix,iy,iz+1)+p(3,I)*SMALL
9472        pZl(ix,iy,iz-1)=pZl(ix,iy,iz-1)+p(3,I)*SMALL
9473 * (4) ENERGY
9474        pel(ix,iy,iz)=pel(ix,iy,iz)
9475      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*BIG
9476        pel(ix+1,iy,iz)=pel(ix+1,iy,iz)
9477      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9478        pel(ix-1,iy,iz)=pel(ix-1,iy,iz)
9479      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9480        pel(ix,iy+1,iz)=pel(ix,iy+1,iz)
9481      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9482        pel(ix,iy-1,iz)=pel(ix,iy-1,iz)
9483      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9484        pel(ix,iy,iz+1)=pel(ix,iy,iz+1)
9485      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9486        pel(ix,iy,iz-1)=pel(ix,iy,iz-1)
9487      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9488         END IF
9489   400 CONTINUE
9490 *
9491       DO 301 IZ = -MAXZ,MAXZ
9492         DO 201 IY = -MAXX,MAXX
9493           DO 101 IX = -MAXX,MAXX
9494       IF((RHO(IX,IY,IZ).EQ.0).OR.(PEL(IX,IY,IZ).EQ.0))
9495      1GO TO 101
9496       SMASS2=PEL(IX,IY,IZ)**2-PXL(IX,IY,IZ)**2
9497      1-PYL(IX,IY,IZ)**2-PZL(IX,IY,IZ)**2
9498        IF(SMASS2.LE.0)SMASS2=1.E-06
9499        SMASS=SQRT(SMASS2)
9500            IF(SMASS.EQ.0.)SMASS=1.e-06
9501            GAMMA=PEL(IX,IY,IZ)/SMASS
9502            if(gamma.eq.0)go to 101
9503        bxx(ix,iy,iz)=pxl(ix,iy,iz)/pel(ix,iy,iz)                  
9504        byy(ix,iy,iz)=pyl(ix,iy,iz)/pel(ix,iy,iz)       
9505        bzz(ix,iy,iz)=pzl(ix,iy,iz)/pel(ix,iy,iz)                  
9506             RHO(IX,IY,IZ) = RHO(IX,IY,IZ)/GAMMA
9507             RHOn(IX,IY,IZ) = RHOn(IX,IY,IZ)/GAMMA
9508             RHOp(IX,IY,IZ) = RHOp(IX,IY,IZ)/GAMMA
9509             piRHO(IX,IY,IZ) = piRHO(IX,IY,IZ)/GAMMA
9510             pEL(IX,IY,IZ) = pEL(IX,IY,IZ)/(GAMMA**2)
9511            rho0=0.163
9512            IF(IPOT.EQ.0)THEN
9513            U=0
9514            GO TO 70
9515            ENDIF
9516            IF(IPOT.EQ.1.or.ipot.eq.6)THEN
9517            A=-0.1236
9518            B=0.0704
9519            S=2
9520            GO TO 60
9521            ENDIF
9522            IF(IPOT.EQ.2.or.ipot.eq.7)THEN
9523            A=-0.218
9524            B=0.164
9525            S=4./3.
9526            ENDIF
9527            IF(IPOT.EQ.3)THEN
9528            a=-0.3581
9529            b=0.3048
9530            S=1.167
9531            GO TO 60
9532            ENDIF
9533            IF(IPOT.EQ.4)THEN
9534            denr=rho(ix,iy,iz)/rho0         
9535            b=0.3048
9536            S=1.167
9537            if(denr.le.4.or.denr.gt.7)then
9538            a=-0.3581
9539            else
9540            a=-b*denr**(1./6.)-2.*0.036/3.*denr**(-0.333)
9541            endif
9542            GO TO 60
9543            ENDIF
9544 60           U = 0.5*A*RHO(IX,IY,IZ)**2/RHO0 
9545      1        + B/(1+S) * (RHO(IX,IY,IZ)/RHO0)**S*RHO(IX,IY,IZ)  
9546 70           PEL(IX,IY,IZ)=PEL(IX,IY,IZ)+U
9547   101     CONTINUE
9548   201   CONTINUE
9549   301 CONTINUE
9550       RETURN
9551       END
9552
9553 **********************************
9554 *                                                                      *
9555       SUBROUTINE GRADU(IOPT,IX,IY,IZ,GRADX,GRADY,GRADZ)
9556 *                                                                      *
9557 *       PURPOSE:     DETERMINE GRAD(U(RHO(X,Y,Z)))                     *
9558 *       VARIABLES:                                                     *
9559 *         IOPT                - METHOD FOR EVALUATING THE GRADIENT     *
9560 *                                                      (INTEGER,INPUT) *
9561 *         IX, IY, IZ          - COORDINATES OF POINT   (INTEGER,INPUT) *
9562 *         GRADX, GRADY, GRADZ - GRADIENT OF U            (REAL,OUTPUT) *
9563 *                                                                      *
9564 **********************************
9565       PARAMETER         (MAXX =    20,  MAXZ =   24)
9566       PARAMETER         (RHO0 = 0.167)
9567 *
9568       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9569      &                  RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9570      &                  RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9571 cc      SAVE /DD/
9572       common  /ss/      inout(20)
9573 cc      SAVE /ss/
9574       common  /tt/  PEL(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9575      &,rxy(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9576 cc      SAVE /tt/
9577       SAVE   
9578 *
9579       RXPLUS   = RHO(IX+1,IY,  IZ  ) / RHO0
9580       RXMINS   = RHO(IX-1,IY,  IZ  ) / RHO0
9581       RYPLUS   = RHO(IX,  IY+1,IZ  ) / RHO0
9582       RYMINS   = RHO(IX,  IY-1,IZ  ) / RHO0
9583       RZPLUS   = RHO(IX,  IY,  IZ+1) / RHO0
9584       RZMINS   = RHO(IX,  IY,  IZ-1) / RHO0
9585       den0     = RHO(IX,  IY,  IZ) / RHO0
9586       ene0     = pel(IX,  IY,  IZ) 
9587 *-----------------------------------------------------------------------
9588       GOTO (1,2,3,4,5) IOPT
9589        if(iopt.eq.6)go to 6
9590        if(iopt.eq.7)go to 7
9591 *
9592     1 CONTINUE
9593 *       POTENTIAL USED IN 1) (STIFF):
9594 *       U = -.124 * RHO/RHO0 + .0705 (RHO/RHO0)**2 GEV
9595 *
9596            GRADX  = -0.062 * (RXPLUS - RXMINS) + 0.03525 * (RXPLUS**2 -
9597      &                                                      RXMINS**2)
9598            GRADY  = -0.062 * (RYPLUS - RYMINS) + 0.03525 * (RYPLUS**2 -
9599      &                                                      RYMINS**2)
9600            GRADZ  = -0.062 * (RZPLUS - RZMINS) + 0.03525 * (RZPLUS**2 -
9601      &                                                      RZMINS**2)
9602            RETURN
9603 *
9604     2 CONTINUE
9605 *       POTENTIAL USED IN 2):
9606 *       U = -.218 * RHO/RHO0 + .164 (RHO/RHO0)**(4/3) GEV
9607 *
9608            EXPNT = 1.3333333
9609            GRADX = -0.109 * (RXPLUS - RXMINS) 
9610      &     + 0.082 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9611            GRADY = -0.109 * (RYPLUS - RYMINS) 
9612      &     + 0.082 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9613            GRADZ = -0.109 * (RZPLUS - RZMINS) 
9614      &     + 0.082 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9615            RETURN
9616 *
9617     3 CONTINUE
9618 *       POTENTIAL USED IN 3) (SOFT):
9619 *       U = -.356 * RHO/RHO0 + .303 * (RHO/RHO0)**(7/6)  GEV
9620 *
9621            EXPNT = 1.1666667
9622           acoef = 0.178
9623            GRADX = -acoef * (RXPLUS - RXMINS) 
9624      &     + 0.1515 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9625            GRADY = -acoef * (RYPLUS - RYMINS) 
9626      &     + 0.1515 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9627            GRADZ = -acoef * (RZPLUS - RZMINS) 
9628      &     + 0.1515 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9629                  RETURN
9630 *
9631 *
9632     4   CONTINUE
9633 *       POTENTIAL USED IN 4) (super-soft in the mixed phase of 4 < rho/rho <7):
9634 *       U1 = -.356 * RHO/RHO0 + .303 * (RHO/RHO0)**(7/6)  GEV
9635 *       normal phase, soft eos of iopt=3
9636 *       U2 = -.02 * (RHO/RHO0)**(2/3) -0.0253 * (RHO/RHO0)**(7/6)  GEV
9637 *
9638        eh=4.
9639        eqgp=7.
9640            acoef=0.178
9641            EXPNT = 1.1666667
9642        denr=rho(ix,iy,iz)/rho0
9643        if(denr.le.eh.or.denr.ge.eqgp)then
9644            GRADX = -acoef * (RXPLUS - RXMINS) 
9645      &     + 0.1515 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9646            GRADY = -acoef * (RYPLUS - RYMINS) 
9647      &     + 0.1515 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9648            GRADZ = -acoef * (RZPLUS - RZMINS) 
9649      &     + 0.1515 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9650        else
9651           acoef1=0.178
9652           acoef2=0.0
9653           expnt2=2./3.
9654            GRADX =-acoef1* (RXPLUS**EXPNT-RXMINS**EXPNT)
9655      &                 -acoef2* (RXPLUS**expnt2 - RXMINS**expnt2) 
9656            GRADy =-acoef1* (RyPLUS**EXPNT-RyMINS**EXPNT)
9657      &                 -acoef2* (RyPLUS**expnt2 - RyMINS**expnt2) 
9658            GRADz =-acoef1* (RzPLUS**EXPNT-RzMINS**EXPNT)
9659      &                 -acoef2* (RzPLUS**expnt2 - RzMINS**expnt2) 
9660        endif
9661        return
9662 *     
9663     5   CONTINUE
9664 *       POTENTIAL USED IN 5) (SUPER STIFF):
9665 *       U = -.10322 * RHO/RHO0 + .04956 * (RHO/RHO0)**(2.77)  GEV
9666 *
9667            EXPNT = 2.77
9668            GRADX = -0.0516 * (RXPLUS - RXMINS) 
9669      &     + 0.02498 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9670            GRADY = -0.0516 * (RYPLUS - RYMINS) 
9671      &     + 0.02498 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9672            GRADZ = -0.0516 * (RZPLUS - RZMINS) 
9673      &     + 0.02498 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9674            RETURN
9675 *
9676     6 CONTINUE
9677 *       POTENTIAL USED IN 6) (STIFF-qgp):
9678 *       U = -.124 * RHO/RHO0 + .0705 (RHO/RHO0)**2 GEV
9679 *
9680        if(ene0.le.0.5)then
9681            GRADX  = -0.062 * (RXPLUS - RXMINS) + 0.03525 * (RXPLUS**2 -
9682      &                                                      RXMINS**2)
9683            GRADY  = -0.062 * (RYPLUS - RYMINS) + 0.03525 * (RYPLUS**2 -
9684      &                                                      RYMINS**2)
9685            GRADZ  = -0.062 * (RZPLUS - RZMINS) + 0.03525 * (RZPLUS**2 -
9686      &                                                      RZMINS**2)
9687            RETURN
9688        endif
9689        if(ene0.gt.0.5.and.ene0.le.1.5)then
9690 *       U=c1-ef*rho/rho0**2/3
9691        ef=36./1000.
9692            GRADX  = -0.5*ef* (RXPLUS**0.67-RXMINS**0.67)
9693            GRADy  = -0.5*ef* (RyPLUS**0.67-RyMINS**0.67)
9694            GRADz  = -0.5*ef* (RzPLUS**0.67-RzMINS**0.67)
9695            RETURN
9696        endif
9697        if(ene0.gt.1.5)then
9698 * U=800*(rho/rho0)**1/3.-Ef*(rho/rho0)**2/3.-c2
9699        ef=36./1000.
9700        cf0=0.8
9701         GRADX  =0.5*cf0*(rxplus**0.333-rxmins**0.333) 
9702      &         -0.5*ef* (RXPLUS**0.67-RXMINS**0.67)
9703         GRADy  =0.5*cf0*(ryplus**0.333-rymins**0.333) 
9704      &         -0.5*ef* (RyPLUS**0.67-RyMINS**0.67)
9705         GRADz  =0.5*cf0*(rzplus**0.333-rzmins**0.333) 
9706      &         -0.5*ef* (RzPLUS**0.67-RzMINS**0.67)
9707            RETURN
9708        endif
9709 *
9710     7 CONTINUE
9711 *       POTENTIAL USED IN 7) (Soft-qgp):
9712        if(den0.le.4.5)then
9713 *       POTENTIAL USED is the same as IN 3) (SOFT):
9714 *       U = -.356 * RHO/RHO0 + .303 * (RHO/RHO0)**(7/6)  GEV
9715 *
9716            EXPNT = 1.1666667
9717           acoef = 0.178
9718            GRADX = -acoef * (RXPLUS - RXMINS) 
9719      &     + 0.1515 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9720            GRADY = -acoef * (RYPLUS - RYMINS) 
9721      &     + 0.1515 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9722            GRADZ = -acoef * (RZPLUS - RZMINS) 
9723      &     + 0.1515 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9724        return
9725        endif
9726        if(den0.gt.4.5.and.den0.le.5.1)then
9727 *       U=c1-ef*rho/rho0**2/3
9728        ef=36./1000.
9729            GRADX  = -0.5*ef* (RXPLUS**0.67-RXMINS**0.67)
9730            GRADy  = -0.5*ef* (RyPLUS**0.67-RyMINS**0.67)
9731            GRADz  = -0.5*ef* (RzPLUS**0.67-RzMINS**0.67)
9732            RETURN
9733        endif
9734        if(den0.gt.5.1)then
9735 * U=800*(rho/rho0)**1/3.-Ef*(rho/rho0)**2/3.-c2
9736        ef=36./1000.
9737        cf0=0.8
9738         GRADX  =0.5*cf0*(rxplus**0.333-rxmins**0.333) 
9739      &         -0.5*ef* (RXPLUS**0.67-RXMINS**0.67)
9740         GRADy  =0.5*cf0*(ryplus**0.333-rymins**0.333) 
9741      &         -0.5*ef* (RyPLUS**0.67-RyMINS**0.67)
9742         GRADz  =0.5*cf0*(rzplus**0.333-rzmins**0.333) 
9743      &         -0.5*ef* (RzPLUS**0.67-RzMINS**0.67)
9744            RETURN
9745        endif
9746         END
9747 **********************************
9748 *                                                                      *
9749       SUBROUTINE GRADUK(IX,IY,IZ,GRADXk,GRADYk,GRADZk)
9750 *                                                                      *
9751 *       PURPOSE:     DETERMINE the baryon density gradient for         *
9752 *                    proporgating kaons in a mean field caused by      *
9753 *                    surrounding baryons                               * 
9754 *       VARIABLES:                                                     *
9755 *         IX, IY, IZ          - COORDINATES OF POINT   (INTEGER,INPUT) *
9756 *         GRADXk, GRADYk, GRADZk                       (REAL,OUTPUT)   *
9757 *                                                                      *
9758 **********************************
9759       PARAMETER         (MAXX =    20,  MAXZ =   24)
9760       PARAMETER         (RHO0 = 0.168)
9761 *
9762       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9763      &                  RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9764      &                  RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9765 cc      SAVE /DD/
9766       common  /ss/      inout(20)
9767 cc      SAVE /ss/
9768       SAVE   
9769 *
9770       RXPLUS   = RHO(IX+1,IY,  IZ  ) 
9771       RXMINS   = RHO(IX-1,IY,  IZ  ) 
9772       RYPLUS   = RHO(IX,  IY+1,IZ  ) 
9773       RYMINS   = RHO(IX,  IY-1,IZ  ) 
9774       RZPLUS   = RHO(IX,  IY,  IZ+1) 
9775       RZMINS   = RHO(IX,  IY,  IZ-1) 
9776            GRADXk  = (RXPLUS - RXMINS)/2. 
9777            GRADYk  = (RYPLUS - RYMINS)/2.
9778            GRADZk  = (RZPLUS - RZMINS)/2.
9779            RETURN
9780            END
9781 *-----------------------------------------------------------------------
9782       SUBROUTINE GRADUP(IX,IY,IZ,GRADXP,GRADYP,GRADZP)
9783 *                                                                      *
9784 *       PURPOSE:     DETERMINE THE GRADIENT OF THE PROTON DENSITY      *
9785 *       VARIABLES:                                                     *
9786 *                                                                           *
9787 *         IX, IY, IZ          - COORDINATES OF POINT   (INTEGER,INPUT) *
9788 *         GRADXP, GRADYP, GRADZP - GRADIENT OF THE PROTON              *
9789 *                                  DENSITY(REAL,OUTPUT)                *
9790 *                                                                      *
9791 **********************************
9792       PARAMETER         (MAXX =    20,  MAXZ =   24)
9793       PARAMETER         (RHO0 = 0.168)
9794 *
9795       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9796      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9797      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9798 cc      SAVE /DD/
9799       common  /ss/      inout(20)
9800 cc      SAVE /ss/
9801       SAVE   
9802 *
9803       RXPLUS   = RHOP(IX+1,IY,  IZ  ) / RHO0
9804       RXMINS   = RHOP(IX-1,IY,  IZ  ) / RHO0
9805       RYPLUS   = RHOP(IX,  IY+1,IZ  ) / RHO0
9806       RYMINS   = RHOP(IX,  IY-1,IZ  ) / RHO0
9807       RZPLUS   = RHOP(IX,  IY,  IZ+1) / RHO0
9808       RZMINS   = RHOP(IX,  IY,  IZ-1) / RHO0
9809 *-----------------------------------------------------------------------
9810 *
9811            GRADXP  = (RXPLUS - RXMINS)/2. 
9812            GRADYP  = (RYPLUS - RYMINS)/2.
9813            GRADZP  = (RZPLUS - RZMINS)/2.
9814            RETURN
9815       END
9816 *-----------------------------------------------------------------------
9817       SUBROUTINE GRADUN(IX,IY,IZ,GRADXN,GRADYN,GRADZN)
9818 *                                                                      *
9819 *       PURPOSE:     DETERMINE THE GRADIENT OF THE NEUTRON DENSITY     *
9820 *       VARIABLES:                                                     *
9821 *                                                                           *
9822 *         IX, IY, IZ          - COORDINATES OF POINT   (INTEGER,INPUT) *
9823 *         GRADXN, GRADYN, GRADZN - GRADIENT OF THE NEUTRON             *
9824 *                                  DENSITY(REAL,OUTPUT)                *
9825 *                                                                      *
9826 **********************************
9827       PARAMETER         (MAXX =    20,  MAXZ =   24)
9828       PARAMETER         (RHO0 = 0.168)
9829 *
9830       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9831      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9832      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9833 cc      SAVE /DD/
9834       common  /ss/      inout(20)
9835 cc      SAVE /ss/
9836       SAVE   
9837 *
9838       RXPLUS   = RHON(IX+1,IY,  IZ  ) / RHO0
9839       RXMINS   = RHON(IX-1,IY,  IZ  ) / RHO0
9840       RYPLUS   = RHON(IX,  IY+1,IZ  ) / RHO0
9841       RYMINS   = RHON(IX,  IY-1,IZ  ) / RHO0
9842       RZPLUS   = RHON(IX,  IY,  IZ+1) / RHO0
9843       RZMINS   = RHON(IX,  IY,  IZ-1) / RHO0
9844 *-----------------------------------------------------------------------
9845 *
9846            GRADXN  = (RXPLUS - RXMINS)/2. 
9847            GRADYN  = (RYPLUS - RYMINS)/2.
9848            GRADZN  = (RZPLUS - RZMINS)/2.
9849            RETURN
9850       END
9851
9852 *-----------------------------------------------------------------------------
9853 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
9854 *KITAZOE'S FORMULA
9855         REAL FUNCTION FDE(DMASS,SRT,CON)
9856       SAVE   
9857         AMN=0.938869
9858         AVPI=0.13803333
9859         AM0=1.232
9860         FD=4.*(AM0**2)*WIDTH(DMASS)/((DMASS**2-1.232**2)**2
9861      1  +AM0**2*WIDTH(DMASS)**2)
9862         IF(CON.EQ.1.)THEN
9863         P11=(SRT**2+DMASS**2-AMN**2)**2
9864      1  /(4.*SRT**2)-DMASS**2
9865        if(p11.le.0)p11=1.E-06
9866        p1=sqrt(p11)
9867         ELSE
9868         DMASS=AMN+AVPI
9869         P11=(SRT**2+DMASS**2-AMN**2)**2
9870      1  /(4.*SRT**2)-DMASS**2
9871        if(p11.le.0)p11=1.E-06
9872        p1=sqrt(p11)
9873         ENDIF
9874         FDE=FD*P1*DMASS
9875         RETURN
9876         END
9877 *-------------------------------------------------------------
9878 *FUNCTION FDE(DMASS) GIVES N*(1535) MASS DISTRIBUTION BY USING OF
9879 *KITAZOE'S FORMULA
9880         REAL FUNCTION FD5(DMASS,SRT,CON)
9881       SAVE   
9882         AMN=0.938869
9883         AVPI=0.13803333
9884         AM0=1.535
9885         FD=4.*(AM0**2)*W1535(DMASS)/((DMASS**2-1.535**2)**2
9886      1  +AM0**2*W1535(DMASS)**2)
9887         IF(CON.EQ.1.)THEN
9888         P1=SQRT((SRT**2+DMASS**2-AMN**2)**2
9889      1  /(4.*SRT**2)-DMASS**2)
9890         ELSE
9891         DMASS=AMN+AVPI
9892         P1=SQRT((SRT**2+DMASS**2-AMN**2)**2
9893      1  /(4.*SRT**2)-DMASS**2)
9894         ENDIF
9895         FD5=FD*P1*DMASS
9896         RETURN
9897         END
9898 *--------------------------------------------------------------------------
9899 *FUNCTION FNS(DMASS) GIVES N* MASS DISTRIBUTION 
9900 c     BY USING OF BREIT-WIGNER FORMULA
9901         REAL FUNCTION FNS(DMASS,SRT,CON)
9902       SAVE   
9903         WIDTH=0.2
9904         AMN=0.938869
9905         AVPI=0.13803333
9906         AN0=1.43
9907         FN=4.*(AN0**2)*WIDTH/((DMASS**2-1.44**2)**2+AN0**2*WIDTH**2)
9908         IF(CON.EQ.1.)THEN
9909         P1=SQRT((SRT**2+DMASS**2-AMN**2)**2
9910      1  /(4.*SRT**2)-DMASS**2)
9911         ELSE
9912         DMASS=AMN+AVPI
9913         P1=SQRT((SRT**2+DMASS**2-AMN**2)**2
9914      1  /(4.*SRT**2)-DMASS**2)
9915         ENDIF
9916         FNS=FN*P1*DMASS
9917         RETURN
9918         END
9919 *-----------------------------------------------------------------------------
9920 *-----------------------------------------------------------------------------
9921 * PURPOSE:1. SORT N*(1440) and N*(1535) 2-body DECAY PRODUCTS
9922 *         2. DETERMINE THE MOMENTUM AND COORDINATES OF NUCLEON AND PION
9923 *            AFTER THE DELTA OR N* DECAYING
9924 * DATE   : JAN. 24,1990, MODIFIED ON MAY 17, 1994 TO INCLUDE ETA 
9925         SUBROUTINE DECAY(IRUN,I,NNN,ISEED,wid,nt)
9926         PARAMETER (MAXSTR=150001,MAXR=1,
9927      1  AMN=0.939457,ETAM=0.5475,AMP=0.93828,AP1=0.13496,
9928      2  AP2=0.13957,AM0=1.232,PI=3.1415926)
9929         COMMON /AA/ R(3,MAXSTR)
9930 cc      SAVE /AA/
9931         COMMON /BB/ P(3,MAXSTR)
9932 cc      SAVE /BB/
9933         COMMON /CC/ E(MAXSTR)
9934 cc      SAVE /CC/
9935         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
9936 cc      SAVE /EE/
9937         COMMON   /RUN/NUM
9938 cc      SAVE /RUN/
9939         COMMON   /PA/RPION(3,MAXSTR,MAXR)
9940 cc      SAVE /PA/
9941         COMMON   /PB/PPION(3,MAXSTR,MAXR)
9942 cc      SAVE /PB/
9943         COMMON   /PC/EPION(MAXSTR,MAXR)
9944 cc      SAVE /PC/
9945         COMMON   /PD/LPION(MAXSTR,MAXR)
9946 cc      SAVE /PD/
9947         COMMON /INPUT2/ ILAB, MANYB, NTMAX, ICOLL, INSYS, IPOT, MODE, 
9948      &       IMOMEN, NFREQ, ICFLOW, ICRHO, ICOU, KPOTEN, KMUL
9949 cc      SAVE /INPUT2/
9950       COMMON/RNDF77/NSEED
9951       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
9952      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
9953      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
9954 cc      SAVE /RNDF77/
9955       SAVE   
9956         lbanti=LB(I)
9957 c
9958         DM=E(I)
9959 *1. FOR N*+(1440) DECAY
9960         IF(iabs(LB(I)).EQ.11)THEN
9961            X3=RANART(NSEED)
9962            IF(X3.GT.(1./3.))THEN
9963               LB(I)=2
9964               NLAB=2
9965               LPION(NNN,IRUN)=5
9966               EPION(NNN,IRUN)=AP2
9967            ELSE
9968               LB(I)=1
9969               NLAB=1
9970               LPION(NNN,IRUN)=4
9971               EPION(NNN,IRUN)=AP1
9972            ENDIF
9973 *2. FOR N*0(1440) DECAY
9974         ELSEIF(iabs(LB(I)).EQ.10)THEN
9975            X4=RANART(NSEED)
9976            IF(X4.GT.(1./3.))THEN
9977               LB(I)=1
9978               NLAB=1
9979               LPION(NNN,IRUN)=3
9980               EPION(NNN,IRUN)=AP2
9981            ELSE
9982               LB(I)=2
9983               NALB=2
9984               LPION(NNN,IRUN)=4
9985               EPION(NNN,IRUN)=AP1
9986            ENDIF
9987 * N*(1535) CAN DECAY TO A PION OR AN ETA IF DM > 1.49 GeV
9988 *3 N*(0)(1535) DECAY
9989         ELSEIF(iabs(LB(I)).EQ.12)THEN
9990            CTRL=0.65
9991            IF(DM.lE.1.49)ctrl=-1.
9992            X5=RANART(NSEED)
9993            IF(X5.GE.ctrl)THEN
9994 * DECAY TO PION+NUCLEON
9995               X6=RANART(NSEED)
9996               IF(X6.GT.(1./3.))THEN
9997                  LB(I)=1
9998                  NLAB=1
9999                  LPION(NNN,IRUN)=3
10000                  EPION(NNN,IRUN)=AP2
10001               ELSE
10002                  LB(I)=2
10003                  NALB=2
10004                  LPION(NNN,IRUN)=4
10005                  EPION(NNN,IRUN)=AP1
10006               ENDIF
10007            ELSE
10008 * DECAY TO ETA+NEUTRON
10009               LB(I)=2
10010               NLAB=2
10011               LPION(NNN,IRUN)=0
10012               EPION(NNN,IRUN)=ETAM
10013            ENDIF
10014 *4. FOR N*+(1535) DECAY
10015         ELSEIF(iabs(LB(I)).EQ.13)THEN
10016            CTRL=0.65
10017            IF(DM.lE.1.49)ctrl=-1.
10018            X5=RANART(NSEED)
10019            IF(X5.GE.ctrl)THEN
10020 * DECAY TO PION+NUCLEON
10021               X8=RANART(NSEED)
10022               IF(X8.GT.(1./3.))THEN
10023                  LB(I)=2
10024                  NLAB=2
10025                  LPION(NNN,IRUN)=5
10026                  EPION(NNN,IRUN)=AP2
10027               ELSE
10028                  LB(I)=1
10029                  NLAB=1
10030                  LPION(NNN,IRUN)=4
10031                  EPION(NNN,IRUN)=AP1
10032               ENDIF
10033            ELSE
10034 * DECAY TO ETA+NUCLEON
10035               LB(I)=1
10036               NLAB=1
10037               LPION(NNN,IRUN)=0
10038               EPION(NNN,IRUN)=ETAM
10039            ENDIF
10040         ENDIF
10041 c
10042         CALL DKINE(IRUN,I,NNN,NLAB,ISEED,wid,nt)
10043 c
10044 c     anti-particle ID for anti-N* decays:
10045         if(lbanti.lt.0) then
10046            lbi=LB(I)
10047            if(lbi.eq.1.or.lbi.eq.2) then
10048               lbi=-lbi
10049            elseif(lbi.eq.3) then
10050               lbi=5
10051            elseif(lbi.eq.5) then
10052               lbi=3
10053            endif
10054            LB(I)=lbi
10055 c
10056            lbi=LPION(NNN,IRUN)
10057            if(lbi.eq.3) then
10058               lbi=5
10059            elseif(lbi.eq.5) then
10060               lbi=3
10061            elseif(lbi.eq.1.or.lbi.eq.2) then
10062               lbi=-lbi
10063            endif
10064            LPION(NNN,IRUN)=lbi
10065         endif
10066 c
10067         if(nt.eq.ntmax) then
10068 c     at the last timestep, assign rho or eta (decay daughter) 
10069 c     to lb(i1) only (not to lpion) in order to decay them again:
10070            lbm=LPION(NNN,IRUN)
10071            if(lbm.eq.0.or.lbm.eq.25
10072      1          .or.lbm.eq.26.or.lbm.eq.27) then
10073 c     switch rho or eta with baryon, positions are the same (no change needed):
10074               lbsave=lbm
10075               xmsave=EPION(NNN,IRUN)
10076               pxsave=PPION(1,NNN,IRUN)
10077               pysave=PPION(2,NNN,IRUN)
10078               pzsave=PPION(3,NNN,IRUN)
10079 clin-5/2008:
10080               dpsave=dppion(NNN,IRUN)
10081               LPION(NNN,IRUN)=LB(I)
10082               EPION(NNN,IRUN)=E(I)
10083               PPION(1,NNN,IRUN)=P(1,I)
10084               PPION(2,NNN,IRUN)=P(2,I)
10085               PPION(3,NNN,IRUN)=P(3,I)
10086 clin-5/2008:
10087               dppion(NNN,IRUN)=dpertp(I)
10088               LB(I)=lbsave
10089               E(I)=xmsave
10090               P(1,I)=pxsave
10091               P(2,I)=pysave
10092               P(3,I)=pzsave
10093 clin-5/2008:
10094               dpertp(I)=dpsave
10095            endif
10096         endif
10097
10098        RETURN
10099        END
10100
10101 *-------------------------------------------------------------------
10102 *-------------------------------------------------------------------
10103 * PURPOSE:
10104 *         CALCULATE THE MOMENTUM OF NUCLEON AND PION (OR ETA) 
10105 *         IN THE LAB. FRAME AFTER DELTA OR N* DECAY
10106 * DATE   : JAN. 24,1990, MODIFIED ON MAY 17, 1994 TO INCLUDE ETA PRODUCTION
10107         SUBROUTINE DKINE(IRUN,I,NNN,NLAB,ISEED,wid,nt)
10108         PARAMETER (hbarc=0.19733)
10109         PARAMETER (MAXSTR=150001,MAXR=1,
10110      1  AMN=0.939457,AMP=0.93828,ETAM=0.5475,
10111      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10112         COMMON /AA/ R(3,MAXSTR)
10113 cc      SAVE /AA/
10114         COMMON /BB/ P(3,MAXSTR)
10115 cc      SAVE /BB/
10116         COMMON /CC/ E(MAXSTR)
10117 cc      SAVE /CC/
10118         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10119 cc      SAVE /EE/
10120         COMMON   /RUN/NUM
10121 cc      SAVE /RUN/
10122         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10123 cc      SAVE /PA/
10124         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10125 cc      SAVE /PB/
10126         COMMON   /PC/EPION(MAXSTR,MAXR)
10127 cc      SAVE /PC/
10128         COMMON   /PD/LPION(MAXSTR,MAXR)
10129 cc      SAVE /PD/
10130       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
10131      1 px1n,py1n,pz1n,dp1n
10132 cc      SAVE /leadng/
10133         COMMON/tdecay/tfdcy(MAXSTR),tfdpi(MAXSTR,MAXR),tft(MAXSTR)
10134 cc      SAVE /tdecay/
10135         COMMON /INPUT2/ ILAB, MANYB, NTMAX, ICOLL, INSYS, IPOT, MODE, 
10136      &       IMOMEN, NFREQ, ICFLOW, ICRHO, ICOU, KPOTEN, KMUL
10137 cc      SAVE /INPUT2/
10138       COMMON/RNDF77/NSEED
10139 cc      SAVE /RNDF77/
10140       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
10141      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
10142      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
10143         EXTERNAL IARFLV, INVFLV
10144       SAVE   
10145         ISEED=ISEED
10146 * READ IN THE COORDINATES OF DELTA OR N* UNDERGOING DECAY
10147         PX=P(1,I)
10148         PY=P(2,I)
10149         PZ=P(3,I)
10150         RX=R(1,I)
10151         RY=R(2,I)
10152         RZ=R(3,I)
10153         DM=E(I)
10154         EDELTA=SQRT(DM**2+PX**2+PY**2+PZ**2)
10155         PM=EPION(NNN,IRUN)
10156         AM=AMP
10157         IF(NLAB.EQ.2)AM=AMN
10158 * FIND OUT THE MOMENTUM AND ENERGY OF PION AND NUCLEON IN DELTA REST FRAME
10159 * THE MAGNITUDE OF MOMENTUM IS DETERMINED BY ENERGY CONSERVATION ,THE FORMULA
10160 * CAN BE FOUND ON PAGE 716,W BAUER P.R.C40,1989
10161 * THE DIRECTION OF THE MOMENTUM IS ASSUMED ISOTROPIC. NOTE THAT P(PION)=-P(N)
10162         Q2=((DM**2-AM**2+PM**2)/(2.*DM))**2-PM**2
10163         IF(Q2.LE.0.)Q2=1.e-09
10164         Q=SQRT(Q2)
10165 11      QX=1.-2.*RANART(NSEED)
10166         QY=1.-2.*RANART(NSEED)
10167         QZ=1.-2.*RANART(NSEED)
10168         QS=QX**2+QY**2+QZ**2
10169         IF(QS.GT.1.) GO TO 11
10170         PXP=Q*QX/SQRT(QS)
10171         PYP=Q*QY/SQRT(QS)
10172         PZP=Q*QZ/SQRT(QS)
10173         EP=SQRT(Q**2+PM**2)
10174         PXN=-PXP
10175         PYN=-PYP
10176         PZN=-PZP
10177         EN=SQRT(Q**2+AM**2)
10178 * TRANSFORM INTO THE LAB. FRAME. THE GENERAL LORENTZ TRANSFORMATION CAN
10179 * BE FOUND ON PAGE 34 OF R. HAGEDORN " RELATIVISTIC KINEMATICS"
10180         GD=EDELTA/DM
10181         FGD=GD/(1.+GD)
10182         BDX=PX/EDELTA
10183         BDY=PY/EDELTA
10184         BDZ=PZ/EDELTA
10185         BPP=BDX*PXP+BDY*PYP+BDZ*PZP
10186         BPN=BDX*PXN+BDY*PYN+BDZ*PZN
10187         P(1,I)=PXN+BDX*GD*(FGD*BPN+EN)
10188         P(2,I)=PYN+BDY*GD*(FGD*BPN+EN)
10189         P(3,I)=PZN+BDZ*GD*(FGD*BPN+EN)
10190         E(I)=AM
10191 * WE ASSUME THAT THE SPACIAL COORDINATE OF THE NUCLEON
10192 * IS THAT OF THE DELTA
10193         PPION(1,NNN,IRUN)=PXP+BDX*GD*(FGD*BPP+EP)
10194         PPION(2,NNN,IRUN)=PYP+BDY*GD*(FGD*BPP+EP)
10195         PPION(3,NNN,IRUN)=PZP+BDZ*GD*(FGD*BPP+EP)
10196 clin-5/2008:
10197         dppion(NNN,IRUN)=dpertp(I)
10198 * WE ASSUME THE PION OR ETA COMING FROM DELTA DECAY IS LOCATED ON THE SPHERE
10199 * OF RADIUS 0.5FM AROUND DELTA, THIS POINT NEED TO BE CHECKED 
10200 * AND OTHER CRIERTION MAY BE TRIED
10201 clin-2/20/03 no additional smearing for position of decay daughters:
10202 c200         X0 = 1.0 - 2.0 * RANART(NSEED)
10203 c            Y0 = 1.0 - 2.0 * RANART(NSEED)
10204 c            Z0 = 1.0 - 2.0 * RANART(NSEED)
10205 c        IF ((X0*X0+Y0*Y0+Z0*Z0) .GT. 1.0) GOTO 200
10206 c        RPION(1,NNN,IRUN)=R(1,I)+0.5*x0
10207 c        RPION(2,NNN,IRUN)=R(2,I)+0.5*y0
10208 c        RPION(3,NNN,IRUN)=R(3,I)+0.5*z0
10209         RPION(1,NNN,IRUN)=R(1,I)
10210         RPION(2,NNN,IRUN)=R(2,I)
10211         RPION(3,NNN,IRUN)=R(3,I)
10212 c
10213         devio=SQRT(EPION(NNN,IRUN)**2+PPION(1,NNN,IRUN)**2
10214      1       +PPION(2,NNN,IRUN)**2+PPION(3,NNN,IRUN)**2)
10215      2       +SQRT(E(I)**2+P(1,I)**2+P(2,I)**2+P(3,I)**2)-e1
10216 c        if(abs(devio).gt.0.02) write(93,*) 'decay(): nt=',nt,devio,lb1
10217
10218 c     add decay time to daughter's formation time at the last timestep:
10219         if(nt.eq.ntmax) then
10220            tau0=hbarc/wid
10221            taudcy=tau0*(-1.)*alog(1.-RANART(NSEED))
10222 c     lorentz boost:
10223            taudcy=taudcy*e1/em1
10224            tfnl=tfnl+taudcy
10225            xfnl=xfnl+px1/e1*taudcy
10226            yfnl=yfnl+py1/e1*taudcy
10227            zfnl=zfnl+pz1/e1*taudcy
10228            R(1,I)=xfnl
10229            R(2,I)=yfnl
10230            R(3,I)=zfnl
10231            tfdcy(I)=tfnl
10232            RPION(1,NNN,IRUN)=xfnl
10233            RPION(2,NNN,IRUN)=yfnl
10234            RPION(3,NNN,IRUN)=zfnl
10235            tfdpi(NNN,IRUN)=tfnl
10236         endif
10237
10238 cc 200    format(a30,2(1x,e10.4))
10239 cc 210    format(i6,5(1x,f8.3))
10240 cc 220    format(a2,i5,5(1x,f8.3))
10241
10242         RETURN
10243         END
10244
10245 *-----------------------------------------------------------------------------
10246 *-----------------------------------------------------------------------------
10247 * PURPOSE:1. N*-->N+PION+PION  DECAY PRODUCTS
10248 *         2. DETERMINE THE MOMENTUM AND COORDINATES OF NUCLEON AND PION
10249 *            AFTER THE DELTA OR N* DECAYING
10250 * DATE   : NOV.7,1994
10251 *----------------------------------------------------------------------------
10252         SUBROUTINE DECAY2(IRUN,I,NNN,ISEED,wid,nt)
10253         PARAMETER (MAXSTR=150001,MAXR=1,
10254      1  AMN=0.939457,ETAM=0.5475,AMP=0.93828,AP1=0.13496,
10255      2  AP2=0.13957,AM0=1.232,PI=3.1415926)
10256         COMMON /AA/ R(3,MAXSTR)
10257 cc      SAVE /AA/
10258         COMMON /BB/ P(3,MAXSTR)
10259 cc      SAVE /BB/
10260         COMMON /CC/ E(MAXSTR)
10261 cc      SAVE /CC/
10262         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10263 cc      SAVE /EE/
10264         COMMON   /RUN/NUM
10265 cc      SAVE /RUN/
10266         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10267 cc      SAVE /PA/
10268         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10269 cc      SAVE /PB/
10270         COMMON   /PC/EPION(MAXSTR,MAXR)
10271 cc      SAVE /PC/
10272         COMMON   /PD/LPION(MAXSTR,MAXR)
10273 cc      SAVE /PD/
10274       COMMON/RNDF77/NSEED
10275 cc      SAVE /RNDF77/
10276       SAVE   
10277
10278         lbanti=LB(I)
10279 c
10280         DM=E(I)
10281 * DETERMINE THE DECAY PRODUCTS
10282 * FOR N*+(1440) DECAY
10283         IF(iabs(LB(I)).EQ.11)THEN
10284            X3=RANART(NSEED)
10285            IF(X3.LT.(1./3))THEN
10286               LB(I)=2
10287               NLAB=2
10288               LPION(NNN,IRUN)=5
10289               EPION(NNN,IRUN)=AP2
10290               LPION(NNN+1,IRUN)=4
10291               EPION(NNN+1,IRUN)=AP1
10292            ELSEIF(X3.LT.2./3.AND.X3.GT.1./3.)THEN
10293               LB(I)=1
10294               NLAB=1
10295               LPION(NNN,IRUN)=5
10296               EPION(NNN,IRUN)=AP2
10297               LPION(NNN+1,IRUN)=3
10298               EPION(NNN+1,IRUN)=AP2
10299            ELSE
10300               LB(I)=1
10301               NLAB=1
10302               LPION(NNN,IRUN)=4
10303               EPION(NNN,IRUN)=AP1
10304               LPION(NNN+1,IRUN)=4
10305               EPION(NNN+1,IRUN)=AP1
10306            ENDIF
10307 * FOR N*0(1440) DECAY
10308         ELSEIF(iabs(LB(I)).EQ.10)THEN
10309            X3=RANART(NSEED)
10310            IF(X3.LT.(1./3))THEN
10311               LB(I)=2
10312               NLAB=2
10313               LPION(NNN,IRUN)=4
10314               EPION(NNN,IRUN)=AP1
10315               LPION(NNN+1,IRUN)=4
10316               EPION(NNN+1,IRUN)=AP1
10317            ELSEIF(X3.LT.2./3.AND.X3.GT.1./3.)THEN
10318               LB(I)=1
10319               NLAB=1
10320               LPION(NNN,IRUN)=3
10321               EPION(NNN,IRUN)=AP2
10322               LPION(NNN+1,IRUN)=4
10323               EPION(NNN+1,IRUN)=AP1
10324            ELSE
10325               LB(I)=2
10326               NLAB=2
10327               LPION(NNN,IRUN)=5
10328               EPION(NNN,IRUN)=AP2
10329               LPION(NNN+1,IRUN)=3
10330               EPION(NNN+1,IRUN)=AP2
10331            ENDIF
10332         ENDIF
10333
10334         CALL DKINE2(IRUN,I,NNN,NLAB,ISEED,wid,nt)
10335 c
10336 c     anti-particle ID for anti-N* decays:
10337         if(lbanti.lt.0) then
10338            lbi=LB(I)
10339            if(lbi.eq.1.or.lbi.eq.2) then
10340               lbi=-lbi
10341            elseif(lbi.eq.3) then
10342               lbi=5
10343            elseif(lbi.eq.5) then
10344               lbi=3
10345            endif
10346            LB(I)=lbi
10347 c
10348            lbi=LPION(NNN,IRUN)
10349            if(lbi.eq.3) then
10350               lbi=5
10351            elseif(lbi.eq.5) then
10352               lbi=3
10353            elseif(lbi.eq.1.or.lbi.eq.2) then
10354               lbi=-lbi
10355            endif
10356            LPION(NNN,IRUN)=lbi
10357 c
10358            lbi=LPION(NNN+1,IRUN)
10359            if(lbi.eq.3) then
10360               lbi=5
10361            elseif(lbi.eq.5) then
10362               lbi=3
10363            elseif(lbi.eq.1.or.lbi.eq.2) then
10364               lbi=-lbi
10365            endif
10366            LPION(NNN+1,IRUN)=lbi
10367         endif
10368 c
10369        RETURN
10370        END
10371 *-------------------------------------------------------------------
10372 *--------------------------------------------------------------------------
10373 *         CALCULATE THE MOMENTUM OF NUCLEON AND PION (OR ETA) 
10374 *         IN THE LAB. FRAME AFTER DELTA OR N* DECAY
10375 * DATE   : JAN. 24,1990, MODIFIED ON MAY 17, 1994 TO INCLUDE ETA PRODUCTION
10376 *--------------------------------------------------------------------------
10377         SUBROUTINE DKINE2(IRUN,I,NNN,NLAB,ISEED,wid,nt)
10378         PARAMETER (hbarc=0.19733)
10379         PARAMETER (MAXSTR=150001,MAXR=1,
10380      1  AMN=0.939457,AMP=0.93828,ETAM=0.5475,
10381      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10382         COMMON /AA/ R(3,MAXSTR)
10383 cc      SAVE /AA/
10384         COMMON /BB/ P(3,MAXSTR)
10385 cc      SAVE /BB/
10386         COMMON /CC/ E(MAXSTR)
10387 cc      SAVE /CC/
10388         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10389 cc      SAVE /EE/
10390         COMMON   /RUN/NUM
10391 cc      SAVE /RUN/
10392         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10393 cc      SAVE /PA/
10394         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10395 cc      SAVE /PB/
10396         COMMON   /PC/EPION(MAXSTR,MAXR)
10397 cc      SAVE /PC/
10398         COMMON   /PD/LPION(MAXSTR,MAXR)
10399 cc      SAVE /PD/
10400       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
10401      1 px1n,py1n,pz1n,dp1n
10402 cc      SAVE /leadng/
10403         COMMON/tdecay/tfdcy(MAXSTR),tfdpi(MAXSTR,MAXR),tft(MAXSTR)
10404 cc      SAVE /tdecay/
10405         COMMON /INPUT2/ ILAB, MANYB, NTMAX, ICOLL, INSYS, IPOT, MODE, 
10406      &       IMOMEN, NFREQ, ICFLOW, ICRHO, ICOU, KPOTEN, KMUL
10407 cc      SAVE /INPUT2/
10408         EXTERNAL IARFLV, INVFLV
10409       COMMON/RNDF77/NSEED
10410 cc      SAVE /RNDF77/
10411       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
10412      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
10413      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
10414       SAVE   
10415  
10416         ISEED=ISEED
10417 * READ IN THE COORDINATES OF THE N*(1440) UNDERGOING DECAY
10418         PX=P(1,I)
10419         PY=P(2,I)
10420         PZ=P(3,I)
10421         RX=R(1,I)
10422         RY=R(2,I)
10423         RZ=R(3,I)
10424         DM=E(I)
10425         EDELTA=SQRT(DM**2+PX**2+PY**2+PZ**2)
10426         PM1=EPION(NNN,IRUN)
10427         PM2=EPION(NNN+1,IRUN)
10428         AM=AMN
10429        IF(NLAB.EQ.1)AM=AMP
10430 * THE MAXIMUM MOMENTUM OF THE NUCLEON FROM THE DECAY OF A N*
10431        PMAX2=(DM**2-(AM+PM1+PM2)**2)*(DM**2-(AM-PM1-PM2)**2)/4/DM**2
10432        PMAX=SQRT(PMAX2)
10433 * GENERATE THE MOMENTUM OF THE NUCLEON IN THE N* REST FRAME
10434        CSS=1.-2.*RANART(NSEED)
10435        SSS=SQRT(1-CSS**2)
10436        FAI=2*PI*RANART(NSEED)
10437        PX0=PMAX*SSS*COS(FAI)
10438        PY0=PMAX*SSS*SIN(FAI)
10439        PZ0=PMAX*CSS
10440        EP0=SQRT(PX0**2+PY0**2+PZ0**2+AM**2)
10441 clin-5/23/01 bug: P0 for pion0 is equal to PMAX, leaving pion+ and pion- 
10442 c     without no relative momentum, thus producing them with equal momenta, 
10443 * BETA AND GAMMA OF THE CMS OF PION+-PION-
10444        BETAX=-PX0/(DM-EP0)
10445        BETAY=-PY0/(DM-EP0)
10446        BETAZ=-PZ0/(DM-EP0)
10447        GD1=1./SQRT(1-BETAX**2-BETAY**2-BETAZ**2)
10448        FGD1=GD1/(1+GD1)
10449 * GENERATE THE MOMENTA OF PIONS IN THE CMS OF PION+PION-
10450         Q2=((DM-EP0)/(2.*GD1))**2-PM1**2
10451         IF(Q2.LE.0.)Q2=1.E-09
10452         Q=SQRT(Q2)
10453 11      QX=1.-2.*RANART(NSEED)
10454         QY=1.-2.*RANART(NSEED)
10455         QZ=1.-2.*RANART(NSEED)
10456         QS=QX**2+QY**2+QZ**2
10457         IF(QS.GT.1.) GO TO 11
10458         PXP=Q*QX/SQRT(QS)
10459         PYP=Q*QY/SQRT(QS)
10460         PZP=Q*QZ/SQRT(QS)
10461         EP=SQRT(Q**2+PM1**2)
10462         PXN=-PXP
10463         PYN=-PYP
10464         PZN=-PZP
10465         EN=SQRT(Q**2+PM2**2)
10466 * TRANSFORM THE MOMENTA OF PION+PION- INTO THE N* REST FRAME
10467         BPP1=BETAX*PXP+BETAY*PYP+BETAZ*PZP
10468         BPN1=BETAX*PXN+BETAY*PYN+BETAZ*PZN
10469 * FOR PION-
10470         P1M=PXN+BETAX*GD1*(FGD1*BPN1+EN)
10471         P2M=PYN+BETAY*GD1*(FGD1*BPN1+EN)
10472         P3M=PZN+BETAZ*GD1*(FGD1*BPN1+EN)
10473        EPN=SQRT(P1M**2+P2M**2+P3M**2+PM2**2)
10474 * FOR PION+
10475         P1P=PXP+BETAX*GD1*(FGD1*BPP1+EP)
10476         P2P=PYP+BETAY*GD1*(FGD1*BPP1+EP)
10477         P3P=PZP+BETAZ*GD1*(FGD1*BPP1+EP)
10478        EPP=SQRT(P1P**2+P2P**2+P3P**2+PM1**2)
10479 * TRANSFORM MOMENTA OF THE THREE PIONS INTO THE 
10480 * THE NUCLEUS-NUCLEUS CENTER OF MASS  FRAME. 
10481 * THE GENERAL LORENTZ TRANSFORMATION CAN
10482 * BE FOUND ON PAGE 34 OF R. HAGEDORN " RELATIVISTIC KINEMATICS"
10483         GD=EDELTA/DM
10484         FGD=GD/(1.+GD)
10485         BDX=PX/EDELTA
10486         BDY=PY/EDELTA
10487         BDZ=PZ/EDELTA
10488        BP0=BDX*PX0+BDY*PY0+BDZ*PZ0
10489         BPP=BDX*P1P+BDY*P2P+BDZ*P3P
10490         BPN=BDX*P1M+BDY*P2M+BDZ*P3M
10491 * FOR THE NUCLEON
10492         P(1,I)=PX0+BDX*GD*(FGD*BP0+EP0)
10493         P(2,I)=PY0+BDY*GD*(FGD*BP0+EP0)
10494         P(3,I)=PZ0+BDZ*GD*(FGD*BP0+EP0)
10495        E(I)=am
10496        ID(I)=0
10497        enucl=sqrt(p(1,i)**2+p(2,i)**2+p(3,i)**2+e(i)**2)
10498 * WE ASSUME THAT THE SPACIAL COORDINATE OF THE PION0
10499 * IS in a sphere of radius 0.5 fm around N*
10500 * FOR PION+
10501         PPION(1,NNN,IRUN)=P1P+BDX*GD*(FGD*BPP+EPP)
10502         PPION(2,NNN,IRUN)=P2P+BDY*GD*(FGD*BPP+EPP)
10503         PPION(3,NNN,IRUN)=P3P+BDZ*GD*(FGD*BPP+EPP)
10504        epion1=sqrt(ppion(1,nnn,irun)**2
10505      &  +ppion(2,nnn,irun)**2+ppion(3,nnn,irun)**2
10506      &  +epion(nnn,irun)**2)
10507 clin-2/20/03 no additional smearing for position of decay daughters:
10508 c200         X0 = 1.0 - 2.0 * RANART(NSEED)
10509 c            Y0 = 1.0 - 2.0 * RANART(NSEED)
10510 c            Z0 = 1.0 - 2.0 * RANART(NSEED)
10511 c        IF ((X0*X0+Y0*Y0+Z0*Z0) .GT. 1.0) GOTO 200
10512 c        RPION(1,NNN,IRUN)=R(1,I)+0.5*x0
10513 c        RPION(2,NNN,IRUN)=R(2,I)+0.5*y0
10514 c        RPION(3,NNN,IRUN)=R(3,I)+0.5*z0
10515         RPION(1,NNN,IRUN)=R(1,I)
10516         RPION(2,NNN,IRUN)=R(2,I)
10517         RPION(3,NNN,IRUN)=R(3,I)
10518 * FOR PION-
10519         PPION(1,NNN+1,IRUN)=P1M+BDX*GD*(FGD*BPN+EPN)
10520         PPION(2,NNN+1,IRUN)=P2M+BDY*GD*(FGD*BPN+EPN)
10521         PPION(3,NNN+1,IRUN)=P3M+BDZ*GD*(FGD*BPN+EPN)
10522 clin-5/2008:
10523         dppion(NNN,IRUN)=dpertp(I)
10524         dppion(NNN+1,IRUN)=dpertp(I)
10525 c
10526        epion2=sqrt(ppion(1,nnn+1,irun)**2
10527      &  +ppion(2,nnn+1,irun)**2+ppion(3,nnn+1,irun)**2
10528      &  +epion(nnn+1,irun)**2)
10529 clin-2/20/03 no additional smearing for position of decay daughters:
10530 c300         X0 = 1.0 - 2.0 * RANART(NSEED)
10531 c            Y0 = 1.0 - 2.0 * RANART(NSEED)
10532 c            Z0 = 1.0 - 2.0 * RANART(NSEED)
10533 c        IF ((X0*X0+Y0*Y0+Z0*Z0) .GT. 1.0) GOTO 300
10534 c        RPION(1,NNN+1,IRUN)=R(1,I)+0.5*x0
10535 c        RPION(2,NNN+1,IRUN)=R(2,I)+0.5*y0
10536 c        RPION(3,NNN+1,IRUN)=R(3,I)+0.5*z0
10537         RPION(1,NNN+1,IRUN)=R(1,I)
10538         RPION(2,NNN+1,IRUN)=R(2,I)
10539         RPION(3,NNN+1,IRUN)=R(3,I)
10540 c
10541 * check energy conservation in the decay
10542 c       efinal=enucl+epion1+epion2
10543 c       DEEE=(EDELTA-EFINAL)/EDELTA
10544 c       IF(ABS(DEEE).GE.1.E-03)write(6,*)1,edelta,efinal
10545
10546         devio=SQRT(EPION(NNN,IRUN)**2+PPION(1,NNN,IRUN)**2
10547      1       +PPION(2,NNN,IRUN)**2+PPION(3,NNN,IRUN)**2)
10548      2       +SQRT(E(I)**2+P(1,I)**2+P(2,I)**2+P(3,I)**2)
10549      3       +SQRT(EPION(NNN+1,IRUN)**2+PPION(1,NNN+1,IRUN)**2
10550      4       +PPION(2,NNN+1,IRUN)**2+PPION(3,NNN+1,IRUN)**2)-e1
10551 c        if(abs(devio).gt.0.02) write(93,*) 'decay2(): nt=',nt,devio,lb1
10552
10553 c     add decay time to daughter's formation time at the last timestep:
10554         if(nt.eq.ntmax) then
10555            tau0=hbarc/wid
10556            taudcy=tau0*(-1.)*alog(1.-RANART(NSEED))
10557 c     lorentz boost:
10558            taudcy=taudcy*e1/em1
10559            tfnl=tfnl+taudcy
10560            xfnl=xfnl+px1/e1*taudcy
10561            yfnl=yfnl+py1/e1*taudcy
10562            zfnl=zfnl+pz1/e1*taudcy
10563            R(1,I)=xfnl
10564            R(2,I)=yfnl
10565            R(3,I)=zfnl
10566            tfdcy(I)=tfnl
10567            RPION(1,NNN,IRUN)=xfnl
10568            RPION(2,NNN,IRUN)=yfnl
10569            RPION(3,NNN,IRUN)=zfnl
10570            tfdpi(NNN,IRUN)=tfnl
10571            RPION(1,NNN+1,IRUN)=xfnl
10572            RPION(2,NNN+1,IRUN)=yfnl
10573            RPION(3,NNN+1,IRUN)=zfnl
10574            tfdpi(NNN+1,IRUN)=tfnl
10575         endif
10576
10577 cc 200    format(a30,2(1x,e10.4))
10578 cc 210    format(i6,5(1x,f8.3))
10579 cc 220    format(a2,i5,5(1x,f8.3))
10580
10581         RETURN
10582         END
10583 *---------------------------------------------------------------------------
10584 *---------------------------------------------------------------------------
10585 * PURPOSE : CALCULATE THE MASS AND MOMENTUM OF BARYON RESONANCE 
10586 *           AFTER PION OR ETA BEING ABSORBED BY A NUCLEON
10587 * NOTE    : 
10588 *           
10589 * DATE    : JAN.29,1990
10590         SUBROUTINE DRESON(I1,I2)
10591         PARAMETER (MAXSTR=150001,MAXR=1,
10592      1  AMN=0.939457,AMP=0.93828,
10593      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10594         COMMON /AA/ R(3,MAXSTR)
10595 cc      SAVE /AA/
10596         COMMON /BB/ P(3,MAXSTR)
10597 cc      SAVE /BB/
10598         COMMON /CC/ E(MAXSTR)
10599 cc      SAVE /CC/
10600         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10601 cc      SAVE /EE/
10602         COMMON   /RUN/NUM
10603 cc      SAVE /RUN/
10604         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10605 cc      SAVE /PA/
10606         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10607 cc      SAVE /PB/
10608         COMMON   /PC/EPION(MAXSTR,MAXR)
10609 cc      SAVE /PC/
10610         COMMON   /PD/LPION(MAXSTR,MAXR)
10611 cc      SAVE /PD/
10612       SAVE   
10613 * 1. DETERMINE THE MOMENTUM COMPONENT OF DELTA/N* IN THE LAB. FRAME
10614         E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
10615         E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
10616         IF(iabs(LB(I2)) .EQ. 1 .OR. iabs(LB(I2)) .EQ. 2 .OR.
10617      &     (iabs(LB(I2)) .GE. 6 .AND. iabs(LB(I2)) .LE. 17)) THEN
10618         E(I1)=0.
10619         I=I2
10620         ELSE
10621         E(I2)=0.
10622         I=I1
10623         ENDIF
10624         P(1,I)=P(1,I1)+P(1,I2)
10625         P(2,I)=P(2,I1)+P(2,I2)
10626         P(3,I)=P(3,I1)+P(3,I2)
10627 * 2. DETERMINE THE MASS OF DELTA/N* BY USING THE REACTION KINEMATICS
10628         DM=SQRT((E10+E20)**2-P(1,I)**2-P(2,I)**2-P(3,I)**2)
10629         E(I)=DM
10630         RETURN
10631         END
10632 *---------------------------------------------------------------------------
10633 * PURPOSE : CALCULATE THE MASS AND MOMENTUM OF RHO RESONANCE 
10634 *           AFTER PION + PION COLLISION
10635 * DATE    : NOV. 30,1994
10636         SUBROUTINE RHORES(I1,I2)
10637         PARAMETER (MAXSTR=150001,MAXR=1,
10638      1  AMN=0.939457,AMP=0.93828,
10639      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10640         COMMON /AA/ R(3,MAXSTR)
10641 cc      SAVE /AA/
10642         COMMON /BB/ P(3,MAXSTR)
10643 cc      SAVE /BB/
10644         COMMON /CC/ E(MAXSTR)
10645 cc      SAVE /CC/
10646         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10647 cc      SAVE /EE/
10648         COMMON   /RUN/NUM
10649 cc      SAVE /RUN/
10650         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10651 cc      SAVE /PA/
10652         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10653 cc      SAVE /PB/
10654         COMMON   /PC/EPION(MAXSTR,MAXR)
10655 cc      SAVE /PC/
10656         COMMON   /PD/LPION(MAXSTR,MAXR)
10657 cc      SAVE /PD/
10658       SAVE   
10659 * 1. DETERMINE THE MOMENTUM COMPONENT OF THE RHO IN THE CMS OF NN FRAME
10660 *    WE LET I1 TO BE THE RHO AND ABSORB I2
10661         E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
10662         E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
10663         P(1,I1)=P(1,I1)+P(1,I2)
10664         P(2,I1)=P(2,I1)+P(2,I2)
10665         P(3,I1)=P(3,I1)+P(3,I2)
10666 * 2. DETERMINE THE MASS OF THE RHO BY USING THE REACTION KINEMATICS
10667         DM=SQRT((E10+E20)**2-P(1,I1)**2-P(2,I1)**2-P(3,I1)**2)
10668         E(I1)=DM
10669        E(I2)=0
10670         RETURN
10671         END
10672 *---------------------------------------------------------------------------
10673 * PURPOSE : CALCULATE THE PION+NUCLEON CROSS SECTION ACCORDING TO THE
10674 *           BREIT-WIGNER FORMULA/(p*)**2
10675 * VARIABLE : LA = 1 FOR DELTA RESONANCE
10676 *            LA = 0 FOR N*(1440) RESONANCE
10677 *            LA = 2 FRO N*(1535) RESONANCE
10678 * DATE    : JAN.29,1990
10679         REAL FUNCTION XNPI(I1,I2,LA,XMAX)
10680         PARAMETER (MAXSTR=150001,MAXR=1,
10681      1  AMN=0.939457,AMP=0.93828,
10682      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10683         COMMON /AA/ R(3,MAXSTR)
10684 cc      SAVE /AA/
10685         COMMON /BB/ P(3,MAXSTR)
10686 cc      SAVE /BB/
10687         COMMON /CC/ E(MAXSTR)
10688 cc      SAVE /CC/
10689         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10690 cc      SAVE /EE/
10691         COMMON   /RUN/NUM
10692 cc      SAVE /RUN/
10693         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10694 cc      SAVE /PA/
10695         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10696 cc      SAVE /PB/
10697         COMMON   /PC/EPION(MAXSTR,MAXR)
10698 cc      SAVE /PC/
10699         COMMON   /PD/LPION(MAXSTR,MAXR)
10700 cc      SAVE /PD/
10701       SAVE   
10702         AVMASS=0.5*(AMN+AMP)
10703         AVPI=(2.*AP2+AP1)/3.
10704 * 1. DETERMINE THE MOMENTUM COMPONENT OF DELTA IN THE LAB. FRAME
10705         E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
10706         E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
10707         P1=P(1,I1)+P(1,I2)
10708         P2=P(2,I1)+P(2,I2)
10709         P3=P(3,I1)+P(3,I2)
10710 * 2. DETERMINE THE MASS OF DELTA BY USING OF THE REACTION KINEMATICS
10711         DM=SQRT((E10+E20)**2-P1**2-P2**2-P3**2)
10712         IF(DM.LE.1.1) THEN
10713         XNPI=1.e-09
10714         RETURN
10715         ENDIF
10716 * 3. DETERMINE THE PION+NUCLEON CROSS SECTION ACCORDING TO THE
10717 *    BREIT-WIGNER FORMULA IN UNIT OF FM**2
10718         IF(LA.EQ.1)THEN
10719         GAM=WIDTH(DM)
10720         F1=0.25*GAM**2/(0.25*GAM**2+(DM-1.232)**2)
10721         PDELT2=0.051622
10722         GO TO 10
10723        ENDIF
10724        IF(LA.EQ.0)THEN
10725         GAM=W1440(DM)
10726         F1=0.25*GAM**2/(0.25*GAM**2+(DM-1.440)**2)
10727         PDELT2=0.157897
10728        GO TO 10
10729         ENDIF
10730        IF(LA.EQ.2)THEN
10731         GAM=W1535(DM)
10732         F1=0.25*GAM**2/(0.25*GAM**2+(DM-1.535)**2)
10733         PDELT2=0.2181
10734         ENDIF
10735 10      PSTAR2=((DM**2-AVMASS**2+AVPI**2)/(2.*DM))**2-AVPI**2
10736         IF(PSTAR2.LE.0.)THEN
10737         XNPI=1.e-09
10738         ELSE
10739 * give the cross section in unit of fm**2
10740         XNPI=F1*(PDELT2/PSTAR2)*XMAX/10.
10741         ENDIF
10742         RETURN
10743         END
10744 *------------------------------------------------------------------------------
10745 *****************************************
10746         REAL FUNCTION SIGMA(SRT,ID,IOI,IOF)
10747 *PURPOSE : THIS IS THE PROGRAM TO CALCULATE THE ISOSPIN DECOMPOSED CROSS
10748 *       SECTION BY USING OF B.J.VerWEST AND R.A.ARNDT'S PARAMETERIZATION
10749 *REFERENCE: PHYS. REV. C25(1982)1979
10750 *QUANTITIES: IOI -- INITIAL ISOSPIN OF THE TWO NUCLEON SYSTEM
10751 *            IOF -- FINAL   ISOSPIN -------------------------
10752 *            ID -- =1 FOR DELTA RESORANCE
10753 *                  =2 FOR N*    RESORANCE
10754 *DATE : MAY 15,1990
10755 *****************************************
10756         PARAMETER (AMU=0.9383,AMP=0.1384,PI=3.1415926,HC=0.19733)
10757       SAVE   
10758         IF(ID.EQ.1)THEN
10759         AMASS0=1.22
10760         T0 =0.12
10761         ELSE
10762         AMASS0=1.43
10763         T0 =0.2
10764         ENDIF
10765         IF((IOI.EQ.1).AND.(IOF.EQ.1))THEN
10766         ALFA=3.772
10767         BETA=1.262
10768         AM0=1.188
10769         T=0.09902
10770         ENDIF
10771         IF((IOI.EQ.1).AND.(IOF.EQ.0))THEN
10772         ALFA=15.28
10773         BETA=0.
10774         AM0=1.245
10775         T=0.1374
10776         ENDIF
10777         IF((IOI.EQ.0).AND.(IOF.EQ.1))THEN
10778         ALFA=146.3
10779         BETA=0.
10780         AM0=1.472
10781         T=0.02649
10782         ENDIF
10783         ZPLUS=(SRT-AMU-AMASS0)*2./T0
10784         ZMINUS=(AMU+AMP-AMASS0)*2./T0
10785         deln=ATAN(ZPLUS)-ATAN(ZMINUS)
10786        if(deln.eq.0)deln=1.E-06
10787         AMASS=AMASS0+(T0/4.)*ALOG((1.+ZPLUS**2)/(1.+ZMINUS**2))
10788      1  /deln
10789         S=SRT**2
10790         P2=S/4.-AMU**2
10791         S0=(AMU+AM0)**2
10792         P02=S0/4.-AMU**2
10793         P0=SQRT(P02)
10794         PR2=(S-(AMU-AMASS)**2)*(S-(AMU+AMASS)**2)/(4.*S)
10795         IF(PR2.GT.1.E-06)THEN
10796         PR=SQRT(PR2)
10797         ELSE
10798         PR=0.
10799         SIGMA=1.E-06
10800         RETURN
10801         ENDIF
10802         SS=AMASS**2
10803         Q2=(SS-(AMU-AMP)**2)*(SS-(AMU+AMP)**2)/(4.*SS)
10804         IF(Q2.GT.1.E-06)THEN
10805         Q=SQRT(Q2)
10806         ELSE
10807         Q=0.
10808         SIGMA=1.E-06
10809         RETURN
10810         ENDIF
10811         SS0=AM0**2
10812         Q02=(SS0-(AMU-AMP)**2)*(SS0-(AMU+AMP)**2)/(4.*SS0)
10813         Q0=SQRT(Q02)
10814         SIGMA=PI*(HC)**2/(2.*P2)*ALFA*(PR/P0)**BETA*AM0**2*T**2
10815      1  *(Q/Q0)**3/((SS-AM0**2)**2+AM0**2*T**2)
10816         SIGMA=SIGMA*10.
10817        IF(SIGMA.EQ.0)SIGMA=1.E-06
10818         RETURN
10819         END
10820
10821 *****************************
10822         REAL FUNCTION DENOM(SRT,CON)
10823 * NOTE: CON=1 FOR DELTA RESONANCE, CON=2 FOR N*(1440) RESONANCE
10824 *       con=-1 for N*(1535)
10825 * PURPOSE : CALCULATE THE INTEGRAL IN THE DETAILED BALANCE
10826 *
10827 * DATE : NOV. 15, 1991
10828 *******************************
10829         PARAMETER (AP1=0.13496,
10830      1  AP2=0.13957,PI=3.1415926,AVMASS=0.9383)
10831       SAVE   
10832         AVPI=(AP1+2.*AP2)/3.
10833         AM0=1.232
10834         AMN=AVMASS
10835         AMP=AVPI
10836         AMAX=SRT-AVMASS
10837         AMIN=AVMASS+AVPI
10838         NMAX=200
10839         DMASS=(AMAX-AMIN)/FLOAT(NMAX)
10840         SUM=0.
10841         DO 10 I=1,NMAX+1
10842         DM=AMIN+FLOAT(I-1)*DMASS
10843         IF(CON.EQ.1.)THEN
10844         Q2=((DM**2-AMN**2+AMP**2)/(2.*DM))**2-AMP**2
10845            IF(Q2.GT.0.)THEN
10846            Q=SQRT(Q2)
10847            ELSE
10848            Q=1.E-06
10849            ENDIF
10850         TQ=0.47*(Q**3)/(AMP**2*(1.+0.6*(Q/AMP)**2))
10851         ELSE if(con.eq.2)then
10852         TQ=0.2
10853         AM0=1.44
10854        else if(con.eq.-1.)then
10855        tq=0.1
10856        am0=1.535
10857         ENDIF
10858         A1=4.*TQ*AM0**2/(AM0**2*TQ**2+(DM**2-AM0**2)**2)
10859         S=SRT**2
10860         P0=(S+DM**2-AMN**2)**2/(4.*S)-DM**2
10861         IF(P0.LE.0.)THEN
10862         P1=1.E-06
10863         ELSE
10864         P1=SQRT(P0)
10865         ENDIF
10866         F=DM*A1*P1
10867         IF((I.EQ.1).OR.(I.EQ.(NMAX+1)))THEN
10868         SUM=SUM+F*0.5
10869         ELSE
10870         SUM=SUM+F
10871         ENDIF
10872 10      CONTINUE
10873         DENOM=SUM*DMASS/(2.*PI)
10874         RETURN
10875         END
10876 **********************************
10877 * subroutine : ang.FOR
10878 * PURPOSE : Calculate the angular distribution of Delta production process 
10879 * DATE    : Nov. 19, 1992
10880 * REFERENCE: G. WOLF ET. AL., NUCL. PHYS. A517 (1990) 615
10881 * Note: this function applies when srt is larger than 2.14 GeV,
10882 * for less energetic reactions, we assume the angular distribution
10883 * is isotropic.
10884 ***********************************
10885        real function ang(srt,iseed)
10886       COMMON/RNDF77/NSEED
10887 cc      SAVE /RNDF77/
10888       SAVE   
10889       ISEED=ISEED 
10890 c        if(srt.le.2.14)then
10891 c       b1s=0.5
10892 c       b2s=0.
10893 c      endif
10894       if((srt.gt.2.14).and.(srt.le.2.4))then
10895        b1s=29.03-23.75*srt+4.865*srt**2
10896          b2s=-30.33+25.53*srt-5.301*srt**2
10897       endif
10898       if(srt.gt.2.4)then
10899        b1s=0.06
10900          b2s=0.4
10901       endif
10902         x=RANART(NSEED)
10903        p=b1s/b2s
10904        q=(2.*x-1.)*(b1s+b2s)/b2s
10905        IF((-q/2.+sqrt((q/2.)**2+(p/3.)**3)).GE.0.)THEN
10906        ang1=(-q/2.+sqrt((q/2.)**2+(p/3.)**3))**(1./3.)
10907        ELSE
10908        ang1=-(q/2.-sqrt((q/2.)**2+(p/3.)**3))**(1./3.)
10909        ENDIF
10910        IF((-q/2.-sqrt((q/2.)**2+(p/3.)**3).GE.0.))THEN
10911        ang2=(-q/2.-sqrt((q/2.)**2+(p/3.)**3))**(1./3.)
10912        ELSE
10913        ang2=-(q/2.+sqrt((q/2.)**2+(p/3.)**3))**(1./3.)
10914        ENDIF
10915        ANG=ANG1+ANG2
10916        return
10917        end
10918 *--------------------------------------------------------------------------
10919 *****subprogram * kaon production from pi+B collisions *******************
10920       real function PNLKA(srt)
10921       SAVE   
10922 * units: fm**2
10923 ***********************************C
10924       ala=1.116
10925       aka=0.498
10926       ana=0.939
10927       t1=ala+aka      
10928       if(srt.le.t1) THEN
10929       Pnlka=0
10930       Else
10931       IF(SRT.LT.1.7)sbbk=(0.9/0.091)*(SRT-T1)
10932       IF(SRT.GE.1.7)sbbk=0.09/(SRT-1.6)
10933       Pnlka=0.25*sbbk
10934 * give the cross section in units of fm**2
10935        pnlka=pnlka/10.
10936       endif     
10937       return
10938       end
10939 *-------------------------------------------------------------------------
10940 *****subprogram * kaon production from pi+B collisions *******************
10941       real function PNSKA(srt)
10942       SAVE   
10943 ***********************************
10944        if(srt.gt.3.0)then
10945        pnska=0
10946        return
10947        endif
10948       ala=1.116
10949       aka=0.498
10950       ana=0.939
10951       asa=1.197
10952       t1=asa+aka      
10953       if(srt.le.t1) THEN
10954       Pnska=0
10955        return
10956       Endif
10957       IF(SRT.LT.1.9)SBB1=(0.7/0.218)*(SRT-T1)
10958       IF(SRT.GE.1.9)SBB1=0.14/(SRT-1.7)
10959       sbb2=0.
10960        if(srt.gT.1.682)sbb2=0.5*(1.-0.75*(srt-1.682))
10961        pnska=0.25*(sbb1+sbb2)
10962 * give the cross section in fm**2
10963        pnska=pnska/10.
10964       return
10965       end
10966
10967 ********************************
10968 *
10969 *       Kaon momentum distribution in baryon-baryon-->N lamda K process
10970 *
10971 *       NOTE: dsima/dp is prototional to (1-p/p_max)(p/p_max)^2
10972 *              we use rejection method to generate kaon momentum
10973 *
10974 *       Variables: Fkaon = F(p)/F_max
10975 *                 srt   = cms energy of the colliding pair, 
10976 *                          used to calculate the P_max
10977 *       Date: Feb. 8, 1994
10978 *
10979 *       Reference: C. M. Ko et al.  
10980 ******************************** 
10981        Real function fkaon(p,pmax)
10982       SAVE   
10983        fmax=0.148
10984        if(pmax.eq.0.)pmax=0.000001
10985        fkaon=(1.-p/pmax)*(p/pmax)**2
10986        if(fkaon.gt.fmax)fkaon=fmax
10987        fkaon=fkaon/fmax
10988        return
10989        end
10990
10991 *************************
10992 * cross section for N*(1535) production in ND OR NN* collisions
10993 * VARIABLES:
10994 * LB1,LB2 ARE THE LABLES OF THE TWO COLLIDING PARTICLES
10995 * SRT IS THE CMS ENERGY
10996 * X1535 IS THE N*(1535) PRODUCTION CROSS SECTION
10997 * NOTE THAT THE N*(1535) PRODUCTION CROSS SECTION IS 2 TIMES THE ETA 
10998 * PRODUCTION CROSS SECTION
10999 * DATE: MAY 18, 1994
11000 * ***********************
11001        Subroutine M1535(LB1,LB2,SRT,X1535)
11002       SAVE   
11003        S0=2.424
11004        x1535=0.
11005        IF(SRT.LE.S0)RETURN
11006        SIGMA=2.*0.102*(SRT-S0)/(0.058+(SRT-S0)**2)
11007 * I N*(1535) PRODUCTION IN NUCLEON-DELTA COLLISIONS
11008 *(1) nD(++)->pN*(+)(1535), pD(-)->nN*(0)(1535),pD(+)-->N*(+)p
11009 cbz11/25/98
11010 c       IF((LB1*LB2.EQ.18).OR.(LB1*LB2.EQ.6).
11011 c     1  or.(lb1*lb2).eq.8)then
11012        IF((LB1*LB2.EQ.18.AND.(LB1.EQ.2.OR.LB2.EQ.2)).OR.
11013      &     (LB1*LB2.EQ.6.AND.(LB1.EQ.1.OR.LB2.EQ.1)).or.
11014      &     (lb1*lb2.eq.8.AND.(LB1.EQ.1.OR.LB2.EQ.1)))then
11015 cbz11/25/98end
11016        X1535=SIGMA
11017        return
11018        ENDIF
11019 *(2) pD(0)->pN*(0)(1535),pD(0)->nN*(+)(1535)
11020        IF(LB1*LB2.EQ.7)THEN
11021        X1535=3.*SIGMA
11022        RETURN
11023        ENDIF 
11024 * II N*(1535) PRODUCTION IN N*(1440)+NUCLEON REACTIONS
11025 *(3) N*(+)(1440)p->N*(0+)(1535)p, N*(0)(1440)n->N*(0)(1535)
11026 cbz11/25/98
11027 c       IF((LB1*LB2.EQ.11).OR.(LB1*LB2.EQ.20))THEN
11028        IF((LB1*LB2.EQ.11).OR.
11029      &     (LB1*LB2.EQ.20.AND.(LB1.EQ.2.OR.LB2.EQ.2)))THEN
11030 cbz11/25/98end
11031        X1535=SIGMA
11032        RETURN
11033        ENDIF
11034 *(4) N*(0)(1440)p->N*(0+) or N*(+)(1440)n->N*(0+)(1535)
11035 cbz11/25/98
11036 c       IF((LB1*LB2.EQ.10).OR.(LB1*LB2.EQ.22))X1535=3.*SIGMA
11037        IF((LB1*LB2.EQ.10.AND.(LB1.EQ.1.OR.LB2.EQ.1)).OR.
11038      &     (LB1*LB2.EQ.22.AND.(LB1.EQ.2.OR.LB2.EQ.2)))
11039      &     X1535=3.*SIGMA
11040 cbz11/25/98end
11041        RETURN
11042        END
11043 *************************
11044 * cross section for N*(1535) production in NN collisions
11045 * VARIABLES:
11046 * LB1,LB2 ARE THE LABLES OF THE TWO COLLIDING PARTICLES
11047 * SRT IS THE CMS ENERGY
11048 * X1535 IS THE N*(1535) PRODUCTION CROSS SECTION
11049 * NOTE THAT THE N*(1535) PRODUCTION CROSS SECTION IS 2 TIMES THE ETA 
11050 * PRODUCTION CROSS SECTION
11051 * DATE: MAY 18, 1994
11052 * ***********************
11053        Subroutine N1535(LB1,LB2,SRT,X1535)
11054       SAVE   
11055        S0=2.424
11056        x1535=0.
11057        IF(SRT.LE.S0)RETURN
11058        SIGMA=2.*0.102*(SRT-S0)/(0.058+(SRT-S0)**2)
11059 * I N*(1535) PRODUCTION IN NUCLEON-NUCLEON COLLISIONS
11060 *(1) pp->pN*(+)(1535), nn->nN*(0)(1535)
11061 cbdbg11/25/98
11062 c       IF((LB1*LB2.EQ.1).OR.(LB1*LB2.EQ.4))then
11063        IF((LB1*LB2.EQ.1).OR.
11064      &     (LB1.EQ.2.AND.LB2.EQ.2))then
11065 cbz11/25/98end
11066        X1535=SIGMA
11067        return
11068        endif
11069 *(2) pn->pN*(0)(1535),pn->nN*(+)(1535)
11070        IF(LB1*LB2.EQ.2)then
11071        X1535=3.*SIGMA
11072        return
11073        endif 
11074 * III N*(1535) PRODUCTION IN DELTA+DELTA REACTIONS
11075 * (5) D(++)+D(0), D(+)+D(+),D(+)+D(-),D(0)+D(0)
11076 cbz11/25/98
11077 c       IF((LB1*LB2.EQ.63).OR.(LB1*LB2.EQ.64).OR.(LB1*LB2.EQ.48).
11078 c     1  OR.(LB1*LB2.EQ.49))then
11079        IF((LB1*LB2.EQ.63.AND.(LB1.EQ.7.OR.LB2.EQ.7)).OR.
11080      &     (LB1*LB2.EQ.64.AND.(LB1.EQ.8.OR.LB2.EQ.8)).OR.
11081      &     (LB1*LB2.EQ.48.AND.(LB1.EQ.6.OR.LB2.EQ.6)).OR.
11082      &     (LB1*LB2.EQ.49.AND.(LB1.EQ.7.OR.LB2.EQ.7)))then
11083 cbz11/25/98end
11084        X1535=SIGMA
11085        return
11086        endif
11087 * (6) D(++)+D(-),D(+)+D(0)
11088 cbz11/25/98
11089 c       IF((LB1*LB2.EQ.54).OR.(LB1*LB2.EQ.56))then
11090        IF((LB1*LB2.EQ.54.AND.(LB1.EQ.6.OR.LB2.EQ.6)).OR.
11091      &     (LB1*LB2.EQ.56.AND.(LB1.EQ.7.OR.LB2.EQ.7)))then
11092 cbz11/25/98end
11093        X1535=3.*SIGMA
11094        return
11095        endif
11096 * IV N*(1535) PRODUCTION IN N*(1440)+N*(1440) REACTIONS
11097 cbz11/25/98
11098 c       IF((LB1*LB2.EQ.100).OR.(LB1*LB2.EQ.11*11))X1535=SIGMA
11099        IF((LB1.EQ.10.AND.LB2.EQ.10).OR.
11100      &     (LB1.EQ.11.AND.LB2.EQ.11))X1535=SIGMA
11101 c       IF(LB1*LB2.EQ.110)X1535=3.*SIGMA
11102        IF(LB1*LB2.EQ.110.AND.(LB1.EQ.10.OR.LB2.EQ.10))X1535=3.*SIGMA
11103 cbdbg11/25/98end
11104        RETURN
11105        END
11106 ************************************       
11107 * FUNCTION WA1(DMASS) GIVES THE A1 DECAY WIDTH
11108
11109         subroutine WIDA1(DMASS,rhomp,wa1,iseed)
11110       SAVE   
11111 c
11112         PIMASS=0.137265
11113         coupa = 14.8
11114 c
11115        RHOMAX = DMASS-PIMASS-0.02
11116        IF(RHOMAX.LE.0)then
11117          rhomp=0.
11118 c   !! no decay
11119          wa1=-10.
11120         endif
11121         icount = 0
11122 711       rhomp=RHOMAS(RHOMAX,ISEED)
11123       icount=icount+1
11124       if(dmass.le.(pimass+rhomp)) then
11125        if(icount.le.100) then
11126         goto 711
11127        else
11128          rhomp=0.
11129 c   !! no decay
11130          wa1=-10.
11131         return
11132        endif
11133       endif
11134       qqp2=(dmass**2-(rhomp+pimass)**2)*(dmass**2-(rhomp-pimass)**2)
11135       qqp=sqrt(qqp2)/(2.0*dmass)
11136       epi=sqrt(pimass**2+qqp**2)
11137       erho=sqrt(rhomp**2+qqp**2)
11138       epirho=2.0*(epi*erho+qqp**2)**2+rhomp**2*epi**2
11139       wa1=coupa**2*qqp*epirho/(24.0*3.1416*dmass**2)
11140        return
11141        end
11142 ************************************       
11143 * FUNCTION W1535(DMASS) GIVES THE N*(1535) DECAY WIDTH 
11144 c     FOR A GIVEN N*(1535) MASS
11145 * HERE THE FORMULA GIVEN BY KITAZOE IS USED
11146         REAL FUNCTION W1535(DMASS)
11147       SAVE   
11148         AVMASS=0.938868
11149         PIMASS=0.137265
11150            AUX = 0.25*(DMASS**2-AVMASS**2-PIMASS**2)**2
11151      &           -(AVMASS*PIMASS)**2
11152             IF (AUX .GT. 0.) THEN
11153               QAVAIL = SQRT(AUX / DMASS**2)
11154             ELSE
11155               QAVAIL = 1.E-06
11156             END IF
11157             W1535 = 0.15* QAVAIL/0.467
11158 c       W1535=0.15
11159         RETURN
11160         END
11161 ************************************       
11162 * FUNCTION W1440(DMASS) GIVES THE N*(1440) DECAY WIDTH 
11163 c     FOR A GIVEN N*(1535) MASS
11164 * HERE THE FORMULA GIVEN BY KITAZOE IS USED
11165         REAL FUNCTION W1440(DMASS)
11166       SAVE   
11167         AVMASS=0.938868
11168         PIMASS=0.137265
11169            AUX = 0.25*(DMASS**2-AVMASS**2-PIMASS**2)**2
11170      &           -(AVMASS*PIMASS)**2
11171             IF (AUX .GT. 0.) THEN
11172               QAVAIL = SQRT(AUX)/DMASS
11173             ELSE
11174               QAVAIL = 1.E-06
11175             END IF
11176 c              w1440=0.2 
11177            W1440 = 0.2* (QAVAIL/0.397)**3
11178         RETURN
11179         END
11180 ****************
11181 * PURPOSE : CALCULATE THE PION(ETA)+NUCLEON CROSS SECTION 
11182 *           ACCORDING TO THE BREIT-WIGNER FORMULA, 
11183 *           NOTE THAT N*(1535) IS S_11
11184 * VARIABLE : LA = 1 FOR PI+N
11185 *            LA = 0 FOR ETA+N
11186 * DATE    : MAY 16, 1994
11187 ****************
11188         REAL FUNCTION XN1535(I1,I2,LA)
11189         PARAMETER (MAXSTR=150001,MAXR=1,
11190      1  AMN=0.939457,AMP=0.93828,ETAM=0.5475,
11191      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
11192         COMMON /AA/ R(3,MAXSTR)
11193 cc      SAVE /AA/
11194         COMMON /BB/ P(3,MAXSTR)
11195 cc      SAVE /BB/
11196         COMMON /CC/ E(MAXSTR)
11197 cc      SAVE /CC/
11198         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
11199 cc      SAVE /EE/
11200         COMMON   /RUN/NUM
11201 cc      SAVE /RUN/
11202         COMMON   /PA/RPION(3,MAXSTR,MAXR)
11203 cc      SAVE /PA/
11204         COMMON   /PB/PPION(3,MAXSTR,MAXR)
11205 cc      SAVE /PB/
11206         COMMON   /PC/EPION(MAXSTR,MAXR)
11207 cc      SAVE /PC/
11208         COMMON   /PD/LPION(MAXSTR,MAXR)
11209 cc      SAVE /PD/
11210       SAVE   
11211         AVMASS=0.5*(AMN+AMP)
11212         AVPI=(2.*AP2+AP1)/3.
11213 * 1. DETERMINE THE MOMENTUM COMPONENT OF N*(1535) IN THE LAB. FRAME
11214         E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
11215         E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
11216         P1=P(1,I1)+P(1,I2)
11217         P2=P(2,I1)+P(2,I2)
11218         P3=P(3,I1)+P(3,I2)
11219 * 2. DETERMINE THE MASS OF DELTA BY USING OF THE REACTION KINEMATICS
11220         DM=SQRT((E10+E20)**2-P1**2-P2**2-P3**2)
11221         IF(DM.LE.1.1) THEN
11222         XN1535=1.E-06
11223         RETURN
11224         ENDIF
11225 * 3. DETERMINE THE PION(ETA)+NUCLEON->N*(1535) CROSS SECTION ACCORDING TO THE
11226 *    BREIT-WIGNER FORMULA IN UNIT OF FM**2
11227         GAM=W1535(DM)
11228        GAM0=0.15
11229         F1=0.25*GAM0**2/(0.25*GAM**2+(DM-1.535)**2)
11230         IF(LA.EQ.1)THEN
11231        XMAX=11.3
11232         ELSE
11233        XMAX=74.
11234         ENDIF
11235         XN1535=F1*XMAX/10.
11236         RETURN
11237         END
11238 ***************************8
11239 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
11240 *KITAZOE'S FORMULA
11241         REAL FUNCTION FDELTA(DMASS)
11242       SAVE   
11243         AMN=0.938869
11244         AVPI=0.13803333
11245         AM0=1.232
11246         FD=0.25*WIDTH(DMASS)**2/((DMASS-1.232)**2
11247      1  +0.25*WIDTH(DMASS)**2)
11248         FDELTA=FD
11249         RETURN
11250         END
11251 * FUNCTION WIDTH(DMASS) GIVES THE DELTA DECAY WIDTH FOR A GIVEN DELTA MASS
11252 * HERE THE FORMULA GIVEN BY KITAZOE IS USED
11253         REAL FUNCTION WIDTH(DMASS)
11254       SAVE   
11255         AVMASS=0.938868
11256         PIMASS=0.137265
11257            AUX = 0.25*(DMASS**2-AVMASS**2-PIMASS**2)**2
11258      &           -(AVMASS*PIMASS)**2
11259             IF (AUX .GT. 0.) THEN
11260               QAVAIL = SQRT(AUX / DMASS**2)
11261             ELSE
11262               QAVAIL = 1.E-06
11263             END IF
11264             WIDTH = 0.47 * QAVAIL**3 /
11265      &              (PIMASS**2 * (1.+0.6*(QAVAIL/PIMASS)**2))
11266 c       width=0.115
11267         RETURN
11268         END
11269 ************************************       
11270         SUBROUTINE ddp2(SRT,ISEED,PX,PY,PZ,DM1,PNX,
11271      &  PNY,PNZ,DM2,PPX,PPY,PPZ,icou1)
11272 * PURPOSE : CALCULATE MOMENTUM OF PARTICLES IN THE FINAL SATAT FROM
11273 * THE PROCESS N+N--->D1+D2+PION
11274 *       DATE : July 25, 1994
11275 * Generate the masses and momentum for particles in the NN-->DDpi process
11276 * for a given center of mass energy srt, the momenta are given in the center
11277 * of mass of the NN
11278 *****************************************
11279         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
11280 cc      SAVE /TABLE/
11281       COMMON/RNDF77/NSEED
11282 cc      SAVE /RNDF77/
11283       SAVE   
11284        icou1=0
11285        pi=3.1415926
11286         AMN=938.925/1000.
11287         AMP=137.265/1000.
11288 * (1) GENGRATE THE MASS OF DELTA1 AND DELTA2 USING
11289        srt1=srt-amp-0.02
11290        ntrym=0
11291 8       call Rmasdd(srt1,1.232,1.232,1.08,
11292      &  1.08,ISEED,1,dm1,dm2)
11293        ntrym=ntrym+1
11294 * CONSTANTS FOR GENERATING THE LONGITUDINAL MOMENTUM 
11295 * FOR ONE OF THE RESONANCES
11296        V=0.43
11297        W=-0.84
11298 * (2) Generate the transverse momentum
11299 *     OF DELTA1
11300 * (2.1) estimate the maximum transverse momentum
11301        PTMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11302      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2
11303        if(ptmax2.le.0)go to 8
11304        PTMAX=SQRT(PTMAX2)*1./3.
11305 7       PT=PTR(PTMAX,ISEED)       
11306 * (3.1) THE MAXIMUM LONGITUDINAL MOMENTUM IS
11307        PZMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11308      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2-PT**2
11309        IF((PZMAX2.LT.0.).and.ntrym.le.100)then 
11310        go to 7
11311        else
11312        pzmax2=1.E-09
11313        endif
11314        PZMAX=SQRT(PZMAX2)
11315        XMAX=2.*PZMAX/SRT
11316 * (3.2) THE GENERATED X IS
11317 * THE DSTRIBUTION HAS A MAXIMUM AT X0=-V/(2*w), f(X0)=1.056
11318        ntryx=0
11319        fmax00=1.056
11320        x00=0.26
11321        if(abs(xmax).gt.0.26)then
11322        f00=fmax00
11323        else
11324        f00=1.+v*abs(xmax)+w*xmax**2
11325        endif
11326 9       X=XMAX*(1.-2.*RANART(NSEED))
11327        ntryx=ntryx+1
11328        xratio=(1.+V*ABS(X)+W*X**2)/f00       
11329 clin-8/17/00       IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11330        IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11331 * (3.5) THE PZ IS
11332        PZ=0.5*SRT*X
11333 * The x and y components of the deltA1
11334        fai=2.*pi*RANART(NSEED)
11335        Px=pt*cos(fai)
11336        Py=pt*sin(fai)
11337 * find the momentum of delta2 and pion
11338 * the energy of the delta1
11339        ek=sqrt(dm1**2+PT**2+Pz**2)
11340 * (1) Generate the momentum of the delta2 in the cms of delta2 and pion
11341 *     the energy of the cms of DP
11342         eln=srt-ek
11343        IF(ELN.lE.0)then
11344        icou1=-1
11345        return
11346        endif
11347 * beta and gamma of the cms of delta2+pion
11348        bx=-Px/eln
11349        by=-Py/eln
11350        bz=-Pz/eln
11351        ga=1./sqrt(1.-bx**2-by**2-bz**2)
11352 * the momentum of delta2 and pion in their cms frame
11353        elnc=eln/ga 
11354        pn2=((elnc**2+dm2**2-amp**2)/(2.*elnc))**2-dm2**2
11355        if(pn2.le.0)then
11356        icou1=-1
11357        return
11358        endif
11359        pn=sqrt(pn2)
11360
11361 clin-10/25/02 get rid of argument usage mismatch in PTR():
11362         xptr=0.33*PN
11363 c       PNT=PTR(0.33*PN,ISEED)
11364        PNT=PTR(xptr,ISEED)
11365 clin-10/25/02-end
11366
11367        fain=2.*pi*RANART(NSEED)
11368        pnx=pnT*cos(fain)
11369        pny=pnT*sin(fain)
11370        SIG=1
11371        IF(X.GT.0)SIG=-1
11372        pnz=SIG*SQRT(pn**2-PNT**2)
11373        en=sqrt(dm2**2+pnx**2+pny**2+pnz**2)
11374 * (2) the momentum for the pion
11375        ppx=-pnx
11376        ppy=-pny
11377        ppz=-pnz
11378        ep=sqrt(amp**2+ppx**2+ppy**2+ppz**2)
11379 * (3) for the delta2, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11380         PBETA  = PnX*BX + PnY*By+ PnZ*Bz
11381               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
11382               Pnx = BX * TRANS0 + PnX
11383               Pny = BY * TRANS0 + PnY
11384               Pnz = BZ * TRANS0 + PnZ
11385 * (4) for the pion, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11386              if(ep.eq.0.)ep=1.E-09
11387               PBETA  = PPX*BX + PPY*By+ PPZ*Bz
11388               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + EP )
11389               PPx = BX * TRANS0 + PPX
11390               PPy = BY * TRANS0 + PPY
11391               PPz = BZ * TRANS0 + PPZ
11392        return
11393        end
11394 ****************************************
11395         SUBROUTINE ddrho(SRT,ISEED,PX,PY,PZ,DM1,PNX,
11396      &  PNY,PNZ,DM2,PPX,PPY,PPZ,amp,icou1)
11397 * PURPOSE : CALCULATE MOMENTUM OF PARTICLES IN THE FINAL SATAT FROM
11398 * THE PROCESS N+N--->D1+D2+rho
11399 *       DATE : Nov.5, 1994
11400 * Generate the masses and momentum for particles in the NN-->DDrho process
11401 * for a given center of mass energy srt, the momenta are given in the center
11402 * of mass of the NN
11403 *****************************************
11404         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
11405 cc      SAVE /TABLE/
11406       COMMON/RNDF77/NSEED
11407 cc      SAVE /RNDF77/
11408       SAVE   
11409        icou1=0
11410        pi=3.1415926
11411         AMN=938.925/1000.
11412         AMP=770./1000.
11413 * (1) GENGRATE THE MASS OF DELTA1 AND DELTA2 USING
11414        srt1=srt-amp-0.02
11415        ntrym=0
11416 8       call Rmasdd(srt1,1.232,1.232,1.08,
11417      &  1.08,ISEED,1,dm1,dm2)
11418        ntrym=ntrym+1
11419 * GENERATE THE MASS FOR THE RHO
11420        RHOMAX = SRT-DM1-DM2-0.02
11421        IF(RHOMAX.LE.0.and.ntrym.le.20)go to 8
11422        AMP=RHOMAS(RHOMAX,ISEED)
11423 * CONSTANTS FOR GENERATING THE LONGITUDINAL MOMENTUM 
11424 * FOR ONE OF THE RESONANCES
11425        V=0.43
11426        W=-0.84
11427 * (2) Generate the transverse momentum
11428 *     OF DELTA1
11429 * (2.1) estimate the maximum transverse momentum
11430        PTMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11431      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2
11432        PTMAX=SQRT(PTMAX2)*1./3.
11433 7       PT=PTR(PTMAX,ISEED)
11434 * (3) GENGRATE THE LONGITUDINAL MOMENTUM FOR DM1
11435 *     USING THE GIVEN DISTRIBUTION
11436 * (3.1) THE MAXIMUM LONGITUDINAL MOMENTUM IS
11437        PZMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11438      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2-PT**2
11439        IF((PZMAX2.LT.0.).and.ntrym.le.100)then 
11440        go to 7
11441        else
11442        pzmax2=1.E-06
11443        endif
11444        PZMAX=SQRT(PZMAX2)
11445        XMAX=2.*PZMAX/SRT
11446 * (3.2) THE GENERATED X IS
11447 * THE DSTRIBUTION HAS A MAXIMUM AT X0=-V/(2*w), f(X0)=1.056
11448        ntryx=0
11449        fmax00=1.056
11450        x00=0.26
11451        if(abs(xmax).gt.0.26)then
11452        f00=fmax00
11453        else
11454        f00=1.+v*abs(xmax)+w*xmax**2
11455        endif
11456 9       X=XMAX*(1.-2.*RANART(NSEED))
11457        ntryx=ntryx+1
11458        xratio=(1.+V*ABS(X)+W*X**2)/f00       
11459 clin-8/17/00       IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11460        IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11461 * (3.5) THE PZ IS
11462        PZ=0.5*SRT*X
11463 * The x and y components of the delta1
11464        fai=2.*pi*RANART(NSEED)
11465        Px=pt*cos(fai)
11466        Py=pt*sin(fai)
11467 * find the momentum of delta2 and rho
11468 * the energy of the delta1
11469        ek=sqrt(dm1**2+PT**2+Pz**2)
11470 * (1) Generate the momentum of the delta2 in the cms of delta2 and rho
11471 *     the energy of the cms of Drho
11472         eln=srt-ek
11473        IF(ELN.lE.0)then
11474        icou1=-1
11475        return
11476        endif
11477 * beta and gamma of the cms of delta2 and rho
11478        bx=-Px/eln
11479        by=-Py/eln
11480        bz=-Pz/eln
11481        ga=1./sqrt(1.-bx**2-by**2-bz**2)
11482        elnc=eln/ga
11483        pn2=((elnc**2+dm2**2-amp**2)/(2.*elnc))**2-dm2**2
11484        if(pn2.le.0)then
11485        icou1=-1
11486        return
11487        endif
11488        pn=sqrt(pn2)
11489
11490 clin-10/25/02 get rid of argument usage mismatch in PTR():
11491         xptr=0.33*PN
11492 c       PNT=PTR(0.33*PN,ISEED)
11493        PNT=PTR(xptr,ISEED)
11494 clin-10/25/02-end
11495
11496        fain=2.*pi*RANART(NSEED)
11497        pnx=pnT*cos(fain)
11498        pny=pnT*sin(fain)
11499        SIG=1
11500        IF(X.GT.0)SIG=-1
11501        pnz=SIG*SQRT(pn**2-PNT**2)
11502        en=sqrt(dm2**2+pnx**2+pny**2+pnz**2)
11503 * (2) the momentum for the rho
11504        ppx=-pnx
11505        ppy=-pny
11506        ppz=-pnz
11507        ep=sqrt(amp**2+ppx**2+ppy**2+ppz**2)
11508 * (3) for the delta2, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11509         PBETA  = PnX*BX + PnY*By+ PnZ*Bz
11510               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
11511               Pnx = BX * TRANS0 + PnX
11512               Pny = BY * TRANS0 + PnY
11513               Pnz = BZ * TRANS0 + PnZ
11514 * (4) for the rho, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11515              if(ep.eq.0.)ep=1.e-09
11516               PBETA  = PPX*BX + PPY*By+ PPZ*Bz
11517               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + EP )
11518               PPx = BX * TRANS0 + PPX
11519               PPy = BY * TRANS0 + PPY
11520               PPz = BZ * TRANS0 + PPZ
11521        return
11522        end
11523 ****************************************
11524         SUBROUTINE pprho(SRT,ISEED,PX,PY,PZ,DM1,PNX,
11525      &  PNY,PNZ,DM2,PPX,PPY,PPZ,amp,icou1)
11526 * PURPOSE : CALCULATE MOMENTUM OF PARTICLES IN THE FINAL SATAT FROM
11527 * THE PROCESS N+N--->N1+N2+rho
11528 *       DATE : Nov.5, 1994
11529 * Generate the masses and momentum for particles in the NN--> process
11530 * for a given center of mass energy srt, the momenta are given in the center
11531 * of mass of the NN
11532 *****************************************
11533         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
11534 cc      SAVE /TABLE/
11535       COMMON/RNDF77/NSEED
11536 cc      SAVE /RNDF77/
11537       SAVE   
11538         ntrym=0
11539        icou1=0
11540        pi=3.1415926
11541         AMN=938.925/1000.
11542 *        AMP=770./1000.
11543        DM1=amn
11544        DM2=amn
11545 * GENERATE THE MASS FOR THE RHO
11546        RHOMAX=SRT-DM1-DM2-0.02
11547        IF(RHOMAX.LE.0)THEN
11548        ICOU=-1
11549        RETURN
11550        ENDIF
11551        AMP=RHOMAS(RHOMAX,ISEED)
11552 * CONSTANTS FOR GENERATING THE LONGITUDINAL MOMENTUM 
11553 * FOR ONE OF THE nucleons
11554        V=0.43
11555        W=-0.84
11556 * (2) Generate the transverse momentum
11557 *     OF p1
11558 * (2.1) estimate the maximum transverse momentum
11559        PTMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11560      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2
11561        PTMAX=SQRT(PTMAX2)*1./3.
11562 7       PT=PTR(PTMAX,ISEED)
11563 * (3) GENGRATE THE LONGITUDINAL MOMENTUM FOR DM1
11564 *     USING THE GIVEN DISTRIBUTION
11565 * (3.1) THE MAXIMUM LONGITUDINAL MOMENTUM IS
11566        PZMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11567      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2-PT**2
11568        NTRYM=NTRYM+1
11569        IF((PZMAX2.LT.0.).and.ntrym.le.100)then 
11570        go to 7
11571        else
11572        pzmax2=1.E-06
11573        endif
11574        PZMAX=SQRT(PZMAX2)
11575        XMAX=2.*PZMAX/SRT
11576 * (3.2) THE GENERATED X IS
11577 * THE DSTRIBUTION HAS A MAXIMUM AT X0=-V/(2*w), f(X0)=1.056
11578        ntryx=0
11579        fmax00=1.056
11580        x00=0.26
11581        if(abs(xmax).gt.0.26)then
11582        f00=fmax00
11583        else
11584        f00=1.+v*abs(xmax)+w*xmax**2
11585        endif
11586 9       X=XMAX*(1.-2.*RANART(NSEED))
11587        ntryx=ntryx+1
11588        xratio=(1.+V*ABS(X)+W*X**2)/f00       
11589 clin-8/17/00       IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11590        IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11591 * (3.5) THE PZ IS
11592        PZ=0.5*SRT*X
11593 * The x and y components of the delta1
11594        fai=2.*pi*RANART(NSEED)
11595        Px=pt*cos(fai)
11596        Py=pt*sin(fai)
11597 * find the momentum of delta2 and rho
11598 * the energy of the delta1
11599        ek=sqrt(dm1**2+PT**2+Pz**2)
11600 * (1) Generate the momentum of the delta2 in the cms of delta2 and rho
11601 *     the energy of the cms of Drho
11602         eln=srt-ek
11603        IF(ELN.lE.0)then
11604        icou1=-1
11605        return
11606        endif
11607 * beta and gamma of the cms of the two partciles
11608        bx=-Px/eln
11609        by=-Py/eln
11610        bz=-Pz/eln
11611        ga=1./sqrt(1.-bx**2-by**2-bz**2)
11612         elnc=eln/ga
11613        pn2=((elnc**2+dm2**2-amp**2)/(2.*elnc))**2-dm2**2
11614        if(pn2.le.0)then
11615        icou1=-1
11616        return
11617        endif
11618        pn=sqrt(pn2)
11619
11620 clin-10/25/02 get rid of argument usage mismatch in PTR():
11621         xptr=0.33*PN
11622 c       PNT=PTR(0.33*PN,ISEED)
11623        PNT=PTR(xptr,ISEED)
11624 clin-10/25/02-end
11625
11626        fain=2.*pi*RANART(NSEED)
11627        pnx=pnT*cos(fain)
11628        pny=pnT*sin(fain)
11629        SIG=1
11630        IF(X.GT.0)SIG=-1
11631        pnz=SIG*SQRT(pn**2-PNT**2)
11632        en=sqrt(dm2**2+pnx**2+pny**2+pnz**2)
11633 * (2) the momentum for the rho
11634        ppx=-pnx
11635        ppy=-pny
11636        ppz=-pnz
11637        ep=sqrt(amp**2+ppx**2+ppy**2+ppz**2)
11638 * (3) for the delta2, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11639         PBETA  = PnX*BX + PnY*By+ PnZ*Bz
11640               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
11641               Pnx = BX * TRANS0 + PnX
11642               Pny = BY * TRANS0 + PnY
11643               Pnz = BZ * TRANS0 + PnZ
11644 * (4) for the rho, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11645              if(ep.eq.0.)ep=1.e-09
11646               PBETA  = PPX*BX + PPY*By+ PPZ*Bz
11647               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + EP )
11648               PPx = BX * TRANS0 + PPX
11649               PPy = BY * TRANS0 + PPY
11650               PPz = BZ * TRANS0 + PPZ
11651        return
11652        end
11653 ***************************8
11654 ****************************************
11655         SUBROUTINE ppomga(SRT,ISEED,PX,PY,PZ,DM1,PNX,
11656      &  PNY,PNZ,DM2,PPX,PPY,PPZ,icou1)
11657 * PURPOSE : CALCULATE MOMENTUM OF PARTICLES IN THE FINAL SATAT FROM
11658 * THE PROCESS N+N--->N1+N2+OMEGA
11659 *       DATE : Nov.5, 1994
11660 * Generate the masses and momentum for particles in the NN--> process
11661 * for a given center of mass energy srt, the momenta are given in the center
11662 * of mass of the NN
11663 *****************************************
11664         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
11665 cc      SAVE /TABLE/
11666       COMMON/RNDF77/NSEED
11667 cc      SAVE /RNDF77/
11668       SAVE   
11669         ntrym=0
11670        icou1=0
11671        pi=3.1415926
11672         AMN=938.925/1000.
11673         AMP=782./1000.
11674        DM1=amn
11675        DM2=amn
11676 * CONSTANTS FOR GENERATING THE LONGITUDINAL MOMENTUM 
11677 * FOR ONE OF THE nucleons
11678        V=0.43
11679        W=-0.84
11680 * (2) Generate the transverse momentum
11681 *     OF p1
11682 * (2.1) estimate the maximum transverse momentum
11683        PTMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11684      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2
11685        PTMAX=SQRT(PTMAX2)*1./3.
11686 7       PT=PTR(PTMAX,ISEED)
11687 * (3) GENGRATE THE LONGITUDINAL MOMENTUM FOR DM1
11688 *     USING THE GIVEN DISTRIBUTION
11689 * (3.1) THE MAXIMUM LONGITUDINAL MOMENTUM IS
11690        PZMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11691      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2-PT**2
11692        NTRYM=NTRYM+1
11693        IF((PZMAX2.LT.0.).and.ntrym.le.100)then 
11694        go to 7
11695        else
11696        pzmax2=1.E-09
11697        endif
11698        PZMAX=SQRT(PZMAX2)
11699        XMAX=2.*PZMAX/SRT
11700 * (3.2) THE GENERATED X IS
11701 * THE DSTRIBUTION HAS A MAXIMUM AT X0=-V/(2*w), f(X0)=1.056
11702        ntryx=0
11703        fmax00=1.056
11704        x00=0.26
11705        if(abs(xmax).gt.0.26)then
11706        f00=fmax00
11707        else
11708        f00=1.+v*abs(xmax)+w*xmax**2
11709        endif
11710 9       X=XMAX*(1.-2.*RANART(NSEED))
11711        ntryx=ntryx+1
11712        xratio=(1.+V*ABS(X)+W*X**2)/f00       
11713 clin-8/17/00       IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11714        IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11715 * (3.5) THE PZ IS
11716        PZ=0.5*SRT*X
11717 * The x and y components of the delta1
11718        fai=2.*pi*RANART(NSEED)
11719        Px=pt*cos(fai)
11720        Py=pt*sin(fai)
11721 * find the momentum of delta2 and rho
11722 * the energy of the delta1
11723        ek=sqrt(dm1**2+PT**2+Pz**2)
11724 * (1) Generate the momentum of the delta2 in the cms of delta2 and rho
11725 *     the energy of the cms of Drho
11726         eln=srt-ek
11727        IF(ELN.lE.0)then
11728        icou1=-1
11729        return
11730        endif
11731        bx=-Px/eln
11732        by=-Py/eln
11733        bz=-Pz/eln
11734        ga=1./sqrt(1.-bx**2-by**2-bz**2)
11735        elnc=eln/ga
11736        pn2=((elnc**2+dm2**2-amp**2)/(2.*elnc))**2-dm2**2
11737        if(pn2.le.0)then
11738        icou1=-1
11739        return
11740        endif
11741        pn=sqrt(pn2)
11742
11743 clin-10/25/02 get rid of argument usage mismatch in PTR():
11744         xptr=0.33*PN
11745 c       PNT=PTR(0.33*PN,ISEED)
11746        PNT=PTR(xptr,ISEED)
11747 clin-10/25/02-end
11748
11749        fain=2.*pi*RANART(NSEED)
11750        pnx=pnT*cos(fain)
11751        pny=pnT*sin(fain)
11752        SIG=1
11753        IF(X.GT.0)SIG=-1
11754        pnz=SIG*SQRT(pn**2-PNT**2)
11755        en=sqrt(dm2**2+pnx**2+pny**2+pnz**2)
11756 * (2) the momentum for the rho
11757        ppx=-pnx
11758        ppy=-pny
11759        ppz=-pnz
11760        ep=sqrt(amp**2+ppx**2+ppy**2+ppz**2)
11761 * (3) for the delta2, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11762         PBETA  = PnX*BX + PnY*By+ PnZ*Bz
11763               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
11764               Pnx = BX * TRANS0 + PnX
11765               Pny = BY * TRANS0 + PnY
11766               Pnz = BZ * TRANS0 + PnZ
11767 * (4) for the rho, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11768              if(ep.eq.0.)ep=1.E-09
11769               PBETA  = PPX*BX + PPY*By+ PPZ*Bz
11770               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + EP )
11771               PPx = BX * TRANS0 + PPX
11772               PPy = BY * TRANS0 + PPY
11773               PPz = BZ * TRANS0 + PPZ
11774        return
11775        end
11776 ***************************8
11777 ***************************8
11778 *   DELTA MASS GENERATOR
11779        REAL FUNCTION RMASS(DMAX,ISEED)
11780       COMMON/RNDF77/NSEED
11781 cc      SAVE /RNDF77/
11782       SAVE   
11783           ISEED=ISEED 
11784 * THE MINIMUM MASS FOR DELTA
11785           DMIN = 1.078
11786 * Delta(1232) production
11787           IF(DMAX.LT.1.232) THEN
11788           FM=FDELTA(DMAX)
11789           ELSE
11790           FM=1.
11791           ENDIF
11792           IF(FM.EQ.0.)FM=1.E-06
11793           NTRY1=0
11794 10        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
11795           NTRY1=NTRY1+1
11796           IF((RANART(NSEED) .GT. FDELTA(DM)/FM).AND.
11797      1    (NTRY1.LE.10)) GOTO 10
11798 clin-2/26/03 sometimes Delta mass can reach very high values (e.g. 15.GeV),
11799 c     thus violating the thresh of the collision which produces it 
11800 c     and leads to large violation of energy conservation. 
11801 c     To limit the above, limit the Delta mass below a certain value 
11802 c     (here taken as its central value + 2* B-W fullwidth):
11803           if(dm.gt.1.47) goto 10
11804
11805        RMASS=DM
11806        RETURN
11807        END
11808
11809 *------------------------------------------------------------------
11810 * THE Breit Wigner FORMULA
11811         REAL FUNCTION FRHO(DMASS)
11812       SAVE   
11813         AM0=0.77
11814        WID=0.153
11815         FD=0.25*wid**2/((DMASS-AM0)**2+0.25*WID**2)
11816         FRHO=FD
11817         RETURN
11818         END
11819 ***************************8
11820 *   RHO MASS GENERATOR
11821        REAL FUNCTION RHOMAS(DMAX,ISEED)
11822       COMMON/RNDF77/NSEED
11823 cc      SAVE /RNDF77/
11824       SAVE   
11825           ISEED=ISEED
11826 * THE MINIMUM MASS FOR DELTA
11827           DMIN = 0.28
11828 * RHO(770) production
11829           IF(DMAX.LT.0.77) THEN
11830           FM=FRHO(DMAX)
11831           ELSE
11832           FM=1.
11833           ENDIF
11834           IF(FM.EQ.0.)FM=1.E-06
11835           NTRY1=0
11836 10        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
11837           NTRY1=NTRY1+1
11838           IF((RANART(NSEED) .GT. FRHO(DM)/FM).AND.
11839      1    (NTRY1.LE.10)) GOTO 10
11840 clin-2/26/03 limit the rho mass below a certain value
11841 c     (here taken as its central value + 2* B-W fullwidth):
11842           if(dm.gt.1.07) goto 10
11843
11844        RHOMAS=DM
11845        RETURN
11846        END
11847 ******************************************
11848 * for pp-->pp+2pi
11849 c      real*4 function X2pi(srt)
11850       real function X2pi(srt)
11851 *  This function contains the experimental 
11852 c     total pp-pp+pi(+)pi(-) Xsections    *
11853 *  srt    = DSQRT(s) in GeV                                                  *
11854 *  xsec   = production cross section in mb                                   *
11855 *  earray = EXPerimental table with proton momentum in GeV/c                 *
11856 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye)*
11857 *                                                                            *
11858 ******************************************
11859 c      real*4   xarray(15), earray(15)
11860       real   xarray(15), earray(15)
11861       SAVE   
11862       data earray /2.23,2.81,3.67,4.0,4.95,5.52,5.97,6.04,
11863      &6.6,6.9,7.87,8.11,10.01,16.0,19./
11864       data xarray /1.22,2.51,2.67,2.95,2.96,2.84,2.8,3.2,
11865      &2.7,3.0,2.54,2.46,2.4,1.66,1.5/
11866
11867            pmass=0.9383 
11868 * 1.Calculate p(lab)  from srt [GeV]
11869 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
11870 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
11871        x2pi=0.000001
11872        if(srt.le.2.2)return
11873       plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
11874       if (plab .lt. earray(1)) then
11875         x2pi = xarray(1)
11876         return
11877       end if
11878 *
11879 * 2.Interpolate double logarithmically to find sigma(srt)
11880 *
11881       do 1001 ie = 1,15
11882         if (earray(ie) .eq. plab) then
11883           x2pi= xarray(ie)
11884           return
11885         else if (earray(ie) .gt. plab) then
11886           ymin = alog(xarray(ie-1))
11887           ymax = alog(xarray(ie))
11888           xmin = alog(earray(ie-1))
11889           xmax = alog(earray(ie))
11890           X2pi = exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
11891      &    /(xmax-xmin) )
11892           return
11893         end if
11894  1001 continue
11895       return
11896         END
11897 ******************************************
11898 * for pp-->pn+pi(+)pi(+)pi(-)
11899 c      real*4 function X3pi(srt)
11900       real function X3pi(srt)
11901 *  This function contains the experimental pp->pp+3pi cross sections          *
11902 *  srt    = DSQRT(s) in GeV                                                   *
11903 *  xsec   = production cross section in mb                                    *
11904 *  earray = EXPerimental table with proton energies in MeV                    *
11905 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
11906 *                                                                             *
11907 ******************************************
11908 c      real*4   xarray(12), earray(12)
11909       real   xarray(12), earray(12)
11910       SAVE   
11911       data xarray /0.02,0.4,1.15,1.60,2.19,2.85,2.30,
11912      &3.10,2.47,2.60,2.40,1.70/
11913       data earray /2.23,2.81,3.67,4.00,4.95,5.52,5.97,
11914      &6.04,6.60,6.90,10.01,19./
11915
11916            pmass=0.9383 
11917 * 1.Calculate p(lab)  from srt [GeV]
11918 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
11919 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
11920        x3pi=1.E-06
11921        if(srt.le.2.3)return
11922       plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
11923       if (plab .lt. earray(1)) then
11924         x3pi = xarray(1)
11925         return
11926       end if
11927 *
11928 * 2.Interpolate double logarithmically to find sigma(srt)
11929 *
11930       do 1001 ie = 1,12
11931         if (earray(ie) .eq. plab) then
11932           x3pi= xarray(ie)
11933           return
11934         else if (earray(ie) .gt. plab) then
11935           ymin = alog(xarray(ie-1))
11936           ymax = alog(xarray(ie))
11937           xmin = alog(earray(ie-1))
11938           xmax = alog(earray(ie))
11939           X3pi= exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
11940      &                                            /(xmax-xmin) )
11941           return
11942         end if
11943  1001 continue
11944       return
11945         END
11946 ******************************************
11947 ******************************************
11948 * for pp-->pp+pi(+)pi(-)pi(0)
11949 c      real*4 function X33pi(srt)
11950       real function X33pi(srt)
11951 *  This function contains the experimental pp->pp+3pi cross sections          *
11952 *  srt    = DSQRT(s) in GeV                                                   *
11953 *  xsec   = production cross section in mb                                    *
11954 *  earray = EXPerimental table with proton energies in MeV                    *
11955 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
11956 *                                                                             *
11957 ******************************************
11958 c      real*4   xarray(12), earray(12)
11959       real   xarray(12), earray(12)
11960       SAVE   
11961       data xarray /0.02,0.22,0.74,1.10,1.76,1.84,2.20,
11962      &2.40,2.15,2.60,2.30,1.70/
11963       data earray /2.23,2.81,3.67,4.00,4.95,5.52,5.97,
11964      &6.04,6.60,6.90,10.01,19./
11965
11966            pmass=0.9383 
11967        x33pi=1.E-06
11968        if(srt.le.2.3)return
11969 * 1.Calculate p(lab)  from srt [GeV]
11970 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
11971 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
11972       plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
11973       if (plab .lt. earray(1)) then
11974         x33pi = xarray(1)
11975         return
11976       end if
11977 *
11978 * 2.Interpolate double logarithmically to find sigma(srt)
11979 *
11980       do 1001 ie = 1,12
11981         if (earray(ie) .eq. plab) then
11982           x33pi= xarray(ie)
11983           return
11984         else if (earray(ie) .gt. plab) then
11985           ymin = alog(xarray(ie-1))
11986           ymax = alog(xarray(ie))
11987           xmin = alog(earray(ie-1))
11988           xmax = alog(earray(ie))
11989           x33pi= exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
11990      &    /(xmax-xmin))
11991           return
11992         end if
11993  1001   continue
11994         return
11995         END
11996 ******************************************
11997 c       REAL*4 FUNCTION X4pi(SRT)
11998       REAL FUNCTION X4pi(SRT)
11999       SAVE   
12000 *       CROSS SECTION FOR NN-->DD+rho PROCESS
12001 * *****************************
12002        akp=0.498
12003        ak0=0.498
12004        ana=0.94
12005        ada=1.232
12006        al=1.1157
12007        as=1.1197
12008        pmass=0.9383
12009        ES=SRT
12010        IF(ES.LE.4)THEN
12011        X4pi=0.
12012        ELSE
12013 * cross section for two resonance pp-->DD+DN*+N*N*
12014        xpp2pi=4.*x2pi(es)
12015 * cross section for pp-->pp+spi
12016        xpp3pi=3.*(x3pi(es)+x33pi(es))
12017 * cross section for pp-->pD+ and nD++
12018        pps1=sigma(es,1,1,0)+0.5*sigma(es,1,1,1)
12019        pps2=1.5*sigma(es,1,1,1)
12020        ppsngl=pps1+pps2+s1535(es)
12021 * CROSS SECTION FOR KAON PRODUCTION from the four channels
12022 * for NLK channel
12023        xk1=0
12024        xk2=0
12025        xk3=0
12026        xk4=0
12027        t1nlk=ana+al+akp
12028        t2nlk=ana+al-akp
12029        if(es.le.t1nlk)go to 333
12030        pmnlk2=(es**2-t1nlk**2)*(es**2-t2nlk**2)/(4.*es**2)
12031        pmnlk=sqrt(pmnlk2)
12032        xk1=pplpk(es)
12033 * for DLK channel
12034        t1dlk=ada+al+akp
12035        t2dlk=ada+al-akp
12036        if(es.le.t1dlk)go to 333
12037        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
12038        pmdlk=sqrt(pmdlk2)
12039        xk3=pplpk(es)
12040 * for NSK channel
12041        t1nsk=ana+as+akp
12042        t2nsk=ana+as-akp
12043        if(es.le.t1nsk)go to 333
12044        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
12045        pmnsk=sqrt(pmnsk2)
12046        xk2=ppk1(es)+ppk0(es)
12047 * for DSK channel
12048        t1DSk=aDa+aS+akp
12049        t2DSk=aDa+aS-akp
12050        if(es.le.t1dsk)go to 333
12051        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
12052        pmDSk=sqrt(pmDSk2)
12053        xk4=ppk1(es)+ppk0(es)
12054 * THE TOTAL KAON+ AND KAON0 PRODUCTION CROSS SECTION IS THEN
12055 333       XKAON=3.*(xk1+xk2+xk3+xk4)
12056 * cross section for pp-->DD+rho
12057        x4pi=pp1(es)-ppsngl-xpp2pi-xpp3pi-XKAON
12058        if(x4pi.le.0)x4pi=1.E-06
12059        ENDIF
12060        RETURN
12061        END
12062 ******************************************
12063 * for pp-->inelastic
12064 c      real*4 function pp1(srt)
12065       real function pp1(srt)
12066       SAVE   
12067 *  srt    = DSQRT(s) in GeV                                                   *
12068 *  xsec   = production cross section in mb                                    *
12069 *  earray = EXPerimental table with proton energies in MeV                    *
12070 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12071 *                                                                             *
12072 ******************************************
12073            pmass=0.9383 
12074        PP1=0.
12075 * 1.Calculate p(lab)  from srt [GeV]
12076 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12077 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12078       plab2=((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2
12079        IF(PLAB2.LE.0)RETURN
12080       plab=sqrt(PLAB2)
12081        pmin=0.968
12082        pmax=2080
12083       if ((plab .lt. pmin).or.(plab.gt.pmax)) then
12084         pp1 = 0.
12085         return
12086       end if
12087 c* fit parameters
12088        a=30.9
12089        b=-28.9
12090        c=0.192
12091        d=-0.835
12092        an=-2.46
12093         pp1 = a+b*(plab**an)+c*(alog(plab))**2
12094        if(pp1.le.0)pp1=0.0
12095         return
12096         END
12097 ******************************************
12098 * for pp-->elastic
12099 c      real*4 function pp2(srt)
12100       real function pp2(srt)
12101       SAVE   
12102 *  srt    = DSQRT(s) in GeV                                                   *
12103 *  xsec   = production cross section in mb                                    *
12104 *  earray = EXPerimental table with proton energies in MeV                    *
12105 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12106 *                                                                             *
12107 ******************************************
12108            pmass=0.9383 
12109 * 1.Calculate p(lab)  from srt [GeV]
12110 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12111 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12112       plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12113        pmin=2.
12114        pmax=2050
12115        if(plab.gt.pmax)then
12116        pp2=8.
12117        return
12118        endif
12119         if(plab .lt. pmin)then
12120         pp2 = 25.
12121         return
12122         end if
12123 c* fit parameters
12124        a=11.2
12125        b=25.5
12126        c=0.151
12127        d=-1.62
12128        an=-1.12
12129         pp2 = a+b*(plab**an)+c*(alog(plab))**2+d*alog(plab)
12130        if(pp2.le.0)pp2=0
12131         return
12132         END
12133
12134 ******************************************
12135 * for pp-->total
12136 c      real*4 function ppt(srt)
12137       real function ppt(srt)
12138       SAVE   
12139 *  srt    = DSQRT(s) in GeV                                                   *
12140 *  xsec   = production cross section in mb                                    *
12141 *  earray = EXPerimental table with proton energies in MeV                    *
12142 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12143 *                                                                             *
12144 ******************************************
12145            pmass=0.9383 
12146 * 1.Calculate p(lab)  from srt [GeV]
12147 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12148 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12149       plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12150        pmin=3. 
12151        pmax=2100
12152       if ((plab .lt. pmin).or.(plab.gt.pmax)) then
12153         ppt = 55.
12154         return
12155       end if
12156 c* fit parameters
12157        a=45.6
12158        b=219.0
12159        c=0.410
12160        d=-3.41
12161        an=-4.23
12162         ppt = a+b*(plab**an)+c*(alog(plab))**2+d*alog(plab)
12163        if(ppt.le.0)ppt=0.0
12164         return
12165         END
12166
12167 *************************
12168 * cross section for N*(1535) production in PP collisions
12169 * VARIABLES:
12170 * LB1,LB2 ARE THE LABLES OF THE TWO COLLIDING PARTICLES
12171 * SRT IS THE CMS ENERGY
12172 * X1535 IS THE N*(1535) PRODUCTION CROSS SECTION
12173 * NOTE THAT THE N*(1535) PRODUCTION CROSS SECTION IS 2 TIMES THE ETA 
12174 * PRODUCTION CROSS SECTION
12175 * DATE: Aug. 1 , 1994
12176 * ********************************
12177        real function s1535(SRT)
12178       SAVE   
12179        S0=2.424
12180        s1535=0.
12181        IF(SRT.LE.S0)RETURN
12182        S1535=2.*0.102*(SRT-S0)/(0.058+(SRT-S0)**2)
12183        return
12184        end
12185 ****************************************
12186 * generate a table for pt distribution for
12187        subroutine tablem
12188 * THE PROCESS N+N--->N+N+PION
12189 *       DATE : July 11, 1994
12190 *****************************************
12191         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
12192 cc      SAVE /TABLE/
12193       SAVE   
12194        ptmax=2.01
12195        anorm=ptdis(ptmax)
12196        do 10 L=0,200
12197        x=0.01*float(L+1)
12198        rr=ptdis(x)/anorm
12199        earray(l)=rr
12200        xarray(l)=x
12201 10       continue
12202        RETURN
12203        end
12204 *********************************
12205        real function ptdis(x)
12206       SAVE   
12207 * NUCLEON TRANSVERSE MOMENTUM DISTRIBUTION AT HIGH ENERGIES
12208 * DATE: Aug. 11, 1994
12209 *********************************
12210        b=3.78
12211        c=0.47
12212        d=3.60
12213 c       b=b*3
12214 c       d=d*3
12215        ptdis=1./(2.*b)*(1.-exp(-b*x**2))-c/d*x*exp(-d*x)
12216      1     -c/D**2*(exp(-d*x)-1.)
12217        return
12218        end
12219 *****************************
12220        subroutine ppxS(lb1,lb2,srt,ppsig,spprho,ipp)
12221 * purpose: this subroutine gives the cross section for pion+pion 
12222 *          elastic collision
12223 * variables: 
12224 *       input: lb1,lb2 and srt are the labels and srt for I1 and I2
12225 *       output: ppsig: pp xsection
12226 *               ipp: label for the pion+pion channel
12227 *               Ipp=0 NOTHING HAPPEND 
12228 *                  1 for Pi(+)+PI(+) DIRECT
12229 *                   2     PI(+)+PI(0) FORMING RHO(+)
12230 *                  3     PI(+)+PI(-) FORMING RHO(0)
12231 *                   4     PI(0)+PI(O) DIRECT
12232 *                  5     PI(0)+PI(-) FORMING RHO(-)
12233 *                  6     PI(-)+PI(-) DIRECT
12234 * reference: G.F. Bertsch, Phys. Rev. D37 (1988) 1202.
12235 * date : Aug 29, 1994
12236 *****************************
12237        parameter (amp=0.14,pi=3.1415926)
12238       SAVE   
12239        PPSIG=0.0
12240
12241 cbzdbg10/15/99
12242         spprho=0.0
12243 cbzdbg10/15/99 end
12244
12245        IPP=0
12246        IF(SRT.LE.0.3)RETURN
12247        q=sqrt((srt/2)**2-amp**2)
12248        esigma=5.8*amp
12249        tsigma=2.06*q
12250        erho=0.77
12251        trho=0.095*q*(q/amp/(1.+(q/erho)**2))**2
12252        esi=esigma-srt
12253        if(esi.eq.0)then
12254        d00=pi/2.
12255        go to 10
12256        endif
12257        d00=atan(tsigma/2./esi)
12258 10       erh=erho-srt
12259        if(erh.eq.0.)then
12260        d11=pi/2.
12261        go to 20
12262        endif
12263        d11=atan(trho/2./erh)
12264 20       d20=-0.12*q/amp
12265        s0=8.*pi*sin(d00)**2/q**2
12266        s1=8*pi*3*sin(d11)**2/q**2
12267        s2=8*pi*5*sin(d20)**2/q**2
12268 c    !! GeV^-2 to mb
12269         s0=s0*0.197**2*10.
12270         s1=s1*0.197**2*10.
12271         s2=s2*0.197**2*10.
12272 C       ppXS=s0/9.+s1/3.+s2*0.56
12273 C       if(ppxs.le.0)ppxs=0.00001
12274        spprho=s1/2.
12275 * (1) PI(+)+PI(+)
12276        IF(LB1.EQ.5.AND.LB2.EQ.5)THEN
12277        IPP=1
12278        PPSIG=S2
12279        RETURN
12280        ENDIF
12281 * (2) PI(+)+PI(0)
12282        IF((LB1.EQ.5.AND.LB2.EQ.4).OR.(LB1.EQ.4.AND.LB2.EQ.5))THEN
12283        IPP=2
12284        PPSIG=S2/2.+S1/2.
12285        RETURN
12286        ENDIF
12287 * (3) PI(+)+PI(-)
12288        IF((LB1.EQ.5.AND.LB2.EQ.3).OR.(LB1.EQ.3.AND.LB2.EQ.5))THEN
12289        IPP=3
12290        PPSIG=S2/6.+S1/2.+S0/3.
12291        RETURN
12292        ENDIF
12293 * (4) PI(0)+PI(0)
12294        IF(LB1.EQ.4.AND.LB2.EQ.4)THEN
12295        IPP=4
12296        PPSIG=2*S2/3.+S0/3.
12297        RETURN
12298        ENDIF
12299 * (5) PI(0)+PI(-)
12300        IF((LB1.EQ.4.AND.LB2.EQ.3).OR.(LB1.EQ.3.AND.LB2.EQ.4))THEN
12301        IPP=5
12302        PPSIG=S2/2.+S1/2.
12303        RETURN
12304        ENDIF
12305 * (6) PI(-)+PI(-)
12306        IF(LB1.EQ.3.AND.LB2.EQ.3)THEN
12307        IPP=6
12308        PPSIG=S2
12309        ENDIF
12310        return
12311        end
12312 **********************************
12313 * elementary kaon production cross sections
12314 *  from the CERN data book
12315 *  date: Sept.2, 1994
12316 *  for pp-->pLK+
12317 c      real*4 function pplpk(srt)
12318       real function pplpk(srt)
12319       SAVE   
12320 *  srt    = DSQRT(s) in GeV                                                   *
12321 *  xsec   = production cross section in mb                                    *
12322 *  earray = EXPerimental table with proton energies in MeV                    *
12323 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12324 *                                                                             *
12325 ******************************************
12326            pmass=0.9383 
12327 * 1.Calculate p(lab)  from srt [GeV]
12328 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12329 *   find the center of mass energy corresponding to the given pm as
12330 *   if Lambda+N+K are produced
12331        pplpk=0.
12332         plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12333        pmin=2.82
12334        pmax=25.0
12335        if(plab.gt.pmax)then
12336        pplpk=0.036
12337        return
12338        endif
12339         if(plab .lt. pmin)then
12340         pplpk = 0.
12341         return
12342         end if
12343 c* fit parameters
12344        a=0.0654
12345        b=-3.16
12346        c=-0.0029
12347        an=-4.14
12348         pplpk = a+b*(plab**an)+c*(alog(plab))**2
12349        if(pplpk.le.0)pplpk=0
12350         return
12351         END
12352
12353 ******************************************
12354 * for pp-->pSigma+K0
12355 c      real*4 function ppk0(srt)
12356       real function ppk0(srt)
12357 *  srt    = DSQRT(s) in GeV                                                   *
12358 *  xsec   = production cross section in mb                                    *
12359 *                                                                             *
12360 ******************************************
12361 c      real*4   xarray(7), earray(7)
12362       real   xarray(7), earray(7)
12363       SAVE   
12364       data xarray /0.030,0.025,0.025,0.026,0.02,0.014,0.06/
12365       data earray /3.67,4.95,5.52,6.05,6.92,7.87,10./
12366
12367            pmass=0.9383 
12368 * 1.Calculate p(lab)  from srt [GeV]
12369 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12370 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12371        ppk0=0
12372        if(srt.le.2.63)return
12373        if(srt.gt.4.54)then
12374        ppk0=0.037
12375        return
12376        endif
12377         plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12378         if (plab .lt. earray(1)) then
12379         ppk0 = xarray(1)
12380         return
12381       end if
12382 *
12383 * 2.Interpolate double logarithmically to find sigma(srt)
12384 *
12385       do 1001 ie = 1,7
12386         if (earray(ie) .eq. plab) then
12387           ppk0 = xarray(ie)
12388           go to 10
12389         else if (earray(ie) .gt. plab) then
12390           ymin = alog(xarray(ie-1))
12391           ymax = alog(xarray(ie))
12392           xmin = alog(earray(ie-1))
12393           xmax = alog(earray(ie))
12394           ppk0 = exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
12395      &/(xmax-xmin) )
12396           go to 10
12397         end if
12398  1001 continue
12399 10       continue
12400       return
12401         END
12402 ******************************************
12403 * for pp-->pSigma0K+
12404 c      real*4 function ppk1(srt)
12405       real function ppk1(srt)
12406 *  srt    = DSQRT(s) in GeV                                                   *
12407 *  xsec   = production cross section in mb                                    *
12408 *                                                                             *
12409 ******************************************
12410 c      real*4   xarray(7), earray(7)
12411       real   xarray(7), earray(7)
12412       SAVE   
12413       data xarray /0.013,0.025,0.016,0.012,0.017,0.029,0.025/
12414       data earray /3.67,4.95,5.52,5.97,6.05,6.92,7.87/
12415
12416            pmass=0.9383 
12417 * 1.Calculate p(lab)  from srt [GeV]
12418 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12419 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12420        ppk1=0.
12421        if(srt.le.2.63)return
12422        if(srt.gt.4.08)then
12423        ppk1=0.025
12424        return
12425        endif
12426         plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12427         if (plab .lt. earray(1)) then
12428         ppk1 =xarray(1)
12429         return
12430       end if
12431 *
12432 * 2.Interpolate double logarithmically to find sigma(srt)
12433 *
12434       do 1001 ie = 1,7
12435         if (earray(ie) .eq. plab) then
12436           ppk1 = xarray(ie)
12437           go to 10
12438         else if (earray(ie) .gt. plab) then
12439           ymin = alog(xarray(ie-1))
12440           ymax = alog(xarray(ie))
12441           xmin = alog(earray(ie-1))
12442           xmax = alog(earray(ie))
12443           ppk1 = exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
12444      &/(xmax-xmin) )
12445           go to 10
12446         end if
12447  1001 continue
12448 10       continue
12449       return
12450         END
12451 **********************************
12452 *                                                                      *
12453 *                                                                      *
12454       SUBROUTINE CRPN(PX,PY,PZ,SRT,I1,I2,
12455      & IBLOCK,xkaon0,xkaon,Xphi,xphin)
12456 *     PURPOSE:                                                         *
12457 *           DEALING WITH PION+N-->L/S+KAON PROCESS AND PION PRODUCTION *
12458 *     NOTE   :                                                         *
12459 *          
12460 *     QUANTITIES:                                                 *
12461 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
12462 *           SRT      - SQRT OF S                                       *
12463 *           IBLOCK   - THE INFORMATION BACK                            *
12464 *                     7  PION+N-->L/S+KAON
12465 *           iblock   - 77 pion+N-->Delta+pion
12466 *           iblock   - 78 pion+N-->Delta+RHO
12467 *           iblock   - 79 pion+N-->Delta+OMEGA
12468 *           iblock   - 222 pion+N-->Phi 
12469 **********************************
12470         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
12471      1  AMP=0.93828,AP1=0.13496,APHI=1.020,
12472      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
12473         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
12474         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
12475         COMMON /AA/ R(3,MAXSTR)
12476 cc      SAVE /AA/
12477         COMMON /BB/ P(3,MAXSTR)
12478 cc      SAVE /BB/
12479         COMMON /CC/ E(MAXSTR)
12480 cc      SAVE /CC/
12481         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
12482 cc      SAVE /EE/
12483         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
12484 cc      SAVE /input1/
12485       COMMON/RNDF77/NSEED
12486 cc      SAVE /RNDF77/
12487       SAVE   
12488
12489       PX0=PX
12490       PY0=PY
12491       PZ0=PZ
12492       iblock=1
12493       x1=RANART(NSEED)
12494       ianti=0
12495       if(lb(i1).lt.0 .or. lb(i2).lt.0) ianti=1
12496       if(xkaon0/(xkaon+Xphi).ge.x1)then
12497 * kaon production
12498 *-----------------------------------------------------------------------
12499         IBLOCK=7
12500         if(ianti .eq. 1)iblock=-7
12501         NTAG=0
12502 * RELABLE PARTICLES FOR THE PROCESS PION+n-->LAMBDA K OR SIGMA k
12503 * DECIDE LAMBDA OR SIGMA PRODUCTION, AND TO CALCULATE THE NEW
12504 * MOMENTA FOR PARTICLES IN THE FINAL STATE.
12505        KAONC=0
12506        IF(PNLKA(SRT)/(PNLKA(SRT)
12507      &       +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
12508        IF(E(I1).LE.0.2)THEN
12509            LB(I1)=23
12510            E(I1)=AKA
12511            IF(KAONC.EQ.1)THEN
12512               LB(I2)=14
12513               E(I2)=ALA
12514            ELSE
12515               LB(I2) = 15 + int(3 * RANART(NSEED))
12516               E(I2)=ASA       
12517            ENDIF
12518            if(ianti .eq. 1)then
12519               lb(i1) = 21
12520               lb(i2) = -lb(i2)
12521            endif
12522        ELSE
12523            LB(I2)=23
12524            E(I2)=AKA
12525            IF(KAONC.EQ.1)THEN
12526               LB(I1)=14
12527               E(I1)=ALA
12528            ELSE
12529               LB(I1) = 15 + int(3 * RANART(NSEED))
12530               E(I1)=ASA       
12531            ENDIF
12532            if(ianti .eq. 1)then
12533               lb(i2) = 21
12534               lb(i1) = -lb(i1)
12535            endif
12536        ENDIF
12537         EM1=E(I1)
12538         EM2=E(I2)
12539         go to 50
12540 * to gererate the momentum for the kaon and L/S
12541       elseif(Xphi/(xkaon+Xphi).ge.x1)then
12542           iblock=222
12543          if(xphin/Xphi .ge. RANART(NSEED))then
12544           LB(I1)= 1+int(2*RANART(NSEED))
12545            E(I1)=AMN
12546          else
12547           LB(I1)= 6+int(4*RANART(NSEED))
12548            E(I1)=AM0
12549          endif
12550 c  !! at present only baryon
12551          if(ianti .eq. 1)lb(i1)=-lb(i1)
12552           LB(I2)= 29
12553            E(I2)=APHI
12554         EM1=E(I1)
12555         EM2=E(I2)
12556        go to 50
12557          else
12558 * CHECK WHAT KIND OF PION PRODUCTION PROCESS HAS HAPPENED
12559        IF(RANART(NSEED).LE.TWOPI(SRT)/
12560      &  (TWOPI(SRT)+THREPI(SRT)+FOURPI(SRT)))THEN
12561        iblock=77
12562        ELSE 
12563         IF(THREPI(SRT)/(THREPI(SRT)+FOURPI(SRT)).
12564      &  GT.RANART(NSEED))THEN
12565        IBLOCK=78
12566        ELSE
12567        IBLOCK=79
12568        ENDIF
12569        endif
12570        ntag=0
12571 * pion production (Delta+pion/rho/omega in the final state)
12572 * generate the mass of the delta resonance
12573        X2=RANART(NSEED)
12574 * relable the particles
12575        if(iblock.eq.77)then
12576 * GENERATE THE DELTA MASS
12577        dmax=srt-ap1-0.02
12578        dm=rmass(dmax,iseed)
12579 * pion+baryon-->pion+delta
12580 * Relable particles, I1 is assigned to the Delta and I2 is assigned to the
12581 * meson
12582 *(1) for pi(+)+p-->D(+)+P(+) OR D(++)+p(0)
12583        if( ((lb(i1).eq.1.and.lb(i2).eq.5).
12584      &  or.(lb(i1).eq.5.and.lb(i2).eq.1))
12585      &       .OR. ((lb(i1).eq.-1.and.lb(i2).eq.3).
12586      &  or.(lb(i1).eq.3.and.lb(i2).eq.-1)) )then
12587               if(iabs(lb(i1)).eq.1)then
12588         ii = i1
12589        IF(X2.LE.0.5)THEN
12590        lb(i1)=8
12591        e(i1)=dm
12592        lb(i2)=5
12593        e(i2)=ap1
12594        go to 40
12595        ELSE
12596        lb(i1)=9
12597        e(i1)=dm
12598        lb(i2)=4
12599         ipi = 4
12600        e(i2)=ap1
12601        go to 40
12602        endif
12603               else
12604         ii = i2
12605        IF(X2.LE.0.5)THEN
12606        lb(i2)=8
12607        e(i2)=dm
12608        lb(i1)=5
12609        e(i1)=ap1
12610        go to 40
12611        ELSE
12612        lb(i2)=9
12613        e(i2)=dm
12614        lb(i1)=4
12615        e(i1)=ap1
12616        go to 40
12617        endif
12618               endif
12619        endif
12620 *(2) for pi(-)+p-->D(0)+P(0) OR D(+)+p(-),or D(-)+p(+)
12621        if( ((lb(i1).eq.1.and.lb(i2).eq.3).
12622      &  or.(lb(i1).eq.3.and.lb(i2).eq.1))
12623      &        .OR. ((lb(i1).eq.-1.and.lb(i2).eq.5).
12624      &  or.(lb(i1).eq.5.and.lb(i2).eq.-1)) )then
12625               if(iabs(lb(i1)).eq.1)then
12626         ii = i1
12627        IF(X2.LE.0.33)THEN
12628        lb(i1)=6
12629        e(i1)=dm
12630        lb(i2)=5
12631        e(i2)=ap1
12632        go to 40
12633        ENDIF
12634        if(X2.gt.0.33.and.X2.le.0.67)then
12635        lb(i1)=7
12636        e(i1)=dm
12637        lb(i2)=4
12638        e(i2)=ap1
12639        go to 40
12640        endif
12641        if(X2.gt.0.67)then
12642        lb(i1)=8
12643        e(i1)=dm
12644        lb(i2)=3
12645        e(i2)=ap1
12646        go to 40
12647        endif
12648               else
12649         ii = i2
12650        IF(X2.LE.0.33)THEN
12651        lb(i2)=6
12652        e(i2)=dm
12653        lb(i1)=5
12654        e(i1)=ap1
12655        go to 40
12656        ENDIF
12657        if(X2.gt.0.33.and.X2.le.0.67)then
12658        lb(i2)=7
12659        e(i2)=dm
12660        lb(i1)=4
12661        e(i1)=ap1
12662        go to 40
12663        endif
12664        if(X2.gt.0.67)then
12665        lb(i2)=8
12666        e(i2)=dm
12667        lb(i1)=3
12668        e(i1)=ap1
12669        go to 40
12670        endif
12671               endif
12672        endif
12673 *(3) for pi(+)+n-->D(+)+Pi(0) OR D(++)+p(-) or D(0)+pi(+)
12674        if( ((lb(i1).eq.2.and.lb(i2).eq.5).
12675      &   or.(lb(i1).eq.5.and.lb(i2).eq.2))
12676      & .OR. ((lb(i1).eq.-2.and.lb(i2).eq.3).
12677      &   or.(lb(i1).eq.3.and.lb(i2).eq.-2)) )then
12678               if(iabs(lb(i1)).eq.2)then
12679         ii = i1
12680        IF(X2.LE.0.33)THEN
12681        lb(i1)=8
12682        e(i1)=dm
12683        lb(i2)=4
12684        e(i2)=ap1
12685        go to 40
12686        ENDIF
12687        if(X2.gt.0.33.and.X2.le.0.67)then
12688        lb(i1)=7
12689        e(i1)=dm
12690        lb(i2)=5
12691        e(i2)=ap1
12692        go to 40
12693        endif
12694        if(X2.gt.0.67)then
12695        lb(i1)=9
12696        e(i1)=dm
12697        lb(i2)=3
12698        e(i2)=ap1
12699        go to 40
12700        endif
12701               else
12702         ii = i2
12703        IF(X2.LE.0.33)THEN
12704        lb(i2)=8
12705        e(i2)=dm
12706        lb(i1)=4
12707        e(i1)=ap1
12708        go to 40
12709        ENDIF
12710        if(X2.gt.0.33.and.X2.le.0.67)then
12711        lb(i2)=7
12712        e(i2)=dm
12713        lb(i1)=5
12714        e(i1)=ap1
12715        go to 40
12716        endif
12717        if(X2.gt.0.67)then
12718        lb(i2)=9
12719        e(i2)=dm
12720        lb(i1)=3
12721        e(i1)=ap1
12722        go to 40
12723        endif
12724               endif
12725        endif
12726 *(4) for pi(0)+p-->D(+)+Pi(0) OR D(++)+p(-) or D(0)+pi(+)
12727        if((iabs(lb(i1)).eq.1.and.lb(i2).eq.4).
12728      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.1))then
12729               if(iabs(lb(i1)).eq.1)then
12730         ii = i1
12731        IF(X2.LE.0.33)THEN
12732        lb(i1)=8
12733        e(i1)=dm
12734        lb(i2)=4
12735        e(i2)=ap1
12736        go to 40
12737        ENDIF
12738        if(X2.gt.0.33.and.X2.le.0.67)then
12739        lb(i1)=7
12740        e(i1)=dm
12741        lb(i2)=5
12742        e(i2)=ap1
12743        go to 40
12744        endif
12745        if(X2.gt.0.67)then
12746        lb(i1)=9
12747        e(i1)=dm
12748        lb(i2)=3
12749        e(i2)=ap1
12750        go to 40
12751        endif
12752               else
12753         ii = i2
12754        IF(X2.LE.0.33)THEN
12755        lb(i2)=8
12756        e(i2)=dm
12757        lb(i1)=4
12758        e(i1)=ap1
12759        go to 40
12760        ENDIF
12761        if(X2.gt.0.33.and.X2.le.0.67)then
12762        lb(i2)=7
12763        e(i2)=dm
12764        lb(i1)=5
12765        e(i1)=ap1
12766        go to 40
12767        endif
12768        if(X2.gt.0.67)then
12769        lb(i2)=9
12770        e(i2)=dm
12771        lb(i1)=3
12772        e(i1)=ap1
12773        go to 40
12774        endif
12775               endif
12776        endif 
12777 *(5) for pi(-)+n-->D(-)+P(0) OR D(0)+p(-)
12778        if( ((lb(i1).eq.2.and.lb(i2).eq.3).
12779      &  or.(lb(i1).eq.3.and.lb(i2).eq.2))
12780      &         .OR. ((lb(i1).eq.-2.and.lb(i2).eq.5).
12781      &  or.(lb(i1).eq.5.and.lb(i2).eq.-2)) )then
12782               if(iabs(lb(i1)).eq.2)then
12783         ii = i1
12784        IF(X2.LE.0.5)THEN
12785        lb(i1)=6
12786        e(i1)=dm
12787        lb(i2)=4
12788        e(i2)=ap1
12789        go to 40
12790        ELSE
12791        lb(i1)=7
12792        e(i1)=dm
12793        lb(i2)=3
12794        e(i2)=ap1
12795        go to 40
12796        endif
12797               else
12798         ii = i2
12799        IF(X2.LE.0.5)THEN
12800        lb(i2)=6
12801        e(i2)=dm
12802        lb(i1)=4
12803        e(i1)=ap1
12804        go to 40
12805        ELSE
12806        lb(i2)=7
12807        e(i2)=dm
12808        lb(i1)=3
12809        e(i1)=ap1
12810        go to 40
12811        endif
12812               endif
12813        ENDIF
12814 *(6) for pi(0)+n-->D(0)+P(0), D(-)+p(+) or D(+)+p(-)
12815        if((iabs(lb(i1)).eq.2.and.lb(i2).eq.4).
12816      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.2))then
12817               if(iabs(lb(i1)).eq.2)then
12818         ii = i1
12819        IF(X2.LE.0.33)THEN
12820        lb(i1)=7
12821        e(i1)=dm
12822        lb(i2)=4
12823        e(i2)=ap1
12824        go to 40
12825        Endif
12826        IF(X2.LE.0.67.AND.X2.GT.0.33)THEN       
12827        lb(i1)=6
12828        e(i1)=dm
12829        lb(i2)=5
12830        e(i2)=ap1
12831        go to 40
12832        endif
12833        IF(X2.GT.0.67)THEN
12834        LB(I1)=8
12835        E(I1)=DM
12836        LB(I2)=3
12837        E(I2)=AP1
12838        GO TO 40
12839        ENDIF
12840               else
12841         ii = i2
12842        IF(X2.LE.0.33)THEN
12843        lb(i2)=7
12844        e(i2)=dm
12845        lb(i1)=4
12846        e(i1)=ap1
12847        go to 40
12848        ENDIF
12849        IF(X2.LE.0.67.AND.X2.GT.0.33)THEN       
12850        lb(i2)=6
12851        e(i2)=dm
12852        lb(i1)=5
12853        e(i1)=ap1
12854        go to 40
12855        endif
12856        IF(X2.GT.0.67)THEN
12857        LB(I2)=8
12858        E(I2)=DM
12859        LB(I1)=3
12860        E(I1)=AP1
12861        GO TO 40
12862        ENDIF
12863               endif
12864        endif
12865                      ENDIF
12866        if(iblock.eq.78)then
12867        call Rmasdd(srt,1.232,0.77,1.08,
12868      &  0.28,ISEED,4,dm,ameson)
12869        arho=AMESON
12870 * pion+baryon-->Rho+delta
12871 *(1) for pi(+)+p-->D(+)+rho(+) OR D(++)+rho(0)
12872        if( ((lb(i1).eq.1.and.lb(i2).eq.5).
12873      &  or.(lb(i1).eq.5.and.lb(i2).eq.1))
12874      &        .OR. ((lb(i1).eq.-1.and.lb(i2).eq.3).
12875      &  or.(lb(i1).eq.3.and.lb(i2).eq.-1)) )then
12876               if(iabs(lb(i1)).eq.1)then
12877         ii = i1
12878        IF(X2.LE.0.5)THEN
12879        lb(i1)=8
12880        e(i1)=dm
12881        lb(i2)=27
12882        e(i2)=arho
12883        go to 40
12884        ELSE
12885        lb(i1)=9
12886        e(i1)=dm
12887        lb(i2)=26
12888        e(i2)=arho
12889        go to 40
12890        endif
12891               else
12892         ii = i2
12893        IF(X2.LE.0.5)THEN
12894        lb(i2)=8
12895        e(i2)=dm
12896        lb(i1)=27
12897        e(i1)=arho
12898        go to 40
12899        ELSE
12900        lb(i2)=9
12901        e(i2)=dm
12902        lb(i1)=26
12903        e(i1)=arho
12904        go to 40
12905        endif
12906               endif
12907        endif
12908 *(2) for pi(-)+p-->D(+)+rho(-) OR D(0)+rho(0) or D(-)+rho(+)
12909        if( ((lb(i1).eq.1.and.lb(i2).eq.3).
12910      &  or.(lb(i1).eq.3.and.lb(i2).eq.1))
12911      &        .OR. ((lb(i1).eq.-1.and.lb(i2).eq.5).
12912      &  or.(lb(i1).eq.5.and.lb(i2).eq.-1)) )then
12913               if(iabs(lb(i1)).eq.1)then
12914         ii = i1
12915        IF(X2.LE.0.33)THEN
12916        lb(i1)=6
12917        e(i1)=dm
12918        lb(i2)=27
12919        e(i2)=arho
12920        go to 40
12921        ENDIF
12922        if(X2.gt.0.33.and.X2.le.0.67)then
12923        lb(i1)=7
12924        e(i1)=dm
12925        lb(i2)=26
12926        e(i2)=arho
12927        go to 40
12928        endif
12929        if(X2.gt.0.67)then
12930        lb(i1)=8
12931        e(i1)=dm
12932        lb(i2)=25
12933        e(i2)=arho
12934        go to 40
12935        endif
12936               else
12937         ii = i2
12938        IF(X2.LE.0.33)THEN
12939        lb(i2)=6
12940        e(i2)=dm
12941        lb(i1)=27
12942        e(i1)=arho
12943        go to 40
12944        ENDIF
12945        if(X2.gt.0.33.and.X2.le.0.67)then
12946        lb(i2)=7
12947        e(i2)=dm
12948        lb(i1)=26
12949        e(i1)=arho
12950        go to 40
12951        endif
12952        if(X2.gt.0.67)then
12953        lb(i2)=8
12954        e(i2)=dm
12955        lb(i1)=25
12956        e(i1)=arho
12957        go to 40
12958        endif
12959               endif
12960        endif
12961 *(3) for pi(+)+n-->D(+)+rho(0) OR D(++)+rho(-) or D(0)+rho(+)
12962        if( ((lb(i1).eq.2.and.lb(i2).eq.5).
12963      &  or.(lb(i1).eq.5.and.lb(i2).eq.2))
12964      &       .OR.((lb(i1).eq.-2.and.lb(i2).eq.3).
12965      &  or.(lb(i1).eq.3.and.lb(i2).eq.-2)) )then
12966               if(iabs(lb(i1)).eq.2)then
12967         ii = i1
12968        IF(X2.LE.0.33)THEN
12969        lb(i1)=8
12970        e(i1)=dm
12971        lb(i2)=26
12972        e(i2)=arho
12973        go to 40
12974        ENDIF
12975        if(X2.gt.0.33.and.X2.le.0.67)then
12976        lb(i1)=7
12977        e(i1)=dm
12978        lb(i2)=27
12979        e(i2)=arho
12980        go to 40
12981        endif
12982        if(X2.gt.0.67)then
12983        lb(i1)=9
12984        e(i1)=dm
12985        lb(i2)=25
12986        e(i2)=arho
12987        go to 40
12988        endif
12989               else
12990         ii = i2
12991        IF(X2.LE.0.33)THEN
12992        lb(i2)=8
12993        e(i2)=dm
12994        lb(i1)=26
12995        e(i1)=arho
12996        go to 40
12997        ENDIF
12998        if(X2.gt.0.33.and.X2.le.0.67)then
12999        lb(i2)=7
13000        e(i2)=dm
13001        lb(i1)=27
13002        e(i1)=arho
13003        go to 40
13004        endif
13005        if(X2.gt.0.67)then
13006        lb(i2)=9
13007        e(i2)=dm
13008        lb(i1)=25
13009        e(i1)=arho
13010        go to 40
13011        endif
13012               endif
13013        endif
13014 *(4) for pi(0)+p-->D(+)+rho(0) OR D(++)+rho(-) or D(0)+rho(+)
13015        if((iabs(lb(i1)).eq.1.and.lb(i2).eq.4).
13016      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.1))then
13017               if(iabs(lb(i1)).eq.1)then
13018         ii = i1
13019        IF(X2.LE.0.33)THEN
13020        lb(i1)=7
13021        e(i1)=dm
13022        lb(i2)=27
13023        e(i2)=arho
13024        go to 40
13025        ENDIF
13026        if(X2.gt.0.33.and.X2.le.0.67)then
13027        lb(i1)=8
13028        e(i1)=dm
13029        lb(i2)=26
13030        e(i2)=arho
13031        go to 40
13032        endif
13033        if(X2.gt.0.67)then
13034        lb(i1)=9
13035        e(i1)=dm
13036        lb(i2)=25
13037        e(i2)=arho
13038        go to 40
13039        endif
13040               else
13041         ii = i2
13042        IF(X2.LE.0.33)THEN
13043        lb(i2)=7
13044        e(i2)=dm
13045        lb(i1)=27
13046        e(i1)=arho
13047        go to 40
13048        ENDIF
13049        if(X2.gt.0.33.and.X2.le.0.67)then
13050        lb(i2)=8
13051        e(i2)=dm
13052        lb(i1)=26
13053        e(i1)=arho
13054        go to 40
13055        endif
13056        if(X2.gt.0.67)then
13057        lb(i2)=9
13058        e(i2)=dm
13059        lb(i1)=25
13060        e(i1)=arho
13061        go to 40
13062        endif
13063               endif
13064        endif 
13065 *(5) for pi(-)+n-->D(-)+rho(0) OR D(0)+rho(-)
13066        if( ((lb(i1).eq.2.and.lb(i2).eq.3).
13067      &  or.(lb(i1).eq.3.and.lb(i2).eq.2))
13068      &        .OR. ((lb(i1).eq.-2.and.lb(i2).eq.5).
13069      &  or.(lb(i1).eq.5.and.lb(i2).eq.-2)) )then
13070               if(iabs(lb(i1)).eq.2)then
13071         ii = i1
13072        IF(X2.LE.0.5)THEN
13073        lb(i1)=6
13074        e(i1)=dm
13075        lb(i2)=26
13076        e(i2)=arho
13077        go to 40
13078        ELSE
13079        lb(i1)=7
13080        e(i1)=dm
13081        lb(i2)=25
13082        e(i2)=arho
13083        go to 40
13084        endif
13085               else
13086         ii = i2
13087        IF(X2.LE.0.5)THEN
13088        lb(i2)=6
13089        e(i2)=dm
13090        lb(i1)=26
13091        e(i1)=arho
13092        go to 40
13093        ELSE
13094        lb(i2)=7
13095        e(i2)=dm
13096        lb(i1)=25
13097        e(i1)=arho
13098        go to 40
13099        endif
13100               endif
13101        ENDIF
13102 *(6) for pi(0)+n-->D(0)+rho(0), D(-)+rho(+) and D(+)+rho(-)
13103        if((iabs(lb(i1)).eq.2.and.lb(i2).eq.4).
13104      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.2))then
13105               if(iabs(lb(i1)).eq.2)then
13106         ii = i1
13107        IF(X2.LE.0.33)THEN
13108        lb(i1)=7
13109        e(i1)=dm
13110        lb(i2)=26
13111        e(i2)=arho
13112        go to 40
13113        endif
13114        if(x2.gt.0.33.and.x2.le.0.67)then       
13115        lb(i1)=6
13116        e(i1)=dm
13117        lb(i2)=27
13118        e(i2)=arho
13119        go to 40
13120        endif
13121        if(x2.gt.0.67)then
13122        lb(i1)=8
13123        e(i1)=dm
13124        lb(i2)=25
13125        e(i2)=arho
13126        endif
13127               else
13128         ii = i2
13129        IF(X2.LE.0.33)THEN
13130        lb(i2)=7
13131        e(i2)=dm
13132        lb(i1)=26
13133        e(i1)=arho
13134        go to 40
13135        endif
13136        if(x2.le.0.67.and.x2.gt.0.33)then       
13137        lb(i2)=6
13138        e(i2)=dm
13139        lb(i1)=27
13140        e(i1)=arho
13141        go to 40
13142        endif
13143        if(x2.gt.0.67)then
13144        lb(i2)=8
13145        e(i2)=dm
13146        lb(i1)=25
13147        e(i1)=arho
13148        endif
13149               endif
13150        endif
13151                      Endif
13152        if(iblock.eq.79)then
13153        aomega=0.782
13154 * GENERATE THE DELTA MASS
13155        dmax=srt-0.782-0.02
13156        dm=rmass(dmax,iseed)
13157 * pion+baryon-->omega+delta
13158 *(1) for pi(+)+p-->D(++)+omega(0)
13159        if( ((lb(i1).eq.1.and.lb(i2).eq.5).
13160      &  or.(lb(i1).eq.5.and.lb(i2).eq.1))
13161      &  .OR.((lb(i1).eq.-1.and.lb(i2).eq.3).
13162      &  or.(lb(i1).eq.3.and.lb(i2).eq.-1)) )then
13163               if(iabs(lb(i1)).eq.1)then
13164         ii = i1
13165        lb(i1)=9
13166        e(i1)=dm
13167        lb(i2)=28
13168        e(i2)=aomega
13169        go to 40
13170               else
13171         ii = i2
13172        lb(i2)=9
13173        e(i2)=dm
13174        lb(i1)=28
13175        e(i1)=aomega
13176        go to 40
13177               endif
13178        endif
13179 *(2) for pi(-)+p-->D(0)+omega(0) 
13180        if( ((lb(i1).eq.1.and.lb(i2).eq.3).
13181      &  or.(lb(i1).eq.3.and.lb(i2).eq.1))
13182      &        .OR. ((lb(i1).eq.-1.and.lb(i2).eq.5).
13183      &  or.(lb(i1).eq.5.and.lb(i2).eq.-1)) )then
13184               if(iabs(lb(i1)).eq.1)then
13185         ii = i1
13186        lb(i1)=7
13187        e(i1)=dm
13188        lb(i2)=28
13189        e(i2)=aomega
13190        go to 40
13191               else
13192         ii = i2
13193        lb(i2)=7
13194        e(i2)=dm
13195        lb(i1)=28
13196        e(i1)=aomega
13197        go to 40
13198               endif
13199        endif
13200 *(3) for pi(+)+n-->D(+)+omega(0) 
13201        if( ((lb(i1).eq.2.and.lb(i2).eq.5).
13202      &  or.(lb(i1).eq.5.and.lb(i2).eq.2))
13203      &       .OR. ((lb(i1).eq.-2.and.lb(i2).eq.3).
13204      &  or.(lb(i1).eq.3.and.lb(i2).eq.-2)) )then
13205               if(iabs(lb(i1)).eq.2)then
13206         ii = i1
13207        lb(i1)=8
13208        e(i1)=dm
13209        lb(i2)=28
13210        e(i2)=aomega
13211        go to 40
13212               else
13213         ii = i2
13214        lb(i2)=8
13215        e(i2)=dm
13216        lb(i1)=28
13217        e(i1)=aomega
13218        go to 40
13219               endif
13220        endif
13221 *(4) for pi(0)+p-->D(+)+omega(0) 
13222        if((iabs(lb(i1)).eq.1.and.lb(i2).eq.4).
13223      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.1))then
13224               if(iabs(lb(i1)).eq.1)then
13225         ii = i1
13226        lb(i1)=8
13227        e(i1)=dm
13228        lb(i2)=28
13229        e(i2)=aomega
13230        go to 40
13231               else
13232         ii = i2
13233        lb(i2)=8
13234        e(i2)=dm
13235        lb(i1)=28
13236        e(i1)=aomega
13237        go to 40
13238               endif
13239        endif 
13240 *(5) for pi(-)+n-->D(-)+omega(0) 
13241        if( ((lb(i1).eq.2.and.lb(i2).eq.3).
13242      &  or.(lb(i1).eq.3.and.lb(i2).eq.2))
13243      &        .OR. ((lb(i1).eq.-2.and.lb(i2).eq.5).
13244      &  or.(lb(i1).eq.5.and.lb(i2).eq.-2)) )then
13245               if(iabs(lb(i1)).eq.2)then
13246         ii = i1
13247        lb(i1)=6
13248        e(i1)=dm
13249        lb(i2)=28
13250        e(i2)=aomega
13251        go to 40
13252               ELSE
13253         ii = i2
13254        lb(i2)=6
13255        e(i2)=dm
13256        lb(i1)=28
13257        e(i1)=aomega
13258               endif
13259        ENDIF
13260 *(6) for pi(0)+n-->D(0)+omega(0) 
13261        if((iabs(lb(i1)).eq.2.and.lb(i2).eq.4).
13262      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.2))then
13263               if(iabs(lb(i1)).eq.2)then
13264         ii = i1
13265        lb(i1)=7
13266        e(i1)=dm
13267        lb(i2)=28
13268        e(i2)=aomega
13269        go to 40
13270               else
13271         ii = i2
13272        lb(i2)=7
13273        e(i2)=dm
13274        lb(i1)=26
13275        e(i1)=arho
13276        go to 40
13277               endif
13278        endif
13279                      Endif
13280 40       em1=e(i1)
13281        em2=e(i2)
13282        if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
13283          lb(ii) = -lb(ii)
13284            jj = i2
13285           if(ii .eq. i2)jj = i1
13286          if(iblock .eq. 77)then
13287           if(lb(jj).eq.3)then
13288            lb(jj) = 5
13289           elseif(lb(jj).eq.5)then
13290            lb(jj) = 3
13291           endif
13292          elseif(iblock .eq. 78)then
13293           if(lb(jj).eq.25)then
13294            lb(jj) = 27
13295           elseif(lb(jj).eq.27)then
13296            lb(jj) = 25
13297           endif
13298          endif
13299        endif
13300            endif
13301 *-----------------------------------------------------------------------
13302 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
13303 * ENERGY CONSERVATION
13304 50          PR2   = (SRT**2 - EM1**2 - EM2**2)**2
13305      1                - 4.0 * (EM1*EM2)**2
13306           IF(PR2.LE.0.)PR2=0.00000001
13307           PR=SQRT(PR2)/(2.*SRT)
13308 * here we use the same transverse momentum distribution as for
13309 * pp collisions, it might be necessary to use a different distribution
13310
13311 clin-10/25/02 get rid of argument usage mismatch in PTR():
13312           xptr=0.33*pr
13313 c         cc1=ptr(0.33*pr,iseed)
13314          cc1=ptr(xptr,iseed)
13315 clin-10/25/02-end
13316
13317          c1=sqrt(pr**2-cc1**2)/pr
13318 *          C1   = 1.0 - 2.0 * RANART(NSEED)
13319           T1   = 2.0 * PI * RANART(NSEED)
13320       S1   = SQRT( 1.0 - C1**2 )
13321       CT1  = COS(T1)
13322       ST1  = SIN(T1)
13323 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
13324       PZ   = PR * C1
13325       PX   = PR * S1*CT1 
13326       PY   = PR * S1*ST1
13327 * ROTATE IT 
13328        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
13329       RETURN
13330       END
13331 **********************************
13332 *                                                                      *
13333 *                                                                      *
13334       SUBROUTINE CREN(PX,PY,PZ,SRT,I1,I2,IBLOCK)
13335 *     PURPOSE:                                                         *
13336 *             DEALING WITH ETA+N-->L/S+KAON PROCESS                   *
13337 *     NOTE   :                                                         *
13338 *          
13339 *     QUANTITIES:                                                 *
13340 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
13341 *           SRT      - SQRT OF S                                       *
13342 *           IBLOCK   - THE INFORMATION BACK                            *
13343 *                     7  ETA+N-->L/S+KAON
13344 **********************************
13345         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
13346      1  AMP=0.93828,AP1=0.13496,
13347      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
13348         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
13349         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
13350         COMMON /AA/ R(3,MAXSTR)
13351 cc      SAVE /AA/
13352         COMMON /BB/ P(3,MAXSTR)
13353 cc      SAVE /BB/
13354         COMMON /CC/ E(MAXSTR)
13355 cc      SAVE /CC/
13356         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
13357 cc      SAVE /EE/
13358         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
13359 cc      SAVE /input1/
13360       COMMON/RNDF77/NSEED
13361 cc      SAVE /RNDF77/
13362       SAVE   
13363
13364        PX0=PX
13365        PY0=PY
13366        PZ0=PZ
13367         NTAG=0
13368         IBLOCK=7
13369         ianti=0
13370         if(lb(i1).lt.0 .or. lb(i2).lt.0)then
13371           ianti=1
13372           iblock=-7
13373         endif
13374 * RELABLE PARTICLES FOR THE PROCESS eta+n-->LAMBDA K OR SIGMA k
13375 * DECIDE LAMBDA OR SIGMA PRODUCTION, AND TO CALCULATE THE NEW
13376 * MOMENTA FOR PARTICLES IN THE FINAL STATE.
13377        KAONC=0
13378        IF(PNLKA(SRT)/(PNLKA(SRT)
13379      & +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
13380        IF(E(I1).LE.0.6)THEN
13381        LB(I1)=23
13382        E(I1)=AKA
13383         IF(KAONC.EQ.1)THEN
13384        LB(I2)=14
13385        E(I2)=ALA
13386         ELSE
13387         LB(I2) = 15 + int(3 * RANART(NSEED))
13388        E(I2)=ASA       
13389         ENDIF
13390           if(ianti .eq. 1)then
13391             lb(i1)=21
13392             lb(i2)=-lb(i2)
13393           endif
13394        ELSE
13395        LB(I2)=23
13396        E(I2)=AKA
13397         IF(KAONC.EQ.1)THEN
13398        LB(I1)=14
13399        E(I1)=ALA
13400         ELSE
13401          LB(I1) = 15 + int(3 * RANART(NSEED))
13402        E(I1)=ASA       
13403         ENDIF
13404           if(ianti .eq. 1)then
13405             lb(i2)=21
13406             lb(i1)=-lb(i1)
13407           endif
13408        ENDIF
13409         EM1=E(I1)
13410         EM2=E(I2)
13411 *-----------------------------------------------------------------------
13412 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
13413 * ENERGY CONSERVATION
13414         PR2   = (SRT**2 - EM1**2 - EM2**2)**2
13415      1                - 4.0 * (EM1*EM2)**2
13416           IF(PR2.LE.0.)PR2=1.e-09
13417           PR=SQRT(PR2)/(2.*SRT)
13418           C1   = 1.0 - 2.0 * RANART(NSEED)
13419           T1   = 2.0 * PI * RANART(NSEED)
13420       S1   = SQRT( 1.0 - C1**2 )
13421       CT1  = COS(T1)
13422       ST1  = SIN(T1)
13423 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
13424       PZ   = PR * C1
13425       PX   = PR * S1*CT1 
13426       PY   = PR * S1*ST1
13427 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
13428       RETURN
13429       END
13430 **********************************
13431 *                                                                      *
13432 *                                                                      *
13433 c      SUBROUTINE Crdir(PX,PY,PZ,SRT,I1,I2)
13434       SUBROUTINE Crdir(PX,PY,PZ,SRT,I1,I2,IBLOCK)
13435 *     PURPOSE:                                                         *
13436 *             DEALING WITH pion+N-->pion+N PROCESS                   *
13437 *     NOTE   :                                                         *
13438 *          
13439 *     QUANTITIES:                                                 *
13440 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
13441 *           SRT      - SQRT OF S                                       *
13442 *           IBLOCK   - THE INFORMATION BACK                            *
13443 *                    
13444 **********************************
13445         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
13446      1  AMP=0.93828,AP1=0.13496,
13447      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
13448         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
13449         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
13450         COMMON /AA/ R(3,MAXSTR)
13451 cc      SAVE /AA/
13452         COMMON /BB/ P(3,MAXSTR)
13453 cc      SAVE /BB/
13454         COMMON /CC/ E(MAXSTR)
13455 cc      SAVE /CC/
13456         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
13457 cc      SAVE /EE/
13458         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
13459 cc      SAVE /input1/
13460       COMMON/RNDF77/NSEED
13461 cc      SAVE /RNDF77/
13462       SAVE   
13463
13464        PX0=PX
13465        PY0=PY
13466        PZ0=PZ
13467         IBLOCK=999
13468         NTAG=0
13469         EM1=E(I1)
13470         EM2=E(I2)
13471 *-----------------------------------------------------------------------
13472 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
13473 * ENERGY CONSERVATION
13474         PR2   = (SRT**2 - EM1**2 - EM2**2)**2
13475      1                - 4.0 * (EM1*EM2)**2
13476           IF(PR2.LE.0.)PR2=1.e-09
13477           PR=SQRT(PR2)/(2.*SRT)
13478
13479 clin-10/25/02 get rid of argument usage mismatch in PTR():
13480           xptr=0.33*pr
13481 c         cc1=ptr(0.33*pr,iseed)
13482          cc1=ptr(xptr,iseed)
13483 clin-10/25/02-end
13484
13485          c1=sqrt(pr**2-cc1**2)/pr
13486            T1   = 2.0 * PI * RANART(NSEED)
13487       S1   = SQRT( 1.0 - C1**2 )
13488       CT1  = COS(T1)
13489       ST1  = SIN(T1)
13490 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
13491       PZ   = PR * C1
13492       PX   = PR * S1*CT1 
13493       PY   = PR * S1*ST1
13494 * ROTATE the momentum
13495       call rotate(px0,py0,pz0,px,py,pz)
13496       RETURN
13497       END
13498 **********************************
13499 *                                                                      *
13500 *                                                                      *
13501       SUBROUTINE CRPD(PX,PY,PZ,SRT,I1,I2,
13502      & IBLOCK,xkaon0,xkaon,Xphi,xphin)
13503 *     PURPOSE:                                                         *
13504 *     DEALING WITH PION+D(N*)-->PION +N OR 
13505 *                                             L/S+KAON PROCESS         *
13506 *     NOTE   :                                                         *
13507 *          
13508 *     QUANTITIES:                                                 *
13509 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
13510 *           SRT      - SQRT OF S                                       *
13511 *           IBLOCK   - THE INFORMATION BACK                            *
13512 *                     7  PION+D(N*)-->L/S+KAON
13513 *           iblock   - 80 pion+D(N*)-->pion+N
13514 *           iblock   - 81 RHO+D(N*)-->PION+N
13515 *           iblock   - 82 OMEGA+D(N*)-->PION+N
13516 *                     222  PION+D --> PHI
13517 **********************************
13518         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
13519      1  AMP=0.93828,AP1=0.13496,APHI=1.020,
13520      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
13521         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
13522         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
13523         COMMON /AA/ R(3,MAXSTR)
13524 cc      SAVE /AA/
13525         COMMON /BB/ P(3,MAXSTR)
13526 cc      SAVE /BB/
13527         COMMON /CC/ E(MAXSTR)
13528 cc      SAVE /CC/
13529         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
13530 cc      SAVE /EE/
13531         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
13532 cc      SAVE /input1/
13533       COMMON/RNDF77/NSEED
13534 cc      SAVE /RNDF77/
13535       SAVE   
13536
13537        PX0=PX
13538        PY0=PY
13539        PZ0=PZ
13540         IBLOCK=1
13541        x1=RANART(NSEED)
13542         ianti=0
13543         if(lb(i1).lt.0 .or. lb(i2).lt.0)ianti=1
13544        if(xkaon0/(xkaon+Xphi).ge.x1)then
13545 * kaon production
13546 *-----------------------------------------------------------------------
13547         IBLOCK=7
13548         if(ianti .eq. 1)iblock=-7
13549         NTAG=0
13550 * RELABLE PARTICLES FOR THE PROCESS PION+n-->LAMBDA K OR SIGMA k
13551 * DECIDE LAMBDA OR SIGMA PRODUCTION, AND TO CALCULATE THE NEW
13552 * MOMENTA FOR PARTICLES IN THE FINAL STATE.
13553        KAONC=0
13554        IF(PNLKA(SRT)/(PNLKA(SRT)
13555      &       +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
13556 clin-8/17/00     & +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
13557        IF(E(I1).LE.0.2)THEN
13558            LB(I1)=23
13559            E(I1)=AKA
13560            IF(KAONC.EQ.1)THEN
13561               LB(I2)=14
13562               E(I2)=ALA
13563            ELSE
13564               LB(I2) = 15 + int(3 * RANART(NSEED))
13565               E(I2)=ASA       
13566            ENDIF
13567            if(ianti .eq. 1)then
13568               lb(i1)=21
13569               lb(i2)=-lb(i2)
13570            endif
13571        ELSE
13572            LB(I2)=23
13573            E(I2)=AKA
13574            IF(KAONC.EQ.1)THEN
13575               LB(I1)=14
13576               E(I1)=ALA
13577            ELSE
13578               LB(I1) = 15 + int(3 * RANART(NSEED))
13579               E(I1)=ASA       
13580            ENDIF
13581            if(ianti .eq. 1)then
13582               lb(i2)=21
13583               lb(i1)=-lb(i1)
13584            endif
13585        ENDIF
13586         EM1=E(I1)
13587         EM2=E(I2)
13588        go to 50
13589 * to gererate the momentum for the kaon and L/S
13590 c
13591 c* Phi production
13592        elseif(Xphi/(xkaon+Xphi).ge.x1)then
13593           iblock=222
13594          if(xphin/Xphi .ge. RANART(NSEED))then
13595           LB(I1)= 1+int(2*RANART(NSEED))
13596            E(I1)=AMN
13597          else
13598           LB(I1)= 6+int(4*RANART(NSEED))
13599            E(I1)=AM0
13600          endif
13601 c   !! at present only baryon
13602           if(ianti .eq. 1)lb(i1)=-lb(i1)
13603           LB(I2)= 29
13604            E(I2)=APHI
13605         EM1=E(I1)
13606         EM2=E(I2)
13607        go to 50
13608          else
13609 * PION REABSORPTION HAS HAPPENED
13610        X2=RANART(NSEED)
13611        IBLOCK=80
13612        ntag=0
13613 * Relable particles, I1 is assigned to the nucleon
13614 * and I2 is assigned to the pion
13615 * for the reverse of the following process
13616 *(1) for D(+)+P(+)-->p+pion(+)
13617         if( ((lb(i1).eq.8.and.lb(i2).eq.5).
13618      &       or.(lb(i1).eq.5.and.lb(i2).eq.8))
13619      &       .OR.((lb(i1).eq.-8.and.lb(i2).eq.3).
13620      &       or.(lb(i1).eq.3.and.lb(i2).eq.-8)) )then
13621            if(iabs(lb(i1)).eq.8)then
13622               ii = i1
13623               lb(i1)=1
13624               e(i1)=amn
13625               lb(i2)=5
13626               e(i2)=ap1
13627               go to 40
13628            else
13629               ii = i2
13630               lb(i2)=1
13631               e(i2)=amn
13632               lb(i1)=5
13633               e(i1)=ap1
13634               go to 40
13635            endif
13636        endif
13637 c
13638 *(2) for D(0)+P(0)-->n+pi(0) or p+pi(-) 
13639        if((iabs(lb(i1)).eq.7.and.lb(i2).eq.4).
13640      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.7))then
13641               if(iabs(lb(i1)).eq.7)then
13642         ii = i1
13643        IF(X2.LE.0.5)THEN
13644        lb(i1)=2
13645        e(i1)=amn
13646        lb(i2)=4
13647        e(i2)=ap1
13648        go to 40
13649        Else
13650        lb(i1)=1
13651        e(i1)=amn
13652        lb(i2)=3
13653        e(i2)=ap1
13654        go to 40
13655        endif
13656               else
13657         ii = i2
13658        IF(X2.LE.0.5)THEN
13659        lb(i2)=2
13660        e(i2)=amn
13661        lb(i1)=4
13662        e(i1)=ap1
13663        go to 40
13664        Else
13665        lb(i2)=1
13666        e(i2)=amn
13667        lb(i1)=3
13668        e(i1)=ap1
13669        go to 40
13670        endif
13671               endif
13672        endif
13673 *(3) for D(+)+Pi(0)-->pi(+)+n or pi(0)+p 
13674        if((iabs(lb(i1)).eq.8.and.lb(i2).eq.4).
13675      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.8))then
13676               if(iabs(lb(i1)).eq.8)then
13677         ii = i1
13678        IF(X2.LE.0.5)THEN
13679        lb(i1)=2
13680        e(i1)=amn
13681        lb(i2)=5
13682        e(i2)=ap1
13683        go to 40
13684        Else
13685        lb(i1)=1
13686        e(i1)=amn
13687        lb(i2)=4
13688        e(i2)=ap1
13689        go to 40
13690        endif
13691               else
13692         ii = i2
13693        IF(X2.LE.0.5)THEN
13694        lb(i2)=2
13695        e(i2)=amn
13696        lb(i1)=5
13697        e(i1)=ap1
13698        go to 40
13699        Else
13700        lb(i2)=1
13701        e(i2)=amn
13702        lb(i1)=4
13703        e(i1)=ap1
13704        go to 40
13705        endif
13706               endif
13707        endif
13708 *(4) for D(-)+Pi(0)-->n+pi(-) 
13709        if((iabs(lb(i1)).eq.6.and.lb(i2).eq.4).
13710      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.6))then
13711               if(iabs(lb(i1)).eq.6)then
13712         ii = i1
13713        lb(i1)=2
13714        e(i1)=amn
13715        lb(i2)=3
13716        e(i2)=ap1
13717        go to 40
13718        else
13719         ii = i2
13720        lb(i2)=2
13721        e(i2)=amn
13722        lb(i1)=3
13723        e(i1)=ap1
13724        go to 40
13725        ENDIF
13726        endif
13727 *(5) for D(+)+Pi(-)-->pi(0)+n or pi(-)+p
13728        if( ((lb(i1).eq.8.and.lb(i2).eq.3).
13729      &  or.(lb(i1).eq.3.and.lb(i2).eq.8))
13730      &        .OR.((lb(i1).eq.-8.and.lb(i2).eq.5).
13731      &  or.(lb(i1).eq.5.and.lb(i2).eq.-8)) )then
13732               if(iabs(lb(i1)).eq.8)then
13733         ii = i1
13734         IF(X2.LE.0.5)THEN
13735        lb(i1)=2
13736        e(i1)=amn
13737        lb(i2)=4
13738        e(i2)=ap1
13739        go to 40
13740        ELSE
13741        lb(i1)=1
13742        e(i1)=amn
13743        lb(i2)=3
13744        e(i2)=ap1
13745        go to 40
13746        endif
13747               else
13748         ii = i2
13749         IF(X2.LE.0.5)THEN
13750        lb(i2)=2
13751        e(i2)=amn
13752        lb(i1)=4
13753        e(i1)=ap1
13754        go to 40
13755        ELSE
13756        lb(i2)=1
13757        e(i2)=amn
13758        lb(i1)=3
13759        e(i1)=ap1
13760        go to 40
13761        endif
13762               endif
13763        ENDIF
13764 *(6) D(0)+P(+)-->n+pi(+) or p+pi(0)
13765        if( ((lb(i1).eq.7.and.lb(i2).eq.5).
13766      &  or.(lb(i1).eq.5.and.lb(i2).eq.7))
13767      &        .OR.((lb(i1).eq.-7.and.lb(i2).eq.3).
13768      &  or.(lb(i1).eq.3.and.lb(i2).eq.-7)) )then
13769               if(iabs(lb(i1)).eq.7)then
13770         ii = i1
13771          IF(X2.LE.0.5)THEN
13772        lb(i1)=2
13773        e(i1)=amn
13774        lb(i2)=5
13775        e(i2)=ap1
13776        go to 40
13777        else
13778        lb(i1)=1
13779        e(i1)=amn
13780        lb(i2)=4
13781        e(i2)=ap1
13782        go to 40
13783        endif
13784               else
13785         ii = i2
13786          IF(X2.LE.0.5)THEN
13787        lb(i2)=2
13788        e(i2)=amn
13789        lb(i1)=5
13790        e(i1)=ap1
13791        go to 40
13792        Else
13793        lb(i2)=1
13794        e(i2)=amn
13795        lb(i1)=4
13796        e(i1)=ap1
13797        go to 40
13798        endif
13799               endif
13800        ENDIF
13801 *(7) for D(0)+Pi(-)-->n+pi(-) 
13802        if( ((lb(i1).eq.7.and.lb(i2).eq.3).
13803      &  or.(lb(i1).eq.3.and.lb(i2).eq.7))
13804      &        .OR.((lb(i1).eq.-7.and.lb(i2).eq.5).
13805      &  or.(lb(i1).eq.5.and.lb(i2).eq.-7)) )then
13806               if(iabs(lb(i1)).eq.7)then
13807         ii = i1
13808        lb(i1)=2
13809        e(i1)=amn
13810        lb(i2)=3
13811        e(i2)=ap1
13812        go to 40
13813        else
13814         ii = i2
13815        lb(i2)=2
13816        e(i2)=amn
13817        lb(i1)=3
13818        e(i1)=ap1
13819        go to 40
13820        ENDIF
13821        endif
13822 *(8) D(-)+P(+)-->n+pi(0) or p+pi(-)
13823        if( ((lb(i1).eq.6.and.lb(i2).eq.5)
13824      &      .or.(lb(i1).eq.5.and.lb(i2).eq.6))
13825      &   .OR.((lb(i1).eq.-6.and.lb(i2).eq.3).
13826      &      or.(lb(i1).eq.3.and.lb(i2).eq.-6)) )then
13827               if(iabs(lb(i1)).eq.6)then
13828          ii = i1
13829        IF(X2.LE.0.5)THEN
13830        lb(i1)=2
13831        e(i1)=amn
13832        lb(i2)=4
13833        e(i2)=ap1
13834        go to 40
13835        else
13836        lb(i1)=1
13837        e(i1)=amn
13838        lb(i2)=3
13839        e(i2)=ap1
13840        go to 40
13841        endif
13842               else
13843          ii = i2
13844        IF(X2.LE.0.5)THEN
13845        lb(i2)=2
13846        e(i2)=amn
13847        lb(i1)=4
13848        e(i1)=ap1
13849        go to 40
13850        Else
13851        lb(i2)=1
13852        e(i2)=amn
13853        lb(i1)=3
13854        e(i1)=ap1
13855        go to 40
13856        endif
13857               endif
13858        ENDIF
13859 c
13860 *(9) D(++)+P(-)-->n+pi(+) or p+pi(0)
13861        if( ((lb(i1).eq.9.and.lb(i2).eq.3)
13862      &   .or.(lb(i1).eq.3.and.lb(i2).eq.9))
13863      &       .OR. ((lb(i1).eq.-9.and.lb(i2).eq.5)
13864      &   .or.(lb(i1).eq.5.and.lb(i2).eq.-9)) )then
13865               if(iabs(lb(i1)).eq.9)then
13866         ii = i1
13867        IF(X2.LE.0.5)THEN
13868        lb(i1)=2
13869        e(i1)=amn
13870        lb(i2)=5
13871        e(i2)=ap1
13872        go to 40
13873        else
13874        lb(i1)=1
13875        e(i1)=amn
13876        lb(i2)=4
13877        e(i2)=ap1
13878        go to 40
13879        endif
13880               else
13881         ii = i2
13882        IF(X2.LE.0.5)THEN
13883        lb(i2)=2
13884        e(i2)=amn
13885        lb(i1)=5
13886        e(i1)=ap1
13887        go to 40
13888        Else
13889        lb(i2)=1
13890        e(i2)=amn
13891        lb(i1)=4
13892        e(i1)=ap1
13893        go to 40
13894        endif
13895               endif
13896        ENDIF
13897 *(10) for D(++)+Pi(0)-->p+pi(+) 
13898        if((iabs(lb(i1)).eq.9.and.lb(i2).eq.4)
13899      &    .or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.9))then
13900            if(iabs(lb(i1)).eq.9)then
13901         ii = i1
13902        lb(i1)=1
13903        e(i1)=amn
13904        lb(i2)=5
13905        e(i2)=ap1
13906        go to 40
13907        else
13908         ii = i2
13909        lb(i2)=1
13910        e(i2)=amn
13911        lb(i1)=5
13912        e(i1)=ap1
13913        go to 40
13914        ENDIF
13915        endif
13916 *(11) for N*(1440)(+)or N*(1535)(+)+P(+)-->p+pion(+)
13917        if( ((lb(i1).eq.11.and.lb(i2).eq.5).
13918      &  or.(lb(i1).eq.5.and.lb(i2).eq.11).
13919      &  or.(lb(i1).eq.13.and.lb(i2).eq.5).
13920      &  or.(lb(i1).eq.5.and.lb(i2).eq.13))
13921      &        .OR.((lb(i1).eq.-11.and.lb(i2).eq.3).
13922      &  or.(lb(i1).eq.3.and.lb(i2).eq.-11).
13923      &  or.(lb(i1).eq.-13.and.lb(i2).eq.3).
13924      &  or.(lb(i1).eq.3.and.lb(i2).eq.-13)) )then
13925               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
13926         ii = i1
13927        lb(i1)=1
13928        e(i1)=amn
13929        lb(i2)=5
13930        e(i2)=ap1
13931        go to 40
13932        else
13933         ii = i2
13934        lb(i2)=1
13935        e(i2)=amn
13936        lb(i1)=5
13937        e(i1)=ap1
13938        go to 40
13939               endif
13940        endif
13941 *(12) for N*(1440) or N*(1535)(0)+P(0)-->n+pi(0) or p+pi(-) 
13942        if((iabs(lb(i1)).eq.10.and.lb(i2).eq.4).
13943      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.10).
13944      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.12).
13945      &  or.(lb(i2).eq.4.and.iabs(lb(i1)).eq.12))then
13946               if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
13947         ii = i1
13948        IF(X2.LE.0.5)THEN
13949        lb(i1)=2
13950        e(i1)=amn
13951        lb(i2)=4
13952        e(i2)=ap1
13953        go to 40
13954        Else
13955        lb(i1)=1
13956        e(i1)=amn
13957        lb(i2)=3
13958        e(i2)=ap1
13959        go to 40
13960        endif
13961               else
13962         ii = i2
13963        IF(X2.LE.0.5)THEN
13964        lb(i2)=2
13965        e(i2)=amn
13966        lb(i1)=4
13967        e(i1)=ap1
13968        go to 40
13969        Else
13970        lb(i2)=1
13971        e(i2)=amn
13972        lb(i1)=3
13973        e(i1)=ap1
13974        go to 40
13975        endif
13976               endif
13977        endif
13978 *(13) for N*(1440) or N*(1535)(+)+Pi(0)-->pi(+)+n or pi(0)+p 
13979        if((iabs(lb(i1)).eq.11.and.lb(i2).eq.4).
13980      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.11).
13981      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.13).
13982      &  or.(lb(i2).eq.4.and.iabs(lb(i1)).eq.13))then
13983               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
13984         ii = i1
13985        IF(X2.LE.0.5)THEN
13986        lb(i1)=2
13987        e(i1)=amn
13988        lb(i2)=5
13989        e(i2)=ap1
13990        go to 40
13991        Else
13992        lb(i1)=1
13993        e(i1)=amn
13994        lb(i2)=4
13995        e(i2)=ap1
13996        go to 40
13997        endif
13998               else
13999         ii = i2
14000        IF(X2.LE.0.5)THEN
14001        lb(i2)=2
14002        e(i2)=amn
14003        lb(i1)=5
14004        e(i1)=ap1
14005        go to 40
14006        Else
14007        lb(i2)=1
14008        e(i2)=amn
14009        lb(i1)=4
14010        e(i1)=ap1
14011        go to 40
14012        endif
14013               endif
14014        endif
14015 *(14) for N*(1440) or N*(1535)(+)+Pi(-)-->pi(0)+n or pi(-)+p
14016        if( ((lb(i1).eq.11.and.lb(i2).eq.3).
14017      &  or.(lb(i1).eq.3.and.lb(i2).eq.11).
14018      &  or.(lb(i1).eq.3.and.lb(i2).eq.13).
14019      &  or.(lb(i2).eq.3.and.lb(i1).eq.13))
14020      &        .OR.((lb(i1).eq.-11.and.lb(i2).eq.5).
14021      &  or.(lb(i1).eq.5.and.lb(i2).eq.-11).
14022      &  or.(lb(i1).eq.5.and.lb(i2).eq.-13).
14023      &  or.(lb(i2).eq.5.and.lb(i1).eq.-13)) )then
14024        if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
14025         ii = i1
14026          IF(X2.LE.0.5)THEN
14027        lb(i1)=2
14028        e(i1)=amn
14029        lb(i2)=4
14030        e(i2)=ap1
14031        go to 40
14032        ELSE
14033        lb(i1)=1
14034        e(i1)=amn
14035        lb(i2)=3
14036        e(i2)=ap1
14037        go to 40
14038        endif
14039               else
14040         ii = i2
14041          IF(X2.LE.0.5)THEN
14042        lb(i2)=2
14043        e(i2)=amn
14044        lb(i1)=4
14045        e(i1)=ap1
14046        go to 40
14047        ELSE
14048        lb(i2)=1
14049        e(i2)=amn
14050        lb(i1)=3
14051        e(i1)=ap1
14052        go to 40
14053        endif
14054               endif
14055        ENDIF
14056 *(15) N*(1440) or N*(1535)(0)+P(+)-->n+pi(+) or p+pi(0)
14057        if( ((lb(i1).eq.10.and.lb(i2).eq.5).
14058      &  or.(lb(i1).eq.5.and.lb(i2).eq.10).
14059      &  or.(lb(i1).eq.12.and.lb(i2).eq.5).
14060      &  or.(lb(i1).eq.5.and.lb(i2).eq.12))
14061      &        .OR.((lb(i1).eq.-10.and.lb(i2).eq.3).
14062      &  or.(lb(i1).eq.3.and.lb(i2).eq.-10).
14063      &  or.(lb(i1).eq.-12.and.lb(i2).eq.3).
14064      &  or.(lb(i1).eq.3.and.lb(i2).eq.-12)) )then
14065        if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
14066         ii = i1
14067         IF(X2.LE.0.5)THEN
14068        lb(i1)=2
14069        e(i1)=amn
14070        lb(i2)=5
14071        e(i2)=ap1
14072        go to 40
14073        else
14074        lb(i1)=1
14075        e(i1)=amn
14076        lb(i2)=4
14077        e(i2)=ap1
14078        go to 40
14079        endif
14080               else
14081         ii = i2
14082         IF(X2.LE.0.5)THEN
14083        lb(i2)=2
14084        e(i2)=amn
14085        lb(i1)=5
14086        e(i1)=ap1
14087        go to 40
14088        Else
14089        lb(i2)=1
14090        e(i2)=amn
14091        lb(i1)=4
14092        e(i1)=ap1
14093        go to 40
14094        endif
14095               endif
14096        ENDIF
14097 *(16) for N*(1440) or N*(1535) (0)+Pi(-)-->n+pi(-) 
14098        if( ((lb(i1).eq.10.and.lb(i2).eq.3).
14099      &  or.(lb(i1).eq.3.and.lb(i2).eq.10).
14100      &  or.(lb(i1).eq.3.and.lb(i2).eq.12).
14101      &  or.(lb(i1).eq.12.and.lb(i2).eq.3))
14102      &        .OR.((lb(i1).eq.-10.and.lb(i2).eq.5).
14103      &  or.(lb(i1).eq.5.and.lb(i2).eq.-10).
14104      &  or.(lb(i1).eq.5.and.lb(i2).eq.-12).
14105      &  or.(lb(i1).eq.-12.and.lb(i2).eq.5)) )then
14106            if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
14107         ii = i1
14108        lb(i1)=2
14109        e(i1)=amn
14110        lb(i2)=3
14111        e(i2)=ap1
14112        go to 40
14113        else
14114         ii = i2
14115        lb(i2)=2
14116        e(i2)=amn
14117        lb(i1)=3
14118        e(i1)=ap1
14119        go to 40
14120        ENDIF
14121        endif
14122 40       em1=e(i1)
14123        em2=e(i2)
14124        if(ianti.eq.1 .and.  lb(i1).ge.1 .and. lb(i2).ge.1)then
14125          lb(ii) = -lb(ii)
14126            jj = i2
14127           if(ii .eq. i2)jj = i1
14128           if(lb(jj).eq.3)then
14129            lb(jj) = 5
14130           elseif(lb(jj).eq.5)then
14131            lb(jj) = 3
14132           endif
14133          endif
14134           endif
14135 *-----------------------------------------------------------------------
14136 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
14137 * ENERGY CONSERVATION
14138 50          PR2   = (SRT**2 - EM1**2 - EM2**2)**2
14139      1                - 4.0 * (EM1*EM2)**2
14140           IF(PR2.LE.0.)PR2=1.E-09
14141           PR=SQRT(PR2)/(2.*SRT)
14142
14143 clin-10/25/02 get rid of argument usage mismatch in PTR():
14144           xptr=0.33*pr
14145 c         cc1=ptr(0.33*pr,iseed)
14146          cc1=ptr(xptr,iseed)
14147 clin-10/25/02-end
14148
14149          c1=sqrt(pr**2-cc1**2)/pr
14150 c         C1   = 1.0 - 2.0 * RANART(NSEED)
14151           T1   = 2.0 * PI * RANART(NSEED)
14152       S1   = SQRT( 1.0 - C1**2 )
14153       CT1  = COS(T1)
14154       ST1  = SIN(T1)
14155       PZ   = PR * C1
14156       PX   = PR * S1*CT1 
14157       PY   = PR * S1*ST1 
14158 * rotate the momentum
14159        call rotate(px0,py0,pz0,px,py,pz)
14160       RETURN
14161       END
14162 **********************************
14163 *                                                                      *
14164 *                                                                      *
14165       SUBROUTINE CRRD(PX,PY,PZ,SRT,I1,I2,
14166      & IBLOCK,xkaon0,xkaon,Xphi,xphin)
14167 *     PURPOSE:                                                         *
14168 *     DEALING WITH rho(omega)+N or D(N*)-->PION +N OR 
14169 *                                             L/S+KAON PROCESS         *
14170 *     NOTE   :                                                         *
14171 *          
14172 *     QUANTITIES:                                                 *
14173 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
14174 *           SRT      - SQRT OF S                                       *
14175 *           IBLOCK   - THE INFORMATION BACK                            *
14176 *                     7  rho(omega)+N or D(N*)-->L/S+KAON
14177 *           iblock   - 80 pion+D(N*)-->pion+N
14178 *           iblock   - 81 RHO+D(N*)-->PION+N
14179 *           iblock   - 82 OMEGA+D(N*)-->PION+N
14180 *           iblock   - 222 pion+N-->Phi 
14181 **********************************
14182         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
14183      1  AMP=0.93828,AP1=0.13496,
14184      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
14185         PARAMETER     (AKA=0.498,ALA=1.1157,ASA=1.1974,APHI=1.02)
14186         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
14187         COMMON /AA/ R(3,MAXSTR)
14188 cc      SAVE /AA/
14189         COMMON /BB/ P(3,MAXSTR)
14190 cc      SAVE /BB/
14191         COMMON /CC/ E(MAXSTR)
14192 cc      SAVE /CC/
14193         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
14194 cc      SAVE /EE/
14195         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
14196 cc      SAVE /input1/
14197       COMMON/RNDF77/NSEED
14198 cc      SAVE /RNDF77/
14199       SAVE   
14200
14201        PX0=PX
14202        PY0=PY
14203        PZ0=PZ
14204        IBLOCK=1
14205        ianti=0
14206        if(lb(i1).lt.0 .or. lb(i2).lt.0) ianti=1
14207        x1=RANART(NSEED)
14208        if(xkaon0/(xkaon+Xphi).ge.x1)then
14209 * kaon production
14210 *-----------------------------------------------------------------------
14211         IBLOCK=7
14212         if(ianti .eq. 1)iblock=-7
14213         NTAG=0
14214 * RELABLE PARTICLES FOR THE PROCESS PION+n-->LAMBDA K OR SIGMA k
14215 * DECIDE LAMBDA OR SIGMA PRODUCTION, AND TO CALCULATE THE NEW
14216 * MOMENTA FOR PARTICLES IN THE FINAL STATE.
14217        KAONC=0
14218        IF(PNLKA(SRT)/(PNLKA(SRT)
14219      & +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
14220 clin-8/17/00     & +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
14221        IF(E(I1).LE.0.92)THEN
14222        LB(I1)=23
14223        E(I1)=AKA
14224               IF(KAONC.EQ.1)THEN
14225        LB(I2)=14
14226        E(I2)=ALA
14227               ELSE
14228         LB(I2) = 15 + int(3 * RANART(NSEED))
14229        E(I2)=ASA       
14230               ENDIF
14231          if(ianti .eq. 1)then
14232           lb(i1) = 21
14233           lb(i2) = -lb(i2)
14234          endif
14235        ELSE
14236        LB(I2)=23
14237        E(I2)=AKA
14238               IF(KAONC.EQ.1)THEN
14239        LB(I1)=14
14240        E(I1)=ALA
14241               ELSE
14242          LB(I1) = 15 + int(3 * RANART(NSEED))
14243        E(I1)=ASA       
14244               ENDIF
14245          if(ianti .eq. 1)then
14246           lb(i2) = 21
14247           lb(i1) = -lb(i1)
14248          endif
14249        ENDIF
14250         EM1=E(I1)
14251         EM2=E(I2)
14252        go to 50
14253 * to gererate the momentum for the kaon and L/S
14254 c
14255 c* Phi production
14256        elseif(Xphi/(xkaon+Xphi).ge.x1)then
14257           iblock=222
14258          if(xphin/Xphi .ge. RANART(NSEED))then
14259           LB(I1)= 1+int(2*RANART(NSEED))
14260            E(I1)=AMN
14261          else
14262           LB(I1)= 6+int(4*RANART(NSEED))
14263            E(I1)=AM0
14264          endif
14265 c   !! at present only baryon
14266          if(ianti .eq. 1)lb(i1)=-lb(i1)
14267           LB(I2)= 29
14268            E(I2)=APHI
14269         EM1=E(I1)
14270         EM2=E(I2)
14271        go to 50
14272          else
14273 * rho(omega) REABSORPTION HAS HAPPENED
14274        X2=RANART(NSEED)
14275        IBLOCK=81
14276        ntag=0
14277        if(lb(i1).eq.28.or.lb(i2).eq.28)go to 60
14278 * we treat Rho reabsorption in the following 
14279 * Relable particles, I1 is assigned to the Delta 
14280 * and I2 is assigned to the meson
14281 * for the reverse of the following process
14282 *(1) for D(+)+rho(+)-->p+pion(+)
14283        if( ((lb(i1).eq.8.and.lb(i2).eq.27).
14284      &  or.(lb(i1).eq.27.and.lb(i2).eq.8))
14285      &        .OR. ((lb(i1).eq.-8.and.lb(i2).eq.25).
14286      &  or.(lb(i1).eq.25.and.lb(i2).eq.-8)) )then
14287               if(iabs(lb(i1)).eq.8)then
14288         ii = i1
14289        lb(i1)=1
14290        e(i1)=amn
14291        lb(i2)=5
14292        e(i2)=ap1
14293        go to 40
14294        else
14295         ii = i2
14296        lb(i2)=1
14297        e(i2)=amn
14298        lb(i1)=5
14299        e(i1)=ap1
14300        go to 40
14301               endif
14302        endif
14303 *(2) for D(0)+rho(0)-->n+pi(0) or p+pi(-) 
14304        if((iabs(lb(i1)).eq.7.and.lb(i2).eq.26).
14305      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.7))then
14306               if(iabs(lb(i1)).eq.7)then
14307         ii = i1
14308        IF(X2.LE.0.5)THEN
14309        lb(i1)=2
14310        e(i1)=amn
14311        lb(i2)=4
14312        e(i2)=ap1
14313        go to 40
14314        Else
14315        lb(i1)=1
14316        e(i1)=amn
14317        lb(i2)=3
14318        e(i2)=ap1
14319        go to 40
14320        endif
14321               else
14322         ii = i2
14323        IF(X2.LE.0.5)THEN
14324        lb(i2)=2
14325        e(i2)=amn
14326        lb(i1)=4
14327        e(i1)=ap1
14328        go to 40
14329        Else
14330        lb(i2)=1
14331        e(i2)=amn
14332        lb(i1)=3
14333        e(i1)=ap1
14334        go to 40
14335        endif
14336               endif
14337        endif
14338 *(3) for D(+)+rho(0)-->pi(+)+n or pi(0)+p 
14339        if((iabs(lb(i1)).eq.8.and.lb(i2).eq.26).
14340      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.8))then
14341               if(iabs(lb(i1)).eq.8)then
14342         ii = i1
14343        IF(X2.LE.0.5)THEN
14344        lb(i1)=2
14345        e(i1)=amn
14346        lb(i2)=5
14347        e(i2)=ap1
14348        go to 40
14349        Else
14350        lb(i1)=1
14351        e(i1)=amn
14352        lb(i2)=4
14353        e(i2)=ap1
14354        go to 40
14355        endif
14356               else
14357         ii = i2
14358        IF(X2.LE.0.5)THEN
14359        lb(i2)=2
14360        e(i2)=amn
14361        lb(i1)=5
14362        e(i1)=ap1
14363        go to 40
14364        Else
14365        lb(i2)=1
14366        e(i2)=amn
14367        lb(i1)=4
14368        e(i1)=ap1
14369        go to 40
14370        endif
14371               endif
14372        endif
14373 *(4) for D(-)+rho(0)-->n+pi(-) 
14374        if((iabs(lb(i1)).eq.6.and.lb(i2).eq.26).
14375      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.6))then
14376               if(iabs(lb(i1)).eq.6)then
14377         ii = i1
14378        lb(i1)=2
14379        e(i1)=amn
14380        lb(i2)=3
14381        e(i2)=ap1
14382        go to 40
14383        else
14384         ii = i2
14385        lb(i2)=2
14386        e(i2)=amn
14387        lb(i1)=3
14388        e(i1)=ap1
14389        go to 40
14390        ENDIF
14391        endif
14392 *(5) for D(+)+rho(-)-->pi(0)+n or pi(-)+p
14393        if( ((lb(i1).eq.8.and.lb(i2).eq.25).
14394      &  or.(lb(i1).eq.25.and.lb(i2).eq.8))
14395      &        .OR. ((lb(i1).eq.-8.and.lb(i2).eq.27).
14396      &  or.(lb(i1).eq.27.and.lb(i2).eq.-8)) )then
14397               if(iabs(lb(i1)).eq.8)then
14398         ii = i1
14399        IF(X2.LE.0.5)THEN
14400        lb(i1)=2
14401        e(i1)=amn
14402        lb(i2)=4
14403        e(i2)=ap1
14404        go to 40
14405        ELSE
14406        lb(i1)=1
14407        e(i1)=amn
14408        lb(i2)=3
14409        e(i2)=ap1
14410        go to 40
14411        endif
14412               else
14413         ii = i2
14414        IF(X2.LE.0.5)THEN
14415        lb(i2)=2
14416        e(i2)=amn
14417        lb(i1)=4
14418        e(i1)=ap1
14419        go to 40
14420        ELSE
14421        lb(i2)=1
14422        e(i2)=amn
14423        lb(i1)=3
14424        e(i1)=ap1
14425        go to 40
14426        endif
14427               endif
14428        ENDIF
14429 *(6) D(0)+rho(+)-->n+pi(+) or p+pi(0)
14430        if( ((lb(i1).eq.7.and.lb(i2).eq.27).
14431      &  or.(lb(i1).eq.27.and.lb(i2).eq.7))
14432      &       .OR.((lb(i1).eq.-7.and.lb(i2).eq.25).
14433      &  or.(lb(i1).eq.25.and.lb(i2).eq.-7)) )then
14434               if(iabs(lb(i1)).eq.7)then
14435         ii = i1
14436        IF(X2.LE.0.5)THEN
14437        lb(i1)=2
14438        e(i1)=amn
14439        lb(i2)=5
14440        e(i2)=ap1
14441        go to 40
14442        else
14443        lb(i1)=1
14444        e(i1)=amn
14445        lb(i2)=4
14446        e(i2)=ap1
14447        go to 40
14448        endif
14449               else
14450         ii = i2
14451        IF(X2.LE.0.5)THEN
14452        lb(i2)=2
14453        e(i2)=amn
14454        lb(i1)=5
14455        e(i1)=ap1
14456        go to 40
14457        Else
14458        lb(i2)=1
14459        e(i2)=amn
14460        lb(i1)=4
14461        e(i1)=ap1
14462        go to 40
14463        endif
14464               endif
14465        ENDIF
14466 *(7) for D(0)+rho(-)-->n+pi(-) 
14467        if( ((lb(i1).eq.7.and.lb(i2).eq.25).
14468      &  or.(lb(i1).eq.25.and.lb(i2).eq.7))
14469      &       .OR.((lb(i1).eq.-7.and.lb(i2).eq.27).
14470      &  or.(lb(i1).eq.27.and.lb(i2).eq.-7)) )then
14471               if(iabs(lb(i1)).eq.7)then
14472         ii = i1
14473        lb(i1)=2
14474        e(i1)=amn
14475        lb(i2)=3
14476        e(i2)=ap1
14477        go to 40
14478        else
14479         ii = i2
14480        lb(i2)=2
14481        e(i2)=amn
14482        lb(i1)=3
14483        e(i1)=ap1
14484        go to 40
14485        ENDIF
14486        endif
14487 *(8) D(-)+rho(+)-->n+pi(0) or p+pi(-)
14488        if( ((lb(i1).eq.6.and.lb(i2).eq.27).
14489      &  or.(lb(i1).eq.27.and.lb(i2).eq.6))
14490      &        .OR. ((lb(i1).eq.-6.and.lb(i2).eq.25).
14491      &  or.(lb(i1).eq.25.and.lb(i2).eq.-6)) )then
14492               if(iabs(lb(i1)).eq.6)then
14493         ii = i1
14494        IF(X2.LE.0.5)THEN
14495        lb(i1)=2
14496        e(i1)=amn
14497        lb(i2)=4
14498        e(i2)=ap1
14499        go to 40
14500        else
14501        lb(i1)=1
14502        e(i1)=amn
14503        lb(i2)=3
14504        e(i2)=ap1
14505        go to 40
14506        endif
14507               else
14508         ii = i2
14509        IF(X2.LE.0.5)THEN
14510        lb(i2)=2
14511        e(i2)=amn
14512        lb(i1)=4
14513        e(i1)=ap1
14514        go to 40
14515        Else
14516        lb(i2)=1
14517        e(i2)=amn
14518        lb(i1)=3
14519        e(i1)=ap1
14520        go to 40
14521        endif
14522               endif
14523        ENDIF
14524 *(9) D(++)+rho(-)-->n+pi(+) or p+pi(0)
14525        if( ((lb(i1).eq.9.and.lb(i2).eq.25).
14526      &  or.(lb(i1).eq.25.and.lb(i2).eq.9))
14527      &        .OR.((lb(i1).eq.-9.and.lb(i2).eq.27).
14528      &  or.(lb(i1).eq.27.and.lb(i2).eq.-9)) )then
14529               if(iabs(lb(i1)).eq.9)then
14530         ii = i1
14531        IF(X2.LE.0.5)THEN
14532        lb(i1)=2
14533        e(i1)=amn
14534        lb(i2)=5
14535        e(i2)=ap1
14536        go to 40
14537        else
14538        lb(i1)=1
14539        e(i1)=amn
14540        lb(i2)=4
14541        e(i2)=ap1
14542        go to 40
14543        endif
14544               else
14545         ii = i2
14546        IF(X2.LE.0.5)THEN
14547        lb(i2)=2
14548        e(i2)=amn
14549        lb(i1)=5
14550        e(i1)=ap1
14551        go to 40
14552        Else
14553        lb(i2)=1
14554        e(i2)=amn
14555        lb(i1)=4
14556        e(i1)=ap1
14557        go to 40
14558        endif
14559               endif
14560        ENDIF
14561 *(10) for D(++)+rho(0)-->p+pi(+) 
14562        if((iabs(lb(i1)).eq.9.and.lb(i2).eq.26).
14563      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.9))then
14564               if(iabs(lb(i1)).eq.9)then
14565         ii = i1
14566        lb(i1)=1
14567        e(i1)=amn
14568        lb(i2)=5
14569        e(i2)=ap1
14570        go to 40
14571        else
14572         ii = i2
14573        lb(i2)=1
14574        e(i2)=amn
14575        lb(i1)=5
14576        e(i1)=ap1
14577        go to 40
14578        ENDIF
14579        endif
14580 *(11) for N*(1440)(+)or N*(1535)(+)+rho(+)-->p+pion(+)
14581        if( ((lb(i1).eq.11.and.lb(i2).eq.27).
14582      &  or.(lb(i1).eq.27.and.lb(i2).eq.11).
14583      &  or.(lb(i1).eq.13.and.lb(i2).eq.27).
14584      &  or.(lb(i1).eq.27.and.lb(i2).eq.13))
14585      &        .OR. ((lb(i1).eq.-11.and.lb(i2).eq.25).
14586      &  or.(lb(i1).eq.25.and.lb(i2).eq.-11).
14587      &  or.(lb(i1).eq.-13.and.lb(i2).eq.25).
14588      &  or.(lb(i1).eq.25.and.lb(i2).eq.-13)) )then
14589               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
14590         ii = i1
14591        lb(i1)=1
14592        e(i1)=amn
14593        lb(i2)=5
14594        e(i2)=ap1
14595        go to 40
14596        else
14597         ii = i2
14598        lb(i2)=1
14599        e(i2)=amn
14600        lb(i1)=5
14601        e(i1)=ap1
14602        go to 40
14603               endif
14604        endif
14605 *(12) for N*(1440) or N*(1535)(0)+rho(0)-->n+pi(0) or p+pi(-) 
14606        if((iabs(lb(i1)).eq.10.and.lb(i2).eq.26).
14607      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.10).
14608      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.12).
14609      &  or.(lb(i2).eq.26.and.iabs(lb(i1)).eq.12))then
14610               if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
14611         ii = i1
14612        IF(X2.LE.0.5)THEN
14613        lb(i1)=2
14614        e(i1)=amn
14615        lb(i2)=4
14616        e(i2)=ap1
14617        go to 40
14618        Else
14619        lb(i1)=1
14620        e(i1)=amn
14621        lb(i2)=3
14622        e(i2)=ap1
14623        go to 40
14624        endif
14625               else
14626         ii = i2
14627        IF(X2.LE.0.5)THEN
14628        lb(i2)=2
14629        e(i2)=amn
14630        lb(i1)=4
14631        e(i1)=ap1
14632        go to 40
14633        Else
14634        lb(i2)=1
14635        e(i2)=amn
14636        lb(i1)=3
14637        e(i1)=ap1
14638        go to 40
14639        endif
14640               endif
14641        endif
14642 *(13) for N*(1440) or N*(1535)(+)+rho(0)-->pi(+)+n or pi(0)+p 
14643        if((iabs(lb(i1)).eq.11.and.lb(i2).eq.26).
14644      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.11).
14645      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.13).
14646      &  or.(lb(i2).eq.26.and.iabs(lb(i1)).eq.13))then
14647               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
14648         ii = i1
14649        IF(X2.LE.0.5)THEN
14650        lb(i1)=2
14651        e(i1)=amn
14652        lb(i2)=5
14653        e(i2)=ap1
14654        go to 40
14655        Else
14656        lb(i1)=1
14657        e(i1)=amn
14658        lb(i2)=4
14659        e(i2)=ap1
14660        go to 40
14661        endif
14662               else
14663         ii = i2
14664        IF(X2.LE.0.5)THEN
14665        lb(i2)=2
14666        e(i2)=amn
14667        lb(i1)=5
14668        e(i1)=ap1
14669        go to 40
14670        Else
14671        lb(i2)=1
14672        e(i2)=amn
14673        lb(i1)=4
14674        e(i1)=ap1
14675        go to 40
14676        endif
14677               endif
14678        endif
14679 *(14) for N*(1440) or N*(1535)(+)+rho(-)-->pi(0)+n or pi(-)+p
14680        if( ((lb(i1).eq.11.and.lb(i2).eq.25).
14681      &  or.(lb(i1).eq.25.and.lb(i2).eq.11).
14682      &  or.(lb(i1).eq.25.and.lb(i2).eq.13).
14683      &  or.(lb(i2).eq.25.and.lb(i1).eq.13))
14684      &        .OR.((lb(i1).eq.-11.and.lb(i2).eq.27).
14685      &  or.(lb(i1).eq.27.and.lb(i2).eq.-11).
14686      &  or.(lb(i1).eq.27.and.lb(i2).eq.-13).
14687      &  or.(lb(i2).eq.27.and.lb(i1).eq.-13)) )then
14688        if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
14689         ii = i1
14690        IF(X2.LE.0.5)THEN
14691        lb(i1)=2
14692        e(i1)=amn
14693        lb(i2)=4
14694        e(i2)=ap1
14695        go to 40
14696        ELSE
14697        lb(i1)=1
14698        e(i1)=amn
14699        lb(i2)=3
14700        e(i2)=ap1
14701        go to 40
14702        endif
14703               else
14704         ii = i2
14705        IF(X2.LE.0.5)THEN
14706        lb(i2)=2
14707        e(i2)=amn
14708        lb(i1)=4
14709        e(i1)=ap1
14710        go to 40
14711        ELSE
14712        lb(i2)=1
14713        e(i2)=amn
14714        lb(i1)=3
14715        e(i1)=ap1
14716        go to 40
14717        endif
14718               endif
14719        ENDIF
14720 *(15) N*(1440) or N*(1535)(0)+rho(+)-->n+pi(+) or p+pi(0)
14721        if( ((lb(i1).eq.10.and.lb(i2).eq.27).
14722      &  or.(lb(i1).eq.27.and.lb(i2).eq.10).
14723      &  or.(lb(i1).eq.12.and.lb(i2).eq.27).
14724      &  or.(lb(i1).eq.27.and.lb(i2).eq.12))
14725      &         .OR.((lb(i1).eq.-10.and.lb(i2).eq.25).
14726      &  or.(lb(i1).eq.25.and.lb(i2).eq.-10).
14727      &  or.(lb(i1).eq.-12.and.lb(i2).eq.25).
14728      &  or.(lb(i1).eq.25.and.lb(i2).eq.-12)) )then
14729        if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
14730         ii = i1
14731        IF(X2.LE.0.5)THEN
14732        lb(i1)=2
14733        e(i1)=amn
14734        lb(i2)=5
14735        e(i2)=ap1
14736        go to 40
14737        else
14738        lb(i1)=1
14739        e(i1)=amn
14740        lb(i2)=4
14741        e(i2)=ap1
14742        go to 40
14743        endif
14744               else
14745         ii = i2
14746        IF(X2.LE.0.5)THEN
14747        lb(i2)=2
14748        e(i2)=amn
14749        lb(i1)=5
14750        e(i1)=ap1
14751        go to 40
14752        Else
14753        lb(i2)=1
14754        e(i2)=amn
14755        lb(i1)=4
14756        e(i1)=ap1
14757        go to 40
14758        endif
14759               endif
14760        ENDIF
14761 *(16) for N*(1440) or N*(1535) (0)+rho(-)-->n+pi(-) 
14762        if( ((lb(i1).eq.10.and.lb(i2).eq.25).
14763      &  or.(lb(i1).eq.25.and.lb(i2).eq.10).
14764      &  or.(lb(i1).eq.25.and.lb(i2).eq.12).
14765      &  or.(lb(i1).eq.12.and.lb(i2).eq.25))
14766      &       .OR. ((lb(i1).eq.-10.and.lb(i2).eq.27).
14767      &  or.(lb(i1).eq.27.and.lb(i2).eq.-10).
14768      &  or.(lb(i1).eq.27.and.lb(i2).eq.-12).
14769      &  or.(lb(i1).eq.-12.and.lb(i2).eq.27)) )then
14770        if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
14771         ii = i1
14772        lb(i1)=2
14773        e(i1)=amn
14774        lb(i2)=3
14775        e(i2)=ap1
14776        go to 40
14777        else
14778         ii = i2
14779        lb(i2)=2
14780        e(i2)=amn
14781        lb(i1)=3
14782        e(i1)=ap1
14783        go to 40
14784        ENDIF
14785        endif
14786 60       IBLOCK=82
14787 * FOR OMEGA REABSORPTION
14788 * Relable particles, I1 is assigned to the Delta 
14789 * and I2 is assigned to the meson
14790 * for the reverse of the following process
14791 *(1) for D(0)+OMEGA(0)-->n+pi(0) or p+pi(-) 
14792        if((iabs(lb(i1)).eq.7.and.lb(i2).eq.28).
14793      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.7))then
14794               if(iabs(lb(i1)).eq.7)then
14795         ii = i1
14796        IF(X2.LE.0.5)THEN
14797        lb(i1)=2
14798        e(i1)=amn
14799        lb(i2)=4
14800        e(i2)=ap1
14801        go to 40
14802        Else
14803        lb(i1)=1
14804        e(i1)=amn
14805        lb(i2)=3
14806        e(i2)=ap1
14807        go to 40
14808        endif
14809               else
14810         ii = i2
14811        IF(X2.LE.0.5)THEN
14812        lb(i2)=2
14813        e(i2)=amn
14814        lb(i1)=4
14815        e(i1)=ap1
14816        go to 40
14817        Else
14818        lb(i2)=1
14819        e(i2)=amn
14820        lb(i1)=3
14821        e(i1)=ap1
14822        go to 40
14823        endif
14824               endif
14825        endif
14826 *(2) for D(+)+OMEGA(0)-->pi(+)+n or pi(0)+p 
14827        if((iabs(lb(i1)).eq.8.and.lb(i2).eq.28).
14828      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.8))then
14829               if(iabs(lb(i1)).eq.8)then
14830         ii = i1
14831        IF(X2.LE.0.5)THEN
14832        lb(i1)=2
14833        e(i1)=amn
14834        lb(i2)=5
14835        e(i2)=ap1
14836        go to 40
14837        Else
14838        lb(i1)=1
14839        e(i1)=amn
14840        lb(i2)=4
14841        e(i2)=ap1
14842        go to 40
14843        endif
14844               else
14845         ii = i2
14846        IF(X2.LE.0.5)THEN
14847        lb(i2)=2
14848        e(i2)=amn
14849        lb(i1)=5
14850        e(i1)=ap1
14851        go to 40
14852        Else
14853        lb(i2)=1
14854        e(i2)=amn
14855        lb(i1)=4
14856        e(i1)=ap1
14857        go to 40
14858        endif
14859               endif
14860        endif
14861 *(3) for D(-)+OMEGA(0)-->n+pi(-) 
14862        if((iabs(lb(i1)).eq.6.and.lb(i2).eq.28).
14863      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.6))then
14864               if(iabs(lb(i1)).eq.6)then
14865         ii = i1
14866        lb(i1)=2
14867        e(i1)=amn
14868        lb(i2)=3
14869        e(i2)=ap1
14870        go to 40
14871        else
14872         ii = i2
14873        lb(i2)=2
14874        e(i2)=amn
14875        lb(i1)=3
14876        e(i1)=ap1
14877        go to 40
14878        ENDIF
14879        endif
14880 *(4) for D(++)+OMEGA(0)-->p+pi(+) 
14881        if((iabs(lb(i1)).eq.9.and.lb(i2).eq.28).
14882      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.9))then
14883               if(iabs(lb(i1)).eq.9)then
14884         ii = i1
14885        lb(i1)=1
14886        e(i1)=amn
14887        lb(i2)=5
14888        e(i2)=ap1
14889        go to 40
14890        else
14891         ii = i2
14892        lb(i2)=1
14893        e(i2)=amn
14894        lb(i1)=5
14895        e(i1)=ap1
14896        go to 40
14897        ENDIF
14898        endif
14899 *(5) for N*(1440) or N*(1535)(0)+omega(0)-->n+pi(0) or p+pi(-) 
14900        if((iabs(lb(i1)).eq.10.and.lb(i2).eq.28).
14901      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.10).
14902      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.12).
14903      &  or.(lb(i2).eq.28.and.iabs(lb(i1)).eq.12))then
14904               if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
14905         ii = i1
14906        IF(X2.LE.0.5)THEN
14907        lb(i1)=2
14908        e(i1)=amn
14909        lb(i2)=4
14910        e(i2)=ap1
14911        go to 40
14912        Else
14913        lb(i1)=1
14914        e(i1)=amn
14915        lb(i2)=3
14916        e(i2)=ap1
14917        go to 40
14918        endif
14919               else
14920         ii = i2
14921        IF(X2.LE.0.5)THEN
14922        lb(i2)=2
14923        e(i2)=amn
14924        lb(i1)=4
14925        e(i1)=ap1
14926        go to 40
14927        Else
14928        lb(i2)=1
14929        e(i2)=amn
14930        lb(i1)=3
14931        e(i1)=ap1
14932        go to 40
14933        endif
14934               endif
14935        endif
14936 *(6) for N*(1440) or N*(1535)(+)+omega(0)-->pi(+)+n or pi(0)+p 
14937        if((iabs(lb(i1)).eq.11.and.lb(i2).eq.28).
14938      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.11).
14939      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.13).
14940      &  or.(lb(i2).eq.28.and.iabs(lb(i1)).eq.13))then
14941               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
14942         ii = i1
14943        IF(X2.LE.0.5)THEN
14944        lb(i1)=2
14945        e(i1)=amn
14946        lb(i2)=5
14947        e(i2)=ap1
14948        go to 40
14949        Else
14950        lb(i1)=1
14951        e(i1)=amn
14952        lb(i2)=4
14953        e(i2)=ap1
14954        go to 40
14955        endif
14956               else
14957         ii = i2
14958        IF(X2.LE.0.5)THEN
14959        lb(i2)=2
14960        e(i2)=amn
14961        lb(i1)=5
14962        e(i1)=ap1
14963        go to 40
14964        Else
14965        lb(i2)=1
14966        e(i2)=amn
14967        lb(i1)=4
14968        e(i1)=ap1
14969        go to 40
14970        endif
14971               endif
14972        endif
14973 40       em1=e(i1)
14974        em2=e(i2)
14975        if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
14976          lb(ii) = -lb(ii)
14977            jj = i2
14978           if(ii .eq. i2)jj = i1
14979           if(lb(jj).eq.3)then
14980            lb(jj) = 5
14981           elseif(lb(jj).eq.5)then
14982            lb(jj) = 3
14983           endif
14984          endif
14985        endif
14986 *-----------------------------------------------------------------------
14987 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
14988 * ENERGY CONSERVATION
14989 50          PR2   = (SRT**2 - EM1**2 - EM2**2)**2
14990      1                - 4.0 * (EM1*EM2)**2
14991           IF(PR2.LE.0.)PR2=1.E-09
14992           PR=SQRT(PR2)/(2.*SRT)
14993 *          C1   = 1.0 - 2.0 * RANART(NSEED)
14994
14995 clin-10/25/02 get rid of argument usage mismatch in PTR():
14996           xptr=0.33*pr
14997 c         cc1=ptr(0.33*pr,iseed)
14998          cc1=ptr(xptr,iseed)
14999 clin-10/25/02-end
15000
15001          c1=sqrt(pr**2-cc1**2)/pr
15002           T1   = 2.0 * PI * RANART(NSEED)
15003       S1   = SQRT( 1.0 - C1**2 )
15004       CT1  = COS(T1)
15005       ST1  = SIN(T1)
15006       PZ   = PR * C1
15007       PX   = PR * S1*CT1 
15008       PY   = PR * S1*ST1 
15009 * ROTATE THE MOMENTUM
15010        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ)
15011       RETURN
15012       END
15013 **********************************
15014 * sp 03/19/01                                                          *
15015 *                                                                      *
15016         SUBROUTINE Crlaba(PX,PY,PZ,SRT,brel,brsgm,
15017      &                        I1,I2,nt,IBLOCK,nchrg,icase)
15018 *     PURPOSE:                                                         *
15019 *            DEALING WITH   K+ + N(D,N*)-bar <-->  La(Si)-bar + pi     *
15020 *     NOTE   :                                                         *
15021 *                                                                      *
15022 *     QUANTITIES:                                                 *
15023 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15024 *           SRT      - SQRT OF S                                       *
15025 *           IBLOCK   - THE INFORMATION BACK                            *
15026 *                     8-> elastic scatt                               *
15027 *                     100-> K+ + N-bar -> Sigma-bar + PI
15028 *                     102-> PI + Sigma(Lambda)-bar -> K+ + N-bar
15029 **********************************
15030         PARAMETER (MAXSTR=150001, MAXR=1, AMN=0.939457,
15031      1  AMP=0.93828,AP1=0.13496,
15032      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15033         PARAMETER  (AKA=0.498,ALA=1.1157,ASA=1.1974)
15034         PARAMETER  (ETAM=0.5475, AOMEGA=0.782, ARHO=0.77)
15035         COMMON /AA/ R(3,MAXSTR)
15036 cc      SAVE /AA/
15037         COMMON /BB/ P(3,MAXSTR)
15038 cc      SAVE /BB/
15039         COMMON /CC/ E(MAXSTR)
15040 cc      SAVE /CC/
15041         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15042 cc      SAVE /EE/
15043         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15044 cc      SAVE /input1/
15045       COMMON/RNDF77/NSEED
15046 cc      SAVE /RNDF77/
15047       SAVE   
15048       NT=NT
15049 c
15050       PX0=PX
15051       PY0=PY
15052       PZ0=PZ
15053 c
15054       if(icase .eq. 3)then
15055          rrr=RANART(NSEED)
15056          if(rrr.lt.brel) then
15057 c            !! elastic scat.  (avoid in reverse process)
15058             IBLOCK=8
15059         else 
15060             IBLOCK=100
15061             if(rrr.lt.(brel+brsgm)) then
15062 c*    K+ + N-bar -> Sigma-bar + PI
15063                LB(i1) = -15 - int(3 * RANART(NSEED))
15064
15065                e(i1)=asa
15066             else
15067 c*    K+ + N-bar -> Lambda-bar + PI
15068                LB(i1)= -14  
15069                e(i1)=ala
15070             endif
15071             LB(i2) = 3 + int(3 * RANART(NSEED))
15072             e(i2)=0.138
15073         endif
15074       endif
15075 c
15076 c
15077       if(icase .eq. 4)then
15078          rrr=RANART(NSEED)
15079          if(rrr.lt.brel) then
15080 c            !! elastic scat.
15081             IBLOCK=8
15082          else    
15083             IBLOCK=102
15084 c    PI + Sigma(Lambda)-bar -> K+ + N-bar
15085 c         ! K+
15086             LB(i1) = 23
15087             LB(i2) = -1 - int(2 * RANART(NSEED))
15088             if(nchrg.eq.-2) LB(i2) = -6
15089             if(nchrg.eq. 1) LB(i2) = -9
15090             e(i1) = aka
15091             e(i2) = 0.938
15092             if(nchrg.eq.-2.or.nchrg.eq.1) e(i2)=1.232
15093          endif
15094       endif
15095 c
15096       EM1=E(I1)
15097       EM2=E(I2)
15098 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15099 * ENERGY CONSERVATION
15100       PR2   = (SRT**2 - EM1**2 - EM2**2)**2
15101      1     - 4.0 * (EM1*EM2)**2
15102       IF(PR2.LE.0.)PR2=1.e-09
15103       PR=SQRT(PR2)/(2.*SRT)
15104       C1   = 1.0 - 2.0 * RANART(NSEED)
15105       T1   = 2.0 * PI * RANART(NSEED)
15106       S1   = SQRT( 1.0 - C1**2 )
15107       CT1  = COS(T1)
15108       ST1  = SIN(T1)
15109       PZ   = PR * C1
15110       PX   = PR * S1*CT1 
15111       PY   = PR * S1*ST1
15112 * ROTATE IT 
15113       CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
15114       RETURN
15115       END
15116 **********************************
15117 *                                                                      *
15118 *                                                                      *
15119       SUBROUTINE Crkn(PX,PY,PZ,SRT,I1,I2,IBLOCK)
15120 *     PURPOSE:                                                         *
15121 *             DEALING WITH kaON+N/pi-->KAON +N/pi elastic PROCESS      *
15122 *     NOTE   :                                                         *
15123 *          
15124 *     QUANTITIES:                                                 *
15125 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15126 *           SRT      - SQRT OF S                                       *
15127 *           IBLOCK   - THE INFORMATION BACK                            *
15128 *                     8-> PION+N-->L/S+KAON
15129 **********************************
15130         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15131      1  AMP=0.93828,AP1=0.13496,
15132      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15133         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
15134         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15135         COMMON /AA/ R(3,MAXSTR)
15136 cc      SAVE /AA/
15137         COMMON /BB/ P(3,MAXSTR)
15138 cc      SAVE /BB/
15139         COMMON /CC/ E(MAXSTR)
15140 cc      SAVE /CC/
15141         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15142 cc      SAVE /EE/
15143         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15144 cc      SAVE /input1/
15145       COMMON/RNDF77/NSEED
15146 cc      SAVE /RNDF77/
15147       SAVE   
15148
15149        PX0=PX
15150        PY0=PY
15151        PZ0=PZ
15152 *-----------------------------------------------------------------------
15153         IBLOCK=8
15154         NTAG=0
15155         EM1=E(I1)
15156         EM2=E(I2)
15157 *-----------------------------------------------------------------------
15158 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15159 * ENERGY CONSERVATION
15160           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
15161      1                - 4.0 * (EM1*EM2)**2
15162           IF(PR2.LE.0.)PR2=1.e-09
15163           PR=SQRT(PR2)/(2.*SRT)
15164           C1   = 1.0 - 2.0 * RANART(NSEED)
15165           T1   = 2.0 * PI * RANART(NSEED)
15166       S1   = SQRT( 1.0 - C1**2 )
15167       CT1  = COS(T1)
15168       ST1  = SIN(T1)
15169       PZ   = PR * C1
15170       PX   = PR * S1*CT1 
15171       PY   = PR * S1*ST1
15172       RETURN
15173       END
15174 **********************************
15175 *                                                                      *
15176 *                                                                      *
15177       SUBROUTINE Crppba(PX,PY,PZ,SRT,I1,I2,IBLOCK)
15178 *     PURPOSE:                                                         *
15179
15180 clin-8/29/00*             DEALING WITH anti-nucleon annihilation with 
15181 *             DEALING WITH anti-baryon annihilation with 
15182
15183 *             nucleons or baryon resonances
15184 *             Determine:                                               *
15185 *             (1) no. of pions in the final state
15186 *             (2) relable particles in the final state
15187 *             (3) new momenta of final state particles                 *
15188 *                  
15189 *     QUANTITIES:                                                      *
15190 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15191 *           SRT      - SQRT OF S                                       *
15192 *           IBLOCK   - INFORMATION about the reaction channel          *
15193 *                
15194 *           iblock   - 1902 annihilation-->pion(+)+pion(-)   (2 pion)
15195 *           iblock   - 1903 annihilation-->pion(+)+rho(-)    (3 pion)
15196 *           iblock   - 1904 annihilation-->rho(+)+rho(-)     (4 pion)
15197 *           iblock   - 1905 annihilation-->rho(0)+omega      (5 pion)
15198 *           iblock   - 1906 annihilation-->omega+omega       (6 pion)
15199 *       charge conservation is enforced in relabling particles 
15200 *       in the final state (note: at the momentum we don't check the
15201 *       initial charges while dealing with annihilation, since some
15202 *       annihilation channels between antinucleons and nucleons (baryon
15203 *       resonances) might be forbiden by charge conservation, this effect
15204 *       should be small, but keep it in mind.
15205 **********************************
15206         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15207      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,
15208      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15209         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
15210         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15211         COMMON /AA/ R(3,MAXSTR)
15212 cc      SAVE /AA/
15213         COMMON /BB/ P(3,MAXSTR)
15214 cc      SAVE /BB/
15215         COMMON /CC/ E(MAXSTR)
15216 cc      SAVE /CC/
15217         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15218 cc      SAVE /EE/
15219         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15220 cc      SAVE /input1/
15221       COMMON/RNDF77/NSEED
15222 cc      SAVE /RNDF77/
15223       SAVE   
15224
15225        PX0=PX
15226        PY0=PY
15227        PZ0=PZ
15228 * determine the no. of pions in the final state using a 
15229 * statistical model
15230        call pbarfs(srt,npion,iseed)
15231 * find the masses of the final state particles before calculate 
15232 * their momenta, and relable them. The masses of rho and omega 
15233 * will be generated according to the Breit Wigner formula       (NOTE!!!
15234 * NOT DONE YET, AT THE MOMENT LET US USE FIXED RHO AND OMEGA MAEES)
15235 cbali2/22/99
15236 * Here we generate two stes of integer random numbers (3,4,5)
15237 * one or both of them are used directly as the lables of pions
15238 * similarly, 22+nchrg1 and 22+nchrg2 are used directly 
15239 * to label rhos  
15240        nchrg1=3+int(3*RANART(NSEED))
15241        nchrg2=3+int(3*RANART(NSEED))
15242 * the corresponding masses of pions
15243       pmass1=ap1
15244        pmass2=ap1
15245        if(nchrg1.eq.3.or.nchrg1.eq.5)pmass1=ap2
15246        if(nchrg2.eq.3.or.nchrg2.eq.5)pmass2=ap2
15247 * (1) for 2 pion production
15248        IF(NPION.EQ.2)THEN 
15249        IBLOCK=1902
15250 * randomly generate the charges of final state particles,
15251        LB(I1)=nchrg1
15252        E(I1)=pmass1
15253        LB(I2)=nchrg2
15254        E(I2)=pmass2
15255 * TO CALCULATE THE FINAL MOMENTA
15256        GO TO 50
15257        ENDIF
15258 * (2) FOR 3 PION PRODUCTION
15259        IF(NPION.EQ.3)THEN 
15260        IBLOCK=1903
15261        LB(I1)=nchrg1
15262        E(I1)=pmass1
15263        LB(I2)=22+nchrg2
15264             E(I2)=AMRHO
15265        GO TO 50
15266        ENDIF
15267 * (3) FOR 4 PION PRODUCTION
15268 * we allow both rho+rho and pi+omega with 50-50% probability
15269         IF(NPION.EQ.4)THEN 
15270        IBLOCK=1904
15271 * determine rho+rho or pi+omega
15272        if(RANART(NSEED).ge.0.5)then
15273 * rho+rho  
15274        LB(I1)=22+nchrg1
15275        E(I1)=AMRHO
15276        LB(I2)=22+nchrg2
15277             E(I2)=AMRHO
15278        else
15279 * pion+omega
15280        LB(I1)=nchrg1
15281        E(I1)=pmass1
15282        LB(I2)=28
15283             E(I2)=AMOMGA
15284        endif
15285        GO TO 50
15286        ENDIF
15287 * (4) FOR 5 PION PRODUCTION
15288         IF(NPION.EQ.5)THEN 
15289        IBLOCK=1905
15290 * RHO AND OMEGA
15291         LB(I1)=22+nchrg1
15292        E(I1)=AMRHO
15293        LB(I2)=28
15294        E(I2)=AMOMGA
15295        GO TO 50
15296        ENDIF
15297 * (5) FOR 6 PION PRODUCTION
15298          IF(NPION.EQ.6)THEN 
15299        IBLOCK=1906
15300 * OMEGA AND OMEGA
15301         LB(I1)=28
15302        E(I1)=AMOMGA
15303        LB(I2)=28
15304           E(I2)=AMOMGA
15305        ENDIF
15306 cbali2/22/99
15307 50    EM1=E(I1)
15308       EM2=E(I2)
15309 *-----------------------------------------------------------------------
15310 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15311 * ENERGY CONSERVATION
15312           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
15313      1                - 4.0 * (EM1*EM2)**2
15314           IF(PR2.LE.0.)PR2=1.E-08
15315           PR=SQRT(PR2)/(2.*SRT)
15316 * WE ASSUME AN ISOTROPIC ANGULAR DISTRIBUTION IN THE CMS 
15317           C1   = 1.0 - 2.0 * RANART(NSEED)
15318           T1   = 2.0 * PI * RANART(NSEED)
15319       S1   = SQRT( 1.0 - C1**2 )
15320       CT1  = COS(T1)
15321       ST1  = SIN(T1)
15322 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
15323       PZ   = PR * C1
15324       PX   = PR * S1*CT1 
15325       PY   = PR * S1*ST1
15326 * ROTATE IT 
15327        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
15328       RETURN
15329       END
15330 cbali2/7/99end
15331 cbali3/5/99
15332 **********************************
15333 *     PURPOSE:                                                         *
15334 *     assign final states for K+K- --> light mesons
15335 *
15336       SUBROUTINE crkkpi(I1,I2,XSK1, XSK2, XSK3, XSK4,
15337      &             XSK5, XSK6, XSK7, XSK8, XSK9, XSK10, XSK11, SIGK,
15338      &             IBLOCK,lbp1,lbp2,emm1,emm2)
15339 *
15340 *     QUANTITIES:                                                     *
15341 *           IBLOCK   - INFORMATION about the reaction channel          *
15342 *                
15343 *             iblock   - 1907
15344 **********************************
15345         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15346      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,
15347      &  AMETA = 0.5473,
15348      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15349         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
15350         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15351         COMMON /AA/ R(3,MAXSTR)
15352 cc      SAVE /AA/
15353         COMMON /BB/ P(3,MAXSTR)
15354 cc      SAVE /BB/
15355         COMMON /CC/ E(MAXSTR)
15356 cc      SAVE /CC/
15357         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15358 cc      SAVE /EE/
15359         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15360 cc      SAVE /input1/
15361       COMMON/RNDF77/NSEED
15362 cc      SAVE /RNDF77/
15363       SAVE   
15364  
15365         XSK11=XSK11
15366         IBLOCK=1907
15367         X1 = RANART(NSEED) * SIGK
15368         XSK2 = XSK1 + XSK2
15369         XSK3 = XSK2 + XSK3
15370         XSK4 = XSK3 + XSK4
15371         XSK5 = XSK4 + XSK5
15372         XSK6 = XSK5 + XSK6
15373         XSK7 = XSK6 + XSK7
15374         XSK8 = XSK7 + XSK8
15375         XSK9 = XSK8 + XSK9
15376         XSK10 = XSK9 + XSK10
15377         IF (X1 .LE. XSK1) THEN
15378            LB(I1) = 3 + int(3 * RANART(NSEED))
15379            LB(I2) = 3 + int(3 * RANART(NSEED))
15380            E(I1) = AP2
15381            E(I2) = AP2
15382            GOTO 100
15383         ELSE IF (X1 .LE. XSK2) THEN
15384            LB(I1) = 3 + int(3 * RANART(NSEED))
15385            LB(I2) = 25 + int(3 * RANART(NSEED))
15386            E(I1) = AP2
15387            E(I2) = AMRHO
15388            GOTO 100
15389         ELSE IF (X1 .LE. XSK3) THEN
15390            LB(I1) = 3 + int(3 * RANART(NSEED))
15391            LB(I2) = 28
15392            E(I1) = AP2
15393            E(I2) = AMOMGA
15394            GOTO 100
15395         ELSE IF (X1 .LE. XSK4) THEN
15396            LB(I1) = 3 + int(3 * RANART(NSEED))
15397            LB(I2) = 0
15398            E(I1) = AP2
15399            E(I2) = AMETA
15400            GOTO 100
15401         ELSE IF (X1 .LE. XSK5) THEN
15402            LB(I1) = 25 + int(3 * RANART(NSEED))
15403            LB(I2) = 25 + int(3 * RANART(NSEED))
15404            E(I1) = AMRHO
15405            E(I2) = AMRHO
15406            GOTO 100
15407         ELSE IF (X1 .LE. XSK6) THEN
15408            LB(I1) = 25 + int(3 * RANART(NSEED))
15409            LB(I2) = 28
15410            E(I1) = AMRHO
15411            E(I2) = AMOMGA
15412            GOTO 100
15413         ELSE IF (X1 .LE. XSK7) THEN
15414            LB(I1) = 25 + int(3 * RANART(NSEED))
15415            LB(I2) = 0
15416            E(I1) = AMRHO
15417            E(I2) = AMETA
15418            GOTO 100
15419         ELSE IF (X1 .LE. XSK8) THEN
15420            LB(I1) = 28
15421            LB(I2) = 28
15422            E(I1) = AMOMGA
15423            E(I2) = AMOMGA
15424            GOTO 100
15425         ELSE IF (X1 .LE. XSK9) THEN
15426            LB(I1) = 28
15427            LB(I2) = 0
15428            E(I1) = AMOMGA
15429            E(I2) = AMETA
15430            GOTO 100
15431         ELSE IF (X1 .LE. XSK10) THEN
15432            LB(I1) = 0
15433            LB(I2) = 0
15434            E(I1) = AMETA
15435            E(I2) = AMETA
15436         ELSE
15437           iblock = 222
15438           call rhores(i1,i2)
15439 c     !! phi
15440           lb(i1) = 29
15441 c          return
15442           e(i2)=0.
15443         END IF
15444
15445  100    CONTINUE
15446         lbp1=lb(i1)
15447         lbp2=lb(i2)
15448         emm1=e(i1)
15449         emm2=e(i2)
15450
15451       RETURN
15452       END
15453 **********************************
15454 *     PURPOSE:                                                         *
15455 *             DEALING WITH K+Y -> piN scattering
15456 *
15457       SUBROUTINE Crkhyp(PX,PY,PZ,SRT,I1,I2,
15458      &     XKY1, XKY2, XKY3, XKY4, XKY5,
15459      &     XKY6, XKY7, XKY8, XKY9, XKY10, XKY11, XKY12, XKY13,
15460      &     XKY14, XKY15, XKY16, XKY17, SIGK, IKMP,
15461      &     IBLOCK)
15462 *
15463 *             Determine:                                               *
15464 *             (1) relable particles in the final state                 *
15465 *             (2) new momenta of final state particles                 *
15466 *                                                                        *
15467 *     QUANTITIES:                                                    *
15468 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15469 *           SRT      - SQRT OF S                                       *
15470 *           IBLOCK   - INFORMATION about the reaction channel          *
15471 *                                                                     *
15472 *             iblock   - 1908                                          *
15473 *             iblock   - 222   !! phi                                  *
15474 **********************************
15475         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15476      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,APHI=1.02,
15477      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15478           parameter (pimass=0.140, AMETA = 0.5473, aka=0.498,
15479      &     aml=1.116,ams=1.193, AM1440 = 1.44, AM1535 = 1.535)
15480         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15481         COMMON /AA/ R(3,MAXSTR)
15482 cc      SAVE /AA/
15483         COMMON /BB/ P(3,MAXSTR)
15484 cc      SAVE /BB/
15485         COMMON /CC/ E(MAXSTR)
15486 cc      SAVE /CC/
15487         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15488 cc      SAVE /EE/
15489         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15490 cc      SAVE /input1/
15491       COMMON/RNDF77/NSEED
15492 cc      SAVE /RNDF77/
15493       SAVE   
15494
15495        XKY17=XKY17
15496        PX0=PX
15497        PY0=PY
15498        PZ0=PZ
15499        IBLOCK=1908
15500 c
15501         X1 = RANART(NSEED) * SIGK
15502         XKY2 = XKY1 + XKY2
15503         XKY3 = XKY2 + XKY3
15504         XKY4 = XKY3 + XKY4
15505         XKY5 = XKY4 + XKY5
15506         XKY6 = XKY5 + XKY6
15507         XKY7 = XKY6 + XKY7
15508         XKY8 = XKY7 + XKY8
15509         XKY9 = XKY8 + XKY9
15510         XKY10 = XKY9 + XKY10
15511         XKY11 = XKY10 + XKY11
15512         XKY12 = XKY11 + XKY12
15513         XKY13 = XKY12 + XKY13
15514         XKY14 = XKY13 + XKY14
15515         XKY15 = XKY14 + XKY15
15516         XKY16 = XKY15 + XKY16
15517         IF (X1 .LE. XKY1) THEN
15518            LB(I1) = 3 + int(3 * RANART(NSEED))
15519            LB(I2) = 1 + int(2 * RANART(NSEED))
15520            E(I1) = PIMASS
15521            E(I2) = AMP
15522            GOTO 100
15523         ELSE IF (X1 .LE. XKY2) THEN
15524            LB(I1) = 3 + int(3 * RANART(NSEED))
15525            LB(I2) = 6 + int(4 * RANART(NSEED))
15526            E(I1) = PIMASS
15527            E(I2) = AM0
15528            GOTO 100
15529         ELSE IF (X1 .LE. XKY3) THEN
15530            LB(I1) = 3 + int(3 * RANART(NSEED))
15531            LB(I2) = 10 + int(2 * RANART(NSEED))
15532            E(I1) = PIMASS
15533            E(I2) = AM1440
15534            GOTO 100
15535         ELSE IF (X1 .LE. XKY4) THEN
15536            LB(I1) = 3 + int(3 * RANART(NSEED))
15537            LB(I2) = 12 + int(2 * RANART(NSEED))
15538            E(I1) = PIMASS
15539            E(I2) = AM1535
15540            GOTO 100
15541         ELSE IF (X1 .LE. XKY5) THEN
15542            LB(I1) = 25 + int(3 * RANART(NSEED))
15543            LB(I2) = 1 + int(2 * RANART(NSEED))
15544            E(I1) = AMRHO
15545            E(I2) = AMP
15546            GOTO 100
15547         ELSE IF (X1 .LE. XKY6) THEN
15548            LB(I1) = 25 + int(3 * RANART(NSEED))
15549            LB(I2) = 6 + int(4 * RANART(NSEED))
15550            E(I1) = AMRHO
15551            E(I2) = AM0
15552            GOTO 100
15553         ELSE IF (X1 .LE. XKY7) THEN
15554            LB(I1) = 25 + int(3 * RANART(NSEED))
15555            LB(I2) = 10 + int(2 * RANART(NSEED))
15556            E(I1) = AMRHO
15557            E(I2) = AM1440
15558            GOTO 100
15559         ELSE IF (X1 .LE. XKY8) THEN
15560            LB(I1) = 25 + int(3 * RANART(NSEED))
15561            LB(I2) = 12 + int(2 * RANART(NSEED))
15562            E(I1) = AMRHO
15563            E(I2) = AM1535
15564            GOTO 100
15565         ELSE IF (X1 .LE. XKY9) THEN
15566            LB(I1) = 28
15567            LB(I2) = 1 + int(2 * RANART(NSEED))
15568            E(I1) = AMOMGA
15569            E(I2) = AMP
15570            GOTO 100
15571         ELSE IF (X1 .LE. XKY10) THEN
15572            LB(I1) = 28
15573            LB(I2) = 6 + int(4 * RANART(NSEED))
15574            E(I1) = AMOMGA
15575            E(I2) = AM0
15576            GOTO 100
15577         ELSE IF (X1 .LE. XKY11) THEN
15578            LB(I1) = 28
15579            LB(I2) = 10 + int(2 * RANART(NSEED))
15580            E(I1) = AMOMGA
15581            E(I2) = AM1440
15582            GOTO 100
15583         ELSE IF (X1 .LE. XKY12) THEN
15584            LB(I1) = 28
15585            LB(I2) = 12 + int(2 * RANART(NSEED))
15586            E(I1) = AMOMGA
15587            E(I2) = AM1535
15588            GOTO 100
15589         ELSE IF (X1 .LE. XKY13) THEN
15590            LB(I1) = 0
15591            LB(I2) = 1 + int(2 * RANART(NSEED))
15592            E(I1) = AMETA
15593            E(I2) = AMP
15594            GOTO 100
15595         ELSE IF (X1 .LE. XKY14) THEN
15596            LB(I1) = 0
15597            LB(I2) = 6 + int(4 * RANART(NSEED))
15598            E(I1) = AMETA
15599            E(I2) = AM0
15600            GOTO 100
15601         ELSE IF (X1 .LE. XKY15) THEN
15602            LB(I1) = 0
15603            LB(I2) = 10 + int(2 * RANART(NSEED))
15604            E(I1) = AMETA
15605            E(I2) = AM1440
15606            GOTO 100
15607         ELSE IF (X1 .LE. XKY16) THEN
15608            LB(I1) = 0
15609            LB(I2) = 12 + int(2 * RANART(NSEED))
15610            E(I1) = AMETA
15611            E(I2) = AM1535
15612            GOTO 100
15613         ELSE
15614            LB(I1) = 29
15615            LB(I2) = 1 + int(2 * RANART(NSEED))
15616            E(I1) = APHI
15617            E(I2) = AMN
15618           IBLOCK=222
15619            GOTO 100
15620         END IF
15621
15622  100    CONTINUE
15623          if(IKMP .eq. -1) LB(I2) = -LB(I2)
15624
15625       EM1=E(I1)
15626       EM2=E(I2)
15627 *-----------------------------------------------------------------------
15628 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15629 * ENERGY CONSERVATION
15630           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
15631      1                - 4.0 * (EM1*EM2)**2
15632           IF(PR2.LE.0.)PR2=1.E-08
15633           PR=SQRT(PR2)/(2.*SRT)
15634 * WE ASSUME AN ISOTROPIC ANGULAR DISTRIBUTION IN THE CMS 
15635           C1   = 1.0 - 2.0 * RANART(NSEED)
15636           T1   = 2.0 * PI * RANART(NSEED)
15637       S1   = SQRT( 1.0 - C1**2 )
15638       CT1  = COS(T1)
15639       ST1  = SIN(T1)
15640 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
15641       PZ   = PR * C1
15642       PX   = PR * S1*CT1 
15643       PY   = PR * S1*ST1
15644 * ROTATE IT 
15645        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
15646       RETURN
15647       END
15648 **********************************
15649 *                                                                      *
15650 *                                                                      *
15651       SUBROUTINE CRLAN(PX,PY,PZ,SRT,I1,I2,IBLOCK)
15652 *     PURPOSE:                                                         *
15653 *      DEALING WITH La/Si-bar + N --> K+ + pi PROCESS                  *
15654 *                   La/Si + N-bar --> K- + pi                          *
15655 *     NOTE   :                                                         *
15656 *
15657 *     QUANTITIES:                                                      *
15658 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15659 *           SRT      - SQRT OF S                                       *
15660 *           IBLOCK   - THE INFORMATION BACK                            *
15661 *                      71
15662 **********************************
15663         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15664      1  AMP=0.93828,AP1=0.13496,
15665      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15666         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
15667         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15668         COMMON /AA/ R(3,MAXSTR)
15669 cc      SAVE /AA/
15670         COMMON /BB/ P(3,MAXSTR)
15671 cc      SAVE /BB/
15672         COMMON /CC/ E(MAXSTR)
15673 cc      SAVE /CC/
15674         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15675 cc      SAVE /EE/
15676         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15677 cc      SAVE /input1/
15678       COMMON/RNDF77/NSEED
15679 cc      SAVE /RNDF77/
15680       SAVE   
15681
15682         PX0=PX
15683         PY0=PY                                                          
15684         PZ0=PZ
15685         IBLOCK=71
15686         NTAG=0
15687        if( (lb(i1).ge.14.and.lb(i1).le.17) .OR.
15688      &     (lb(i2).ge.14.and.lb(i2).le.17) )then
15689         LB(I1)=21
15690        else
15691         LB(I1)=23
15692        endif
15693         LB(I2)= 3 + int(3 * RANART(NSEED))
15694         E(I1)=AKA
15695         E(I2)=0.138
15696         EM1=E(I1)
15697         EM2=E(I2)
15698 *-----------------------------------------------------------------------
15699 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15700 * ENERGY CONSERVATION
15701         PR2   = (SRT**2 - EM1**2 - EM2**2)**2
15702      1                - 4.0 * (EM1*EM2)**2
15703           IF(PR2.LE.0.)PR2=1.e-09
15704           PR=SQRT(PR2)/(2.*SRT)
15705           C1   = 1.0 - 2.0 * RANART(NSEED)
15706           T1   = 2.0 * PI * RANART(NSEED)
15707       S1   = SQRT( 1.0 - C1**2 )
15708       CT1  = COS(T1)
15709       ST1  = SIN(T1)
15710 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
15711       PZ   = PR * C1
15712       PX   = PR * S1*CT1
15713       PY   = PR * S1*ST1
15714 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
15715       RETURN
15716       END
15717 csp11/03/01 end
15718 ********************************** 
15719 **********************************
15720 *                                                                      *
15721 *                                                                      *
15722         SUBROUTINE Crkpla(PX,PY,PZ,EC,SRT,spika,
15723      &                  emm1,emm2,lbp1,lbp2,I1,I2,icase,srhoks)
15724  
15725 *     PURPOSE:                                                         *
15726 *     DEALING WITH  K+ + Pi ---> La/Si-bar + B, phi+K, phi+K* OR  K* *
15727 *                   K- + Pi ---> La/Si + B-bar  OR   K*-bar          *
15728  
15729 *     NOTE   :                                                         *
15730 *
15731 *     QUANTITIES:                                                      *
15732 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15733 *           SRT      - SQRT OF S                                       *
15734 *           IBLOCK   - THE INFORMATION BACK                            *
15735 *                      71
15736 **********************************
15737         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15738      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,AMRHO=0.769,AMOMGA=0.782,
15739      2  AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15740         PARAMETER (AKA=0.498,AKS=0.895,ALA=1.1157,ASA=1.1974
15741      1 ,APHI=1.02)
15742         PARAMETER (AM1440 = 1.44, AM1535 = 1.535)
15743         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15744         COMMON /AA/ R(3,MAXSTR)
15745 cc      SAVE /AA/
15746         COMMON /BB/ P(3,MAXSTR)
15747 cc      SAVE /BB/
15748         COMMON /CC/ E(MAXSTR)
15749 cc      SAVE /CC/
15750         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15751 cc      SAVE /EE/
15752         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15753 cc      SAVE /input1/
15754       COMMON/RNDF77/NSEED
15755 cc      SAVE /RNDF77/
15756       SAVE   
15757
15758           emm1=0.
15759           emm2=0.
15760           lbp1=0
15761           lbp2=0
15762            XKP0 = spika
15763            XKP1 = 0.
15764            XKP2 = 0.
15765            XKP3 = 0.
15766            XKP4 = 0.
15767            XKP5 = 0.
15768            XKP6 = 0.
15769            XKP7 = 0.
15770            XKP8 = 0.
15771            XKP9 = 0.
15772            XKP10 = 0.
15773            sigm = 15.
15774 c         if(lb(i1).eq.21.or.lb(i2).eq.21)sigm=10.
15775         pdd = (srt**2-(aka+ap1)**2)*(srt**2-(aka-ap1)**2)
15776 c
15777          if(srt .lt. (ala+amn))go to 70
15778         XKP1 = sigm*(4./3.)*(srt**2-(ala+amn)**2)*
15779      &           (srt**2-(ala-amn)**2)/pdd
15780          if(srt .gt. (ala+am0))then
15781         XKP2 = sigm*(16./3.)*(srt**2-(ala+am0)**2)*
15782      &           (srt**2-(ala-am0)**2)/pdd
15783          endif
15784          if(srt .gt. (ala+am1440))then
15785         XKP3 = sigm*(4./3.)*(srt**2-(ala+am1440)**2)*
15786      &           (srt**2-(ala-am1440)**2)/pdd
15787          endif
15788          if(srt .gt. (ala+am1535))then
15789         XKP4 = sigm*(4./3.)*(srt**2-(ala+am1535)**2)*
15790      &           (srt**2-(ala-am1535)**2)/pdd
15791          endif
15792 c
15793          if(srt .gt. (asa+amn))then
15794         XKP5 = sigm*4.*(srt**2-(asa+amn)**2)*
15795      &           (srt**2-(asa-amn)**2)/pdd
15796          endif
15797          if(srt .gt. (asa+am0))then
15798         XKP6 = sigm*16.*(srt**2-(asa+am0)**2)*
15799      &           (srt**2-(asa-am0)**2)/pdd
15800          endif
15801          if(srt .gt. (asa+am1440))then
15802         XKP7 = sigm*4.*(srt**2-(asa+am1440)**2)*
15803      &           (srt**2-(asa-am1440)**2)/pdd
15804          endif
15805          if(srt .gt. (asa+am1535))then
15806         XKP8 = sigm*4.*(srt**2-(asa+am1535)**2)*
15807      &           (srt**2-(asa-am1535)**2)/pdd
15808          endif
15809 70     continue
15810           sig1 = 195.639
15811           sig2 = 372.378
15812        if(srt .gt. aphi+aka)then
15813         pff = sqrt((srt**2-(aphi+aka)**2)*(srt**2-(aphi-aka)**2))
15814          XKP9 = sig1*pff/sqrt(pdd)*1./32./pi/srt**2
15815         if(srt .gt. aphi+aks)then
15816         pff = sqrt((srt**2-(aphi+aks)**2)*(srt**2-(aphi-aks)**2))
15817          XKP10 = sig2*pff/sqrt(pdd)*3./32./pi/srt**2
15818        endif
15819         endif
15820
15821 clin-8/15/02 K pi -> K* (rho omega), from detailed balance, 
15822 c neglect rho and omega mass difference for now:
15823         sigpik=0.
15824         if(srt.gt.(amrho+aks)) then
15825            sigpik=srhoks*9.
15826      1          *(srt**2-(0.77-aks)**2)*(srt**2-(0.77+aks)**2)/4
15827      2          /srt**2/(px**2+py**2+pz**2)
15828            if(srt.gt.(amomga+aks)) sigpik=sigpik*12./9.
15829         endif
15830
15831 c
15832          sigkp = XKP0 + XKP1 + XKP2 + XKP3 + XKP4
15833      &         + XKP5 + XKP6 + XKP7 + XKP8 + XKP9 + XKP10 +sigpik
15834            icase = 0 
15835          DSkn=SQRT(sigkp/PI/10.)
15836         dsknr=dskn+0.1
15837         CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
15838      1  PX,PY,PZ)
15839         IF(IC.EQ.-1)return
15840 c
15841         randu = RANART(NSEED)*sigkp
15842         XKP1 = XKP0 + XKP1
15843         XKP2 = XKP1 + XKP2
15844         XKP3 = XKP2 + XKP3
15845         XKP4 = XKP3 + XKP4
15846         XKP5 = XKP4 + XKP5
15847         XKP6 = XKP5 + XKP6
15848         XKP7 = XKP6 + XKP7
15849         XKP8 = XKP7 + XKP8
15850         XKP9 = XKP8 + XKP9
15851
15852         XKP10 = XKP9 + XKP10
15853 c
15854 c   !! K* formation
15855          if(randu .le. XKP0)then
15856            icase = 1
15857             return
15858          else
15859 * La/Si-bar + B formation
15860            icase = 2
15861          if( randu .le. XKP1 )then
15862              lbp1 = -14
15863              lbp2 = 1 + int(2*RANART(NSEED))
15864              emm1 = ala
15865              emm2 = amn
15866              go to 60
15867          elseif( randu .le. XKP2 )then
15868              lbp1 = -14
15869              lbp2 = 6 + int(4*RANART(NSEED))
15870              emm1 = ala
15871              emm2 = am0
15872              go to 60
15873          elseif( randu .le. XKP3 )then
15874              lbp1 = -14
15875              lbp2 = 10 + int(2*RANART(NSEED))
15876              emm1 = ala
15877              emm2 = am1440
15878              go to 60
15879          elseif( randu .le. XKP4 )then
15880              lbp1 = -14
15881              lbp2 = 12 + int(2*RANART(NSEED))
15882              emm1 = ala
15883              emm2 = am1535
15884              go to 60
15885          elseif( randu .le. XKP5 )then
15886              lbp1 = -15 - int(3*RANART(NSEED))
15887              lbp2 = 1 + int(2*RANART(NSEED))
15888              emm1 = asa
15889              emm2 = amn
15890              go to 60
15891          elseif( randu .le. XKP6 )then
15892              lbp1 = -15 - int(3*RANART(NSEED))
15893              lbp2 = 6 + int(4*RANART(NSEED))
15894              emm1 = asa
15895              emm2 = am0
15896              go to 60
15897           elseif( randu .lt. XKP7 )then
15898              lbp1 = -15 - int(3*RANART(NSEED))
15899              lbp2 = 10 + int(2*RANART(NSEED))
15900              emm1 = asa
15901              emm2 = am1440
15902              go to 60
15903           elseif( randu .lt. XKP8 )then
15904              lbp1 = -15 - int(3*RANART(NSEED))
15905              lbp2 = 12 + int(2*RANART(NSEED))
15906              emm1 = asa
15907              emm2 = am1535
15908              go to 60
15909           elseif( randu .lt. XKP9 )then
15910 c       !! phi +K  formation (iblock=224)
15911             icase = 3
15912              lbp1 = 29
15913              lbp2 = 23
15914              emm1 = aphi
15915              emm2 = aka
15916            if(lb(i1).eq.21.or.lb(i2).eq.21)then
15917 c         !! phi +K-bar  formation (iblock=124)
15918              lbp2 = 21
15919              icase = -3
15920            endif
15921              go to 60
15922           elseif( randu .lt. XKP10 )then
15923 c       !! phi +K* formation (iblock=226)
15924             icase = 4
15925              lbp1 = 29
15926              lbp2 = 30
15927              emm1 = aphi
15928              emm2 = aks
15929            if(lb(i1).eq.21.or.lb(i2).eq.21)then
15930              lbp2 = -30
15931              icase = -4
15932            endif
15933            go to 60
15934
15935           else
15936 c       !! (rho,omega) +K* formation (iblock=88)
15937             icase=5
15938             lbp1=25+int(3*RANART(NSEED))
15939             lbp2=30
15940             emm1=amrho
15941             emm2=aks
15942             if(srt.gt.(amomga+aks).and.RANART(NSEED).lt.0.25) then
15943                lbp1=28
15944                emm1=amomga
15945             endif
15946             if(lb(i1).eq.21.or.lb(i2).eq.21)then
15947                lbp2=-30
15948                icase=-5
15949             endif
15950
15951           endif
15952           endif
15953 c
15954 60       if( icase.eq.2 .and. (lb(i1).eq.21.or.lb(i2).eq.21) )then
15955             lbp1 = -lbp1
15956             lbp2 = -lbp2
15957          endif
15958         PX0=PX
15959         PY0=PY
15960         PZ0=PZ
15961 *-----------------------------------------------------------------------       
15962 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15963 * ENERGY CONSERVATION
15964            PR2   = (SRT**2 - EMM1**2 - EMM2**2)**2
15965      1                - 4.0 * (EMM1*EMM2)**2
15966           IF(PR2.LE.0.)PR2=1.e-09
15967           PR=SQRT(PR2)/(2.*SRT)
15968           C1   = 1.0 - 2.0 * RANART(NSEED)
15969           T1   = 2.0 * PI * RANART(NSEED)
15970       S1   = SQRT( 1.0 - C1**2 )
15971       CT1  = COS(T1)
15972       ST1  = SIN(T1)
15973 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
15974       PZ   = PR * C1
15975       PX   = PR * S1*CT1
15976       PY   = PR * S1*ST1
15977 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
15978       RETURN
15979       END
15980 **********************************       
15981 *                                                                      *
15982 *                                                                      *
15983         SUBROUTINE Crkphi(PX,PY,PZ,EC,SRT,IBLOCK,
15984      &                  emm1,emm2,lbp1,lbp2,I1,I2,ikk,icase,rrkk,prkk)
15985  
15986 *     PURPOSE:                                                         *
15987 *     DEALING WITH   KKbar, KK*bar, KbarK*, K*K*bar --> Phi + pi(rho,omega)
15988 *     and KKbar --> (pi eta) (pi eta), (rho omega) (rho omega)
15989 *     and KK*bar or Kbar K* --> (pi eta) (rho omega)
15990 *
15991 *     NOTE   :                                                         *
15992 *
15993 *     QUANTITIES:                                                      *
15994 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15995 *           SRT      - SQRT OF S                                       *
15996 *           IBLOCK   - THE INFORMATION BACK                            *
15997 *                      222
15998 **********************************
15999         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
16000      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,APHI=1.02,
16001      2  AM0=1.232,AMNS=1.52,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
16002         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,ACAS=1.3213)
16003         PARAMETER      (AKS=0.895,AOMEGA=0.7819, ARHO=0.77)
16004         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
16005         COMMON /AA/ R(3,MAXSTR)
16006 cc      SAVE /AA/
16007         COMMON /BB/ P(3,MAXSTR)
16008 cc      SAVE /BB/
16009         COMMON /CC/ E(MAXSTR)
16010 cc      SAVE /CC/
16011         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
16012 cc      SAVE /EE/
16013         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
16014 cc      SAVE /input1/
16015       COMMON/RNDF77/NSEED
16016 cc      SAVE /RNDF77/
16017       SAVE   
16018
16019         lb1 = lb(i1) 
16020         lb2 = lb(i2) 
16021         icase = 0
16022
16023 c        if(srt .lt. aphi+ap1)return
16024 cc        if(srt .lt. aphi+ap1) then
16025         if(srt .lt. (aphi+ap1)) then
16026            sig1 = 0.
16027            sig2 = 0.
16028            sig3 = 0.
16029         else
16030 c
16031          if((lb1.eq.23.and.lb2.eq.21).or.(lb2.eq.23.and.lb1.eq.21))then
16032             dnr =  4.
16033             ikk = 2
16034           elseif((lb1.eq.21.and.lb2.eq.30).or.(lb2.eq.21.and.lb1.eq.30)
16035      & .or.(lb1.eq.23.and.lb2.eq.-30).or.(lb2.eq.23.and.lb1.eq.-30))then
16036              dnr = 12.
16037              ikk = 1
16038           else
16039              dnr = 36.
16040              ikk = 0
16041           endif
16042               
16043           sig1 = 0.
16044           sig2 = 0.
16045           sig3 = 0.
16046           srri = E(i1)+E(i2)
16047           srr1 = aphi+ap1
16048           srr2 = aphi+aomega
16049           srr3 = aphi+arho
16050 c
16051           pii = (srt**2-(e(i1)+e(i2))**2)*(srt**2-(e(i1)-e(i2))**2)
16052           srrt = srt - amax1(srri,srr1)
16053 cc   to avoid divergent/negative values at small srrt:
16054 c          if(srrt .lt. 0.3)then
16055           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
16056           sig = 1.69/(srrt**0.141 - 0.407)
16057          else
16058           sig = 3.74 + 0.008*srrt**1.9
16059          endif                 
16060           sig1=sig*(9./dnr)*(srt**2-(aphi+ap1)**2)*
16061      &           (srt**2-(aphi-ap1)**2)/pii
16062           if(srt .gt. aphi+aomega)then
16063           srrt = srt - amax1(srri,srr2)
16064 cc         if(srrt .lt. 0.3)then
16065           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
16066           sig = 1.69/(srrt**0.141 - 0.407)
16067          else
16068           sig = 3.74 + 0.008*srrt**1.9
16069          endif                 
16070           sig2=sig*(9./dnr)*(srt**2-(aphi+aomega)**2)*
16071      &           (srt**2-(aphi-aomega)**2)/pii
16072            endif
16073          if(srt .gt. aphi+arho)then
16074           srrt = srt - amax1(srri,srr3)
16075 cc         if(srrt .lt. 0.3)then
16076           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
16077           sig = 1.69/(srrt**0.141 - 0.407)
16078          else
16079           sig = 3.74 + 0.008*srrt**1.9
16080          endif                 
16081           sig3=sig*(27./dnr)*(srt**2-(aphi+arho)**2)*
16082      &           (srt**2-(aphi-arho)**2)/pii
16083          endif                 
16084 c         sig1 = amin1(20.,sig1)
16085 c         sig2 = amin1(20.,sig2)
16086 c         sig3 = amin1(20.,sig3)
16087         endif
16088
16089         rrkk0=rrkk
16090         prkk0=prkk
16091         SIGM=0.
16092         if((lb1.eq.23.and.lb2.eq.21).or.(lb2.eq.23.and.lb1.eq.21))then
16093            CALL XKKANN(SRT, XSK1, XSK2, XSK3, XSK4, XSK5,
16094      &          XSK6, XSK7, XSK8, XSK9, XSK10, XSK11, SIGM, rrkk0)
16095         elseif((lb1.eq.21.and.lb2.eq.30).or.(lb2.eq.21.and.lb1.eq.30)
16096      & .or.(lb1.eq.23.and.lb2.eq.-30).or.(lb2.eq.23.and.lb1.eq.-30))then
16097            CALL XKKSAN(i1,i2,SRT,SIGKS1,SIGKS2,SIGKS3,SIGKS4,SIGM,prkk0)
16098         else
16099         endif
16100 c
16101 c         sigks = sig1 + sig2 + sig3
16102         sigm0=sigm
16103         sigks = sig1 + sig2 + sig3 + SIGM
16104         DSkn=SQRT(sigks/PI/10.)
16105         dsknr=dskn+0.1
16106         CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
16107      1  PX,PY,PZ)
16108         IF(IC.EQ.-1)return
16109         icase = 1
16110         ranx = RANART(NSEED) 
16111
16112         lbp1 = 29
16113         emm1 = aphi
16114         if(ranx .le. sig1/sigks)then 
16115            lbp2 = 3 + int(3*RANART(NSEED))
16116            emm2 = ap1
16117         elseif(ranx .le. (sig1+sig2)/sigks)then
16118            lbp2 = 28
16119            emm2 = aomega
16120         elseif(ranx .le. (sig1+sig2+sig3)/sigks)then
16121            lbp2 = 25 + int(3*RANART(NSEED))
16122            emm2 = arho
16123         else
16124            if((lb1.eq.23.and.lb2.eq.21)
16125      &          .or.(lb2.eq.23.and.lb1.eq.21))then
16126               CALL crkkpi(I1,I2,XSK1, XSK2, XSK3, XSK4,
16127      &             XSK5, XSK6, XSK7, XSK8, XSK9, XSK10, XSK11, SIGM0,
16128      &             IBLOCK,lbp1,lbp2,emm1,emm2)
16129            elseif((lb1.eq.21.and.lb2.eq.30)
16130      &             .or.(lb2.eq.21.and.lb1.eq.30)
16131      &             .or.(lb1.eq.23.and.lb2.eq.-30)
16132      &             .or.(lb2.eq.23.and.lb1.eq.-30))then
16133               CALL crkspi(I1,I2,SIGKS1, SIGKS2, SIGKS3, SIGKS4,
16134      &             SIGM0,IBLOCK,lbp1,lbp2,emm1,emm2)
16135            else
16136            endif
16137         endif
16138 *
16139         PX0=PX
16140         PY0=PY
16141         PZ0=PZ
16142 *-----------------------------------------------------------------------
16143 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
16144 * ENERGY CONSERVATION
16145            PR2   = (SRT**2 - EMM1**2 - EMM2**2)**2
16146      1                - 4.0 * (EMM1*EMM2)**2
16147           IF(PR2.LE.0.)PR2=1.e-09
16148           PR=SQRT(PR2)/(2.*SRT)
16149           C1   = 1.0 - 2.0 * RANART(NSEED)
16150           T1   = 2.0 * PI * RANART(NSEED)
16151       S1   = SQRT( 1.0 - C1**2 )
16152       CT1  = COS(T1)
16153       ST1  = SIN(T1)
16154 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
16155       PZ   = PR * C1
16156       PX   = PR * S1*CT1
16157       PY   = PR * S1*ST1
16158 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
16159       RETURN
16160       END
16161 csp11/21/01 end
16162 **********************************
16163 *                                                                      *
16164 *                                                                      *
16165         SUBROUTINE Crksph(PX,PY,PZ,EC,SRT,
16166      &     emm1,emm2,lbp1,lbp2,I1,I2,ikkg,ikkl,iblock,
16167      &     icase,srhoks)
16168  
16169 *     PURPOSE:                                                         *
16170 *     DEALING WITH   K + rho(omega) or K* + pi(rho,omega) 
16171 *                    --> Phi + K(K*), pi + K* or pi + K, and elastic 
16172 *     NOTE   :                                                         *
16173 *
16174 *     QUANTITIES:                                                      *
16175 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
16176 *           SRT      - SQRT OF S                                       *
16177 *           IBLOCK   - THE INFORMATION BACK                            *
16178 *                      222
16179 *                      223 --> phi + pi(rho,omega)
16180 *                      224 --> phi + K <-> K + pi(rho,omega)
16181 *                      225 --> phi + K <-> K* + pi(rho,omega)
16182 *                      226 --> phi + K* <-> K + pi(rho,omega)
16183 *                      227 --> phi + K* <-> K* + pi(rho,omega)
16184 **********************************
16185         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
16186      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,APHI=1.02,
16187      2  AM0=1.232,AMNS=1.52,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
16188         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,ACAS=1.3213)
16189         PARAMETER      (AKS=0.895,AOMEGA=0.7819, ARHO=0.77)
16190         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
16191         COMMON /AA/ R(3,MAXSTR)
16192 cc      SAVE /AA/
16193         COMMON /BB/ P(3,MAXSTR)
16194 cc      SAVE /BB/
16195         COMMON /CC/ E(MAXSTR)
16196 cc      SAVE /CC/
16197         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
16198 cc      SAVE /EE/
16199         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
16200 cc      SAVE /input1/
16201       COMMON/RNDF77/NSEED
16202 cc      SAVE /RNDF77/
16203       SAVE   
16204
16205         lb1 = lb(i1) 
16206         lb2 = lb(i2) 
16207         icase = 0
16208         sigela=10.
16209         sigkm=0.
16210 c     K(K*) + rho(omega) -> pi K*(K)
16211         if((lb1.ge.25.and.lb1.le.28).or.(lb2.ge.25.and.lb2.le.28)) then
16212            if(iabs(lb1).eq.30.or.iabs(lb2).eq.30) then
16213               sigkm=srhoks
16214 clin-2/26/03 check whether (rho K) is above the (pi K*) thresh:
16215            elseif((lb1.eq.23.or.lb1.eq.21.or.lb2.eq.23.or.lb2.eq.21)
16216      1             .and.srt.gt.(ap2+aks)) then
16217               sigkm=srhoks
16218            endif
16219         endif
16220
16221 c        if(srt .lt. aphi+aka)return
16222         if(srt .lt. (aphi+aka)) then
16223            sig11=0.
16224            sig22=0.
16225         else
16226
16227 c K*-bar +pi --> phi + (K,K*)-bar
16228          if( (iabs(lb1).eq.30.and.(lb2.ge.3.and.lb2.le.5)) .or.
16229      &       (iabs(lb2).eq.30.and.(lb1.ge.3.and.lb1.le.5)) )then
16230               dnr =  18.
16231               ikkl = 0
16232               IBLOCK = 225
16233 c               sig1 = 15.0  
16234 c               sig2 = 30.0  
16235 clin-2/06/03 these large values reduces to ~10 mb for sig11 or sig22
16236 c     due to the factors of ~1/(32*pi*s)~1/200:
16237                sig1 = 2047.042  
16238                sig2 = 1496.692
16239 c K(-bar)+rho --> phi + (K,K*)-bar
16240        elseif((lb1.eq.23.or.lb1.eq.21.and.(lb2.ge.25.and.lb2.le.27)).or.
16241      &      (lb2.eq.23.or.lb2.eq.21.and.(lb1.ge.25.and.lb1.le.27)) )then
16242               dnr =  18.
16243               ikkl = 1
16244               IBLOCK = 224
16245 c               sig1 = 3.5  
16246 c               sig2 = 9.0  
16247                sig1 = 526.702
16248                sig2 = 1313.960
16249 c K*(-bar) +rho
16250          elseif( (iabs(lb1).eq.30.and.(lb2.ge.25.and.lb2.le.27)) .or.
16251      &           (iabs(lb2).eq.30.and.(lb1.ge.25.and.lb1.le.27)) )then
16252               dnr =  54.
16253               ikkl = 0
16254               IBLOCK = 225
16255 c               sig1 = 3.5  
16256 c               sig2 = 9.0  
16257                sig1 = 1371.257
16258                sig2 = 6999.840
16259 c K(-bar) + omega
16260          elseif( ((lb1.eq.23.or.lb1.eq.21) .and. lb2.eq.28).or.
16261      &           ((lb2.eq.23.or.lb2.eq.21) .and. lb1.eq.28) )then
16262               dnr = 6.
16263               ikkl = 1
16264               IBLOCK = 224
16265 c               sig1 = 3.5  
16266 c               sig2 = 6.5  
16267                sig1 = 355.429
16268                sig2 = 440.558
16269 c K*(-bar) +omega
16270           else
16271               dnr = 18.
16272               ikkl = 0
16273               IBLOCK = 225
16274 c               sig1 = 3.5  
16275 c               sig2 = 15.0  
16276                sig1 = 482.292
16277                sig2 = 1698.903
16278           endif
16279
16280             sig11 = 0.
16281             sig22 = 0.
16282 c         sig11=sig1*(6./dnr)*(srt**2-(aphi+aka)**2)*
16283 c    &           (srt**2-(aphi-aka)**2)/(srt**2-(e(i1)+e(i2))**2)/
16284 c    &           (srt**2-(e(i1)-e(i2))**2)
16285         pii = sqrt((srt**2-(e(i1)+e(i2))**2)*(srt**2-(e(i1)-e(i2))**2))
16286         pff = sqrt((srt**2-(aphi+aka)**2)*(srt**2-(aphi-aka)**2))
16287           sig11 = sig1*pff/pii*6./dnr/32./pi/srt**2
16288 c
16289           if(srt .gt. aphi+aks)then
16290 c         sig22=sig2*(18./dnr)*(srt**2-(aphi+aks)**2)*
16291 c    &           (srt**2-(aphi-aks)**2)/(srt**2-(e(i1)+e(i2))**2)/
16292 c    &           (srt**2-(e(i1)-e(i2))**2)
16293         pff = sqrt((srt**2-(aphi+aks)**2)*(srt**2-(aphi-aks)**2))
16294           sig22 = sig2*pff/pii*18./dnr/32./pi/srt**2
16295            endif
16296 c         sig11 = amin1(20.,sig11)
16297 c         sig22 = amin1(20.,sig22)
16298 c
16299         endif
16300
16301 c         sigks = sig11 + sig22
16302          sigks=sig11+sig22+sigela+sigkm
16303 c
16304         DSkn=SQRT(sigks/PI/10.)
16305         dsknr=dskn+0.1
16306         CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
16307      1  PX,PY,PZ)
16308         IF(IC.EQ.-1)return
16309         icase = 1
16310         ranx = RANART(NSEED) 
16311
16312          if(ranx .le. (sigela/sigks))then 
16313             lbp1=lb1
16314             emm1=e(i1)
16315             lbp2=lb2
16316             emm2=e(i2)
16317             iblock=111
16318          elseif(ranx .le. ((sigela+sigkm)/sigks))then 
16319             lbp1=3+int(3*RANART(NSEED))
16320             emm1=0.14
16321             if(lb1.eq.23.or.lb2.eq.23) then
16322                lbp2=30
16323                emm2=aks
16324             elseif(lb1.eq.21.or.lb2.eq.21) then
16325                lbp2=-30
16326                emm2=aks
16327             elseif(lb1.eq.30.or.lb2.eq.30) then
16328                lbp2=23
16329                emm2=aka
16330             else
16331                lbp2=21
16332                emm2=aka
16333             endif
16334             iblock=112
16335          elseif(ranx .le. ((sigela+sigkm+sig11)/sigks))then 
16336             lbp2 = 23
16337             emm2 = aka
16338             ikkg = 1
16339             if(lb1.eq.21.or.lb2.eq.21.or.lb1.eq.-30.or.lb2.eq.-30)then
16340                lbp2=21
16341                iblock=iblock-100
16342             endif
16343             lbp1 = 29
16344             emm1 = aphi
16345          else
16346             lbp2 = 30
16347             emm2 = aks
16348             ikkg = 0
16349             IBLOCK=IBLOCK+2
16350             if(lb1.eq.21.or.lb2.eq.21.or.lb1.eq.-30.or.lb2.eq.-30)then
16351                lbp2=-30
16352                iblock=iblock-100
16353             endif
16354             lbp1 = 29
16355             emm1 = aphi
16356          endif
16357 *
16358         PX0=PX
16359         PY0=PY
16360         PZ0=PZ
16361 *-----------------------------------------------------------------------
16362 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
16363 * ENERGY CONSERVATION
16364            PR2   = (SRT**2 - EMM1**2 - EMM2**2)**2
16365      1                - 4.0 * (EMM1*EMM2)**2
16366           IF(PR2.LE.0.)PR2=1.e-09
16367           PR=SQRT(PR2)/(2.*SRT)
16368           C1   = 1.0 - 2.0 * RANART(NSEED)
16369           T1   = 2.0 * PI * RANART(NSEED)
16370       S1   = SQRT( 1.0 - C1**2 )
16371       CT1  = COS(T1)
16372       ST1  = SIN(T1)
16373 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
16374       PZ   = PR * C1
16375       PX   = PR * S1*CT1
16376       PY   = PR * S1*ST1
16377 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
16378       RETURN
16379       END
16380 csp11/21/01 end
16381 **********************************
16382 ********************************** 
16383         SUBROUTINE bbkaon(ic,SRT,PX,PY,PZ,ana,PlX,
16384      &  PlY,PlZ,ala,pkX,PkY,PkZ,icou1)
16385 * purpose: generate the momenta for kaon,lambda/sigma and nucleon/delta
16386 *          in the BB-->nlk process
16387 * date: Sept. 9, 1994
16388 c
16389         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
16390 cc      SAVE /input1/
16391       COMMON/RNDF77/NSEED
16392 cc      SAVE /RNDF77/
16393       SAVE   
16394
16395        PI=3.1415962
16396        icou1=0
16397        aka=0.498
16398         ala=1.116
16399        if(ic.eq.2.or.ic.eq.4)ala=1.197
16400        ana=0.939
16401 * generate the mass of the delta
16402        if(ic.gt.2)then
16403        dmax=srt-aka-ala-0.02
16404         DM1=RMASS(DMAX,ISEED)
16405        ana=dm1
16406        endif
16407        t1=aka+ana+ala
16408        t2=ana+ala-aka
16409        if(srt.le.t1)then
16410        icou1=-1
16411        return
16412        endif
16413        pmax=sqrt((srt**2-t1**2)*(srt**2-t2**2))/(2.*srt)
16414        if(pmax.eq.0.)pmax=1.e-09
16415 * (1) Generate the momentum of the kaon according to the distribution Fkaon
16416 *     and assume that the angular distribution is isotropic       
16417 *     in the cms of the colliding pair
16418        ntry=0
16419 1       pk=pmax*RANART(NSEED)
16420        ntry=ntry+1
16421        prob=fkaon(pk,pmax)
16422        if((prob.lt.RANART(NSEED)).and.(ntry.le.40))go to 1
16423        cs=1.-2.*RANART(NSEED)
16424        ss=sqrt(1.-cs**2)
16425        fai=2.*3.14*RANART(NSEED)
16426        pkx=pk*ss*cos(fai)
16427        pky=pk*ss*sin(fai)
16428        pkz=pk*cs
16429 * the energy of the kaon
16430        ek=sqrt(aka**2+pk**2)
16431 * (2) Generate the momentum of the nucleon/delta in the cms of N/delta 
16432 *     and lamda/sigma 
16433 *  the energy of the cms of NL
16434         eln=srt-ek
16435        if(eln.le.0)then
16436        icou1=-1
16437        return
16438        endif
16439 * beta and gamma of the cms of L/S+N
16440        bx=-pkx/eln
16441        by=-pky/eln
16442        bz=-pkz/eln
16443        ga=1./sqrt(1.-bx**2-by**2-bz**2)
16444         elnc=eln/ga
16445        pn2=((elnc**2+ana**2-ala**2)/(2.*elnc))**2-ana**2
16446        if(pn2.le.0.)pn2=1.e-09
16447        pn=sqrt(pn2)
16448        csn=1.-2.*RANART(NSEED)
16449        ssn=sqrt(1.-csn**2)
16450        fain=2.*3.14*RANART(NSEED)
16451        px=pn*ssn*cos(fain)
16452        py=pn*ssn*sin(fain)
16453        pz=pn*csn
16454        en=sqrt(ana**2+pn2)
16455 * the momentum of the lambda/sigma in the n-l cms frame is
16456        plx=-px
16457        ply=-py
16458        plz=-pz
16459 * (3) LORENTZ-TRANSFORMATION INTO nn cms FRAME for the neutron/delta
16460         PBETA  = PX*BX + PY*By+ PZ*Bz
16461               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
16462               Px = BX * TRANS0 + PX
16463               Py = BY * TRANS0 + PY
16464               Pz = BZ * TRANS0 + PZ
16465 * (4) Lorentz-transformation for the lambda/sigma
16466        el=sqrt(ala**2+plx**2+ply**2+plz**2)
16467         PBETA  = PlX*BX + PlY*By+ PlZ*Bz
16468               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + El )
16469               Plx = BX * TRANS0 + PlX
16470               Ply = BY * TRANS0 + PlY
16471               Plz = BZ * TRANS0 + PlZ
16472              return
16473              end
16474 ******************************************
16475 * for pion+pion-->K+K-
16476 c      real*4 function pipik(srt)
16477       real function pipik(srt)
16478 *  srt    = DSQRT(s) in GeV                                                   *
16479 *  xsec   = production cross section in mb                                    *
16480 *  NOTE: DEVIDE THE CROSS SECTION TO OBTAIN K+ PRODUCTION                     *
16481 ******************************************
16482 c      real*4   xarray(5), earray(5)
16483       real   xarray(5), earray(5)
16484       SAVE   
16485       data xarray /0.001, 0.7,1.5,1.7,2.0/
16486       data earray /1.,1.2,1.6,2.0,2.4/
16487
16488            pmass=0.9383 
16489 * 1.Calculate p(lab)  from srt [GeV]
16490 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
16491 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
16492        pipik=0.
16493        if(srt.le.1.)return
16494        if(srt.gt.2.4)then
16495            pipik=2.0/2.
16496            return
16497        endif
16498         if (srt .lt. earray(1)) then
16499            pipik =xarray(1)/2.
16500            return
16501         end if
16502 *
16503 * 2.Interpolate double logarithmically to find sigma(srt)
16504 *
16505       do 1001 ie = 1,5
16506         if (earray(ie) .eq. srt) then
16507           pipik = xarray(ie)
16508           go to 10
16509         else if (earray(ie) .gt. srt) then
16510           ymin = alog(xarray(ie-1))
16511           ymax = alog(xarray(ie))
16512           xmin = alog(earray(ie-1))
16513           xmax = alog(earray(ie))
16514           pipik = exp(ymin + (alog(srt)-xmin)*(ymax-ymin)
16515      &/(xmax-xmin) )
16516           go to 10
16517         end if
16518  1001 continue
16519 10       PIPIK=PIPIK/2.
16520        continue
16521       return
16522         END
16523 **********************************
16524 * TOTAL PION-P INELASTIC CROSS SECTION 
16525 *  from the CERN data book
16526 *  date: Sept.2, 1994
16527 *  for pion++p-->Delta+pion
16528 c      real*4 function pionpp(srt)
16529       real function pionpp(srt)
16530       SAVE   
16531 *  srt    = DSQRT(s) in GeV                                                   *
16532 *  xsec   = production cross section in fm**2                                 *
16533 *  earray = EXPerimental table with proton energies in MeV                    *
16534 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
16535 *                                                                             *
16536 ******************************************
16537            pmass=0.14 
16538        pmass1=0.938
16539        PIONPP=0.00001
16540        IF(SRT.LE.1.22)RETURN
16541 * 1.Calculate p(lab)  from srt [GeV]
16542 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
16543 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
16544         plab=sqrt(((srt**2-pmass**2-pmass1**2)/(2.*pmass1))**2-pmass**2)
16545        pmin=0.3
16546        pmax=25.0
16547        if(plab.gt.pmax)then
16548        pionpp=20./10.
16549        return
16550        endif
16551         if(plab .lt. pmin)then
16552         pionpp = 0.
16553         return
16554         end if
16555 c* fit parameters
16556        a=24.3
16557        b=-12.3
16558        c=0.324
16559        an=-1.91
16560        d=-2.44
16561         pionpp = a+b*(plab**an)+c*(alog(plab))**2+d*alog(plab)
16562        if(pionpp.le.0)pionpp=0
16563        pionpp=pionpp/10.
16564         return
16565         END
16566 **********************************
16567 * elementary cross sections
16568 *  from the CERN data book
16569 *  date: Sept.2, 1994
16570 *  for pion-+p-->INELASTIC
16571 c      real*4 function pipp1(srt)
16572       real function pipp1(srt)
16573       SAVE   
16574 *  srt    = DSQRT(s) in GeV                                                   *
16575 *  xsec   = production cross section in fm**2                                 *
16576 *  earray = EXPerimental table with proton energies in MeV                    *
16577 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
16578 *  UNITS: FM**2
16579 ******************************************
16580            pmass=0.14 
16581        pmass1=0.938
16582        PIPP1=0.0001
16583        IF(SRT.LE.1.22)RETURN
16584 * 1.Calculate p(lab)  from srt [GeV]
16585 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
16586 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
16587         plab=sqrt(((srt**2-pmass**2-pmass1**2)/(2.*pmass1))**2-pmass**2)
16588        pmin=0.3
16589        pmax=25.0
16590        if(plab.gt.pmax)then
16591        pipp1=20./10.
16592        return
16593        endif
16594         if(plab .lt. pmin)then
16595         pipp1 = 0.
16596         return
16597         end if
16598 c* fit parameters
16599        a=26.6
16600        b=-7.18
16601        c=0.327
16602        an=-1.86
16603        d=-2.81
16604         pipp1 = a+b*(plab**an)+c*(alog(plab))**2+d*alog(plab)
16605        if(pipp1.le.0)pipp1=0
16606        PIPP1=PIPP1/10.
16607         return
16608         END
16609 * *****************************
16610 c       real*4 function xrho(srt)
16611       real function xrho(srt)
16612       SAVE   
16613 *       xsection for pp-->pp+rho
16614 * *****************************
16615        pmass=0.9383
16616        rmass=0.77
16617        trho=0.151
16618        xrho=0.000000001
16619        if(srt.le.2.67)return
16620        ESMIN=2.*0.9383+rmass-trho/2.
16621        ES=srt
16622 * the cross section for tho0 production is
16623        xrho0=0.24*(es-esmin)/(1.4+(es-esmin)**2)
16624        xrho=3.*Xrho0
16625        return
16626        end
16627 * *****************************
16628 c       real*4 function omega(srt)
16629       real function omega(srt)
16630       SAVE   
16631 *       xsection for pp-->pp+omega
16632 * *****************************
16633        pmass=0.9383
16634        omass=0.782
16635        tomega=0.0084
16636        omega=0.00000001
16637        if(srt.le.2.68)return
16638        ESMIN=2.*0.9383+omass-tomega/2.
16639        es=srt
16640        omega=0.36*(es-esmin)/(1.25+(es-esmin)**2)
16641        return
16642        end
16643 ******************************************
16644 * for ppi(+)-->DELTA+pi
16645 c      real*4 function TWOPI(srt)
16646       real function TWOPI(srt)
16647 *  This function contains the experimental pi+p-->DELTA+PION cross sections   *
16648 *  srt    = DSQRT(s) in GeV                                                   *
16649 *  xsec   = production cross section in mb                                    *
16650 *  earray = EXPerimental table with proton energies in MeV                    *
16651 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
16652 *                                                                             *
16653 ******************************************
16654 c      real*4   xarray(19), earray(19)
16655       real   xarray(19), earray(19)
16656       SAVE   
16657       data xarray /0.300E-05,0.187E+01,0.110E+02,0.149E+02,0.935E+01,
16658      &0.765E+01,0.462E+01,0.345E+01,0.241E+01,0.185E+01,0.165E+01,
16659      &0.150E+01,0.132E+01,0.117E+01,0.116E+01,0.100E+01,0.856E+00,
16660      &0.745E+00,0.300E-05/
16661       data earray /0.122E+01, 0.147E+01, 0.172E+01, 0.197E+01,
16662      &0.222E+01, 0.247E+01, 0.272E+01, 0.297E+01, 0.322E+01,
16663      &0.347E+01, 0.372E+01, 0.397E+01, 0.422E+01, 0.447E+01,
16664      &0.472E+01, 0.497E+01, 0.522E+01, 0.547E+01, 0.572E+01/
16665
16666            pmass=0.14 
16667        pmass1=0.938
16668        TWOPI=0.000001
16669        if(srt.le.1.22)return
16670 * 1.Calculate p(lab)  from srt [GeV]
16671 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
16672         plab=SRT
16673       if (plab .lt. earray(1)) then
16674         TWOPI= 0.00001
16675         return
16676       end if
16677 *
16678 * 2.Interpolate double logarithmically to find sigma(srt)
16679 *
16680       do 1001 ie = 1,19
16681         if (earray(ie) .eq. plab) then
16682           TWOPI= xarray(ie)
16683           return
16684         else if (earray(ie) .gt. plab) then
16685           ymin = alog(xarray(ie-1))
16686           ymax = alog(xarray(ie))
16687           xmin = alog(earray(ie-1))
16688           xmax = alog(earray(ie))
16689           TWOPI= exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
16690      &    /(xmax-xmin) )
16691           return
16692         end if
16693  1001   continue
16694       return
16695         END
16696 ******************************************
16697 ******************************************
16698 * for ppi(+)-->DELTA+RHO
16699 c      real*4 function THREPI(srt)
16700       real function THREPI(srt)
16701 *  This function contains the experimental pi+p-->DELTA + rho cross sections  *
16702 *  srt    = DSQRT(s) in GeV                                                   *
16703 *  xsec   = production cross section in mb                                    *
16704 *  earray = EXPerimental table with proton energies in MeV                    *
16705 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
16706 *                                                                             *
16707 ******************************************
16708 c      real*4   xarray(15), earray(15)
16709       real   xarray(15), earray(15)
16710       SAVE   
16711       data xarray /8.0000000E-06,6.1999999E-05,1.881940,5.025690,    
16712      &11.80154,13.92114,15.07308,11.79571,11.53772,10.01197,9.792673,    
16713      &9.465264,8.970490,7.944254,6.886320/    
16714       data earray /0.122E+01, 0.147E+01, 0.172E+01, 0.197E+01,
16715      &0.222E+01, 0.247E+01, 0.272E+01, 0.297E+01, 0.322E+01,
16716      &0.347E+01, 0.372E+01, 0.397E+01, 0.422E+01, 0.447E+01,
16717      &0.472E+01/
16718
16719            pmass=0.14 
16720        pmass1=0.938
16721        THREPI=0.000001
16722        if(srt.le.1.36)return
16723 * 1.Calculate p(lab)  from srt [GeV]
16724 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
16725         plab=SRT
16726       if (plab .lt. earray(1)) then
16727         THREPI = 0.00001
16728         return
16729       end if
16730 *
16731 * 2.Interpolate double logarithmically to find sigma(srt)
16732 *
16733       do 1001 ie = 1,15
16734         if (earray(ie) .eq. plab) then
16735           THREPI= xarray(ie)
16736           return
16737         else if (earray(ie) .gt. plab) then
16738           ymin = alog(xarray(ie-1))
16739           ymax = alog(xarray(ie))
16740           xmin = alog(earray(ie-1))
16741           xmax = alog(earray(ie))
16742           THREPI = exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
16743      &    /(xmax-xmin) )
16744           return
16745         end if
16746  1001   continue
16747       return
16748         END
16749 ******************************************
16750 ******************************************
16751 * for ppi(+)-->DELTA+omega
16752 c      real*4 function FOURPI(srt)
16753       real function FOURPI(srt)
16754 *  This function contains the experimental pi+p-->DELTA+PION cross sections   *
16755 *  srt    = DSQRT(s) in GeV                                                   *
16756 *  xsec   = production cross section in mb                                    *
16757 *  earray = EXPerimental table with proton energies in MeV                    *
16758 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
16759 *                                                                             *
16760 ******************************************
16761 c      real*4   xarray(10), earray(10)
16762       real   xarray(10), earray(10)
16763       SAVE   
16764       data xarray /0.0001,1.986597,6.411932,7.636956,    
16765      &9.598362,9.889740,10.24317,10.80138,11.86988,12.83925/    
16766       data earray /2.468,2.718,2.968,0.322E+01,
16767      &0.347E+01, 0.372E+01, 0.397E+01, 0.422E+01, 0.447E+01,
16768      &0.472E+01/
16769
16770            pmass=0.14 
16771        pmass1=0.938
16772        FOURPI=0.000001
16773        if(srt.le.1.52)return
16774 * 1.Calculate p(lab)  from srt [GeV]
16775 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
16776         plab=SRT
16777       if (plab .lt. earray(1)) then
16778         FOURPI= 0.00001
16779         return
16780       end if
16781 *
16782 * 2.Interpolate double logarithmically to find sigma(srt)
16783 *
16784       do 1001 ie = 1,10
16785         if (earray(ie) .eq. plab) then
16786           FOURPI= xarray(ie)
16787           return
16788         else if (earray(ie) .gt. plab) then
16789           ymin = alog(xarray(ie-1))
16790           ymax = alog(xarray(ie))
16791           xmin = alog(earray(ie-1))
16792           xmax = alog(earray(ie))
16793           FOURPI= exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
16794      &    /(xmax-xmin) )
16795           return
16796         end if
16797  1001   continue
16798       return
16799         END
16800 ******************************************
16801 ******************************************
16802 * for pion (rho or omega)+baryon resonance collisions
16803 c      real*4 function reab(i1,i2,srt,ictrl)
16804       real function reab(i1,i2,srt,ictrl)
16805 *  This function calculates the cross section for 
16806 *  pi+Delta(N*)-->N+PION process                                              *
16807 *  srt    = DSQRT(s) in GeV                                                   *
16808 *  reab   = cross section in fm**2                                            *
16809 *  ictrl=1,2,3 for pion, rho and omega+D(N*)    
16810 ****************************************
16811       PARAMETER (MAXSTR=150001,MAXR=1,PI=3.1415926)
16812       parameter      (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
16813       PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
16814       parameter      (amn=0.938,ap1=0.14,arho=0.77,aomega=0.782)
16815        parameter       (maxx=20,maxz=24)
16816       COMMON   /AA/  R(3,MAXSTR)
16817 cc      SAVE /AA/
16818       COMMON   /BB/  P(3,MAXSTR)
16819 cc      SAVE /BB/
16820       COMMON   /CC/  E(MAXSTR)
16821 cc      SAVE /CC/
16822       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
16823      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
16824      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
16825 cc      SAVE /DD/
16826       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
16827 cc      SAVE /EE/
16828       SAVE   
16829        LB1=LB(I1)
16830        LB2=LB(I2)
16831        reab=0
16832        if(ictrl.eq.1.and.srt.le.(amn+2.*ap1+0.02))return
16833        if(ictrl.eq.3.and.srt.le.(amn+ap1+aomega+0.02))return
16834        pin2=((srt**2+ap1**2-amn**2)/(2.*srt))**2-ap1**2
16835        if(pin2.le.0)return
16836 * for pion+D(N*)-->pion+N
16837        if(ictrl.eq.1)then
16838        if(e(i1).gt.1)then 
16839        ed=e(i1)       
16840        else
16841        ed=e(i2)
16842        endif       
16843        pout2=((srt**2+ap1**2-ed**2)/(2.*srt))**2-ap1**2
16844        if(pout2.le.0)return
16845        xpro=twopi(srt)/10.
16846        factor=1/3.
16847        if( ((lb1.eq.8.and.lb2.eq.5).or.
16848      &    (lb1.eq.5.and.lb2.eq.8))
16849      &        .OR.((lb1.eq.-8.and.lb2.eq.3).or.
16850      &    (lb1.eq.3.and.lb2.eq.-8)) )factor=1/4.
16851        if((iabs(lb1).ge.10.and.iabs(lb1).le.13).
16852      &  or.(iabs(lb2).ge.10.and.iabs(lb2).le.13))factor=1.
16853        reab=factor*pin2/pout2*xpro
16854        return
16855        endif
16856 * for rho reabsorption
16857        if(ictrl.eq.2)then
16858        if(lb(i2).ge.25)then 
16859        ed=e(i1)
16860        arho1=e(i2)       
16861        else
16862        ed=e(i2)
16863        arho1=e(i1)
16864        endif       
16865        if(srt.le.(amn+ap1+arho1+0.02))return
16866        pout2=((srt**2+arho1**2-ed**2)/(2.*srt))**2-arho1**2
16867        if(pout2.le.0)return
16868        xpro=threpi(srt)/10.
16869        factor=1/3.
16870        if( ((lb1.eq.8.and.lb2.eq.27).or.
16871      &       (lb1.eq.27.and.lb2.eq.8))
16872      & .OR. ((lb1.eq.-8.and.lb2.eq.25).or.
16873      &       (lb1.eq.25.and.lb2.eq.-8)) )factor=1/4.
16874        if((iabs(lb1).ge.10.and.iabs(lb1).le.13).
16875      &  or.(iabs(lb2).ge.10.and.iabs(lb2).le.13))factor=1.
16876        reab=factor*pin2/pout2*xpro
16877        return
16878        endif
16879 * for omega reabsorption
16880        if(ictrl.eq.3)then
16881        if(e(i1).gt.1)ed=e(i1)       
16882        if(e(i2).gt.1)ed=e(i2)       
16883        pout2=((srt**2+aomega**2-ed**2)/(2.*srt))**2-aomega**2
16884        if(pout2.le.0)return
16885        xpro=fourpi(srt)/10.
16886        factor=1/6.
16887        if((iabs(lb1).ge.10.and.iabs(lb1).le.13).
16888      &  or.(iabs(lb2).ge.10.and.iabs(lb2).le.13))factor=1./3.
16889        reab=factor*pin2/pout2*xpro
16890        endif
16891       return
16892         END
16893 ******************************************
16894 * for the reabsorption of two resonances
16895 * This function calculates the cross section for 
16896 * DD-->NN, N*N*-->NN and DN*-->NN
16897 c      real*4 function reab2d(i1,i2,srt)
16898       real function reab2d(i1,i2,srt)
16899 *  srt    = DSQRT(s) in GeV                                                   *
16900 *  reab   = cross section in mb
16901 ****************************************
16902       PARAMETER      (MAXSTR=150001,MAXR=1,PI=3.1415926)
16903       parameter      (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
16904       PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
16905       parameter      (amn=0.938,ap1=0.14,arho=0.77,aomega=0.782)
16906        parameter       (maxx=20,maxz=24)
16907       COMMON   /AA/  R(3,MAXSTR)
16908 cc      SAVE /AA/
16909       COMMON   /BB/  P(3,MAXSTR)
16910 cc      SAVE /BB/
16911       COMMON   /CC/  E(MAXSTR)
16912 cc      SAVE /CC/
16913       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
16914      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
16915      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
16916 cc      SAVE /DD/
16917       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
16918 cc      SAVE /EE/
16919       SAVE   
16920        reab2d=0
16921        LB1=iabs(LB(I1))
16922        LB2=iabs(LB(I2))
16923        ed1=e(i1)       
16924        ed2=e(i2)       
16925        pin2=(srt/2.)**2-amn**2
16926        pout2=((srt**2+ed1**2-ed2**2)/(2.*srt))**2-ed1**2
16927        if(pout2.le.0)return
16928        xpro=x2pi(srt)
16929        factor=1/4.
16930        if((lb1.ge.10.and.lb1.le.13).and.
16931      &    (lb2.ge.10.and.lb2.le.13))factor=1.
16932        if((lb1.ge.6.and.lb1.le.9).and.
16933      &    (lb2.gt.10.and.lb2.le.13))factor=1/2.
16934        if((lb2.ge.6.and.lb2.le.9).and.
16935      &    (lb1.gt.10.and.lb1.le.13))factor=1/2.
16936        reab2d=factor*pin2/pout2*xpro
16937        return
16938        end
16939 ***************************************
16940       SUBROUTINE rotate(PX0,PY0,PZ0,px,py,pz)
16941       SAVE   
16942 * purpose: rotate the momentum of a particle in the CMS of p1+p2 such that 
16943 * the x' y' and z' in the cms of p1+p2 is the same as the fixed x y and z
16944 * quantities:
16945 *            px0,py0 and pz0 are the cms momentum of the incoming colliding
16946 *            particles
16947 *            px, py and pz are the cms momentum of any one of the particles 
16948 *            after the collision to be rotated
16949 ***************************************
16950 * the momentum, polar and azimuthal angles of the incoming momentm
16951       PR0  = SQRT( PX0**2 + PY0**2 + PZ0**2 )
16952       IF(PR0.EQ.0)PR0=0.00000001
16953       C2  = PZ0 / PR0
16954       IF(PX0 .EQ. 0.0 .AND. PY0 .EQ. 0.0) THEN
16955         T2 = 0.0
16956       ELSE
16957         T2=ATAN2(PY0,PX0)
16958       END IF
16959       S2  =  SQRT( 1.0 - C2**2 )
16960       CT2  = COS(T2)
16961       ST2  = SIN(T2)
16962 * the momentum, polar and azimuthal angles of the momentum to be rotated
16963       PR=SQRT(PX**2+PY**2+PZ**2)
16964       IF(PR.EQ.0)PR=0.0000001
16965       C1=PZ/PR
16966       IF(PX.EQ.0.AND.PY.EQ.0)THEN
16967       T1=0.
16968       ELSE
16969       T1=ATAN2(PY,PX)
16970       ENDIF
16971       S1   = SQRT( 1.0 - C1**2 )
16972       CT1  = COS(T1)
16973       ST1  = SIN(T1)
16974       SS   = C2 * S1 * CT1  +  S2 * C1
16975 * THE MOMENTUM AFTER ROTATION
16976       PX   = PR * ( SS*CT2 - S1*ST1*ST2 )
16977       PY   = PR * ( SS*ST2 + S1*ST1*CT2 )
16978       PZ   = PR * ( C1*C2 - S1*S2*CT1 )
16979       RETURN
16980       END
16981 ******************************************
16982 c      real*4 function Xpp(srt)
16983       real function Xpp(srt)
16984 *  This function contains the experimental total n-p cross sections           *
16985 *  srt    = DSQRT(s) in GeV                                                   *
16986 *  xsec   = production cross section in mb                                    *
16987 *  earray = EXPerimental table with proton energies in MeV                    *
16988 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
16989 *  WITH A CUTOFF AT 55MB                                                      *
16990 ******************************************
16991 c      real*4   xarray(14), earray(14)
16992       real   xarray(14), earray(14)
16993       SAVE   
16994       data earray /20.,30.,40.,60.,80.,100.,
16995      &170.,250.,310.,
16996      &350.,460.,560.,660.,800./
16997       data xarray /150.,90.,80.6,48.0,36.6,
16998      &31.6,25.9,24.0,23.1,
16999      &24.0,28.3,33.6,41.5,47/
17000
17001       xpp=0.
17002        pmass=0.9383 
17003 * 1.Calculate E_kin(lab) [MeV] from srt [GeV]
17004 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17005       ekin = 2000.*pmass*((srt/(2.*pmass))**2 - 1.)
17006       if (ekin .lt. earray(1)) then
17007         xpp = xarray(1)
17008        IF(XPP.GT.55)XPP=55
17009         return
17010       end if
17011        IF(EKIN.GT.EARRAY(14))THEN
17012        XPP=XARRAY(14)
17013        RETURN
17014        ENDIF
17015 *
17016 *
17017 * 2.Interpolate double logarithmically to find sigma(srt)
17018 *
17019       do 1001 ie = 1,14
17020         if (earray(ie) .eq. ekin) then
17021           xPP= xarray(ie)
17022        if(xpp.gt.55)xpp=55.
17023           return
17024        endif
17025         if (earray(ie) .gt. ekin) then
17026           ymin = alog(xarray(ie-1))
17027           ymax = alog(xarray(ie))
17028           xmin = alog(earray(ie-1))
17029           xmax = alog(earray(ie))
17030           XPP = exp(ymin + (alog(ekin)-xmin)
17031      &          *(ymax-ymin)/(xmax-xmin) )
17032        IF(XPP.GT.55)XPP=55.
17033        go to 50
17034         end if
17035  1001 continue
17036 50       continue
17037         return
17038         END
17039 ******************************************
17040       real function Xnp(srt)
17041 *  This function contains the experimental total n-p cross sections           *
17042 *  srt    = DSQRT(s) in GeV                                                   *
17043 *  xsec   = production cross section in mb                                    *
17044 *  earray = EXPerimental table with proton energies in MeV                    *
17045 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17046 *  WITH  A CUTOFF AT 55MB                                                *
17047 ******************************************
17048 c      real*4   xarray(11), earray(11)
17049       real   xarray(11), earray(11)
17050       SAVE   
17051       data   earray /20.,30.,40.,60.,90.,135.0,200.,
17052      &300.,400.,600.,800./
17053       data  xarray / 410.,270.,214.5,130.,78.,53.5,
17054      &41.6,35.9,34.2,34.3,34.9/
17055
17056        xnp=0.
17057        pmass=0.9383
17058 * 1.Calculate E_kin(lab) [MeV] from srt [GeV]
17059 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17060       ekin = 2000.*pmass*((srt/(2.*pmass))**2 - 1.)
17061       if (ekin .lt. earray(1)) then
17062         xnp = xarray(1)
17063        IF(XNP.GT.55)XNP=55
17064         return
17065       end if
17066        IF(EKIN.GT.EARRAY(11))THEN
17067        XNP=XARRAY(11)
17068        RETURN
17069        ENDIF
17070 *
17071 *Interpolate double logarithmically to find sigma(srt)
17072 *
17073       do 1001 ie = 1,11
17074         if (earray(ie) .eq. ekin) then
17075           xNP = xarray(ie)
17076          if(xnp.gt.55)xnp=55.
17077           return
17078        endif
17079         if (earray(ie) .gt. ekin) then
17080           ymin = alog(xarray(ie-1))
17081           ymax = alog(xarray(ie))
17082           xmin = alog(earray(ie-1))
17083           xmax = alog(earray(ie))
17084           xNP = exp(ymin + (alog(ekin)-xmin)
17085      &          *(ymax-ymin)/(xmax-xmin) )
17086        IF(XNP.GT.55)XNP=55
17087        go to 50
17088         end if
17089  1001 continue
17090 50       continue
17091         return
17092         END
17093 *******************************
17094        function ptr(ptmax,iseed)
17095 * (2) Generate the transverse momentum
17096 *     OF nucleons
17097 *******************************
17098         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
17099 cc      SAVE /TABLE/
17100       COMMON/RNDF77/NSEED
17101 cc      SAVE /RNDF77/
17102       SAVE   
17103        ISEED=ISEED
17104        ptr=0.
17105        if(ptmax.le.1.e-02)then
17106        ptr=ptmax
17107        return
17108        endif
17109        if(ptmax.gt.2.01)ptmax=2.01
17110        tryial=ptdis(ptmax)/ptdis(2.01)
17111        XT=RANART(NSEED)*tryial
17112 * look up the table and
17113 *Interpolate double logarithmically to find pt
17114         do 50 ie = 1,200
17115         if (earray(ie) .eq. xT) then
17116           ptr = xarray(ie)
17117        return
17118        end if
17119           if(xarray(ie-1).le.0.00001)go to 50
17120           if(xarray(ie).le.0.00001)go to 50
17121           if(earray(ie-1).le.0.00001)go to 50
17122           if(earray(ie).le.0.00001)go to 50
17123         if (earray(ie) .gt. xT) then
17124           ymin = alog(xarray(ie-1))
17125           ymax = alog(xarray(ie))
17126           xmin = alog(earray(ie-1))
17127           xmax = alog(earray(ie))
17128           ptr= exp(ymin + (alog(xT)-xmin)*(ymax-ymin)
17129      &    /(xmax-xmin) )
17130        if(ptr.gt.ptmax)ptr=ptmax
17131        return
17132        endif
17133 50      continue
17134        return
17135        end
17136
17137 **********************************
17138 **********************************
17139 *                                                                      *
17140 *                                                                      *
17141       SUBROUTINE XND(px,py,pz,srt,I1,I2,xinel,
17142      &               sigk,xsk1,xsk2,xsk3,xsk4,xsk5)
17143 *     PURPOSE:                                                         *
17144 *             calculate NUCLEON-BARYON RESONANCE inelatic Xsection     *
17145 *     NOTE   :                                                         *
17146 *     QUANTITIES:                                                 *
17147 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
17148 *                      N12,                                            *
17149 *                      M12=1 FOR p+n-->delta(+)+ n                     *
17150 *                          2     p+n-->delta(0)+ p                     *
17151 *                          3     p+p-->delta(++)+n                     *
17152 *                          4     p+p-->delta(+)+p                      *
17153 *                          5     n+n-->delta(0)+n                      *
17154 *                          6     n+n-->delta(-)+p                      *
17155 *                          7     n+p-->N*(0)(1440)+p                   *
17156 *                          8     n+p-->N*(+)(1440)+n                   *
17157 *                        9     p+p-->N*(+)(1535)+p                     *
17158 *                        10    n+n-->N*(0)(1535)+n                     *
17159 *                         11    n+p-->N*(+)(1535)+n                     *
17160 *                        12    n+p-->N*(0)(1535)+p
17161 *                        13    D(++)+D(-)-->N*(+)(1440)+n
17162 *                         14    D(++)+D(-)-->N*(0)(1440)+p
17163 *                        15    D(+)+D(0)--->N*(+)(1440)+n
17164 *                        16    D(+)+D(0)--->N*(0)(1440)+p
17165 *                        17    D(++)+D(0)-->N*(+)(1535)+p
17166 *                        18    D(++)+D(-)-->N*(0)(1535)+p
17167 *                        19    D(++)+D(-)-->N*(+)(1535)+n
17168 *                        20    D(+)+D(+)-->N*(+)(1535)+p
17169 *                        21    D(+)+D(0)-->N*(+)(1535)+n
17170 *                        22    D(+)+D(0)-->N*(0)(1535)+p
17171 *                        23    D(+)+D(-)-->N*(0)(1535)+n
17172 *                        24    D(0)+D(0)-->N*(0)(1535)+n
17173 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
17174 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
17175 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
17176 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
17177 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
17178 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
17179 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
17180 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
17181 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
17182 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
17183 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
17184 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
17185 *                            and more
17186 ***********************************
17187         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
17188      1  AMP=0.93828,AP1=0.13496,AKA=0.498,APHI=1.020,
17189      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
17190         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
17191         COMMON /AA/ R(3,MAXSTR)
17192 cc      SAVE /AA/
17193         COMMON /BB/ P(3,MAXSTR)
17194 cc      SAVE /BB/
17195         COMMON /CC/ E(MAXSTR)
17196 cc      SAVE /CC/
17197         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
17198 cc      SAVE /EE/
17199         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
17200 cc      SAVE /ff/
17201         common /gg/ dx,dy,dz,dpx,dpy,dpz
17202 cc      SAVE /gg/
17203         COMMON /INPUT/ NSTAR,NDIRCT,DIR
17204 cc      SAVE /INPUT/
17205         COMMON /NN/NNN
17206 cc      SAVE /NN/
17207         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
17208 cc      SAVE /BG/
17209         COMMON   /RUN/NUM
17210 cc      SAVE /RUN/
17211         COMMON   /PA/RPION(3,MAXSTR,MAXR)
17212 cc      SAVE /PA/
17213         COMMON   /PB/PPION(3,MAXSTR,MAXR)
17214 cc      SAVE /PB/
17215         COMMON   /PC/EPION(MAXSTR,MAXR)
17216 cc      SAVE /PC/
17217         COMMON   /PD/LPION(MAXSTR,MAXR)
17218 cc      SAVE /PD/
17219         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
17220 cc      SAVE /input1/
17221       SAVE   
17222
17223 *-----------------------------------------------------------------------
17224        xinel=0.
17225        sigk=0
17226        xsk1=0
17227        xsk2=0
17228        xsk3=0
17229        xsk4=0
17230        xsk5=0
17231         EM1=E(I1)
17232         EM2=E(I2)
17233       PR  = SQRT( PX**2 + PY**2 + PZ**2 )
17234 *     CAN HAPPEN ANY MORE ==> RETURN (2.04 = 2*AVMASS + PI-MASS+0.02)
17235         IF (SRT .LT. 2.04) RETURN
17236 * Resonance absorption or Delta + N-->N*(1440), N*(1535)
17237 * COM: TEST FOR DELTA OR N* ABSORPTION
17238 *      IN THE PROCESS DELTA+N-->NN, N*+N-->NN
17239         PRF=SQRT(0.25*SRT**2-AVMASS**2)
17240         IF(EM1.GT.1.)THEN
17241         DELTAM=EM1
17242         ELSE
17243         DELTAM=EM2
17244         ENDIF
17245         RENOM=DELTAM*PRF**2/DENOM(SRT,1.)/PR
17246         RENOMN=DELTAM*PRF**2/DENOM(SRT,2.)/PR
17247         RENOM1=DELTAM*PRF**2/DENOM(SRT,-1.)/PR
17248 * avoid the inelastic collisions between n+delta- -->N+N 
17249 *       and p+delta++ -->N+N due to charge conservation,
17250 *       but they can scatter to produce kaons 
17251        if((iabs(lb(i1)).eq.2).and.(iabs(lb(i2)).eq.6)) renom=0.
17252        if((iabs(lb(i2)).eq.2).and.(iabs(lb(i1)).eq.6)) renom=0.
17253        if((iabs(lb(i1)).eq.1).and.(iabs(lb(i2)).eq.9)) renom=0.
17254        if((iabs(lb(i2)).eq.1).and.(iabs(lb(i1)).eq.9)) renom=0.
17255        Call M1535(iabs(lb(i1)),iabs(lb(i2)),srt,x1535)
17256         X1440=(3./4.)*SIGMA(SRT,2,0,1)
17257 * CROSS SECTION FOR KAON PRODUCTION from the four channels
17258 * for NLK channel
17259        akp=0.498
17260        ak0=0.498
17261        ana=0.94
17262        ada=1.232
17263        al=1.1157
17264        as=1.1197
17265        xsk1=0
17266        xsk2=0
17267        xsk3=0
17268        xsk4=0
17269 c      !! phi production
17270        xsk5=0
17271        t1nlk=ana+al+akp
17272        if(srt.le.t1nlk)go to 222
17273        XSK1=1.5*PPLPK(SRT)
17274 * for DLK channel
17275        t1dlk=ada+al+akp
17276        t2dlk=ada+al-akp
17277        if(srt.le.t1dlk)go to 222
17278        es=srt
17279        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
17280        pmdlk=sqrt(pmdlk2)
17281        XSK3=1.5*PPLPK(srt)
17282 * for NSK channel
17283        t1nsk=ana+as+akp
17284        t2nsk=ana+as-akp
17285        if(srt.le.t1nsk)go to 222
17286        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
17287        pmnsk=sqrt(pmnsk2)
17288        XSK2=1.5*(PPK1(srt)+PPK0(srt))
17289 * for DSK channel
17290        t1DSk=aDa+aS+akp
17291        t2DSk=aDa+aS-akp
17292        if(srt.le.t1dsk)go to 222
17293        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
17294        pmDSk=sqrt(pmDSk2)
17295        XSK4=1.5*(PPK1(srt)+PPK0(srt))
17296 csp11/21/01
17297 c phi production
17298        if(srt.le.(2.*amn+aphi))go to 222
17299 c  !! mb put the correct form
17300          xsk5 = 0.0001
17301 csp11/21/01 end
17302
17303 * THE TOTAL KAON+ PRODUCTION CROSS SECTION IS THEN
17304 222       SIGK=XSK1+XSK2+XSK3+XSK4
17305
17306 cbz3/7/99 neutralk
17307         XSK1 = 2.0 * XSK1
17308         XSK2 = 2.0 * XSK2
17309         XSK3 = 2.0 * XSK3
17310         XSK4 = 2.0 * XSK4
17311         SIGK = 2.0 * SIGK + xsk5
17312 cbz3/7/99 neutralk end
17313
17314 * avoid the inelastic collisions between n+delta- -->N+N 
17315 *       and p+delta++ -->N+N due to charge conservation,
17316 *       but they can scatter to produce kaons 
17317        if(((iabs(lb(i1)).eq.2).and.(iabs(lb(i2)).eq.6)).OR. 
17318      &         ((iabs(lb(i2)).eq.2).and.(iabs(lb(i1)).eq.6)).OR.
17319      &         ((iabs(lb(i1)).eq.1).and.(iabs(lb(i2)).eq.9)).OR.
17320      &         ((iabs(lb(i2)).eq.1).and.(iabs(lb(i1)).eq.9)))THEN
17321        xinel=sigk
17322        return
17323        ENDIF
17324 * WE DETERMINE THE REACTION CHANNELS IN THE FOLLOWING
17325 * FOR n+delta(++)-->p+p or n+delta(++)-->n+N*(+)(1440),n+N*(+)(1535)
17326 * REABSORPTION OR N*(1535) PRODUCTION LIKE IN P+P OR N*(1440) LIKE PN, 
17327         IF(LB(I1)*LB(I2).EQ.18.AND.
17328      &    (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))then
17329         SIGND=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
17330         SIGDN=0.25*SIGND*RENOM
17331         xinel=SIGDN+X1440+X1535+SIGK
17332        RETURN
17333        endif
17334 * FOR p+delta(-)-->n+n or p+delta(-)-->n+N*(0)(1440),n+N*(0)(1535)
17335 * REABSORPTION OR N*(1535) PRODUCTION LIKE IN P+P OR N*(1440) LIKE PN, 
17336         IF(LB(I1)*LB(I2).EQ.6.AND.
17337      &    (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))THEN
17338         SIGND=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
17339         SIGDN=0.25*SIGND*RENOM
17340         xinel=SIGDN+X1440+X1535+SIGK
17341        RETURN
17342        endif
17343 * FOR p+delta(+)-->p+p, N*(+)(144)+p, N*(+)(1535)+p
17344 cbz11/25/98
17345         IF(LB(I1)*LB(I2).EQ.8.AND.
17346      &    (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))THEN
17347         SIGND=1.5*SIGMA(SRT,1,1,1)
17348         SIGDN=0.25*SIGND*RENOM
17349         xinel=SIGDN+x1440+x1535+SIGK
17350        RETURN
17351        endif
17352 * FOR n+delta(0)-->n+n, N*(0)(144)+n, N*(0)(1535)+n
17353         IF(LB(I1)*LB(I2).EQ.14.AND.
17354      &   (iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2))THEN
17355         SIGND=1.5*SIGMA(SRT,1,1,1)
17356         SIGDN=0.25*SIGND*RENOM
17357         xinel=SIGDN+x1440+x1535+SIGK
17358        RETURN
17359        endif
17360 * FOR n+delta(+)-->n+p, N*(+)(1440)+n,N*(0)(1440)+p,
17361 *                       N*(+)(1535)+n,N*(0)(1535)+p
17362         IF(LB(I1)*LB(I2).EQ.16.AND.
17363      &     (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))THEN
17364         SIGND=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
17365         SIGDN=0.5*SIGND*RENOM
17366         xinel=SIGDN+2.*x1440+2.*x1535+SIGK
17367        RETURN
17368        endif
17369 * FOR p+delta(0)-->n+p, N*(+)(1440)+n,N*(0)(1440)+p,
17370 *                       N*(+)(1535)+n,N*(0)(1535)+p
17371         IF(LB(I1)*LB(I2).EQ.7)THEN
17372         SIGND=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
17373         SIGDN=0.5*SIGND*RENOM
17374         xinel=SIGDN+2.*x1440+2.*x1535+SIGK
17375        RETURN
17376        endif
17377 * FOR p+N*(0)(14)-->p+n, N*(+)(1535)+n,N*(0)(1535)+p
17378 * OR  P+N*(0)(14)-->D(+)+N, D(0)+P, 
17379         IF(LB(I1)*LB(I2).EQ.10.AND.
17380      &   (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))then
17381         SIGND=(3./4.)*SIGMA(SRT,2,0,1)
17382         SIGDN=SIGND*RENOMN
17383         xinel=SIGDN+X1535+SIGK
17384        RETURN
17385        endif
17386 * FOR n+N*(+)-->p+n, N*(+)(1535)+n,N*(0)(1535)+p
17387         IF(LB(I1)*LB(I2).EQ.22.AND.
17388      &   (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))then
17389         SIGND=(3./4.)*SIGMA(SRT,2,0,1)
17390         SIGDN=SIGND*RENOMN
17391         xinel=SIGDN+X1535+SIGK
17392        RETURN
17393        endif
17394 * FOR N*(1535)+N-->N+N COLLISIONS
17395         IF((iabs(LB(I1)).EQ.12).OR.(iabs(LB(I1)).EQ.13).OR.
17396      1  (iabs(LB(I2)).EQ.12).OR.(iabs(LB(I2)).EQ.13))THEN
17397         SIGND=X1535
17398         SIGDN=SIGND*RENOM1
17399         xinel=SIGDN+SIGK
17400        RETURN
17401        endif
17402         RETURN
17403        end
17404 **********************************
17405 *                                                                      *
17406 *                                                                      *
17407       SUBROUTINE XDDIN(PX,PY,PZ,SRT,I1,I2,
17408      &XINEL,SIGK,XSK1,XSK2,XSK3,XSK4,XSK5)
17409 *     PURPOSE:                                                         *
17410 *             DEALING WITH BARYON RESONANCE-BARYON RESONANCE COLLISIONS*
17411 *     NOTE   :                                                         *
17412 *           VALID ONLY FOR BARYON-BARYON-DISTANCES LESS THAN 1.32 FM   *
17413 *           (1.32 = 2 * HARD-CORE-RADIUS [HRC] )                       *
17414 *     QUANTITIES:                                                 *
17415 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
17416 *           SRT      - SQRT OF S                                       *
17417 *           NSTAR =1 INCLUDING N* RESORANCE,ELSE NOT                   *
17418 *           NDIRCT=1 INCLUDING DIRECT PION PRODUCTION PROCESS         *
17419 *           IBLOCK   - THE INFORMATION BACK                            *
17420 *                      0-> COLLISION CANNOT HAPPEN                     *
17421 *                      1-> N-N ELASTIC COLLISION                       *
17422 *                      2-> N+N->N+DELTA,OR N+N->N+N* REACTION          *
17423 *                      3-> N+DELTA->N+N OR N+N*->N+N REACTION          *
17424 *                      4-> N+N->N+N+PION,DIRTCT PROCESS                *
17425 *                     5-> DELTA(N*)+DELTA(N*)   TOTAL   COLLISIONS    *
17426 *           N12       - IS USED TO SPECIFY BARYON-BARYON REACTION      *
17427 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
17428 *                      N12,                                            *
17429 *                      M12=1 FOR p+n-->delta(+)+ n                     *
17430 *                          2     p+n-->delta(0)+ p                     *
17431 *                          3     p+p-->delta(++)+n                     *
17432 *                          4     p+p-->delta(+)+p                      *
17433 *                          5     n+n-->delta(0)+n                      *
17434 *                          6     n+n-->delta(-)+p                      *
17435 *                          7     n+p-->N*(0)(1440)+p                   *
17436 *                          8     n+p-->N*(+)(1440)+n                   *
17437 *                        9     p+p-->N*(+)(1535)+p                     *
17438 *                        10    n+n-->N*(0)(1535)+n                     *
17439 *                         11    n+p-->N*(+)(1535)+n                     *
17440 *                        12    n+p-->N*(0)(1535)+p
17441 *                        13    D(++)+D(-)-->N*(+)(1440)+n
17442 *                         14    D(++)+D(-)-->N*(0)(1440)+p
17443 *                        15    D(+)+D(0)--->N*(+)(1440)+n
17444 *                        16    D(+)+D(0)--->N*(0)(1440)+p
17445 *                        17    D(++)+D(0)-->N*(+)(1535)+p
17446 *                        18    D(++)+D(-)-->N*(0)(1535)+p
17447 *                        19    D(++)+D(-)-->N*(+)(1535)+n
17448 *                        20    D(+)+D(+)-->N*(+)(1535)+p
17449 *                        21    D(+)+D(0)-->N*(+)(1535)+n
17450 *                        22    D(+)+D(0)-->N*(0)(1535)+p
17451 *                        23    D(+)+D(-)-->N*(0)(1535)+n
17452 *                        24    D(0)+D(0)-->N*(0)(1535)+n
17453 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
17454 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
17455 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
17456 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
17457 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
17458 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
17459 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
17460 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
17461 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
17462 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
17463 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
17464 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
17465 *                        +++
17466 *               AND MORE CHANNELS AS LISTED IN THE NOTE BOOK      
17467 *
17468 * NOTE ABOUT N*(1440) RESORANCE:                                       *
17469 *     As it has been discussed in VerWest's paper,I= 1 (initial isospin)
17470 *     channel can all be attributed to delta resorance while I= 0      *
17471 *     channel can all be  attribured to N* resorance.Only in n+p       *
17472 *     one can have I=0 channel so is the N*(1440) resorance            *
17473 * REFERENCES:    J. CUGNON ET AL., NUCL. PHYS. A352, 505 (1981)        *
17474 *                    Y. KITAZOE ET AL., PHYS. LETT. 166B, 35 (1986)    *
17475 *                    B. VerWest el al., PHYS. PRV. C25 (1982)1979      *
17476 *                    Gy. Wolf  et al, Nucl Phys A517 (1990) 615        *
17477 *                    CUTOFF = 2 * AVMASS + 20 MEV                      *
17478 *                                                                      *
17479 *       for N*(1535) we use the parameterization by Gy. Wolf et al     *
17480 *       Nucl phys A552 (1993) 349, added May 18, 1994                  *
17481 **********************************
17482         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
17483      1  AMP=0.93828,AP1=0.13496,AKA=0.498,APHI=1.020,
17484      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
17485         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
17486         COMMON /AA/ R(3,MAXSTR)
17487 cc      SAVE /AA/
17488         COMMON /BB/ P(3,MAXSTR)
17489 cc      SAVE /BB/
17490         COMMON /CC/ E(MAXSTR)
17491 cc      SAVE /CC/
17492         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
17493 cc      SAVE /EE/
17494         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
17495 cc      SAVE /ff/
17496         common /gg/ dx,dy,dz,dpx,dpy,dpz
17497 cc      SAVE /gg/
17498         COMMON /INPUT/ NSTAR,NDIRCT,DIR
17499 cc      SAVE /INPUT/
17500         COMMON /NN/NNN
17501 cc      SAVE /NN/
17502         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
17503 cc      SAVE /BG/
17504         COMMON   /RUN/NUM
17505 cc      SAVE /RUN/
17506         COMMON   /PA/RPION(3,MAXSTR,MAXR)
17507 cc      SAVE /PA/
17508         COMMON   /PB/PPION(3,MAXSTR,MAXR)
17509 cc      SAVE /PB/
17510         COMMON   /PC/EPION(MAXSTR,MAXR)
17511 cc      SAVE /PC/
17512         COMMON   /PD/LPION(MAXSTR,MAXR)
17513 cc      SAVE /PD/
17514         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
17515 cc      SAVE /input1/
17516       SAVE   
17517 *-----------------------------------------------------------------------
17518        XINEL=0
17519        SIGK=0
17520        XSK1=0
17521        XSK2=0
17522        XSK3=0
17523        XSK4=0
17524        XSK5=0
17525         EM1=E(I1)
17526         EM2=E(I2)
17527       PR  = SQRT( PX**2 + PY**2 + PZ**2 )
17528 *     IF THERE WERE 2 N*(1535) AND THEY DIDN'T SCATT. ELAST., 
17529 *     ALLOW THEM TO PRODUCE KAONS. NO OTHER INELASTIC CHANNELS
17530 *     ARE KNOWN
17531 C       if((lb(i1).ge.12).and.(lb(i2).ge.12))return
17532 *     ALL the inelastic collisions between N*(1535) and Delta as well
17533 *     as N*(1440) TO PRODUCE KAONS, NO OTHER CHANNELS ARE KNOWN
17534 C       if((lb(i1).ge.12).and.(lb(i2).ge.3))return
17535 C       if((lb(i2).ge.12).and.(lb(i1).ge.3))return
17536 *     calculate the N*(1535) production cross section in I1+I2 collisions
17537        call N1535(iabs(lb(i1)),iabs(lb(i2)),srt,X1535)
17538 c
17539 * for Delta+Delta-->N*(1440 OR 1535)+N AND N*(1440)+N*(1440)-->N*(1535)+X 
17540 *     AND DELTA+N*(1440)-->N*(1535)+X
17541 * WE ASSUME THEY HAVE THE SAME CROSS SECTIONS as CORRESPONDING N+N COLLISION):
17542 * FOR D++D0, D+D+,D+D-,D0D0,N*+N*+,N*0N*0,N*(+)D+,N*(+)D(-),N*(0)D(0)
17543 * N*(1535) production, kaon production and reabsorption through 
17544 * D(N*)+D(N*)-->NN are ALLOWED.
17545 * CROSS SECTION FOR KAON PRODUCTION from the four channels are
17546 * for NLK channel
17547        akp=0.498
17548        ak0=0.498
17549        ana=0.94
17550        ada=1.232
17551        al=1.1157
17552        as=1.1197
17553        xsk1=0
17554        xsk2=0
17555        xsk3=0
17556        xsk4=0
17557        t1nlk=ana+al+akp
17558        if(srt.le.t1nlk)go to 222
17559        XSK1=1.5*PPLPK(SRT)
17560 * for DLK channel
17561        t1dlk=ada+al+akp
17562        t2dlk=ada+al-akp
17563        if(srt.le.t1dlk)go to 222
17564        es=srt
17565        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
17566        pmdlk=sqrt(pmdlk2)
17567        XSK3=1.5*PPLPK(srt)
17568 * for NSK channel
17569        t1nsk=ana+as+akp
17570        t2nsk=ana+as-akp
17571        if(srt.le.t1nsk)go to 222
17572        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
17573        pmnsk=sqrt(pmnsk2)
17574        XSK2=1.5*(PPK1(srt)+PPK0(srt))
17575 * for DSK channel
17576        t1DSk=aDa+aS+akp
17577        t2DSk=aDa+aS-akp
17578        if(srt.le.t1dsk)go to 222
17579        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
17580        pmDSk=sqrt(pmDSk2)
17581        XSK4=1.5*(PPK1(srt)+PPK0(srt))
17582 csp11/21/01
17583 c phi production
17584        if(srt.le.(2.*amn+aphi))go to 222
17585 c  !! mb put the correct form
17586          xsk5 = 0.0001
17587 csp11/21/01 end
17588 * THE TOTAL KAON+ PRODUCTION CROSS SECTION IS THEN
17589 222       SIGK=XSK1+XSK2+XSK3+XSK4
17590
17591 cbz3/7/99 neutralk
17592         XSK1 = 2.0 * XSK1
17593         XSK2 = 2.0 * XSK2
17594         XSK3 = 2.0 * XSK3
17595         XSK4 = 2.0 * XSK4
17596         SIGK = 2.0 * SIGK + xsk5
17597 cbz3/7/99 neutralk end
17598
17599         IDD=iabs(LB(I1)*LB(I2))
17600 * The reabsorption cross section for the process
17601 * D(N*)D(N*)-->NN is
17602        s2d=reab2d(i1,i2,srt)
17603
17604 cbz3/16/99 pion
17605         S2D = 0.
17606 cbz3/16/99 pion end
17607
17608 *(1) N*(1535)+D(N*(1440)) reactions
17609 *    we allow kaon production and reabsorption only
17610        if(((iabs(lb(i1)).ge.12).and.(iabs(lb(i2)).ge.12)).OR.
17611      &       ((iabs(lb(i1)).ge.12).and.(iabs(lb(i2)).ge.6)).OR.
17612      &       ((iabs(lb(i2)).ge.12).and.(iabs(lb(i1)).ge.6)))THEN
17613        XINEL=sigk+s2d
17614        RETURN
17615        ENDIF
17616 * channels have the same charge as pp 
17617         IF((IDD.EQ.63).OR.(IDD.EQ.64).OR.(IDD.EQ.48).
17618      1  OR.(IDD.EQ.49).OR.(IDD.EQ.11*11).OR.(IDD.EQ.10*10).
17619      2  OR.(IDD.EQ.88).OR.(IDD.EQ.66).
17620      3  OR.(IDD.EQ.90).OR.(IDD.EQ.70))THEN
17621         XINEL=X1535+SIGK+s2d
17622        RETURN
17623         ENDIF
17624 * IN DELTA+N*(1440) and N*(1440)+N*(1440) COLLISIONS, 
17625 * N*(1535), kaon production and reabsorption are ALLOWED
17626 * IN N*(1440)+N*(1440) COLLISIONS, ONLY N*(1535) IS ALLOWED
17627        IF((IDD.EQ.110).OR.(IDD.EQ.77).OR.(IDD.EQ.80))THEN
17628        XINEL=X1535+SIGK+s2d
17629        RETURN
17630        ENDIF       
17631        IF((IDD.EQ.54).OR.(IDD.EQ.56))THEN
17632 * LIKE FOR N+P COLLISION, 
17633 * IN DELTA+DELTA COLLISIONS BOTH N*(1440) AND N*(1535) CAN BE PRODUCED
17634         SIG2=(3./4.)*SIGMA(SRT,2,0,1)
17635         XINEL=2.*(SIG2+X1535)+SIGK+s2d
17636        RETURN
17637        ENDIF
17638        RETURN
17639        END
17640 ******************************************
17641       real function dirct1(srt)
17642 *  This function contains the experimental, direct pion(+) + p cross sections *
17643 *  srt    = DSQRT(s) in GeV                                                   *
17644 *  dirct1  = cross section in fm**2                                     *
17645 *  earray = EXPerimental table with the srt            
17646 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17647 ******************************************
17648 c      real*4   xarray(122), earray(122)
17649       real   xarray(122), earray(122)
17650       SAVE   
17651       data   earray /
17652      &1.568300,1.578300,1.588300,1.598300,1.608300,1.618300,1.628300,    
17653      &1.638300,1.648300,1.658300,1.668300,1.678300,1.688300,1.698300,    
17654      &1.708300,1.718300,1.728300,1.738300,1.748300,1.758300,1.768300,    
17655      &1.778300,1.788300,1.798300,1.808300,1.818300,1.828300,1.838300,    
17656      &1.848300,1.858300,1.868300,1.878300,1.888300,1.898300,1.908300,    
17657      &1.918300,1.928300,1.938300,1.948300,1.958300,1.968300,1.978300,    
17658      &1.988300,1.998300,2.008300,2.018300,2.028300,2.038300,2.048300,    
17659      &2.058300,2.068300,2.078300,2.088300,2.098300,2.108300,2.118300,    
17660      &2.128300,2.138300,2.148300,2.158300,2.168300,2.178300,2.188300,    
17661      &2.198300,2.208300,2.218300,2.228300,2.238300,2.248300,2.258300,    
17662      &2.268300,2.278300,2.288300,2.298300,2.308300,2.318300,2.328300,    
17663      &2.338300,2.348300,2.358300,2.368300,2.378300,2.388300,2.398300,    
17664      &2.408300,2.418300,2.428300,2.438300,2.448300,2.458300,2.468300,    
17665      &2.478300,2.488300,2.498300,2.508300,2.518300,2.528300,2.538300,    
17666      &2.548300,2.558300,2.568300,2.578300,2.588300,2.598300,2.608300,    
17667      &2.618300,2.628300,2.638300,2.648300,2.658300,2.668300,2.678300,
17668      &2.688300,2.698300,2.708300,2.718300,2.728300,2.738300,2.748300,    
17669      &2.758300,2.768300,2.778300/
17670       data xarray/
17671      &1.7764091E-02,0.5643668,0.8150568,1.045565,2.133695,3.327922,
17672      &4.206488,3.471242,4.486876,5.542213,6.800052,7.192446,6.829848,    
17673      &6.580306,6.868410,8.527946,10.15720,9.716511,9.298335,8.901310,    
17674      &10.31213,10.52185,11.17630,11.61639,12.05577,12.71596,13.46036,    
17675      &14.22060,14.65449,14.94775,14.93310,15.32907,16.56481,16.29422,    
17676      &15.18548,14.12658,13.72544,13.24488,13.31003,14.42680,12.84423,    
17677      &12.49025,12.14858,11.81870,11.18993,11.35816,11.09447,10.83873,    
17678      &10.61592,10.53754,9.425521,8.195912,9.661075,9.696192,9.200142,    
17679      &8.953734,8.715461,8.484999,8.320765,8.255512,8.190969,8.127125,    
17680      &8.079508,8.073004,8.010611,7.948909,7.887895,7.761005,7.626290,    
17681      &7.494696,7.366132,7.530178,8.392097,9.046881,8.962544,8.879403,    
17682      &8.797427,8.716601,8.636904,8.558312,8.404368,8.328978,8.254617,    
17683      &8.181265,8.108907,8.037527,7.967100,7.897617,7.829057,7.761405,    
17684      &7.694647,7.628764,7.563742,7.499570,7.387562,7.273281,7.161334,    
17685      &6.973375,6.529592,6.280323,6.293136,6.305725,6.318097,6.330258,    
17686      &6.342214,6.353968,6.365528,6.376895,6.388079,6.399081,6.409906,    
17687      &6.420560,6.431045,6.441367,6.451529,6.461533,6.471386,6.481091,    
17688      &6.490650,6.476413,6.297259,6.097826/
17689
17690       dirct1=0
17691       if (srt .lt. earray(1)) then
17692         dirct1 = 0.00001
17693         return
17694       end if
17695       if (srt .gt. earray(122)) then
17696         dirct1 = xarray(122)
17697        dirct1=dirct1/10.
17698         return
17699       end if
17700 *
17701 *Interpolate double logarithmically to find xdirct2(srt)
17702 *
17703       do 1001 ie = 1,122
17704         if (earray(ie) .eq. srt) then
17705           dirct1= xarray(ie)
17706          dirct1=dirct1/10.
17707           return
17708        endif
17709         if (earray(ie) .gt. srt) then
17710           ymin = alog(xarray(ie-1))
17711           ymax = alog(xarray(ie))
17712           xmin = alog(earray(ie-1))
17713           xmax = alog(earray(ie))
17714           dirct1= exp(ymin + (alog(srt)-xmin)
17715      &          *(ymax-ymin)/(xmax-xmin) )
17716        dirct1=dirct1/10.
17717        go to 50
17718         end if
17719  1001 continue
17720 50       continue
17721         return
17722         END
17723 *******************************
17724 ******************************************
17725       real function dirct2(srt)
17726 *  This function contains the experimental, direct pion(-) + p cross sections *
17727 *  srt    = DSQRT(s) in GeV                                                   *
17728 *  dirct2 = cross section in fm**2
17729 *  earray = EXPerimental table with the srt            
17730 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17731 ******************************************
17732 c      real*4   xarray(122), earray(122)
17733       real   xarray(122), earray(122)
17734       SAVE   
17735       data   earray /
17736      &1.568300,1.578300,1.588300,1.598300,1.608300,1.618300,1.628300,    
17737      &1.638300,1.648300,1.658300,1.668300,1.678300,1.688300,1.698300,    
17738      &1.708300,1.718300,1.728300,1.738300,1.748300,1.758300,1.768300,    
17739      &1.778300,1.788300,1.798300,1.808300,1.818300,1.828300,1.838300,    
17740      &1.848300,1.858300,1.868300,1.878300,1.888300,1.898300,1.908300,    
17741      &1.918300,1.928300,1.938300,1.948300,1.958300,1.968300,1.978300,    
17742      &1.988300,1.998300,2.008300,2.018300,2.028300,2.038300,2.048300,    
17743      &2.058300,2.068300,2.078300,2.088300,2.098300,2.108300,2.118300,    
17744      &2.128300,2.138300,2.148300,2.158300,2.168300,2.178300,2.188300,    
17745      &2.198300,2.208300,2.218300,2.228300,2.238300,2.248300,2.258300,    
17746      &2.268300,2.278300,2.288300,2.298300,2.308300,2.318300,2.328300,    
17747      &2.338300,2.348300,2.358300,2.368300,2.378300,2.388300,2.398300,    
17748      &2.408300,2.418300,2.428300,2.438300,2.448300,2.458300,2.468300,    
17749      &2.478300,2.488300,2.498300,2.508300,2.518300,2.528300,2.538300,    
17750      &2.548300,2.558300,2.568300,2.578300,2.588300,2.598300,2.608300,    
17751      &2.618300,2.628300,2.638300,2.648300,2.658300,2.668300,2.678300,
17752      &2.688300,2.698300,2.708300,2.718300,2.728300,2.738300,2.748300,    
17753      &2.758300,2.768300,2.778300/
17754       data xarray/0.5773182,1.404156,2.578629,3.832013,4.906011,
17755      &9.076963,13.10492,10.65975,15.31156,19.77611,19.92874,18.68979,    
17756      &19.80114,18.39536,14.34269,13.35353,13.58822,14.57031,10.24686,    
17757      &11.23386,9.764803,10.35652,10.53539,10.07524,9.582198,9.596469,    
17758      &9.818489,9.012848,9.378012,9.529244,9.529698,8.835624,6.671396,    
17759      &8.797758,8.133437,7.866227,7.823946,7.808504,7.791755,7.502062,    
17760      &7.417275,7.592349,7.752028,7.910585,8.068122,8.224736,8.075289,    
17761      &7.895902,7.721359,7.551512,7.386224,7.225343,7.068739,6.916284,    
17762      &6.767842,6.623294,6.482520,6.345404,6.211833,7.339510,7.531462,    
17763      &7.724824,7.919620,7.848021,7.639856,7.571083,7.508881,7.447474,    
17764      &7.386855,7.327011,7.164454,7.001266,6.842526,6.688094,6.537823,    
17765      &6.391583,6.249249,6.110689,5.975790,5.894200,5.959503,6.024602,    
17766      &6.089505,6.154224,6.218760,6.283128,6.347331,6.297411,6.120248,    
17767      &5.948606,6.494864,6.357106,6.222824,6.091910,5.964267,5.839795,    
17768      &5.718402,5.599994,5.499146,5.451325,5.404156,5.357625,5.311721,    
17769      &5.266435,5.301964,5.343963,5.385833,5.427577,5.469200,5.510702,    
17770      &5.552088,5.593359,5.634520,5.675570,5.716515,5.757356,5.798093,    
17771      &5.838732,5.879272,5.919717,5.960068,5.980941/
17772
17773       dirct2=0.
17774       if (srt .lt. earray(1)) then
17775         dirct2 = 0.00001
17776         return
17777       end if
17778       if (srt .gt. earray(122)) then
17779         dirct2 = xarray(122)
17780        dirct2=dirct2/10.
17781         return
17782       end if
17783 *
17784 *Interpolate double logarithmically to find xdirct2(srt)
17785 *
17786       do 1001 ie = 1,122
17787         if (earray(ie) .eq. srt) then
17788           dirct2= xarray(ie)
17789          dirct2=dirct2/10.
17790           return
17791        endif
17792         if (earray(ie) .gt. srt) then
17793           ymin = alog(xarray(ie-1))
17794           ymax = alog(xarray(ie))
17795           xmin = alog(earray(ie-1))
17796           xmax = alog(earray(ie))
17797           dirct2= exp(ymin + (alog(srt)-xmin)
17798      &          *(ymax-ymin)/(xmax-xmin) )
17799        dirct2=dirct2/10.
17800        go to 50
17801         end if
17802  1001 continue
17803 50       continue
17804         return
17805         END
17806 *******************************
17807 ******************************
17808 * this program calculates the elastic cross section for rho+nucleon
17809 * through higher resonances
17810 c       real*4 function ErhoN(em1,em2,lb1,lb2,srt)
17811        real function ErhoN(em1,em2,lb1,lb2,srt)
17812 * date : Dec. 19, 1994
17813 * ****************************
17814 c       implicit real*4 (a-h,o-z)
17815       dimension   arrayj(19),arrayl(19),arraym(19),
17816      &arrayw(19),arrayb(19)
17817       SAVE   
17818       data arrayj /0.5,1.5,0.5,0.5,2.5,2.5,1.5,0.5,1.5,3.5,
17819      &1.5,0.5,1.5,0.5,2.5,0.5,1.5,2.5,3.5/
17820       data arrayl/1,2,0,0,2,3,2,1,1,3,
17821      &1,0,2,0,3,1,1,2,3/
17822       data arraym /1.44,1.52,1.535,1.65,1.675,1.68,1.70,1.71,
17823      &1.72,1.99,1.60,1.62,1.70,1.90,1.905,1.910,
17824      &1.86,1.93,1.95/
17825       data arrayw/0.2,0.125,0.15,0.15,0.155,0.125,0.1,0.11,
17826      &0.2,0.29,0.25,0.16,0.28,0.15,0.3,0.22,0.25,
17827      &0.25,0.24/
17828       data arrayb/0.15,0.20,0.05,0.175,0.025,0.125,0.1,0.20,
17829      &0.53,0.34,0.05,0.07,0.15,0.45,0.45,0.058,
17830      &0.08,0.12,0.08/
17831
17832 * the minimum energy for pion+delta collision
17833        pi=3.1415926
17834        xs=0
17835 * include contribution from each resonance
17836        do 1001 ir=1,19
17837 cbz11/25/98
17838        IF(IR.LE.8)THEN
17839 c       if(lb1*lb2.eq.27.OR.LB1*LB2.EQ.25*2)branch=0.
17840 c       if(lb1*lb2.eq.26.OR.LB1*LB2.EQ.26*2)branch=1./3.
17841 c       if(lb1*lb2.eq.27*2.OR.LB1*LB2.EQ.25)branch=2./3.
17842 c       ELSE
17843 c       if(lb1*lb2.eq.27.OR.LB1*LB2.EQ.25*2)branch=1.
17844 c       if(lb1*lb2.eq.26.OR.LB1*LB2.EQ.26*2)branch=2./3.
17845 c       if(lb1*lb2.eq.27*2.OR.LB1*LB2.EQ.25)branch=1./3.
17846 c       ENDIF
17847        if( ((lb1*lb2.eq.27.AND.(LB1.EQ.1.OR.LB2.EQ.1)).OR.
17848      &     (LB1*LB2.EQ.25*2.AND.(LB1.EQ.2.OR.LB2.EQ.2)))
17849      &       .OR.((lb1*lb2.eq.-25.AND.(LB1.EQ.-1.OR.LB2.EQ.-1)).OR.
17850      &     (LB1*LB2.EQ.-27*2.AND.(LB1.EQ.-2.OR.LB2.EQ.-2))) )
17851      &     branch=0.
17852         if((iabs(lb1*lb2).eq.26.AND.(iabs(LB1).EQ.1.OR.iabs(LB2).EQ.1))
17853      &   .OR.(iabs(LB1*LB2).EQ.26*2
17854      &   .AND.(iabs(LB1).EQ.2.OR.iabs(LB2).EQ.2)))
17855      &     branch=1./3.
17856        if( ((lb1*lb2.eq.27*2.AND.(LB1.EQ.2.OR.LB2.EQ.2)).OR.
17857      &     (LB1*LB2.EQ.25.AND.(LB1.EQ.1.OR.LB2.EQ.1)))
17858      &  .OR.((lb1*lb2.eq.-25*2.AND.(LB1.EQ.-2.OR.LB2.EQ.-2)).OR.
17859      &     (LB1*LB2.EQ.-27.AND.(LB1.EQ.-1.OR.LB2.EQ.-1))) )
17860      &     branch=2./3.
17861        ELSE
17862        if( ((lb1*lb2.eq.27.AND.(LB1.EQ.1.OR.LB2.EQ.1)).OR.
17863      &     (LB1*LB2.EQ.25*2.AND.(LB1.EQ.2.OR.LB2.EQ.2)))
17864      &       .OR.((lb1*lb2.eq.-25.AND.(LB1.EQ.-1.OR.LB2.EQ.-1)).OR.
17865      &     (LB1*LB2.EQ.-27*2.AND.(LB1.EQ.-2.OR.LB2.EQ.-2))) )
17866      &     branch=1.
17867         if((iabs(lb1*lb2).eq.26.AND.(iabs(LB1).EQ.1.OR.iabs(LB2).EQ.1))
17868      &   .OR.(iabs(LB1*LB2).EQ.26*2
17869      &   .AND.(iabs(LB1).EQ.2.OR.iabs(LB2).EQ.2)))
17870      &     branch=2./3.
17871        if( ((lb1*lb2.eq.27*2.AND.(LB1.EQ.2.OR.LB2.EQ.2)).OR.
17872      &     (LB1*LB2.EQ.25.AND.(LB1.EQ.1.OR.LB2.EQ.1)))
17873      &  .OR.((lb1*lb2.eq.-25*2.AND.(LB1.EQ.-2.OR.LB2.EQ.-2)).OR.
17874      &     (LB1*LB2.EQ.-27.AND.(LB1.EQ.-1.OR.LB2.EQ.-1))) )
17875      &     branch=1./3.
17876        ENDIF
17877 cbz11/25/98end
17878        xs0=fdR(arraym(ir),arrayj(ir),arrayl(ir),
17879      &arrayw(ir),arrayb(ir),srt,EM1,EM2)
17880        xs=xs+1.3*pi*branch*xs0*(0.1973)**2
17881  1001 continue
17882        Erhon=xs
17883        return
17884        end
17885 ***************************8
17886 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
17887 *KITAZOE'S FORMULA
17888 c        REAL*4 FUNCTION FDR(DMASS,aj,al,width,widb0,srt,em1,em2)
17889       REAL FUNCTION FDR(DMASS,aj,al,width,widb0,srt,em1,em2)
17890       SAVE   
17891         AMd=em1
17892         AmP=em2
17893            Ak02= 0.25*(DMASS**2-amd**2-amp**2)**2
17894      &           -(Amp*amd)**2
17895             IF (ak02 .GT. 0.) THEN
17896               Q0 = SQRT(ak02/DMASS)
17897             ELSE
17898               Q0= 0.0
17899              fdR=0
17900            return
17901             END IF
17902            Ak2= 0.25*(srt**2-amd**2-amp**2)**2
17903      &           -(Amp*amd)**2
17904             IF (ak2 .GT. 0.) THEN
17905               Q = SQRT(ak2/DMASS)
17906             ELSE
17907               Q= 0.00
17908              fdR=0
17909              return
17910             END IF
17911        b=widb0*1.2*dmass/srt*(q/q0)**(2.*al+1)
17912      &  /(1.+0.2*(q/q0)**(2*al))
17913         FDR=(2.*aj+1)*WIDTH**2*b/((srt-dmass)**2
17914      1  +0.25*WIDTH**2)/(6.*q**2)
17915         RETURN
17916         END
17917 ******************************
17918 * this program calculates the elastic cross section for pion+delta
17919 * through higher resonances
17920 c       REAL*4 FUNCTION DIRCT3(SRT)
17921       REAL FUNCTION DIRCT3(SRT)
17922 * date : Dec. 19, 1994
17923 * ****************************
17924 c     implicit real*4 (a-h,o-z)
17925       dimension   arrayj(17),arrayl(17),arraym(17),
17926      &arrayw(17),arrayb(17)
17927       SAVE   
17928       data arrayj /1.5,0.5,2.5,2.5,1.5,0.5,1.5,3.5,
17929      &1.5,0.5,1.5,0.5,2.5,0.5,1.5,2.5,3.5/
17930       data arrayl/2,0,2,3,2,1,1,3,
17931      &1,0,2,0,3,1,1,2,3/
17932       data arraym /1.52,1.65,1.675,1.68,1.70,1.71,
17933      &1.72,1.99,1.60,1.62,1.70,1.90,1.905,1.910,
17934      &1.86,1.93,1.95/
17935       data arrayw/0.125,0.15,0.155,0.125,0.1,0.11,
17936      &0.2,0.29,0.25,0.16,0.28,0.15,0.3,0.22,0.25,
17937      &0.25,0.24/
17938       data arrayb/0.55,0.6,0.375,0.6,0.1,0.15,
17939      &0.15,0.05,0.35,0.3,0.15,0.1,0.1,0.22,
17940      &0.2,0.09,0.4/
17941
17942 * the minimum energy for pion+delta collision
17943        pi=3.1415926
17944        amn=0.938
17945        amp=0.138
17946        xs=0
17947 * include contribution from each resonance
17948        branch=1./3.
17949        do 1001 ir=1,17
17950        if(ir.gt.8)branch=2./3.
17951        xs0=fd1(arraym(ir),arrayj(ir),arrayl(ir),
17952      &arrayw(ir),arrayb(ir),srt)
17953        xs=xs+1.3*pi*branch*xs0*(0.1973)**2
17954  1001   continue
17955        DIRCT3=XS
17956        RETURN
17957        end
17958 ***************************8
17959 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
17960 *KITAZOE'S FORMULA
17961 c        REAL*4 FUNCTION FD1(DMASS,aj,al,width,widb0,srt)
17962       REAL FUNCTION FD1(DMASS,aj,al,width,widb0,srt)
17963       SAVE   
17964         AMN=0.938
17965         AmP=0.138
17966        amd=amn
17967            Ak02= 0.25*(DMASS**2-amd**2-amp**2)**2
17968      &           -(Amp*amd)**2
17969             IF (ak02 .GT. 0.) THEN
17970               Q0 = SQRT(ak02/DMASS)
17971             ELSE
17972               Q0= 0.0
17973              fd1=0
17974            return
17975             END IF
17976            Ak2= 0.25*(srt**2-amd**2-amp**2)**2
17977      &           -(Amp*amd)**2
17978             IF (ak2 .GT. 0.) THEN
17979               Q = SQRT(ak2/DMASS)
17980             ELSE
17981               Q= 0.00
17982              fd1=0
17983              return
17984             END IF
17985        b=widb0*1.2*dmass/srt*(q/q0)**(2.*al+1)
17986      &  /(1.+0.2*(q/q0)**(2*al))
17987         FD1=(2.*aj+1)*WIDTH**2*b/((srt-dmass)**2
17988      1  +0.25*WIDTH**2)/(2.*q**2)
17989         RETURN
17990         END
17991 ******************************
17992 * this program calculates the elastic cross section for pion+delta
17993 * through higher resonances
17994 c       REAL*4 FUNCTION DPION(EM1,EM2,LB1,LB2,SRT)
17995       REAL FUNCTION DPION(EM1,EM2,LB1,LB2,SRT)
17996 * date : Dec. 19, 1994
17997 * ****************************
17998 c     implicit real*4 (a-h,o-z)
17999       dimension   arrayj(19),arrayl(19),arraym(19),
18000      &arrayw(19),arrayb(19)
18001       SAVE   
18002       data arrayj /0.5,1.5,0.5,0.5,2.5,2.5,1.5,0.5,1.5,3.5,
18003      &1.5,0.5,1.5,0.5,2.5,0.5,1.5,2.5,3.5/
18004       data arrayl/1,2,0,0,2,3,2,1,1,3,
18005      &1,0,2,0,3,1,1,2,3/
18006       data arraym /1.44,1.52,1.535,1.65,1.675,1.68,1.70,1.71,
18007      &1.72,1.99,1.60,1.62,1.70,1.90,1.905,1.910,
18008      &1.86,1.93,1.95/
18009       data arrayw/0.2,0.125,0.15,0.15,0.155,0.125,0.1,0.11,
18010      &0.2,0.29,0.25,0.16,0.28,0.15,0.3,0.22,0.25,
18011      &0.25,0.24/
18012       data arrayb/0.15,0.25,0.,0.05,0.575,0.125,0.379,0.10,
18013      &0.10,0.062,0.45,0.60,0.6984,0.05,0.25,0.089,
18014      &0.19,0.2,0.13/
18015
18016 * the minimum energy for pion+delta collision
18017        pi=3.1415926
18018        amn=0.94
18019        amp=0.14
18020        xs=0
18021 * include contribution from each resonance
18022        do 1001 ir=1,19
18023        BRANCH=0.
18024 cbz11/25/98
18025        if(ir.LE.8)THEN
18026 c       IF(LB1*LB2.EQ.5*7.OR.LB1*LB2.EQ.3*8)branch=1./6.
18027 c       IF(LB1*LB2.EQ.4*7.OR.LB1*LB2.EQ.4*8)branch=1./3.
18028 c       IF(LB1*LB2.EQ.5*6.OR.LB1*LB2.EQ.3*9)branch=1./2.
18029 c       ELSE
18030 c       IF(LB1*LB2.EQ.5*8.OR.LB1*LB2.EQ.5*6)branch=2./5.
18031 c       IF(LB1*LB2.EQ.3*9.OR.LB1*LB2.EQ.3*7)branch=2./5.
18032 c       IF(LB1*LB2.EQ.5*7.OR.LB1*LB2.EQ.3*8)branch=8./15.
18033 c       IF(LB1*LB2.EQ.4*7.OR.LB1*LB2.EQ.4*8)branch=1./15.
18034 c       IF(LB1*LB2.EQ.4*9.OR.LB1*LB2.EQ.4*6)branch=3./5.
18035 c       ENDIF
18036        IF( ((LB1*LB2.EQ.5*7.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18037      &     (LB1*LB2.EQ.3*8.AND.(LB1.EQ.3.OR.LB2.EQ.3)))
18038      &       .OR.((LB1*LB2.EQ.-3*7.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18039      &     (LB1*LB2.EQ.-5*8.AND.(LB1.EQ.5.OR.LB2.EQ.5))) )
18040      &     branch=1./6.
18041        IF((iabs(LB1*LB2).EQ.4*7.AND.(LB1.EQ.4.OR.LB2.EQ.4)).OR.
18042      &     (iabs(LB1*LB2).EQ.4*8.AND.(LB1.EQ.4.OR.LB2.EQ.4)))
18043      &     branch=1./3.
18044        IF( ((LB1*LB2.EQ.5*6.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18045      &     (LB1*LB2.EQ.3*9.AND.(LB1.EQ.3.OR.LB2.EQ.3)))
18046      &       .OR.((LB1*LB2.EQ.-3*6.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18047      &     (LB1*LB2.EQ.-5*9.AND.(LB1.EQ.5.OR.LB2.EQ.5))) )
18048      &     branch=1./2.
18049        ELSE
18050        IF( ((LB1*LB2.EQ.5*8.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18051      &     (LB1*LB2.EQ.5*6.AND.(LB1.EQ.5.OR.LB2.EQ.5)))
18052      &        .OR.((LB1*LB2.EQ.-3*8.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18053      &     (LB1*LB2.EQ.-3*6.AND.(LB1.EQ.3.OR.LB2.EQ.3))) )
18054      &     branch=2./5.
18055        IF( ((LB1*LB2.EQ.3*9.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18056      &     (LB1*LB2.EQ.3*7.AND.(LB1.EQ.3.OR.LB2.EQ.3)))
18057      &        .OR. ((LB1*LB2.EQ.-5*9.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18058      &     (LB1*LB2.EQ.-5*7.AND.(LB1.EQ.5.OR.LB2.EQ.5))) )
18059      &     branch=2./5.
18060        IF( ((LB1*LB2.EQ.5*7.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18061      &     (LB1*LB2.EQ.3*8.AND.(LB1.EQ.3.OR.LB2.EQ.3)))
18062      &        .OR.((LB1*LB2.EQ.-3*7.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18063      &     (LB1*LB2.EQ.-5*8.AND.(LB1.EQ.5.OR.LB2.EQ.5))) )
18064      &     branch=8./15.
18065        IF((iabs(LB1*LB2).EQ.4*7.AND.(LB1.EQ.4.OR.LB2.EQ.4)).OR.
18066      &     (iabs(LB1*LB2).EQ.4*8.AND.(LB1.EQ.4.OR.LB2.EQ.4)))
18067      &     branch=1./15.
18068        IF((iabs(LB1*LB2).EQ.4*9.AND.(LB1.EQ.4.OR.LB2.EQ.4)).OR.
18069      &     (iabs(LB1*LB2).EQ.4*6.AND.(LB1.EQ.4.OR.LB2.EQ.4)))
18070      &     branch=3./5.
18071        ENDIF
18072 cbz11/25/98end
18073        xs0=fd2(arraym(ir),arrayj(ir),arrayl(ir),
18074      &arrayw(ir),arrayb(ir),EM1,EM2,srt)
18075        xs=xs+1.3*pi*branch*xs0*(0.1973)**2
18076  1001   continue
18077        DPION=XS
18078        RETURN
18079        end
18080 ***************************8
18081 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
18082 *KITAZOE'S FORMULA
18083 c        REAL*4 FUNCTION FD2(DMASS,aj,al,width,widb0,EM1,EM2,srt)
18084       REAL FUNCTION FD2(DMASS,aj,al,width,widb0,EM1,EM2,srt)
18085       SAVE   
18086         AmP=EM1
18087        amd=EM2
18088            Ak02= 0.25*(DMASS**2-amd**2-amp**2)**2
18089      &           -(Amp*amd)**2
18090             IF (ak02 .GT. 0.) THEN
18091               Q0 = SQRT(ak02/DMASS)
18092             ELSE
18093               Q0= 0.0
18094              fd2=0
18095            return
18096             END IF
18097            Ak2= 0.25*(srt**2-amd**2-amp**2)**2
18098      &           -(Amp*amd)**2
18099             IF (ak2 .GT. 0.) THEN
18100               Q = SQRT(ak2/DMASS)
18101             ELSE
18102               Q= 0.00
18103              fd2=0
18104              return
18105             END IF
18106        b=widb0*1.2*dmass/srt*(q/q0)**(2.*al+1)
18107      &  /(1.+0.2*(q/q0)**(2*al))
18108         FD2=(2.*aj+1)*WIDTH**2*b/((srt-dmass)**2
18109      1  +0.25*WIDTH**2)/(4.*q**2)
18110         RETURN
18111         END
18112 ***************************8
18113 *   MASS GENERATOR for two resonances simultaneously
18114        subroutine Rmasdd(srt,am10,am20,
18115      &dmin1,dmin2,ISEED,ic,dm1,dm2)
18116       COMMON/RNDF77/NSEED
18117 cc      SAVE /RNDF77/
18118       SAVE   
18119        ISEED=ISEED
18120        amn=0.94
18121        amp=0.14
18122 * the maximum mass for resonance 1
18123          dmax1=srt-dmin2
18124 * generate the mass for the first resonance
18125  5        NTRY1=0
18126          ntry2=0
18127          ntry=0
18128          ictrl=0
18129 10        DM1 = RANART(NSEED) * (DMAX1-DMIN1) + DMIN1
18130           NTRY1=NTRY1+1
18131 * the maximum mass for resonance 2 
18132          if(ictrl.eq.0)dmax2=srt-dm1
18133 * generate the mass for the second resonance
18134 20         dm2=RANART(NSEED)*(dmax2-dmin2)+dmin2
18135           NTRY2=NTRY2+1
18136 * check the energy-momentum conservation with two masses
18137 * q2 in the following is q**2*4*srt**2
18138          q2=((srt**2-dm1**2-dm2**2)**2-4.*dm1**2*dm2**2)
18139          if(q2.le.0)then
18140          dmax2=dm2-0.01
18141 c         dmax1=dm1-0.01
18142          ictrl=1
18143          go to 20
18144          endif
18145 * determine the weight of the mass pair         
18146           IF(DMAX1.LT.am10) THEN
18147           if(ic.eq.1)FM1=Fmassd(DMAX1)
18148           if(ic.eq.2)FM1=Fmassn(DMAX1)
18149           if(ic.eq.3)FM1=Fmassd(DMAX1)
18150           if(ic.eq.4)FM1=Fmassd(DMAX1)
18151           ELSE
18152           if(ic.eq.1)FM1=Fmassd(am10)
18153           if(ic.eq.2)FM1=Fmassn(am10)
18154           if(ic.eq.3)FM1=Fmassd(am10)
18155           if(ic.eq.4)FM1=Fmassd(am10)
18156           ENDIF
18157           IF(DMAX2.LT.am20) THEN
18158           if(ic.eq.1)FM2=Fmassd(DMAX2)
18159           if(ic.eq.2)FM2=Fmassn(DMAX2)
18160           if(ic.eq.3)FM2=Fmassn(DMAX2)
18161           if(ic.eq.4)FM2=Fmassr(DMAX2)
18162           ELSE
18163           if(ic.eq.1)FM2=Fmassd(am20)
18164           if(ic.eq.2)FM2=Fmassn(am20)
18165           if(ic.eq.3)FM2=Fmassn(am20)
18166           if(ic.eq.4)FM2=Fmassr(am20)
18167           ENDIF
18168           IF(FM1.EQ.0.)FM1=1.e-04
18169           IF(FM2.EQ.0.)FM2=1.e-04
18170          prob0=fm1*fm2
18171           if(ic.eq.1)prob=Fmassd(dm1)*fmassd(dm2)
18172           if(ic.eq.2)prob=Fmassn(dm1)*fmassn(dm2)
18173           if(ic.eq.3)prob=Fmassd(dm1)*fmassn(dm2)
18174           if(ic.eq.4)prob=Fmassd(dm1)*fmassr(dm2)
18175          if(prob.le.1.e-06)prob=1.e-06
18176          fff=prob/prob0
18177          ntry=ntry+1 
18178           IF(RANART(NSEED).GT.fff.AND.
18179      1    NTRY.LE.20) GO TO 10
18180
18181 clin-2/26/03 limit the mass of (rho,Delta,N*1440) below a certain value
18182 c     (here taken as its central value + 2* B-W fullwidth):
18183           if((abs(am10-0.77).le.0.01.and.dm1.gt.1.07)
18184      1         .or.(abs(am10-1.232).le.0.01.and.dm1.gt.1.47)
18185      2         .or.(abs(am10-1.44).le.0.01.and.dm1.gt.2.14)) goto 5
18186           if((abs(am20-0.77).le.0.01.and.dm2.gt.1.07)
18187      1         .or.(abs(am20-1.232).le.0.01.and.dm2.gt.1.47)
18188      2         .or.(abs(am20-1.44).le.0.01.and.dm2.gt.2.14)) goto 5
18189
18190        RETURN
18191        END
18192 *FUNCTION Fmassd(DMASS) GIVES the delta MASS DISTRIBUTION 
18193         REAL FUNCTION Fmassd(DMASS)
18194       SAVE   
18195         AM0=1.232
18196         Fmassd=am0*WIDTH(DMASS)/((DMASS**2-am0**2)**2
18197      1  +am0**2*WIDTH(DMASS)**2)
18198         RETURN
18199         END
18200 *FUNCTION Fmassn(DMASS) GIVES the N* MASS DISTRIBUTION 
18201         REAL FUNCTION Fmassn(DMASS)
18202       SAVE   
18203         AM0=1.44
18204         Fmassn=am0*W1440(DMASS)/((DMASS**2-am0**2)**2
18205      1  +am0**2*W1440(DMASS)**2)
18206         RETURN
18207         END
18208 *FUNCTION Fmassr(DMASS) GIVES the rho MASS DISTRIBUTION 
18209         REAL FUNCTION Fmassr(DMASS)
18210       SAVE   
18211         AM0=0.77
18212        wid=0.153
18213         Fmassr=am0*Wid/((DMASS**2-am0**2)**2
18214      1  +am0**2*Wid**2)
18215         RETURN
18216         END
18217 **********************************
18218 * PURPOSE : flow analysis  
18219 * DATE : Feb. 1, 1995
18220 ***********************************
18221        subroutine flow(nt)
18222 c       IMPLICIT REAL*4 (A-H,O-Z)
18223        PARAMETER ( PI=3.1415926,APion=0.13957,aka=0.498)
18224         PARAMETER   (MAXSTR=150001,MAXR=1,AMU= 0.9383,etaM=0.5475)
18225        DIMENSION ypion(-80:80),ypr(-80:80),ykaon(-80:80)
18226        dimension pxpion(-80:80),pxpro(-80:80),pxkaon(-80:80)
18227 *----------------------------------------------------------------------*
18228       COMMON  /AA/      R(3,MAXSTR)
18229 cc      SAVE /AA/
18230       COMMON  /BB/      P(3,MAXSTR)
18231 cc      SAVE /BB/
18232       COMMON  /CC/      E(MAXSTR)
18233 cc      SAVE /CC/
18234       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
18235 cc      SAVE /EE/
18236       COMMON  /RR/      MASSR(0:MAXR)
18237 cc      SAVE /RR/
18238       COMMON  /RUN/     NUM
18239 cc      SAVE /RUN/
18240       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
18241 cc      SAVE /input1/
18242       SAVE   
18243 *----------------------------------------------------------------------*
18244        NT=NT
18245        ycut1=-2.6
18246        ycut2=2.6
18247        DY=0.2
18248        LY=NINT((YCUT2-YCUT1)/DY)
18249 ***********************************
18250 C initialize the transverse momentum counters 
18251        do 11 kk=-80,80
18252        pxpion(kk)=0
18253        pxpro(kk)=0
18254        pxkaon(kk)=0
18255 11       continue
18256        DO 701 J=-LY,LY
18257        ypion(j)=0
18258        ykaon(j)=0
18259        ypr(j)=0
18260   701   CONTINUE
18261        nkaon=0
18262        npr=0
18263        npion=0
18264           IS=0
18265           DO 20 NRUN=1,NUM
18266           IS=IS+MASSR(NRUN-1)
18267           DO 20 J=1,MASSR(NRUN)
18268           I=J+IS
18269 * for protons go to 200 to calculate its rapidity and transvese momentum
18270 * distributions
18271        e00=sqrt(P(1,I)**2+P(2,i)**2+P(3,i)**2+e(I)**2)
18272        y00=0.5*alog((e00+p(3,i))/(e00-p(3,i)))
18273        if(abs(y00).ge.ycut2)go to 20
18274        iy=nint(y00/DY)
18275        if(abs(iy).ge.80)go to 20
18276        if(e(i).eq.0)go to 20
18277        if(lb(i).ge.25)go to 20
18278        if((lb(i).le.5).and.(lb(i).ge.3))go to 50
18279        if(lb(i).eq.1.or.lb(i).eq.2)go to 200
18280 cbz3/10/99
18281 c       if(lb(i).ge.6.and.lb(i).le.15)go to 200
18282        if(lb(i).ge.6.and.lb(i).le.17)go to 200
18283 cbz3/10/99 end
18284        if(lb(i).eq.23)go to 400
18285        go to 20
18286 * calculate rapidity and transverse momentum distribution for pions
18287 50       npion=npion+1
18288 * (2) rapidity distribution in the cms frame
18289         ypion(iy)=ypion(iy)+1
18290        pxpion(iy)=pxpion(iy)+p(1,i)/e(I)
18291        go TO 20
18292 * calculate rapidity and transverse energy distribution for baryons
18293 200      npr=npr+1  
18294                 pxpro(iy)=pxpro(iy)+p(1,I)/E(I)
18295                  ypr(iy)=ypr(iy)+1.
18296         go to 20
18297 400     nkaon=nkaon+1  
18298                  ykaon(iy)=ykaon(iy)+1.
18299                 pxkaon(iy)=pxkaon(iy)+p(1,i)/E(i)
18300 20      CONTINUE
18301 C PRINT OUT NUCLEON'S TRANSVERSE MOMENTUM distribution
18302 c       write(1041,*)Nt
18303 c       write(1042,*)Nt
18304 c       write(1043,*)Nt
18305 c       write(1090,*)Nt
18306 c       write(1091,*)Nt
18307 c       write(1092,*)Nt
18308        do 3 npt=-10,10
18309        IF(ypr(npt).eq.0) go to 101
18310        pxpro(NPT)=-Pxpro(NPT)/ypr(NPT)
18311        DNUC=Pxpro(NPT)/SQRT(ypr(NPT))
18312 c       WRITE(1041,*)NPT*DY,Pxpro(NPT),DNUC
18313 c print pion's transverse momentum distribution
18314 101       IF(ypion(npt).eq.0) go to 102
18315        pxpion(NPT)=-pxpion(NPT)/ypion(NPT)
18316        DNUCp=pxpion(NPT)/SQRT(ypion(NPT))
18317 c       WRITE(1042,*)NPT*DY,Pxpion(NPT),DNUCp
18318 c kaons
18319 102       IF(ykaon(npt).eq.0) go to 3
18320        pxkaon(NPT)=-pxkaon(NPT)/ykaon(NPT)
18321        DNUCk=pxkaon(NPT)/SQRT(ykaon(NPT))
18322 c       WRITE(1043,*)NPT*DY,Pxkaon(NPT),DNUCk
18323 3       CONTINUE
18324 ********************************
18325 * OUTPUT PION AND PROTON RAPIDITY DISTRIBUTIONS
18326        DO 1001 M=-LY,LY
18327 * PROTONS
18328        DYPR=0
18329        IF(YPR(M).NE.0)DYPR=SQRT(YPR(M))/FLOAT(NRUN)/DY
18330        YPR(M)=YPR(M)/FLOAT(NRUN)/DY
18331 c       WRITE(1090,'(E11.3,2X,E11.3,2X,E11.3)')m*DY,YPR(M),DYPR
18332 * PIONS
18333        DYPION=0
18334        IF(YPION(M).NE.0)DYPION=SQRT(YPION(M))/FLOAT(NRUN)/DY
18335        YPION(M)=YPION(M)/FLOAT(NRUN)/DY
18336 c       WRITE(1091,'(E11.3,2X,E11.3,2X,E11.3)')m*DY,YPION(M),DYPION
18337 * KAONS
18338        DYKAON=0
18339        IF(YKAON(M).NE.0)DYKAON=SQRT(YKAON(M))/FLOAT(NRUN)/DY
18340        YKAON(M)=YKAON(M)/FLOAT(NRUN)/DY
18341 c       WRITE(1092,'(E11.3,2X,E11.3,2X,E11.3)')m*DY,YKAON(M),DYKAON
18342  1001 CONTINUE
18343        return
18344        end
18345 cbali1/16/99
18346 ********************************************
18347 * Purpose: pp_bar annihilation cross section as a functon of their cms energy
18348 c      real*4 function xppbar(srt)
18349       real function xppbar(srt)
18350 *  srt    = DSQRT(s) in GeV                                                   *
18351 *  xppbar = pp_bar annihilation cross section in mb                           *
18352 *                                                    
18353 *  Reference: G.J. Wang, R. Bellwied, C. Pruneau and G. Welke
18354 *             Proc. of the 14th Winter Workshop on Nuclear Dynamics, 
18355 *             Snowbird, Utah 31, Eds. W. Bauer and H.G. Ritter 
18356 *             (Plenum Publishing, 1998)                             *
18357 *
18358 ******************************************
18359        Parameter (pmass=0.9383,xmax=400.)
18360       SAVE   
18361 * Note:
18362 * (1) we introduce a new parameter xmax=400 mb:
18363 *     the maximum annihilation xsection 
18364 * there are shadowing effects in pp_bar annihilation, with this parameter
18365 * we can probably look at these effects  
18366 * (2) Calculate p(lab) from srt [GeV], since the formular in the 
18367 * reference applies only to the case of a p_bar on a proton at rest
18368 * Formula used: srt**2=2.*pmass*(pmass+sqrt(pmass**2+plab**2))
18369        xppbar=1.e-06
18370        plab2=(srt**2/(2.*pmass)-pmass)**2-pmass**2
18371        if(plab2.gt.0)then
18372            plab=sqrt(plab2)
18373        xppbar=67./(plab**0.7)
18374        if(xppbar.gt.xmax)xppbar=xmax
18375        endif
18376          return
18377       END
18378 cbali1/16/99 end
18379 **********************************
18380 cbali2/6/99
18381 ********************************************
18382 * Purpose: To generate randomly the no. of pions in the final 
18383 *          state of pp_bar annihilation according to a statistical 
18384 *          model by using of the rejection method.  
18385 cbz2/25/99
18386 c      real*4 function pbarfs(srt,npion,iseed)
18387       subroutine pbarfs(srt,npion,iseed)
18388 cbz2/25/99end
18389 * Quantities: 
18390 *  srt: DSQRT(s) in GeV                                                    *
18391 *  npion: No. of pions produced in the annihilation of ppbar at srt        *
18392 *  nmax=6, cutoff of the maximum no. of n the code can handle     
18393 *                                             
18394 *  Reference: C.M. Ko and R. Yuan, Phys. Lett. B192 (1987) 31      *
18395 *
18396 ******************************************
18397        parameter (pimass=0.140,pi=3.1415926) 
18398        Dimension factor(6),pnpi(6) 
18399       COMMON/RNDF77/NSEED
18400 cc      SAVE /RNDF77/
18401       SAVE   
18402        ISEED=ISEED 
18403 C the factorial coefficients in the pion no. distribution 
18404 * from n=2 to 6 calculated use the formula in the reference
18405        factor(2)=1.
18406        factor(3)=1.17e-01
18407        factor(4)=3.27e-03
18408        factor(5)=3.58e-05
18409        factor(6)=1.93e-07
18410        ene=(srt/pimass)**3/(6.*pi**2)
18411 c the relative probability from n=2 to 6
18412        do 1001 n=2,6 
18413            pnpi(n)=ene**n*factor(n)
18414  1001   continue
18415 c find the maximum of the probabilities, I checked a 
18416 c Fortan manual: max() returns the maximum value of 
18417 c the same type as in the argument list
18418        pmax=max(pnpi(2),pnpi(3),pnpi(4),pnpi(5),pnpi(6))
18419 c randomly generate n between 2 and 6
18420        ntry=0
18421  10    npion=2+int(5*RANART(NSEED))
18422 clin-4/2008 check bounds:
18423        if(npion.gt.6) goto 10
18424        thisp=pnpi(npion)/pmax  
18425        ntry=ntry+1 
18426 c decide whether to take this npion according to the distribution
18427 c using rejection method.
18428        if((thisp.lt.RANART(NSEED)).and.(ntry.le.20)) go to 10
18429 c now take the last generated npion and return
18430        return
18431        END
18432 **********************************
18433 cbali2/6/99 end
18434 cbz3/9/99 kkbar
18435 cbali3/5/99
18436 ******************************************
18437 * purpose: Xsection for K+ K- to pi+ pi-
18438 c      real*4 function xkkpi(srt)
18439 *  srt    = DSQRT(s) in GeV                                  *
18440 *  xkkpi   = xsection in mb obtained from
18441 *           the detailed balance                             *
18442 * ******************************************
18443 c          parameter (pimass=0.140,aka=0.498)
18444 c       xkkpi=1.e-08 
18445 c       ppi2=(srt/2)**2-pimass**2
18446 c       pk2=(srt/2)**2-aka**2
18447 c       if(ppi2.le.0.or.pk2.le.0)return
18448 cbz3/9/99 kkbar
18449 c       xkkpi=ppi2/pk2*pipik(srt)
18450 c       xkkpi=9.0 / 4.0 * ppi2/pk2*pipik(srt)
18451 c        xkkpi = 2.0 * xkkpi
18452 cbz3/9/99 kkbar end
18453
18454 cbz3/9/99 kkbar
18455 c       end
18456 c       return
18457 c        END
18458 cbz3/9/99 kkbar end
18459
18460 cbali3/5/99 end
18461 cbz3/9/99 kkbar end
18462
18463 cbz3/9/99 kkbar
18464 *****************************
18465 * purpose: Xsection for K+ K- to pi+ pi-
18466       SUBROUTINE XKKANN(SRT, XSK1, XSK2, XSK3, XSK4, XSK5,
18467      &     XSK6, XSK7, XSK8, XSK9, XSK10, XSK11, SIGK, rrkk)
18468 *  srt    = DSQRT(s) in GeV                                       *
18469 *  xsk1   = annihilation into pi pi                               *
18470 *  xsk2   = annihilation into pi rho (shifted to XKKSAN)         *
18471 *  xsk3   = annihilation into pi omega (shifted to XKKSAN)       *
18472 *  xsk4   = annihilation into pi eta                              *
18473 *  xsk5   = annihilation into rho rho                             *
18474 *  xsk6   = annihilation into rho omega                           *
18475 *  xsk7   = annihilation into rho eta (shifted to XKKSAN)        *
18476 *  xsk8   = annihilation into omega omega                         *
18477 *  xsk9   = annihilation into omega eta (shifted to XKKSAN)      *
18478 *  xsk10  = annihilation into eta eta                             *
18479 *  sigk   = xsection in mb obtained from                          *
18480 *           the detailed balance                                  *
18481 * ***************************
18482       PARAMETER  (MAXSTR=150001, MAXX=20,  MAXZ=24)
18483           PARAMETER (AKA=0.498, PIMASS=0.140, RHOM = 0.770, 
18484      &     OMEGAM = 0.7819, ETAM = 0.5473, APHI=1.02)
18485       COMMON  /AA/ R(3,MAXSTR)
18486 cc      SAVE /AA/
18487       COMMON /BB/  P(3,MAXSTR)
18488 cc      SAVE /BB/
18489       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
18490 cc      SAVE /EE/
18491       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
18492      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
18493      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
18494 cc      SAVE /DD/
18495       SAVE   
18496
18497         S = SRT ** 2
18498        SIGK = 1.E-08
18499         XSK1 = 0.0
18500         XSK2 = 0.0
18501         XSK3 = 0.0
18502         XSK4 = 0.0
18503         XSK5 = 0.0
18504         XSK6 = 0.0
18505         XSK7 = 0.0
18506         XSK8 = 0.0
18507         XSK9 = 0.0
18508         XSK10 = 0.0
18509         XSK11 = 0.0
18510
18511         XPION0 = PIPIK(SRT)
18512 c.....take into account both K+ and K0
18513         XPION0 = 2.0 * XPION0
18514         PI2 = S * (S - 4.0 * AKA ** 2)
18515          if(PI2 .le. 0.0)return
18516
18517         XM1 = PIMASS
18518         XM2 = PIMASS
18519         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18520         IF (PF2 .GT. 0.0) THEN
18521            XSK1 = 9.0 / 4.0 * PF2 / PI2 * XPION0
18522         END IF
18523
18524 clin-8/28/00 (pi eta) eta -> K+K- is assumed the same as pi pi -> K+K-:
18525         XM1 = PIMASS
18526         XM2 = ETAM
18527         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18528         IF (PF2 .GT. 0.0) THEN
18529            XSK4 = 3.0 / 4.0 * PF2 / PI2 * XPION0
18530         END IF
18531
18532         XM1 = ETAM
18533         XM2 = ETAM
18534         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18535         IF (PF2 .GT. 0.0) THEN
18536            XSK10 = 1.0 / 4.0 * PF2 / PI2 * XPION0
18537         END IF
18538
18539         XPION0 = rrkk
18540
18541 clin-11/07/00: (pi eta) (rho omega) -> K* Kbar (or K*bar K) instead to K Kbar:
18542 c        XM1 = PIMASS
18543 c        XM2 = RHOM
18544 c        PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18545 c        IF (PF2 .GT. 0.0) THEN
18546 c           XSK2 = 27.0 / 4.0 * PF2 / PI2 * XPION0
18547 c        END IF
18548
18549 c        XM1 = PIMASS
18550 c        XM2 = OMEGAM
18551 c        PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18552 c        IF (PF2 .GT. 0.0) THEN
18553 c           XSK3 = 9.0 / 4.0 * PF2 / PI2 * XPION0
18554 c        END IF
18555
18556         XM1 = RHOM
18557         XM2 = RHOM
18558         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18559         IF (PF2 .GT. 0.0) THEN
18560            XSK5 = 81.0 / 4.0 * PF2 / PI2 * XPION0
18561         END IF
18562
18563         XM1 = RHOM
18564         XM2 = OMEGAM
18565         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18566         IF (PF2 .GT. 0.0) THEN
18567            XSK6 = 27.0 / 4.0 * PF2 / PI2 * XPION0
18568         END IF
18569
18570 c        XM1 = RHOM
18571 c        XM2 = ETAM
18572 c        PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18573 c        IF (PF2 .GT. 0.0) THEN
18574 c           XSK7 = 9.0 / 4.0 * PF2 / PI2 * XPION0
18575 c        END IF
18576
18577         XM1 = OMEGAM
18578         XM2 = OMEGAM
18579         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18580         IF (PF2 .GT. 0.0) THEN
18581            XSK8 = 9.0 / 4.0 * PF2 / PI2 * XPION0
18582         END IF
18583
18584 c        XM1 = OMEGAM
18585 c        XM2 = ETAM
18586 c        PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
18587 c        IF (PF2 .GT. 0.0) THEN
18588 c           XSK9 = 3.0 / 4.0 * PF2 / PI2 * XPION0
18589 c        END IF
18590
18591 c* K+ + K- --> phi
18592           fwdp = 1.68*(aphi**2-4.*aka**2)**1.5/6./aphi/aphi     
18593           pkaon=0.5*sqrt(srt**2-4.0*aka**2)
18594           XSK11 = 30.*3.14159*0.1973**2*(aphi*fwdp)**2/
18595      &             ((srt**2-aphi**2)**2+(aphi*fwdp)**2)/pkaon**2
18596 c
18597         SIGK = XSK1 + XSK2 + XSK3 + XSK4 + XSK5 + 
18598      &     XSK6 + XSK7 + XSK8 + XSK9 + XSK10 + XSK11
18599
18600        RETURN
18601         END
18602 cbz3/9/99 kkbar end
18603
18604 *****************************
18605 * purpose: Xsection for Phi + B 
18606        SUBROUTINE XphiB(LB1, LB2, EM1, EM2, SRT,
18607      &                  XSK1, XSK2, XSK3, XSK4, XSK5, SIGP)
18608 c
18609 * ***************************
18610         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
18611      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
18612           PARAMETER (AKA=0.498, ALA = 1.1157, PIMASS=0.140, APHI=1.02)
18613         parameter (arho=0.77)
18614       SAVE   
18615
18616        SIGP = 1.E-08
18617         XSK1 = 0.0
18618         XSK2 = 0.0
18619         XSK3 = 0.0
18620         XSK4 = 0.0
18621         XSK5 = 0.0
18622         XSK6 = 0.0
18623           srrt = srt - (em1+em2)
18624
18625 c* phi + N(D) -> elastic scattering
18626 c            XSK1 = 0.56  !! mb
18627 c  !! mb  (photo-production xsecn used)
18628             XSK1 = 8.00
18629 c
18630 c* phi + N(D) -> pi + N
18631         IF (srt  .GT. (ap1+amn)) THEN
18632              XSK2 = 0.0235*srrt**(-0.519) 
18633         END IF
18634 c
18635 c* phi + N(D) -> pi + D
18636         IF (srt  .GT. (ap1+am0)) THEN
18637             if(srrt .lt. 0.7)then
18638              XSK3 = 0.0119*srrt**(-0.534)
18639             else
18640              XSK3 = 0.0130*srrt**(-0.304)
18641             endif      
18642         END IF
18643 c
18644 c* phi + N(D) -> rho + N
18645         IF (srt  .GT. (arho+amn)) THEN
18646            if(srrt .lt. 0.7)then
18647              XSK4 = 0.0166*srrt**(-0.786)
18648             else
18649              XSK4 = 0.0189*srrt**(-0.277)
18650             endif
18651         END IF
18652 c
18653 c* phi + N(D) -> rho + D   (same as pi + D)
18654         IF (srt  .GT. (arho+am0)) THEN
18655             if(srrt .lt. 0.7)then
18656              XSK5 = 0.0119*srrt**(-0.534)
18657             else
18658              XSK5 = 0.0130*srrt**(-0.304)
18659             endif      
18660         END IF
18661 c
18662 c* phi + N -> K+ + La
18663        IF( (lb1.ge.1.and.lb1.le.2) .or. (lb2.ge.1.and.lb2.le.2) )THEN
18664         IF (srt  .GT. (aka+ala)) THEN
18665            XSK6 = 1.715/((srrt+3.508)**2-12.138)  
18666         END IF
18667        END IF
18668         SIGP = XSK1 + XSK2 + XSK3 + XSK4 + XSK5 + XSK6
18669        RETURN
18670         END
18671 c
18672 **********************************
18673 *
18674         SUBROUTINE CRPHIB(PX,PY,PZ,SRT,I1,I2,
18675      &     XSK1, XSK2, XSK3, XSK4, XSK5, SIGP, IBLOCK)
18676 *
18677 *     PURPOSE:                                                         *
18678 *             DEALING WITH PHI + N(D) --> pi+N(D), rho+N(D),  K+ + La
18679 *     QUANTITIES:                                                      *
18680 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
18681 *           SRT      - SQRT OF S                                       *
18682 *           IBLOCK   - INFORMATION about the reaction channel          *
18683 *                
18684 *             iblock   - 20  elastic
18685 *             iblock   - 221  K+ formation
18686 *             iblock   - 223  others
18687 **********************************
18688         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
18689      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,
18690      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
18691         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,ARHO=0.77)
18692         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
18693         COMMON /AA/ R(3,MAXSTR)
18694 cc      SAVE /AA/
18695         COMMON /BB/ P(3,MAXSTR)
18696 cc      SAVE /BB/
18697         COMMON /CC/ E(MAXSTR)
18698 cc      SAVE /CC/
18699         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
18700 cc      SAVE /EE/
18701         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
18702 cc      SAVE /input1/
18703       COMMON/RNDF77/NSEED
18704 cc      SAVE /RNDF77/
18705       SAVE   
18706 c
18707        PX0=PX
18708        PY0=PY
18709        PZ0=PZ
18710        IBLOCK=223
18711 c
18712         X1 = RANART(NSEED) * SIGP
18713         XSK2 = XSK1 + XSK2
18714         XSK3 = XSK2 + XSK3
18715         XSK4 = XSK3 + XSK4
18716         XSK5 = XSK4 + XSK5
18717 c
18718 c  !! elastic scatt.
18719         IF (X1 .LE. XSK1) THEN
18720            iblock=20
18721            GOTO 100
18722         ELSE IF (X1 .LE. XSK2) THEN
18723            LB(I1) = 3 + int(3 * RANART(NSEED))
18724            LB(I2) = 1 + int(2 * RANART(NSEED))
18725            E(I1) = AP1
18726            E(I2) = AMN
18727            GOTO 100
18728         ELSE IF (X1 .LE. XSK3) THEN
18729            LB(I1) = 3 + int(3 * RANART(NSEED))
18730            LB(I2) = 6 + int(4 * RANART(NSEED))
18731            E(I1) = AP1
18732            E(I2) = AM0
18733            GOTO 100
18734         ELSE IF (X1 .LE. XSK4) THEN
18735            LB(I1) = 25 + int(3 * RANART(NSEED))
18736            LB(I2) = 1 + int(2 * RANART(NSEED))
18737            E(I1) = ARHO
18738            E(I2) = AMN
18739            GOTO 100
18740         ELSE IF (X1 .LE. XSK5) THEN
18741            LB(I1) = 25 + int(3 * RANART(NSEED))
18742            LB(I2) = 6 + int(4 * RANART(NSEED))
18743            E(I1) = ARHO
18744            E(I2) = AM0
18745            GOTO 100
18746         ELSE 
18747            LB(I1) = 23
18748            LB(I2) = 14
18749            E(I1) = AKA
18750            E(I2) = ALA
18751           IBLOCK=221
18752          ENDIF
18753  100    CONTINUE
18754       EM1=E(I1)
18755       EM2=E(I2)
18756 *-----------------------------------------------------------------------
18757 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
18758 * ENERGY CONSERVATION
18759           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
18760      1                - 4.0 * (EM1*EM2)**2
18761           IF(PR2.LE.0.)PR2=1.E-08
18762           PR=SQRT(PR2)/(2.*SRT)
18763 * WE ASSUME AN ISOTROPIC ANGULAR DISTRIBUTION IN THE CMS 
18764           C1   = 1.0 - 2.0 * RANART(NSEED)
18765           T1   = 2.0 * PI * RANART(NSEED)
18766       S1   = SQRT( 1.0 - C1**2 )
18767       CT1  = COS(T1)
18768       ST1  = SIN(T1)
18769 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
18770       PZ   = PR * C1
18771       PX   = PR * S1*CT1 
18772       PY   = PR * S1*ST1
18773 * ROTATE IT 
18774        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
18775       RETURN
18776       END
18777 c
18778 *****************************
18779 * purpose: Xsection for Phi + B 
18780 c!! in fm^2
18781       SUBROUTINE pibphi(srt,lb1,lb2,em1,em2,Xphi,xphin) 
18782 c
18783 *      phi + N(D) <- pi + N
18784 *      phi + N(D) <- pi + D
18785 *      phi + N(D) <- rho + N
18786 *      phi + N(D) <- rho + D   (same as pi + D)
18787 c
18788 * ***************************
18789         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
18790      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
18791           PARAMETER (AKA=0.498, ALA = 1.1157, PIMASS=0.140, APHI=1.02)
18792         parameter (arho=0.77)
18793       SAVE   
18794
18795        Xphi = 0.0
18796        xphin = 0.0
18797        xphid = 0.0
18798 c
18799        if( (lb1.ge.3.and.lb1.le.5) .or.
18800      &     (lb2.ge.3.and.lb2.le.5) )then
18801 c
18802        if( (iabs(lb1).ge.1.and.iabs(lb1).le.2) .or.
18803      &     (iabs(lb2).ge.1.and.iabs(lb2).le.2) )then
18804 c* phi + N <- pi + N
18805         IF (srt  .GT. (aphi+amn)) THEN
18806              srrt = srt - (aphi+amn)
18807              sig = 0.0235*srrt**(-0.519) 
18808           xphin=sig*1.*(srt**2-(aphi+amn)**2)*
18809      &           (srt**2-(aphi-amn)**2)/(srt**2-(em1+em2)**2)/
18810      &           (srt**2-(em1-em2)**2)
18811         END IF
18812 c* phi + D <- pi + N
18813         IF (srt  .GT. (aphi+am0)) THEN
18814              srrt = srt - (aphi+am0)
18815              sig = 0.0235*srrt**(-0.519) 
18816           xphid=sig*4.*(srt**2-(aphi+am0)**2)*
18817      &           (srt**2-(aphi-am0)**2)/(srt**2-(em1+em2)**2)/
18818      &           (srt**2-(em1-em2)**2)
18819         END IF
18820        else
18821 c* phi + N <- pi + D
18822         IF (srt  .GT. (aphi+amn)) THEN
18823              srrt = srt - (aphi+amn)
18824             if(srrt .lt. 0.7)then
18825              sig = 0.0119*srrt**(-0.534)
18826             else
18827              sig = 0.0130*srrt**(-0.304)
18828             endif      
18829           xphin=sig*(1./4.)*(srt**2-(aphi+amn)**2)*
18830      &           (srt**2-(aphi-amn)**2)/(srt**2-(em1+em2)**2)/
18831      &           (srt**2-(em1-em2)**2)
18832         END IF
18833 c* phi + D <- pi + D
18834         IF (srt  .GT. (aphi+am0)) THEN
18835              srrt = srt - (aphi+am0)
18836              if(srrt .lt. 0.7)then
18837              sig = 0.0119*srrt**(-0.534)
18838             else
18839              sig = 0.0130*srrt**(-0.304)
18840             endif      
18841           xphid=sig*1.*(srt**2-(aphi+am0)**2)*
18842      &           (srt**2-(aphi-am0)**2)/(srt**2-(em1+em2)**2)/
18843      &           (srt**2-(em1-em2)**2)
18844         END IF
18845        endif
18846 c
18847 c
18848 C** for rho + N(D) colln
18849 c
18850        else
18851 c
18852        if( (iabs(lb1).ge.1.and.iabs(lb1).le.2) .or.
18853      &     (iabs(lb2).ge.1.and.iabs(lb2).le.2) )then
18854 c
18855 c* phi + N <- rho + N
18856         IF (srt  .GT. (aphi+amn)) THEN
18857              srrt = srt - (aphi+amn)
18858            if(srrt .lt. 0.7)then
18859              sig = 0.0166*srrt**(-0.786)
18860             else
18861              sig = 0.0189*srrt**(-0.277)
18862             endif
18863           xphin=sig*(1./3.)*(srt**2-(aphi+amn)**2)*
18864      &           (srt**2-(aphi-amn)**2)/(srt**2-(em1+em2)**2)/
18865      &           (srt**2-(em1-em2)**2)
18866         END IF
18867 c* phi + D <- rho + N
18868         IF (srt  .GT. (aphi+am0)) THEN
18869              srrt = srt - (aphi+am0)
18870            if(srrt .lt. 0.7)then
18871              sig = 0.0166*srrt**(-0.786)
18872             else
18873              sig = 0.0189*srrt**(-0.277)
18874             endif
18875           xphid=sig*(4./3.)*(srt**2-(aphi+am0)**2)*
18876      &           (srt**2-(aphi-am0)**2)/(srt**2-(em1+em2)**2)/
18877      &           (srt**2-(em1-em2)**2)
18878         END IF
18879        else
18880 c* phi + N <- rho + D  (same as pi+D->phi+N)
18881         IF (srt  .GT. (aphi+amn)) THEN
18882              srrt = srt - (aphi+amn)
18883             if(srrt .lt. 0.7)then
18884              sig = 0.0119*srrt**(-0.534)
18885             else
18886              sig = 0.0130*srrt**(-0.304)
18887             endif      
18888           xphin=sig*(1./12.)*(srt**2-(aphi+amn)**2)*
18889      &           (srt**2-(aphi-amn)**2)/(srt**2-(em1+em2)**2)/
18890      &           (srt**2-(em1-em2)**2)
18891         END IF
18892 c* phi + D <- rho + D  (same as pi+D->phi+D)
18893         IF (srt  .GT. (aphi+am0)) THEN
18894              srrt = srt - (aphi+am0)
18895              if(srrt .lt. 0.7)then
18896              sig = 0.0119*srrt**(-0.534)
18897             else
18898              sig = 0.0130*srrt**(-0.304)
18899             endif      
18900           xphid=sig*(1./3.)*(srt**2-(aphi+am0)**2)*
18901      &           (srt**2-(aphi-am0)**2)/(srt**2-(em1+em2)**2)/
18902      &           (srt**2-(em1-em2)**2)
18903         END IF
18904        endif
18905         END IF
18906 c   !! in fm^2
18907          xphin = xphin/10.
18908 c   !! in fm^2
18909          xphid = xphid/10.
18910          Xphi = xphin + xphid
18911
18912        RETURN
18913         END
18914 c
18915 *****************************
18916 * purpose: Xsection for phi +M to K+K etc
18917       SUBROUTINE PHIMES(I1, I2, SRT, XSK1, XSK2, XSK3, XSK4, XSK5,
18918      1     XSK6, XSK7, SIGPHI)
18919
18920 *     QUANTITIES:                                                      *
18921 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
18922 *           SRT      - SQRT OF S                                       *
18923 *           IBLOCK   - THE INFORMATION BACK                            *
18924 *                      223 --> phi destruction
18925 *                      20 -->  elastic
18926 **********************************
18927         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
18928      1  AMP=0.93828,AP1=0.13496,
18929      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
18930         PARAMETER  (AKA=0.498, AKS=0.895, AOMEGA=0.7819,
18931      3               ARHO=0.77, APHI=1.02)
18932         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
18933         PARAMETER  (MAXX=20,  MAXZ=24)
18934         COMMON /AA/ R(3,MAXSTR)
18935 cc      SAVE /AA/
18936         COMMON /BB/ P(3,MAXSTR)
18937 cc      SAVE /BB/
18938         COMMON /CC/ E(MAXSTR)
18939 cc      SAVE /CC/
18940       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
18941      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
18942      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
18943 cc      SAVE /DD/
18944         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
18945 cc      SAVE /EE/
18946       SAVE   
18947
18948         S = SRT ** 2
18949        SIGPHI = 1.E-08
18950         XSK1 = 0.0
18951         XSK2 = 0.0
18952         XSK3 = 0.0
18953         XSK4 = 0.0
18954         XSK5 = 0.0
18955         XSK6 = 0.0
18956         XSK7 = 0.0
18957          em1 = E(i1)
18958          em2 = E(i2)
18959          LB1 = LB(i1)
18960          LB2 = LB(i2)
18961          akap = aka
18962 c******
18963 c
18964 c   !! mb, elastic
18965          XSK1 = 5.0
18966          
18967            pii = sqrt((S-(em1+em2)**2)*(S-(em1-em2)**2))
18968 * phi + K(-bar) channel
18969        if( lb1.eq.23.or.lb2.eq.23 .or. lb1.eq.21.or.lb2.eq.21 )then
18970           if(srt .gt. (ap1+akap))then
18971 c             XSK2 = 2.5  
18972            pff = sqrt((S-(ap1+akap)**2)*(S-(ap1-akap)**2))
18973            XSK2 = 195.639*pff/pii/32./pi/S 
18974           endif
18975           if(srt .gt. (arho+akap))then
18976 c              XSK3 = 3.5  
18977            pff = sqrt((S-(arho+akap)**2)*(S-(arho-akap)**2))
18978            XSK3 = 526.702*pff/pii/32./pi/S 
18979           endif
18980           if(srt .gt. (aomega+akap))then
18981 c               XSK4 = 3.5 
18982            pff = sqrt((S-(aomega+akap)**2)*(S-(aomega-akap)**2))
18983            XSK4 = 355.429*pff/pii/32./pi/S 
18984           endif
18985           if(srt .gt. (ap1+aks))then
18986 c           XSK5 = 15.0  
18987            pff = sqrt((S-(ap1+aks)**2)*(S-(ap1-aks)**2))
18988            XSK5 = 2047.042*pff/pii/32./pi/S 
18989           endif
18990           if(srt .gt. (arho+aks))then
18991 c            XSK6 = 3.5 
18992            pff = sqrt((S-(arho+aks)**2)*(S-(arho-aks)**2))
18993            XSK6 = 1371.257*pff/pii/32./pi/S 
18994           endif
18995           if(srt .gt. (aomega+aks))then
18996 c            XSK7 = 3.5 
18997            pff = sqrt((S-(aomega+aks)**2)*(S-(aomega-aks)**2))
18998            XSK7 = 482.292*pff/pii/32./pi/S 
18999           endif
19000 c
19001        elseif( iabs(lb1).eq.30.or.iabs(lb2).eq.30 )then
19002 * phi + K*(-bar) channel
19003 c
19004           if(srt .gt. (ap1+akap))then
19005 c             XSK2 = 3.5  
19006            pff = sqrt((S-(ap1+akap)**2)*(S-(ap1-akap)**2))
19007            XSK2 = 372.378*pff/pii/32./pi/S 
19008           endif
19009           if(srt .gt. (arho+akap))then
19010 c              XSK3 = 9.0  
19011            pff = sqrt((S-(arho+akap)**2)*(S-(arho-akap)**2))
19012            XSK3 = 1313.960*pff/pii/32./pi/S 
19013           endif
19014           if(srt .gt. (aomega+akap))then
19015 c               XSK4 = 6.5 
19016            pff = sqrt((S-(aomega+akap)**2)*(S-(aomega-akap)**2))
19017            XSK4 = 440.558*pff/pii/32./pi/S 
19018           endif
19019           if(srt .gt. (ap1+aks))then
19020 c           XSK5 = 30.0 !wrong  
19021            pff = sqrt((S-(ap1+aks)**2)*(S-(ap1-aks)**2))
19022            XSK5 = 1496.692*pff/pii/32./pi/S 
19023           endif
19024           if(srt .gt. (arho+aks))then
19025 c            XSK6 = 9.0 
19026            pff = sqrt((S-(arho+aks)**2)*(S-(arho-aks)**2))
19027            XSK6 = 6999.840*pff/pii/32./pi/S 
19028           endif
19029           if(srt .gt. (aomega+aks))then
19030 c            XSK7 = 15.0 
19031            pff = sqrt((S-(aomega+aks)**2)*(S-(aomega-aks)**2))
19032            XSK7 = 1698.903*pff/pii/32./pi/S 
19033           endif
19034        else
19035 c
19036 * phi + rho(pi,omega) channel
19037 c
19038            srr1 = em1+em2
19039          if(srt .gt. (akap+akap))then
19040           srrt = srt - srr1
19041 cc          if(srrt .lt. 0.3)then
19042           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
19043           XSK2 = 1.69/(srrt**0.141 - 0.407)
19044           else
19045           XSK2 = 3.74 + 0.008*srrt**1.9
19046           endif                 
19047          endif
19048          if(srt .gt. (akap+aks))then
19049           srr2 = akap+aks
19050           srr = amax1(srr1,srr2)
19051           srrt = srt - srr
19052 cc          if(srrt .lt. 0.3)then
19053           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
19054           XSK3 = 1.69/(srrt**0.141 - 0.407)
19055           else
19056           XSK3 = 3.74 + 0.008*srrt**1.9
19057           endif
19058          endif
19059          if(srt .gt. (aks+aks))then
19060           srr2 = aks+aks
19061           srr = amax1(srr1,srr2)
19062           srrt = srt - srr
19063 cc          if(srrt .lt. 0.3)then
19064           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
19065           XSK4 = 1.69/(srrt**0.141 - 0.407)
19066           else
19067           XSK4 = 3.74 + 0.008*srrt**1.9
19068           endif
19069          endif
19070 c          xsk2 = amin1(20.,xsk2)
19071 c          xsk3 = amin1(20.,xsk3)
19072 c          xsk4 = amin1(20.,xsk4)
19073       endif
19074
19075         SIGPHI = XSK1 + XSK2 + XSK3 + XSK4 + XSK5 + XSK6 + XSK7
19076
19077        RETURN
19078        END
19079
19080 **********************************
19081 *     PURPOSE:                                                         *
19082 *             DEALING WITH phi+M  scatt.
19083 *
19084        SUBROUTINE CRPHIM(PX,PY,PZ,SRT,I1,I2,
19085      &  XSK1, XSK2, XSK3, XSK4, XSK5, XSK6, SIGPHI, IKKG, IKKL, IBLOCK)
19086 *
19087 *     QUANTITIES:                                                      *
19088 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
19089 *           SRT      - SQRT OF S                                       *
19090 *           IBLOCK   - THE INFORMATION BACK                            *
19091 *                      20 -->  elastic
19092 *                      223 --> phi + pi(rho,omega)
19093 *                      224 --> phi + K -> K + pi(rho,omega)
19094 *                      225 --> phi + K -> K* + pi(rho,omega)
19095 *                      226 --> phi + K* -> K + pi(rho,omega)
19096 *                      227 --> phi + K* -> K* + pi(rho,omega)
19097 **********************************
19098         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
19099      1  AMP=0.93828,AP1=0.13496,ARHO=0.77,AOMEGA=0.7819,
19100      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
19101         PARAMETER    (AKA=0.498,AKS=0.895)
19102         parameter   (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
19103         COMMON /AA/ R(3,MAXSTR)
19104 cc      SAVE /AA/
19105         COMMON /BB/ P(3,MAXSTR)
19106 cc      SAVE /BB/
19107         COMMON /CC/ E(MAXSTR)
19108 cc      SAVE /CC/
19109         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
19110 cc      SAVE /EE/
19111         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
19112 cc      SAVE /input1/
19113       COMMON/RNDF77/NSEED
19114 cc      SAVE /RNDF77/
19115       SAVE   
19116 c
19117        PX0=PX
19118        PY0=PY
19119        PZ0=PZ
19120          LB1 = LB(i1)
19121          LB2 = LB(i2)
19122
19123         X1 = RANART(NSEED) * SIGPHI
19124         XSK2 = XSK1 + XSK2
19125         XSK3 = XSK2 + XSK3
19126         XSK4 = XSK3 + XSK4
19127         XSK5 = XSK4 + XSK5
19128         XSK6 = XSK5 + XSK6
19129         IF (X1 .LE. XSK1) THEN
19130 c        !! elastic scatt
19131            IBLOCK=20
19132            GOTO 100
19133         ELSE
19134 c
19135 *phi + (K,K*)-bar
19136        if( lb1.eq.23.or.lb1.eq.21.or.iabs(lb1).eq.30 .OR.
19137      &     lb2.eq.23.or.lb2.eq.21.or.iabs(lb2).eq.30 )then
19138 c
19139              if(lb1.eq.23.or.lb2.eq.23)then
19140                IKKL=1
19141                IBLOCK=224
19142                iad1 = 23
19143                iad2 = 30
19144               elseif(lb1.eq.30.or.lb2.eq.30)then
19145                IKKL=0
19146                IBLOCK=226
19147                iad1 = 23
19148                iad2 = 30
19149              elseif(lb1.eq.21.or.lb2.eq.21)then
19150                IKKL=1
19151                IBLOCK=124
19152                iad1 = 21
19153                iad2 = -30
19154 c         !! -30
19155              else
19156                IKKL=0
19157                IBLOCK=126
19158                iad1 = 21
19159                iad2 = -30
19160               endif
19161          IF (X1 .LE. XSK2) THEN
19162            LB(I1) = 3 + int(3 * RANART(NSEED))
19163            LB(I2) = iad1
19164            E(I1) = AP1
19165            E(I2) = AKA
19166            IKKG = 1
19167            GOTO 100
19168         ELSE IF (X1 .LE. XSK3) THEN
19169            LB(I1) = 25 + int(3 * RANART(NSEED))
19170            LB(I2) = iad1
19171            E(I1) = ARHO
19172            E(I2) = AKA
19173            IKKG = 1
19174            GOTO 100
19175         ELSE IF (X1 .LE. XSK4) THEN
19176            LB(I1) = 28
19177            LB(I2) = iad1
19178            E(I1) = AOMEGA
19179            E(I2) = AKA
19180            IKKG = 1
19181            GOTO 100
19182         ELSE IF (X1 .LE. XSK5) THEN
19183            LB(I1) = 3 + int(3 * RANART(NSEED))
19184            LB(I2) = iad2
19185            E(I1) = AP1
19186            E(I2) = AKS
19187            IKKG = 0
19188            IBLOCK=IBLOCK+1
19189            GOTO 100
19190         ELSE IF (X1 .LE. XSK6) THEN
19191            LB(I1) = 25 + int(3 * RANART(NSEED))
19192            LB(I2) = iad2
19193            E(I1) = ARHO
19194            E(I2) = AKS
19195            IKKG = 0
19196            IBLOCK=IBLOCK+1
19197            GOTO 100
19198         ELSE 
19199            LB(I1) = 28
19200            LB(I2) = iad2
19201            E(I1) = AOMEGA
19202            E(I2) = AKS
19203            IKKG = 0
19204            IBLOCK=IBLOCK+1
19205            GOTO 100
19206          ENDIF
19207        else
19208 c      !! phi destruction via (pi,rho,omega)
19209           IBLOCK=223
19210 *phi + pi(rho,omega)
19211          IF (X1 .LE. XSK2) THEN
19212            LB(I1) = 23
19213            LB(I2) = 21
19214            E(I1) = AKA
19215            E(I2) = AKA
19216            IKKG = 2
19217            IKKL = 0
19218            GOTO 100
19219         ELSE IF (X1 .LE. XSK3) THEN
19220            LB(I1) = 23
19221 c           LB(I2) = 30
19222            LB(I2) = -30
19223 clin-2/10/03 currently take XSK3 to be the sum of KK*bar & KbarK*:
19224            if(RANART(NSEED).le.0.5) then
19225               LB(I1) = 21
19226               LB(I2) = 30
19227            endif
19228               
19229            E(I1) = AKA
19230            E(I2) = AKS
19231            IKKG = 1
19232            IKKL = 0
19233            GOTO 100
19234         ELSE IF (X1 .LE. XSK4) THEN
19235            LB(I1) = 30
19236 c           LB(I2) = 30
19237            LB(I2) = -30
19238            E(I1) = AKS
19239            E(I2) = AKS
19240            IKKG = 0
19241            IKKL = 0
19242            GOTO 100
19243          ENDIF
19244        endif
19245          ENDIF
19246 *
19247 100    CONTINUE
19248        EM1=E(I1)
19249        EM2=E(I2)
19250
19251 *-----------------------------------------------------------------------
19252 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
19253 * ENERGY CONSERVATION
19254           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
19255      1                - 4.0 * (EM1*EM2)**2
19256           IF(PR2.LE.0.)PR2=1.E-08
19257           PR=SQRT(PR2)/(2.*SRT)
19258 * WE ASSUME AN ISOTROPIC ANGULAR DISTRIBUTION IN THE CMS 
19259           C1   = 1.0 - 2.0 * RANART(NSEED)
19260           T1   = 2.0 * PI * RANART(NSEED)
19261       S1   = SQRT( 1.0 - C1**2 )
19262       CT1  = COS(T1)
19263       ST1  = SIN(T1)
19264 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
19265       PZ   = PR * C1
19266       PX   = PR * S1*CT1 
19267       PY   = PR * S1*ST1
19268 * ROTATE IT 
19269        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
19270       RETURN
19271       END
19272 **********************************
19273 **********************************
19274 cbz3/9/99 khyperon
19275 *************************************
19276 * purpose: Xsection for K+Y ->  piN                                       *
19277 *          Xsection for K+Y-bar ->  piN-bar   !! sp03/29/01               *
19278 *
19279         SUBROUTINE XKHYPE(I1, I2, SRT, XKY1, XKY2, XKY3, XKY4, XKY5,
19280      &     XKY6, XKY7, XKY8, XKY9, XKY10, XKY11, XKY12, XKY13,
19281      &     XKY14, XKY15, XKY16, XKY17, SIGK)
19282 c      subroutine xkhype(i1, i2, srt, sigk)
19283 *  srt    = DSQRT(s) in GeV                                               *
19284 *  xkkpi   = xsection in mb obtained from                                 *
19285 *           the detailed balance                                          *
19286 * ***********************************
19287         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
19288      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,APHI=1.02,
19289      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
19290           parameter (pimass=0.140, AMETA = 0.5473, aka=0.498,
19291      &     aml=1.116,ams=1.193, AM1440 = 1.44, AM1535 = 1.535)
19292         COMMON  /EE/ID(MAXSTR), LB(MAXSTR)
19293 cc      SAVE /EE/
19294       SAVE   
19295
19296         S = SRT ** 2
19297        SIGK=1.E-08 
19298         XKY1 = 0.0
19299         XKY2 = 0.0
19300         XKY3 = 0.0
19301         XKY4 = 0.0
19302         XKY5 = 0.0
19303         XKY6 = 0.0
19304         XKY7 = 0.0
19305         XKY8 = 0.0
19306         XKY9 = 0.0
19307         XKY10 = 0.0
19308         XKY11 = 0.0
19309         XKY12 = 0.0
19310         XKY13 = 0.0
19311         XKY14 = 0.0
19312         XKY15 = 0.0
19313         XKY16 = 0.0
19314         XKY17 = 0.0
19315
19316         LB1 = LB(I1)
19317         LB2 = LB(I2)
19318         IF (iabs(LB1) .EQ. 14 .OR. iabs(LB2) .EQ. 14) THEN
19319            XKAON0 = PNLKA(SRT)
19320            XKAON0 = 2.0 * XKAON0
19321            PI2 = (S - (AML + AKA) ** 2) * (S - (AML - AKA) ** 2)
19322         ELSE
19323            XKAON0 = PNSKA(SRT)
19324            XKAON0 = 2.0 * XKAON0
19325            PI2 = (S - (AMS + AKA) ** 2) * (S - (AMS - AKA) ** 2)
19326         END IF
19327           if(PI2 .le. 0.0)return
19328
19329         XM1 = PIMASS
19330         XM2 = AMP
19331         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19332         IF (PF2 .GT. 0.0) THEN
19333            XKY1 = 3.0 * PF2 / PI2 * XKAON0
19334         END IF
19335         
19336         XM1 = PIMASS
19337         XM2 = AM0
19338         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19339         IF (PF2 .GT. 0.0) THEN
19340            XKY2 = 12.0 * PF2 / PI2 * XKAON0
19341         END IF
19342         
19343         XM1 = PIMASS
19344         XM2 = AM1440
19345         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19346         IF (PF2 .GT. 0.0) THEN
19347            XKY3 = 3.0 * PF2 / PI2 * XKAON0
19348         END IF
19349         
19350         XM1 = PIMASS
19351         XM2 = AM1535
19352         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19353         IF (PF2 .GT. 0.0) THEN
19354            XKY4 = 3.0 * PF2 / PI2 * XKAON0
19355         END IF
19356         
19357         XM1 = AMRHO
19358         XM2 = AMP
19359         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19360         IF (PF2 .GT. 0.0) THEN
19361            XKY5 = 9.0 * PF2 / PI2 * XKAON0
19362         END IF
19363         
19364         XM1 = AMRHO
19365         XM2 = AM0
19366         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19367         IF (PF2 .GT. 0.0) THEN
19368            XKY6 = 36.0 * PF2 / PI2 * XKAON0
19369         END IF
19370         
19371         XM1 = AMRHO
19372         XM2 = AM1440
19373         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19374         IF (PF2 .GT. 0.0) THEN
19375            XKY7 = 9.0 * PF2 / PI2 * XKAON0
19376         END IF
19377         
19378         XM1 = AMRHO
19379         XM2 = AM1535
19380         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19381         IF (PF2 .GT. 0.0) THEN
19382            XKY8 = 9.0 * PF2 / PI2 * XKAON0
19383         END IF
19384         
19385         XM1 = AMOMGA
19386         XM2 = AMP
19387         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19388         IF (PF2 .GT. 0.0) THEN
19389            XKY9 = 3.0 * PF2 / PI2 * XKAON0
19390         END IF
19391         
19392         XM1 = AMOMGA
19393         XM2 = AM0
19394         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19395         IF (PF2 .GT. 0.0) THEN
19396            XKY10 = 12.0 * PF2 / PI2 * XKAON0
19397         END IF
19398         
19399         XM1 = AMOMGA
19400         XM2 = AM1440
19401         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19402         IF (PF2 .GT. 0.0) THEN
19403            XKY11 = 3.0 * PF2 / PI2 * XKAON0
19404         END IF
19405         
19406         XM1 = AMOMGA
19407         XM2 = AM1535
19408         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19409         IF (PF2 .GT. 0.0) THEN
19410            XKY12 = 3.0 * PF2 / PI2 * XKAON0
19411         END IF
19412         
19413         XM1 = AMETA
19414         XM2 = AMP
19415         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19416         IF (PF2 .GT. 0.0) THEN
19417            XKY13 = 1.0 * PF2 / PI2 * XKAON0
19418         END IF
19419         
19420         XM1 = AMETA
19421         XM2 = AM0
19422         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19423         IF (PF2 .GT. 0.0) THEN
19424            XKY14 = 4.0 * PF2 / PI2 * XKAON0
19425         END IF
19426         
19427         XM1 = AMETA
19428         XM2 = AM1440
19429         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19430         IF (PF2 .GT. 0.0) THEN
19431            XKY15 = 1.0 * PF2 / PI2 * XKAON0
19432         END IF
19433         
19434         XM1 = AMETA
19435         XM2 = AM1535
19436         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19437         IF (PF2 .GT. 0.0) THEN
19438            XKY16 = 1.0 * PF2 / PI2 * XKAON0
19439         END IF
19440
19441 csp11/21/01  K+ + La --> phi + N 
19442         if(lb1.eq.14 .or. lb2.eq.14)then
19443          if(srt .gt. (aphi+amn))then
19444            srrt = srt - (aphi+amn)
19445            sig = 1.715/((srrt+3.508)**2-12.138)
19446          XM1 = AMN
19447          XM2 = APHI
19448          PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19449 c     ! fm^-1
19450          XKY17 = 3.0 * PF2 / PI2 * SIG/10.
19451         endif
19452        endif
19453 csp11/21/01  end 
19454 c
19455
19456        IF ((iabs(LB1) .GE. 15 .AND. iabs(LB1) .LE. 17) .OR. 
19457      &     (iabs(LB2) .GE. 15 .AND. iabs(LB2) .LE. 17)) THEN
19458            DDF = 3.0
19459            XKY1 = XKY1 / DDF
19460            XKY2 = XKY2 / DDF
19461            XKY3 = XKY3 / DDF
19462            XKY4 = XKY4 / DDF
19463            XKY5 = XKY5 / DDF
19464            XKY6 = XKY6 / DDF
19465            XKY7 = XKY7 / DDF
19466            XKY8 = XKY8 / DDF
19467            XKY9 = XKY9 / DDF
19468            XKY10 = XKY10/ DDF
19469            XKY11 = XKY11 / DDF
19470            XKY12 = XKY12 / DDF
19471            XKY13 = XKY13 / DDF
19472            XKY14 = XKY14 / DDF
19473            XKY15 = XKY15 / DDF
19474            XKY16 = XKY16 / DDF
19475         END IF
19476         
19477         SIGK = XKY1 + XKY2 + XKY3 + XKY4 +
19478      &       XKY5 + XKY6 + XKY7 + XKY8 +
19479      &       XKY9 + XKY10 + XKY11 + XKY12 +
19480      &       XKY13 + XKY14 + XKY15 + XKY16 + XKY17
19481
19482        RETURN
19483        END
19484
19485 C*******************************  
19486       BLOCK DATA PPBDAT 
19487     
19488       parameter (AMP=0.93828,AMN=0.939457,
19489      1     AM0=1.232,AM1440 = 1.44, AM1535 = 1.535)
19490
19491 c     to give default values to parameters for BbarB production from mesons
19492       COMMON/ppbmas/niso(15),nstate,ppbm(15,2),thresh(15),weight(15)
19493 cc      SAVE /ppbmas/
19494       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19495 cc      SAVE /ppb1/
19496       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19497 cc      SAVE /ppmm/
19498       SAVE   
19499 c     thresh(i) gives the mass thresh for final channel i:
19500       DATA thresh/1.87656,1.877737,1.878914,2.17028,
19501      1     2.171457,2.37828,2.379457,2.464,2.47328,2.474457,
19502      2     2.672,2.767,2.88,2.975,3.07/
19503 c     ppbm(i,j=1,2) gives masses for the two final baryons of channel i,
19504 c     with j=1 for the lighter baryon:
19505       DATA (ppbm(i,1),i=1,15)/amp,amp,amn,amp,amn,amp,amn,
19506      1     am0,amp,amn,am0,am0,am1440,am1440,am1535/
19507       DATA (ppbm(i,2),i=1,15)/amp,amn,amn,am0,am0,am1440,am1440,
19508      1     am0,am1535,am1535,am1440,am1535,am1440,am1535,am1535/
19509 c     factr2(i) gives weights for producing i pions from ppbar annihilation:
19510       DATA factr2/0,1,1.17e-01,3.27e-03,3.58e-05,1.93e-07/
19511 c     niso(i) gives the degeneracy factor for final channel i:
19512       DATA niso/1,2,1,16,16,4,4,64,4,4,32,32,4,8,4/
19513
19514       END   
19515
19516
19517 *****************************************
19518 * get the number of BbarB states available for mm collisions of energy srt 
19519       subroutine getnst(srt)
19520 *  srt    = DSQRT(s) in GeV                                                   *
19521 *****************************************
19522       parameter (pimass=0.140,pi=3.1415926)
19523       COMMON/ppbmas/niso(15),nstate,ppbm(15,2),thresh(15),weight(15)
19524 cc      SAVE /ppbmas/
19525       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19526 cc      SAVE /ppb1/
19527       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19528 cc      SAVE /ppmm/
19529       SAVE   
19530
19531       s=srt**2
19532       nstate=0
19533       wtot=0.
19534       if(srt.le.thresh(1)) return
19535       do 1001 i=1,15
19536          weight(i)=0.
19537          if(srt.gt.thresh(i)) nstate=i
19538  1001 continue
19539       do 1002 i=1,nstate
19540          pf2=(s-(ppbm(i,1)+ppbm(i,2))**2)
19541      1        *(s-(ppbm(i,1)-ppbm(i,2))**2)/4/s
19542          weight(i)=pf2*niso(i)
19543          wtot=wtot+weight(i)
19544  1002 continue
19545       ene=(srt/pimass)**3/(6.*pi**2)
19546       fsum=factr2(2)+factr2(3)*ene+factr2(4)*ene**2
19547      1     +factr2(5)*ene**3+factr2(6)*ene**4
19548
19549       return
19550       END
19551
19552 *****************************************
19553 * for pion+pion-->Bbar B                                                      *
19554 c      real*4 function ppbbar(srt)
19555       real function ppbbar(srt)
19556 *****************************************
19557       parameter (pimass=0.140,arho=0.77,aomega=0.782)
19558       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19559 cc      SAVE /ppb1/
19560       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19561 cc      SAVE /ppmm/
19562       SAVE   
19563
19564       sppb2p=xppbar(srt)*factr2(2)/fsum
19565       pi2=(s-4*pimass**2)/4
19566       ppbbar=4./9.*sppb2p/pi2*wtot
19567
19568       return
19569       END
19570
19571 *****************************************
19572 * for pion+rho-->Bbar B                                                      *
19573 c      real*4 function prbbar(srt)
19574       real function prbbar(srt)
19575 *****************************************
19576       parameter (pimass=0.140,arho=0.77,aomega=0.782)
19577       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19578 cc      SAVE /ppb1/
19579       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19580 cc      SAVE /ppmm/
19581       SAVE   
19582
19583       sppb3p=xppbar(srt)*factr2(3)*ene/fsum
19584       pi2=(s-(pimass+arho)**2)*(s-(pimass-arho)**2)/4/s
19585       prbbar=4./27.*sppb3p/pi2*wtot
19586
19587       return
19588       END
19589
19590 *****************************************
19591 * for rho+rho-->Bbar B                                                      *
19592 c      real*4 function rrbbar(srt)
19593       real function rrbbar(srt)
19594 *****************************************
19595       parameter (pimass=0.140,arho=0.77,aomega=0.782)
19596       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19597 cc      SAVE /ppb1/
19598       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19599 cc      SAVE /ppmm/
19600       SAVE   
19601
19602       sppb4p=xppbar(srt)*factr2(4)*ene**2/fsum
19603       pi2=(s-4*arho**2)/4
19604       rrbbar=4./81.*(sppb4p/2)/pi2*wtot
19605
19606       return
19607       END
19608
19609 *****************************************
19610 * for pi+omega-->Bbar B                                                      *
19611 c      real*4 function pobbar(srt)
19612       real function pobbar(srt)
19613 *****************************************
19614       parameter (pimass=0.140,arho=0.77,aomega=0.782)
19615       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19616 cc      SAVE /ppb1/
19617       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19618 cc      SAVE /ppmm/
19619       SAVE   
19620
19621       sppb4p=xppbar(srt)*factr2(4)*ene**2/fsum
19622       pi2=(s-(pimass+aomega)**2)*(s-(pimass-aomega)**2)/4/s
19623       pobbar=4./9.*(sppb4p/2)/pi2*wtot
19624
19625       return
19626       END
19627
19628 *****************************************
19629 * for rho+omega-->Bbar B                                                      *
19630 c      real*4 function robbar(srt)
19631       real function robbar(srt)
19632 *****************************************
19633       parameter (pimass=0.140,arho=0.77,aomega=0.782)
19634       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19635 cc      SAVE /ppb1/
19636       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19637 cc      SAVE /ppmm/
19638       SAVE   
19639
19640       sppb5p=xppbar(srt)*factr2(5)*ene**3/fsum
19641       pi2=(s-(arho+aomega)**2)*(s-(arho-aomega)**2)/4/s
19642       robbar=4./27.*sppb5p/pi2*wtot
19643
19644       return
19645       END
19646
19647 *****************************************
19648 * for omega+omega-->Bbar B                                                    *
19649 c      real*4 function oobbar(srt)
19650       real function oobbar(srt)
19651 *****************************************
19652       parameter (pimass=0.140,arho=0.77,aomega=0.782)
19653       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19654 cc      SAVE /ppb1/
19655       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19656 cc      SAVE /ppmm/
19657       SAVE   
19658
19659       sppb6p=xppbar(srt)*factr2(6)*ene**4/fsum
19660       pi2=(s-4*aomega**2)/4
19661       oobbar=4./9.*sppb6p/pi2*wtot
19662
19663       return
19664       END
19665
19666 *****************************************
19667 * Generate final states for mm-->Bbar B                                       *
19668       SUBROUTINE bbarfs(lbb1,lbb2,ei1,ei2,iblock,iseed)
19669 *****************************************
19670       COMMON/ppbmas/niso(15),nstate,ppbm(15,2),thresh(15),weight(15)
19671 cc      SAVE /ppbmas/
19672       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19673 cc      SAVE /ppb1/
19674       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19675 cc      SAVE /ppmm/
19676       COMMON/RNDF77/NSEED
19677 cc      SAVE /RNDF77/
19678       SAVE   
19679       ISEED=ISEED
19680 c     determine which final BbarB channel occurs:
19681       rd=RANART(NSEED)
19682       wsum=0.
19683       do 1001 i=1,nstate
19684          wsum=wsum+weight(i)
19685          if(rd.le.(wsum/wtot)) then
19686             ifs=i
19687             ei1=ppbm(i,1)
19688             ei2=ppbm(i,2)
19689             goto 10
19690          endif
19691  1001 continue
19692  10   continue
19693
19694 c1    pbar p
19695       if(ifs.eq.1) then
19696          iblock=1801
19697          lbb1=-1
19698          lbb2=1
19699       elseif(ifs.eq.2) then
19700 c2    pbar n
19701          if(RANART(NSEED).le.0.5) then
19702             iblock=18021
19703             lbb1=-1
19704             lbb2=2
19705 c2    nbar p
19706          else
19707             iblock=18022
19708             lbb1=1
19709             lbb2=-2
19710          endif
19711 c3    nbar n
19712       elseif(ifs.eq.3) then
19713          iblock=1803
19714          lbb1=-2
19715          lbb2=2
19716 c4&5  (pbar nbar) Delta, (p n) anti-Delta
19717       elseif(ifs.eq.4.or.ifs.eq.5) then
19718          rd=RANART(NSEED)
19719          if(rd.le.0.5) then
19720 c     (pbar nbar) Delta
19721             if(ifs.eq.4) then
19722                iblock=18041
19723                lbb1=-1
19724             else
19725                iblock=18051
19726                lbb1=-2
19727             endif
19728             rd2=RANART(NSEED)
19729             if(rd2.le.0.25) then
19730                lbb2=6
19731             elseif(rd2.le.0.5) then
19732                lbb2=7
19733             elseif(rd2.le.0.75) then
19734                lbb2=8
19735             else
19736                lbb2=9
19737             endif
19738          else
19739 c     (p n) anti-Delta
19740             if(ifs.eq.4) then
19741                iblock=18042
19742                lbb1=1
19743             else
19744                iblock=18052
19745                lbb1=2
19746             endif
19747             rd2=RANART(NSEED)
19748             if(rd2.le.0.25) then
19749                lbb2=-6
19750             elseif(rd2.le.0.5) then
19751                lbb2=-7
19752             elseif(rd2.le.0.75) then
19753                lbb2=-8
19754             else
19755                lbb2=-9
19756             endif
19757          endif
19758 c6&7  (pbar nbar) N*(1440), (p n) anti-N*(1440)
19759       elseif(ifs.eq.6.or.ifs.eq.7) then
19760          rd=RANART(NSEED)
19761          if(rd.le.0.5) then
19762 c     (pbar nbar) N*(1440)
19763             if(ifs.eq.6) then
19764                iblock=18061
19765                lbb1=-1
19766             else
19767                iblock=18071
19768                lbb1=-2
19769             endif
19770             rd2=RANART(NSEED)
19771             if(rd2.le.0.5) then
19772                lbb2=10
19773             else
19774                lbb2=11
19775             endif
19776          else
19777 c     (p n) anti-N*(1440)
19778             if(ifs.eq.6) then
19779                iblock=18062
19780                lbb1=1
19781             else
19782                iblock=18072
19783                lbb1=2
19784             endif
19785             rd2=RANART(NSEED)
19786             if(rd2.le.0.5) then
19787                lbb2=-10
19788             else
19789                lbb2=-11
19790             endif
19791          endif
19792 c8    Delta anti-Delta
19793       elseif(ifs.eq.8) then
19794          iblock=1808
19795          rd1=RANART(NSEED)
19796          if(rd1.le.0.25) then
19797             lbb1=6
19798          elseif(rd1.le.0.5) then
19799             lbb1=7
19800          elseif(rd1.le.0.75) then
19801             lbb1=8
19802          else
19803             lbb1=9
19804          endif
19805          rd2=RANART(NSEED)
19806          if(rd2.le.0.25) then
19807             lbb2=-6
19808          elseif(rd2.le.0.5) then
19809             lbb2=-7
19810          elseif(rd2.le.0.75) then
19811             lbb2=-8
19812          else
19813             lbb2=-9
19814          endif
19815 c9&10 (pbar nbar) N*(1535), (p n) anti-N*(1535)
19816       elseif(ifs.eq.9.or.ifs.eq.10) then
19817          rd=RANART(NSEED)
19818          if(rd.le.0.5) then
19819 c     (pbar nbar) N*(1440)
19820             if(ifs.eq.9) then
19821                iblock=18091
19822                lbb1=-1
19823             else
19824                iblock=18101
19825                lbb1=-2
19826             endif
19827             rd2=RANART(NSEED)
19828             if(rd2.le.0.5) then
19829                lbb2=12
19830             else
19831                lbb2=13
19832             endif
19833          else
19834 c     (p n) anti-N*(1535)
19835             if(ifs.eq.9) then
19836                iblock=18092
19837                lbb1=1
19838             else
19839                iblock=18102
19840                lbb1=2
19841             endif
19842             rd2=RANART(NSEED)
19843             if(rd2.le.0.5) then
19844                lbb2=-12
19845             else
19846                lbb2=-13
19847             endif
19848          endif
19849 c11&12 anti-Delta N*, Delta anti-N*
19850       elseif(ifs.eq.11.or.ifs.eq.12) then
19851          rd=RANART(NSEED)
19852          if(rd.le.0.5) then
19853 c     anti-Delta N*
19854             rd1=RANART(NSEED)
19855             if(rd1.le.0.25) then
19856                lbb1=-6
19857             elseif(rd1.le.0.5) then
19858                lbb1=-7
19859             elseif(rd1.le.0.75) then
19860                lbb1=-8
19861             else
19862                lbb1=-9
19863             endif
19864             if(ifs.eq.11) then
19865                iblock=18111
19866                rd2=RANART(NSEED)
19867                if(rd2.le.0.5) then
19868                   lbb2=10
19869                else
19870                   lbb2=11
19871                endif
19872             else
19873                iblock=18121
19874                rd2=RANART(NSEED)
19875                if(rd2.le.0.5) then
19876                   lbb2=12
19877                else
19878                   lbb2=13
19879                endif
19880             endif
19881          else
19882 c     Delta anti-N*
19883             rd1=RANART(NSEED)
19884             if(rd1.le.0.25) then
19885                lbb1=6
19886             elseif(rd1.le.0.5) then
19887                lbb1=7
19888             elseif(rd1.le.0.75) then
19889                lbb1=8
19890             else
19891                lbb1=9
19892             endif
19893             if(ifs.eq.11) then
19894                iblock=18112
19895                rd2=RANART(NSEED)
19896                if(rd2.le.0.5) then
19897                   lbb2=-10
19898                else
19899                   lbb2=-11
19900                endif
19901             else
19902                iblock=18122
19903                rd2=RANART(NSEED)
19904                if(rd2.le.0.5) then
19905                   lbb2=-12
19906                else
19907                   lbb2=-13
19908                endif
19909             endif
19910          endif
19911 c13   N*(1440) anti-N*(1440)
19912       elseif(ifs.eq.13) then
19913          iblock=1813
19914          rd1=RANART(NSEED)
19915          if(rd1.le.0.5) then
19916             lbb1=10
19917          else
19918             lbb1=11
19919          endif
19920          rd2=RANART(NSEED)
19921          if(rd2.le.0.5) then
19922             lbb2=-10
19923          else
19924             lbb2=-11
19925          endif
19926 c14   anti-N*(1440) N*(1535), N*(1440) anti-N*(1535)
19927       elseif(ifs.eq.14) then
19928          rd=RANART(NSEED)
19929          if(rd.le.0.5) then
19930 c     anti-N*(1440) N*(1535)
19931             iblock=18141
19932             rd1=RANART(NSEED)
19933             if(rd1.le.0.5) then
19934                lbb1=-10
19935             else
19936                lbb1=-11
19937             endif
19938             rd2=RANART(NSEED)
19939             if(rd2.le.0.5) then
19940                lbb2=12
19941             else
19942                lbb2=13
19943             endif
19944          else
19945 c     N*(1440) anti-N*(1535)
19946             iblock=18142
19947             rd1=RANART(NSEED)
19948             if(rd1.le.0.5) then
19949                lbb1=10
19950             else
19951                lbb1=11
19952             endif
19953             rd2=RANART(NSEED)
19954             if(rd2.le.0.5) then
19955                lbb2=-12
19956             else
19957                lbb2=-13
19958             endif
19959          endif
19960 c15   N*(1535) anti-N*(1535)
19961       elseif(ifs.eq.15) then
19962          iblock=1815
19963          rd1=RANART(NSEED)
19964          if(rd1.le.0.5) then
19965             lbb1=12
19966          else
19967             lbb1=13
19968          endif
19969          rd2=RANART(NSEED)
19970          if(rd2.le.0.5) then
19971             lbb2=-12
19972          else
19973             lbb2=-13
19974          endif
19975       else
19976       endif
19977
19978       RETURN
19979       END
19980
19981 *****************************************
19982 * for pi pi <-> rho rho cross sections
19983         SUBROUTINE spprr(lb1,lb2,srt)
19984         parameter (arho=0.77)
19985       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
19986 cc      SAVE /ppb1/
19987       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
19988 cc      SAVE /ppmm/
19989       SAVE   
19990
19991         pprr=0.
19992         if((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5)) then
19993 c     for now, rho mass taken to be the central value in these two processes
19994            if(srt.gt.(2*arho)) pprr=ptor(srt)
19995         elseif((lb1.ge.25.and.lb1.le.27).and.(lb2.ge.25.and.lb2.le.27)) 
19996      1          then
19997            pprr=rtop(srt)
19998         endif
19999 c
20000         return
20001         END
20002
20003 *****************************************
20004 * for pi pi -> rho rho, determined from detailed balance
20005       real function ptor(srt)
20006 *****************************************
20007       parameter (pimass=0.140,arho=0.77)
20008       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20009 cc      SAVE /ppb1/
20010       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20011 cc      SAVE /ppmm/
20012       SAVE   
20013
20014       s2=srt**2
20015       ptor=9*(s2-4*arho**2)/(s2-4*pimass**2)*rtop(srt)
20016
20017       return
20018       END
20019
20020 *****************************************
20021 * for rho rho -> pi pi, assumed a constant cross section (in mb)
20022       real function rtop(srt)
20023 *****************************************
20024       srt=srt
20025       rtop=5.
20026       return
20027       END
20028
20029 *****************************************
20030 * for pi pi <-> rho rho final states
20031       SUBROUTINE pi2ro2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20032       PARAMETER (MAXSTR=150001)
20033       PARAMETER (AP1=0.13496,AP2=0.13957)
20034       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20035 cc      SAVE /EE/
20036       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20037 cc      SAVE /ppb1/
20038       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20039 cc      SAVE /ppmm/
20040       COMMON/RNDF77/NSEED
20041 cc      SAVE /RNDF77/
20042       SAVE   
20043       iseed=iseed
20044       if((lb(i1).ge.3.and.lb(i1).le.5)
20045      1     .and.(lb(i2).ge.3.and.lb(i2).le.5)) then
20046          iblock=1850
20047          ei1=0.77
20048          ei2=0.77
20049 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20050 c     thus the cross sections used are considered as the isospin-averaged ones.
20051          lbb1=25+int(3*RANART(NSEED))
20052          lbb2=25+int(3*RANART(NSEED))
20053       elseif((lb(i1).ge.25.and.lb(i1).le.27)
20054      1     .and.(lb(i2).ge.25.and.lb(i2).le.27)) then
20055          iblock=1851
20056          lbb1=3+int(3*RANART(NSEED))
20057          lbb2=3+int(3*RANART(NSEED))
20058          ei1=ap2
20059          ei2=ap2
20060          if(lbb1.eq.4) ei1=ap1
20061          if(lbb2.eq.4) ei2=ap1
20062       endif
20063
20064       return
20065       END
20066
20067 *****************************************
20068 * for pi pi <-> eta eta cross sections
20069         SUBROUTINE sppee(lb1,lb2,srt)
20070         parameter (ETAM=0.5475)
20071       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20072 cc      SAVE /ppb1/
20073       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20074 cc      SAVE /ppmm/
20075       SAVE   
20076
20077         ppee=0.
20078         if((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5)) then
20079            if(srt.gt.(2*ETAM)) ppee=ptoe(srt)
20080         elseif(lb1.eq.0.and.lb2.eq.0) then
20081            ppee=etop(srt)
20082         endif
20083
20084         return
20085         END
20086
20087 *****************************************
20088 * for pi pi -> eta eta, determined from detailed balance, spin-isospin averaged
20089       real function ptoe(srt)
20090 *****************************************
20091       parameter (pimass=0.140,ETAM=0.5475)
20092       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20093 cc      SAVE /ppb1/
20094       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20095 cc      SAVE /ppmm/
20096       SAVE   
20097
20098       s2=srt**2
20099       ptoe=1./9.*(s2-4*etam**2)/(s2-4*pimass**2)*etop(srt)
20100
20101       return
20102       END
20103 *****************************************
20104 * for eta eta -> pi pi, assumed a constant cross section (in mb)
20105       real function etop(srt)
20106 *****************************************
20107       srt=srt
20108 c     eta equilibration:
20109 c     most important channel is found to be pi pi <-> pi eta, then
20110 c     rho pi <-> rho eta.
20111       etop=5.
20112       return
20113       END
20114
20115 *****************************************
20116 * for pi pi <-> eta eta final states
20117       SUBROUTINE pi2et2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20118       PARAMETER (MAXSTR=150001)
20119       PARAMETER (AP1=0.13496,AP2=0.13957,ETAM=0.5475)
20120       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20121 cc      SAVE /EE/
20122       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20123 cc      SAVE /ppb1/
20124       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20125 cc      SAVE /ppmm/
20126       COMMON/RNDF77/NSEED
20127 cc      SAVE /RNDF77/
20128       SAVE   
20129
20130       iseed=iseed
20131       if((lb(i1).ge.3.and.lb(i1).le.5)
20132      1     .and.(lb(i2).ge.3.and.lb(i2).le.5)) then
20133          iblock=1860
20134          ei1=etam
20135          ei2=etam
20136 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20137 c     thus the cross sections used are considered as the isospin-averaged ones.
20138          lbb1=0
20139          lbb2=0
20140       elseif(lb(i1).eq.0.and.lb(i2).eq.0) then
20141          iblock=1861
20142          lbb1=3+int(3*RANART(NSEED))
20143          lbb2=3+int(3*RANART(NSEED))
20144          ei1=ap2
20145          ei2=ap2
20146          if(lbb1.eq.4) ei1=ap1
20147          if(lbb2.eq.4) ei2=ap1
20148       endif
20149
20150       return
20151       END
20152
20153 *****************************************
20154 * for pi pi <-> pi eta cross sections
20155         SUBROUTINE spppe(lb1,lb2,srt)
20156         parameter (pimass=0.140,ETAM=0.5475)
20157       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20158 cc      SAVE /ppb1/
20159       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20160 cc      SAVE /ppmm/
20161       SAVE   
20162
20163         pppe=0.
20164         if((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5)) then
20165            if(srt.gt.(ETAM+pimass)) pppe=pptope(srt)
20166         elseif((lb1.ge.3.and.lb1.le.5).and.lb2.eq.0) then
20167            pppe=petopp(srt)
20168         elseif((lb2.ge.3.and.lb2.le.5).and.lb1.eq.0) then
20169            pppe=petopp(srt)
20170         endif
20171
20172         return
20173         END
20174
20175 *****************************************
20176 * for pi pi -> pi eta, determined from detailed balance, spin-isospin averaged
20177       real function pptope(srt)
20178 *****************************************
20179       parameter (pimass=0.140,ETAM=0.5475)
20180       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20181 cc      SAVE /ppb1/
20182       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20183 cc      SAVE /ppmm/
20184       SAVE   
20185
20186       s2=srt**2
20187       pf2=(s2-(pimass+ETAM)**2)*(s2-(pimass-ETAM)**2)/2/sqrt(s2)
20188       pi2=(s2-4*pimass**2)*s2/2/sqrt(s2)
20189       pptope=1./3.*pf2/pi2*petopp(srt)
20190
20191       return
20192       END
20193 *****************************************
20194 * for pi eta -> pi pi, assumed a constant cross section (in mb)
20195       real function petopp(srt)
20196 *****************************************
20197       srt=srt
20198 c     eta equilibration:
20199       petopp=5.
20200       return
20201       END
20202
20203 *****************************************
20204 * for pi pi <-> pi eta final states
20205       SUBROUTINE pi3eta(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20206       PARAMETER (MAXSTR=150001)
20207       PARAMETER (AP1=0.13496,AP2=0.13957,ETAM=0.5475)
20208       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20209 cc      SAVE /EE/
20210       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20211 cc      SAVE /ppb1/
20212       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20213 cc      SAVE /ppmm/
20214       COMMON/RNDF77/NSEED
20215 cc      SAVE /RNDF77/
20216       SAVE   
20217
20218       ISEED=ISEED
20219       if((lb(i1).ge.3.and.lb(i1).le.5)
20220      1     .and.(lb(i2).ge.3.and.lb(i2).le.5)) then
20221          iblock=1870
20222          ei1=ap2
20223          ei2=etam
20224 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20225 c     thus the cross sections used are considered as the isospin-averaged ones.
20226          lbb1=3+int(3*RANART(NSEED))
20227          if(lbb1.eq.4) ei1=ap1
20228          lbb2=0
20229       elseif((lb(i1).ge.3.and.lb(i1).le.5.and.lb(i2).eq.0).or.
20230      1        (lb(i2).ge.3.and.lb(i2).le.5.and.lb(i1).eq.0)) then
20231          iblock=1871
20232          lbb1=3+int(3*RANART(NSEED))
20233          lbb2=3+int(3*RANART(NSEED))
20234          ei1=ap2
20235          ei2=ap2
20236          if(lbb1.eq.4) ei1=ap1
20237          if(lbb2.eq.4) ei2=ap1
20238       endif
20239
20240       return
20241       END
20242
20243 *****************************************
20244 * for rho pi <-> rho eta cross sections
20245         SUBROUTINE srpre(lb1,lb2,srt)
20246         parameter (pimass=0.140,ETAM=0.5475,arho=0.77)
20247         common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20248 cc      SAVE /ppb1/
20249         common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20250 cc      SAVE /ppmm/
20251       SAVE   
20252
20253         rpre=0.
20254         if(lb1.ge.25.and.lb1.le.27.and.lb2.ge.3.and.lb2.le.5) then
20255            if(srt.gt.(ETAM+arho)) rpre=rptore(srt)
20256         elseif(lb2.ge.25.and.lb2.le.27.and.lb1.ge.3.and.lb1.le.5) then
20257            if(srt.gt.(ETAM+arho)) rpre=rptore(srt)
20258         elseif(lb1.ge.25.and.lb1.le.27.and.lb2.eq.0) then
20259            if(srt.gt.(pimass+arho)) rpre=retorp(srt)
20260         elseif(lb2.ge.25.and.lb2.le.27.and.lb1.eq.0) then
20261            if(srt.gt.(pimass+arho)) rpre=retorp(srt)
20262         endif
20263
20264         return
20265         END
20266
20267 *****************************************
20268 * for rho pi->rho eta, determined from detailed balance, spin-isospin averaged
20269       real function rptore(srt)
20270 *****************************************
20271       parameter (pimass=0.140,ETAM=0.5475,arho=0.77)
20272       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20273 cc      SAVE /ppb1/
20274       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20275 cc      SAVE /ppmm/
20276       SAVE   
20277
20278       s2=srt**2
20279       pf2=(s2-(arho+ETAM)**2)*(s2-(arho-ETAM)**2)/2/sqrt(s2)
20280       pi2=(s2-(arho+pimass)**2)*(s2-(arho-pimass)**2)/2/sqrt(s2)
20281       rptore=1./3.*pf2/pi2*retorp(srt)
20282
20283       return
20284       END
20285 *****************************************
20286 * for rho eta -> rho pi, assumed a constant cross section (in mb)
20287       real function retorp(srt)
20288 *****************************************
20289       srt=srt
20290 c     eta equilibration:
20291       retorp=5.
20292       return
20293       END
20294
20295 *****************************************
20296 * for rho pi <-> rho eta final states
20297       SUBROUTINE rpiret(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20298       PARAMETER (MAXSTR=150001)
20299       PARAMETER (AP1=0.13496,AP2=0.13957,ETAM=0.5475,arho=0.77)
20300       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20301 cc      SAVE /EE/
20302       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20303 cc      SAVE /ppb1/
20304       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20305 cc      SAVE /ppmm/
20306       COMMON/RNDF77/NSEED
20307 cc      SAVE /RNDF77/
20308       SAVE   
20309       ISEED=ISEED
20310       if((lb(i1).ge.25.and.lb(i1).le.27
20311      1     .and.lb(i2).ge.3.and.lb(i2).le.5).or.
20312      2     (lb(i1).ge.3.and.lb(i1).le.5
20313      3     .and.lb(i2).ge.25.and.lb(i2).le.27)) then
20314          iblock=1880
20315          ei1=arho
20316          ei2=etam
20317 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20318 c     thus the cross sections used are considered as the isospin-averaged ones.
20319          lbb1=25+int(3*RANART(NSEED))
20320          lbb2=0
20321       elseif((lb(i1).ge.25.and.lb(i1).le.27.and.lb(i2).eq.0).or.
20322      1        (lb(i2).ge.25.and.lb(i2).le.27.and.lb(i1).eq.0)) then
20323          iblock=1881
20324          lbb1=25+int(3*RANART(NSEED))
20325          lbb2=3+int(3*RANART(NSEED))
20326          ei1=arho
20327          ei2=ap2
20328          if(lbb2.eq.4) ei2=ap1
20329       endif
20330
20331       return
20332       END
20333
20334 *****************************************
20335 * for omega pi <-> omega eta cross sections
20336         SUBROUTINE sopoe(lb1,lb2,srt)
20337         parameter (ETAM=0.5475,aomega=0.782)
20338       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20339 cc      SAVE /ppb1/
20340       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20341 cc      SAVE /ppmm/
20342       SAVE   
20343
20344         xopoe=0.
20345         if((lb1.eq.28.and.lb2.ge.3.and.lb2.le.5).or.
20346      1       (lb2.eq.28.and.lb1.ge.3.and.lb1.le.5)) then
20347            if(srt.gt.(aomega+ETAM)) xopoe=xop2oe(srt)
20348         elseif((lb1.eq.28.and.lb2.eq.0).or.
20349      1          (lb1.eq.0.and.lb2.eq.28)) then
20350            if(srt.gt.(aomega+ETAM)) xopoe=xoe2op(srt)
20351         endif
20352
20353         return
20354         END
20355
20356 *****************************************
20357 * for omega pi -> omega eta, 
20358 c     determined from detailed balance, spin-isospin averaged
20359       real function xop2oe(srt)
20360 *****************************************
20361       parameter (pimass=0.140,ETAM=0.5475,aomega=0.782)
20362       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20363 cc      SAVE /ppb1/
20364       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20365 cc      SAVE /ppmm/
20366       SAVE   
20367
20368       s2=srt**2
20369       pf2=(s2-(aomega+ETAM)**2)*(s2-(aomega-ETAM)**2)/2/sqrt(s2)
20370       pi2=(s2-(aomega+pimass)**2)*(s2-(aomega-pimass)**2)/2/sqrt(s2)
20371       xop2oe=1./3.*pf2/pi2*xoe2op(srt)
20372
20373       return
20374       END
20375 *****************************************
20376 * for omega eta -> omega pi, assumed a constant cross section (in mb)
20377       real function xoe2op(srt)
20378 *****************************************
20379       srt=srt
20380 c     eta equilibration:
20381       xoe2op=5.
20382       return
20383       END
20384
20385 *****************************************
20386 * for omega pi <-> omega eta final states
20387       SUBROUTINE opioet(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20388       PARAMETER (MAXSTR=150001)
20389       PARAMETER (AP1=0.13496,AP2=0.13957,ETAM=0.5475,aomega=0.782)
20390       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20391 cc      SAVE /EE/
20392       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20393 cc      SAVE /ppb1/
20394       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20395 cc      SAVE /ppmm/
20396       COMMON/RNDF77/NSEED
20397 cc      SAVE /RNDF77/
20398       SAVE   
20399
20400       iseed=iseed
20401       if((lb(i1).ge.3.and.lb(i1).le.5.and.lb(i2).eq.28).or.
20402      1     (lb(i2).ge.3.and.lb(i2).le.5.and.lb(i1).eq.28)) then
20403          iblock=1890
20404          ei1=aomega
20405          ei2=etam
20406 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20407 c     thus the cross sections used are considered as the isospin-averaged ones.
20408          lbb1=28
20409          lbb2=0
20410       elseif((lb(i1).eq.28.and.lb(i2).eq.0).or.
20411      1        (lb(i1).eq.0.and.lb(i2).eq.28)) then
20412          iblock=1891
20413          lbb1=28
20414          lbb2=3+int(3*RANART(NSEED))
20415          ei1=aomega
20416          ei2=ap2
20417          if(lbb2.eq.4) ei2=ap1
20418       endif
20419
20420       return
20421       END
20422
20423 *****************************************
20424 * for rho rho <-> eta eta cross sections
20425         SUBROUTINE srree(lb1,lb2,srt)
20426         parameter (ETAM=0.5475,arho=0.77)
20427       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20428 cc      SAVE /ppb1/
20429       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20430 cc      SAVE /ppmm/
20431       SAVE   
20432
20433         rree=0.
20434         if(lb1.ge.25.and.lb1.le.27.and.
20435      1       lb2.ge.25.and.lb2.le.27) then
20436            if(srt.gt.(2*ETAM)) rree=rrtoee(srt)
20437         elseif(lb1.eq.0.and.lb2.eq.0) then
20438            if(srt.gt.(2*arho)) rree=eetorr(srt)
20439         endif
20440
20441         return
20442         END
20443
20444 *****************************************
20445 * for eta eta -> rho rho
20446 c     determined from detailed balance, spin-isospin averaged
20447       real function eetorr(srt)
20448 *****************************************
20449       parameter (ETAM=0.5475,arho=0.77)
20450       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20451 cc      SAVE /ppb1/
20452       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20453 cc      SAVE /ppmm/
20454       SAVE   
20455
20456       s2=srt**2
20457       eetorr=81.*(s2-4*arho**2)/(s2-4*etam**2)*rrtoee(srt)
20458
20459       return
20460       END
20461 *****************************************
20462 * for rho rho -> eta eta, assumed a constant cross section (in mb)
20463       real function rrtoee(srt)
20464 *****************************************
20465       srt=srt
20466 c     eta equilibration:
20467       rrtoee=5.
20468       return
20469       END
20470
20471 *****************************************
20472 * for rho rho <-> eta eta final states
20473       SUBROUTINE ro2et2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20474       PARAMETER (MAXSTR=150001)
20475       parameter (ETAM=0.5475,arho=0.77)
20476       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20477 cc      SAVE /EE/
20478       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20479 cc      SAVE /ppb1/
20480       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20481 cc      SAVE /ppmm/
20482       COMMON/RNDF77/NSEED
20483 cc      SAVE /RNDF77/
20484       SAVE   
20485
20486       ISEED=ISEED
20487       if(lb(i1).ge.25.and.lb(i1).le.27.and.
20488      1     lb(i2).ge.25.and.lb(i2).le.27) then
20489          iblock=1895
20490          ei1=etam
20491          ei2=etam
20492 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20493 c     thus the cross sections used are considered as the isospin-averaged ones.
20494          lbb1=0
20495          lbb2=0
20496       elseif(lb(i1).eq.0.and.lb(i2).eq.0) then
20497          iblock=1896
20498          lbb1=25+int(3*RANART(NSEED))
20499          lbb2=25+int(3*RANART(NSEED))
20500          ei1=arho
20501          ei2=arho
20502       endif
20503
20504       return
20505       END
20506
20507 *****************************
20508 * purpose: Xsection for K* Kbar or K*bar K to pi(eta) rho(omega)
20509       SUBROUTINE XKKSAN(i1,i2,SRT,SIGKS1,SIGKS2,SIGKS3,SIGKS4,SIGK,prkk)
20510 *  srt    = DSQRT(s) in GeV                                       *
20511 *  sigk   = xsection in mb obtained from                          *
20512 *           the detailed balance                                  *
20513 * ***************************
20514           PARAMETER (AKA=0.498, PIMASS=0.140, RHOM = 0.770,aks=0.895,
20515      & OMEGAM = 0.7819, ETAM = 0.5473)
20516       PARAMETER (MAXSTR=150001)
20517       COMMON  /CC/      E(MAXSTR)
20518 cc      SAVE /CC/
20519       SAVE   
20520
20521         S = SRT ** 2
20522        SIGKS1 = 1.E-08
20523        SIGKS2 = 1.E-08
20524        SIGKS3 = 1.E-08
20525        SIGKS4 = 1.E-08
20526
20527         XPION0 = prkk
20528 clin note that prkk is for pi (rho omega) -> K* Kbar (AND!) K*bar K:
20529         XPION0 = XPION0/2
20530
20531 cc
20532 c        PI2 = (S - (aks + AKA) ** 2) * (S - (aks - AKA) ** 2)
20533         PI2 = (S - (e(i1) + e(i2)) ** 2) * (S - (e(i1) - e(i2)) ** 2)
20534         SIGK = 1.E-08
20535         if(PI2 .le. 0.0) return
20536
20537         XM1 = PIMASS
20538         XM2 = RHOM
20539         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
20540         IF (PI2 .GT. 0.0 .AND. PF2 .GT. 0.0) THEN
20541            SIGKS1 = 27.0 / 4.0 * PF2 / PI2 * XPION0
20542         END IF
20543
20544         XM1 = PIMASS
20545         XM2 = OMEGAM
20546         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
20547         IF (PI2 .GT. 0.0 .AND. PF2 .GT. 0.0) THEN
20548            SIGKS2 = 9.0 / 4.0 * PF2 / PI2 * XPION0
20549         END IF
20550
20551         XM1 = RHOM
20552         XM2 = ETAM
20553         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
20554         IF (PF2 .GT. 0.0) THEN
20555            SIGKS3 = 9.0 / 4.0 * PF2 / PI2 * XPION0
20556         END IF
20557
20558         XM1 = OMEGAM
20559         XM2 = ETAM
20560         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
20561         IF (PF2 .GT. 0.0) THEN
20562            SIGKS4 = 3.0 / 4.0 * PF2 / PI2 * XPION0
20563         END IF
20564
20565         SIGK=SIGKS1+SIGKS2+SIGKS3+SIGKS4
20566
20567        RETURN
20568         END
20569
20570 **********************************
20571 *     PURPOSE:                                                         *
20572 *     assign final states for KK*bar or K*Kbar --> light mesons
20573 *
20574 c      SUBROUTINE Crkspi(PX,PY,PZ,SRT,I1,I2,IBLOCK)
20575       SUBROUTINE crkspi(I1,I2,XSK1, XSK2, XSK3, XSK4, SIGK,
20576      & IBLOCK,lbp1,lbp2,emm1,emm2)
20577 *             iblock   - 466
20578 **********************************
20579         PARAMETER (MAXSTR=150001,MAXR=1)
20580           PARAMETER (AP1=0.13496,AP2=0.13957,RHOM = 0.770,PI=3.1415926)
20581         PARAMETER (AETA=0.548,AMOMGA=0.782)
20582         parameter (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
20583         COMMON /AA/ R(3,MAXSTR)
20584 cc      SAVE /AA/
20585         COMMON /BB/ P(3,MAXSTR)
20586 cc      SAVE /BB/
20587         COMMON /CC/ E(MAXSTR)
20588 cc      SAVE /CC/
20589         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20590 cc      SAVE /EE/
20591         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
20592 cc      SAVE /input1/
20593       COMMON/RNDF77/NSEED
20594 cc      SAVE /RNDF77/
20595       SAVE   
20596
20597        IBLOCK=466
20598 * charges of final state mesons:
20599
20600         X1 = RANART(NSEED) * SIGK
20601         XSK2 = XSK1 + XSK2
20602         XSK3 = XSK2 + XSK3
20603         XSK4 = XSK3 + XSK4
20604         IF (X1 .LE. XSK1) THEN
20605            LB(I1) = 3 + int(3 * RANART(NSEED))
20606            LB(I2) = 25 + int(3 * RANART(NSEED))
20607            E(I1) = AP2
20608            E(I2) = rhom
20609         ELSE IF (X1 .LE. XSK2) THEN
20610            LB(I1) = 3 + int(3 * RANART(NSEED))
20611            LB(I2) = 28
20612            E(I1) = AP2
20613            E(I2) = AMOMGA
20614         ELSE IF (X1 .LE. XSK3) THEN
20615            LB(I1) = 0
20616            LB(I2) = 25 + int(3 * RANART(NSEED))
20617            E(I1) = AETA
20618            E(I2) = rhom
20619         ELSE
20620            LB(I1) = 0
20621            LB(I2) = 28
20622            E(I1) = AETA
20623            E(I2) = AMOMGA
20624         ENDIF
20625
20626         if(lb(i1).eq.4) E(I1) = AP1
20627         lbp1=lb(i1)
20628         lbp2=lb(i2)
20629         emm1=e(i1)
20630         emm2=e(i2)
20631
20632       RETURN
20633       END
20634
20635 *---------------------------------------------------------------------------
20636 * PURPOSE : CALCULATE THE MASS AND MOMENTUM OF K* RESONANCE 
20637 *           AFTER PION + KAON COLLISION
20638 *clin only here the K* mass may be different from aks=0.895
20639         SUBROUTINE KSRESO(I1,I2)
20640         PARAMETER (MAXSTR=150001,MAXR=1,
20641      1  AMN=0.939457,AMP=0.93828,
20642      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
20643         COMMON /AA/ R(3,MAXSTR)
20644 cc      SAVE /AA/
20645         COMMON /BB/ P(3,MAXSTR)
20646 cc      SAVE /BB/
20647         COMMON /CC/ E(MAXSTR)
20648 cc      SAVE /CC/
20649         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20650 cc      SAVE /EE/
20651         COMMON   /RUN/NUM
20652 cc      SAVE /RUN/
20653         COMMON   /PA/RPION(3,MAXSTR,MAXR)
20654 cc      SAVE /PA/
20655         COMMON   /PB/PPION(3,MAXSTR,MAXR)
20656 cc      SAVE /PB/
20657         COMMON   /PC/EPION(MAXSTR,MAXR)
20658 cc      SAVE /PC/
20659         COMMON   /PD/LPION(MAXSTR,MAXR)
20660 cc      SAVE /PD/
20661       SAVE   
20662 * 1. DETERMINE THE MOMENTUM COMPONENT OF THE K* IN THE CMS OF PI-K FRAME
20663 *    WE LET I1 TO BE THE K* AND ABSORB I2
20664         E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
20665         E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
20666         IF(LB(I2) .EQ. 21 .OR. LB(I2) .EQ. 23) THEN
20667         E(I1)=0.
20668         I=I2
20669         ELSE
20670         E(I2)=0.
20671         I=I1
20672         ENDIF
20673         if(LB(I).eq.23) then
20674            LB(I)=30
20675         else if(LB(I).eq.21) then
20676            LB(I)=-30
20677         endif
20678         P(1,I)=P(1,I1)+P(1,I2)
20679         P(2,I)=P(2,I1)+P(2,I2)
20680         P(3,I)=P(3,I1)+P(3,I2)
20681 * 2. DETERMINE THE MASS OF K* BY USING THE REACTION KINEMATICS
20682         DM=SQRT((E10+E20)**2-P(1,I)**2-P(2,I)**2-P(3,I)**2)
20683         E(I)=DM
20684         RETURN
20685         END
20686
20687 c--------------------------------------------------------
20688 *************************************
20689 *                                                                         *
20690       SUBROUTINE pertur(PX,PY,PZ,SRT,IRUN,I1,I2,nt,kp,icont)
20691 *                                                                         *
20692 *       PURPOSE:   TO PRODUCE CASCADE AND OMEGA PERTURBATIVELY            *
20693 c sp 01/03/01
20694 *                   40 cascade-
20695 *                  -40 cascade-(bar)
20696 *                   41 cascade0
20697 *                  -41 cascade0(bar)
20698 *                   45 Omega baryon
20699 *                  -45 Omega baryon(bar)
20700 *                   44 Di-Omega
20701 **********************************
20702       PARAMETER      (MAXSTR=150001,MAXR=1,PI=3.1415926)
20703       parameter      (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
20704       PARAMETER (AMN=0.939457,AMP=0.93828,AP1=0.13496,AP2=0.13957)
20705       PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,aks=0.895)
20706       PARAMETER      (ACAS=1.3213,AOME=1.6724,AMRHO=0.769,AMOMGA=0.782)
20707       PARAMETER      (AETA=0.548,ADIOMG=3.2288)
20708       parameter            (maxx=20,maxz=24)
20709       COMMON   /AA/  R(3,MAXSTR)
20710 cc      SAVE /AA/
20711       COMMON   /BB/  P(3,MAXSTR)
20712 cc      SAVE /BB/
20713       COMMON   /CC/  E(MAXSTR)
20714 cc      SAVE /CC/
20715       COMMON   /EE/  ID(MAXSTR),LB(MAXSTR)
20716 cc      SAVE /EE/
20717       COMMON   /HH/  PROPER(MAXSTR)
20718 cc      SAVE /HH/
20719       common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
20720 cc      SAVE /ff/
20721       common   /gg/  dx,dy,dz,dpx,dpy,dpz
20722 cc      SAVE /gg/
20723       COMMON   /INPUT/ NSTAR,NDIRCT,DIR
20724 cc      SAVE /INPUT/
20725       COMMON   /NN/NNN
20726 cc      SAVE /NN/
20727       COMMON   /PA/RPION(3,MAXSTR,MAXR)
20728 cc      SAVE /PA/
20729       COMMON   /PB/PPION(3,MAXSTR,MAXR)
20730 cc      SAVE /PB/
20731       COMMON   /PC/EPION(MAXSTR,MAXR)
20732 cc      SAVE /PC/
20733       COMMON   /PD/LPION(MAXSTR,MAXR)
20734 cc      SAVE /PD/
20735       COMMON   /PE/PROPI(MAXSTR,MAXR)
20736 cc      SAVE /PE/
20737       COMMON   /RR/  MASSR(0:MAXR)
20738 cc      SAVE /RR/
20739       COMMON   /BG/BETAX,BETAY,BETAZ,GAMMA
20740 cc      SAVE /BG/
20741       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
20742 cc      SAVE /input1/
20743 c     perturbative method is disabled:
20744 c      common /imulst/ iperts
20745 c
20746       COMMON/RNDF77/NSEED
20747 cc      SAVE /RNDF77/
20748       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
20749      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
20750      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
20751       SAVE   
20752       kp=kp
20753       nt=nt
20754
20755       px0 = px
20756       py0 = py
20757       pz0 = pz
20758       LB1 = LB(I1)
20759       EM1 = E(I1)
20760       X1  = R(1,I1)
20761       Y1  = R(2,I1)
20762       Z1  = R(3,I1)
20763       prob1 = PROPER(I1)
20764 c     
20765       LB2 = LB(I2)
20766       EM2 = E(I2)
20767       X2  = R(1,I2)
20768       Y2  = R(2,I2)
20769       Z2  = R(3,I2)
20770       prob2 = PROPER(I2)
20771 c
20772 c                 !! flag for real 2-body process (1/0=no/yes)
20773       icont = 1
20774 c                !! flag for elastic scatt only (-1=no)
20775       icsbel = -1
20776
20777 * K-/K*0bar + La/Si --> cascade + pi
20778 * K+/K*0 + La/Si (bar) --> cascade-bar + pi
20779        if( (lb1.eq.21.or.lb1.eq.23.or.iabs(lb1).eq.30) .and.
20780      &     (iabs(lb2).ge.14.and.iabs(lb2).le.17) )go to 60
20781        if( (lb2.eq.21.or.lb2.eq.23.or.iabs(lb2).eq.30) .and.
20782      &     (iabs(lb1).ge.14.and.iabs(lb1).le.17) )go to 60
20783 * K-/K*0bar + cascade --> omega + pi
20784 * K+/K*0 + cascade-bar --> omega-bar + pi
20785         if( (lb1.eq.21.or.lb1.eq.23.or.iabs(lb1).eq.30) .and.
20786      &      (iabs(lb2).eq.40.or.iabs(lb2).eq.41) )go to 70
20787         if( (lb2.eq.21.or.lb2.eq.23.or.iabs(lb2).eq.30) .and.
20788      &      (iabs(lb1).eq.40.or.iabs(lb1).eq.41) )go to 70
20789 c
20790 c annhilation of cascade,cascade-bar, omega,omega-bar
20791 c
20792 * K- + La/Si <-- cascade + pi(eta,rho,omega)
20793 * K+ + La/Si(bar) <-- cascade-bar + pi(eta,rho,omega)
20794        if( (((lb1.ge.3.and.lb1.le.5).or.lb1.eq.0) 
20795      &        .and.(iabs(lb2).eq.40.or.iabs(lb2).eq.41))
20796      & .OR. (((lb2.ge.3.and.lb2.le.5).or.lb2.eq.0) 
20797      &        .and.(iabs(lb1).eq.40.or.iabs(lb1).eq.41)) )go to 90
20798 * K- + cascade <-- omega + pi
20799 * K+ + cascade-bar <-- omega-bar + pi
20800 c         if( (lb1.eq.0.and.iabs(lb2).eq.45)
20801 c    &    .OR. (lb2.eq.0.and.iabs(lb1).eq.45) ) go to 110
20802        if( ((lb1.ge.3.and.lb1.le.5).and.iabs(lb2).eq.45)
20803      & .OR.((lb2.ge.3.and.lb2.le.5).and.iabs(lb1).eq.45) )go to 110
20804 c
20805
20806 c----------------------------------------------------
20807 *  for process:  K-bar + L(S) --> Ca + pi 
20808 *
20809 60         if(iabs(lb1).ge.14 .and. iabs(lb1).le.17)then 
20810              asap = e(i1)
20811              akap = e(i2)
20812              idp = i1
20813            else
20814              asap = e(i2)
20815              akap = e(i1)
20816              idp = i2
20817            endif
20818           app = 0.138
20819          if(srt .lt. (acas+app))return
20820           srrt = srt - (acas+app) + (amn+akap)
20821           pkaon = sqrt(((srrt**2-(amn**2+akap**2))/2./amn)**2 - akap**2)
20822           sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
20823 clin pii & pff should be each divided by (4*srt**2), 
20824 c     but these two factors cancel out in the ratio pii/pff:
20825           pii = sqrt((srt**2-(amn+akap)**2)*(srt**2-(amn-akap)**2))
20826           pff = sqrt((srt**2-(asap+app)**2)*(srt**2-(asap-app)**2))
20827          cmat = sigca*pii/pff
20828          sigpi = cmat*
20829      &            sqrt((srt**2-(acas+app)**2)*(srt**2-(acas-app)**2))/
20830      &            sqrt((srt**2-(asap+akap)**2)*(srt**2-(asap-akap)**2))
20831
20832          sigeta = 0.
20833         if(srt .gt. (acas+aeta))then
20834            srrt = srt - (acas+aeta) + (amn+akap)
20835          pkaon = sqrt(((srrt**2-(amn**2+akap**2))/2./amn)**2 - akap**2)
20836             sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
20837          cmat = sigca*pii/pff
20838          sigeta = cmat*
20839      &            sqrt((srt**2-(acas+aeta)**2)*(srt**2-(acas-aeta)**2))/
20840      &            sqrt((srt**2-(asap+akap)**2)*(srt**2-(asap-akap)**2))
20841         endif
20842 c
20843          sigca = sigpi + sigeta
20844          sigpe = 0.
20845 clin-2/25/03 disable the perturb option:
20846 c        if(iperts .eq. 1) sigpe = 40.   !! perturbative xsecn
20847            sig = amax1(sigpe,sigca)     
20848          ds = sqrt(sig/31.4)
20849          dsr = ds + 0.1
20850          ec = (em1+em2+0.02)**2
20851          call distce(i1,i2,dsr,ds,dt,ec,srt,ic,px,py,pz)
20852            if(ic .eq. -1)return
20853           brpp = sigca/sig
20854 c
20855 c else particle production
20856           if( (lb1.ge.14.and.lb1.le.17) .or.
20857      &          (lb2.ge.14.and.lb2.le.17) )then
20858 c   !! cascade- or cascde0
20859             lbpp1 = 40 + int(2*RANART(NSEED))
20860           else
20861 * elseif(lb1 .eq. -14 .or. lb2 .eq. -14)
20862 c     !! cascade-bar- or cascde0 -bar
20863             lbpp1 = -40 - int(2*RANART(NSEED))
20864           endif
20865               empp1 = acas
20866            if(RANART(NSEED) .lt. sigpi/sigca)then
20867 c    !! pion
20868             lbpp2 = 3 + int(3*RANART(NSEED))
20869             empp2 = 0.138
20870            else
20871 c    !! eta
20872             lbpp2 = 0
20873             empp2 = aeta
20874            endif        
20875 c* check real process of cascade(bar) and pion formation
20876           if(RANART(NSEED) .lt. brpp)then
20877 c       !! real process flag
20878             icont = 0
20879             lb(i1) = lbpp1
20880             e(i1) = empp1
20881 c  !! cascade formed with prob Gam
20882             proper(i1) = brpp
20883             lb(i2) = lbpp2
20884             e(i2) = empp2
20885 c         !! pion/eta formed with prob 1.
20886             proper(i2) = 1.
20887            endif
20888 c else only cascade(bar) formed perturbatively
20889              go to 700
20890             
20891 c----------------------------------------------------
20892 *  for process:  Cas(bar) + K_bar(K) --> Om(bar) + pi  !! eta
20893 *
20894 70         if(iabs(lb1).eq.40 .or. iabs(lb1).eq.41)then 
20895              acap = e(i1)
20896              akap = e(i2)
20897              idp = i1
20898            else
20899              acap = e(i2)
20900              akap = e(i1)
20901              idp = i2
20902            endif
20903            app = 0.138
20904 *         ames = aeta
20905 c  !! only pion
20906            ames = 0.138
20907          if(srt .lt. (aome+ames))return 
20908           srrt = srt - (aome+ames) + (amn+akap)
20909          pkaon = sqrt(((srrt**2-(amn**2+akap**2))/2./amn)**2 - akap**2)
20910 c use K(bar) + Ca --> Om + eta  xsecn same as  K(bar) + N --> Si + Pi
20911 *  as Omega have no resonances
20912 c** using same matrix elements as K-bar + N -> Si + pi
20913          sigomm = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
20914          cmat = sigomm*
20915      &          sqrt((srt**2-(amn+akap)**2)*(srt**2-(amn-akap)**2))/
20916      &          sqrt((srt**2-(asa+app)**2)*(srt**2-(asa-app)**2))
20917         sigom = cmat*
20918      &           sqrt((srt**2-(aome+ames)**2)*(srt**2-(aome-ames)**2))/
20919      &           sqrt((srt**2-(acap+akap)**2)*(srt**2-(acap-akap)**2))
20920           sigpe = 0.
20921 clin-2/25/03 disable the perturb option:
20922 c         if(iperts .eq. 1) sigpe = 40.   !! perturbative xsecn
20923           sig = amax1(sigpe,sigom)     
20924          ds = sqrt(sig/31.4)
20925          dsr = ds + 0.1
20926          ec = (em1+em2+0.02)**2
20927          call distce(i1,i2,dsr,ds,dt,ec,srt,ic,px,py,pz)
20928            if(ic .eq. -1)return
20929            brpp = sigom/sig
20930 c
20931 c else particle production
20932            if( (lb1.ge.40.and.lb1.le.41) .or.
20933      &           (lb2.ge.40.and.lb2.le.41) )then
20934 c    !! omega
20935             lbpp1 = 45
20936            else
20937 * elseif(lb1 .eq. -40 .or. lb2 .eq. -40)
20938 c    !! omega-bar
20939             lbpp1 = -45
20940            endif
20941            empp1 = aome
20942 *           lbpp2 = 0    !! eta
20943 c    !! pion
20944            lbpp2 = 3 + int(3*RANART(NSEED))
20945            empp2 = ames
20946 c
20947 c* check real process of omega(bar) and pion formation
20948            xrand=RANART(NSEED)
20949          if(xrand .lt. (proper(idp)*brpp))then
20950 c       !! real process flag
20951             icont = 0
20952             lb(i1) = lbpp1
20953             e(i1) = empp1
20954 c  !! P_Om = P_Cas*Gam
20955             proper(i1) = proper(idp)*brpp
20956             lb(i2) = lbpp2
20957             e(i2) = empp2
20958 c   !! pion formed with prob 1.
20959             proper(i2) = 1.
20960           elseif(xrand.lt.brpp) then
20961 c else omega(bar) formed perturbatively and cascade destroyed
20962              e(idp) = 0.
20963           endif
20964              go to 700
20965             
20966 c-----------------------------------------------------------
20967 *  for process:  Ca + pi/eta --> K-bar + L(S)
20968 *
20969 90         if(iabs(lb1).eq.40 .or. iabs(lb1).eq.41)then 
20970              acap = e(i1)
20971              app = e(i2)
20972              idp = i1
20973              idn = i2
20974            else
20975              acap = e(i2)
20976              app = e(i1)
20977              idp = i2
20978              idn = i1
20979            endif
20980 c            akal = (aka+aks)/2.  !! average of K and K* taken
20981 c  !! using K only
20982             akal = aka
20983 c
20984          alas = ala
20985        if(srt .le. (alas+aka))return
20986            srrt = srt - (acap+app) + (amn+aka)
20987          pkaon = sqrt(((srrt**2-(amn**2+aka**2))/2./amn)**2 - aka**2)
20988 c** using same matrix elements as K-bar + N -> La/Si + pi
20989          sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
20990          cmat = sigca*
20991      &          sqrt((srt**2-(amn+aka)**2)*(srt**2-(amn-aka)**2))/
20992      &          sqrt((srt**2-(alas+0.138)**2)*(srt**2-(alas-0.138)**2))
20993          sigca = cmat*
20994      &            sqrt((srt**2-(acap+app)**2)*(srt**2-(acap-app)**2))/
20995      &            sqrt((srt**2-(alas+aka)**2)*(srt**2-(alas-aka)**2))
20996 c    !! pi
20997             dfr = 1./3.
20998 c       !! eta
20999            if(lb(idn).eq.0)dfr = 1.
21000         sigcal = sigca*dfr*(srt**2-(alas+aka)**2)*
21001      &           (srt**2-(alas-aka)**2)/(srt**2-(acap+app)**2)/
21002      &           (srt**2-(acap-app)**2)
21003 c
21004           alas = ASA
21005        if(srt .le. (alas+aka))then
21006          sigcas = 0.
21007        else
21008            srrt = srt - (acap+app) + (amn+aka)
21009         pkaon = sqrt(((srrt**2-(amn**2+aka**2))/2./amn)**2 - aka**2)
21010 c use K(bar) + La/Si --> Ca + Pi  xsecn same as  K(bar) + N --> Si + Pi
21011 c** using same matrix elements as K-bar + N -> La/Si + pi
21012           sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
21013          cmat = sigca*
21014      &          sqrt((srt**2-(amn+aka)**2)*(srt**2-(amn-aka)**2))/
21015      &          sqrt((srt**2-(alas+0.138)**2)*(srt**2-(alas-0.138)**2))
21016          sigca = cmat*
21017      &            sqrt((srt**2-(acap+app)**2)*(srt**2-(acap-app)**2))/
21018      &            sqrt((srt**2-(alas+aka)**2)*(srt**2-(alas-aka)**2))
21019 c    !! pi
21020             dfr = 1.
21021 c    !! eta
21022            if(lb(idn).eq.0)dfr = 3.
21023         sigcas = sigca*dfr*(srt**2-(alas+aka)**2)*
21024      &           (srt**2-(alas-aka)**2)/(srt**2-(acap+app)**2)/
21025      &           (srt**2-(acap-app)**2)
21026        endif
21027 c
21028          sig = sigcal + sigcas
21029          brpp = 1.                                                   
21030          ds = sqrt(sig/31.4)
21031          dsr = ds + 0.1
21032          ec = (em1+em2+0.02)**2
21033          call distce(i1,i2,dsr,ds,dt,ec,srt,ic,px,py,pz)
21034 c
21035 clin-2/25/03: checking elastic scatt after failure of inelastic scatt gives 
21036 c     conditional probability (in general incorrect), tell Pal to correct:
21037        if(ic .eq. -1)then
21038 c check for elastic scatt, no particle annhilation
21039 c  !! elastic cross section of 20 mb
21040          ds = sqrt(20.0/31.4)
21041          dsr = ds + 0.1
21042          call distce(i1,i2,dsr,ds,dt,ec,srt,icsbel,px,py,pz)
21043            if(icsbel .eq. -1)return
21044             empp1 = EM1
21045             empp2 = EM2
21046              go to 700
21047        endif
21048 c
21049 c else pert. produced cascade(bar) is annhilated OR real process
21050 c
21051 * DECIDE LAMBDA OR SIGMA PRODUCTION
21052 c
21053        IF(sigcal/sig .GT. RANART(NSEED))THEN  
21054           if(lb1.eq.40.or.lb1.eq.41.or.lb2.eq.40.or.lb2.eq.41)then
21055           lbpp1 = 21
21056            lbpp2 = 14
21057           else
21058            lbpp1 = 23
21059            lbpp2 = -14
21060           endif
21061          alas = ala
21062        ELSE
21063           if(lb1.eq.40.or.lb1.eq.41.or.lb2.eq.40.or.lb2.eq.41)then
21064            lbpp1 = 21
21065             lbpp2 = 15 + int(3 * RANART(NSEED))
21066           else
21067             lbpp1 = 23
21068             lbpp2 = -15 - int(3 * RANART(NSEED))
21069           endif
21070          alas = ASA       
21071         ENDIF
21072              empp1 = aka  
21073              empp2 = alas 
21074 c
21075 c check for real process for L/S(bar) and K(bar) formation
21076           if(RANART(NSEED) .lt. proper(idp))then
21077 * real process
21078 c       !! real process flag
21079             icont = 0
21080             lb(i1) = lbpp1
21081             e(i1) = empp1
21082 c   !! K(bar) formed with prob 1.
21083             proper(i1) = 1.
21084             lb(i2) = lbpp2
21085             e(i2) = empp2
21086 c   !! L/S(bar) formed with prob 1.
21087             proper(i2) = 1.
21088              go to 700
21089            else
21090 c else only cascade(bar) annhilation & go out
21091             e(idp) = 0.
21092            endif
21093           return
21094 c
21095 c----------------------------------------------------
21096 *  for process:  Om(bar) + pi --> Cas(bar) + K_bar(K)
21097 *
21098 110         if(lb1 .eq. 45 .or. lb1 .eq. -45)then 
21099              aomp = e(i1)
21100              app = e(i2)
21101              idp = i1
21102              idn = i2
21103            else
21104              aomp = e(i2)
21105              app = e(i1)
21106              idp = i2
21107              idn = i1
21108            endif
21109 c            akal = (aka+aks)/2.  !! average of K and K* taken 
21110 c  !! using K only
21111             akal = aka
21112        if(srt .le. (acas+aka))return
21113            srrt = srt - (aome+app) + (amn+aka)
21114          pkaon = sqrt(((srrt**2-(amn**2+aka**2))/2./amn)**2 - aka**2)
21115 c use K(bar) + Ca --> Om + eta  xsecn same as  K(bar) + N --> Si + Pi
21116 c** using same matrix elements as K-bar + N -> La/Si + pi
21117            sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
21118          cmat = sigca*
21119      &          sqrt((srt**2-(amn+aka)**2)*(srt**2-(amn-aka)**2))/
21120      &          sqrt((srt**2-(asa+0.138)**2)*(srt**2-(asa-0.138)**2))
21121          sigom = cmat*
21122      &            sqrt((srt**2-(aomp+app)**2)*(srt**2-(aomp-app)**2))/
21123      &            sqrt((srt**2-(acas+aka)**2)*(srt**2-(acas-aka)**2))
21124 c            dfr = 2.    !! eta
21125 c    !! pion
21126            dfr = 2./3.
21127         sigom = sigom*dfr*(srt**2-(acas+aka)**2)*
21128      &           (srt**2-(acas-aka)**2)/(srt**2-(aomp+app)**2)/
21129      &           (srt**2-(aomp-app)**2)
21130 c                                                                         
21131          brpp = 1.
21132          ds = sqrt(sigom/31.4)
21133          dsr = ds + 0.1
21134          ec = (em1+em2+0.02)**2
21135          call distce(i1,i2,dsr,ds,dt,ec,srt,ic,px,py,pz)
21136 c
21137 clin-2/25/03: checking elastic scatt after failure of inelastic scatt gives 
21138 c     conditional probability (in general incorrect), tell Pal to correct:
21139        if(ic .eq. -1)then
21140 c check for elastic scatt, no particle annhilation
21141 c  !! elastic cross section of 20 mb
21142          ds = sqrt(20.0/31.4)
21143          dsr = ds + 0.1
21144          call distce(i1,i2,dsr,ds,dt,ec,srt,icsbel,px,py,pz)
21145            if(icsbel .eq. -1)return
21146             empp1 = EM1
21147             empp2 = EM2
21148              go to 700
21149        endif
21150 c
21151 c else pert. produced omega(bar) annhilated  OR real process
21152 c annhilate only pert. omega, rest from hijing go out WITHOUT annhil.
21153            if(lb1.eq.45 .or. lb2.eq.45)then
21154 c  !! Ca
21155              lbpp1 = 40 + int(2*RANART(NSEED))
21156 c   !! K-
21157              lbpp2 = 21
21158             else
21159 * elseif(lb1 .eq. -45 .or. lb2 .eq. -45)
21160 c    !! Ca-bar
21161             lbpp1 = -40 - int(2*RANART(NSEED))
21162 c      !! K+
21163             lbpp2 = 23
21164            endif
21165              empp1 = acas
21166              empp2 = aka  
21167 c
21168 c check for real process for Cas(bar) and K(bar) formation
21169           if(RANART(NSEED) .lt. proper(idp))then
21170 c       !! real process flag
21171             icont = 0
21172             lb(i1) = lbpp1
21173             e(i1) = empp1
21174 c   !! P_Cas(bar) = P_Om(bar)
21175             proper(i1) = proper(idp)
21176             lb(i2) = lbpp2
21177             e(i2) = empp2
21178 c   !! K(bar) formed with prob 1.
21179             proper(i2) = 1.
21180 c
21181            else
21182 c else Cascade(bar)  produced and Omega(bar) annhilated
21183             e(idp) = 0.
21184            endif
21185 c   !! for produced particles
21186              go to 700
21187 c
21188 c-----------------------------------------------------------
21189 700    continue
21190 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
21191 * ENERGY CONSERVATION
21192           PR2   = (SRT**2 - EMpp1**2 - EMpp2**2)**2
21193      &                - 4.0 * (EMpp1*EMpp2)**2
21194           IF(PR2.LE.0.)PR2=0.00000001
21195           PR=SQRT(PR2)/(2.*SRT)
21196 * using isotropic
21197       C1   = 1.0 - 2.0 * RANART(NSEED)
21198       T1   = 2.0 * PI * RANART(NSEED)
21199       S1   = SQRT( 1.0 - C1**2 )
21200       CT1  = COS(T1)
21201       ST1  = SIN(T1)
21202 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
21203       PZ   = PR * C1
21204       PX   = PR * S1*CT1 
21205       PY   = PR * S1*ST1
21206 * ROTATE IT 
21207        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
21208        if(icont .eq. 0)return
21209 c
21210 * LORENTZ-TRANSFORMATION INTO CMS FRAME
21211               E1CM    = SQRT (EMpp1**2 + PX**2 + PY**2 + PZ**2)
21212               P1BETA  = PX*BETAX + PY*BETAY + PZ*BETAZ
21213               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
21214               Ppt11 = BETAX * TRANSF + PX
21215               Ppt12 = BETAY * TRANSF + PY
21216               Ppt13 = BETAZ * TRANSF + PZ
21217 c
21218 cc** for elastic scattering update the momentum of pertb particles
21219          if(icsbel .ne. -1)then
21220 c            if(EMpp1 .gt. 0.9)then
21221               p(1,i1) = Ppt11
21222               p(2,i1) = Ppt12
21223               p(3,i1) = Ppt13
21224 c            else
21225               E2CM    = SQRT (EMpp2**2 + PX**2 + PY**2 + PZ**2)
21226               TRANSF  = GAMMA * ( -GAMMA * P1BETA / (GAMMA + 1) + E2CM )
21227               Ppt21 = BETAX * TRANSF - PX
21228               Ppt22 = BETAY * TRANSF - PY
21229               Ppt23 = BETAZ * TRANSF - PZ
21230               p(1,i2) = Ppt21
21231               p(2,i2) = Ppt22
21232               p(3,i2) = Ppt23
21233 c            endif
21234              return
21235           endif
21236 clin-5/2008:
21237 c2008        X01 = 1.0 - 2.0 * RANART(NSEED)
21238 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
21239 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
21240 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2008
21241 c                Xpt=X1+0.5*x01
21242 c                Ypt=Y1+0.5*y01
21243 c                Zpt=Z1+0.5*z01
21244                 Xpt=X1
21245                 Ypt=Y1
21246                 Zpt=Z1
21247 c
21248 c
21249 c          if(lbpp1 .eq. 45)then
21250 c           write(*,*)'II lb1,lb2,lbpp1,empp1,proper(idp),brpp'
21251 c           write(*,*)lb1,lb2,lbpp1,empp1,proper(idp),brpp
21252 c          endif
21253 c
21254                NNN=NNN+1
21255                PROPI(NNN,IRUN)= proper(idp)*brpp
21256                LPION(NNN,IRUN)= lbpp1
21257                EPION(NNN,IRUN)= empp1
21258                 RPION(1,NNN,IRUN)=Xpt
21259                 RPION(2,NNN,IRUN)=Ypt
21260                 RPION(3,NNN,IRUN)=Zpt
21261                PPION(1,NNN,IRUN)=Ppt11
21262                PPION(2,NNN,IRUN)=Ppt12
21263                PPION(3,NNN,IRUN)=Ppt13
21264 clin-5/2008:
21265                dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
21266             RETURN
21267             END
21268 **********************************
21269 *  sp 12/08/00                                                         *
21270       SUBROUTINE Crhb(PX,PY,PZ,SRT,I1,I2,IBLOCK)
21271 *     PURPOSE:                                                         *
21272 *        DEALING WITH hyperon+N(D,N*)->hyp+N(D,N*) elastic PROCESS     *
21273 *     NOTE   :                                                         *
21274 *          
21275 *     QUANTITIES:                                                 *
21276 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
21277 *           SRT      - SQRT OF S                                       *
21278 *           IBLOCK   - THE INFORMATION BACK                            *
21279 *                     144-> hyp+N(D,N*)->hyp+N(D,N*)
21280 **********************************
21281         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
21282      1  AMP=0.93828,AP1=0.13496,
21283      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
21284         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
21285         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
21286         COMMON /AA/ R(3,MAXSTR)
21287 cc      SAVE /AA/
21288         COMMON /BB/ P(3,MAXSTR)
21289 cc      SAVE /BB/
21290         COMMON /CC/ E(MAXSTR)
21291 cc      SAVE /CC/
21292         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
21293 cc      SAVE /EE/
21294         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
21295 cc      SAVE /input1/
21296       COMMON/RNDF77/NSEED
21297 cc      SAVE /RNDF77/
21298       SAVE   
21299
21300        PX0=PX
21301        PY0=PY
21302        PZ0=PZ
21303 *-----------------------------------------------------------------------
21304         IBLOCK=144
21305         NTAG=0
21306         EM1=E(I1)
21307         EM2=E(I2)
21308 *-----------------------------------------------------------------------
21309 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
21310 * ENERGY CONSERVATION
21311           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
21312      1                - 4.0 * (EM1*EM2)**2
21313           IF(PR2.LE.0.)PR2=1.e-09
21314           PR=SQRT(PR2)/(2.*SRT)
21315           C1   = 1.0 - 2.0 * RANART(NSEED)
21316           T1   = 2.0 * PI * RANART(NSEED)
21317       S1   = SQRT( 1.0 - C1**2 )
21318       CT1  = COS(T1)
21319       ST1  = SIN(T1)
21320       PZ   = PR * C1
21321       PX   = PR * S1*CT1 
21322       PY   = PR * S1*ST1
21323       RETURN
21324       END
21325 ****************************************
21326 c sp 04/05/01
21327 * Purpose: lambda-baryon elastic xsection as a functon of their cms energy
21328          subroutine lambar(i1,i2,srt,siglab)
21329 *  srt    = DSQRT(s) in GeV                                               *
21330 *  siglab = lambda-nuclar elastic cross section in mb 
21331 *         = 12 + 0.43/p_lab**3.3 (mb)  
21332 *                                                    
21333 * (2) Calculate p(lab) from srt [GeV], since the formular in the 
21334 * reference applies only to the case of a p_bar on a proton at rest
21335 * Formula used: srt**2=2.*pmass*(pmass+sqrt(pmass**2+plab**2))
21336 *****************************
21337         PARAMETER (MAXSTR=150001)
21338         COMMON /AA/ R(3,MAXSTR)
21339 cc      SAVE /AA/
21340         COMMON /BB/ P(3,MAXSTR)
21341 cc      SAVE /BB/
21342         COMMON /CC/ E(MAXSTR)
21343 cc      SAVE /CC/
21344         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
21345 cc      SAVE /EE/
21346       SAVE   
21347
21348           siglab=1.e-06
21349         if( iabs(lb(i1)).ge.14.and.iabs(lb(i1)).le.17 )then
21350           eml = e(i1)
21351           emb = e(i2)
21352          else
21353           eml = e(i2)
21354           emb = e(i1)
21355         endif
21356        pthr = srt**2-eml**2-emb**2
21357         if(pthr .gt. 0.)then
21358        plab2=(pthr/2./emb)**2-eml**2
21359        if(plab2.gt.0)then
21360          plab=sqrt(plab2)
21361          siglab=12. + 0.43/(plab**3.3)
21362        if(siglab.gt.200.)siglab=200.
21363        endif
21364        endif
21365          return
21366       END
21367 C------------------------------------------------------------------
21368 clin-7/26/03 improve speed
21369 ***************************************
21370             SUBROUTINE distc0(drmax,deltr0,DT,
21371      1     Ifirst,PX1CM,PY1CM,PZ1CM,
21372      2     x1,y1,z1,px1,py1,pz1,em1,x2,y2,z2,px2,py2,pz2,em2)
21373 * PURPOSE : CHECK IF THE COLLISION BETWEEN TWO PARTICLES CAN HAPPEN
21374 *           BY CHECKING
21375 *                      (2) IF PARTICLE WILL PASS EACH OTHER WITHIN
21376 *           TWO HARD CORE RADIUS.
21377 *                      (3) IF PARTICLES WILL GET CLOSER.
21378 * VARIABLES :
21379 *           Ifirst=1 COLLISION may HAPPENED
21380 *           Ifirst=-1 COLLISION CAN NOT HAPPEN
21381 *****************************************
21382             COMMON   /BG/  BETAX,BETAY,BETAZ,GAMMA
21383 cc      SAVE /BG/
21384       SAVE   
21385             deltr0=deltr0 
21386             Ifirst=-1
21387             E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
21388 *NOW PARTICLES ARE CLOSE ENOUGH TO EACH OTHER !
21389             E2     = SQRT ( EM2**2 + PX2**2 + PY2**2 + PZ2**2 )
21390 *NOW THERE IS ENOUGH ENERGY AVAILABLE !
21391 *LORENTZ-TRANSFORMATION IN I1-I2-C.M. SYSTEM
21392 * BETAX, BETAY, BETAZ AND GAMMA HAVE BEEN GIVEN IN THE SUBROUTINE CMS
21393 *TRANSFORMATION OF MOMENTA (PX1CM = - PX2CM)
21394               P1BETA = PX1*BETAX + PY1*BETAY + PZ1 * BETAZ
21395               TRANSF = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) - E1 )
21396               PRCM   = SQRT (PX1CM**2 + PY1CM**2 + PZ1CM**2)
21397               IF (PRCM .LE. 0.00001) return
21398 *TRANSFORMATION OF SPATIAL DISTANCE
21399               DRBETA = BETAX*(X1-X2) + BETAY*(Y1-Y2) + BETAZ*(Z1-Z2)
21400               TRANSF = GAMMA * GAMMA * DRBETA / (GAMMA + 1)
21401               DXCM   = BETAX * TRANSF + X1 - X2
21402               DYCM   = BETAY * TRANSF + Y1 - Y2
21403               DZCM   = BETAZ * TRANSF + Z1 - Z2
21404 *DETERMINING IF THIS IS THE POINT OF CLOSEST APPROACH
21405               DRCM   = SQRT (DXCM**2  + DYCM**2  + DZCM**2 )
21406               DZZ    = (PX1CM*DXCM + PY1CM*DYCM + PZ1CM*DZCM) / PRCM
21407               if ((drcm**2 - dzz**2) .le. 0.) then
21408                 BBB = 0.
21409               else
21410                 BBB    = SQRT (DRCM**2 - DZZ**2)
21411               end if
21412 *WILL PARTICLE PASS EACH OTHER WITHIN 2 * HARD CORE RADIUS ?
21413               IF (BBB .GT. drmax) return
21414               RELVEL = PRCM * (1.0/E1 + 1.0/E2)
21415               DDD    = RELVEL * DT * 0.5
21416 *WILL PARTICLES GET CLOSER ?
21417               IF (ABS(DDD) .LT. ABS(DZZ)) return
21418               Ifirst=1
21419               RETURN
21420               END
21421 *---------------------------------------------------------------------------
21422 c
21423 clin-8/2008 B+B->Deuteron+Meson cross section in mb:
21424       subroutine sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
21425       PARAMETER (xmd=1.8756,AP1=0.13496,AP2=0.13957,
21426      1     xmrho=0.770,xmomega=0.782,xmeta=0.548,srt0=2.012)
21427       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
21428      1     px1n,py1n,pz1n,dp1n
21429       common /dpi/em2,lb2
21430       common /para8/ idpert,npertd,idxsec
21431       COMMON/RNDF77/NSEED
21432       SAVE   
21433 c
21434       sdprod=0.
21435       sbbdpi=0.
21436       sbbdrho=0.
21437       sbbdomega=0.
21438       sbbdeta=0.
21439       if(srt.le.(em1+em2)) return
21440 c
21441       ilb1=iabs(lb1)
21442       ilb2=iabs(lb2)
21443 ctest off check Xsec using fixed mass for resonances:
21444 c      if(ilb1.ge.6.and.ilb1.le.9) then
21445 c         em1=1.232
21446 c      elseif(ilb1.ge.10.and.ilb1.le.11) then
21447 c         em1=1.44
21448 c      elseif(ilb1.ge.12.and.ilb1.le.13) then
21449 c         em1=1.535
21450 c      endif
21451 c      if(ilb2.ge.6.and.ilb2.le.9) then
21452 c         em2=1.232
21453 c      elseif(ilb2.ge.10.and.ilb2.le.11) then
21454 c         em2=1.44
21455 c      elseif(ilb2.ge.12.and.ilb2.le.13) then
21456 c         em2=1.535
21457 c      endif
21458 c
21459       s=srt**2
21460       pinitial=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
21461       fs=fnndpi(s)
21462 c     Determine isospin and spin factors for the ratio between 
21463 c     BB->Deuteron+Meson and Deuteron+Meson->BB cross sections:
21464       if(idxsec.eq.1.or.idxsec.eq.2) then
21465 c     Assume B+B -> d+Meson has the same cross sections as N+N -> d+pi:
21466       else
21467 c     Assume d+Meson -> B+B has the same cross sections as d+pi -> N+N, 
21468 c     then determine B+B -> d+Meson cross sections:
21469          if(ilb1.ge.1.and.ilb1.le.2.and.
21470      1        ilb2.ge.1.and.ilb2.le.2) then
21471             pifactor=9./8.
21472          elseif((ilb1.ge.1.and.ilb1.le.2.and.
21473      1           ilb2.ge.6.and.ilb2.le.9).or.
21474      2           (ilb2.ge.1.and.ilb2.le.2.and.
21475      1           ilb1.ge.6.and.ilb1.le.9)) then
21476             pifactor=9./64.
21477          elseif((ilb1.ge.1.and.ilb1.le.2.and.
21478      1           ilb2.ge.10.and.ilb2.le.13).or.
21479      2           (ilb2.ge.1.and.ilb2.le.2.and.
21480      1           ilb1.ge.10.and.ilb1.le.13)) then
21481             pifactor=9./16.
21482          elseif(ilb1.ge.6.and.ilb1.le.9.and.
21483      1           ilb2.ge.6.and.ilb2.le.9) then
21484             pifactor=9./128.
21485          elseif((ilb1.ge.6.and.ilb1.le.9.and.
21486      1           ilb2.ge.10.and.ilb2.le.13).or.
21487      2           (ilb2.ge.6.and.ilb2.le.9.and.
21488      1           ilb1.ge.10.and.ilb1.le.13)) then
21489             pifactor=9./64.
21490          elseif((ilb1.ge.10.and.ilb1.le.11.and.
21491      1           ilb2.ge.10.and.ilb2.le.11).or.
21492      2           (ilb2.ge.12.and.ilb2.le.13.and.
21493      1           ilb1.ge.12.and.ilb1.le.13)) then
21494             pifactor=9./8.
21495          elseif((ilb1.ge.10.and.ilb1.le.11.and.
21496      1           ilb2.ge.12.and.ilb2.le.13).or.
21497      2           (ilb2.ge.10.and.ilb2.le.11.and.
21498      1           ilb1.ge.12.and.ilb1.le.13)) then
21499             pifactor=9./16.
21500          endif
21501       endif
21502 c     d pi: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
21503 *     (1) FOR P+P->Deuteron+pi+:
21504       IF((ilb1*ilb2).EQ.1)THEN
21505          lbm=5
21506          if(ianti.eq.1) lbm=3
21507          xmm=ap2
21508 *     (2)FOR N+N->Deuteron+pi-:
21509       ELSEIF(ilb1.EQ.2.AND.ilb2.EQ.2)THEN
21510          lbm=3
21511          if(ianti.eq.1) lbm=5
21512          xmm=ap2
21513 *     (3)FOR N+P->Deuteron+pi0:
21514       ELSEIF((ilb1*ilb2).EQ.2)THEN
21515          lbm=4
21516          xmm=ap1
21517       ELSE
21518 c     For baryon resonances, use isospin-averaged cross sections:
21519          lbm=3+int(3 * RANART(NSEED))
21520          if(lbm.eq.4) then
21521             xmm=ap1
21522          else
21523             xmm=ap2
21524          endif
21525       ENDIF
21526 c
21527       if(srt.ge.(xmd+xmm)) then
21528          pfinal=sqrt((s-(xmd+xmm)**2)*(s-(xmd-xmm)**2))/2./srt
21529          if((ilb1.eq.1.and.ilb2.eq.1).or.
21530      1        (ilb1.eq.2.and.ilb2.eq.2)) then
21531 c     for pp or nn initial states:
21532             sbbdpi=fs*pfinal/pinitial/4.
21533          elseif((ilb1.eq.1.and.ilb2.eq.2).or.
21534      1           (ilb1.eq.2.and.ilb2.eq.1)) then
21535 c     factor of 1/2 for pn or np initial states:
21536             sbbdpi=fs*pfinal/pinitial/4./2.
21537          else
21538 c     for other BB initial states (spin- and isospin averaged):
21539             if(idxsec.eq.1) then
21540 c     1: assume the same |matrix element|**2 (after averaging over initial 
21541 c     spins and isospins) for B+B -> deuteron+meson at the same sqrt(s);
21542                sbbdpi=fs*pfinal/pinitial*3./16.
21543             elseif(idxsec.eq.2.or.idxsec.eq.4) then
21544                threshold=amax1(xmd+xmm,em1+em2)
21545                snew=(srt-threshold+srt0)**2
21546                if(idxsec.eq.2) then
21547 c     2: assume the same |matrix element|**2 for B+B -> deuteron+meson 
21548 c     at the same sqrt(s)-threshold:
21549                   sbbdpi=fnndpi(snew)*pfinal/pinitial*3./16.
21550                elseif(idxsec.eq.4) then
21551 c     4: assume the same |matrix element|**2 for B+B <- deuteron+meson 
21552 c     at the same sqrt(s)-threshold:
21553                   sbbdpi=fnndpi(snew)*pfinal/pinitial/6.*pifactor
21554                endif
21555             elseif(idxsec.eq.3) then
21556 c     3: assume the same |matrix element|**2 for B+B <- deuteron+meson 
21557 c     at the same sqrt(s):
21558                sbbdpi=fs*pfinal/pinitial/6.*pifactor
21559             endif
21560 c
21561          endif
21562       endif
21563 c     
21564 *     d rho: DETERMINE THE CROSS SECTION TO THIS FINAL STATE:
21565       if(srt.gt.(xmd+xmrho)) then
21566          pfinal=sqrt((s-(xmd+xmrho)**2)*(s-(xmd-xmrho)**2))/2./srt
21567          if(idxsec.eq.1) then
21568             sbbdrho=fs*pfinal/pinitial*3./16.
21569          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21570             threshold=amax1(xmd+xmrho,em1+em2)
21571             snew=(srt-threshold+srt0)**2
21572             if(idxsec.eq.2) then
21573                sbbdrho=fnndpi(snew)*pfinal/pinitial*3./16.
21574             elseif(idxsec.eq.4) then
21575 c     The spin- and isospin-averaged factor is 3-times larger for rho:
21576                sbbdrho=fnndpi(snew)*pfinal/pinitial/6.*(pifactor*3.)
21577             endif
21578          elseif(idxsec.eq.3) then
21579             sbbdrho=fs*pfinal/pinitial/6.*(pifactor*3.)
21580          endif
21581       endif
21582 c
21583 *     d omega: DETERMINE THE CROSS SECTION TO THIS FINAL STATE:
21584       if(srt.gt.(xmd+xmomega)) then
21585          pfinal=sqrt((s-(xmd+xmomega)**2)*(s-(xmd-xmomega)**2))/2./srt
21586          if(idxsec.eq.1) then
21587             sbbdomega=fs*pfinal/pinitial*3./16.
21588          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21589             threshold=amax1(xmd+xmomega,em1+em2)
21590             snew=(srt-threshold+srt0)**2
21591             if(idxsec.eq.2) then
21592                sbbdomega=fnndpi(snew)*pfinal/pinitial*3./16.
21593             elseif(idxsec.eq.4) then
21594                sbbdomega=fnndpi(snew)*pfinal/pinitial/6.*pifactor
21595             endif
21596          elseif(idxsec.eq.3) then
21597             sbbdomega=fs*pfinal/pinitial/6.*pifactor
21598          endif
21599       endif
21600 c
21601 *     d eta: DETERMINE THE CROSS SECTION TO THIS FINAL STATE:
21602       if(srt.gt.(xmd+xmeta)) then
21603          pfinal=sqrt((s-(xmd+xmeta)**2)*(s-(xmd-xmeta)**2))/2./srt
21604          if(idxsec.eq.1) then
21605             sbbdeta=fs*pfinal/pinitial*3./16.
21606          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21607             threshold=amax1(xmd+xmeta,em1+em2)
21608             snew=(srt-threshold+srt0)**2
21609             if(idxsec.eq.2) then
21610                sbbdeta=fnndpi(snew)*pfinal/pinitial*3./16.
21611             elseif(idxsec.eq.4) then
21612                sbbdeta=fnndpi(snew)*pfinal/pinitial/6.*(pifactor/3.)
21613             endif
21614          elseif(idxsec.eq.3) then
21615             sbbdeta=fs*pfinal/pinitial/6.*(pifactor/3.)
21616          endif
21617       endif
21618 c
21619       sdprod=sbbdpi+sbbdrho+sbbdomega+sbbdeta
21620 ctest off
21621 c      write(99,111) srt,sbbdpi,sbbdrho,sbbdomega,sbbdeta,sdprod
21622 c 111  format(6(f8.2,1x))
21623 c
21624       if(sdprod.le.0) return
21625 c
21626 c     choose final state and assign masses here:
21627       x1=RANART(NSEED)
21628       if(x1.le.sbbdpi/sdprod) then
21629 c     use the above-determined lbm and xmm.
21630       elseif(x1.le.(sbbdpi+sbbdrho)/sdprod) then
21631          lbm=25+int(3*RANART(NSEED))
21632          xmm=xmrho
21633       elseif(x1.le.(sbbdpi+sbbdrho+sbbdomega)/sdprod) then
21634          lbm=28
21635          xmm=xmomega
21636       else
21637          lbm=0
21638          xmm=xmeta
21639       endif
21640 c
21641       return
21642       end
21643 c
21644 c     Generate angular distribution of Deuteron in the CMS frame:
21645       subroutine bbdangle(pxd,pyd,pzd,nt,ipert1,ianti,idloop,pfinal,
21646      1 dprob1,lbm)
21647       PARAMETER (PI=3.1415926)
21648       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
21649      1     px1n,py1n,pz1n,dp1n
21650       common /dpi/em2,lb2
21651       COMMON/RNDF77/NSEED
21652       common /para8/ idpert,npertd,idxsec
21653       COMMON /AREVT/ IAEVT, IARUN, MISS
21654       SAVE   
21655 c     take isotropic distribution for now:
21656       C1=1.0-2.0*RANART(NSEED)
21657       T1=2.0*PI*RANART(NSEED)
21658       S1=SQRT(1.0-C1**2)
21659       CT1=COS(T1)
21660       ST1=SIN(T1)
21661 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
21662       PZd=pfinal*C1
21663       PXd=pfinal*S1*CT1 
21664       PYd=pfinal*S1*ST1
21665 clin-5/2008 track the number of produced deuterons:
21666       if(idpert.eq.1.and.npertd.ge.1) then
21667          dprob=dprob1
21668       elseif(idpert.eq.2.and.npertd.ge.1) then
21669          dprob=1./float(npertd)
21670       endif
21671 c      if(ianti.eq.0) then
21672 c         if(idpert.eq.0.or.(idpert.eq.1.and.ipert1.eq.0).or.
21673 c     1        (idpert.eq.2.and.idloop.eq.(npertd+1))) then
21674 c            write (91,*) lb1,' *',lb2,' ->d+',lbm,' (regular d prodn) 
21675 c     1 @evt#',iaevt,' @nt=',nt
21676 c         elseif((idpert.eq.1.or.idpert.eq.2).and.idloop.eq.npertd) then
21677 c            write (91,*) lb1,' *',lb2,' ->d+',lbm,' (pert d prodn) 
21678 c     1 @evt#',iaevt,' @nt=',nt,' @prob=',dprob
21679 c         endif
21680 c      else
21681 c         if(idpert.eq.0.or.(idpert.eq.1.and.ipert1.eq.0).or.
21682 c     1        (idpert.eq.2.and.idloop.eq.(npertd+1))) then
21683 c            write (91,*) lb1,' *',lb2,' ->d+',lbm,' (regular dbar prodn) 
21684 c     1 @evt#',iaevt,' @nt=',nt
21685 c         elseif((idpert.eq.1.or.idpert.eq.2).and.idloop.eq.npertd) then
21686 c            write (91,*) lb1,' *',lb2,' ->d+',lbm,' (pert dbar prodn) 
21687 c     1 @evt#',iaevt,' @nt=',nt,' @prob=',dprob
21688 c         endif
21689 c      endif
21690 c
21691       return
21692       end
21693 c
21694 c     Deuteron+Meson->B+B cross section (in mb)
21695       subroutine sdmbb(SRT,sdm,ianti)
21696       PARAMETER (AMN=0.939457,AMP=0.93828,
21697      1     AM0=1.232,AM1440=1.44,AM1535=1.535,srt0=2.012)
21698       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
21699      1     px1n,py1n,pz1n,dp1n
21700       common /dpi/em2,lb2
21701       common /dpifsl/lbnn1,lbnn2,lbnd1,lbnd2,lbns1,lbns2,lbnp1,lbnp2,
21702      1     lbdd1,lbdd2,lbds1,lbds2,lbdp1,lbdp2,lbss1,lbss2,
21703      2     lbsp1,lbsp2,lbpp1,lbpp2
21704       common /dpifsm/xmnn1,xmnn2,xmnd1,xmnd2,xmns1,xmns2,xmnp1,xmnp2,
21705      1     xmdd1,xmdd2,xmds1,xmds2,xmdp1,xmdp2,xmss1,xmss2,
21706      2     xmsp1,xmsp2,xmpp1,xmpp2
21707       common /dpisig/sdmel,sdmnn,sdmnd,sdmns,sdmnp,sdmdd,sdmds,sdmdp,
21708      1     sdmss,sdmsp,sdmpp
21709       common /para8/ idpert,npertd,idxsec
21710       COMMON/RNDF77/NSEED
21711       SAVE   
21712 c
21713       sdm=0.
21714       sdmel=0.
21715       sdmnn=0.
21716       sdmnd=0.
21717       sdmns=0.
21718       sdmnp=0.
21719       sdmdd=0.
21720       sdmds=0.
21721       sdmdp=0.
21722       sdmss=0.
21723       sdmsp=0.
21724       sdmpp=0.
21725 ctest off check Xsec using fixed mass for resonances:
21726 c      if(lb1.ge.25.and.lb1.le.27) then
21727 c         em1=0.776
21728 c      elseif(lb1.eq.28) then
21729 c         em1=0.783
21730 c      elseif(lb1.eq.0) then
21731 c         em1=0.548
21732 c      endif
21733 c      if(lb2.ge.25.and.lb2.le.27) then
21734 c         em2=0.776
21735 c      elseif(lb2.eq.28) then
21736 c         em2=0.783
21737 c      elseif(lb2.eq.0) then
21738 c         em2=0.548
21739 c      endif
21740 c
21741       if(srt.le.(em1+em2)) return
21742       s=srt**2
21743       pinitial=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
21744       fs=fnndpi(s)
21745 c     Determine isospin and spin factors for the ratio between 
21746 c     Deuteron+Meson->BB and BB->Deuteron+Meson cross sections:
21747       if(idxsec.eq.1.or.idxsec.eq.2) then
21748 c     Assume B+B -> d+Meson has the same cross sections as N+N -> d+pi, 
21749 c     then determine d+Meson -> B+B cross sections:
21750          if((lb1.ge.3.and.lb1.le.5).or.
21751      1        (lb2.ge.3.and.lb2.le.5)) then
21752             xnnfactor=8./9.
21753          elseif((lb1.ge.25.and.lb1.le.27).or.
21754      1           (lb2.ge.25.and.lb2.le.27)) then
21755             xnnfactor=8./27.
21756          elseif(lb1.eq.28.or.lb2.eq.28) then
21757             xnnfactor=8./9.
21758          elseif(lb1.eq.0.or.lb2.eq.0) then
21759             xnnfactor=8./3.
21760          endif
21761       else
21762 c     Assume d+Meson -> B+B has the same cross sections as d+pi -> N+N:
21763       endif
21764 clin-9/2008 For elastic collisions:
21765       if(idxsec.eq.1.or.idxsec.eq.3) then
21766 c     1/3: assume the same |matrix element|**2 (after averaging over initial 
21767 c     spins and isospins) for d+Meson elastic at the same sqrt(s);
21768          sdmel=fdpiel(s)
21769       elseif(idxsec.eq.2.or.idxsec.eq.4) then
21770 c     2/4: assume the same |matrix element|**2 (after averaging over initial 
21771 c     spins and isospins) for d+Meson elastic at the same sqrt(s)-threshold:
21772          threshold=em1+em2
21773          snew=(srt-threshold+srt0)**2
21774          sdmel=fdpiel(snew)
21775       endif
21776 c
21777 *     NN: DETERMINE THE CHARGE STATES OF PARTICLESIN THE FINAL STATE
21778       IF(((lb1.eq.5.or.lb2.eq.5.or.lb1.eq.27.or.lb2.eq.27)
21779      1     .and.ianti.eq.0).or.
21780      2     ((lb1.eq.3.or.lb2.eq.3.or.lb1.eq.25.or.lb2.eq.25)
21781      3     .and.ianti.eq.1))THEN
21782 *     (1) FOR Deuteron+(pi+,rho+) -> P+P or DeuteronBar+(pi-,rho-)-> PBar+PBar:
21783          lbnn1=1
21784          lbnn2=1
21785          xmnn1=amp
21786          xmnn2=amp
21787       ELSEIF(lb1.eq.3.or.lb2.eq.3.or.lb1.eq.26.or.lb2.eq.26
21788      1        .or.lb1.eq.28.or.lb2.eq.28.or.lb1.eq.0.or.lb2.eq.0)THEN
21789 *     (2) FOR Deuteron+(pi0,rho0,omega,eta) -> N+P 
21790 *     or DeuteronBar+(pi0,rho0,omega,eta) ->NBar+PBar:
21791          lbnn1=2
21792          lbnn2=1
21793          xmnn1=amn
21794          xmnn2=amp
21795       ELSE
21796 *     (3) FOR Deuteron+(pi-,rho-) -> N+N or DeuteronBar+(pi+,rho+)-> NBar+NBar:
21797          lbnn1=2
21798          lbnn2=2
21799          xmnn1=amn
21800          xmnn2=amn
21801       ENDIF
21802       if(srt.gt.(xmnn1+xmnn2)) then
21803          pfinal=sqrt((s-(xmnn1+xmnn2)**2)*(s-(xmnn1-xmnn2)**2))/2./srt
21804          if(idxsec.eq.1) then
21805 c     1: assume the same |matrix element|**2 (after averaging over initial 
21806 c     spins and isospins) for B+B -> deuteron+meson at the same sqrt(s);
21807             sdmnn=fs*pfinal/pinitial*3./16.*xnnfactor
21808          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21809             threshold=amax1(xmnn1+xmnn2,em1+em2)
21810             snew=(srt-threshold+srt0)**2
21811             if(idxsec.eq.2) then
21812 c     2: assume the same |matrix element|**2 for B+B -> deuteron+meson 
21813 c     at the same sqrt(s)-threshold:
21814                sdmnn=fnndpi(snew)*pfinal/pinitial*3./16.*xnnfactor
21815             elseif(idxsec.eq.4) then
21816 c     4: assume the same |matrix element|**2 for B+B <- deuteron+meson 
21817 c     at the same sqrt(s)-threshold:
21818                sdmnn=fnndpi(snew)*pfinal/pinitial/6.
21819             endif
21820          elseif(idxsec.eq.3) then
21821 c     3: assume the same |matrix element|**2 for B+B <- deuteron+meson 
21822 c     at the same sqrt(s):
21823             sdmnn=fs*pfinal/pinitial/6.
21824          endif
21825       endif
21826 c     
21827 *     ND: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
21828       lbnd1=1+int(2*RANART(NSEED))
21829       lbnd2=6+int(4*RANART(NSEED))
21830       if(lbnd1.eq.1) then
21831          xmnd1=amp
21832       elseif(lbnd1.eq.2) then
21833          xmnd1=amn
21834       endif
21835       xmnd2=am0
21836       if(srt.gt.(xmnd1+xmnd2)) then
21837          pfinal=sqrt((s-(xmnd1+xmnd2)**2)*(s-(xmnd1-xmnd2)**2))/2./srt
21838          if(idxsec.eq.1) then
21839 c     The spin- and isospin-averaged factor is 8-times larger for ND:
21840             sdmnd=fs*pfinal/pinitial*3./16.*(xnnfactor*8.)
21841          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21842             threshold=amax1(xmnd1+xmnd2,em1+em2)
21843             snew=(srt-threshold+srt0)**2
21844             if(idxsec.eq.2) then
21845                sdmnd=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*8.)
21846             elseif(idxsec.eq.4) then
21847                sdmnd=fnndpi(snew)*pfinal/pinitial/6.
21848             endif
21849          elseif(idxsec.eq.3) then
21850             sdmnd=fs*pfinal/pinitial/6.
21851          endif
21852       endif
21853 c
21854 *     NS: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
21855       lbns1=1+int(2*RANART(NSEED))
21856       lbns2=10+int(2*RANART(NSEED))
21857       if(lbns1.eq.1) then
21858          xmns1=amp
21859       elseif(lbns1.eq.2) then
21860          xmns1=amn
21861       endif
21862       xmns2=am1440
21863       if(srt.gt.(xmns1+xmns2)) then
21864          pfinal=sqrt((s-(xmns1+xmns2)**2)*(s-(xmns1-xmns2)**2))/2./srt
21865          if(idxsec.eq.1) then
21866             sdmns=fs*pfinal/pinitial*3./16.*(xnnfactor*2.)
21867          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21868             threshold=amax1(xmns1+xmns2,em1+em2)
21869             snew=(srt-threshold+srt0)**2
21870             if(idxsec.eq.2) then
21871                sdmns=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*2.)
21872             elseif(idxsec.eq.4) then
21873                sdmns=fnndpi(snew)*pfinal/pinitial/6.
21874             endif
21875          elseif(idxsec.eq.3) then
21876             sdmns=fs*pfinal/pinitial/6.
21877          endif
21878       endif
21879 c
21880 *     NP: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
21881       lbnp1=1+int(2*RANART(NSEED))
21882       lbnp2=12+int(2*RANART(NSEED))
21883       if(lbnp1.eq.1) then
21884          xmnp1=amp
21885       elseif(lbnp1.eq.2) then
21886          xmnp1=amn
21887       endif
21888       xmnp2=am1535
21889       if(srt.gt.(xmnp1+xmnp2)) then
21890          pfinal=sqrt((s-(xmnp1+xmnp2)**2)*(s-(xmnp1-xmnp2)**2))/2./srt
21891          if(idxsec.eq.1) then
21892             sdmnp=fs*pfinal/pinitial*3./16.*(xnnfactor*2.)
21893          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21894             threshold=amax1(xmnp1+xmnp2,em1+em2)
21895             snew=(srt-threshold+srt0)**2
21896             if(idxsec.eq.2) then
21897                sdmnp=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*2.)
21898             elseif(idxsec.eq.4) then
21899                sdmnp=fnndpi(snew)*pfinal/pinitial/6.
21900             endif
21901          elseif(idxsec.eq.3) then
21902             sdmnp=fs*pfinal/pinitial/6.
21903          endif
21904       endif
21905 c
21906 *     DD: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
21907       lbdd1=6+int(4*RANART(NSEED))
21908       lbdd2=6+int(4*RANART(NSEED))
21909       xmdd1=am0
21910       xmdd2=am0
21911       if(srt.gt.(xmdd1+xmdd2)) then
21912          pfinal=sqrt((s-(xmdd1+xmdd2)**2)*(s-(xmdd1-xmdd2)**2))/2./srt
21913          if(idxsec.eq.1) then
21914             sdmdd=fs*pfinal/pinitial*3./16.*(xnnfactor*16.)
21915          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21916             threshold=amax1(xmdd1+xmdd2,em1+em2)
21917             snew=(srt-threshold+srt0)**2
21918             if(idxsec.eq.2) then
21919                sdmdd=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*16.)
21920             elseif(idxsec.eq.4) then
21921                sdmdd=fnndpi(snew)*pfinal/pinitial/6.
21922             endif
21923          elseif(idxsec.eq.3) then
21924             sdmdd=fs*pfinal/pinitial/6.
21925          endif
21926       endif
21927 c
21928 *     DS: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
21929       lbds1=6+int(4*RANART(NSEED))
21930       lbds2=10+int(2*RANART(NSEED))
21931       xmds1=am0
21932       xmds2=am1440
21933       if(srt.gt.(xmds1+xmds2)) then
21934          pfinal=sqrt((s-(xmds1+xmds2)**2)*(s-(xmds1-xmds2)**2))/2./srt
21935          if(idxsec.eq.1) then
21936             sdmds=fs*pfinal/pinitial*3./16.*(xnnfactor*8.)
21937          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21938             threshold=amax1(xmds1+xmds2,em1+em2)
21939             snew=(srt-threshold+srt0)**2
21940             if(idxsec.eq.2) then
21941                sdmds=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*8.)
21942             elseif(idxsec.eq.4) then
21943                sdmds=fnndpi(snew)*pfinal/pinitial/6.
21944             endif
21945          elseif(idxsec.eq.3) then
21946             sdmds=fs*pfinal/pinitial/6.
21947          endif
21948       endif
21949 c
21950 *     DP: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
21951       lbdp1=6+int(4*RANART(NSEED))
21952       lbdp2=12+int(2*RANART(NSEED))
21953       xmdp1=am0
21954       xmdp2=am1535
21955       if(srt.gt.(xmdp1+xmdp2)) then
21956          pfinal=sqrt((s-(xmdp1+xmdp2)**2)*(s-(xmdp1-xmdp2)**2))/2./srt
21957          if(idxsec.eq.1) then
21958             sdmdp=fs*pfinal/pinitial*3./16.*(xnnfactor*8.)
21959          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21960             threshold=amax1(xmdp1+xmdp2,em1+em2)
21961             snew=(srt-threshold+srt0)**2
21962             if(idxsec.eq.2) then
21963                sdmdp=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*8.)
21964             elseif(idxsec.eq.4) then
21965                sdmdp=fnndpi(snew)*pfinal/pinitial/6.
21966             endif
21967          elseif(idxsec.eq.3) then
21968             sdmdp=fs*pfinal/pinitial/6.
21969          endif
21970       endif
21971 c
21972 *     SS: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
21973       lbss1=10+int(2*RANART(NSEED))
21974       lbss2=10+int(2*RANART(NSEED))
21975       xmss1=am1440
21976       xmss2=am1440
21977       if(srt.gt.(xmss1+xmss2)) then
21978          pfinal=sqrt((s-(xmss1+xmss2)**2)*(s-(xmss1-xmss2)**2))/2./srt
21979          if(idxsec.eq.1) then
21980             sdmss=fs*pfinal/pinitial*3./16.*xnnfactor
21981          elseif(idxsec.eq.2.or.idxsec.eq.4) then
21982             threshold=amax1(xmss1+xmss2,em1+em2)
21983             snew=(srt-threshold+srt0)**2
21984             if(idxsec.eq.2) then
21985                sdmss=fnndpi(snew)*pfinal/pinitial*3./16.*xnnfactor
21986             elseif(idxsec.eq.4) then
21987                sdmss=fnndpi(snew)*pfinal/pinitial/6.
21988             endif
21989          elseif(idxsec.eq.3) then
21990             sdmns=fs*pfinal/pinitial/6.
21991          endif
21992       endif
21993 c
21994 *     SP: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
21995       lbsp1=10+int(2*RANART(NSEED))
21996       lbsp2=12+int(2*RANART(NSEED))
21997       xmsp1=am1440
21998       xmsp2=am1535
21999       if(srt.gt.(xmsp1+xmsp2)) then
22000          pfinal=sqrt((s-(xmsp1+xmsp2)**2)*(s-(xmsp1-xmsp2)**2))/2./srt
22001          if(idxsec.eq.1) then
22002             sdmsp=fs*pfinal/pinitial*3./16.*(xnnfactor*2.)
22003          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22004             threshold=amax1(xmsp1+xmsp2,em1+em2)
22005             snew=(srt-threshold+srt0)**2
22006             if(idxsec.eq.2) then
22007                sdmsp=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*2.)
22008             elseif(idxsec.eq.4) then
22009                sdmsp=fnndpi(snew)*pfinal/pinitial/6.
22010             endif
22011          elseif(idxsec.eq.3) then
22012             sdmsp=fs*pfinal/pinitial/6.
22013          endif
22014       endif
22015 c
22016 *     PP: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22017       lbpp1=12+int(2*RANART(NSEED))
22018       lbpp2=12+int(2*RANART(NSEED))
22019       xmpp1=am1535
22020       xmpp2=am1535
22021       if(srt.gt.(xmpp1+xmpp2)) then
22022          pfinal=sqrt((s-(xmpp1+xmpp2)**2)*(s-(xmpp1-xmpp2)**2))/2./srt
22023          if(idxsec.eq.1) then
22024             sdmpp=fs*pfinal/pinitial*3./16.*xnnfactor
22025          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22026             threshold=amax1(xmpp1+xmpp2,em1+em2)
22027             snew=(srt-threshold+srt0)**2
22028             if(idxsec.eq.2) then
22029                sdmpp=fnndpi(snew)*pfinal/pinitial*3./16.*xnnfactor
22030             elseif(idxsec.eq.4) then
22031                sdmpp=fnndpi(snew)*pfinal/pinitial/6.
22032             endif
22033          elseif(idxsec.eq.3) then
22034             sdmpp=fs*pfinal/pinitial/6.
22035          endif
22036       endif
22037 c
22038       sdm=sdmel+sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp
22039      1     +sdmss+sdmsp+sdmpp
22040       if(ianti.eq.1) then
22041          lbnn1=-lbnn1
22042          lbnn2=-lbnn2
22043          lbnd1=-lbnd1
22044          lbnd2=-lbnd2
22045          lbns1=-lbns1
22046          lbns2=-lbns2
22047          lbnp1=-lbnp1
22048          lbnp2=-lbnp2
22049          lbdd1=-lbdd1
22050          lbdd2=-lbdd2
22051          lbds1=-lbds1
22052          lbds2=-lbds2
22053          lbdp1=-lbdp1
22054          lbdp2=-lbdp2
22055          lbss1=-lbss1
22056          lbss2=-lbss2
22057          lbsp1=-lbsp1
22058          lbsp2=-lbsp2
22059          lbpp1=-lbpp1
22060          lbpp2=-lbpp2
22061       endif
22062 ctest off
22063 c      write(98,100) srt,sdmnn,sdmnd,sdmns,sdmnp,sdmdd,sdmds,sdmdp,
22064 c     1     sdmss,sdmsp,sdmpp,sdm
22065 c 100  format(f5.2,11(1x,f5.1))
22066 c
22067       return
22068       end
22069 c
22070 clin-9/2008 Deuteron+Meson ->B+B and elastic collisions
22071       SUBROUTINE crdmbb(PX,PY,PZ,SRT,I1,I2,IBLOCK,
22072      1     NTAG,sig,NT,ianti)
22073       PARAMETER (MAXSTR=150001,MAXR=1)
22074       COMMON /AA/R(3,MAXSTR)
22075       COMMON /BB/ P(3,MAXSTR)
22076       COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
22077       COMMON /CC/ E(MAXSTR)
22078       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
22079       COMMON /AREVT/ IAEVT, IARUN, MISS
22080       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22081      1     px1n,py1n,pz1n,dp1n
22082       common /dpi/em2,lb2
22083       common /para8/ idpert,npertd,idxsec
22084       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
22085      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
22086      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
22087       common /dpifsl/lbnn1,lbnn2,lbnd1,lbnd2,lbns1,lbns2,lbnp1,lbnp2,
22088      1     lbdd1,lbdd2,lbds1,lbds2,lbdp1,lbdp2,lbss1,lbss2,
22089      2     lbsp1,lbsp2,lbpp1,lbpp2
22090       common /dpifsm/xmnn1,xmnn2,xmnd1,xmnd2,xmns1,xmns2,xmnp1,xmnp2,
22091      1     xmdd1,xmdd2,xmds1,xmds2,xmdp1,xmdp2,xmss1,xmss2,
22092      2     xmsp1,xmsp2,xmpp1,xmpp2
22093       common /dpisig/sdmel,sdmnn,sdmnd,sdmns,sdmnp,sdmdd,sdmds,sdmdp,
22094      1     sdmss,sdmsp,sdmpp
22095       COMMON/RNDF77/NSEED
22096       SAVE   
22097 *-----------------------------------------------------------------------
22098       IBLOCK=0
22099       NTAG=0
22100       EM1=E(I1)
22101       EM2=E(I2)
22102       s=srt**2
22103       if(sig.le.0) return
22104 c
22105       if(iabs(lb1).eq.42) then
22106          ideut=i1
22107          lbm=lb2
22108          idm=i2
22109       else
22110          ideut=i2
22111          lbm=lb1
22112          idm=i1
22113       endif
22114 cccc  Elastic collision or destruction of perturbatively-produced deuterons:
22115       if((idpert.eq.1.or.idpert.eq.2).and.dpertp(ideut).ne.1.) then
22116 c     choose reaction channels:
22117          x1=RANART(NSEED)
22118          if(x1.le.sdmel/sig)then
22119 c     Elastic collisions:
22120 c            if(ianti.eq.0) then
22121 c               write(91,*) '  d+',lbm,' (pert d M elastic) @nt=',nt
22122 c     1              ,' @prob=',dpertp(ideut)
22123 c            else
22124 c               write(91,*) '  d+',lbm,' (pert dbar M elastic) @nt=',nt
22125 c     1              ,' @prob=',dpertp(ideut)
22126 c            endif
22127             pfinal=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
22128             CALL dmelangle(pxn,pyn,pzn,pfinal)
22129             CALL ROTATE(PX,PY,PZ,Pxn,Pyn,Pzn)
22130             EdCM=SQRT(E(ideut)**2+Pxn**2+Pyn**2+Pzn**2)
22131             PdBETA=Pxn*BETAX+Pyn*BETAY+Pzn*BETAZ
22132             TRANSF=GAMMA*(GAMMA*PdBETA/(GAMMA+1.)+EdCM)
22133             Pt1d=BETAX*TRANSF+Pxn
22134             Pt2d=BETAY*TRANSF+Pyn
22135             Pt3d=BETAZ*TRANSF+Pzn
22136             p(1,ideut)=pt1d
22137             p(2,ideut)=pt2d
22138             p(3,ideut)=pt3d
22139             IBLOCK=504
22140             PX1=P(1,I1)
22141             PY1=P(2,I1)
22142             PZ1=P(3,I1)
22143             ID(I1)=2
22144             ID(I2)=2
22145 c     Change the position of the perturbative deuteron to that of 
22146 c     the meson to avoid consecutive collisions between them:
22147             R(1,ideut)=R(1,idm)
22148             R(2,ideut)=R(2,idm)
22149             R(3,ideut)=R(3,idm)
22150          else
22151 c     Destruction of deuterons:
22152 c            if(ianti.eq.0) then
22153 c               write(91,*) '  d+',lbm,' ->BB (pert d destrn) @nt=',nt
22154 c     1              ,' @prob=',dpertp(ideut)
22155 c            else
22156 c               write(91,*) '  d+',lbm,' ->BB (pert dbar destrn) @nt=',nt
22157 c     1              ,' @prob=',dpertp(ideut)
22158 c            endif
22159             e(ideut)=0.
22160             IBLOCK=502
22161          endif
22162          return
22163       endif
22164 c
22165 cccc  Destruction of regularly-produced deuterons:
22166       IBLOCK=502
22167 c     choose final state and assign masses here:
22168       x1=RANART(NSEED)
22169       if(x1.le.sdmnn/sig)then
22170          lbb1=lbnn1
22171          lbb2=lbnn2
22172          xmb1=xmnn1
22173          xmb2=xmnn2
22174       elseif(x1.le.(sdmnn+sdmnd)/sig)then
22175          lbb1=lbnd1
22176          lbb2=lbnd2
22177          xmb1=xmnd1
22178          xmb2=xmnd2
22179       elseif(x1.le.(sdmnn+sdmnd+sdmns)/sig)then
22180          lbb1=lbns1
22181          lbb2=lbns2
22182          xmb1=xmns1
22183          xmb2=xmns2
22184       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp)/sig)then
22185          lbb1=lbnp1
22186          lbb2=lbnp2
22187          xmb1=xmnp1
22188          xmb2=xmnp2
22189       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd)/sig)then
22190          lbb1=lbdd1
22191          lbb2=lbdd2
22192          xmb1=xmdd1
22193          xmb2=xmdd2
22194       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds)/sig)then
22195          lbb1=lbds1
22196          lbb2=lbds2
22197          xmb1=xmds1
22198          xmb2=xmds2
22199       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp)/sig)then
22200          lbb1=lbdp1
22201          lbb2=lbdp2
22202          xmb1=xmdp1
22203          xmb2=xmdp2
22204       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp
22205      1        +sdmss)/sig)then
22206          lbb1=lbss1
22207          lbb2=lbss2
22208          xmb1=xmss1
22209          xmb2=xmss2
22210       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp
22211      1        +sdmss+sdmsp)/sig)then
22212          lbb1=lbsp1
22213          lbb2=lbsp2
22214          xmb1=xmsp1
22215          xmb2=xmsp2
22216       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp
22217      1        +sdmss+sdmsp+sdmpp)/sig)then
22218          lbb1=lbpp1
22219          lbb2=lbpp2
22220          xmb1=xmpp1
22221          xmb2=xmpp2
22222       else
22223 c     Elastic collision:
22224          lbb1=lb1
22225          lbb2=lb2
22226          xmb1=em1
22227          xmb2=em2
22228          IBLOCK=504
22229       endif
22230       LB(I1)=lbb1
22231       E(i1)=xmb1
22232       LB(I2)=lbb2
22233       E(I2)=xmb2
22234       lb1=lb(i1)
22235       lb2=lb(i2)
22236       pfinal=sqrt((s-(xmb1+xmb2)**2)*(s-(xmb1-xmb2)**2))/2./srt
22237 c
22238       if(iblock.eq.502) then
22239          CALL dmangle(pxn,pyn,pzn,nt,ianti,pfinal,lbm)
22240       elseif(iblock.eq.504) then
22241 c         if(ianti.eq.0) then
22242 c            write (91,*) ' d+',lbm,' (regular d M elastic) @evt#',
22243 c     1           iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22244 c         else
22245 c            write (91,*) ' d+',lbm,' (regular dbar M elastic) @evt#',
22246 c     1           iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22247 c         endif
22248          CALL dmelangle(pxn,pyn,pzn,pfinal)
22249       else
22250          print *, 'Wrong iblock number in crdmbb()'
22251          stop
22252       endif
22253 *     ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
22254 c     (This is not needed for isotropic distributions)
22255       CALL ROTATE(PX,PY,PZ,Pxn,Pyn,Pzn)
22256 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
22257 *     FROM THE NUCLEUS-NUCLEUS CMS. FRAME INTO LAB FRAME:
22258 *     For the 1st baryon:
22259       E1CM=SQRT(E(I1)**2+Pxn**2+Pyn**2+Pzn**2)
22260       P1BETA=Pxn*BETAX+Pyn*BETAY+Pzn*BETAZ
22261       TRANSF=GAMMA*(GAMMA*P1BETA/(GAMMA+1.)+E1CM)
22262       Pt1i1=BETAX*TRANSF+Pxn
22263       Pt2i1=BETAY*TRANSF+Pyn
22264       Pt3i1=BETAZ*TRANSF+Pzn
22265 c
22266       p(1,i1)=pt1i1
22267       p(2,i1)=pt2i1
22268       p(3,i1)=pt3i1
22269 *     For the 2nd baryon:
22270       E2CM=SQRT(E(I2)**2+Pxn**2+Pyn**2+Pzn**2)
22271       P2BETA=-Pxn*BETAX-Pyn*BETAY-Pzn*BETAZ
22272       TRANSF=GAMMA*(GAMMA*P2BETA/(GAMMA+1.)+E2CM)
22273       Pt1I2=BETAX*TRANSF-Pxn
22274       Pt2I2=BETAY*TRANSF-Pyn
22275       Pt3I2=BETAZ*TRANSF-Pzn
22276 c     
22277       p(1,i2)=pt1i2
22278       p(2,i2)=pt2i2
22279       p(3,i2)=pt3i2
22280 c
22281       PX1=P(1,I1)
22282       PY1=P(2,I1)
22283       PZ1=P(3,I1)
22284       EM1=E(I1)
22285       EM2=E(I2)
22286       ID(I1)=2
22287       ID(I2)=2
22288       RETURN
22289       END
22290 c
22291 c     Generate angular distribution of BB from d+meson in the CMS frame:
22292       subroutine dmangle(pxn,pyn,pzn,nt,ianti,pfinal,lbm)
22293       PARAMETER (PI=3.1415926)
22294       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22295      1     px1n,py1n,pz1n,dp1n
22296       common /dpi/em2,lb2
22297       COMMON /AREVT/ IAEVT, IARUN, MISS
22298       COMMON/RNDF77/NSEED
22299       SAVE   
22300 c     take isotropic distribution for now:
22301       C1=1.0-2.0*RANART(NSEED)
22302       T1=2.0*PI*RANART(NSEED)
22303       S1=SQRT(1.0-C1**2)
22304       CT1=COS(T1)
22305       ST1=SIN(T1)
22306 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
22307       Pzn=pfinal*C1
22308       Pxn=pfinal*S1*CT1 
22309       Pyn=pfinal*S1*ST1
22310 clin-5/2008 track the number of regularly-destructed deuterons:
22311 c      if(ianti.eq.0) then
22312 c         write (91,*) ' d+',lbm,' ->BB (regular d destrn) @evt#',
22313 c     1        iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22314 c      else
22315 c         write (91,*) ' d+',lbm,' ->BB (regular dbar destrn) @evt#',
22316 c     1        iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22317 c      endif
22318 c
22319       return
22320       end
22321 c
22322 c     Angular distribution of d+meson elastic collisions in the CMS frame:
22323       subroutine dmelangle(pxn,pyn,pzn,pfinal)
22324       PARAMETER (PI=3.1415926)
22325       COMMON/RNDF77/NSEED
22326       SAVE   
22327 c     take isotropic distribution for now:
22328       C1=1.0-2.0*RANART(NSEED)
22329       T1=2.0*PI*RANART(NSEED)
22330       S1=SQRT(1.0-C1**2)
22331       CT1=COS(T1)
22332       ST1=SIN(T1)
22333 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
22334       Pzn=pfinal*C1
22335       Pxn=pfinal*S1*CT1 
22336       Pyn=pfinal*S1*ST1
22337       return
22338       end
22339 c
22340 clin-9/2008 Deuteron+Baryon elastic cross section (in mb)
22341       subroutine sdbelastic(SRT,sdb)
22342       PARAMETER (srt0=2.012)
22343       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22344      1     px1n,py1n,pz1n,dp1n
22345       common /dpi/em2,lb2
22346       common /para8/ idpert,npertd,idxsec
22347       SAVE   
22348 c
22349       sdb=0.
22350       sdbel=0.
22351       if(srt.le.(em1+em2)) return
22352       s=srt**2
22353 c     For elastic collisions:
22354       if(idxsec.eq.1.or.idxsec.eq.3) then
22355 c     1/3: assume the same |matrix element|**2 (after averaging over initial 
22356 c     spins and isospins) for d+Baryon elastic at the same sqrt(s);
22357          sdbel=fdbel(s)
22358       elseif(idxsec.eq.2.or.idxsec.eq.4) then
22359 c     2/4: assume the same |matrix element|**2 (after averaging over initial 
22360 c     spins and isospins) for d+Baryon elastic at the same sqrt(s)-threshold:
22361          threshold=em1+em2
22362          snew=(srt-threshold+srt0)**2
22363          sdbel=fdbel(snew)
22364       endif
22365       sdb=sdbel
22366       return
22367       end
22368 clin-9/2008 Deuteron+Baryon elastic collisions
22369       SUBROUTINE crdbel(PX,PY,PZ,SRT,I1,I2,IBLOCK,
22370      1     NTAG,sig,NT,ianti)
22371       PARAMETER (MAXSTR=150001,MAXR=1)
22372       COMMON /AA/R(3,MAXSTR)
22373       COMMON /BB/ P(3,MAXSTR)
22374       COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
22375       COMMON /CC/ E(MAXSTR)
22376       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
22377       COMMON /AREVT/ IAEVT, IARUN, MISS
22378       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22379      1     px1n,py1n,pz1n,dp1n
22380       common /dpi/em2,lb2
22381       common /para8/ idpert,npertd,idxsec
22382       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
22383      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
22384      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
22385       SAVE   
22386 *-----------------------------------------------------------------------
22387       IBLOCK=0
22388       NTAG=0
22389       EM1=E(I1)
22390       EM2=E(I2)
22391       s=srt**2
22392       if(sig.le.0) return
22393       IBLOCK=503
22394 c
22395       if(iabs(lb1).eq.42) then
22396          ideut=i1
22397          lbb=lb2
22398          idb=i2
22399       else
22400          ideut=i2
22401          lbb=lb1
22402          idb=i1
22403       endif
22404 cccc  Elastic collision of perturbatively-produced deuterons:
22405       if((idpert.eq.1.or.idpert.eq.2).and.dpertp(ideut).ne.1.) then
22406 c         if(ianti.eq.0) then
22407 c            write(91,*) '  d+',lbb,' (pert d B elastic) @nt=',nt
22408 c     1           ,' @prob=',dpertp(ideut),p(1,idb),p(2,idb)
22409 c     2           ,p(1,ideut),p(2,ideut)
22410 c         else
22411 c            write(91,*) '  d+',lbb,' (pert dbar Bbar elastic) @nt=',nt
22412 c     1           ,' @prob=',dpertp(ideut),p(1,idb),p(2,idb)
22413 c     2           ,p(1,ideut),p(2,ideut)
22414 c         endif
22415          pfinal=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
22416          CALL dbelangle(pxn,pyn,pzn,pfinal)
22417          CALL ROTATE(PX,PY,PZ,Pxn,Pyn,Pzn)
22418          EdCM=SQRT(E(ideut)**2+Pxn**2+Pyn**2+Pzn**2)
22419          PdBETA=Pxn*BETAX+Pyn*BETAY+Pzn*BETAZ
22420          TRANSF=GAMMA*(GAMMA*PdBETA/(GAMMA+1.)+EdCM)
22421          Pt1d=BETAX*TRANSF+Pxn
22422          Pt2d=BETAY*TRANSF+Pyn
22423          Pt3d=BETAZ*TRANSF+Pzn
22424          p(1,ideut)=pt1d
22425          p(2,ideut)=pt2d
22426          p(3,ideut)=pt3d
22427          PX1=P(1,I1)
22428          PY1=P(2,I1)
22429          PZ1=P(3,I1)
22430          ID(I1)=2
22431          ID(I2)=2
22432 c     Change the position of the perturbative deuteron to that of 
22433 c     the baryon to avoid consecutive collisions between them:
22434          R(1,ideut)=R(1,idb)
22435          R(2,ideut)=R(2,idb)
22436          R(3,ideut)=R(3,idb)
22437          return
22438       endif
22439 c
22440 c     Elastic collision of regularly-produced deuterons:
22441 c      if(ianti.eq.0) then
22442 c         write (91,*) ' d+',lbb,' (regular d B elastic) @evt#',
22443 c     1        iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22444 c      else
22445 c         write (91,*) ' d+',lbb,' (regular dbar Bbar elastic) @evt#',
22446 c     1        iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22447 c      endif
22448       pfinal=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
22449       CALL dbelangle(pxn,pyn,pzn,pfinal)
22450 *     ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
22451 c     (This is not needed for isotropic distributions)
22452       CALL ROTATE(PX,PY,PZ,Pxn,Pyn,Pzn)
22453 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
22454 *     FROM THE NUCLEUS-NUCLEUS CMS. FRAME INTO LAB FRAME:
22455 *     For the 1st baryon:
22456       E1CM=SQRT(E(I1)**2+Pxn**2+Pyn**2+Pzn**2)
22457       P1BETA=Pxn*BETAX+Pyn*BETAY+Pzn*BETAZ
22458       TRANSF=GAMMA*(GAMMA*P1BETA/(GAMMA+1.)+E1CM)
22459       Pt1i1=BETAX*TRANSF+Pxn
22460       Pt2i1=BETAY*TRANSF+Pyn
22461       Pt3i1=BETAZ*TRANSF+Pzn
22462 c
22463       p(1,i1)=pt1i1
22464       p(2,i1)=pt2i1
22465       p(3,i1)=pt3i1
22466 *     For the 2nd baryon:
22467       E2CM=SQRT(E(I2)**2+Pxn**2+Pyn**2+Pzn**2)
22468       P2BETA=-Pxn*BETAX-Pyn*BETAY-Pzn*BETAZ
22469       TRANSF=GAMMA*(GAMMA*P2BETA/(GAMMA+1.)+E2CM)
22470       Pt1I2=BETAX*TRANSF-Pxn
22471       Pt2I2=BETAY*TRANSF-Pyn
22472       Pt3I2=BETAZ*TRANSF-Pzn
22473 c     
22474       p(1,i2)=pt1i2
22475       p(2,i2)=pt2i2
22476       p(3,i2)=pt3i2
22477 c
22478       PX1=P(1,I1)
22479       PY1=P(2,I1)
22480       PZ1=P(3,I1)
22481       EM1=E(I1)
22482       EM2=E(I2)
22483       ID(I1)=2
22484       ID(I2)=2
22485       RETURN
22486       END
22487 c
22488 c     Part of the cross section function of NN->Deuteron+Pi (in mb):
22489       function fnndpi(s)
22490       parameter(srt0=2.012)
22491       if(s.le.srt0**2) then
22492          fnndpi=0.
22493       else
22494          fnndpi=26.*exp(-(s-4.65)**2/0.1)+4.*exp(-(s-4.65)**2/2.)
22495      1        +0.28*exp(-(s-6.)**2/10.)
22496       endif
22497       return
22498       end
22499 c
22500 c     Angular distribution of d+baryon elastic collisions in the CMS frame:
22501       subroutine dbelangle(pxn,pyn,pzn,pfinal)
22502       PARAMETER (PI=3.1415926)
22503       COMMON/RNDF77/NSEED
22504       SAVE   
22505 c     take isotropic distribution for now:
22506       C1=1.0-2.0*RANART(NSEED)
22507       T1=2.0*PI*RANART(NSEED)
22508       S1=SQRT(1.0-C1**2)
22509       CT1=COS(T1)
22510       ST1=SIN(T1)
22511 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
22512       Pzn=pfinal*C1
22513       Pxn=pfinal*S1*CT1 
22514       Pyn=pfinal*S1*ST1
22515       return
22516       end
22517 c
22518 c     Cross section of Deuteron+Pi elastic (in mb):
22519       function fdpiel(s)
22520       parameter(srt0=2.012)
22521       if(s.le.srt0**2) then
22522          fdpiel=0.
22523       else
22524          fdpiel=63.*exp(-(s-4.67)**2/0.15)+15.*exp(-(s-6.25)**2/0.3)
22525       endif
22526       return
22527       end
22528 c
22529 c     Cross section of Deuteron+N elastic (in mb):
22530       function fdbel(s)
22531       parameter(srt0=2.012)
22532       if(s.le.srt0**2) then
22533          fdbel=0.
22534       else
22535          fdbel=2500.*exp(-(s-7.93)**2/0.003)
22536      1        +300.*exp(-(s-7.93)**2/0.1)+10.
22537       endif
22538       return
22539       end