Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:13:19

0001 c....................art1f.f
0002 **************************************
0003 *
0004 *                           PROGRAM ART1.0 
0005 *
0006 *        A relativistic transport (ART) model for heavy-ion collisions
0007 *
0008 *   sp/01/04/2002
0009 *   calculates K+K- from phi decay, dimuons from phi decay
0010 *   has finite baryon density & possibilites of varying Kaon 
0011 *   in-medium mass in phiproduction-annhilation channel only.
0012 *
0013 *
0014 * RELEASING DATE: JAN., 1997 
0015 ***************************************
0016 * 
0017 * Bao-An Li & Che Ming Ko
0018 * Cyclotron Institute, Texas A&M University.
0019 * Phone: (409) 845-1411
0020 * e-mail: Bali@comp.tamu.edu & Ko@comp.tamu.edu 
0021 * http://wwwcyc.tamu.edu/~bali
0022 ***************************************
0023 * Speical notice on the limitation of the code:
0024 * 
0025 * (1) ART is a hadronic transport model
0026 * 
0027 * (2) E_beam/A <= 15 GeV
0028 * 
0029 * (3) The mass of the colliding system is limited by the dimensions of arrays
0030 *    which can be extended purposely. Presently the dimensions are large enough
0031 *     for running Au+Au at 15 GeV/A.
0032 *
0033 * (4) The production and absorption of antiparticles (e.g., ki-, anti-nucleons,
0034 *     etc) are not fully included in this version of the model. They, however, 
0035 *     have essentially no effect on the reaction dynamics and observables 
0036 *     related to nucleons, pions and kaons (K+) at and below AGS energies.
0037 * 
0038 * (5) Bose enhancement for mesons and Pauli blocking for fermions are 
0039 *     turned off.
0040 * 
0041 *********************************
0042 *
0043 * USEFUL REFERENCES ON PHYSICS AND NUMERICS OF NUCLEAR TRANSPORT MODELS:
0044 *     G.F. BERTSCH AND DAS GUPTA, PHYS. REP. 160 (1988) 189.
0045 *     B.A. LI AND W. BAUER, PHYS. REV. C44 (1991) 450.
0046 *     B.A. LI, W. BAUER AND G.F. BERTSCH, PHYS. REV. C44 (1991) 2095.
0047 *     P. DANIELEWICZ AND G.F. BERTSCH, NUCL. PHYS. A533 (1991) 712.
0048 * 
0049 * MAIN REFERENCES ON THIS VERSION OF ART MODEL:
0050 *     B.A. LI AND C.M. KO, PHYS. REV. C52 (1995) 2037; 
0051 *                          NUCL. PHYS. A601 (1996) 457. 
0052 *
0053 **********************************
0054 **********************************
0055 *  VARIABLES IN INPUT-SECTION:                                               * 
0056 *                                                                      *
0057 *  1) TARGET-RELATED QUANTITIES                                        *
0058 *       MASSTA, ZTA -  TARGET MASS IN AMU, TARGET CHARGE  (INTEGER)    *
0059 *                                                                      *
0060 *  2) PROJECTILE-RELATED QUANTITIES                                    *
0061 *       MASSPR, ZPR -  PROJECTILE MASS IN AMU, PROJ. CHARGE(INTEGER)   *
0062 *       ELAB     -  BEAM ENERGY IN [MEV/NUCLEON]               (REAL)  *
0063 *       ZEROPT   -  DISPLACEMENT OF THE SYSTEM IN Z-DIREC. [FM](REAL)  *
0064 *       B        -  IMPACT PARAMETER [FM]                      (REAL)  *
0065 *                                                                      *
0066 *  3) PROGRAM-CONTROL PARAMETERS                                       *
0067 *       ISEED    -  SEED FOR RANDOM NUMBER GENERATOR        (INTEGER)  *
0068 *       DT       -  TIME-STEP-SIZE [FM/C]                      (REAL)  *
0069 *       NTMAX    -  TOTAL NUMBER OF TIMESTEPS               (INTEGER)  *
0070 *       ICOLL    -  (= 1 -> MEAN FIELD ONLY,                           *
0071 *                -   =-1 -> CACADE ONLY, ELSE FULL ART)     (INTEGER)  *
0072 *       NUM      -  NUMBER OF TESTPARTICLES PER NUCLEON     (INTEGER)  *
0073 *       INSYS    -  (=0 -> LAB-SYSTEM, ELSE C.M. SYSTEM)    (INTEGER)  *
0074 *       IPOT     -  1 -> SIGMA=2; 2 -> SIGMA=4/3; 3 -> SIGMA=7/6       *
0075 *                   IN MEAN FIELD POTENTIAL                 (INTEGER)  *
0076 *       MODE     -  (=1 -> interpolation for pauli-blocking,           *
0077 *                    =2 -> local lookup, other -> unblocked)(integer)  *
0078 *       DX,DY,DZ -  widths of cell for paulat in coor. sp. [fm](real)  *
0079 *       DPX,DPY,DPZ-widths of cell for paulat in mom. sp.[GeV/c](real) *
0080 *       IAVOID   -  (=1 -> AVOID FIRST COLL. WITHIN SAME NUCL.         *
0081 *                    =0 -> ALLOW THEM)                      (INTEGER)  *
0082 *       IMOMEN   -  FLAG FOR CHOICE OF INITIAL MOMENTUM DISTRIBUTION   *
0083 *                   (=1 -> WOODS-SAXON DENSITY AND LOCAL THOMAS-FERMI  *
0084 *                    =2 -> NUCLEAR MATTER DEN. AND LOCAL THOMAS-FERMI  *
0085 *                    =3 -> COHERENT BOOST IN Z-DIRECTION)   (INTEGER)  *
0086 *  4) CONTROL-PRINTOUT OPTIONS                                         *
0087 *       NFREQ    -  NUMBER OF TIMSTEPS AFTER WHICH PRINTOUT            *
0088 *                   IS REQUIRED OR ON-LINE ANALYSIS IS PERFORMED       *
0089 *       ICFLOW      =1 PERFORM ON-LINE FLOW ANALYSIS EVERY NFREQ STEPS *
0090 *       ICRHO       =1 PRINT OUT THE BARYON,PION AND ENERGY MATRIX IN  *
0091 *                      THE REACTION PLANE EVERY NFREQ TIME-STEPS       *
0092 *  5)
0093 *       CYCBOX   -  ne.0 => cyclic boundary conditions;boxsize CYCBOX  *
0094 *
0095 **********************************
0096 *               Lables of particles used in this code                     *
0097 **********************************
0098 *         
0099 *         LB(I) IS USED TO LABEL PARTICLE'S CHARGE STATE
0100 *    
0101 *         LB(I)   =
0102 clin-11/07/00:
0103 *                -30 K*-
0104 clin-8/29/00
0105 *                -13 anti-N*(+1)(1535),s_11
0106 *                -12 anti-N*0(1535),s_11
0107 *                 -11 anti-N*(+1)(1440),p_11
0108 *                 -10 anti-N*0(1440), p_11
0109 *                  -9 anti-DELTA+2
0110 *                  -8 anti-DELTA+1
0111 *                  -7 anti-DELTA0
0112 *                  -6 anti-DELTA-1
0113 clin-8/29/00-end
0114 
0115 cbali2/7/99 
0116 *                  -2 antineutron 
0117 *                             -1       antiproton
0118 cbali2/7/99 end 
0119 *                   0 eta
0120 *                        1 PROTON
0121 *                   2 NUETRON
0122 *                   3 PION-
0123 *                   4 PION0
0124 *                   5 PION+
0125 *                   6 DELTA-1
0126 *                   7 DELTA0
0127 *                   8 DELTA+1
0128 *                   9 DELTA+2
0129 *                   10 N*0(1440), p_11
0130 *                   11 N*(+1)(1440),p_11
0131 *                  12 N*0(1535),s_11
0132 *                  13 N*(+1)(1535),s_11
0133 *                  14 LAMBDA
0134 *                   15 sigma-, since we used isospin averaged xsection for
0135 *                   16 sigma0  sigma associated K+ production, sigma0 and 
0136 *                   17 sigma+  sigma+ are counted as sigma-
0137 *                   21 kaon-
0138 *                   23 KAON+
0139 *                   24 kaon0
0140 *                   25 rho-
0141 *                         26 rho0
0142 *                   27 rho+
0143 *                   28 omega meson
0144 *                   29 phi
0145 clin-11/07/00:
0146 *                  30 K*+
0147 * sp01/03/01
0148 *                 -14 LAMBDA(bar)
0149 *                  -15 sigma-(bar)
0150 *                  -16 sigma0(bar)
0151 *                  -17 sigma+(bar)
0152 *                   31 eta-prime
0153 *                   40 cascade-
0154 *                  -40 cascade-(bar)
0155 *                   41 cascade0
0156 *                  -41 cascade0(bar)
0157 *                   45 Omega baryon
0158 *                  -45 Omega baryon(bar)
0159 * sp01/03/01 end
0160 clin-5/2008:
0161 *                   42 Deuteron (same in ampt.dat)
0162 *                  -42 anti-Deuteron (same in ampt.dat)
0163 c
0164 *                   ++  ------- SEE BAO-AN LI'S NOTE BOOK
0165 **********************************
0166 cbz11/16/98
0167 c      PROGRAM ART
0168        SUBROUTINE ARTMN
0169 cbz11/16/98end
0170 **********************************
0171 * PARAMETERS:                                                           *
0172 *  MAXPAR     - MAXIMUM NUMBER OF PARTICLES      PROGRAM CAN HANDLE     *
0173 *  MAXP       - MAXIMUM NUMBER OF CREATED MESONS PROGRAM CAN HANDLE     *
0174 *  MAXR       - MAXIMUM NUMBER OF EVENTS AT EACH IMPACT PARAMETER       *
0175 *  MAXX       - NUMBER OF MESHPOINTS IN X AND Y DIRECTION = 2 MAXX + 1  *
0176 *  MAXZ       - NUMBER OF MESHPOINTS IN Z DIRECTION       = 2 MAXZ + 1  *
0177 *  AMU        - 1 ATOMIC MASS UNIT "GEV/C**2"                           *
0178 *  MX,MY,MZ   - MESH SIZES IN COORDINATE SPACE [FM] FOR PAULI LATTICE   *
0179 *  MPX,MPY,MPZ- MESH SIZES IN MOMENTUM SPACE [GEV/C] FOR PAULI LATTICE  *
0180 *---------------------------------------------------------------------- *
0181 clin      PARAMETER     (maxpar=200000,MAXR=50,AMU= 0.9383,
0182       PARAMETER     (MAXSTR=150001,MAXR=1,AMU= 0.9383,
0183      1               AKA=0.498,etaM=0.5475)
0184       PARAMETER     (MAXX   =   20,  MAXZ  =    24)
0185       PARAMETER     (ISUM   =   1001,  IGAM  =    1100)
0186       parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
0187 clin      PARAMETER (MAXP = 14000)
0188 *----------------------------------------------------------------------*
0189       INTEGER   OUTPAR, zta,zpr
0190       COMMON  /AA/      R(3,MAXSTR)
0191 cc      SAVE /AA/
0192       COMMON  /BB/      P(3,MAXSTR)
0193 cc      SAVE /BB/
0194       COMMON  /CC/      E(MAXSTR)
0195 cc      SAVE /CC/
0196       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
0197      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
0198      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
0199 cc      SAVE /DD/
0200       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
0201 cc      SAVE /EE/
0202       COMMON  /HH/  PROPER(MAXSTR)
0203 cc      SAVE /HH/
0204       common  /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
0205 cc      SAVE /ff/
0206       common  /gg/      dx,dy,dz,dpx,dpy,dpz
0207 cc      SAVE /gg/
0208       COMMON  /INPUT/ NSTAR,NDIRCT,DIR
0209 cc      SAVE /INPUT/
0210       COMMON  /PP/      PRHO(-20:20,-24:24)
0211       COMMON  /QQ/      PHRHO(-MAXZ:MAXZ,-24:24)
0212       COMMON  /RR/      MASSR(0:MAXR)
0213 cc      SAVE /RR/
0214       common  /ss/      inout(20)
0215 cc      SAVE /ss/
0216       common  /zz/      zta,zpr
0217 cc      SAVE /zz/
0218       COMMON  /RUN/     NUM
0219 cc      SAVE /RUN/
0220 clin-4/2008:
0221 c      COMMON  /KKK/     TKAON(7),EKAON(7,0:200)
0222       COMMON  /KKK/     TKAON(7),EKAON(7,0:2000)
0223 cc      SAVE /KKK/
0224       COMMON  /KAON/    AK(3,50,36),SPECK(50,36,7),MF
0225 cc      SAVE /KAON/
0226       COMMON/TABLE/ xarray(0:1000),earray(0:1000)
0227 cc      SAVE /TABLE/
0228       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
0229 cc      SAVE /input1/
0230       COMMON  /DDpi/    piRHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
0231 cc      SAVE /DDpi/
0232       common  /tt/  PEL(-maxx:maxx,-maxx:maxx,-maxz:maxz)
0233      &,rxy(-maxx:maxx,-maxx:maxx,-maxz:maxz)
0234 cc      SAVE /tt/
0235 clin-4/2008:
0236 c      DIMENSION TEMP(3,MAXSTR),SKAON(7),SEKAON(7,0:200)
0237       DIMENSION TEMP(3,MAXSTR),SKAON(7),SEKAON(7,0:2000)
0238 cbz12/2/98
0239       COMMON /INPUT2/ ILAB, MANYB, NTMAX, ICOLL, INSYS, IPOT, MODE, 
0240      &   IMOMEN, NFREQ, ICFLOW, ICRHO, ICOU, KPOTEN, KMUL
0241 cc      SAVE /INPUT2/
0242       COMMON /INPUT3/ PLAB, ELAB, ZEROPT, B0, BI, BM, DENCUT, CYCBOX
0243 cc      SAVE /INPUT3/
0244 cbz12/2/98end
0245 cbz11/16/98
0246       COMMON /ARPRNT/ ARPAR1(100), IAPAR2(50), ARINT1(100), IAINT2(50)
0247 cc      SAVE /ARPRNT/
0248 
0249 c.....note in the below, since a common block in ART is called EE,
0250 c.....the variable EE in /ARPRC/is changed to PEAR.
0251 clin-9/29/03 changed name in order to distinguish from /prec2/
0252 c        COMMON /ARPRC/ ITYPAR(MAXSTR),
0253 c     &       GXAR(MAXSTR), GYAR(MAXSTR), GZAR(MAXSTR), FTAR(MAXSTR),
0254 c     &       PXAR(MAXSTR), PYAR(MAXSTR), PZAR(MAXSTR), PEAR(MAXSTR),
0255 c     &       XMAR(MAXSTR)
0256 cc      SAVE /ARPRC/
0257 clin-9/29/03-end
0258       COMMON /ARERCP/PRO1(MAXSTR, MAXR)
0259 cc      SAVE /ARERCP/
0260       COMMON /ARERC1/MULTI1(MAXR)
0261 cc      SAVE /ARERC1/
0262       COMMON /ARPRC1/ITYP1(MAXSTR, MAXR),
0263      &     GX1(MAXSTR, MAXR), GY1(MAXSTR, MAXR), GZ1(MAXSTR, MAXR), 
0264      &     FT1(MAXSTR, MAXR),
0265      &     PX1(MAXSTR, MAXR), PY1(MAXSTR, MAXR), PZ1(MAXSTR, MAXR),
0266      &     EE1(MAXSTR, MAXR), XM1(MAXSTR, MAXR)
0267 cc      SAVE /ARPRC1/
0268 c
0269       DIMENSION NPI(MAXR)
0270       DIMENSION RT(3, MAXSTR, MAXR), PT(3, MAXSTR, MAXR)
0271      &     , ET(MAXSTR, MAXR), LT(MAXSTR, MAXR), PROT(MAXSTR, MAXR)
0272 
0273       EXTERNAL IARFLV, INVFLV
0274 cbz11/16/98end
0275       common /lastt/itimeh,bimp 
0276 cc      SAVE /lastt/
0277       common/snn/efrm,npart1,npart2,epsiPz,epsiPt,PZPROJ,PZTARG
0278 cc      SAVE /snn/
0279       COMMON/hbt/lblast(MAXSTR),xlast(4,MAXSTR),plast(4,MAXSTR),nlast
0280 cc      SAVE /hbt/
0281       common/resdcy/NSAV,iksdcy
0282 cc      SAVE /resdcy/
0283       COMMON/RNDF77/NSEED
0284 cc      SAVE /RNDF77/
0285       COMMON/FTMAX/ftsv(MAXSTR),ftsvt(MAXSTR, MAXR)
0286       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
0287      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
0288      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
0289       COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
0290 clin-4/2008 zet() expanded to avoid out-of-bound errors:
0291       real zet(-45:45)
0292       SAVE   
0293       data zet /
0294      4     1.,0.,0.,0.,0.,
0295      3     1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
0296      2     -1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
0297      1     0.,0.,0.,-1.,0.,1.,0.,-1.,0.,-1.,
0298      s     0.,-2.,-1.,0.,1.,0.,0.,0.,0.,-1.,
0299      e     0.,
0300      s     1.,0.,-1.,0.,1.,-1.,0.,1.,2.,0.,
0301      1     1.,0.,1.,0.,-1.,0.,1.,0.,0.,0.,
0302      2     -1.,0.,1.,0.,-1.,0.,1.,0.,0.,1.,
0303      3     0.,0.,0.,0.,0.,0.,0.,0.,0.,-1.,
0304      4     0.,0.,0.,0.,-1./
0305 
0306       nlast=0
0307       do 1002 i=1,MAXSTR
0308          ftsv(i)=0.
0309          do 1101 irun=1,maxr
0310             ftsvt(i,irun)=0.
0311  1101    continue
0312          lblast(i)=999
0313          do 1001 j=1,4
0314 clin-4/2008 bugs pointed out by Vander Molen & Westfall:
0315 c            xlast(i,j)=0.
0316 c            plast(i,j)=0.
0317             xlast(j,i)=0.
0318             plast(j,i)=0.
0319  1001    continue
0320  1002 continue
0321 
0322 *-------------------------------------------------------------------*
0323 * Input information about the reaction system and contral parameters* 
0324 *-------------------------------------------------------------------*
0325 *              input section starts here                           *
0326 *-------------------------------------------------------------------*
0327 
0328 cbz12/2/98
0329 c.....input section is moved to subroutine ARTSET
0330 cbz12/2/98end
0331 
0332 *-----------------------------------------------------------------------*
0333 *                   input section ends here                            *
0334 *-----------------------------------------------------------------------*
0335 * read in the table for gengrating the transverse momentum
0336 * IN THE NN-->DDP PROCESS
0337        call tablem
0338 * several control parameters, keep them fixed in this code. 
0339        ikaon=1
0340        nstar=1
0341        ndirct=0
0342        dir=0.02
0343        asy=0.032
0344        ESBIN=0.04
0345        MF=36
0346 *----------------------------------------------------------------------*
0347 c      CALL FRONT(12,MASSTA,MASSPR,ELAB)
0348 *----------------------------------------------------------------------*
0349       RADTA  = 1.124 * FLOAT(MASSTA)**(1./3.)
0350       RADPR  = 1.124 * FLOAT(MASSPR)**(1./3.)
0351       ZDIST  = RADTA + RADPR
0352 c      if ( cycbox.ne.0 ) zdist=0
0353       BMAX   = RADTA + RADPR
0354       MASS   = MASSTA + MASSPR
0355       NTOTAL = NUM * MASS
0356 *
0357       IF (NTOTAL .GT. MAXSTR) THEN
0358         WRITE(12,'(//10X,''**** FATAL ERROR: TOO MANY TEST PART. ****'//
0359      & ' '')')
0360         STOP
0361       END IF
0362 *
0363 *-----------------------------------------------------------------------
0364 *       RELATIVISTIC KINEMATICS
0365 *
0366 *       1) LABSYSTEM
0367 *
0368       ETA    = FLOAT(MASSTA) * AMU
0369       PZTA   = 0.0
0370       BETATA = 0.0
0371       GAMMTA = 1.0
0372 *
0373       EPR    = FLOAT(MASSPR) * (AMU + 0.001 * ELAB)
0374       PZPR   = SQRT( EPR**2 - (AMU * FLOAT(MASSPR))**2 )
0375       BETAPR = PZPR / EPR
0376       GAMMPR = 1.0 / SQRT( 1.0 - BETAPR**2 )
0377 *
0378 * BETAC AND GAMMAC OF THE C.M. OBSERVED IN THE LAB. FRAME
0379         BETAC=(PZPR+PZTA)/(EPR+ETA)
0380         GAMMC=1.0 / SQRT(1.-BETAC**2)
0381 *
0382 c      WRITE(12,'(/10x,''****    KINEMATICAL PARAMETERS    ****''/)')
0383 c      WRITE(12,'(10x,''1) LAB-FRAME:        TARGET PROJECTILE'')')
0384 c      WRITE(12,'(10x,''   ETOTAL "GEV" '',2F11.4)') ETA, EPR
0385 c      WRITE(12,'(10x,''   P "GEV/C"    '',2F11.4)') PZTA, PZPR
0386 c      WRITE(12,'(10x,''   BETA         '',2F11.4)') BETATA, BETAPR
0387 c      WRITE(12,'(10x,''   GAMMA        '',2F11.4)') GAMMTA, GAMMPR
0388       IF (INSYS .NE. 0) THEN
0389 *
0390 *       2) C.M. SYSTEM
0391 *
0392         S      = (EPR+ETA)**2 - PZPR**2
0393         xx1=4.*alog(float(massta))
0394         xx2=4.*alog(float(masspr))
0395         xx1=exp(xx1)
0396         xx2=exp(xx2)
0397         PSQARE = (S**2 + (xx1+ xx2) * AMU**4
0398      &             - 2.0 * S * AMU**2 * FLOAT(MASSTA**2 + MASSPR**2)
0399      &             - 2.0 * FLOAT(MASSTA**2 * MASSPR**2) * AMU**4)
0400      &           / (4.0 * S)
0401 *
0402         ETA    = SQRT ( PSQARE + (FLOAT(MASSTA) * AMU)**2 )
0403         PZTA   = - SQRT(PSQARE)
0404         BETATA = PZTA / ETA
0405         GAMMTA = 1.0 / SQRT( 1.0 - BETATA**2 )
0406 *
0407         EPR    = SQRT ( PSQARE + (FLOAT(MASSPR) * AMU)**2 )
0408         PZPR   = SQRT(PSQARE)
0409         BETAPR = PZPR/ EPR
0410         GAMMPR = 1.0 / SQRT( 1.0 - BETAPR**2 )
0411 *
0412 c        WRITE(12,'(10x,''2) C.M.-FRAME:  '')')
0413 c        WRITE(12,'(10x,''   ETOTAL "GEV" '',2F11.4)') ETA, EPR
0414 c        WRITE(12,'(10x,''   P "GEV/C"    '',2F11.4)') PZTA, PZPR
0415 c        WRITE(12,'(10x,''   BETA         '',2F11.4)') BETATA, BETAPR
0416 c        WRITE(12,'(10x,''   GAMMA        '',2F11.4)') GAMMTA, GAMMPR
0417 c        WRITE(12,'(10x,''S "GEV**2"      '',F11.4)')  S
0418 c        WRITE(12,'(10x,''PSQARE "GEV/C"2 '',E14.3)')  PSQARE
0419 c        WRITE(12,'(/10x,''*** CALCULATION DONE IN CM-FRAME ***''/)')
0420       ELSE
0421 c        WRITE(12,'(/10x,''*** CALCULATION DONE IN LAB-FRAME ***''/)')
0422       END IF
0423 * MOMENTUM PER PARTICLE
0424       PZTA = PZTA / FLOAT(MASSTA)
0425       PZPR = PZPR / FLOAT(MASSPR)
0426 * total initial energy in the N-N cms frame
0427       ECMS0=ETA+EPR
0428 *-----------------------------------------------------------------------
0429 *
0430 * Start loop over many runs of different impact parameters
0431 * IF MANYB=1, RUN AT A FIXED IMPACT PARAMETER B0, OTHERWISE GENERATE 
0432 * MINIMUM BIAS EVENTS WITHIN THE IMPACT PARAMETER RANGE OF B_MIN AND B_MAX
0433        DO 50000 IMANY=1,MANYB
0434 *------------------------------------------------------------------------
0435 * Initialize the impact parameter B
0436        if (manyb. gt.1) then
0437 111       BX=1.0-2.0*RANART(NSEED)
0438        BY=1.0-2.0*RANART(NSEED)
0439        B2=BX*BX+BY*BY
0440        IF(B2.GT.1.0) GO TO 111       
0441        B=SQRT(B2)*(BM-BI)+BI
0442        ELSE
0443        B=B0
0444        ENDIF
0445 c      WRITE(12,'(///10X,''RUN NUMBER:'',I6)') IMANY       
0446 c      WRITE(12,'(//10X,''IMPACT PARAMETER B FOR THIS RUN:'',
0447 c     &             F9.3,'' FM''/10X,49(''*'')/)') B
0448 *
0449 *-----------------------------------------------------------------------
0450 *       INITIALIZATION
0451 *1 INITIALIZATION IN ISOSPIN SPACE FOR BOTH THE PROJECTILE AND TARGET
0452       call coulin(masspr,massta,NUM)
0453 *2 INITIALIZATION IN PHASE SPACE FOR THE TARGET
0454       CALL INIT(1       ,MASSTA   ,NUM     ,RADTA,
0455      &          B/2.    ,ZEROPT+ZDIST/2.   ,PZTA,
0456      &          GAMMTA  ,ISEED    ,MASS    ,IMOMEN)
0457 *3.1 INITIALIZATION IN PHASE SPACE FOR THE PROJECTILE
0458       CALL INIT(1+MASSTA,MASS     ,NUM     ,RADPR,
0459      &          -B/2.   ,ZEROPT-ZDIST/2.   ,PZPR,
0460      &          GAMMPR  ,ISEED    ,MASS    ,IMOMEN)
0461 *3.2 OUTPAR IS THE NO. OF ESCAPED PARTICLES
0462       OUTPAR = 0
0463 *3.3 INITIALIZATION FOR THE NO. OF PARTICLES IN EACH SAMPLE
0464 *    THIS IS NEEDED DUE TO THE FACT THAT PIONS CAN BE PRODUCED OR ABSORBED
0465       MASSR(0)=0
0466       DO 1003 IR =1,NUM
0467       MASSR(IR)=MASS
0468  1003 CONTINUE
0469 *3.4 INITIALIZation FOR THE KAON SPECTRUM
0470 *      CALL KSPEC0(BETAC,GAMMC)
0471 * calculate the local baryon density matrix
0472       CALL DENS(IPOT,MASS,NUM,OUTPAR)
0473 *
0474 *-----------------------------------------------------------------------
0475 *       CONTROL PRINTOUT OF INITIAL CONFIGURATION
0476 *
0477 *      WRITE(12,'(''**********  INITIAL CONFIGURATION  **********''/)')
0478 *
0479 c print out the INITIAL density matrix in the reaction plane
0480 c       do ix=-10,10
0481 c       do iz=-10,10
0482 c       write(1053,992)ix,iz,rho(ix,0,iz)/0.168
0483 c       end do
0484 c       end do
0485 *-----------------------------------------------------------------------
0486 *       CALCULATE MOMENTA FOR T = 0.5 * DT 
0487 *       (TO OBTAIN 2ND DEGREE ACCURACY!)
0488 *       "Reference: J. AICHELIN ET AL., PHYS. REV. C31, 1730 (1985)"
0489 *
0490       IF (ICOLL .NE. -1) THEN
0491         DO 700 I = 1,NTOTAL
0492           IX = NINT( R(1,I) )
0493           IY = NINT( R(2,I) )
0494           IZ = NINT( R(3,I) )
0495 clin-4/2008 check bounds:
0496           IF(IX.GE.MAXX.OR.IY.GE.MAXX.OR.IZ.GE.MAXZ
0497      1         .OR.IX.LE.-MAXX.OR.IY.LE.-MAXX.OR.IZ.LE.-MAXZ) goto 700
0498           CALL GRADU(IPOT,IX,IY,IZ,GRADX,GRADY,GRADZ)
0499           P(1,I) = P(1,I) - (0.5 * DT) * GRADX
0500           P(2,I) = P(2,I) - (0.5 * DT) * GRADY
0501           P(3,I) = P(3,I) - (0.5 * DT) * GRADZ
0502   700   CONTINUE
0503       END IF
0504 *-----------------------------------------------------------------------
0505 *-----------------------------------------------------------------------
0506 *4 INITIALIZATION OF TIME-LOOP VARIABLES
0507 *4.1 COLLISION NUMBER COUNTERS
0508 clin 51      RCNNE  = 0
0509         RCNNE  = 0
0510        RDD  = 0
0511        RPP  = 0
0512        rppk = 0
0513        RPN  = 0
0514        rpd  = 0
0515        RKN  = 0
0516        RNNK = 0
0517        RDDK = 0
0518        RNDK = 0
0519       RCNND  = 0
0520       RCNDN  = 0
0521       RCOLL  = 0
0522       RBLOC  = 0
0523       RDIRT  = 0
0524       RDECAY = 0
0525       RRES   = 0
0526 *4.11 KAON PRODUCTION PROBABILITY COUNTER FOR PERTURBATIVE CALCULATIONS ONLY
0527       DO 1005 KKK=1,5
0528          SKAON(KKK)  = 0
0529          DO 1004 IS=1,2000
0530             SEKAON(KKK,IS)=0
0531  1004    CONTINUE
0532  1005 CONTINUE
0533 *4.12 anti-proton and anti-kaon counters
0534        pr0=0.
0535        pr1=0.
0536        ska0=0.
0537        ska1=0.
0538 *       ============== LOOP OVER ALL TIME STEPS ================       *
0539 *                             STARTS HERE                              *
0540 *       ========================================================       *
0541 cbz11/16/98
0542       IF (IAPAR2(1) .NE. 1) THEN
0543          DO 1016 I = 1, MAXSTR
0544             DO 1015 J = 1, 3
0545                R(J, I) = 0.
0546                P(J, I) = 0.
0547  1015       CONTINUE
0548             E(I) = 0.
0549             LB(I) = 0
0550 cbz3/25/00
0551             ID(I)=0
0552 c     sp 12/19/00
0553            PROPER(I) = 1.
0554  1016   CONTINUE
0555          MASS = 0
0556 cbz12/22/98
0557 c         MASSR(1) = 0
0558 c         NP = 0
0559 c         NPI = 1
0560          NP = 0
0561          DO 1017 J = 1, NUM
0562             MASSR(J) = 0
0563             NPI(J) = 1
0564  1017    CONTINUE
0565          DO 1019 I = 1, MAXR
0566             DO 1018 J = 1, MAXSTR
0567                RT(1, J, I) = 0.
0568                RT(2, J, I) = 0.
0569                RT(3, J, I) = 0.
0570                PT(1, J, I) = 0.
0571                PT(2, J, I) = 0.
0572                PT(3, J, I) = 0.
0573                ET(J, I) = 0.
0574                LT(J, I) = 0
0575 c     sp 12/19/00
0576                PROT(J, I) = 1.
0577  1018       CONTINUE
0578  1019    CONTINUE
0579 cbz12/22/98end
0580       END IF
0581 cbz11/16/98end
0582         
0583       DO 10000 NT = 1,NTMAX
0584 *TEMPORARY PARTICLE COUNTERS
0585 *4.2 PION COUNTERS : LP1,LP2 AND LP3 ARE THE NO. OF P+,P0 AND P-
0586       LP1=0
0587       LP2=0
0588       LP3=0
0589 *4.3 DELTA COUNTERS : LD1,LD2,LD3 AND LD4 ARE THE NO. OF D++,D+,D0 AND D-
0590       LD1=0
0591       LD2=0
0592       LD3=0
0593       LD4=0
0594 *4.4 N*(1440) COUNTERS : LN1 AND LN2 ARE THE NO. OF N*+ AND N*0
0595       LN1=0
0596       LN2=0
0597 *4.5 N*(1535) counters
0598       LN5=0
0599 *4.6 ETA COUNTERS
0600       LE=0
0601 *4.7 KAON COUNTERS
0602       LKAON=0
0603 
0604 clin-11/09/00:
0605 * KAON* COUNTERS
0606       LKAONS=0
0607 
0608 *-----------------------------------------------------------------------
0609         IF (ICOLL .NE. 1) THEN
0610 * STUDYING BINARY COLLISIONS AMONG PARTICLES DURING THIS TIME INTERVAL *
0611 clin-10/25/02 get rid of argument usage mismatch in relcol(.nt.):
0612            numnt=nt
0613           CALL RELCOL(LCOLL,LBLOC,LCNNE,LDD,LPP,lppk,
0614      &    LPN,lpd,LRHO,LOMEGA,LKN,LNNK,LDDK,LNDK,LCNND,
0615      &    LCNDN,LDIRT,LDECAY,LRES,LDOU,LDDRHO,LNNRHO,
0616      &    LNNOM,numnt,ntmax,sp,akaon,sk)
0617 c     &    LNNOM,NT,ntmax,sp,akaon,sk)
0618 clin-10/25/02-end
0619 *-----------------------------------------------------------------------
0620 
0621 c dilepton production from Dalitz decay
0622 c of pi0 at final time
0623 *      if(nt .eq. ntmax) call dalitz_pi(nt,ntmax)
0624 *                                                                      *
0625 **********************************
0626 *                Lables of collision channels                             *
0627 **********************************
0628 *         LCOLL   - NUMBER OF COLLISIONS              (INTEGER,OUTPUT) *
0629 *         LBLOC   - NUMBER OF PULI-BLOCKED COLLISIONS (INTEGER,OUTPUT) *
0630 *         LCNNE   - NUMBER OF ELASTIC COLLISION       (INTEGER,OUTPUT) *
0631 *         LCNND   - NUMBER OF N+N->N+DELTA REACTION   (INTEGER,OUTPUT) *
0632 *         LCNDN   - NUMBER OF N+DELTA->N+N REACTION   (INTEGER,OUTPUT) *
0633 *         LDD     - NUMBER OF RESONANCE+RESONANCE COLLISIONS
0634 *         LPP     - NUMBER OF PION+PION elastic COLIISIONS
0635 *         lppk    - number of pion(RHO,OMEGA)+pion(RHO,OMEGA)
0636 *                 -->K+K- collisions
0637 *         LPN     - NUMBER OF PION+N-->KAON+X
0638 *         lpd     - number of pion+n-->delta+pion
0639 *         lrho    - number of pion+n-->Delta+rho
0640 *         lomega  - number of pion+n-->Delta+omega
0641 *         LKN     - NUMBER OF KAON RESCATTERINGS
0642 *         LNNK    - NUMBER OF bb-->kAON PROCESS
0643 *         LDDK    - NUMBER OF DD-->KAON PROCESS
0644 *         LNDK    - NUMBER OF ND-->KAON PROCESS
0645 ***********************************
0646 * TIME-INTEGRATED COLLISIONS NUMBERS OF VARIOUS PROCESSES
0647           RCOLL = RCOLL + FLOAT(LCOLL)/num
0648           RBLOC = RBLOC + FLOAT(LBLOC)/num
0649           RCNNE = RCNNE + FLOAT(LCNNE)/num
0650          RDD   = RDD   + FLOAT(LDD)/num
0651          RPP   = RPP   + FLOAT(LPP)/NUM
0652          rppk  =rppk   + float(lppk)/num
0653          RPN   = RPN   + FLOAT(LPN)/NUM
0654          rpd   =rpd    + float(lpd)/num
0655          RKN   = RKN   + FLOAT(LKN)/NUM
0656          RNNK  =RNNK   + FLOAT(LNNK)/NUM
0657          RDDK  =RDDK   + FLOAT(LDDK)/NUM
0658          RNDK  =RNDK   + FLOAT(LNDK)/NUM
0659           RCNND = RCNND + FLOAT(LCNND)/num
0660           RCNDN = RCNDN + FLOAT(LCNDN)/num
0661           RDIRT = RDIRT + FLOAT(LDIRT)/num
0662           RDECAY= RDECAY+ FLOAT(LDECAY)/num
0663           RRES  = RRES  + FLOAT(LRES)/num
0664 * AVERAGE RATES OF VARIOUS COLLISIONS IN THE CURRENT TIME STEP
0665           ADIRT=LDIRT/DT/num
0666           ACOLL=(LCOLL-LBLOC)/DT/num
0667           ACNND=LCNND/DT/num
0668           ACNDN=LCNDN/DT/num
0669           ADECAY=LDECAY/DT/num
0670           ARES=LRES/DT/num
0671          ADOU=LDOU/DT/NUM
0672          ADDRHO=LDDRHO/DT/NUM
0673          ANNRHO=LNNRHO/DT/NUM
0674          ANNOM=LNNOM/DT/NUM
0675          ADD=LDD/DT/num
0676          APP=LPP/DT/num
0677          appk=lppk/dt/num
0678           APN=LPN/DT/num
0679          apd=lpd/dt/num
0680          arh=lrho/dt/num
0681          aom=lomega/dt/num
0682          AKN=LKN/DT/num
0683          ANNK=LNNK/DT/num
0684          ADDK=LDDK/DT/num
0685          ANDK=LNDK/DT/num
0686 * PRINT OUT THE VARIOUS COLLISION RATES
0687 * (1)N-N COLLISIONS 
0688 c       WRITE(1010,9991)NT*DT,ACNND,ADOU,ADIRT,ADDRHO,ANNRHO+ANNOM
0689 c9991       FORMAT(6(E10.3,2X))
0690 * (2)PION-N COLLISIONS
0691 c       WRITE(1011,'(5(E10.3,2X))')NT*DT,apd,ARH,AOM,APN
0692 * (3)KAON PRODUCTION CHANNELS
0693 c        WRITE(1012,9993)NT*DT,ANNK,ADDK,ANDK,APN,Appk
0694 * (4)D(N*)+D(N*) COLLISION
0695 c       WRITE(1013,'(4(E10.3,2X))')NT*DT,ADDK,ADD,ADD+ADDK
0696 * (5)MESON+MESON
0697 c       WRITE(1014,'(4(E10.3,2X))')NT*DT,APPK,APP,APP+APPK
0698 * (6)DECAY AND RESONANCE
0699 c       WRITE(1016,'(3(E10.3,2X))')NT*DT,ARES,ADECAY
0700 * (7)N+D(N*)
0701 c       WRITE(1017,'(4(E10.3,2X))')NT*DT,ACNDN,ANDK,ACNDN+ANDK
0702 c9992    FORMAT(5(E10.3,2X))
0703 c9993    FORMAT(6(E10.3,2X))
0704 * PRINT OUT TIME-INTEGRATED COLLISION INFORMATION
0705 cbz12/28/98
0706 c        write(1018,'(5(e10.3,2x),/, 4(e10.3,2x))')
0707 c     &           RCNNE,RCNND,RCNDN,RDIRT,rpd,
0708 c     &           RDECAY,RRES,RDD,RPP
0709 c        write(1018,'(6(e10.3,2x),/, 5(e10.3,2x))')
0710 c     &           NT*DT,RCNNE,RCNND,RCNDN,RDIRT,rpd,
0711 c     &           NT*DT,RDECAY,RRES,RDD,RPP
0712 cbz12/18/98end
0713 * PRINT OUT TIME-INTEGRATED KAON MULTIPLICITIES FROM DIFFERENT CHANNELS
0714 c       WRITE(1019,'(7(E10.3,2X))')NT*DT,RNNK,RDDK,RNDK,RPN,Rppk,
0715 c     &                           RNNK+RDDK+RNDK+RPN+Rppk
0716 *                                                                      *
0717 
0718         END IF
0719 *
0720 *       UPDATE BARYON DENSITY
0721 *
0722         CALL DENS(IPOT,MASS,NUM,OUTPAR)
0723 *
0724 *       UPDATE POSITIONS FOR ALL THE PARTICLES PRESENT AT THIS TIME
0725 *
0726        sumene=0
0727         ISO=0
0728         DO 201 MRUN=1,NUM
0729         ISO=ISO+MASSR(MRUN-1)
0730         DO 201 I0=1,MASSR(MRUN)
0731         I =I0+ISO
0732         ETOTAL = SQRT( E(I)**2 + P(1,I)**2 + P(2,I)**2 +P(3,I)**2 )
0733        sumene=sumene+etotal
0734 C for kaons, if there is a potential
0735 C CALCULATE THE ENERGY OF THE KAON ACCORDING TO THE IMPULSE APPROXIMATION
0736 C REFERENCE: B.A. LI AND C.M. KO, PHYS. REV. C 54 (1996) 3283. 
0737          if(kpoten.ne.0.and.lb(i).eq.23)then
0738              den=0.
0739               IX = NINT( R(1,I) )
0740               IY = NINT( R(2,I) )
0741               IZ = NINT( R(3,I) )
0742 clin-4/2008:
0743 c       IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
0744 c     & ABS(IZ) .LT. MAXZ) den=rho(ix,iy,iz)
0745               IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
0746      1             .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ)
0747      2             den=rho(ix,iy,iz)
0748 c         ecor=0.1973**2*0.255*kmul*4*3.14159*(1.+0.4396/0.938)
0749 c         etotal=sqrt(etotal**2+ecor*den)
0750 c** G.Q Li potential form with n_s = n_b and pot(n_0)=29 MeV, m^*=m
0751 c     GeV^2 fm^3
0752           akg = 0.1727
0753 c     GeV fm^3
0754           bkg = 0.333
0755          rnsg = den
0756          ecor = - akg*rnsg + (bkg*den)**2
0757          etotal = sqrt(etotal**2 + ecor)
0758          endif
0759 c
0760          if(kpoten.ne.0.and.lb(i).eq.21)then
0761              den=0.
0762               IX = NINT( R(1,I) )
0763               IY = NINT( R(2,I) )
0764               IZ = NINT( R(3,I) )
0765 clin-4/2008:
0766 c       IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
0767 c     & ABS(IZ) .LT. MAXZ) den=rho(ix,iy,iz)
0768               IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
0769      1             .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ)
0770      2             den=rho(ix,iy,iz)
0771 c* for song potential no effect on position
0772 c** G.Q Li potential form with n_s = n_b and pot(n_0)=29 MeV, m^*=m
0773 c     GeV^2 fm^3
0774           akg = 0.1727
0775 c     GeV fm^3
0776           bkg = 0.333
0777          rnsg = den
0778          ecor = - akg*rnsg + (bkg*den)**2
0779          etotal = sqrt(etotal**2 + ecor)
0780           endif
0781 c
0782 C UPDATE POSITIONS
0783           R(1,I) = R(1,I) + DT*P(1,I)/ETOTAL
0784           R(2,I) = R(2,I) + DT*P(2,I)/ETOTAL
0785           R(3,I) = R(3,I) + DT*P(3,I)/ETOTAL
0786 c use cyclic boundary conitions
0787             if ( cycbox.ne.0 ) then
0788               if ( r(1,i).gt. cycbox/2 ) r(1,i)=r(1,i)-cycbox
0789               if ( r(1,i).le.-cycbox/2 ) r(1,i)=r(1,i)+cycbox
0790               if ( r(2,i).gt. cycbox/2 ) r(2,i)=r(2,i)-cycbox
0791               if ( r(2,i).le.-cycbox/2 ) r(2,i)=r(2,i)+cycbox
0792               if ( r(3,i).gt. cycbox/2 ) r(3,i)=r(3,i)-cycbox
0793               if ( r(3,i).le.-cycbox/2 ) r(3,i)=r(3,i)+cycbox
0794             end if
0795 * UPDATE THE DELTA, N* AND PION COUNTERS
0796           LB1=LB(I)
0797 * 1. FOR DELTA++
0798         IF(LB1.EQ.9)LD1=LD1+1
0799 * 2. FOR DELTA+
0800         IF(LB1.EQ.8)LD2=LD2+1
0801 * 3. FOR DELTA0
0802         IF(LB1.EQ.7)LD3=LD3+1
0803 * 4. FOR DELTA-
0804         IF(LB1.EQ.6)LD4=LD4+1
0805 * 5. FOR N*+(1440)
0806         IF(LB1.EQ.11)LN1=LN1+1
0807 * 6. FOR N*0(1440)
0808         IF(LB1.EQ.10)LN2=LN2+1
0809 * 6.1 FOR N*(1535)
0810        IF((LB1.EQ.13).OR.(LB1.EQ.12))LN5=LN5+1
0811 * 6.2 FOR ETA
0812        IF(LB1.EQ.0)LE=LE+1
0813 * 6.3 FOR KAONS
0814        IF(LB1.EQ.23)LKAON=LKAON+1
0815 clin-11/09/00: FOR KAON*
0816        IF(LB1.EQ.30)LKAONS=LKAONS+1
0817 
0818 * UPDATE PION COUNTER
0819 * 7. FOR PION+
0820         IF(LB1.EQ.5)LP1=LP1+1
0821 * 8. FOR PION0
0822         IF(LB1.EQ.4)LP2=LP2+1
0823 * 9. FOR PION-
0824         IF(LB1.EQ.3)LP3=LP3+1
0825 201     CONTINUE
0826         LP=LP1+LP2+LP3
0827         LD=LD1+LD2+LD3+LD4
0828         LN=LN1+LN2
0829         ALP=FLOAT(LP)/FLOAT(NUM)
0830         ALD=FLOAT(LD)/FLOAT(NUM)
0831         ALN=FLOAT(LN)/FLOAT(NUM)
0832        ALN5=FLOAT(LN5)/FLOAT(NUM)
0833         ATOTAL=ALP+ALD+ALN+0.5*ALN5
0834        ALE=FLOAT(LE)/FLOAT(NUM)
0835        ALKAON=FLOAT(LKAON)/FLOAT(NUM)
0836 * UPDATE MOMENTUM DUE TO COULOMB INTERACTION 
0837         if (icou .eq. 1) then
0838 *       with Coulomb interaction
0839           iso=0
0840           do 1026 irun = 1,num
0841             iso=iso+massr(irun-1)
0842             do 1021 il = 1,massr(irun)
0843                temp(1,il) = 0.
0844                temp(2,il) = 0.
0845                temp(3,il) = 0.
0846  1021       continue
0847             do 1023 il = 1, massr(irun)
0848               i=iso+il
0849               if (zet(lb(i)).ne.0) then
0850                 do 1022 jl = 1,il-1
0851                   j=iso+jl
0852                   if (zet(lb(j)).ne.0) then
0853                     ddx=r(1,i)-r(1,j)
0854                     ddy=r(2,i)-r(2,j)
0855                     ddz=r(3,i)-r(3,j)
0856                     rdiff = sqrt(ddx**2+ddy**2+ddz**2)
0857                     if (rdiff .le. 1.) rdiff = 1.
0858                     grp=zet(lb(i))*zet(lb(j))/rdiff**3
0859                     ddx=ddx*grp
0860                     ddy=ddy*grp
0861                     ddz=ddz*grp
0862                     temp(1,il)=temp(1,il)+ddx
0863                     temp(2,il)=temp(2,il)+ddy
0864                     temp(3,il)=temp(3,il)+ddz
0865                     temp(1,jl)=temp(1,jl)-ddx
0866                     temp(2,jl)=temp(2,jl)-ddy
0867                     temp(3,jl)=temp(3,jl)-ddz
0868                   end if
0869  1022          continue
0870               end if
0871  1023      continue
0872             do 1025 il = 1,massr(irun)
0873               i= iso+il
0874               if (zet(lb(i)).ne.0) then
0875                 do 1024 idir = 1,3
0876                   p(idir,i) = p(idir,i) + temp(idir,il)
0877      &                                    * dt * 0.00144
0878  1024          continue
0879               end if
0880  1025      continue
0881  1026   continue
0882         end if
0883 *       In the following, we shall:  
0884 *       (1) UPDATE MOMENTA DUE TO THE MEAN FIELD FOR BARYONS AND KAONS,
0885 *       (2) calculate the thermalization, temperature in a sphere of 
0886 *           radius 2.0 fm AROUND THE CM
0887 *       (3) AND CALCULATE THE NUMBER OF PARTICLES IN THE HIGH DENSITY REGION 
0888        spt=0
0889        spz=0
0890        ncen=0
0891        ekin=0
0892           NLOST = 0
0893           MEAN=0
0894          nquark=0
0895          nbaryn=0
0896 csp06/18/01
0897            rads = 2.
0898            zras = 0.1
0899            denst = 0.
0900            edenst = 0.
0901 csp06/18/01 end
0902           DO 6000 IRUN = 1,NUM
0903           MEAN=MEAN+MASSR(IRUN-1)
0904           DO 5800 J = 1,MASSR(irun)
0905           I=J+MEAN
0906 c
0907 csp06/18/01
0908            radut = sqrt(r(1,i)**2+r(2,i)**2)
0909        if( radut .le. rads )then
0910         if( abs(r(3,i)) .le. zras*nt*dt )then
0911 c         vols = 3.14159*radut**2*abs(r(3,i))      ! cylinder pi*r^2*l
0912 c     cylinder pi*r^2*l
0913          vols = 3.14159*rads**2*zras
0914          engs=sqrt(p(1,i)**2+p(2,i)**2+p(3,i)**2+e(i)**2)
0915          gammas=1.
0916          if(e(i).ne.0.)gammas=engs/e(i)
0917 c     rho
0918          denst = denst + 1./gammas/vols
0919 c     energy density
0920          edenst = edenst + engs/gammas/gammas/vols
0921         endif
0922        endif
0923 csp06/18/01 end
0924 c
0925          drr=sqrt(r(1,i)**2+r(2,i)**2+r(3,i)**2)
0926          if(drr.le.2.0)then
0927          spt=spt+p(1,i)**2+p(2,i)**2
0928          spz=spz+p(3,i)**2
0929          ncen=ncen+1
0930          ekin=ekin+sqrt(p(1,i)**2+p(2,i)**2+p(3,i)**2+e(i)**2)-e(i)
0931          endif
0932               IX = NINT( R(1,I) )
0933               IY = NINT( R(2,I) )
0934               IZ = NINT( R(3,I) )
0935 C calculate the No. of particles in the high density region
0936 clin-4/2008:
0937 c              IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
0938 c     & ABS(IZ) .LT. MAXZ) THEN
0939               IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
0940      1          .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ) THEN
0941        if(rho(ix,iy,iz)/0.168.gt.dencut)go to 5800
0942        if((rho(ix,iy,iz)/0.168.gt.5.).and.(e(i).gt.0.9))
0943      &  nbaryn=nbaryn+1
0944        if(pel(ix,iy,iz).gt.2.0)nquark=nquark+1
0945        endif
0946 c*
0947 c If there is a kaon potential, propogating kaons 
0948         if(kpoten.ne.0.and.lb(i).eq.23)then
0949         den=0.
0950 clin-4/2008:
0951 c       IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
0952 c     & ABS(IZ) .LT. MAXZ)then
0953         IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
0954      1       .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ) THEN
0955            den=rho(ix,iy,iz)
0956 c        ecor=0.1973**2*0.255*kmul*4*3.14159*(1.+0.4396/0.938)
0957 c       etotal=sqrt(P(1,i)**2+p(2,I)**2+p(3,i)**2+e(i)**2+ecor*den)
0958 c** for G.Q Li potential form with n_s = n_b and pot(n_0)=29 MeV
0959 c     !! GeV^2 fm^3
0960             akg = 0.1727
0961 c     !! GeV fm^3
0962             bkg = 0.333
0963           rnsg = den
0964           ecor = - akg*rnsg + (bkg*den)**2
0965           etotal = sqrt(P(1,i)**2+p(2,I)**2+p(3,i)**2+e(i)**2 + ecor)
0966           ecor = - akg + 2.*bkg**2*den + 2.*bkg*etotal
0967 c** G.Q. Li potential (END)           
0968         CALL GRADUK(IX,IY,IZ,GRADXk,GRADYk,GRADZk)
0969         P(1,I) = P(1,I) - DT * GRADXk*ecor/(2.*etotal)
0970         P(2,I) = P(2,I) - DT * GRADYk*ecor/(2.*etotal)
0971         P(3,I) = P(3,I) - DT * GRADZk*ecor/(2.*etotal)
0972         endif
0973          endif
0974 c
0975         if(kpoten.ne.0.and.lb(i).eq.21)then
0976          den=0.
0977 clin-4/2008:
0978 c           IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
0979 c     &        ABS(IZ) .LT. MAXZ)then
0980          IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
0981      1        .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ) THEN
0982                den=rho(ix,iy,iz)
0983         CALL GRADUK(IX,IY,IZ,GRADXk,GRADYk,GRADZk)
0984 c        P(1,I) = P(1,I) - DT * GRADXk*(-0.12/0.168)    !! song potential
0985 c        P(2,I) = P(2,I) - DT * GRADYk*(-0.12/0.168)
0986 c        P(3,I) = P(3,I) - DT * GRADZk*(-0.12/0.168)
0987 c** for G.Q Li potential form with n_s = n_b and pot(n_0)=29 MeV
0988 c    !! GeV^2 fm^3
0989             akg = 0.1727
0990 c     !! GeV fm^3
0991             bkg = 0.333
0992           rnsg = den
0993           ecor = - akg*rnsg + (bkg*den)**2
0994           etotal = sqrt(P(1,i)**2+p(2,I)**2+p(3,i)**2+e(i)**2 + ecor)
0995           ecor = - akg + 2.*bkg**2*den - 2.*bkg*etotal
0996         P(1,I) = P(1,I) - DT * GRADXk*ecor/(2.*etotal)
0997         P(2,I) = P(2,I) - DT * GRADYk*ecor/(2.*etotal)
0998         P(3,I) = P(3,I) - DT * GRADZk*ecor/(2.*etotal)
0999 c** G.Q. Li potential (END)           
1000         endif
1001          endif
1002 c
1003 c for other mesons, there is no potential
1004        if(j.gt.mass)go to 5800         
1005 c  with mean field interaction for baryons   (open endif below) !!sp05
1006 **      if( (iabs(lb(i)).eq.1.or.iabs(lb(i)).eq.2) .or.
1007 **    &     (iabs(lb(i)).ge.6.and.iabs(lb(i)).le.17) .or.
1008 **    &      iabs(lb(i)).eq.40.or.iabs(lb(i)).eq.41 )then  
1009         IF (ICOLL .NE. -1) THEN
1010 * check if the baryon has run off the lattice
1011 *             IX0=NINT(R(1,I)/DX)
1012 *             IY0=NINT(R(2,I)/DY)
1013 *             IZ0=NINT(R(3,I)/DZ)
1014 *             IPX0=NINT(P(1,I)/DPX)
1015 *             IPY0=NINT(P(2,I)/DPY)
1016 *             IPZ0=NINT(P(3,I)/DPZ)
1017 *      if ( (abs(ix0).gt.mx) .or. (abs(iy0).gt.my) .or. (abs(iz0).gt.mz)
1018 *     &  .or. (abs(ipx0).gt.mpx) .or. (abs(ipy0) 
1019 *     &  .or. (ipz0.lt.-mpz) .or. (ipz0.gt.mpzp)) NLOST=NLOST+1
1020 clin-4/2008:
1021 c              IF (ABS(IX) .LT. MAXX .AND. ABS(IY) .LT. MAXX .AND.
1022 c     &                                    ABS(IZ) .LT. MAXZ     ) THEN
1023            IF(IX.LT.MAXX.AND.IY.LT.MAXX.AND.IZ.LT.MAXZ
1024      1          .AND.IX.GT.-MAXX.AND.IY.GT.-MAXX.AND.IZ.GT.-MAXZ) THEN
1025                 CALL GRADU(IPOT,IX,IY,IZ,GRADX,GRADY,GRADZ)
1026               TZ=0.
1027               GRADXN=0
1028               GRADYN=0
1029               GRADZN=0
1030               GRADXP=0
1031               GRADYP=0
1032               GRADZP=0
1033              IF(ICOU.EQ.1)THEN
1034                 CALL GRADUP(IX,IY,IZ,GRADXP,GRADYP,GRADZP)
1035                 CALL GRADUN(IX,IY,IZ,GRADXN,GRADYN,GRADZN)
1036                IF(ZET(LB(I)).NE.0)TZ=-1
1037                IF(ZET(LB(I)).EQ.0)TZ= 1
1038              END IF
1039            if(iabs(lb(i)).ge.14.and.iabs(lb(i)).le.17)then
1040               facl = 2./3.
1041             elseif(iabs(lb(i)).eq.40.or.iabs(lb(i)).eq.41)then
1042               facl = 1./3.
1043             else
1044               facl = 1.
1045             endif
1046         P(1,I) = P(1,I) - facl*DT * (GRADX+asy*(GRADXN-GRADXP)*TZ)
1047         P(2,I) = P(2,I) - facl*DT * (GRADY+asy*(GRADYN-GRADYP)*TZ)
1048         P(3,I) = P(3,I) - facl*DT * (GRADZ+asy*(GRADZN-GRADZP)*TZ)
1049                 end if                                                       
1050               ENDIF
1051 **          endif          !!sp05     
1052  5800       CONTINUE
1053  6000       CONTINUE
1054 c print out the average no. of particles in regions where the local 
1055 c baryon density is higher than 5*rho0 
1056 c       write(1072,'(e10.3,2x,e10.3)')nt*dt,float(nbaryn)/float(num)
1057 C print out the average no. of particles in regions where the local 
1058 c energy density is higher than 2 GeV/fm^3. 
1059 c       write(1073,'(e10.3,2x,e10.3)')nt*dt,float(nquark)/float(num)
1060 c print out the no. of particles that have run off the lattice
1061 *          IF (NLOST .NE. 0 .AND. (NT/NFREQ)*NFREQ .EQ. NT) THEN
1062 *            WRITE(12,'(5X,''***'',I7,'' TESTPARTICLES LOST AFTER '',
1063 *     &                   ''TIME STEP NUMBER'',I4)') NLOST, NT
1064 *         END IF
1065 *
1066 *       update phase space density
1067 *        call platin(mode,mass,num,dx,dy,dz,dpx,dpy,dpz,fnorm)
1068 *
1069 *       CONTROL-PRINTOUT OF CONFIGURATION (IF REQUIRED)
1070 *
1071 *        if (inout(5) .eq. 2) CALL ENERGY(NT,IPOT,NUM,MASS,EMIN,EMAX)
1072 *
1073 * 
1074 * print out central baryon density as a function of time
1075        CDEN=RHO(0,0,0)/0.168
1076 cc        WRITE(1002,990)FLOAT(NT)*DT,CDEN
1077 c        WRITE(1002,1990)FLOAT(NT)*DT,CDEN,denst/real(num)
1078 * print out the central energy density as a function of time
1079 cc        WRITE(1003,990)FLOAT(NT)*DT,PEL(0,0,0)
1080 c        WRITE(1003,1990)FLOAT(NT)*DT,PEL(0,0,0),edenst/real(num)
1081 * print out the no. of pion-like particles as a function of time 
1082 c        WRITE(1004,9999)FLOAT(NT)*DT,ALD,ALN,ALP,ALN5,
1083 c     &               ALD+ALN+ALP+0.5*ALN5
1084 * print out the no. of eta-like particles as a function of time
1085 c        WRITE(1005,991)FLOAT(NT)*DT,ALN5,ALE,ALE+0.5*ALN5
1086 c990       FORMAT(E10.3,2X,E10.3)
1087 c1990       FORMAT(E10.3,2X,E10.3,2X,E10.3)
1088 c991       FORMAT(E10.3,2X,E10.3,2X,E10.3,2X,E10.3)
1089 c9999    FORMAT(e10.3,2X,e10.3,2X,E10.3,2X,E10.3,2X,
1090 c     1  E10.3,2X,E10.3)
1091 C THE FOLLOWING OUTPUTS CAN BE TURNED ON/OFF by setting icflow and icrho=0  
1092 c print out the baryon and meson density matrix in the reaction plane
1093         IF ((NT/NFREQ)*NFREQ .EQ. NT ) THEN
1094        if(icflow.eq.1)call flow(nt)
1095 cbz11/18/98
1096 c       if(icrho.ne.1)go to 10000 
1097 c       if (icrho .eq. 1) then 
1098 cbz11/18/98end
1099 c       do ix=-10,10
1100 c       do iz=-10,10
1101 c       write(1053,992)ix,iz,rho(ix,0,iz)/0.168
1102 c       write(1054,992)ix,iz,pirho(ix,0,iz)/0.168
1103 c       write(1055,992)ix,iz,pel(ix,0,iz)
1104 c       end do
1105 c       end do
1106 cbz11/18/98
1107 c        end if
1108 cbz11/18/98end
1109 c992       format(i3,i3,e11.4)
1110        endif
1111 c print out the ENERGY density matrix in the reaction plane
1112 C CHECK LOCAL MOMENTUM EQUILIBRIUM IN EACH CELL, 
1113 C AND PERFORM ON-LINE FLOW ANALYSIS AT A FREQUENCY OF NFREQ
1114 c        IF ((NT/NFREQ)*NFREQ .EQ. NT ) THEN
1115 c       call flow(nt)
1116 c       call equ(ipot,mass,num,outpar)
1117 c       do ix=-10,10
1118 c       do iz=-10,10
1119 c       write(1055,992)ix,iz,pel(ix,0,iz)
1120 c       write(1056,992)ix,iz,rxy(ix,0,iz)
1121 c       end do
1122 c       end do
1123 c       endif
1124 C calculate the volume of high BARYON AND ENERGY density 
1125 C matter as a function of time
1126 c       vbrho=0.
1127 c       verho=0.
1128 c       do ix=-20,20
1129 c       do iy=-20,20
1130 c       do iz=-20,20
1131 c       if(rho(ix,iy,iz)/0.168.gt.5.)vbrho=vbrho+1.
1132 c       if(pel(ix,iy,iz).gt.2.)verho=verho+1.
1133 c       end do
1134 c       end do
1135 c       end do
1136 c       write(1081,993)dt*nt,vbrho
1137 c       write(1082,993)dt*nt,verho
1138 c993       format(e11.4,2x,e11.4)
1139 *-----------------------------------------------------------------------
1140 cbz11/16/98
1141 c.....for read-in initial conditions produce particles from read-in 
1142 c.....common block.
1143 c.....note that this part is only for cascade with number of test particles
1144 c.....NUM = 1.
1145       IF (IAPAR2(1) .NE. 1) THEN
1146          CT = NT * DT
1147 cbz12/22/98
1148 c         NP = MASSR(1)
1149 c         DO WHILE (FTAR(NPI) .GT. CT - DT .AND. FTAR(NPI) .LE. CT)
1150 c            NP = NP + 1
1151 c            R(1, NP) = GXAR(NPI) + PXAR(NPI) / PEAR(NPI) * (CT - FTAR(NPI))
1152 c            R(2, NP) = GYAR(NPI) + PYAR(NPI) / PEAR(NPI) * (CT - FTAR(NPI))
1153 c            R(3, NP) = GZAR(NPI) + PZAR(NPI) / PEAR(NPI) * (CT - FTAR(NPI))
1154 c            P(1, NP) = PXAR(NPI)
1155 c            P(2, NP) = PYAR(NPI)
1156 c            P(3, NP) = PZAR(NPI)
1157 c            E(NP) = XMAR(NPI)
1158 c            LB(NP) = IARFLV(ITYPAR(NPI))
1159 c            NPI = NPI + 1
1160 c         END DO
1161 c         MASSR(1) = NP
1162          IA = 0
1163          DO 1028 IRUN = 1, NUM
1164             DO 1027 IC = 1, MASSR(IRUN)
1165                IE = IA + IC
1166                RT(1, IC, IRUN) = R(1, IE)
1167                RT(2, IC, IRUN) = R(2, IE)
1168                RT(3, IC, IRUN) = R(3, IE)
1169                PT(1, IC, IRUN) = P(1, IE)
1170                PT(2, IC, IRUN) = P(2, IE)
1171                PT(3, IC, IRUN) = P(3, IE)
1172                ET(IC, IRUN) = E(IE)
1173                LT(IC, IRUN) = LB(IE)
1174 c         !! sp 12/19/00
1175                PROT(IC, IRUN) = PROPER(IE)
1176 clin-5/2008:
1177                dpertt(IC, IRUN)=dpertp(IE)
1178  1027       CONTINUE
1179             NP = MASSR(IRUN)
1180             NP1 = NPI(IRUN)
1181 
1182 cbz10/05/99
1183 c            DO WHILE (FT1(NP1, IRUN) .GT. CT - DT .AND. 
1184 c     &           FT1(NP1, IRUN) .LE. CT)
1185 cbz10/06/99
1186 c            DO WHILE (NPI(IRUN).LE.MULTI1(IRUN).AND.
1187 cbz10/06/99 end
1188 clin-11/13/00 finally read in all unformed particles and do the decays in ART:
1189 c           DO WHILE (NP1.LE.MULTI1(IRUN).AND.
1190 c    &           FT1(NP1, IRUN) .GT. CT - DT .AND. 
1191 c    &           FT1(NP1, IRUN) .LE. CT)
1192 c
1193                ctlong = ct
1194              if(nt .eq. (ntmax-1))then
1195                ctlong = 1.E30
1196              elseif(nt .eq. ntmax)then
1197                go to 1111
1198              endif
1199             DO WHILE (NP1.LE.MULTI1(IRUN).AND.
1200      &           FT1(NP1, IRUN) .GT. (CT - DT) .AND. 
1201      &           FT1(NP1, IRUN) .LE. ctlong)
1202                NP = NP + 1
1203                UDT = (CT - FT1(NP1, IRUN)) / EE1(NP1, IRUN)
1204 clin-10/28/03 since all unformed hadrons at time ct are read in at nt=ntmax-1, 
1205 c     their positions should not be propagated to time ct:
1206                if(nt.eq.(ntmax-1)) then
1207                   ftsvt(NP,IRUN)=FT1(NP1, IRUN)
1208                   if(FT1(NP1, IRUN).gt.ct) UDT=0.
1209                endif
1210                RT(1, NP, IRUN) = GX1(NP1, IRUN) + 
1211      &              PX1(NP1, IRUN) * UDT
1212                RT(2, NP, IRUN) = GY1(NP1, IRUN) + 
1213      &              PY1(NP1, IRUN) * UDT
1214                RT(3, NP, IRUN) = GZ1(NP1, IRUN) + 
1215      &              PZ1(NP1, IRUN) * UDT
1216                PT(1, NP, IRUN) = PX1(NP1, IRUN)
1217                PT(2, NP, IRUN) = PY1(NP1, IRUN)
1218                PT(3, NP, IRUN) = PZ1(NP1, IRUN)
1219                ET(NP, IRUN) = XM1(NP1, IRUN)
1220                LT(NP, IRUN) = IARFLV(ITYP1(NP1, IRUN))
1221 clin-5/2008:
1222                dpertt(NP,IRUN)=dpp1(NP1,IRUN)
1223 clin-4/30/03 ctest off 
1224 c     record initial phi,K*,Lambda(1520) resonances formed during the timestep:
1225 c               if(LT(NP, IRUN).eq.29.or.iabs(LT(NP, IRUN)).eq.30)
1226 c     1              write(17,112) 'formed',LT(NP, IRUN),PX1(NP1, IRUN),
1227 c     2 PY1(NP1, IRUN),PZ1(NP1, IRUN),XM1(NP1, IRUN),nt
1228 c 112           format(a10,1x,I4,4(1x,f9.3),1x,I4)
1229 c
1230                NP1 = NP1 + 1
1231 c     !! sp 12/19/00
1232                PROT(NP, IRUN) = 1.
1233             END DO
1234 *
1235  1111      continue
1236             NPI(IRUN) = NP1
1237             IA = IA + MASSR(IRUN)
1238             MASSR(IRUN) = NP
1239  1028    CONTINUE
1240          IA = 0
1241          DO 1030 IRUN = 1, NUM
1242             IA = IA + MASSR(IRUN - 1)
1243             DO 1029 IC = 1, MASSR(IRUN)
1244                IE = IA + IC
1245                R(1, IE) = RT(1, IC, IRUN)
1246                R(2, IE) = RT(2, IC, IRUN)
1247                R(3, IE) = RT(3, IC, IRUN)
1248                P(1, IE) = PT(1, IC, IRUN)
1249                P(2, IE) = PT(2, IC, IRUN)
1250                P(3, IE) = PT(3, IC, IRUN)
1251                E(IE) = ET(IC, IRUN)
1252                LB(IE) = LT(IC, IRUN)
1253 c     !! sp 12/19/00
1254                PROPER(IE) = PROT(IC, IRUN)
1255                if(nt.eq.(ntmax-1)) ftsv(IE)=ftsvt(IC,IRUN)
1256 clin-5/2008:
1257                dpertp(IE)=dpertt(IC, IRUN)
1258  1029       CONTINUE
1259 clin-3/2009 Moved here to better take care of freezeout spacetime:
1260             call hbtout(MASSR(IRUN),nt,ntmax)
1261  1030    CONTINUE
1262 cbz12/22/98end
1263       END IF
1264 cbz11/16/98end
1265 
1266 clin-5/2009 ctest off:
1267 c      call flowh(ct) 
1268 
1269 10000       continue
1270 
1271 *                                                                      *
1272 *       ==============  END OF TIME STEP LOOP   ================       *
1273 
1274 ************************************
1275 *     WRITE OUT particle's MOMENTA ,and/OR COORDINATES ,
1276 *     label and/or their local baryon density in the final state
1277         iss=0
1278         do 1032 lrun=1,num
1279            iss=iss+massr(lrun-1)
1280            do 1031 l0=1,massr(lrun)
1281               ipart=iss+l0
1282  1031      continue
1283  1032   continue
1284 
1285 cbz11/16/98
1286       IF (IAPAR2(1) .NE. 1) THEN
1287 cbz12/22/98
1288 c        NSH = MASSR(1) - NPI + 1
1289 c        IAINT2(1) = IAINT2(1) + NSH
1290 c.....to shift the unformed particles to the end of the common block
1291 c        IF (NSH .GT. 0) THEN
1292 c           IB = IAINT2(1)
1293 c           IE = MASSR(1) + 1
1294 c           II = -1
1295 c        ELSE IF (NSH .LT. 0) THEN
1296 c           IB = MASSR(1) + 1
1297 c           IE = IAINT2(1)
1298 c           II = 1
1299 c        END IF
1300 c        IF (NSH .NE. 0) THEN
1301 c           DO I = IB, IE, II
1302 c              J = I - NSH
1303 c              ITYPAR(I) = ITYPAR(J)
1304 c              GXAR(I) = GXAR(J)
1305 c              GYAR(I) = GYAR(J)
1306 c              GZAR(I) = GZAR(J)
1307 c              FTAR(I) = FTAR(J)
1308 c              PXAR(I) = PXAR(J)
1309 c              PYAR(I) = PYAR(J)
1310 c              PZAR(I) = PZAR(J)
1311 c              PEAR(I) = PEAR(J)
1312 c              XMAR(I) = XMAR(J)
1313 c           END DO
1314 c        END IF
1315 
1316 c.....to copy ART particle info to COMMON /ARPRC/
1317 c        DO I = 1, MASSR(1)
1318 c           ITYPAR(I) = INVFLV(LB(I))
1319 c           GXAR(I) = R(1, I)
1320 c           GYAR(I) = R(2, I)
1321 c           GZAR(I) = R(3, I)
1322 c           FTAR(I) = CT
1323 c           PXAR(I) = P(1, I)
1324 c           PYAR(I) = P(2, I)
1325 c           PZAR(I) = P(3, I)
1326 c           XMAR(I) = E(I)
1327 c           PEAR(I) = SQRT(PXAR(I) ** 2 + PYAR(I) ** 2 + PZAR(I) ** 2
1328 c     &        + XMAR(I) ** 2)
1329 c        END DO
1330         IA = 0
1331         DO 1035 IRUN = 1, NUM
1332            IA = IA + MASSR(IRUN - 1)
1333            NP1 = NPI(IRUN)
1334            NSH = MASSR(IRUN) - NP1 + 1
1335            MULTI1(IRUN) = MULTI1(IRUN) + NSH
1336 c.....to shift the unformed particles to the end of the common block
1337            IF (NSH .GT. 0) THEN
1338               IB = MULTI1(IRUN)
1339               IE = MASSR(IRUN) + 1
1340               II = -1
1341            ELSE IF (NSH .LT. 0) THEN
1342               IB = MASSR(IRUN) + 1
1343               IE = MULTI1(IRUN)
1344               II = 1
1345            END IF
1346            IF (NSH .NE. 0) THEN
1347               DO 1033 I = IB, IE, II
1348                  J = I - NSH
1349                  ITYP1(I, IRUN) = ITYP1(J, IRUN)
1350                  GX1(I, IRUN) = GX1(J, IRUN)
1351                  GY1(I, IRUN) = GY1(J, IRUN)
1352                  GZ1(I, IRUN) = GZ1(J, IRUN)
1353                  FT1(I, IRUN) = FT1(J, IRUN)
1354                  PX1(I, IRUN) = PX1(J, IRUN)
1355                  PY1(I, IRUN) = PY1(J, IRUN)
1356                  PZ1(I, IRUN) = PZ1(J, IRUN)
1357                  EE1(I, IRUN) = EE1(J, IRUN)
1358                  XM1(I, IRUN) = XM1(J, IRUN)
1359 c     !! sp 12/19/00
1360                  PRO1(I, IRUN) = PRO1(J, IRUN)
1361 clin-5/2008:
1362                  dpp1(I,IRUN)=dpp1(J,IRUN)
1363  1033         CONTINUE
1364            END IF
1365            
1366 c.....to copy ART particle info to COMMON /ARPRC1/
1367            DO 1034 I = 1, MASSR(IRUN)
1368               IB = IA + I
1369               ITYP1(I, IRUN) = INVFLV(LB(IB))
1370               GX1(I, IRUN) = R(1, IB)
1371               GY1(I, IRUN) = R(2, IB)
1372               GZ1(I, IRUN) = R(3, IB)
1373 clin-10/28/03:
1374 c since all unformed hadrons at time ct are read in at nt=ntmax-1, 
1375 c their formation time ft1 should be kept to determine their freezeout(x,t):
1376 c              FT1(I, IRUN) = CT
1377               if(FT1(I, IRUN).lt.CT) FT1(I, IRUN) = CT
1378               PX1(I, IRUN) = P(1, IB)
1379               PY1(I, IRUN) = P(2, IB)
1380               PZ1(I, IRUN) = P(3, IB)
1381               XM1(I, IRUN) = E(IB)
1382               EE1(I, IRUN) = SQRT(PX1(I, IRUN) ** 2 + 
1383      &             PY1(I, IRUN) ** 2 +
1384      &             PZ1(I, IRUN) ** 2 + 
1385      &             XM1(I, IRUN) ** 2)
1386 c     !! sp 12/19/00
1387               PRO1(I, IRUN) = PROPER(IB)
1388  1034      CONTINUE
1389  1035   CONTINUE
1390 cbz12/22/98end
1391       END IF
1392 cbz11/16/98end
1393 c
1394 **********************************
1395 *                                                                      *
1396 *       ======= END OF MANY LOOPS OVER IMPACT PARAMETERS ==========    *
1397 *                                                               *
1398 **********************************
1399 50000   CONTINUE
1400 *
1401 *-----------------------------------------------------------------------
1402 *                       ==== ART COMPLETED ====
1403 *-----------------------------------------------------------------------
1404 cbz11/16/98
1405 c      STOP
1406       RETURN
1407 cbz11/16/98end
1408       END
1409 **********************************
1410       subroutine coulin(masspr,massta,NUM)
1411 *                                                                      *
1412 *     purpose:   initialization of array zet() and lb() for all runs  *
1413 *                lb(i) = 1   =>  proton                               *
1414 *                lb(i) = 2   =>  neutron                              *
1415 **********************************
1416         integer  zta,zpr
1417         PARAMETER (MAXSTR=150001)
1418         common  /EE/ ID(MAXSTR),LB(MAXSTR)
1419 cc      SAVE /EE/
1420         COMMON  /ZZ/ ZTA,ZPR
1421 cc      SAVE /zz/
1422       SAVE   
1423         MASS=MASSTA+MASSPR
1424         DO 500 IRUN=1,NUM
1425         do 100 i = 1+(IRUN-1)*MASS,zta+(IRUN-1)*MASS
1426         LB(i) = 1
1427   100   continue
1428         do 200 i = zta+1+(IRUN-1)*MASS,massta+(IRUN-1)*MASS
1429         LB(i) = 2
1430   200   continue
1431         do 300 i = massta+1+(IRUN-1)*MASS,massta+zpr+(IRUN-1)*MASS
1432         LB(i) = 1
1433   300   continue
1434         do 400 i = massta+zpr+1+(IRUN-1)*MASS,
1435      1  massta+masspr+(IRUN-1)*MASS
1436         LB(i) = 2
1437   400   continue
1438   500   CONTINUE
1439         return
1440         end
1441 **********************************
1442 *                                                                      *
1443       SUBROUTINE RELCOL(LCOLL,LBLOC,LCNNE,LDD,LPP,lppk,
1444      &LPN,lpd,lrho,lomega,LKN,LNNK,LDDK,LNDK,LCNND,LCNDN,
1445      &LDIRT,LDECAY,LRES,LDOU,LDDRHO,LNNRHO,LNNOM,
1446      &NT,ntmax,sp,akaon,sk)
1447 *                                                                      *
1448 *       PURPOSE:    CHECK CONDITIONS AND CALCULATE THE KINEMATICS      * 
1449 *                   FOR BINARY COLLISIONS AMONG PARTICLES              *
1450 *                                 - RELATIVISTIC FORMULA USED          *
1451 *                                                                      *
1452 *       REFERENCES: HAGEDORN, RELATIVISTIC KINEMATICS (1963)           *
1453 *                                                                      *
1454 *       VARIABLES:                                                     *
1455 *         MASSPR  - NUMBER OF NUCLEONS IN PROJECTILE   (INTEGER,INPUT) *
1456 *         MASSTA  - NUMBER OF NUCLEONS IN TARGET       (INTEGER,INPUT) *
1457 *         NUM     - NUMBER OF TESTPARTICLES PER NUCLEON(INTEGER,INPUT) *
1458 *         ISEED   - SEED FOR RANDOM NUMBER GENERATOR   (INTEGER,INPUT) *
1459 *         IAVOID  - (= 1 => AVOID FIRST CLLISIONS WITHIN THE SAME      *
1460 *                   NUCLEUS, ELSE ALL COLLISIONS)      (INTEGER,INPUT) *
1461 *         DELTAR  - MAXIMUM SPATIAL DISTANCE FOR WHICH A COLLISION     *
1462 *                   STILL CAN OCCUR                       (REAL,INPUT) *
1463 *         DT      - TIME STEP SIZE                        (REAL,INPUT) *
1464 *         LCOLL   - NUMBER OF COLLISIONS              (INTEGER,OUTPUT) *
1465 *         LBLOC   - NUMBER OF PULI-BLOCKED COLLISIONS (INTEGER,OUTPUT) *
1466 *         LCNNE   - NUMBER OF ELASTIC COLLISION       (INTEGER,OUTPUT) *
1467 *         LCNND   - NUMBER OF N+N->N+DELTA REACTION   (INTEGER,OUTPUT) *
1468 *         LCNDN   - NUMBER OF N+DELTA->N+N REACTION   (INTEGER,OUTPUT) *
1469 *         LDD     - NUMBER OF RESONANCE+RESONANCE COLLISIONS
1470 *         LPP     - NUMBER OF PION+PION elastic COLIISIONS
1471 *         lppk    - number of pion(RHO,OMEGA)+pion(RHO,OMEGA)
1472 *                   -->K+K- collisions
1473 *         LPN     - NUMBER OF PION+N-->KAON+X
1474 *         lpd     - number of pion+n-->delta+pion
1475 *         lrho    - number of pion+n-->Delta+rho
1476 *         lomega  - number of pion+n-->Delta+omega
1477 *         LKN     - NUMBER OF KAON RESCATTERINGS
1478 *         LNNK    - NUMBER OF bb-->kAON PROCESS
1479 *         LDDK    - NUMBER OF DD-->KAON PROCESS
1480 *         LNDK    - NUMBER OF ND-->KAON PROCESS
1481 *         LB(I) IS USED TO LABEL PARTICLE'S CHARGE STATE
1482 *         LB(I)   = 
1483 cbali2/7/99 
1484 *                 -45 Omega baryon(bar)
1485 *                 -41 cascade0(bar)
1486 *                 -40 cascade-(bar)
1487 clin-11/07/00:
1488 *                 -30 K*-
1489 *                 -17 sigma+(bar)
1490 *                 -16 sigma0(bar)
1491 *                 -15 sigma-(bar)
1492 *                 -14 LAMBDA(bar)
1493 clin-8/29/00
1494 *                 -13 anti-N*(+1)(1535),s_11
1495 *                 -12 anti-N*0(1535),s_11
1496 *                 -11 anti-N*(+1)(1440),p_11
1497 *                 -10 anti-N*0(1440), p_11
1498 *                  -9 anti-DELTA+2
1499 *                  -8 anti-DELTA+1
1500 *                  -7 anti-DELTA0
1501 *                  -6 anti-DELTA-1
1502 *
1503 *                  -2 antineutron 
1504 *                  -1 antiproton
1505 cbali2/7/99end 
1506 *                   0 eta
1507 *                   1 PROTON
1508 *                   2 NUETRON
1509 *                   3 PION-
1510 *                   4 PION0
1511 *                   5 PION+          
1512 *                   6 DELTA-1
1513 *                   7 DELTA0
1514 *                   8 DELTA+1
1515 *                   9 DELTA+2
1516 *                   10 N*0(1440), p_11
1517 *                   11 N*(+1)(1440),p_11
1518 *                  12 N*0(1535),s_11
1519 *                  13 N*(+1)(1535),s_11
1520 *                  14 LAMBDA
1521 *                   15 sigma-
1522 *                   16 sigma0
1523 *                   17 sigma+
1524 *                   21 kaon-
1525 clin-2/23/03        22 Kaon0Long (converted at the last timestep)
1526 *                   23 KAON+
1527 *                   24 Kaon0short (converted at the last timestep then decay)
1528 *                   25 rho-
1529 *                   26 rho0
1530 *                   27 rho+
1531 *                   28 omega meson
1532 *                   29 phi
1533 *                   30 K*+
1534 * sp01/03/01
1535 *                   31 eta-prime
1536 *                   40 cascade-
1537 *                   41 cascade0
1538 *                   45 Omega baryon
1539 * sp01/03/01 end
1540 *                   
1541 *                   ++  ------- SEE NOTE BOOK
1542 *         NSTAR=1 INCLUDING N* RESORANCE
1543 *         ELSE DELTA RESORANCE ONLY
1544 *         NDIRCT=1 INCLUDING DIRECT PROCESS,ELSE NOT
1545 *         DIR - PERCENTAGE OF DIRECT PION PRODUCTION PROCESS
1546 **********************************
1547       PARAMETER      (MAXSTR=150001,MAXR=1,PI=3.1415926)
1548       parameter      (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
1549       PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,aks=0.895)
1550       PARAMETER      (AA1=1.26,APHI=1.02,AP1=0.13496)
1551       parameter            (maxx=20,maxz=24)
1552       parameter            (rrkk=0.6,prkk=0.3,srhoks=5.,ESBIN=0.04)
1553       DIMENSION MASSRN(0:MAXR),RT(3,MAXSTR),PT(3,MAXSTR),ET(MAXSTR)
1554       DIMENSION LT(MAXSTR), PROT(MAXSTR)
1555       COMMON   /AA/  R(3,MAXSTR)
1556 cc      SAVE /AA/
1557       COMMON   /BB/  P(3,MAXSTR)
1558 cc      SAVE /BB/
1559       COMMON   /CC/  E(MAXSTR)
1560 cc      SAVE /CC/
1561       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
1562      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
1563      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
1564 cc      SAVE /DD/
1565       COMMON   /EE/  ID(MAXSTR),LB(MAXSTR)
1566 cc      SAVE /EE/
1567       COMMON   /HH/  PROPER(MAXSTR)
1568 cc      SAVE /HH/
1569       common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
1570 cc      SAVE /ff/
1571       common   /gg/  dx,dy,dz,dpx,dpy,dpz
1572 cc      SAVE /gg/
1573       COMMON   /INPUT/ NSTAR,NDIRCT,DIR
1574 cc      SAVE /INPUT/
1575       COMMON   /NN/NNN
1576 cc      SAVE /NN/
1577       COMMON   /RR/  MASSR(0:MAXR)
1578 cc      SAVE /RR/
1579       common   /ss/  inout(20)
1580 cc      SAVE /ss/
1581       COMMON   /BG/BETAX,BETAY,BETAZ,GAMMA
1582 cc      SAVE /BG/
1583       COMMON   /RUN/NUM
1584 cc      SAVE /RUN/
1585       COMMON   /PA/RPION(3,MAXSTR,MAXR)
1586 cc      SAVE /PA/
1587       COMMON   /PB/PPION(3,MAXSTR,MAXR)
1588 cc      SAVE /PB/
1589       COMMON   /PC/EPION(MAXSTR,MAXR)
1590 cc      SAVE /PC/
1591       COMMON   /PD/LPION(MAXSTR,MAXR)
1592 cc      SAVE /PD/
1593       COMMON   /PE/PROPI(MAXSTR,MAXR)
1594 cc      SAVE /PE/
1595       COMMON   /KKK/TKAON(7),EKAON(7,0:2000)
1596 cc      SAVE /KKK/
1597       COMMON  /KAON/    AK(3,50,36),SPECK(50,36,7),MF
1598 cc      SAVE /KAON/
1599       COMMON/TABLE/ xarray(0:1000),earray(0:1000)
1600 cc      SAVE /TABLE/
1601       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
1602 cc      SAVE /input1/
1603       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
1604      1 px1n,py1n,pz1n,dp1n
1605 cc      SAVE /leadng/
1606       COMMON/tdecay/tfdcy(MAXSTR),tfdpi(MAXSTR,MAXR),tft(MAXSTR)
1607 cc      SAVE /tdecay/
1608       common /lastt/itimeh,bimp 
1609 cc      SAVE /lastt/
1610 c
1611       COMMON/ppbmas/niso(15),nstate,ppbm(15,2),thresh(15),weight(15)
1612 cc      SAVE /ppbmas/
1613       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
1614 cc      SAVE /ppb1/
1615       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
1616 cc      SAVE /ppmm/
1617       COMMON/hbt/lblast(MAXSTR),xlast(4,MAXSTR),plast(4,MAXSTR),nlast
1618 cc      SAVE /hbt/
1619       common/resdcy/NSAV,iksdcy
1620 cc      SAVE /resdcy/
1621       COMMON/RNDF77/NSEED
1622 cc      SAVE /RNDF77/
1623       COMMON/FTMAX/ftsv(MAXSTR),ftsvt(MAXSTR, MAXR)
1624       dimension ftpisv(MAXSTR,MAXR),fttemp(MAXSTR)
1625       common /dpi/em2,lb2
1626       common/phidcy/iphidcy,pttrig,ntrig,maxmiss,ipi0dcy
1627 clin-5/2008:
1628       DIMENSION dptemp(MAXSTR)
1629       common /para8/ idpert,npertd,idxsec
1630       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
1631      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
1632      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
1633 c
1634       real zet(-45:45)
1635       SAVE   
1636       data zet /
1637      4     1.,0.,0.,0.,0.,
1638      3     1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
1639      2     -1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
1640      1     0.,0.,0.,-1.,0.,1.,0.,-1.,0.,-1.,
1641      s     0.,-2.,-1.,0.,1.,0.,0.,0.,0.,-1.,
1642      e     0.,
1643      s     1.,0.,-1.,0.,1.,-1.,0.,1.,2.,0.,
1644      1     1.,0.,1.,0.,-1.,0.,1.,0.,0.,0.,
1645      2     -1.,0.,1.,0.,-1.,0.,1.,0.,0.,1.,
1646      3     0.,0.,0.,0.,0.,0.,0.,0.,0.,-1.,
1647      4     0.,0.,0.,0.,-1./
1648 
1649 clin-2/19/03 initialize n and nsav for resonance decay at each timestep
1650 c     in order to prevent integer overflow:
1651       call inidcy
1652 
1653 c OFF skip ART collisions to reproduce HJ:      
1654 cc       if(nt.ne.ntmax) return
1655 
1656 clin-11/07/00 rrkk is assumed to be 0.6mb(default) for mm->KKbar 
1657 c     with m=rho or omega, estimated from Ko's paper:
1658 c      rrkk=0.6
1659 c prkk: cross section of pi (rho or omega) -> K* Kbar (AND) K*bar K:
1660 c      prkk=0.3
1661 c     cross section in mb for (rho or omega) K* -> pi K:
1662 c      srhoks=5.
1663 clin-11/07/00-end
1664 c      ESBIN=0.04
1665       RESONA=5.
1666 *-----------------------------------------------------------------------
1667 *     INITIALIZATION OF COUNTING VARIABLES
1668       NODELT=0
1669       SUMSRT =0.
1670       LCOLL  = 0
1671       LBLOC  = 0
1672       LCNNE  = 0
1673       LDD  = 0
1674       LPP  = 0
1675       lpd  = 0
1676       lpdr=0
1677       lrho = 0
1678       lrhor=0
1679       lomega=0
1680       lomgar=0
1681       LPN  = 0
1682       LKN  = 0
1683       LNNK = 0
1684       LDDK = 0
1685       LNDK = 0
1686       lppk =0
1687       LCNND  = 0
1688       LCNDN  = 0
1689       LDIRT  = 0
1690       LDECAY = 0
1691       LRES   = 0
1692       Ldou   = 0
1693       LDDRHO = 0
1694       LNNRHO = 0
1695       LNNOM  = 0
1696       MSUM   = 0
1697       MASSRN(0)=0
1698 * COM: MSUM IS USED TO COUNT THE TOTAL NO. OF PARTICLES 
1699 *      IN PREVIOUS IRUN-1 RUNS
1700 * KAON COUNTERS
1701       DO 1002 IL=1,5
1702          TKAON(IL)=0
1703          DO 1001 IS=1,2000
1704             EKAON(IL,IS)=0
1705  1001    CONTINUE
1706  1002 CONTINUE
1707 c sp 12/19/00
1708       DO 1004 i =1,NUM
1709          DO 1003 j =1,MAXSTR
1710             PROPI(j,i) = 1.
1711  1003    CONTINUE
1712  1004 CONTINUE
1713       
1714       do 1102 i=1,maxstr
1715          fttemp(i)=0.
1716          do 1101 irun=1,maxr
1717             ftpisv(i,irun)=0.
1718  1101    continue
1719  1102 continue
1720 
1721 c sp 12/19/00 end
1722       sp=0
1723 * antikaon counters
1724       akaon=0
1725       sk=0
1726 *-----------------------------------------------------------------------
1727 *     LOOP OVER ALL PARALLEL RUNS
1728 cbz11/17/98
1729 c      MASS=MASSPR+MASSTA
1730       MASS = 0
1731 cbz11/17/98end
1732       DO 1000 IRUN = 1,NUM
1733          NNN=0
1734          MSUM=MSUM+MASSR(IRUN-1)
1735 *     LOOP OVER ALL PSEUDOPARTICLES 1 IN THE SAME RUN
1736          J10=2
1737          IF(NT.EQ.NTMAX)J10=1
1738 c
1739 ctest off skips the check of energy conservation after each timestep:
1740 c         enetot=0.
1741 c         do ip=1,MASSR(IRUN)
1742 c            if(e(ip).ne.0.or.lb(ip).eq.10022) enetot=enetot
1743 c     1           +sqrt(p(1,ip)**2+p(2,ip)**2+p(3,ip)**2+e(ip)**2)
1744 c         enddo
1745 c         write(91,*) 'A:',nt,enetot,massr(irun),bimp 
1746 
1747          DO 800 J1 = J10,MASSR(IRUN)
1748             I1  = J1 + MSUM
1749 * E(I)=0 are for pions having been absorbed or photons which do not enter here:
1750 clin-4/2012 option of pi0 decays:
1751 c            IF(E(I1).EQ.0.)GO TO 800
1752             IF(E(I1).EQ.0.)GO TO 798
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 clin-4/2012 option of pi0 decays:
1757 c            IF (LB(I1) .LT. -45 .OR. LB(I1) .GT. 45) GOTO 800
1758             IF (LB(I1) .LT. -45 .OR. LB(I1) .GT. 45) GOTO 798
1759             X1  = R(1,I1)
1760             Y1  = R(2,I1)
1761             Z1  = R(3,I1)
1762             PX1 = P(1,I1)
1763             PY1 = P(2,I1)
1764             PZ1 = P(3,I1)
1765             EM1 = E(I1)
1766             am1= em1
1767             E1  = SQRT( EM1**2 + PX1**2 + PY1**2 + PZ1**2 )
1768             ID1 = ID(I1)
1769             LB1 = LB(I1)
1770 
1771 c     generate k0short and k0long from K+ and K- at the last timestep:
1772             if(nt.eq.ntmax.and.(lb1.eq.21.or.lb1.eq.23)) then
1773                pk0=RANART(NSEED)
1774                if(pk0.lt.0.25) then
1775                   LB(I1)=22
1776                elseif(pk0.lt.0.50) then
1777                   LB(I1)=24
1778                endif
1779                LB1=LB(I1)
1780             endif
1781             
1782 clin-8/07/02 these particles don't decay strongly, so skip decay routines:     
1783 c            IF( (lb1.ge.-2.and.lb1.le.5) .OR. lb1.eq.31 .OR.
1784 c     &           (iabs(lb1).ge.14.and.iabs(lb1).le.24) .OR.
1785 c     &           (iabs(lb1).ge.40.and.iabs(lb1).le.45) .or. 
1786 c     &           lb1.eq.31)GO TO 1 
1787 c     only decay K0short when iksdcy=1:
1788             if(lb1.eq.0.or.lb1.eq.25.or.lb1.eq.26.or.lb1.eq.27
1789      &           .or.lb1.eq.28.or.lb1.eq.29.or.iabs(lb1).eq.30
1790      &           .or.(iabs(lb1).ge.6.and.iabs(lb1).le.13)
1791      &           .or.(iksdcy.eq.1.and.lb1.eq.24)
1792      &           .or.iabs(lb1).eq.16
1793      &           .or.(ipi0dcy.eq.1.and.nt.eq.ntmax.and.lb1.eq.4)) then
1794 clin-4/2012-above for option of pi0 decay:
1795 c     &           .or.iabs(lb1).eq.16) then
1796                continue
1797             else
1798                goto 1
1799             endif
1800 * IF I1 IS A RESONANCE, CHECK WHETHER IT DECAYS DURING THIS TIME STEP
1801          IF(lb1.ge.25.and.lb1.le.27) then
1802              wid=0.151
1803          ELSEIF(lb1.eq.28) then
1804              wid=0.00841
1805          ELSEIF(lb1.eq.29) then
1806              wid=0.00443
1807           ELSEIF(iabs(LB1).eq.30) then
1808              WID=0.051
1809          ELSEIF(lb1.eq.0) then
1810              wid=1.18e-6
1811 c     to give K0short ct0=2.676cm:
1812          ELSEIF(iksdcy.eq.1.and.lb1.eq.24) then
1813              wid=7.36e-15
1814 clin-4/29/03 add Sigma0 decay to Lambda, ct0=2.22E-11m:
1815          ELSEIF(iabs(lb1).eq.16) then
1816              wid=8.87e-6
1817 csp-07/25/01 test a1 resonance:
1818 cc          ELSEIF(LB1.EQ.32) then
1819 cc             WID=0.40
1820           ELSEIF(LB1.EQ.32) then
1821              call WIDA1(EM1,rhomp,WID,iseed)
1822           ELSEIF(iabs(LB1).ge.6.and.iabs(LB1).le.9) then
1823              WID=WIDTH(EM1)
1824           ELSEIF((iabs(LB1).EQ.10).OR.(iabs(LB1).EQ.11)) then
1825              WID=W1440(EM1)
1826           ELSEIF((iabs(LB1).EQ.12).OR.(iabs(LB1).EQ.13)) then
1827              WID=W1535(EM1)
1828 clin-4/2012 for option of pi0 decay:
1829           ELSEIF(ipi0dcy.eq.1.and.nt.eq.ntmax.and.lb1.eq.4) then
1830              wid=7.85e-9
1831           ENDIF
1832 
1833 * if it is the last time step, FORCE all resonance to strong-decay
1834 * and go out of the loop
1835           if(nt.eq.ntmax)then
1836              pdecay=1.1
1837 clin-5b/2008 forbid phi decay at the end of hadronic cascade:
1838              if(iphidcy.eq.0.and.iabs(LB1).eq.29) pdecay=0.
1839 ctest off clin-9/2012 forbid long-time decays (eta,omega,K*,Sigma0)
1840 c     at the end of hadronic cascade to analyze freezeout time:
1841 c             if(LB1.eq.0.or.LB1.eq.28.or.iabs(LB1).eq.30
1842 c     1            .or.iabs(LB1).eq.16) pdecay=0.
1843           else
1844              T0=0.19733/WID
1845              GFACTR=E1/EM1
1846              T0=T0*GFACTR
1847              IF(T0.GT.0.)THEN
1848                 PDECAY=1.-EXP(-DT/T0)
1849              ELSE
1850                 PDECAY=0.
1851              ENDIF
1852           endif
1853           XDECAY=RANART(NSEED)
1854 
1855 cc dilepton production from rho0, omega, phi decay 
1856 cc        if(lb1.eq.26 .or. lb1.eq.28 .or. lb1.eq.29)
1857 cc     &   call dec_ceres(nt,ntmax,irun,i1)
1858 cc
1859           IF(XDECAY.LT.PDECAY) THEN
1860 clin-10/25/02 get rid of argument usage mismatch in rhocay():
1861              idecay=irun
1862              tfnl=nt*dt
1863 clin-10/28/03 keep formation time of hadrons unformed at nt=ntmax-1:
1864              if(nt.eq.ntmax.and.ftsv(i1).gt.((ntmax-1)*dt)) 
1865      1            tfnl=ftsv(i1)
1866              xfnl=x1
1867              yfnl=y1
1868              zfnl=z1
1869 * use PYTHIA to perform decays of eta,rho,omega,phi,K*,(K0s) and Delta:
1870              if(lb1.eq.0.or.lb1.eq.25.or.lb1.eq.26.or.lb1.eq.27
1871      &           .or.lb1.eq.28.or.lb1.eq.29.or.iabs(lb1).eq.30
1872      &           .or.(iabs(lb1).ge.6.and.iabs(lb1).le.9)
1873      &           .or.(iksdcy.eq.1.and.lb1.eq.24)
1874      &           .or.iabs(lb1).eq.16
1875      &           .or.(ipi0dcy.eq.1.and.nt.eq.ntmax.and.lb1.eq.4)) then
1876 clin-4/2012 Above for option of pi0 decay:
1877 c     &           .or.iabs(lb1).eq.16) then
1878 c     previous rho decay performed in rhodecay():
1879 c                nnn=nnn+1
1880 c                call rhodecay(idecay,i1,nnn,iseed)
1881 c
1882 ctest off record decays of phi,K*,Lambda(1520) resonances:
1883 c                if(lb1.eq.29.or.iabs(lb1).eq.30) 
1884 c     1               write(18,112) 'decay',lb1,px1,py1,pz1,am1,nt
1885 c
1886 clin-4/2012 option of pi0 decays:
1887 c                call resdec(i1,nt,nnn,wid,idecay)
1888                 call resdec(i1,nt,nnn,wid,idecay,0)
1889                 p(1,i1)=px1n
1890                 p(2,i1)=py1n
1891                 p(3,i1)=pz1n
1892 clin-5/2008:
1893                 dpertp(i1)=dp1n
1894 c     add decay time to freezeout positions & time at the last timestep:
1895                 if(nt.eq.ntmax) then
1896                    R(1,i1)=xfnl
1897                    R(2,i1)=yfnl
1898                    R(3,i1)=zfnl
1899                    tfdcy(i1)=tfnl
1900                 endif
1901 c
1902 * decay number for baryon resonance or L/S decay
1903                 if(iabs(lb1).ge.6.and.iabs(lb1).le.9) then
1904                    LDECAY=LDECAY+1
1905                 endif
1906 
1907 * for a1 decay 
1908 c             elseif(lb1.eq.32)then
1909 c                NNN=NNN+1
1910 c                call a1decay(idecay,i1,nnn,iseed,rhomp)
1911 
1912 * FOR N*(1440)
1913              elseif(iabs(LB1).EQ.10.OR.iabs(LB1).EQ.11) THEN
1914                 NNN=NNN+1
1915                 LDECAY=LDECAY+1
1916                 PNSTAR=1.
1917                 IF(E(I1).GT.1.22)PNSTAR=0.6
1918                 IF(RANART(NSEED).LE.PNSTAR)THEN
1919 * (1) DECAY TO SINGLE PION+NUCLEON
1920                    CALL DECAY(idecay,I1,NNN,ISEED,wid,nt)
1921                 ELSE
1922 * (2) DECAY TO TWO PIONS + NUCLEON
1923                    CALL DECAY2(idecay,I1,NNN,ISEED,wid,nt)
1924                    NNN=NNN+1
1925                 ENDIF
1926 c for N*(1535) decay
1927              elseif(iabs(LB1).eq.12.or.iabs(LB1).eq.13) then
1928                 NNN=NNN+1
1929                 CALL DECAY(idecay,I1,NNN,ISEED,wid,nt)
1930                 LDECAY=LDECAY+1
1931              endif
1932 c
1933 *COM: AT HIGH ENERGIES WE USE VERY SHORT TIME STEPS,
1934 *     IN ORDER TO TAKE INTO ACCOUNT THE FINITE FORMATIOM TIME, WE
1935 *     DO NOT ALLOW PARTICLES FROM THE DECAY OF RESONANCE TO INTERACT 
1936 *     WITH OTHERS IN THE SAME TIME STEP. CHANGE 9000 TO REVERSE THIS 
1937 *     ASSUMPTION. EFFECTS OF THIS ASSUMPTION CAN BE STUDIED BY CHANGING 
1938 *     THE STATEMENT OF 9000. See notebook for discussions on effects of
1939 *     changing statement 9000.
1940 c
1941 c     kaons from K* decay are converted to k0short (and k0long), 
1942 c     phi decay may produce rho, K0S or eta, N*(1535) decay may produce eta,
1943 c     and these decay daughters need to decay again if at the last timestep:
1944 c     (note: these daughters have been assigned to lb(i1) only, not to lpion)
1945 c             if(nt.eq.ntmax.and.(lb1.eq.29.or.iabs(lb1).eq.30
1946 c     1            .iabs(lb1).eq.12.or.iabs(lb1).eq.13)) then
1947              if(nt.eq.ntmax) then
1948                 if(lb(i1).eq.25.or.lb(i1).eq.26.or.lb(i1).eq.27) then
1949                    wid=0.151
1950                 elseif(lb(i1).eq.0) then
1951                    wid=1.18e-6
1952                 elseif(lb(i1).eq.24.and.iksdcy.eq.1) then
1953 clin-4/2012 corrected K0s decay width:
1954 c                   wid=7.36e-17
1955                    wid=7.36e-15
1956 clin-4/2012 option of pi0 decays:
1957                 elseif(ipi0dcy.eq.1.and.lb(i1).eq.4) then
1958                    wid=7.85e-9
1959                 else
1960                    goto 9000
1961                 endif
1962                 LB1=LB(I1)
1963                 PX1=P(1,I1)
1964                 PY1=P(2,I1)
1965                 PZ1=P(3,I1)
1966                 EM1=E(I1)
1967                 E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
1968 clin-4/2012 option of pi0 decays:
1969 c                call resdec(i1,nt,nnn,wid,idecay)
1970                 call resdec(i1,nt,nnn,wid,idecay,0)
1971                 p(1,i1)=px1n
1972                 p(2,i1)=py1n
1973                 p(3,i1)=pz1n
1974                 R(1,i1)=xfnl
1975                 R(2,i1)=yfnl
1976                 R(3,i1)=zfnl
1977                 tfdcy(i1)=tfnl
1978 clin-5/2008:
1979                 dpertp(i1)=dp1n
1980              endif
1981 
1982 c     Decay daughter of the above decay in lb(i1) may be a pi0:
1983              if(nt.eq.ntmax.and.ipi0dcy.eq.1.and.lb(i1).eq.4) then
1984                 wid=7.85e-9
1985                 LB1=LB(I1)
1986                 PX1=P(1,I1)
1987                 PY1=P(2,I1)
1988                 PZ1=P(3,I1)
1989                 EM1=E(I1)
1990                 E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
1991                 call resdec(i1,nt,nnn,wid,idecay,0)
1992                 p(1,i1)=px1n
1993                 p(2,i1)=py1n
1994                 p(3,i1)=pz1n
1995                 R(1,i1)=xfnl
1996                 R(2,i1)=yfnl
1997                 R(3,i1)=zfnl
1998                 tfdcy(i1)=tfnl
1999                 dpertp(i1)=dp1n
2000              endif
2001 
2002 * negelecting the Pauli blocking at high energies
2003 clin-4/2012 option of pi0 decays:
2004 c 9000        go to 800
2005  9000        go to 798
2006 
2007           ENDIF
2008 * LOOP OVER ALL PSEUDOPARTICLES 2 IN THE SAME RUN
2009 * SAVE ALL THE COORDINATES FOR POSSIBLE CHANGE IN THE FOLLOWING COLLISION
2010 clin-4/2012 option of pi0 decays:
2011 c 1        if(nt.eq.ntmax)go to 800
2012  1        if(nt.eq.ntmax)go to 798
2013 
2014           X1 = R(1,I1)
2015           Y1 = R(2,I1)
2016           Z1 = R(3,I1)
2017 c
2018            DO 600 J2 = 1,J1-1
2019             I2  = J2 + MSUM
2020 * IF I2 IS A MESON BEING ABSORBED, THEN GO OUT OF THE LOOP
2021             IF(E(I2).EQ.0.) GO TO 600
2022 clin-5/2008 in case the first particle is already destroyed:
2023             IF(E(I1).EQ.0.) GO TO 800
2024 clin-4/2012 option of pi0 decays:
2025             IF (LB(I2) .LT. -45 .OR. LB(I2) .GT. 45) GOTO 600
2026 clin-7/26/03 improve speed
2027             X2=R(1,I2)
2028             Y2=R(2,I2)
2029             Z2=R(3,I2)
2030             dr0max=5.
2031 clin-9/2008 deuteron+nucleon elastic cross sections could reach ~2810mb:
2032             ilb1=iabs(LB(I1))
2033             ilb2=iabs(LB(I2))
2034             IF(ilb1.EQ.42.or.ilb2.EQ.42) THEN
2035                if((ILB1.GE.1.AND.ILB1.LE.2)
2036      1              .or.(ILB1.GE.6.AND.ILB1.LE.13)
2037      2              .or.(ILB2.GE.1.AND.ILB2.LE.2)
2038      3              .or.(ILB2.GE.6.AND.ILB2.LE.13)) then
2039                   if((lb(i1)*lb(i2)).gt.0) dr0max=10.
2040                endif
2041             ENDIF
2042 c
2043             if(((X1-X2)**2+(Y1-Y2)**2+(Z1-Z2)**2).GT.dr0max**2)
2044      1           GO TO 600
2045             IF (ID(I1)*ID(I2).EQ.IAVOID) GOTO 400
2046             ID1=ID(I1)
2047             ID2 = ID(I2)
2048 c
2049             ix1= nint(x1/dx)
2050             iy1= nint(y1/dy)
2051             iz1= nint(z1/dz)
2052             PX1=P(1,I1)
2053             PY1=P(2,I1)
2054             PZ1=P(3,I1)
2055             EM1=E(I1)
2056             AM1=EM1
2057             LB1=LB(I1)
2058             E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
2059             IPX1=NINT(PX1/DPX)
2060             IPY1=NINT(PY1/DPY)
2061             IPZ1=NINT(PZ1/DPZ)         
2062             LB2 = LB(I2)
2063             PX2 = P(1,I2)
2064             PY2 = P(2,I2)
2065             PZ2 = P(3,I2)
2066             EM2=E(I2)
2067             AM2=EM2
2068             lb1i=lb(i1)
2069             lb2i=lb(i2)
2070             px1i=P(1,I1)
2071             py1i=P(2,I1)
2072             pz1i=P(3,I1)
2073             em1i=E(I1)
2074             px2i=P(1,I2)
2075             py2i=P(2,I2)
2076             pz2i=P(3,I2)
2077             em2i=E(I2)
2078 clin-2/26/03 ctest off check energy conservation after each binary search:
2079             eini=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
2080      1           +SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
2081             pxini=P(1,I1)+P(1,I2)
2082             pyini=P(2,I1)+P(2,I2)
2083             pzini=P(3,I1)+P(3,I2)
2084             nnnini=nnn
2085 c
2086 clin-4/30/03 initialize value:
2087             iblock=0
2088 c
2089 * TO SAVE COMPUTING TIME we do the following
2090 * (1) make a ROUGH estimate to see whether particle i2 will collide with
2091 * particle I1, and (2) skip the particle pairs for which collisions are 
2092 * not modeled in the code.
2093 * FOR MESON-BARYON AND MESON-MESON COLLISIONS, we use a maximum 
2094 * interaction distance DELTR0=2.6
2095 * for ppbar production from meson (pi rho omega) interactions:
2096 c
2097             DELTR0=3.
2098         if( (iabs(lb1).ge.14.and.iabs(lb1).le.17) .or.
2099      &      (iabs(lb1).ge.30.and.iabs(lb1).le.45) ) DELTR0=5.0
2100         if( (iabs(lb2).ge.14.and.iabs(lb2).le.17) .or.
2101      &      (iabs(lb2).ge.30.and.iabs(lb2).le.45) ) DELTR0=5.0
2102 
2103             if(lb1.eq.28.and.lb2.eq.28) DELTR0=4.84
2104 clin-10/08/00 to include pi pi -> rho rho:
2105             if((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5)) then
2106                E2=SQRT(EM2**2+PX2**2+PY2**2+PZ2**2)
2107          spipi=(e1+e2)**2-(px1+px2)**2-(py1+py2)**2-(pz1+pz2)**2
2108                if(spipi.ge.(4*0.77**2)) DELTR0=3.5
2109             endif
2110 
2111 c khyperon
2112         IF (LB1.EQ.23 .AND. (LB2.GE.14.AND.LB2.LE.17)) GOTO 3699
2113         IF (LB2.EQ.23 .AND. (LB1.GE.14.AND.LB1.LE.17)) GOTO 3699
2114 
2115 * K(K*) + Kbar(K*bar) scattering including 
2116 *     K(K*) + Kbar(K*bar) --> phi + pi(rho,omega) and pi pi(rho,omega)
2117        if(lb1.eq.21.and.lb2.eq.23)go to 3699
2118        if(lb2.eq.21.and.lb1.eq.23)go to 3699
2119        if(lb1.eq.30.and.lb2.eq.21)go to 3699
2120        if(lb2.eq.30.and.lb1.eq.21)go to 3699
2121        if(lb1.eq.-30.and.lb2.eq.23)go to 3699
2122        if(lb2.eq.-30.and.lb1.eq.23)go to 3699
2123        if(lb1.eq.-30.and.lb2.eq.30)go to 3699
2124        if(lb2.eq.-30.and.lb1.eq.30)go to 3699
2125 c
2126 clin-12/15/00
2127 c     kaon+rho(omega,eta) collisions:
2128       if(lb1.eq.21.or.lb1.eq.23) then
2129          if(lb2.eq.0.or.(lb2.ge.25.and.lb2.le.28)) then
2130             go to 3699
2131          endif
2132       elseif(lb2.eq.21.or.lb2.eq.23) then
2133          if(lb1.eq.0.or.(lb1.ge.25.and.lb1.le.28)) then
2134             goto 3699
2135          endif
2136       endif
2137 
2138 clin-8/14/02 K* (pi, rho, omega, eta) collisions:
2139       if(iabs(lb1).eq.30 .and.
2140      1     (lb2.eq.0.or.(lb2.ge.25.and.lb2.le.28)
2141      2     .or.(lb2.ge.3.and.lb2.le.5))) then
2142          go to 3699
2143       elseif(iabs(lb2).eq.30 .and.
2144      1        (lb1.eq.0.or.(lb1.ge.25.and.lb1.le.28)
2145      2        .or.(lb1.ge.3.and.lb1.le.5))) then
2146          goto 3699
2147 clin-8/14/02-end
2148 c K*/K*-bar + baryon/antibaryon collisions:
2149         elseif( iabs(lb1).eq.30 .and.
2150      1     (iabs(lb2).eq.1.or.iabs(lb2).eq.2.or.
2151      2     (iabs(lb2).ge.6.and.iabs(lb2).le.13)) )then
2152               go to 3699
2153            endif
2154          if( iabs(lb2).eq.30 .and.
2155      1         (iabs(lb1).eq.1.or.iabs(lb1).eq.2.or.
2156      2         (iabs(lb1).ge.6.and.iabs(lb1).le.13)) )then
2157                 go to 3699
2158         endif                                                              
2159 * K^+ baryons and antibaryons:
2160 c** K+ + B-bar  --> La(Si)-bar + pi
2161 * K^- and antibaryons, note K^- and baryons are included in newka():
2162 * note that we fail to satisfy charge conjugation for these cross sections:
2163         if((lb1.eq.23.or.lb1.eq.21).and.
2164      1       (iabs(lb2).eq.1.or.iabs(lb2).eq.2.or.
2165      2       (iabs(lb2).ge.6.and.iabs(lb2).le.13))) then
2166            go to 3699
2167         elseif((lb2.eq.23.or.lb2.eq.21).and.
2168      1       (iabs(lb1).eq.1.or.iabs(lb1).eq.2.or.
2169      2       (iabs(lb1).ge.6.and.iabs(lb1).le.13))) then
2170            go to 3699
2171         endif
2172 *
2173 * For anti-nucleons annihilations:
2174 * Assumptions: 
2175 * (1) for collisions involving a p_bar or n_bar,
2176 * we allow only collisions between a p_bar and a baryon or a baryon 
2177 * resonance (as well as a n_bar and a baryon or a baryon resonance),
2178 * we skip all other reactions involving a p_bar or n_bar, 
2179 * such as collisions between p_bar (n_bar) and mesons, 
2180 * and collisions between two p_bar's (n_bar's). 
2181 * (2) we introduce a new parameter rppmax: the maximum interaction 
2182 * distance to make the quick collision check,rppmax=3.57 fm 
2183 * corresponding to a cutoff of annihilation xsection= 400mb which is
2184 * also used consistently in the actual annihilation xsection to be 
2185 * used in the following as given in the subroutine xppbar(srt)
2186         rppmax=3.57   
2187 * anti-baryon on baryons
2188         if((lb1.eq.-1.or.lb1.eq.-2.or.(lb1.ge.-13.and.lb1.le.-6))
2189      1 .and.(lb2.eq.1.or.lb2.eq.2.or.(lb2.ge.6.and.lb2.le.13))) then
2190             DELTR0 = RPPMAX
2191             GOTO 2699
2192        else if((lb2.eq.-1.or.lb2.eq.-2.or.(lb2.ge.-13.and.lb2.le.-6))
2193      1 .and.(lb1.eq.1.or.lb1.eq.2.or.(lb1.ge.6.and.lb1.le.13))) then
2194             DELTR0 = RPPMAX
2195             GOTO 2699
2196          END IF
2197 
2198 c*  ((anti) lambda, cascade, omega  should not be rejected)
2199         if( (iabs(lb1).ge.14.and.iabs(lb1).le.17) .or.
2200      &      (iabs(lb2).ge.14.and.iabs(lb2).le.17) )go to 3699
2201 c
2202 clin-9/2008 maximum sigma~2810mb for deuteron+nucleon elastic collisions:
2203          IF (iabs(LB1).EQ.42.or.iabs(LB2).EQ.42) THEN
2204             ilb1=iabs(LB1)
2205             ilb2=iabs(LB2)
2206             if((ILB1.GE.1.AND.ILB1.LE.2)
2207      1           .or.(ILB1.GE.6.AND.ILB1.LE.13)
2208      2           .or.(ILB2.GE.1.AND.ILB2.LE.2)
2209      3           .or.(ILB2.GE.6.AND.ILB2.LE.13)) then
2210                if((lb1*lb2).gt.0) deltr0=9.5
2211             endif
2212          ENDIF
2213 c
2214         if( (iabs(lb1).ge.40.and.iabs(lb1).le.45) .or. 
2215      &      (iabs(lb2).ge.40.and.iabs(lb2).le.45) )go to 3699
2216 c
2217 c* phi channel --> elastic + inelastic scatt.  
2218          IF( (lb1.eq.29 .and.((lb2.ge.1.and.lb2.le.13).or.  
2219      &       (lb2.ge.21.and.lb2.le.28).or.iabs(lb2).eq.30)) .OR.
2220      &     (lb2.eq.29 .and.((lb1.ge.1.and.lb1.le.13).or.
2221      &       (lb1.ge.21.and.lb1.le.28).or.iabs(lb1).eq.30)) )THEN
2222              DELTR0=3.0
2223              go to 3699
2224         endif
2225 c
2226 c  La/Si, Cas, Om (bar)-meson elastic colln
2227 * pion vs. La & Ca (bar) coll. are treated in resp. subroutines
2228 
2229 * SKIP all other K* RESCATTERINGS
2230         If(iabs(lb1).eq.30.or.iabs(lb2).eq.30) go to 400
2231 * SKIP KAON(+) RESCATTERINGS WITH particles other than pions and baryons 
2232          If(lb1.eq.23.and.(lb2.lt.1.or.lb2.gt.17))go to 400
2233          If(lb2.eq.23.and.(lb1.lt.1.or.lb1.gt.17))go to 400
2234 c
2235 c anti-baryon proccess: B-bar+M, N-bar+R-bar, N-bar+N-bar, R-bar+R-bar
2236 c  R = (D,N*)
2237          if( ((lb1.le.-1.and.lb1.ge.-13)
2238      &        .and.(lb2.eq.0.or.(lb2.ge.3.and.lb2.le.5)
2239      &            .or.(lb2.ge.25.and.lb2.le.28))) 
2240      &      .OR.((lb2.le.-1.and.lb2.ge.-13)
2241      &         .and.(lb1.eq.0.or.(lb1.ge.3.and.lb1.le.5)
2242      &              .or.(lb1.ge.25.and.lb1.le.28))) ) then
2243          elseIF( ((LB1.eq.-1.or.lb1.eq.-2).
2244      &             and.(LB2.LT.-5.and.lb2.ge.-13))
2245      &      .OR. ((LB2.eq.-1.or.lb2.eq.-2).
2246      &             and.(LB1.LT.-5.and.lb1.ge.-13)) )then
2247          elseIF((LB1.eq.-1.or.lb1.eq.-2)
2248      &     .AND.(LB2.eq.-1.or.lb2.eq.-2))then
2249          elseIF((LB1.LT.-5.and.lb1.ge.-13).AND.
2250      &          (LB2.LT.-5.and.lb2.ge.-13)) then
2251 c        elseif((lb1.lt.0).or.(lb2.lt.0)) then
2252 c         go to 400
2253        endif               
2254 
2255  2699    CONTINUE
2256 * for baryon-baryon collisions
2257          IF (LB1 .EQ. 1 .OR. LB1 .EQ. 2 .OR. (LB1 .GE. 6 .AND.
2258      &        LB1 .LE. 17)) THEN
2259             IF (LB2 .EQ. 1 .OR. LB2 .EQ. 2 .OR. (LB2 .GE. 6 .AND.
2260      &           LB2 .LE. 17)) THEN
2261                DELTR0 = 2.
2262             END IF
2263          END IF
2264 c
2265  3699   RSQARE = (X1-X2)**2 + (Y1-Y2)**2 + (Z1-Z2)**2
2266         IF (RSQARE .GT. DELTR0**2) GO TO 400
2267 *NOW PARTICLES ARE CLOSE ENOUGH TO EACH OTHER !
2268 * KEEP ALL COORDINATES FOR POSSIBLE PHASE SPACE CHANGE
2269             ix2 = nint(x2/dx)
2270             iy2 = nint(y2/dy)
2271             iz2 = nint(z2/dz)
2272             ipx2 = nint(px2/dpx)
2273             ipy2 = nint(py2/dpy)
2274             ipz2 = nint(pz2/dpz)
2275 * FIND MOMENTA OF PARTICLES IN THE CMS OF THE TWO COLLIDING PARTICLES
2276 * AND THE CMS ENERGY SRT
2277             CALL CMS(I1,I2,PCX,PCY,PCZ,SRT)
2278 
2279 clin-7/26/03 improve speed
2280           drmax=dr0max
2281           call distc0(drmax,deltr0,DT,
2282      1         Ifirst,PCX,PCY,PCZ,
2283      2         x1,y1,z1,px1,py1,pz1,em1,x2,y2,z2,px2,py2,pz2,em2)
2284           if(Ifirst.eq.-1) goto 400
2285 
2286          ISS=NINT(SRT/ESBIN)
2287 clin-4/2008 use last bin if ISS is out of EKAON's upper bound of 2000:
2288          if(ISS.gt.2000) ISS=2000
2289 *Sort collisions
2290 c
2291 clin-8/2008 Deuteron+Meson->B+B; 
2292 c     meson=(pi,rho,omega,eta), B=(n,p,Delta,N*1440,N*1535):
2293          IF (iabs(LB1).EQ.42.or.iabs(LB2).EQ.42) THEN
2294             ilb1=iabs(LB1)
2295             ilb2=iabs(LB2)
2296             if(LB1.eq.0.or.(LB1.GE.3.AND.LB1.LE.5)
2297      1           .or.(LB1.GE.25.AND.LB1.LE.28)
2298      2           .or.
2299      3           LB2.eq.0.or.(LB2.GE.3.AND.LB2.LE.5)
2300      4           .or.(LB2.GE.25.AND.LB2.LE.28)) then
2301                GOTO 505
2302 clin-9/2008 Deuteron+Baryon or antiDeuteron+antiBaryon elastic collisions:
2303             elseif(((ILB1.GE.1.AND.ILB1.LE.2)
2304      1              .or.(ILB1.GE.6.AND.ILB1.LE.13)
2305      2              .or.(ILB2.GE.1.AND.ILB2.LE.2)
2306      3              .or.(ILB2.GE.6.AND.ILB2.LE.13))
2307      4              .and.(lb1*lb2).gt.0) then
2308                GOTO 506
2309             else
2310                GOTO 400
2311             endif
2312          ENDIF
2313 c
2314 * K+ + (N,N*,D)-bar --> L/S-bar + pi
2315           if( ((lb1.eq.23.or.lb1.eq.30).and.
2316      &         (lb2.eq.-1.or.lb2.eq.-2.or.(lb2.ge.-13.and.lb2.le.-6))) 
2317      &         .OR.((lb2.eq.23.or.lb2.eq.30).and.
2318      &         (lb1.eq.-1.or.lb1.eq.-2.or.(lb1.ge.-13.and.lb1.le.-6))) )
2319      &         then
2320              bmass=0.938
2321              if(srt.le.(bmass+aka)) then
2322                 pkaon=0.
2323              else
2324                 pkaon=sqrt(((srt**2-(aka**2+bmass**2))
2325      1               /2./bmass)**2-aka**2)
2326              endif
2327 clin-10/31/02 cross sections are isospin-averaged, same as those in newka
2328 c     for K- + (N,N*,D) --> L/S + pi:
2329              sigela = 0.5 * (AKPEL(PKAON) + AKNEL(PKAON))
2330              SIGSGM = 1.5 * AKPSGM(PKAON) + AKNSGM(PKAON)
2331              SIG = sigela + SIGSGM + AKPLAM(PKAON)
2332              if(sig.gt.1.e-7) then
2333 c     ! K+ + N-bar reactions
2334                 icase=3
2335                 brel=sigela/sig
2336                 brsgm=sigsgm/sig
2337                 brsig = sig
2338                 nchrg = 1
2339                 go to 3555
2340              endif
2341              go to 400
2342           endif
2343 c
2344 c
2345 c  meson + hyperon-bar -> K+ + N-bar
2346           if(((lb1.ge.-17.and.lb1.le.-14).and.(lb2.ge.3.and.lb2.le.5)) 
2347      &         .OR.((lb2.ge.-17.and.lb2.le.-14)
2348      &         .and.(lb1.ge.3.and.lb1.le.5)))then
2349              nchrg=-100
2350  
2351 C*       first classify the reactions due to total charge.
2352              if((lb1.eq.-15.and.(lb2.eq.5.or.lb2.eq.27)).OR.
2353      &            (lb2.eq.-15.and.(lb1.eq.5.or.lb1.eq.27))) then
2354                 nchrg=-2
2355 c     ! D-(bar)
2356                 bmass=1.232
2357                 go to 110
2358              endif
2359              if( (lb1.eq.-15.and.(lb2.eq.0.or.lb2.eq.4.or.lb2.eq.26.or.
2360      &            lb2.eq.28)).OR.(lb2.eq.-15.and.(lb1.eq.0.or.
2361      &            lb1.eq.4.or.lb1.eq.26.or.lb1.eq.28)).OR.
2362      &   ((lb1.eq.-14.or.lb1.eq.-16).and.(lb2.eq.5.or.lb2.eq.27)).OR.
2363      &   ((lb2.eq.-14.or.lb2.eq.-16).and.(lb1.eq.5.or.lb1.eq.27)) )then
2364                 nchrg=-1
2365 c     ! n-bar
2366                 bmass=0.938
2367                 go to 110
2368              endif
2369              if(  (lb1.eq.-15.and.(lb2.eq.3.or.lb2.eq.25)).OR.
2370      &            (lb2.eq.-15.and.(lb1.eq.3.or.lb1.eq.25)).OR.
2371      &            (lb1.eq.-17.and.(lb2.eq.5.or.lb2.eq.27)).OR.
2372      &            (lb2.eq.-17.and.(lb1.eq.5.or.lb1.eq.27)).OR.
2373      &            ((lb1.eq.-14.or.lb1.eq.-16).and.(lb2.eq.0.or.lb2.eq.4
2374      &            .or.lb2.eq.26.or.lb2.eq.28)).OR.
2375      &            ((lb2.eq.-14.or.lb2.eq.-16).and.(lb1.eq.0.or.lb1.eq.4
2376      &            .or.lb1.eq.26.or.lb1.eq.28)) )then
2377                nchrg=0
2378 c     ! p-bar
2379                 bmass=0.938
2380                 go to 110
2381              endif
2382              if( (lb1.eq.-17.and.(lb2.eq.0.or.lb2.eq.4.or.lb2.eq.26.or.
2383      &            lb2.eq.28)).OR.(lb2.eq.-17.and.(lb1.eq.0.or.
2384      &            lb1.eq.4.or.lb1.eq.26.or.lb1.eq.28)).OR.
2385      &  ((lb1.eq.-14.or.lb1.eq.-16).and.(lb2.eq.3.or.lb2.eq.25)).OR.
2386      &  ((lb2.eq.-14.or.lb2.eq.-16).and.(lb1.eq.3.or.lb1.eq.25)))then
2387                nchrg=1
2388 c     ! D++(bar)
2389                 bmass=1.232
2390              endif
2391 c
2392 c 110     if(nchrg.ne.-100.and.srt.ge.(aka+bmass))then !! for elastic
2393  110         sig = 0.
2394 c !! for elastic
2395          if(nchrg.ne.-100.and.srt.ge.(aka+bmass))then
2396 cc110        if(nchrg.eq.-100.or.srt.lt.(aka+bmass)) go to 400
2397 c             ! PI + La(Si)-bar => K+ + N-bar reactions
2398             icase=4
2399 cc       pkaon=sqrt(((srt**2-(aka**2+bmass**2))/2./bmass)**2-aka**2)
2400             pkaon=sqrt(((srt**2-(aka**2+0.938**2))/2./0.938)**2-aka**2)
2401 c ! lambda-bar + Pi
2402             if(lb1.eq.-14.or.lb2.eq.-14) then
2403                if(nchrg.ge.0) sigma0=akPlam(pkaon)
2404                if(nchrg.lt.0) sigma0=akNlam(pkaon)
2405 c                ! sigma-bar + pi
2406             else
2407 c !K-p or K-D++
2408                if(nchrg.ge.0) sigma0=akPsgm(pkaon)
2409 c !K-n or K-D-
2410                if(nchrg.lt.0) sigma0=akNsgm(pkaon)
2411                SIGMA0 = 1.5 * AKPSGM(PKAON) + AKNSGM(PKAON)
2412             endif
2413             sig=(srt**2-(aka+bmass)**2)*(srt**2-(aka-bmass)**2)/
2414      &           (srt**2-(em1+em2)**2)/(srt**2-(em1-em2)**2)*sigma0
2415 c ! K0barD++, K-D-
2416             if(nchrg.eq.-2.or.nchrg.eq.2) sig=2.*sig
2417 C*     the factor 2 comes from spin of delta, which is 3/2
2418 C*     detailed balance. copy from Page 423 of N.P. A614 1997
2419             IF (LB1 .EQ. -14 .OR. LB2 .EQ. -14) THEN
2420                SIG = 4.0 / 3.0 * SIG
2421             ELSE IF (NCHRG .EQ. -2 .OR. NCHRG .EQ. 2) THEN
2422                SIG = 8.0 / 9.0 * SIG
2423             ELSE
2424                SIG = 4.0 / 9.0 * SIG
2425             END IF
2426 cc        brel=0.
2427 cc        brsgm=0.
2428 cc        brsig = sig
2429 cc          if(sig.lt.1.e-7) go to 400
2430 *-
2431          endif
2432 c                ! PI + La(Si)-bar => elastic included
2433          icase=4
2434          sigela = 10.
2435          sig = sig + sigela
2436          brel= sigela/sig
2437          brsgm=0.
2438          brsig = sig
2439 *-
2440          go to 3555
2441       endif
2442       
2443 ** MULTISTRANGE PARTICLE (Cas,Omega -bar) PRODUCTION - (NON)PERTURBATIVE
2444 
2445 * K-/K*0bar + La/Si --> cascade + pi/eta
2446       if( ((lb1.eq.21.or.lb1.eq.-30).and.(lb2.ge.14.and.lb2.le.17)).OR.
2447      &  ((lb2.eq.21.or.lb2.eq.-30).and.(lb1.ge.14.and.lb1.le.17)) )then
2448           kp = 0
2449           go to 3455
2450         endif
2451 c K+/K*0 + La/Si(bar) --> cascade-bar + pi/eta
2452       if( ((lb1.eq.23.or.lb1.eq.30).and.(lb2.le.-14.and.lb2.ge.-17)).OR.
2453      &  ((lb2.eq.23.or.lb2.eq.30).and.(lb1.le.-14.and.lb1.ge.-17)) )then
2454           kp = 1
2455           go to 3455
2456         endif
2457 * K-/K*0bar + cascade --> omega + pi
2458        if( ((lb1.eq.21.or.lb1.eq.-30).and.(lb2.eq.40.or.lb2.eq.41)).OR.
2459      & ((lb2.eq.21.or.lb2.eq.-30).and.(lb1.eq.40.or.lb1.eq.41)) )then
2460           kp = 0
2461           go to 3455
2462         endif
2463 * K+/K*0 + cascade-bar --> omega-bar + pi
2464        if( ((lb1.eq.23.or.lb1.eq.30).and.(lb2.eq.-40.or.lb2.eq.-41)).OR.
2465      &  ((lb2.eq.23.or.lb2.eq.30).and.(lb1.eq.-40.or.lb1.eq.-41)) )then
2466           kp = 1
2467           go to 3455
2468         endif
2469 * Omega + Omega --> Di-Omega + photon(eta)
2470 cc        if( lb1.eq.45.and.lb2.eq.45 ) go to 3455
2471 
2472 c annhilation of cascade(bar), omega(bar)
2473          kp = 3
2474 * K- + L/S <-- cascade(bar) + pi/eta
2475        if( (((lb1.ge.3.and.lb1.le.5).or.lb1.eq.0) 
2476      &       .and.(iabs(lb2).eq.40.or.iabs(lb2).eq.41))
2477      & .OR. (((lb2.ge.3.and.lb2.le.5).or.lb2.eq.0) 
2478      &       .and.(iabs(lb1).eq.40.or.iabs(lb1).eq.41)) )go to 3455
2479 * K- + cascade(bar) <-- omega(bar) + pi
2480 *         if(  (lb1.eq.0.and.iabs(lb2).eq.45)
2481 *    &       .OR. (lb2.eq.0.and.iabs(lb1).eq.45) )go to 3455
2482         if( ((lb1.ge.3.and.lb1.le.5).and.iabs(lb2).eq.45)
2483      &  .OR.((lb2.ge.3.and.lb2.le.5).and.iabs(lb1).eq.45) )go to 3455
2484 c
2485 
2486 ***  MULTISTRANGE PARTICLE PRODUCTION  (END)
2487 
2488 c* K+ + La(Si) --> Meson + B
2489         IF (LB1.EQ.23 .AND. (LB2.GE.14.AND.LB2.LE.17)) GOTO 5699
2490         IF (LB2.EQ.23 .AND. (LB1.GE.14.AND.LB1.LE.17)) GOTO 5699
2491 c* K- + La(Si)-bar --> Meson + B-bar
2492        IF (LB1.EQ.21 .AND. (LB2.GE.-17.AND.LB2.LE.-14)) GOTO 5699
2493        IF (LB2.EQ.21 .AND. (LB1.GE.-17.AND.LB1.LE.-14)) GOTO 5699
2494 
2495 c La/Si-bar + B --> pi + K+
2496        IF( (((LB1.eq.1.or.LB1.eq.2).or.(LB1.ge.6.and.LB1.le.13))
2497      &       .AND.(LB2.GE.-17.AND.LB2.LE.-14)) .OR.
2498      &     (((LB2.eq.1.or.LB2.eq.2).or.(LB2.ge.6.and.LB2.le.13))
2499      &      .AND.(LB1.GE.-17.AND.LB1.LE.-14)) )go to 5999
2500 c La/Si + B-bar --> pi + K-
2501        IF( (((LB1.eq.-1.or.LB1.eq.-2).or.(LB1.le.-6.and.LB1.ge.-13))
2502      &       .AND.(LB2.GE.14.AND.LB2.LE.17)) .OR.
2503      &     (((LB2.eq.-1.or.LB2.eq.-2).or.(LB2.le.-6.and.LB2.ge.-13))
2504      &       .AND.(LB1.GE.14.AND.LB1.LE.17)) )go to 5999 
2505 *
2506 *
2507 * K(K*) + Kbar(K*bar) --> phi + pi(rho,omega), M + M (M=pi,rho,omega,eta)
2508        if(lb1.eq.21.and.lb2.eq.23) go to 8699
2509        if(lb2.eq.21.and.lb1.eq.23) go to 8699
2510        if(lb1.eq.30.and.lb2.eq.21) go to 8699
2511        if(lb2.eq.30.and.lb1.eq.21) go to 8699
2512        if(lb1.eq.-30.and.lb2.eq.23) go to 8699
2513        if(lb2.eq.-30.and.lb1.eq.23) go to 8699
2514        if(lb1.eq.-30.and.lb2.eq.30) go to 8699
2515        if(lb2.eq.-30.and.lb1.eq.30) go to 8699
2516 c* (K,K*)-bar + rho(omega) --> phi +(K,K*)-bar, piK and elastic
2517        IF( ((lb1.eq.23.or.lb1.eq.21.or.iabs(lb1).eq.30) .and.
2518      &      (lb2.ge.25.and.lb2.le.28)) .OR.
2519      &     ((lb2.eq.23.or.lb2.eq.21.or.iabs(lb2).eq.30) .and.
2520      &      (lb1.ge.25.and.lb1.le.28)) ) go to 8799
2521 c
2522 c* K*(-bar) + pi --> phi + (K,K*)-bar
2523        IF( (iabs(lb1).eq.30.and.(lb2.ge.3.and.lb2.le.5)) .OR.
2524      &     (iabs(lb2).eq.30.and.(lb1.ge.3.and.lb1.le.5)) )go to 8799
2525 *
2526 c
2527 c* phi + N --> pi+N(D),  rho+N(D),  K+ +La
2528 c* phi + D --> pi+N(D),  rho+N(D)
2529        IF( (lb1.eq.29 .and.(lb2.eq.1.or.lb2.eq.2.or.
2530      &       (lb2.ge.6.and.lb2.le.9))) .OR.
2531      &     (lb2.eq.29 .and.(lb1.eq.1.or.lb1.eq.2.or.
2532      &       (lb1.ge.6.and.lb1.le.9))) )go to 7222
2533 c
2534 c* phi + (pi,rho,ome,K,K*-bar) --> K+K, K+K*, K*+K*, (pi,rho,omega)+(K,K*-bar)
2535        IF( (lb1.eq.29 .and.((lb2.ge.3.and.lb2.le.5).or.
2536      &      (lb2.ge.21.and.lb2.le.28).or.iabs(lb2).eq.30)) .OR.
2537      &     (lb2.eq.29 .and.((lb1.ge.3.and.lb1.le.5).or.
2538      &      (lb1.ge.21.and.lb1.le.28).or.iabs(lb1).eq.30)) )THEN
2539              go to 7444
2540       endif
2541 *
2542 c
2543 * La/Si, Cas, Om (bar)-(rho,omega,phi) elastic colln
2544 * pion vs. La, Ca, Omega-(bar) elastic coll. treated in resp. subroutines
2545       if( ((iabs(lb1).ge.14.and.iabs(lb1).le.17).or.iabs(lb1).ge.40)
2546      &    .and.((lb2.ge.25.and.lb2.le.29).or.lb2.eq.0) )go to 888
2547       if( ((iabs(lb2).ge.14.and.iabs(lb2).le.17).or.iabs(lb2).ge.40)
2548      &    .and.((lb1.ge.25.and.lb1.le.29).or.lb1.eq.0) )go to 888
2549 c
2550 c K+/K* (N,R)  OR   K-/K*- (N,R)-bar  elastic scatt
2551         if( ((lb1.eq.23.or.lb1.eq.30).and.(lb2.eq.1.or.lb2.eq.2.or.
2552      &         (lb2.ge.6.and.lb2.le.13))) .OR.
2553      &      ((lb2.eq.23.or.lb2.eq.30).and.(lb1.eq.1.or.lb1.eq.2.or.
2554      &         (lb1.ge.6.and.lb1.le.13))) ) go to 888
2555         if( ((lb1.eq.21.or.lb1.eq.-30).and.(lb2.eq.-1.or.lb2.eq.-2.or.
2556      &       (lb2.ge.-13.and.lb2.le.-6))) .OR. 
2557      &      ((lb2.eq.21.or.lb2.eq.-30).and.(lb1.eq.-1.or.lb1.eq.-2.or.
2558      &       (lb1.ge.-13.and.lb1.le.-6))) ) go to 888
2559 c
2560 * L/S-baryon elastic collision 
2561        If( ((lb1.ge.14.and.lb1.le.17).and.(lb2.ge.6.and.lb2.le.13))
2562      & .OR.((lb2.ge.14.and.lb2.le.17).and.(lb1.ge.6.and.lb1.le.13)) )
2563      &   go to 7799
2564        If(((lb1.le.-14.and.lb1.ge.-17).and.(lb2.le.-6.and.lb2.ge.-13))
2565      &.OR.((lb2.le.-14.and.lb2.ge.-17).and.(lb1.le.-6.and.lb1.ge.-13)))
2566      &   go to 7799
2567 c
2568 c skip other collns with perturbative particles or hyperon-bar
2569        if( iabs(lb1).ge.40 .or. iabs(lb2).ge.40
2570      &    .or. (lb1.le.-14.and.lb1.ge.-17) 
2571      &    .or. (lb2.le.-14.and.lb2.ge.-17) )go to 400
2572 c
2573 c
2574 * anti-baryon on baryon resonaces 
2575         if((lb1.eq.-1.or.lb1.eq.-2.or.(lb1.ge.-13.and.lb1.le.-6))
2576      1 .and.(lb2.eq.1.or.lb2.eq.2.or.(lb2.ge.6.and.lb2.le.13))) then
2577             GOTO 2799
2578        else if((lb2.eq.-1.or.lb2.eq.-2.or.(lb2.ge.-13.and.lb2.le.-6))
2579      1 .and.(lb1.eq.1.or.lb1.eq.2.or.(lb1.ge.6.and.lb1.le.13))) then
2580             GOTO 2799
2581          END IF
2582 c
2583 clin-10/25/02 get rid of argument usage mismatch in newka():
2584          inewka=irun
2585 c        call newka(icase,irun,iseed,dt,nt,
2586 clin-5/01/03 set iblock value in art1f.f, necessary for resonance studies:
2587 c        call newka(icase,inewka,iseed,dt,nt,
2588 c     &                  ictrl,i1,i2,srt,pcx,pcy,pcz)
2589         call newka(icase,inewka,iseed,dt,nt,
2590      &                  ictrl,i1,i2,srt,pcx,pcy,pcz,iblock)
2591 
2592 clin-10/25/02-end
2593         IF (ICTRL .EQ. 1) GOTO 400
2594 c
2595 * SEPARATE NUCLEON+NUCLEON( BARYON RESONANCE+ BARYON RESONANCE ELASTIC
2596 * COLLISION), BARYON RESONANCE+NUCLEON AND BARYON-PION
2597 * COLLISIONS INTO THREE PARTS TO CHECK IF THEY ARE GOING TO SCATTER,
2598 * WE only allow L/S to COLLIDE elastically with a nucleon and meson
2599        if((iabs(lb1).ge.14.and.iabs(lb1).le.17).
2600      &  or.(iabs(lb2).ge.14.and.iabs(lb2).le.17))go to 400
2601 * IF PION+PION COLLISIONS GO TO 777
2602 * if pion+eta, eta+eta to create kaons go to 777 
2603        IF((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5))GO TO 777
2604        if(lb1.eq.0.and.(lb2.ge.3.and.lb2.le.5)) go to 777
2605        if(lb2.eq.0.and.(lb1.ge.3.and.lb1.le.5)) go to 777
2606        if(lb1.eq.0.and.lb2.eq.0)go to 777
2607 * we assume that rho and omega behave the same way as pions in 
2608 * kaon production
2609 * (1) rho(omega)+rho(omega)
2610        if( (lb1.ge.25.and.lb1.le.28).and.
2611      &     (lb2.ge.25.and.lb2.le.28) )goto 777
2612 * (2) rho(omega)+pion
2613       If((lb1.ge.25.and.lb1.le.28).and.(lb2.ge.3.and.lb2.le.5))go to 777
2614       If((lb2.ge.25.and.lb2.le.28).and.(lb1.ge.3.and.lb1.le.5))go to 777
2615 * (3) rho(omega)+eta
2616        if((lb1.ge.25.and.lb1.le.28).and.lb2.eq.0)go to 777
2617        if((lb2.ge.25.and.lb2.le.28).and.lb1.eq.0)go to 777
2618 c
2619 * if kaon+pion collisions go to 889
2620        if((lb1.eq.23.or.lb1.eq.21).and.(lb2.ge.3.and.lb2.le.5))go to 889
2621        if((lb2.eq.23.or.lb2.eq.21).and.(lb1.ge.3.and.lb1.le.5))go to 889
2622 c
2623 clin-2/06/03 skip all other (K K* Kbar K*bar) channels:
2624 * SKIP all other K and K* RESCATTERINGS
2625         If(iabs(lb1).eq.30.or.iabs(lb2).eq.30) go to 400
2626         If(lb1.eq.21.or.lb2.eq.21) go to 400
2627         If(lb1.eq.23.or.lb2.eq.23) go to 400
2628 c
2629 * IF PION+baryon COLLISION GO TO 3
2630            IF( (LB1.ge.3.and.LB1.le.5) .and. 
2631      &         (iabs(LB2).eq.1.or.iabs(LB2).eq.2.or.
2632      &          (iabs(LB2).ge.6.and.iabs(LB2).le.13)) )GO TO 3
2633            IF( (LB2.ge.3.and.LB2.le.5) .and. 
2634      &         (iabs(LB1).eq.1.or.iabs(LB1).eq.2.or.
2635      &          (iabs(LB1).ge.6.and.iabs(LB1).le.13)) )GO TO 3
2636 c
2637 * IF rho(omega)+NUCLEON (baryon resonance) COLLISION GO TO 33
2638            IF( (LB1.ge.25.and.LB1.le.28) .and. 
2639      &         (iabs(LB2).eq.1.or.iabs(LB2).eq.2.or.
2640      &          (iabs(LB2).ge.6.and.iabs(LB2).le.13)) )GO TO 33
2641            IF( (LB2.ge.25.and.LB2.le.28) .and. 
2642      &         (iabs(LB1).eq.1.or.iabs(LB1).eq.2.or.
2643      &          (iabs(LB1).ge.6.and.iabs(LB1).le.13)) )GO TO 33
2644 c
2645 * IF ETA+NUCLEON (baryon resonance) COLLISIONS GO TO 547
2646            IF( LB1.eq.0 .and. 
2647      &         (iabs(LB2).eq.1.or.iabs(LB2).eq.2.or.
2648      &          (iabs(LB2).ge.6.and.iabs(LB2).le.13)) )GO TO 547
2649            IF( LB2.eq.0 .and. 
2650      &         (iabs(LB1).eq.1.or.iabs(LB1).eq.2.or.
2651      &          (iabs(LB1).ge.6.and.iabs(LB1).le.13)) )GO TO 547
2652 c
2653 * IF NUCLEON+BARYON RESONANCE COLLISION GO TO 44
2654             IF((LB1.eq.1.or.lb1.eq.2).
2655      &        AND.(LB2.GT.5.and.lb2.le.13))GOTO 44
2656             IF((LB2.eq.1.or.lb2.eq.2).
2657      &        AND.(LB1.GT.5.and.lb1.le.13))GOTO 44
2658             IF((LB1.eq.-1.or.lb1.eq.-2).
2659      &        AND.(LB2.LT.-5.and.lb2.ge.-13))GOTO 44
2660             IF((LB2.eq.-1.or.lb2.eq.-2).
2661      &        AND.(LB1.LT.-5.and.lb1.ge.-13))GOTO 44
2662 c
2663 * IF NUCLEON+NUCLEON COLLISION GO TO 4
2664        IF((LB1.eq.1.or.lb1.eq.2).AND.(LB2.eq.1.or.lb2.eq.2))GOTO 4
2665        IF((LB1.eq.-1.or.lb1.eq.-2).AND.(LB2.eq.-1.or.lb2.eq.-2))GOTO 4
2666 c
2667 * IF BARYON RESONANCE+BARYON RESONANCE COLLISION GO TO 444
2668             IF((LB1.GT.5.and.lb1.le.13).AND.
2669      &         (LB2.GT.5.and.lb2.le.13)) GOTO 444
2670             IF((LB1.LT.-5.and.lb1.ge.-13).AND.
2671      &         (LB2.LT.-5.and.lb2.ge.-13)) GOTO 444
2672 c
2673 * if L/S+L/S or L/s+nucleon go to 400
2674 * otherwise, develop a model for their collisions
2675        if((lb1.lt.3).and.(lb2.ge.14.and.lb2.le.17))goto 400
2676        if((lb2.lt.3).and.(lb1.ge.14.and.lb1.le.17))goto 400
2677        if((lb1.ge.14.and.lb1.le.17).and.
2678      &  (lb2.ge.14.and.lb2.le.17))goto 400
2679 c
2680 * otherwise, go out of the loop
2681               go to 400
2682 *
2683 *
2684 547           IF(LB1*LB2.EQ.0)THEN
2685 * (1) FOR ETA+NUCLEON SYSTEM, we allow both elastic collision, 
2686 *     i.e. N*(1535) formation and kaon production
2687 *     the total kaon production cross section is
2688 *     ASSUMED to be THE SAME AS PION+NUCLEON COLLISIONS
2689 * (2) for eta+baryon resonance we only allow kaon production
2690            ece=(em1+em2+0.02)**2
2691            xkaon0=0.
2692            if(srt.ge.1.63.AND.SRT.LE.1.7)xkaon0=pnlka(srt)
2693            IF(SRT.GT.1.7)XKAON0=PNLKA(SRT)+pnska(srt)
2694 cbz3/7/99 neutralk
2695             XKAON0 = 2.0 * XKAON0
2696 cbz3/7/99 neutralk end
2697 
2698 * Here we negelect eta+n inelastic collisions other than the 
2699 * kaon production, therefore the total inelastic cross section
2700 * xkaon equals to the xkaon0 (kaon production cross section)
2701            xkaon=xkaon0
2702 * note here the xkaon is in unit of fm**2
2703             XETA=XN1535(I1,I2,0)
2704         If((iabs(LB(I1)).ge.6.and.iabs(LB(I1)).le.13).or.
2705      &     (iabs(LB(I2)).ge.6.and.iabs(LB(I2)).le.13)) xeta=0.      
2706             IF((XETA+xkaon).LE.1.e-06)GO TO 400
2707             DSE=SQRT((XETA+XKAON)/PI)
2708            DELTRE=DSE+0.1
2709         px1cm=pcx
2710         py1cm=pcy
2711         pz1cm=pcz
2712 * CHECK IF N*(1535) resonance CAN BE FORMED
2713          CALL DISTCE(I1,I2,DELTRE,DSE,DT,ECE,SRT,IC,
2714      1   PCX,PCY,PCZ)
2715          IF(IC.EQ.-1) GO TO 400
2716          ekaon(4,iss)=ekaon(4,iss)+1
2717         IF(XKAON0/(XKAON+XETA).GT.RANART(NSEED))then
2718 * kaon production, USE CREN TO CALCULATE THE MOMENTUM OF L/S K+
2719         CALL CREN(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
2720 * kaon production
2721        IF(IBLOCK.EQ.7) then
2722           LPN=LPN+1
2723        elseIF(IBLOCK.EQ.-7) then
2724        endif
2725 c
2726        em1=e(i1)
2727        em2=e(i2)
2728        GO TO 440
2729        endif
2730 * N*(1535) FORMATION
2731         resona=1.
2732          GO TO 98
2733          ENDIF
2734 *IF PION+NUCLEON (baryon resonance) COLLISION THEN
2735 3           CONTINUE
2736            px1cm=pcx
2737            py1cm=pcy
2738            pz1cm=pcz
2739 * the total kaon production cross section for pion+baryon (resonance) is
2740 * assumed to be the same as in pion+nucleon
2741            xkaon0=0.
2742            if(srt.ge.1.63.AND.SRT.LE.1.7)xkaon0=pnlka(srt)
2743            IF(SRT.GT.1.7)XKAON0=PNLKA(SRT)+pnska(srt)
2744             XKAON0 = 2.0 * XKAON0
2745 c
2746 c sp11/21/01  phi production: pi +N(D) -> phi + N(D)
2747          Xphi = 0.
2748        if( ( ((lb1.ge.1.and.lb1.le.2).or.
2749      &        (lb1.ge.6.and.lb1.le.9))
2750      &   .OR.((lb2.ge.1.and.lb2.le.2).or.
2751      &        (lb2.ge.6.and.lb2.le.9)) )
2752      &       .AND. srt.gt.1.958)
2753      &        call pibphi(srt,lb1,lb2,em1,em2,Xphi,xphin)
2754 c !! in fm^2 above
2755 
2756 * if a pion collide with a baryon resonance, 
2757 * we only allow kaon production AND the reabsorption 
2758 * processes: Delta+pion-->N+pion, N*+pion-->N+pion
2759 * Later put in pion+baryon resonance elastic
2760 * cross through forming higher resonances implicitly.
2761 c          If(em1.gt.1.or.em2.gt.1.)go to 31
2762          If((iabs(LB(I1)).ge.6.and.iabs(LB(I1)).le.13).or.
2763      &      (iabs(LB(I2)).ge.6.and.iabs(LB(I2)).le.13)) go to 31
2764 * For pion+nucleon collisions: 
2765 * using the experimental pion+nucleon inelastic cross section, we assume it
2766 * is exhausted by the Delta+pion, Delta+rho and Delta+omega production 
2767 * and kaon production. In the following we first check whether 
2768 * inelastic pion+n collision can happen or not, then determine in 
2769 * crpn whether it is through pion production or through kaon production
2770 * note that the xkaon0 is the kaon production cross section
2771 * Note in particular that: 
2772 * xkaon in the following is the total pion+nucleon inelastic cross section
2773 * note here the xkaon is in unit of fm**2, xnpi is also in unit of fm**2
2774 * FOR PION+NUCLEON SYSTEM, THE MINIMUM S IS 1.2056 the minimum srt for 
2775 * elastic scattering, and it is 1.60 for pion production, 1.63 for LAMBDA+kaon 
2776 * production and 1.7 FOR SIGMA+KAON
2777 * (EC = PION MASS+NUCLEON MASS+20MEV)**2
2778             EC=(em1+em2+0.02)**2
2779            xkaon=0.
2780            if(srt.gt.1.23)xkaon=(pionpp(srt)+PIPP1(SRT))/2.
2781 * pion+nucleon elastic cross section is divided into two parts:
2782 * (1) forming D(1232)+N*(1440) +N*(1535)
2783 * (2) cross sections forming higher resonances are calculated as
2784 *     the difference between the total elastic and (1), this part is 
2785 *     treated as direct process since we do not explicitLY include
2786 *     higher resonances.
2787 * the following is the resonance formation cross sections.
2788 *1. PION(+)+PROTON-->DELTA++,PION(-)+NEUTRON-->DELTA(-)
2789            IF( (LB1*LB2.EQ.5.OR.((LB1*LB2.EQ.6).AND.
2790      &         (LB1.EQ.3.OR.LB2.EQ.3)))
2791      &    .OR. (LB1*LB2.EQ.-3.OR.((LB1*LB2.EQ.-10).AND.
2792      &         (LB1.EQ.5.OR.LB2.EQ.5))) )then    
2793               XMAX=190.
2794               xmaxn=0
2795               xmaxn1=0
2796               xdirct=dirct1(srt)
2797                go to 678
2798            endif
2799 *2. PION(-)+PROTON-->DELTA0,PION(+)+NEUTRON-->DELTA+ 
2800 *   or N*(+)(1440) or N*(+)(1535)
2801 * note the factor 2/3 is from the isospin consideration and
2802 * the factor 0.6 or 0.5 is the branching ratio for the resonance to decay
2803 * into pion+nucleon
2804             IF( (LB1*LB2.EQ.3.OR.((LB1*LB2.EQ.10).AND.
2805      &          (LB1.EQ.5.OR.LB2.EQ.5)))
2806      &     .OR. (LB1*LB2.EQ.-5.OR.((LB1*LB2.EQ.-6).AND.
2807      &          (LB1.EQ.3.OR.LB2.EQ.3))) )then      
2808               XMAX=27.
2809               xmaxn=2./3.*25.*0.6
2810                xmaxn1=2./3.*40.*0.5
2811               xdirct=dirct2(srt)
2812                go to 678
2813               endif
2814 *3. PION0+PROTON-->DELTA+,PION0+NEUTRON-->DELTA0, or N*(0)(1440) or N*(0)(1535)
2815             IF((LB1.EQ.4.OR.LB2.EQ.4).AND.
2816      &         (iabs(LB1*LB2).EQ.4.OR.iabs(LB1*LB2).EQ.8))then
2817               XMAX=50.
2818               xmaxn=1./3.*25*0.6
2819               xmaxn1=1/3.*40.*0.5
2820               xdirct=dirct3(srt)
2821                 go to 678
2822               endif
2823 678           xnpin1=0
2824            xnpin=0
2825             XNPID=XNPI(I1,I2,1,XMAX)
2826            if(xmaxn1.ne.0)xnpin1=XNPI(i1,i2,2,XMAXN1)
2827             if(xmaxn.ne.0)XNPIN=XNPI(I1,I2,0,XMAXN)
2828 * the following 
2829            xres=xnpid+xnpin+xnpin1
2830            xnelas=xres+xdirct 
2831            icheck=1
2832            go to 34
2833 * For pion + baryon resonance the reabsorption 
2834 * cross section is calculated from the detailed balance
2835 * using reab(i1,i2,srt,ictrl), ictrl=1, 2 and 3
2836 * for pion, rho and omega + baryon resonance
2837 31           ec=(em1+em2+0.02)**2
2838            xreab=reab(i1,i2,srt,1)
2839 
2840 clin-12/02/00 to satisfy detailed balance, forbid N* absorptions:
2841           if((iabs(lb1).ge.10.and.iabs(lb1).le.13)
2842      1         .or.(iabs(lb2).ge.10.and.iabs(lb2).le.13)) XREAB = 0.
2843 
2844            xkaon=xkaon0+xreab
2845 * a constant of 10 mb IS USED FOR PION + N* RESONANCE, 
2846         IF((iabs(LB1).GT.9.AND.iabs(LB1).LE.13) .OR.
2847      &      (iabs(LB2).GT.9.AND.iabs(LB2).LE.13))THEN
2848            Xnelas=1.0
2849         ELSE
2850            XNELAS=DPION(EM1,EM2,LB1,LB2,SRT)
2851         ENDIF
2852            icheck=2
2853 34          IF((Xnelas+xkaon+Xphi).LE.0.000001)GO TO 400
2854             DS=SQRT((Xnelas+xkaon+Xphi)/PI)
2855 csp09/20/01
2856 c           totcr = xnelas+xkaon
2857 c           if(srt .gt. 3.5)totcr = max1(totcr,3.)
2858 c           DS=SQRT(totcr/PI)
2859 csp09/20/01 end
2860             
2861            deltar=ds+0.1
2862          CALL DISTCE(I1,I2,DELTAR,DS,DT,EC,SRT,IC,
2863      1   PCX,PCY,PCZ)
2864          IF(IC.EQ.-1) GO TO 400
2865        ekaon(4,iss)=ekaon(4,iss)+1
2866 c***
2867 * check what kind of collision has happened
2868 * (1) pion+baryon resonance
2869 * if direct elastic process
2870         if(icheck.eq.2)then
2871 c  !!sp11/21/01
2872       if(xnelas/(xnelas+xkaon+Xphi).ge.RANART(NSEED))then
2873 c               call Crdir(PX1CM,PY1CM,PZ1CM,SRT,I1,I2)
2874                call Crdir(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
2875               go to 440
2876               else
2877 * for inelastic process, go to 96 to check
2878 * kaon production and pion reabsorption : pion+D(N*)-->pion+N
2879                go to 96
2880                 endif
2881               endif
2882 *(2) pion+n
2883 * CHECK IF inELASTIC COLLISION IS POSSIBLE FOR PION+N COLLISIONS
2884 clin-8/17/00 typo corrected, many other occurences:
2885 c        IF(XKAON/(XKAON+Xnelas).GT.RANART(NSEED))GO TO 95
2886        IF((XKAON+Xphi)/(XKAON+Xphi+Xnelas).GT.RANART(NSEED))GO TO 95
2887 
2888 * direct process
2889         if(xdirct/xnelas.ge.RANART(NSEED))then
2890 c               call Crdir(PX1CM,PY1CM,PZ1CM,SRT,I1,I2)
2891                call Crdir(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
2892               go to 440
2893               endif
2894 * now resonance formation or direct process (higher resonances)
2895            IF( (LB1*LB2.EQ.5.OR.((LB1*LB2.EQ.6).AND.
2896      &         (LB1.EQ.3.OR.LB2.EQ.3)))
2897      &    .OR. (LB1*LB2.EQ.-3.OR.((LB1*LB2.EQ.-10).AND.
2898      &         (LB1.EQ.5.OR.LB2.EQ.5))) )then    
2899 c
2900 * ONLY DELTA RESONANCE IS POSSIBLE, go to 99
2901         GO TO 99
2902        else
2903 * NOW BOTH DELTA AND N* RESORANCE ARE POSSIBLE
2904 * DETERMINE THE RESORANT STATE BY USING THE MONTRE CARLO METHOD
2905             XX=(XNPIN+xnpin1)/xres
2906             IF(RANART(NSEED).LT.XX)THEN
2907 * N* RESONANCE IS SELECTED
2908 * decide N*(1440) or N*(1535) formation
2909         xx0=xnpin/(xnpin+xnpin1)
2910         if(RANART(NSEED).lt.xx0)then
2911          RESONA=0.
2912 * N*(1440) formation
2913          GO TO 97
2914         else
2915 * N*(1535) formation
2916         resona=1.
2917          GO TO 98
2918         endif
2919          ELSE
2920 * DELTA RESONANCE IS SELECTED
2921          GO TO 99
2922          ENDIF
2923          ENDIF
2924 97       CONTINUE
2925             IF(RESONA.EQ.0.)THEN
2926 *N*(1440) IS PRODUCED,WE DETERMINE THE CHARGE STATE OF THE PRODUCED N*
2927             I=I1
2928             IF(EM1.LT.0.6)I=I2
2929 * (0.1) n+pion(+)-->N*(+)
2930            IF( (LB1*LB2.EQ.10.AND.(LB1.EQ.5.OR.LB2.EQ.5))
2931      &      .OR.(LB1*LB2.EQ.-6.AND.(LB1.EQ.3.OR.LB2.EQ.3)) )THEN
2932             LB(I)=11
2933            go to 303
2934             ENDIF
2935 * (0.2) p+pion(0)-->N*(+)
2936 c            IF(LB(I1)*LB(I2).EQ.4.AND.(LB(I1).EQ.1.OR.LB(I2).EQ.1))THEN
2937             IF(iabs(LB(I1)*LB(I2)).EQ.4.AND.
2938      &         (LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN    
2939             LB(I)=11
2940            go to 303
2941             ENDIF
2942 * (0.3) n+pion(0)-->N*(0)
2943 c            IF(LB(I1)*LB(I2).EQ.8.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
2944             IF(iabs(LB(I1)*LB(I2)).EQ.8.AND.
2945      &        (LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN    
2946             LB(I)=10
2947            go to 303
2948             ENDIF
2949 * (0.4) p+pion(-)-->N*(0)
2950 c            IF(LB(I1)*LB(I2).EQ.3)THEN
2951             IF( (LB(I1)*LB(I2).EQ.3)
2952      &      .OR.(LB(I1)*LB(I2).EQ.-5) )THEN
2953             LB(I)=10
2954             ENDIF
2955 303         CALL DRESON(I1,I2)
2956             if(LB1.lt.0.or.LB2.lt.0) LB(I)=-LB(I)
2957             lres=lres+1
2958             GO TO 101
2959 *COM: GO TO 101 TO CHANGE THE PHASE SPACE DENSITY OF THE NUCLEON
2960             ENDIF
2961 98          IF(RESONA.EQ.1.)THEN
2962 *N*(1535) IS PRODUCED, WE DETERMINE THE CHARGE STATE OF THE PRODUCED N*
2963             I=I1
2964             IF(EM1.LT.0.6)I=I2
2965 * note: this condition applies to both eta and pion
2966 * (0.1) n+pion(+)-->N*(+)
2967 c            IF(LB1*LB2.EQ.10.AND.(LB1.EQ.2.OR.LB2.EQ.2))THEN
2968             IF( (LB1*LB2.EQ.10.AND.(LB1.EQ.5.OR.LB2.EQ.5))
2969      &      .OR.(LB1*LB2.EQ.-6.AND.(LB1.EQ.3.OR.LB2.EQ.3)) )THEN
2970             LB(I)=13
2971            go to 304
2972             ENDIF
2973 * (0.2) p+pion(0)-->N*(+)
2974 c            IF(LB(I1)*LB(I2).EQ.4.AND.(LB(I1).EQ.1.OR.LB(I2).EQ.1))THEN
2975             IF(iabs(LB(I1)*LB(I2)).EQ.4.AND.
2976      &           (LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN 
2977             LB(I)=13
2978            go to 304
2979             ENDIF
2980 * (0.3) n+pion(0)-->N*(0)
2981 c            IF(LB(I1)*LB(I2).EQ.8.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
2982             IF(iabs(LB(I1)*LB(I2)).EQ.8.AND.
2983      &           (LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN      
2984             LB(I)=12
2985            go to 304
2986             ENDIF
2987 * (0.4) p+pion(-)-->N*(0)
2988 c            IF(LB(I1)*LB(I2).EQ.3)THEN
2989             IF( (LB(I1)*LB(I2).EQ.3)
2990      &      .OR.(LB(I1)*LB(I2).EQ.-5) )THEN
2991             LB(I)=12
2992            go to 304
2993            endif
2994 * (0.5) p+eta-->N*(+)(1535),n+eta-->N*(0)(1535)
2995            if(lb(i1)*lb(i2).eq.0)then
2996 c            if((lb(i1).eq.1).or.(lb(i2).eq.1))then
2997             if(iabs(lb(i1)).eq.1.or.iabs(lb(i2)).eq.1)then
2998            LB(I)=13
2999            go to 304
3000            ELSE
3001            LB(I)=12
3002            ENDIF
3003            endif
3004 304         CALL DRESON(I1,I2)
3005             if(LB1.lt.0.or.LB2.lt.0) LB(I)=-LB(I) 
3006             lres=lres+1
3007             GO TO 101
3008 *COM: GO TO 101 TO CHANGE THE PHASE SPACE DENSITY OF THE NUCLEON
3009             ENDIF
3010 *DELTA IS PRODUCED,IN THE FOLLOWING WE DETERMINE THE
3011 *CHARGE STATE OF THE PRODUCED DELTA
3012 99      LRES=LRES+1
3013         I=I1
3014         IF(EM1.LE.0.6)I=I2
3015 * (1) p+pion(+)-->DELTA(++)
3016 c        IF(LB(I1)*LB(I2).EQ.5)THEN
3017             IF( (LB(I1)*LB(I2).EQ.5)
3018      &      .OR.(LB(I1)*LB(I2).EQ.-3) )THEN
3019         LB(I)=9
3020        go to 305
3021         ENDIF
3022 * (2) p+pion(0)-->delta(+)
3023 c        IF(LB(I1)*LB(I2).EQ.4.AND.(LB(I1).EQ.1.OR.LB(I2).EQ.1))then
3024        IF(iabs(LB(I1)*LB(I2)).EQ.4.AND.(LB(I1).EQ.4.OR.LB(I2).EQ.4))then
3025         LB(I)=8
3026        go to 305
3027         ENDIF
3028 * (3) n+pion(+)-->delta(+)
3029 c        IF(LB(I1)*LB(I2).EQ.10.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
3030        IF( (LB(I1)*LB(I2).EQ.10.AND.(LB(I1).EQ.5.OR.LB(I2).EQ.5))
3031      & .OR.(LB(I1)*LB(I2).EQ.-6.AND.(LB(I1).EQ.3.OR.LB(I2).EQ.3)) )THEN
3032         LB(I)=8
3033        go to 305
3034         ENDIF
3035 * (4) n+pion(0)-->delta(0)
3036 c        IF(LB(I1)*LB(I2).EQ.8.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
3037        IF(iabs(LB(I1)*LB(I2)).EQ.8.AND.(LB(I1).EQ.4.OR.LB(I2).EQ.4))THEN
3038         LB(I)=7
3039        go to 305
3040         ENDIF
3041 * (5) p+pion(-)-->delta(0)
3042 c        IF(LB(I1)*LB(I2).EQ.3)THEN
3043             IF( (LB(I1)*LB(I2).EQ.3)
3044      &      .OR.(LB(I1)*LB(I2).EQ.-5) )THEN
3045         LB(I)=7
3046        go to 305
3047         ENDIF
3048 * (6) n+pion(-)-->delta(-)
3049 c        IF(LB(I1)*LB(I2).EQ.6.AND.(LB(I1).EQ.2.OR.LB(I2).EQ.2))THEN
3050        IF( (LB(I1)*LB(I2).EQ.6.AND.(LB(I1).EQ.3.OR.LB(I2).EQ.3))
3051      & .OR.(LB(I1)*LB(I2).EQ.-10.AND.(LB(I1).EQ.5.OR.LB(I2).EQ.5)) )THEN 
3052         LB(I)=6
3053         ENDIF
3054 305     CALL DRESON(I1,I2)
3055         if(LB1.lt.0.or.LB2.lt.0) LB(I)=-LB(I) 
3056        GO TO 101
3057 
3058 csp-11/08/01 K*
3059 * FOR kaON+pion COLLISIONS, form K* (bar) or
3060 c La/Si-bar + N <-- pi + K+
3061 c La/Si + N-bar <-- pi + K-                                             
3062 c phi + K <-- pi + K                                             
3063 clin (rho,omega) + K* <-- pi + K
3064 889       CONTINUE
3065         PX1CM=PCX
3066         PY1CM=PCY
3067         PZ1CM=PCZ
3068         EC=(em1+em2+0.02)**2
3069 * the cross section is from C.M. Ko, PRC 23, 2760 (1981).
3070        spika=60./(1.+4.*(srt-0.895)**2/(0.05)**2)
3071 c
3072 cc       if(lb(i1).eq.23.or.lb(i2).eq.23)then   !! block  K- + pi->La + B-bar
3073 
3074         call Crkpla(PX1CM,PY1CM,PZ1CM,EC,SRT,spika,
3075      &                  emm1,emm2,lbp1,lbp2,I1,I2,icase,srhoks)
3076 cc
3077 c* only K* or K*bar formation
3078 c       else 
3079 c      DSkn=SQRT(spika/PI/10.)
3080 c      dsknr=dskn+0.1
3081 c      CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
3082 c    1     PX1CM,PY1CM,PZ1CM)
3083 c        IF(IC.EQ.-1) GO TO 400
3084 c       icase = 1
3085 c      endif
3086 c
3087          if(icase .eq. 0) then
3088             iblock=0
3089             go to 400
3090          endif
3091 
3092        if(icase .eq. 1)then
3093              call KSRESO(I1,I2)
3094 clin-4/30/03 give non-zero iblock for resonance selections:
3095              iblock = 171
3096 ctest off for resonance (phi, K*) studies:
3097 c             if(iabs(lb(i1)).eq.30) then
3098 c             write(17,112) 'ks',lb(i1),p(1,i1),p(2,i1),p(3,i1),e(i1),nt
3099 c             elseif(iabs(lb(i2)).eq.30) then
3100 c             write(17,112) 'ks',lb(i2),p(1,i2),p(2,i2),p(3,i2),e(i2),nt
3101 c             endif
3102 c
3103               lres=lres+1
3104               go to 101
3105        elseif(icase .eq. 2)then
3106              iblock = 71
3107 c
3108 * La/Si (bar) formation                                                   
3109 
3110        elseif(iabs(icase).eq.5)then
3111              iblock = 88
3112 
3113        else
3114 *
3115 * phi formation
3116              iblock = 222
3117        endif
3118              LB(I1) = lbp1
3119              LB(I2) = lbp2
3120              E(I1) = emm1
3121              E(I2) = emm2
3122              em1=e(i1)
3123              em2=e(i2)
3124              ntag = 0
3125              go to 440
3126 c             
3127 33       continue
3128        em1=e(i1)
3129        em2=e(i2)
3130 * (1) if rho or omega collide with a nucleon we allow both elastic 
3131 *     scattering and kaon production to happen if collision conditions 
3132 *     are satisfied.
3133 * (2) if rho or omega collide with a baryon resonance we allow
3134 *     kaon production, pion reabsorption: rho(omega)+D(N*)-->pion+N
3135 *     and NO elastic scattering to happen
3136            xelstc=0
3137             if((lb1.ge.25.and.lb1.le.28).and.
3138      &    (iabs(lb2).eq.1.or.iabs(lb2).eq.2))
3139      &      xelstc=ERHON(EM1,EM2,LB1,LB2,SRT)
3140             if((lb2.ge.25.and.lb2.le.28).and.
3141      &   (iabs(lb1).eq.1.or.iabs(lb1).eq.2))
3142      &      xelstc=ERHON(EM1,EM2,LB1,LB2,SRT)
3143             ec=(em1+em2+0.02)**2
3144 * the kaon production cross section is
3145            xkaon0=0
3146            if(srt.ge.1.63.AND.SRT.LE.1.7)xkaon0=pnlka(srt)
3147            IF(SRT.GT.1.7)XKAON0=PNLKA(SRT)+pnska(srt)
3148            if(xkaon0.lt.0)xkaon0=0
3149 
3150 cbz3/7/99 neutralk
3151             XKAON0 = 2.0 * XKAON0
3152 cbz3/7/99 neutralk end
3153 
3154 * the total inelastic cross section for rho(omega)+N is
3155            xkaon=xkaon0
3156            ichann=0
3157 * the total inelastic cross section for rho (omega)+D(N*) is 
3158 * xkaon=xkaon0+reab(**) 
3159 
3160 c sp11/21/01  phi production: rho + N(D) -> phi + N(D)
3161          Xphi = 0.
3162        if( ( (((lb1.ge.1.and.lb1.le.2).or.
3163      &         (lb1.ge.6.and.lb1.le.9))
3164      &         .and.(lb2.ge.25.and.lb2.le.27))
3165      &   .OR.(((lb2.ge.1.and.lb2.le.2).or.
3166      &         (lb2.ge.6.and.lb2.le.9))
3167      &        .and.(lb1.ge.25.and.lb1.le.27)) ).AND. srt.gt.1.958)
3168      &    call pibphi(srt,lb1,lb2,em1,em2,Xphi,xphin)
3169 c !! in fm^2 above
3170 c
3171         if((iabs(lb1).ge.6.and.lb2.ge.25).or.
3172      &    (lb1.ge.25.and.iabs(lb2).ge.6))then
3173            ichann=1
3174            ictrl=2
3175            if(lb1.eq.28.or.lb2.eq.28)ictrl=3
3176             xreab=reab(i1,i2,srt,ictrl)
3177 
3178 clin-12/02/00 to satisfy detailed balance, forbid N* absorptions:
3179             if((iabs(lb1).ge.10.and.iabs(lb1).le.13)
3180      1           .or.(iabs(lb2).ge.10.and.iabs(lb2).le.13)) XREAB = 0.
3181 
3182         if(xreab.lt.0)xreab=1.E-06
3183             xkaon=xkaon0+xreab
3184           XELSTC=1.0
3185            endif
3186             DS=SQRT((XKAON+Xphi+xelstc)/PI)
3187 c
3188 csp09/20/01
3189 c           totcr = xelstc+xkaon
3190 c           if(srt .gt. 3.5)totcr = max1(totcr,3.)
3191 c           DS=SQRT(totcr/PI)
3192 csp09/20/01 end
3193 c
3194         DELTAR=DS+0.1
3195        px1cm=pcx
3196        py1cm=pcy
3197        pz1cm=pcz
3198 * CHECK IF the collision can happen
3199          CALL DISTCE(I1,I2,DELTAR,DS,DT,EC,SRT,IC,
3200      1   PCX,PCY,PCZ)
3201          IF(IC.EQ.-1) GO TO 400
3202         ekaon(4,iss)=ekaon(4,iss)+1
3203 c*
3204 * NOW rho(omega)+N or D(N*) COLLISION IS POSSIBLE
3205 * (1) check elastic collision
3206        if(xelstc/(xelstc+xkaon+Xphi).gt.RANART(NSEED))then
3207 c       call crdir(px1CM,py1CM,pz1CM,srt,I1,i2)
3208        call crdir(px1CM,py1CM,pz1CM,srt,I1,i2,IBLOCK)
3209        go to 440
3210        endif
3211 * (2) check pion absorption or kaon production
3212         CALL CRRD(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3213      1  IBLOCK,xkaon0,xkaon,Xphi,xphin)
3214 
3215 * kaon production
3216 csp05/16/01
3217        IF(IBLOCK.EQ.7) then
3218           LPN=LPN+1
3219        elseIF(IBLOCK.EQ.-7) then
3220        endif
3221 csp05/16/01 end
3222 * rho obsorption
3223        if(iblock.eq.81) lrhor=lrhor+1
3224 * omega obsorption
3225        if(iblock.eq.82) lomgar=lomgar+1
3226        em1=e(i1)
3227        em2=e(i2)
3228        GO TO 440
3229 * for pion+n now using the subroutine crpn to change 
3230 * the particle label and set the new momentum of L/S+K final state
3231 95       continue
3232 * NOW PION+N INELASTIC COLLISION IS POSSIBLE
3233 * check pion production or kaon production
3234         CALL CRPN(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3235      1  IBLOCK,xkaon0,xkaon,Xphi,xphin)
3236 
3237 * kaon production
3238 csp05/16/01
3239        IF(IBLOCK.EQ.7) then
3240           LPN=LPN+1
3241        elseIF(IBLOCK.EQ.-7) then
3242        endif
3243 csp05/16/01 end
3244 * pion production
3245        if(iblock.eq.77) lpd=lpd+1
3246 * rho production
3247        if(iblock.eq.78) lrho=lrho+1
3248 * omega production
3249        if(iblock.eq.79) lomega=lomega+1
3250        em1=e(i1)
3251        em2=e(i2)
3252        GO TO 440
3253 * for pion+D(N*) now using the subroutine crpd to 
3254 * (1) check kaon production or pion reabsorption 
3255 * (2) change the particle label and set the new 
3256 *     momentum of L/S+K final state
3257 96       continue
3258         CALL CRPD(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3259      1  IBLOCK,xkaon0,xkaon,Xphi,xphin)
3260 
3261 * kaon production
3262 csp05/16/01
3263        IF(IBLOCK.EQ.7) then
3264           LPN=LPN+1
3265        elseIF(IBLOCK.EQ.-7) then
3266        endif
3267 csp05/16/01 end
3268 * pion obserption
3269        if(iblock.eq.80) lpdr=lpdr+1
3270        em1=e(i1)
3271        em2=e(i2)
3272        GO TO 440
3273 * CALCULATE KAON PRODUCTION PROBABILITY FROM PION + N COLLISIONS
3274 C        IF(SRT.GT.1.615)THEN
3275 C        CALL PKAON(SRT,XXp,PK)
3276 C        TKAON(7)=TKAON(7)+PK 
3277 C        EKAON(7,ISS)=EKAON(7,ISS)+1
3278 c        CALL KSPEC1(SRT,PK)
3279 C        call LK(3,srt,iseed,pk)
3280 C        ENDIF
3281 * negelecting the pauli blocking at high energies
3282 
3283 101       continue
3284         IF(E(I2).EQ.0.)GO TO 600
3285         IF(E(I1).EQ.0.)GO TO 800
3286 * IF NUCLEON+BARYON RESONANCE COLLISIONS
3287 44      CONTINUE
3288 * CALCULATE THE TOTAL CROSS SECTION OF NUCLEON+ BARYON RESONANCE COLLISION
3289 * WE ASSUME THAT THE ELASTIC CROSS SECTION IS THE SAME AS NUCLEON+NUCLEON
3290 * COM: WE USE THE PARAMETERISATION BY CUGNON FOR LOW ENERGIES
3291 *      AND THE PARAMETERIZATIONS FROM CERN DATA BOOK FOR HIGHER 
3292 *      ENERGIES. THE CUTOFF FOR THE TOTAL CROSS SECTION IS 55 MB 
3293        cutoff=em1+em2+0.02
3294        IF(SRT.LE.CUTOFF)GO TO 400
3295         IF(SRT.GT.2.245)THEN
3296        SIGNN=PP2(SRT)
3297        ELSE
3298         SIGNN = 35.0 / (1. + (SRT - CUTOFF) * 100.0)  +  20.0
3299        ENDIF 
3300         call XND(pcx,pcy,pcz,srt,I1,I2,xinel,
3301      &               sigk,xsk1,xsk2,xsk3,xsk4,xsk5)
3302        sig=signn+xinel
3303 * For nucleon+baryon resonance collision, the minimum cms**2 energy is
3304         EC=(EM1+EM2+0.02)**2
3305 * CHECK THE DISTENCE BETWEEN THE TWO PARTICLES
3306         PX1CM=PCX
3307         PY1CM=PCY
3308         PZ1CM=PCZ
3309 
3310 clin-6/2008 Deuteron production:
3311         ianti=0
3312         if(lb(i1).lt.0 .and. lb(i2).lt.0) ianti=1
3313         call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
3314         sig=sig+sdprod
3315 clin-6/2008 perturbative treatment of deuterons:
3316         ipdflag=0
3317         if(idpert.eq.1) then
3318            ipert1=1
3319            sigr0=sig
3320            dspert=sqrt(sigr0/pi/10.)
3321            dsrpert=dspert+0.1
3322            CALL DISTCE(I1,I2,dsrpert,dspert,DT,EC,SRT,IC,
3323      1          PX1CM,PY1CM,PZ1CM)
3324            IF(IC.EQ.-1) GO TO 363
3325            signn0=0.
3326            CALL CRND(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3327      &  IBLOCK,SIGNN0,SIGr0,sigk,xsk1,xsk2,xsk3,xsk4,xsk5,NT,ipert1)
3328 c     &  IBLOCK,SIGNN,SIG,sigk,xsk1,xsk2,xsk3,xsk4,xsk5)
3329            ipdflag=1
3330  363       continue
3331            ipert1=0
3332         endif
3333         if(idpert.eq.2) ipert1=1
3334 c
3335         DS=SQRT(SIG/(10.*PI))
3336         DELTAR=DS+0.1
3337         CALL DISTCE(I1,I2,DELTAR,DS,DT,EC,SRT,IC,
3338      1  PX1CM,PY1CM,PZ1CM)
3339 c        IF(IC.EQ.-1)GO TO 400
3340         IF(IC.EQ.-1) then
3341            if(ipdflag.eq.1) iblock=501
3342            GO TO 400
3343         endif
3344 
3345         ekaon(3,iss)=ekaon(3,iss)+1
3346 * CALCULATE KAON PRODUCTION PROBABILITY FROM NUCLEON + BARYON RESONANCE 
3347 * COLLISIONS
3348         go to 361
3349 
3350 * CHECK WHAT KIND OF COLLISION HAS HAPPENED
3351  361    continue 
3352         CALL CRND(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3353      &     IBLOCK,SIGNN,SIG,sigk,xsk1,xsk2,xsk3,xsk4,xsk5,NT,ipert1)
3354 c     &  IBLOCK,SIGNN,SIG,sigk,xsk1,xsk2,xsk3,xsk4,xsk5)
3355         IF(iblock.eq.0.and.ipdflag.eq.1) iblock=501
3356         IF(IBLOCK.EQ.11)THEN
3357            LNDK=LNDK+1
3358            GO TO 400
3359 c        elseIF(IBLOCK.EQ.-11) then
3360         elseIF(IBLOCK.EQ.-11.or.iblock.eq.501) then
3361            GO TO 400
3362         ENDIF
3363         if(iblock .eq. 222)then
3364 c    !! sp12/17/01 
3365            GO TO 400
3366         ENDIF
3367         em1=e(i1)
3368         em2=e(i2)
3369         GO TO 440
3370 * IF NUCLEON+NUCLEON OR BARYON RESONANCE+BARYON RESONANCE COLLISIONS
3371 4       CONTINUE
3372 * PREPARE THE EALSTIC CROSS SECTION FOR BARYON+BARYON COLLISIONS
3373 * COM: WE USE THE PARAMETERISATION BY CUGNON FOR SRT LEQ 2.0 GEV
3374 *      AND THE PARAMETERIZATIONS FROM CERN DATA BOOK FOR HIGHER 
3375 *      ENERGIES. THE CUTOFF FOR THE TOTAL CROSS SECTION IS 55 MB 
3376 *      WITH LOW-ENERGY-CUTOFF
3377         CUTOFF=em1+em2+0.14
3378 * AT HIGH ENERGIES THE ISOSPIN DEPENDENCE IS NEGLIGIBLE
3379 * THE TOTAL CROSS SECTION IS TAKEN AS THAT OF THE PP 
3380 * ABOVE E_KIN=800 MEV, WE USE THE ISOSPIN INDEPENDNET XSECTION
3381         IF(SRT.GT.2.245)THEN
3382            SIG=ppt(srt)
3383            SIGNN=SIG-PP1(SRT)
3384         ELSE
3385 * AT LOW ENERGIES THE ISOSPIN DEPENDENCE FOR NN COLLISION IS STRONG
3386            SIG=XPP(SRT)
3387            IF(ZET(LB(I1))*ZET(LB(I2)).LE.0)SIG=XNP(SRT)
3388            IF(ZET(LB(I1))*ZET(LB(I2)).GT.0)SIG=XPP(SRT)
3389            IF(ZET(LB(I1)).EQ.0.
3390      &          AND.ZET(LB(I2)).EQ.0)SIG=XPP(SRT)
3391            if((lb(i1).eq.-1.and.lb(i2).eq.-2) .or.
3392      &          (lb(i2).eq.-1.and.lb(i1).eq.-2))sig=xnp(srt)
3393 *     WITH LOW-ENERGY-CUTOFF
3394            IF (SRT .LT. 1.897) THEN
3395               SIGNN = SIG
3396            ELSE 
3397               SIGNN = 35.0 / (1. + (SRT - 1.897) * 100.0)  +  20.0
3398            ENDIF
3399         ENDIF 
3400         PX1CM=PCX
3401         PY1CM=PCY
3402         PZ1CM=PCZ
3403 clin-5/2008 Deuteron production cross sections were not included 
3404 c     in the previous parameterized inelastic cross section of NN collisions  
3405 c     (SIGinel=SIG-SIGNN), so they are added here:
3406         ianti=0
3407         if(lb(i1).lt.0 .and. lb(i2).lt.0) ianti=1
3408         call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
3409         sig=sig+sdprod
3410 c
3411 clin-5/2008 perturbative treatment of deuterons:
3412         ipdflag=0
3413         if(idpert.eq.1) then
3414 c     For idpert=1: ipert1=1 means we will first treat deuteron perturbatively,
3415 c     then we set ipert1=0 to treat regular NN or NbarNbar collisions including
3416 c     the regular deuteron productions.
3417 c     ipdflag=1 means perturbative deuterons are produced here:
3418            ipert1=1
3419            EC=2.012**2
3420 c     Use the same cross section for NN/NNBAR collisions 
3421 c     to trigger perturbative production
3422            sigr0=sig
3423 c     One can also trigger with X*sbbdm() so the weight will not be too small;
3424 c     but make sure to limit the maximum trigger Xsec:
3425 c           sigr0=sdprod*25.
3426 c           if(sigr0.ge.100.) sigr0=100.
3427            dspert=sqrt(sigr0/pi/10.)
3428            dsrpert=dspert+0.1
3429            CALL DISTCE(I1,I2,dsrpert,dspert,DT,EC,SRT,IC,
3430      1          PX1CM,PY1CM,PZ1CM)
3431            IF(IC.EQ.-1) GO TO 365
3432            signn0=0.
3433            CALL CRNN(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK,
3434      1          NTAG,signn0,sigr0,NT,ipert1)
3435            ipdflag=1
3436  365       continue
3437            ipert1=0
3438         endif
3439         if(idpert.eq.2) ipert1=1
3440 c
3441 clin-5/2008 in case perturbative deuterons are produced for idpert=1:
3442 c        IF(SIGNN.LE.0)GO TO 400
3443         IF(SIGNN.LE.0) then
3444            if(ipdflag.eq.1) iblock=501
3445            GO TO 400
3446         endif
3447 c
3448         EC=3.59709
3449         ds=sqrt(sig/pi/10.)
3450         dsr=ds+0.1
3451         IF((E(I1).GE.1.).AND.(e(I2).GE.1.))EC=4.75
3452         CALL DISTCE(I1,I2,dsr,ds,DT,EC,SRT,IC,
3453      1       PX1CM,PY1CM,PZ1CM)
3454 clin-5/2008 in case perturbative deuterons are produced above:
3455 c        IF(IC.EQ.-1) GO TO 400
3456         IF(IC.EQ.-1) then
3457            if(ipdflag.eq.1) iblock=501
3458            GO TO 400
3459         endif
3460 c
3461 * CALCULATE KAON PRODUCTION PROBABILITY FROM NUCLEON+NUCLEON OR 
3462 * RESONANCE+RESONANCE COLLISIONS
3463         go to 362
3464 
3465 C CHECK WHAT KIND OF COLLISION HAS HAPPENED 
3466  362    ekaon(1,iss)=ekaon(1,iss)+1
3467         CALL CRNN(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK,
3468      1       NTAG,SIGNN,SIG,NT,ipert1)
3469 clin-5/2008 give iblock # in case pert deuterons are produced for idpert=1:
3470         IF(iblock.eq.0.and.ipdflag.eq.1) iblock=501
3471 clin-5/2008 add iblock # for deuteron formation:
3472 c        IF(IBLOCK.EQ.4.OR.IBLOCK.Eq.9.or.iblock.ge.44.OR.IBLOCK.EQ.-9
3473 c     &       .or.iblock.eq.222)THEN
3474         IF(IBLOCK.EQ.4.OR.IBLOCK.Eq.9.or.iblock.ge.44.OR.IBLOCK.EQ.-9
3475      &       .or.iblock.eq.222.or.iblock.eq.501)THEN
3476 c
3477 c     !! sp12/17/01 above
3478 * momentum of the three particles in the final state have been calculated
3479 * in the crnn, go out of the loop
3480            LCOLL=LCOLL+1
3481            if(iblock.eq.4)then
3482               LDIRT=LDIRT+1
3483            elseif(iblock.eq.44)then
3484               LDdrho=LDdrho+1
3485            elseif(iblock.eq.45)then
3486               Lnnrho=Lnnrho+1
3487            elseif(iblock.eq.46)then
3488               Lnnom=Lnnom+1
3489            elseif(iblock .eq. 222)then
3490            elseIF(IBLOCK.EQ.9) then
3491               LNNK=LNNK+1
3492            elseIF(IBLOCK.EQ.-9) then
3493            endif
3494            GO TO 400
3495         ENDIF
3496 
3497         em1=e(i1)
3498         em2=e(i2)
3499         GO TO 440
3500 clin-8/2008 B+B->Deuteron+Meson over
3501 c
3502 clin-8/2008 Deuteron+Meson->B+B collisions:
3503  505    continue
3504         ianti=0
3505         if(lb(i1).lt.0 .or. lb(i2).lt.0) ianti=1
3506         call sdmbb(SRT,sdm,ianti)
3507         PX1CM=PCX
3508         PY1CM=PCY
3509         PZ1CM=PCZ
3510 c     minimum srt**2, note a 2.012GeV lower cutoff is used in N+N->Deuteron+pi:
3511         EC=2.012**2
3512         ds=sqrt(sdm/31.4)
3513         dsr=ds+0.1
3514         CALL DISTCE(I1,I2,dsr,ds,DT,EC,SRT,IC,PX1CM,PY1CM,PZ1CM)
3515         IF(IC.EQ.-1) GO TO 400
3516         CALL crdmbb(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK,
3517      1       NTAG,sdm,NT,ianti)
3518         LCOLL=LCOLL+1
3519         GO TO 400
3520 clin-8/2008 Deuteron+Meson->B+B collisions over
3521 c
3522 clin-9/2008 Deuteron+Baryon elastic collisions:
3523  506    continue
3524         ianti=0
3525         if(lb(i1).lt.0 .or. lb(i2).lt.0) ianti=1
3526         call sdbelastic(SRT,sdb)
3527         PX1CM=PCX
3528         PY1CM=PCY
3529         PZ1CM=PCZ
3530 c     minimum srt**2, note a 2.012GeV lower cutoff is used in N+N->Deuteron+pi:
3531         EC=2.012**2
3532         ds=sqrt(sdb/31.4)
3533         dsr=ds+0.1
3534         CALL DISTCE(I1,I2,dsr,ds,DT,EC,SRT,IC,PX1CM,PY1CM,PZ1CM)
3535         IF(IC.EQ.-1) GO TO 400
3536         CALL crdbel(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK,
3537      1       NTAG,sdb,NT,ianti)
3538         LCOLL=LCOLL+1
3539         GO TO 400
3540 clin-9/2008 Deuteron+Baryon elastic collisions over
3541 c
3542 * IF BARYON RESONANCE+BARYON RESONANCE COLLISIONS
3543  444    CONTINUE
3544 * PREPARE THE EALSTIC CROSS SECTION FOR BARYON+BARYON COLLISIONS
3545        CUTOFF=em1+em2+0.02
3546 * AT HIGH ENERGIES THE ISOSPIN DEPENDENCE IS NEGLIGIBLE
3547 * THE TOTAL CROSS SECTION IS TAKEN AS THAT OF THE PP 
3548        IF(SRT.LE.CUTOFF)GO TO 400
3549         IF(SRT.GT.2.245)THEN
3550        SIGNN=PP2(SRT)
3551        ELSE
3552         SIGNN = 35.0 / (1. + (SRT - CUTOFF) * 100.0)  +  20.0
3553        ENDIF 
3554        IF(SIGNN.LE.0)GO TO 400
3555       CALL XDDIN(PCX,PCY,PCZ,SRT,I1,I2,
3556      &XINEL,SIGK,XSK1,XSK2,XSK3,XSK4,XSK5)
3557        SIG=SIGNN+XINEL
3558        EC=(EM1+EM2+0.02)**2
3559         PX1CM=PCX
3560         PY1CM=PCY
3561         PZ1CM=PCZ
3562 
3563 clin-6/2008 Deuteron production:
3564         ianti=0
3565         if(lb(i1).lt.0 .and. lb(i2).lt.0) ianti=1
3566         call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
3567         sig=sig+sdprod
3568 clin-6/2008 perturbative treatment of deuterons:
3569         ipdflag=0
3570         if(idpert.eq.1) then
3571            ipert1=1
3572            sigr0=sig
3573            dspert=sqrt(sigr0/pi/10.)
3574            dsrpert=dspert+0.1
3575            CALL DISTCE(I1,I2,dsrpert,dspert,DT,EC,SRT,IC,
3576      1          PX1CM,PY1CM,PZ1CM)
3577            IF(IC.EQ.-1) GO TO 367
3578            signn0=0.
3579            CALL CRDD(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3580      1          IBLOCK,NTAG,SIGNN0,SIGr0,NT,ipert1)
3581 c     1          IBLOCK,NTAG,SIGNN,SIG)
3582            ipdflag=1
3583  367       continue
3584            ipert1=0
3585         endif
3586         if(idpert.eq.2) ipert1=1
3587 c
3588         ds=sqrt(sig/31.4)
3589         dsr=ds+0.1
3590         CALL DISTCE(I1,I2,dsr,ds,DT,EC,SRT,IC,
3591      1  PX1CM,PY1CM,PZ1CM)
3592 c        IF(IC.EQ.-1) GO TO 400
3593         IF(IC.EQ.-1) then
3594            if(ipdflag.eq.1) iblock=501
3595            GO TO 400
3596         endif
3597 
3598 * CALCULATE KAON PRODUCTION PROBABILITY FROM NUCLEON+NUCLEON OR 
3599 * RESONANCE+RESONANCE COLLISIONS
3600        go to 364
3601 
3602 C CHECK WHAT KIND OF COLLISION HAS HAPPENED 
3603 364       ekaon(2,iss)=ekaon(2,iss)+1
3604 * for resonance+resonance
3605 clin-6/2008:
3606         CALL CRDD(IRUN,PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3607      1  IBLOCK,NTAG,SIGNN,SIG,NT,ipert1)
3608 c     1  IBLOCK,NTAG,SIGNN,SIG)
3609         IF(iblock.eq.0.and.ipdflag.eq.1) iblock=501
3610 c
3611         IF(iabs(IBLOCK).EQ.10)THEN
3612 * momentum of the three particles in the final state have been calculated
3613 * in the crnn, go out of the loop
3614            LCOLL=LCOLL+1
3615            IF(IBLOCK.EQ.10)THEN
3616               LDDK=LDDK+1
3617            elseIF(IBLOCK.EQ.-10) then
3618            endif
3619            GO TO 400
3620         ENDIF
3621 clin-6/2008
3622 c        if(iblock .eq. 222)then
3623         if(iblock .eq. 222.or.iblock.eq.501)then
3624 c    !! sp12/17/01 
3625            GO TO 400
3626         ENDIF
3627         em1=e(i1)
3628         em2=e(i2)
3629         GO TO 440
3630 * FOR PION+PION,pion+eta, eta+eta and rho(omega)+pion(rho,omega) or eta 
3631 777       CONTINUE
3632         PX1CM=PCX
3633         PY1CM=PCY
3634         PZ1CM=PCZ
3635 * energy thresh for collisions
3636        ec0=em1+em2+0.02
3637        IF(SRT.LE.ec0)GO TO 400
3638        ec=(em1+em2+0.02)**2
3639 * we negelect the elastic collision between mesons except that betwen
3640 * two pions because of the lack of information about these collisions
3641 * However, we do let them to collide inelastically to produce kaons
3642 clin-8/15/02       ppel=1.e-09
3643        ppel=20.
3644         ipp=1
3645        if(lb1.lt.3.or.lb1.gt.5.or.lb2.lt.3.or.lb2.gt.5)go to 778       
3646        CALL PPXS(LB1,LB2,SRT,PPSIG,spprho,IPP)
3647        ppel=ppsig
3648 778       ppink=pipik(srt)
3649 
3650 * pi+eta and eta+eta are assumed to be the same as pipik( for pi+pi -> K+K-) 
3651 * estimated from Ko's paper:
3652         ppink = 2.0 * ppink
3653        if(lb1.ge.25.and.lb2.ge.25) ppink=rrkk
3654 
3655 clin-2/13/03 include omega the same as rho, eta the same as pi:
3656 c        if(((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.25.and.lb2.le.27))
3657 c     1  .or.((lb2.ge.3.and.lb2.le.5).and.(lb1.ge.25.and.lb1.le.27)))
3658         if( ( (lb1.eq.0.or.(lb1.ge.3.and.lb1.le.5))
3659      1       .and.(lb2.ge.25.and.lb2.le.28))
3660      2       .or. ( (lb2.eq.0.or.(lb2.ge.3.and.lb2.le.5))
3661      3       .and.(lb1.ge.25.and.lb1.le.28))) then
3662            ppink=0.
3663            if(srt.ge.(aka+aks)) ppink = prkk
3664         endif
3665 
3666 c pi pi <-> rho rho:
3667         call spprr(lb1,lb2,srt)
3668 clin-4/03/02 pi pi <-> eta eta:
3669         call sppee(lb1,lb2,srt)
3670 clin-4/03/02 pi pi <-> pi eta:
3671         call spppe(lb1,lb2,srt)
3672 clin-4/03/02 rho pi <-> rho eta:
3673         call srpre(lb1,lb2,srt)
3674 clin-4/03/02 omega pi <-> omega eta:
3675         call sopoe(lb1,lb2,srt)
3676 clin-4/03/02 rho rho <-> eta eta:
3677         call srree(lb1,lb2,srt)
3678 
3679         ppinnb=0.
3680         if(srt.gt.thresh(1)) then
3681            call getnst(srt)
3682            if(lb1.ge.3.and.lb1.le.5.and.lb2.ge.3.and.lb2.le.5) then
3683               ppinnb=ppbbar(srt)
3684            elseif((lb1.ge.3.and.lb1.le.5.and.lb2.ge.25.and.lb2.le.27)
3685      1 .or.(lb2.ge.3.and.lb2.le.5.and.lb1.ge.25.and.lb1.le.27)) then
3686               ppinnb=prbbar(srt)
3687            elseif(lb1.ge.25.and.lb1.le.27
3688      1             .and.lb2.ge.25.and.lb2.le.27) then
3689               ppinnb=rrbbar(srt)
3690            elseif((lb1.ge.3.and.lb1.le.5.and.lb2.eq.28)
3691      1             .or.(lb2.ge.3.and.lb2.le.5.and.lb1.eq.28)) then
3692               ppinnb=pobbar(srt)
3693            elseif((lb1.ge.25.and.lb1.le.27.and.lb2.eq.28)
3694      1             .or.(lb2.ge.25.and.lb2.le.27.and.lb1.eq.28)) then
3695               ppinnb=robbar(srt)
3696            elseif(lb1.eq.28.and.lb2.eq.28) then
3697               ppinnb=oobbar(srt)
3698            else
3699               if(lb1.ne.0.and.lb2.ne.0) 
3700      1             write(6,*) 'missed MM lb1,lb2=',lb1,lb2
3701            endif
3702         endif
3703         ppin=ppink+ppinnb+pprr+ppee+pppe+rpre+xopoe+rree
3704 
3705 * check if a collision can happen
3706        if((ppel+ppin).le.0.01)go to 400
3707        DSPP=SQRT((ppel+ppin)/31.4)
3708        dsppr=dspp+0.1
3709         CALL DISTCE(I1,I2,dsppr,DSPP,DT,EC,SRT,IC,
3710      1  PX1CM,PY1CM,PZ1CM)
3711         IF(IC.EQ.-1) GO TO 400
3712        if(ppel.eq.0)go to 400
3713 * the collision can happen
3714 * check what kind collision has happened
3715        ekaon(5,iss)=ekaon(5,iss)+1
3716         CALL CRPP(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3717      1  IBLOCK,ppel,ppin,spprho,ipp)
3718 
3719 * rho formation, go to 400
3720 c       if(iblock.eq.666)go to 600
3721        if(iblock.eq.666)go to 555
3722        if(iblock.eq.6)LPP=LPP+1
3723        if(iblock.eq.66)then
3724           LPPk=LPPk+1
3725        elseif(iblock.eq.366)then
3726           LPPk=LPPk+1
3727        elseif(iblock.eq.367)then
3728           LPPk=LPPk+1
3729        endif
3730        em1=e(i1)
3731        em2=e(i2)
3732        go to 440
3733 
3734 * In this block we treat annihilations of
3735 clin-9/28/00* an anti-nucleon and a baryon or baryon resonance  
3736 * an anti-baryon and a baryon (including resonances)
3737 2799        CONTINUE
3738         PX1CM=PCX
3739         PY1CM=PCY
3740         PZ1CM=PCZ
3741         EC=(em1+em2+0.02)**2
3742 clin assume the same cross section (as a function of sqrt s) as for PPbar:
3743 
3744 clin-ctest annih maximum
3745 c        DSppb=SQRT(amin1(xppbar(srt),30.)/PI/10.)
3746        DSppb=SQRT(xppbar(srt)/PI/10.)
3747        dsppbr=dsppb+0.1
3748         CALL DISTCE(I1,I2,dsppbr,DSppb,DT,EC,SRT,IC,
3749      1  PX1CM,PY1CM,PZ1CM)
3750         IF(IC.EQ.-1) GO TO 400
3751         CALL Crppba(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3752      1  IBLOCK)
3753        em1=e(i1)
3754        em2=e(i2)
3755        go to 440
3756 c
3757 3555    PX1CM=PCX
3758         PY1CM=PCY
3759         PZ1CM=PCZ
3760         EC=(em1+em2+0.02)**2
3761        DSkk=SQRT(SIG/PI/10.)
3762        dskk0=dskk+0.1
3763         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3764      1  PX1CM,PY1CM,PZ1CM)
3765         IF(IC.EQ.-1) GO TO 400
3766         CALL Crlaba(PX1CM,PY1CM,PZ1CM,SRT,brel,brsgm,
3767      &                  I1,I2,nt,IBLOCK,nchrg,icase)
3768        em1=e(i1)
3769        em2=e(i2)
3770        go to 440
3771 *
3772 c perturbative production of cascade and omega
3773 3455    PX1CM=PCX
3774         PY1CM=PCY
3775         PZ1CM=PCZ
3776         call pertur(PX1CM,PY1CM,PZ1CM,SRT,IRUN,I1,I2,nt,kp,icontp)
3777         if(icontp .eq. 0)then
3778 c     inelastic collisions:
3779          em1 = e(i1)
3780          em2 = e(i2)
3781          iblock = 727
3782           go to 440
3783         endif
3784 c     elastic collisions:
3785         if (e(i1) .eq. 0.) go to 800
3786         if (e(i2) .eq. 0.) go to 600
3787         go to 400
3788 *
3789 c* phi + N --> pi+N(D),  N(D,N*)+N(D,N*),  K+ +La
3790 c* phi + D --> pi+N(D)
3791 7222        CONTINUE
3792         PX1CM=PCX
3793         PY1CM=PCY
3794         PZ1CM=PCZ
3795         EC=(em1+em2+0.02)**2
3796         CALL XphiB(LB1, LB2, EM1, EM2, SRT,
3797      &             XSK1, XSK2, XSK3, XSK4, XSK5, SIGP)
3798        DSkk=SQRT(SIGP/PI/10.)
3799        dskk0=dskk+0.1
3800         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3801      1  PX1CM,PY1CM,PZ1CM)
3802         IF(IC.EQ.-1) GO TO 400
3803         CALL CRPHIB(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3804      &     XSK1, XSK2, XSK3, XSK4, XSK5, SIGP, IBLOCK)
3805        em1=e(i1)
3806        em2=e(i2)
3807        go to 440
3808 *
3809 c* phi + M --> K+ + K* .....
3810 7444        CONTINUE
3811         PX1CM=PCX
3812         PY1CM=PCY
3813         PZ1CM=PCZ
3814         EC=(em1+em2+0.02)**2
3815         CALL PHIMES(I1, I2, SRT, XSK1, XSK2, XSK3, XSK4, XSK5,
3816      1     XSK6, XSK7, SIGPHI)
3817        DSkk=SQRT(SIGPHI/PI/10.)
3818        dskk0=dskk+0.1
3819         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3820      1  PX1CM,PY1CM,PZ1CM)
3821         IF(IC.EQ.-1) GO TO 400
3822 c*---
3823         PZRT = p(3,i1)+p(3,i2)
3824         ER1 = sqrt( p(1,i1)**2+p(2,i1)**2+p(3,i1)**2+E(i1)**2 )
3825         ER2 = sqrt( p(1,i2)**2+p(2,i2)**2+p(3,i2)**2+E(i2)**2 )
3826         ERT = ER1+ER2
3827         yy = 0.5*log( (ERT+PZRT)/(ERT-PZRT) )
3828 c*------
3829         CALL CRPHIM(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3830      &  XSK1, XSK2, XSK3, XSK4, XSK5, XSK6, SIGPHI, IKKG, IKKL, IBLOCK)
3831        em1=e(i1)
3832        em2=e(i2)
3833        go to 440
3834 c
3835 c lambda-N elastic xsection, Li & Ko, PRC 54(1996)1897.
3836  7799    CONTINUE
3837          PX1CM=PCX
3838          PY1CM=PCY
3839          PZ1CM=PCZ
3840          EC=(em1+em2+0.02)**2
3841          call lambar(i1,i2,srt,siglab)
3842         DShn=SQRT(siglab/PI/10.)
3843         dshnr=dshn+0.1
3844          CALL DISTCE(I1,I2,dshnr,DShn,DT,EC,SRT,IC,
3845      1    PX1CM,PY1CM,PZ1CM)
3846         IF(IC.EQ.-1) GO TO 400
3847          CALL Crhb(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
3848         em1=e(i1)
3849         em2=e(i2)
3850         go to 440
3851 c
3852 c* K+ + La(Si) --> Meson + B
3853 c* K- + La(Si)-bar --> Meson + B-bar
3854 5699        CONTINUE
3855         PX1CM=PCX
3856         PY1CM=PCY
3857         PZ1CM=PCZ
3858         EC=(em1+em2+0.02)**2
3859         CALL XKHYPE(I1, I2, SRT, XKY1, XKY2, XKY3, XKY4, XKY5,
3860      &     XKY6, XKY7, XKY8, XKY9, XKY10, XKY11, XKY12, XKY13,
3861      &     XKY14, XKY15, XKY16, XKY17, SIGK)
3862        DSkk=SQRT(sigk/PI)
3863        dskk0=dskk+0.1
3864         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3865      1  PX1CM,PY1CM,PZ1CM)
3866         IF(IC.EQ.-1) GO TO 400
3867 c
3868        if(lb(i1).eq.23 .or. lb(i2).eq.23)then
3869              IKMP = 1
3870         else
3871              IKMP = -1
3872         endif
3873         CALL Crkhyp(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3874      &     XKY1, XKY2, XKY3, XKY4, XKY5,
3875      &     XKY6, XKY7, XKY8, XKY9, XKY10, XKY11, XKY12, XKY13,
3876      &     XKY14, XKY15, XKY16, XKY17, SIGK, IKMP,
3877      1  IBLOCK)
3878        em1=e(i1)
3879        em2=e(i2)
3880        go to 440
3881 c khyperon end
3882 *
3883 csp11/03/01 La/Si-bar + N --> pi + K+
3884 c  La/Si + N-bar --> pi + K-
3885 5999     CONTINUE
3886         PX1CM=PCX
3887         PY1CM=PCY
3888         PZ1CM=PCZ
3889         EC=(em1+em2+0.02)**2
3890         sigkp = 15.
3891 c      if((lb1.ge.14.and.lb1.le.17)
3892 c     &    .or.(lb2.ge.14.and.lb2.le.17))sigkp=10.
3893         DSkk=SQRT(SIGKP/PI/10.)
3894         dskk0=dskk+0.1
3895         CALL DISTCE(I1,I2,dskk0,DSkk,DT,EC,SRT,IC,
3896      1  PX1CM,PY1CM,PZ1CM)
3897         IF(IC.EQ.-1) GO TO 400
3898 c
3899         CALL CRLAN(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)
3900         em1=e(i1)
3901         em2=e(i2)
3902         go to 440
3903 c
3904 c*
3905 * K(K*) + K(K*) --> phi + pi(rho,omega)
3906 8699     CONTINUE
3907         PX1CM=PCX
3908         PY1CM=PCY
3909         PZ1CM=PCZ
3910         EC=(em1+em2+0.02)**2
3911 *  CALL CROSSKKPHI(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)  used for KK*->phi+rho
3912 
3913          CALL Crkphi(PX1CM,PY1CM,PZ1CM,EC,SRT,IBLOCK,
3914      &                  emm1,emm2,lbp1,lbp2,I1,I2,ikk,icase,rrkk,prkk)
3915          if(icase .eq. 0) then
3916             iblock=0
3917             go to 400
3918          endif
3919 
3920 c*---
3921          if(lbp1.eq.29.or.lbp2.eq.29) then
3922         PZRT = p(3,i1)+p(3,i2)
3923         ER1 = sqrt( p(1,i1)**2+p(2,i1)**2+p(3,i1)**2+E(i1)**2 )
3924         ER2 = sqrt( p(1,i2)**2+p(2,i2)**2+p(3,i2)**2+E(i2)**2 )
3925         ERT = ER1+ER2
3926         yy = 0.5*log( (ERT+PZRT)/(ERT-PZRT) )
3927 c*------
3928              iblock = 222
3929              ntag = 0
3930           endif
3931 
3932              LB(I1) = lbp1
3933              LB(I2) = lbp2
3934              E(I1) = emm1
3935              E(I2) = emm2
3936              em1=e(i1)
3937              em2=e(i2)
3938              go to 440
3939 c*
3940 * rho(omega) + K(K*)  --> phi + K(K*)
3941 8799     CONTINUE
3942         PX1CM=PCX
3943         PY1CM=PCY
3944         PZ1CM=PCZ
3945         EC=(em1+em2+0.02)**2
3946 *  CALL CROSSKKPHI(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,IBLOCK)  used for KK*->phi+rho
3947          CALL Crksph(PX1CM,PY1CM,PZ1CM,EC,SRT,
3948      &       emm1,emm2,lbp1,lbp2,I1,I2,ikkg,ikkl,iblock,icase,srhoks)
3949          if(icase .eq. 0) then
3950             iblock=0
3951             go to 400
3952          endif
3953 c
3954          if(lbp1.eq.29.or.lbp2.eq.20) then
3955 c*---
3956         PZRT = p(3,i1)+p(3,i2)
3957         ER1 = sqrt( p(1,i1)**2+p(2,i1)**2+p(3,i1)**2+E(i1)**2 )
3958         ER2 = sqrt( p(1,i2)**2+p(2,i2)**2+p(3,i2)**2+E(i2)**2 )
3959         ERT = ER1+ER2
3960         yy = 0.5*log( (ERT+PZRT)/(ERT-PZRT) )
3961           endif
3962 
3963              LB(I1) = lbp1
3964              LB(I2) = lbp2
3965              E(I1) = emm1
3966              E(I2) = emm2
3967              em1=e(i1)
3968              em2=e(i2)
3969              go to 440
3970 
3971 * for kaon+baryon scattering, using a constant xsection of 10 mb.
3972 888       CONTINUE
3973         PX1CM=PCX
3974         PY1CM=PCY
3975         PZ1CM=PCZ
3976         EC=(em1+em2+0.02)**2
3977          sig = 10.
3978          if(iabs(lb1).eq.14.or.iabs(lb2).eq.14 .or.
3979      &      iabs(lb1).eq.30.or.iabs(lb2).eq.30)sig=20.
3980          if(lb1.eq.29.or.lb2.eq.29)sig=5.0
3981 
3982        DSkn=SQRT(sig/PI/10.)
3983        dsknr=dskn+0.1
3984         CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
3985      1  PX1CM,PY1CM,PZ1CM)
3986         IF(IC.EQ.-1) GO TO 400
3987         CALL Crkn(PX1CM,PY1CM,PZ1CM,SRT,I1,I2,
3988      1  IBLOCK)
3989        em1=e(i1)
3990        em2=e(i2)
3991        go to 440
3992 ***
3993 
3994  440    CONTINUE
3995 *                IBLOCK = 0 ; NOTHING HAS HAPPENED
3996 *                IBLOCK = 1 ; ELASTIC N-N COLLISION
3997 *                IBLOCK = 2 ; N + N -> N + DELTA
3998 *                IBLOCK = 3 ; N + DELTA -> N + N
3999 *                IBLOCK = 4 ; N + N -> d + d + PION,DIRECT PROCESS
4000 *               IBLOCK = 5 ; D(N*)+D(N*) COLLISIONS
4001 *                IBLOCK = 6 ; PION+PION COLLISIONS
4002 *                iblock = 7 ; pion+nucleon-->l/s+kaon
4003 *               iblock =77;  pion+nucleon-->delta+pion
4004 *               iblock = 8 ; kaon+baryon rescattering
4005 *                IBLOCK = 9 ; NN-->KAON+X
4006 *                IBLOCK = 10; DD-->KAON+X
4007 *               IBLOCK = 11; ND-->KAON+X
4008 cbali2/1/99
4009 *                
4010 *           iblock   - 1902 annihilation-->pion(+)+pion(-)   (2 pion)
4011 *           iblock   - 1903 annihilation-->pion(+)+rho(-)    (3 pion)
4012 *           iblock   - 1904 annihilation-->rho(+)+rho(-)     (4 pion)
4013 *           iblock   - 1905 annihilation-->rho(0)+omega      (5 pion)
4014 *           iblock   - 1906 annihilation-->omega+omega       (6 pion)
4015 cbali3/5/99
4016 *           iblock   - 1907 K+K- to pi+pi-
4017 cbali3/5/99 end
4018 cbz3/9/99 khyperon
4019 *           iblock   - 1908 K+Y -> piN
4020 cbz3/9/99 khyperon end
4021 cbali2/1/99end
4022 
4023 clin-9/28/00 Processes: m(pi rho omega)+m(pi rho omega)
4024 c     to anti-(p n D N*1 N*2)+(p n D N*1 N*2):
4025 *           iblock   - 1801  mm -->pbar p 
4026 *           iblock   - 18021 mm -->pbar n 
4027 *           iblock   - 18022 mm -->nbar p 
4028 *           iblock   - 1803  mm -->nbar n 
4029 *           iblock   - 18041 mm -->pbar Delta 
4030 *           iblock   - 18042 mm -->anti-Delta p
4031 *           iblock   - 18051 mm -->nbar Delta 
4032 *           iblock   - 18052 mm -->anti-Delta n
4033 *           iblock   - 18061 mm -->pbar N*(1400) 
4034 *           iblock   - 18062 mm -->anti-N*(1400) p
4035 *           iblock   - 18071 mm -->nbar N*(1400)
4036 *           iblock   - 18072 mm -->anti-N*(1400) n
4037 *           iblock   - 1808  mm -->anti-Delta Delta 
4038 *           iblock   - 18091 mm -->pbar N*(1535)
4039 *           iblock   - 18092 mm -->anti-N*(1535) p
4040 *           iblock   - 18101 mm -->nbar N*(1535)
4041 *           iblock   - 18102 mm -->anti-N*(1535) n
4042 *           iblock   - 18111 mm -->anti-Delta N*(1440)
4043 *           iblock   - 18112 mm -->anti-N*(1440) Delta
4044 *           iblock   - 18121 mm -->anti-Delta N*(1535)
4045 *           iblock   - 18122 mm -->anti-N*(1535) Delta
4046 *           iblock   - 1813  mm -->anti-N*(1440) N*(1440)
4047 *           iblock   - 18141 mm -->anti-N*(1440) N*(1535)
4048 *           iblock   - 18142 mm -->anti-N*(1535) N*(1440)
4049 *           iblock   - 1815  mm -->anti-N*(1535) N*(1535)
4050 clin-9/28/00-end
4051 
4052 clin-10/08/00 Processes: pi pi <-> rho rho
4053 *           iblock   - 1850  pi pi -> rho rho
4054 *           iblock   - 1851  rho rho -> pi pi
4055 clin-10/08/00-end
4056 
4057 clin-08/14/02 Processes: pi pi <-> eta eta
4058 *           iblock   - 1860  pi pi -> eta eta
4059 *           iblock   - 1861  eta eta -> pi pi
4060 * Processes: pi pi <-> pi eta
4061 *           iblock   - 1870  pi pi -> pi eta
4062 *           iblock   - 1871  pi eta -> pi pi
4063 * Processes: rho pi <-> rho eta
4064 *           iblock   - 1880  pi pi -> pi eta
4065 *           iblock   - 1881  pi eta -> pi pi
4066 * Processes: omega pi <-> omega eta
4067 *           iblock   - 1890  pi pi -> pi eta
4068 *           iblock   - 1891  pi eta -> pi pi
4069 * Processes: rho rho <-> eta eta
4070 *           iblock   - 1895  rho rho -> eta eta
4071 *           iblock   - 1896  eta eta -> rho rho
4072 clin-08/14/02-end
4073 
4074 clin-11/07/00 Processes: 
4075 *           iblock   - 366  pi rho -> K* Kbar or K*bar K
4076 *           iblock   - 466  pi rho <- K* Kbar or K*bar K
4077 
4078 clin-9/2008 Deuteron:
4079 *           iblock   - 501  B+B -> Deuteron+Meson
4080 *           iblock   - 502  Deuteron+Meson -> B+B
4081 *           iblock   - 503  Deuteron+Baryon elastic
4082 *           iblock   - 504  Deuteron+Meson elastic
4083 c
4084                  IF(IBLOCK.EQ.0)        GOTO 400
4085 *COM: FOR DIRECT PROCESS WE HAVE TREATED THE PAULI BLOCKING AND FIND
4086 *     THE MOMENTUM OF PARTICLES IN THE ''LAB'' FRAME. SO GO TO 400
4087 * A COLLISION HAS TAKEN PLACE !!
4088               LCOLL = LCOLL +1
4089 * WAS COLLISION PAULI-FORBIDEN? IF YES, NTAG = -1
4090               NTAG = 0
4091 *
4092 *             LORENTZ-TRANSFORMATION INTO CMS FRAME
4093               E1CM    = SQRT (EM1**2 + PX1CM**2 + PY1CM**2 + PZ1CM**2)
4094               P1BETA  = PX1CM*BETAX + PY1CM*BETAY + PZ1CM*BETAZ
4095               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
4096               Pt1I1 = BETAX * TRANSF + PX1CM
4097               Pt2I1 = BETAY * TRANSF + PY1CM
4098               Pt3I1 = BETAZ * TRANSF + PZ1CM
4099 * negelect the pauli blocking at high energies
4100               go to 90002
4101 
4102 clin-10/25/02-comment out following, since there is no path to it:
4103 c*CHECK IF PARTICLE #1 IS PAULI BLOCKED
4104 c              CALL PAULat(I1,occup)
4105 c              if (RANART(NSEED) .lt. occup) then
4106 c                ntag = -1
4107 c              else
4108 c                ntag = 0
4109 c              end if
4110 clin-10/25/02-end
4111 
4112 90002              continue
4113 *IF PARTICLE #1 IS NOT PAULI BLOCKED
4114 c              IF (NTAG .NE. -1) THEN
4115                 E2CM    = SQRT (EM2**2 + PX1CM**2 + PY1CM**2 + PZ1CM**2)
4116                 TRANSF  = GAMMA * (-GAMMA*P1BETA / (GAMMA + 1.) + E2CM)
4117                 Pt1I2 = BETAX * TRANSF - PX1CM
4118                 Pt2I2 = BETAY * TRANSF - PY1CM
4119                 Pt3I2 = BETAZ * TRANSF - PZ1CM
4120               go to 90003
4121 
4122 clin-10/25/02-comment out following, since there is no path to it:
4123 c*CHECK IF PARTICLE #2 IS PAULI BLOCKED
4124 c                CALL PAULat(I2,occup)
4125 c                if (RANART(NSEED) .lt. occup) then
4126 c                  ntag = -1
4127 c                else
4128 c                  ntag = 0
4129 c                end if
4130 cc              END IF
4131 c* IF COLLISION IS BLOCKED,RESTORE THE MOMENTUM,MASSES
4132 c* AND LABELS OF I1 AND I2
4133 cc             IF (NTAG .EQ. -1) THEN
4134 c                LBLOC  = LBLOC + 1
4135 c                P(1,I1) = PX1
4136 c                P(2,I1) = PY1
4137 c                P(3,I1) = PZ1
4138 c                P(1,I2) = PX2
4139 c                P(2,I2) = PY2
4140 c                P(3,I2) = PZ2
4141 c                E(I1)   = EM1
4142 c                E(I2)   = EM2
4143 c                LB(I1)  = LB1
4144 c                LB(I2)  = LB2
4145 cc              ELSE
4146 clin-10/25/02-end
4147 
4148 90003           IF(IBLOCK.EQ.1) LCNNE=LCNNE+1
4149               IF(IBLOCK.EQ.5) LDD=LDD+1
4150                 if(iblock.eq.2) LCNND=LCNND+1
4151               IF(IBLOCK.EQ.8) LKN=LKN+1
4152                    if(iblock.eq.43) Ldou=Ldou+1
4153 c                IF(IBLOCK.EQ.2) THEN
4154 * CALCULATE THE AVERAGE SRT FOR N + N---> N + DELTA PROCESS
4155 C                NODELT=NODELT+1
4156 C                SUMSRT=SUMSRT+SRT
4157 c                ENDIF
4158                 IF(IBLOCK.EQ.3) LCNDN=LCNDN+1
4159 * assign final momenta to particles while keep the leadng particle
4160 * behaviour
4161 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
4162               p(1,i1)=pt1i1
4163               p(2,i1)=pt2i1
4164               p(3,i1)=pt3i1
4165               p(1,i2)=pt1i2
4166               p(2,i2)=pt2i2
4167               p(3,i2)=pt3i2
4168 C              else
4169 C              p(1,i1)=pt1i2
4170 C              p(2,i1)=pt2i2
4171 C              p(3,i1)=pt3i2
4172 C              p(1,i2)=pt1i1
4173 C              p(2,i2)=pt2i1
4174 C              p(3,i2)=pt3i1
4175 C              endif
4176                 PX1     = P(1,I1)
4177                 PY1     = P(2,I1)
4178                 PZ1     = P(3,I1)
4179                 EM1     = E(I1)
4180                 EM2     = E(I2)
4181                 LB1     = LB(I1)
4182                 LB2     = LB(I2)
4183                 ID(I1)  = 2
4184                 ID(I2)  = 2
4185                 E1      = SQRT( EM1**2 + PX1**2 + PY1**2 + PZ1**2 )
4186                 ID1     = ID(I1)
4187               go to 90004
4188 clin-10/25/02-comment out following, since there is no path to it:
4189 c* change phase space density FOR NUCLEONS INVOLVED :
4190 c* NOTE THAT f is the phase space distribution function for nucleons only
4191 c                if ((abs(ix1).le.mx) .and. (abs(iy1).le.my) .and.
4192 c     &              (abs(iz1).le.mz)) then
4193 c                  ipx1p = nint(p(1,i1)/dpx)
4194 c                  ipy1p = nint(p(2,i1)/dpy)
4195 c                  ipz1p = nint(p(3,i1)/dpz)
4196 c                  if ((ipx1p.ne.ipx1) .or. (ipy1p.ne.ipy1) .or.
4197 c     &                (ipz1p.ne.ipz1)) then
4198 c                    if ((abs(ipx1).le.mpx) .and. (abs(ipy1).le.my)
4199 c     &                .and. (ipz1.ge.-mpz) .and. (ipz1.le.mpzp)
4200 c     &                .AND. (AM1.LT.1.))
4201 c     &                f(ix1,iy1,iz1,ipx1,ipy1,ipz1) =
4202 c     &                f(ix1,iy1,iz1,ipx1,ipy1,ipz1) - 1.
4203 c                    if ((abs(ipx1p).le.mpx) .and. (abs(ipy1p).le.my)
4204 c     &                .and. (ipz1p.ge.-mpz).and. (ipz1p.le.mpzp)
4205 c     &                .AND. (EM1.LT.1.))
4206 c     &                f(ix1,iy1,iz1,ipx1p,ipy1p,ipz1p) =
4207 c     &                f(ix1,iy1,iz1,ipx1p,ipy1p,ipz1p) + 1.
4208 c                  end if
4209 c                end if
4210 c                if ((abs(ix2).le.mx) .and. (abs(iy2).le.my) .and.
4211 c     &              (abs(iz2).le.mz)) then
4212 c                  ipx2p = nint(p(1,i2)/dpx)
4213 c                  ipy2p = nint(p(2,i2)/dpy)
4214 c                  ipz2p = nint(p(3,i2)/dpz)
4215 c                  if ((ipx2p.ne.ipx2) .or. (ipy2p.ne.ipy2) .or.
4216 c     &                (ipz2p.ne.ipz2)) then
4217 c                    if ((abs(ipx2).le.mpx) .and. (abs(ipy2).le.my)
4218 c     &                .and. (ipz2.ge.-mpz) .and. (ipz2.le.mpzp)
4219 c     &                .AND. (AM2.LT.1.))
4220 c     &                f(ix2,iy2,iz2,ipx2,ipy2,ipz2) =
4221 c     &                f(ix2,iy2,iz2,ipx2,ipy2,ipz2) - 1.
4222 c                    if ((abs(ipx2p).le.mpx) .and. (abs(ipy2p).le.my)
4223 c     &                .and. (ipz2p.ge.-mpz) .and. (ipz2p.le.mpzp)
4224 c     &                .AND. (EM2.LT.1.))
4225 c     &                f(ix2,iy2,iz2,ipx2p,ipy2p,ipz2p) =
4226 c     &                f(ix2,iy2,iz2,ipx2p,ipy2p,ipz2p) + 1.
4227 c                  end if
4228 c                end if
4229 clin-10/25/02-end
4230 
4231 90004              continue
4232             AM1=EM1
4233             AM2=EM2
4234 c            END IF
4235 
4236 
4237   400       CONTINUE
4238 c
4239 clin-6/10/03 skips the info output on resonance creations:
4240 c            goto 550
4241 cclin-4/30/03 study phi,K*,Lambda(1520) resonances at creation:
4242 cc     note that no decays give these particles, so don't need to consider nnn:
4243 c            if(iblock.ne.0.and.(lb(i1).eq.29.or.iabs(lb(i1)).eq.30
4244 c     1           .or.lb(i2).eq.29.or.iabs(lb(i2)).eq.30
4245 c     2           .or.lb1i.eq.29.or.iabs(lb1i).eq.30
4246 c     3           .or.lb2i.eq.29.or.iabs(lb2i).eq.30)) then
4247 c               lb1now=lb(i1)
4248 c               lb2now=lb(i2)
4249 cc
4250 c               nphi0=0
4251 c               nksp0=0
4252 c               nksm0=0
4253 cc               nlar0=0
4254 cc               nlarbar0=0
4255 c               if(lb1i.eq.29) then
4256 c                  nphi0=nphi0+1
4257 c               elseif(lb1i.eq.30) then
4258 c                  nksp0=nksp0+1
4259 c               elseif(lb1i.eq.-30) then
4260 c                  nksm0=nksm0+1
4261 c               endif
4262 c               if(lb2i.eq.29) then
4263 c                  nphi0=nphi0+1
4264 c               elseif(lb2i.eq.30) then
4265 c                  nksp0=nksp0+1
4266 c               elseif(lb2i.eq.-30) then
4267 c                  nksm0=nksm0+1
4268 c               endif
4269 cc
4270 c               nphi=0
4271 c               nksp=0
4272 c               nksm=0
4273 c               nlar=0
4274 c               nlarbar=0
4275 c               if(lb1now.eq.29) then
4276 c                  nphi=nphi+1
4277 c               elseif(lb1now.eq.30) then
4278 c                  nksp=nksp+1
4279 c               elseif(lb1now.eq.-30) then
4280 c                  nksm=nksm+1
4281 c               endif
4282 c               if(lb2now.eq.29) then
4283 c                  nphi=nphi+1
4284 c               elseif(lb2now.eq.30) then
4285 c                  nksp=nksp+1
4286 c               elseif(lb2now.eq.-30) then
4287 c                  nksm=nksm+1
4288 c               endif
4289 cc     
4290 c               if(nphi.eq.2.or.nksp.eq.2.or.nksm.eq.2) then
4291 c                  write(91,*) '2 same resonances in one reaction!'
4292 c                  write(91,*) nphi,nksp,nksm,iblock
4293 c               endif
4294 c
4295 cc     All reactions create or destroy no more than 1 these resonance,
4296 cc     otherwise file "fort.91" warns us:
4297 c               do 222 ires=1,3
4298 c                  if(ires.eq.1.and.nphi.ne.nphi0) then
4299 c                     idr=29
4300 c                  elseif(ires.eq.2.and.nksp.ne.nksp0) then
4301 c                     idr=30
4302 c                  elseif(ires.eq.3.and.nksm.ne.nksm0) then
4303 c                     idr=-30
4304 c                  else
4305 c                     goto 222
4306 c                  endif
4307 cctest off for resonance (phi, K*) studies:
4308 cc               if(lb1now.eq.idr) then
4309 cc       write(17,112) 'collision',lb1now,P(1,I1),P(2,I1),P(3,I1),e(I1),nt
4310 cc               elseif(lb2now.eq.idr) then
4311 cc       write(17,112) 'collision',lb2now,P(1,I2),P(2,I2),P(3,I2),e(I2),nt
4312 cc               elseif(lb1i.eq.idr) then
4313 cc       write(18,112) 'collision',lb1i,px1i,py1i,pz1i,em1i,nt
4314 cc               elseif(lb2i.eq.idr) then
4315 cc       write(18,112) 'collision',lb2i,px2i,py2i,pz2i,em2i,nt
4316 cc               endif
4317 c 222           continue
4318 c
4319 c            else
4320 c            endif
4321 cc 112        format(a10,I4,4(1x,f9.3),1x,I4)
4322 c
4323 clin-2/26/03 skips the check of energy conservation after each binary search:
4324 c 550        goto 555
4325 c            pxfin=0
4326 c            pyfin=0
4327 c            pzfin=0
4328 c            efin=0
4329 c            if(e(i1).ne.0.or.lb(i1).eq.10022) then
4330 c               efin=efin+SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
4331 c               pxfin=pxfin+P(1,I1)
4332 c               pyfin=pyfin+P(2,I1)
4333 c               pzfin=pzfin+P(3,I1)
4334 c            endif
4335 c            if(e(i2).ne.0.or.lb(i2).eq.10022) then
4336 c               efin=efin+SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
4337 c               pxfin=pxfin+P(1,I2)
4338 c               pyfin=pyfin+P(2,I2)
4339 c               pzfin=pzfin+P(3,I2)
4340 c            endif
4341 c            if((nnn-nnnini).ge.1) then
4342 c               do imore=nnnini+1,nnn
4343 c                  if(EPION(imore,IRUN).ne.0) then
4344 c                     efin=efin+SQRT(EPION(imore,IRUN)**2
4345 c     1                    +PPION(1,imore,IRUN)**2+PPION(2,imore,IRUN)**2
4346 c     2                    +PPION(3,imore,IRUN)**2)
4347 c                     pxfin=pxfin+PPION(1,imore,IRUN)
4348 c                     pyfin=pyfin+PPION(2,imore,IRUN)
4349 c                     pzfin=pzfin+PPION(3,imore,IRUN)
4350 c                  endif
4351 c               enddo
4352 c            endif
4353 c            devio=sqrt((pxfin-pxini)**2+(pyfin-pyini)**2
4354 c     1           +(pzfin-pzini)**2+(efin-eini)**2)
4355 cc
4356 c            if(devio.ge.0.1) then
4357 c               write(92,'a20,5(1x,i6),2(1x,f8.3)') 'iblock,lb,npi=',
4358 c     1              iblock,lb1i,lb2i,lb(i1),lb(i2),e(i1),e(i2)
4359 c               do imore=nnnini+1,nnn
4360 c                  if(EPION(imore,IRUN).ne.0) then
4361 c                     write(92,'a10,2(1x,i6)') 'ipi,lbm=',
4362 c     1                    imore,LPION(imore,IRUN)
4363 c                  endif
4364 c               enddo
4365 c               write(92,'a3,4(1x,f8.3)') 'I:',eini,pxini,pyini,pzini
4366 c               write(92,'a3,5(1x,f8.3)') 
4367 c     1              'F:',efin,pxfin,pyfin,pzfin,devio
4368 c            endif
4369 c
4370  555        continue
4371 ctest off only one collision for the same 2 particles in the same timestep:
4372 c            if(iblock.ne.0) then
4373 c               goto 800
4374 c            endif
4375 ctest off collisions history:
4376 c            if(iblock.ne.0) then 
4377 c               write(10,*) nt,i1,i2,iblock,x1,z1,x2,z2
4378 c            endif
4379 
4380   600     CONTINUE
4381 
4382 clin-4/2012 option of pi0 decays:
4383 c     particles in lpion() may be a pi0, and when ipi0dcy=1 
4384 c     we need to decay them at nt=ntmax after all lb(i1) decays are done:
4385  798      if(nt.eq.ntmax.and.ipi0dcy.eq.1
4386      1         .and.i1.eq.(MASSR(IRUN)+MSUM)) then
4387              do ipion=1,NNN
4388                 if(LPION(ipion,IRUN).eq.4) then
4389                    wid=7.85e-9
4390                    call resdec(i1,nt,nnn,wid,idecay,ipion)
4391                 endif
4392              enddo
4393           endif
4394 ctest off
4395 c          if(nt.eq.ntmax.and.i1.eq.(MASSR(IRUN)+MSUM)) then
4396 c             do ip=1,i1
4397 c                write(98,*) lb(ip),e(ip),ip
4398 c             enddo
4399 c          endif
4400 
4401 clin-4/2012 option of pi0 decays-end
4402 
4403   800   CONTINUE
4404 * RELABLE MESONS LEFT IN THIS RUN EXCLUDING THOSE BEING CREATED DURING
4405 * THIS TIME STEP AND COUNT THE TOTAL NO. OF PARTICLES IN THIS RUN
4406 * note that the first mass=mta+mpr particles are baryons
4407 c        write(*,*)'I: NNN,massr ', nnn,massr(irun)
4408         N0=MASS+MSUM
4409         DO 1005 N=N0+1,MASSR(IRUN)+MSUM
4410 cbz11/25/98
4411 clin-2/19/03 lb>5000: keep particles with no LB codes in ART(photon,lepton,..):
4412 c        IF(E(N).GT.0.)THEN
4413         IF(E(N) .GT. 0. .OR. LB(N) .GT. 5000)THEN
4414 cbz11/25/98end
4415         NNN=NNN+1
4416         RPION(1,NNN,IRUN)=R(1,N)
4417         RPION(2,NNN,IRUN)=R(2,N)
4418         RPION(3,NNN,IRUN)=R(3,N)
4419 clin-10/28/03:
4420         if(nt.eq.ntmax) then
4421            ftpisv(NNN,IRUN)=ftsv(N)
4422            tfdpi(NNN,IRUN)=tfdcy(N)
4423         endif
4424 c
4425         PPION(1,NNN,IRUN)=P(1,N)
4426         PPION(2,NNN,IRUN)=P(2,N)
4427         PPION(3,NNN,IRUN)=P(3,N)
4428         EPION(NNN,IRUN)=E(N)
4429         LPION(NNN,IRUN)=LB(N)
4430 c       !! sp 12/19/00
4431         PROPI(NNN,IRUN)=PROPER(N)
4432 clin-5/2008:
4433         dppion(NNN,IRUN)=dpertp(N)
4434 c        if(lb(n) .eq. 45)
4435 c    &   write(*,*)'IN-1  NT,NNN,LB,P ',nt,NNN,lb(n),proper(n)
4436         ENDIF
4437  1005 CONTINUE
4438         MASSRN(IRUN)=NNN+MASS
4439 c        write(*,*)'F: NNN,massrn ', nnn,massrn(irun)
4440 1000   CONTINUE
4441 * CALCULATE THE AVERAGE SRT FOR N + N--->N +DELTA PROCESSES
4442 C        IF(NODELT.NE.0)THEN
4443 C        AVSRT=SUMSRT/FLOAT(NODELT)
4444 C        ELSE
4445 C        AVSRT=0.
4446 C        ENDIF
4447 C        WRITE(1097,'(F8.2,2X,E10.3)')FLOAT(NT)*DT,AVSRT
4448 * RELABLE ALL THE PARTICLES EXISTING AFTER THIS TIME STEP
4449         IA=0
4450         IB=0
4451         DO 10001 IRUN=1,NUM
4452         IA=IA+MASSR(IRUN-1)
4453         IB=IB+MASSRN(IRUN-1)
4454         DO 10001 IC=1,MASSRN(IRUN)
4455         IE=IA+IC
4456         IG=IB+IC
4457         IF(IC.LE.MASS)THEN
4458         RT(1,IG)=R(1,IE)
4459         RT(2,IG)=R(2,IE)
4460         RT(3,IG)=R(3,IE)
4461 clin-10/28/03:
4462         if(nt.eq.ntmax) then
4463            fttemp(IG)=ftsv(IE)
4464            tft(IG)=tfdcy(IE)
4465         endif
4466 c
4467         PT(1,IG)=P(1,IE)
4468         PT(2,IG)=P(2,IE)
4469         PT(3,IG)=P(3,IE)
4470         ET(IG)=E(IE)
4471         LT(IG)=LB(IE)
4472         PROT(IG)=PROPER(IE)
4473 clin-5/2008:
4474         dptemp(IG)=dpertp(IE)
4475         ELSE
4476         I0=IC-MASS
4477         RT(1,IG)=RPION(1,I0,IRUN)
4478         RT(2,IG)=RPION(2,I0,IRUN)
4479         RT(3,IG)=RPION(3,I0,IRUN)
4480 clin-10/28/03:
4481         if(nt.eq.ntmax) then
4482            fttemp(IG)=ftpisv(I0,IRUN)
4483            tft(IG)=tfdpi(I0,IRUN)
4484         endif
4485 c
4486         PT(1,IG)=PPION(1,I0,IRUN)
4487         PT(2,IG)=PPION(2,I0,IRUN)
4488         PT(3,IG)=PPION(3,I0,IRUN)
4489         ET(IG)=EPION(I0,IRUN)
4490         LT(IG)=LPION(I0,IRUN)
4491         PROT(IG)=PROPI(I0,IRUN)
4492 clin-5/2008:
4493         dptemp(IG)=dppion(I0,IRUN)
4494         ENDIF
4495 10001   CONTINUE
4496 c
4497         IL=0
4498 clin-10/26/01-hbt:
4499 c        DO 10002 IRUN=1,NUM
4500         DO 10003 IRUN=1,NUM
4501 
4502         MASSR(IRUN)=MASSRN(IRUN)
4503         IL=IL+MASSR(IRUN-1)
4504         DO 10002 IM=1,MASSR(IRUN)
4505         IN=IL+IM
4506         R(1,IN)=RT(1,IN)
4507         R(2,IN)=RT(2,IN)
4508         R(3,IN)=RT(3,IN)
4509 clin-10/28/03:
4510         if(nt.eq.ntmax) then
4511            ftsv(IN)=fttemp(IN)
4512            tfdcy(IN)=tft(IN)
4513         endif
4514         P(1,IN)=PT(1,IN)
4515         P(2,IN)=PT(2,IN)
4516         P(3,IN)=PT(3,IN)
4517         E(IN)=ET(IN)
4518         LB(IN)=LT(IN)
4519         PROPER(IN)=PROT(IN)
4520 clin-5/2008:
4521         dpertp(IN)=dptemp(IN)
4522        IF(LB(IN).LT.1.OR.LB(IN).GT.2)ID(IN)=0
4523 10002   CONTINUE
4524 clin-ctest off check energy conservation after each timestep
4525 c         enetot=0.
4526 c         do ip=1,MASSR(IRUN)
4527 c            if(e(ip).ne.0.or.lb(ip).eq.10022) enetot=enetot
4528 c     1           +sqrt(p(1,ip)**2+p(2,ip)**2+p(3,ip)**2+e(ip)**2)
4529 c         enddo
4530 c         write(91,*) 'B:',nt,enetot,massr(irun),bimp 
4531 clin-3/2009 move to the end of a timestep to take care of freezeout spacetime:
4532 c        call hbtout(MASSR(IRUN),nt,ntmax)
4533 10003 CONTINUE
4534 c
4535       RETURN
4536       END
4537 
4538 clin-9/2012: use double precision for S in CMS(): to avoid crash 
4539 c     (segmentation fault due to s<0, which happened at high energies 
4540 c     such as LHC with large NTMAX for two almost-comoving hadrons
4541 c     that have small Pt but large |Pz|):
4542 ****************************************
4543 c            SUBROUTINE CMS(I1,I2,PX1CM,PY1CM,PZ1CM,SRT)
4544 * PURPOSE : FIND THE MOMENTA OF PARTICLES IN THE CMS OF THE
4545 *          TWO COLLIDING PARTICLES
4546 * VARIABLES :
4547 *****************************************
4548 c            PARAMETER (MAXSTR=150001)
4549 c            COMMON   /AA/  R(3,MAXSTR)
4550 ccc      SAVE /AA/
4551 c            COMMON   /BB/  P(3,MAXSTR)
4552 ccc      SAVE /BB/
4553 c            COMMON   /CC/  E(MAXSTR)
4554 ccc      SAVE /CC/
4555 c            COMMON   /BG/  BETAX,BETAY,BETAZ,GAMMA
4556 ccc      SAVE /BG/
4557 c            SAVE   
4558 c            PX1=P(1,I1)
4559 c            PY1=P(2,I1)
4560 c            PZ1=P(3,I1)
4561 c            PX2=P(1,I2)
4562 c            PY2=P(2,I2)
4563 c            PZ2=P(3,I2)
4564 c            EM1=E(I1)
4565 c            EM2=E(I2)
4566 c            E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
4567 c            E2=SQRT(EM2**2 + PX2**2 + PY2**2 + PZ2**2 )
4568 c            S=(E1+E2)**2-(PX1+PX2)**2-(PY1+PY2)**2-(PZ1+PZ2)**2
4569 c            SRT=SQRT(S)
4570 c*LORENTZ-TRANSFORMATION IN I1-I2-C.M. SYSTEM
4571 c              ETOTAL = E1 + E2
4572 c              BETAX  = (PX1+PX2) / ETOTAL
4573 c              BETAY  = (PY1+PY2) / ETOTAL
4574 c              BETAZ  = (PZ1+PZ2) / ETOTAL
4575 c              GAMMA  = 1.0 / SQRT(1.0-BETAX**2-BETAY**2-BETAZ**2)
4576 c*TRANSFORMATION OF MOMENTA (PX1CM = - PX2CM)
4577 c              P1BETA = PX1*BETAX + PY1*BETAY + PZ1 * BETAZ
4578 c              TRANSF = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) - E1 )
4579 c              PX1CM  = BETAX * TRANSF + PX1
4580 c              PY1CM  = BETAY * TRANSF + PY1
4581 c              PZ1CM  = BETAZ * TRANSF + PZ1
4582 c              RETURN
4583 c              END
4584 ****************************************
4585             SUBROUTINE CMS(I1,I2,PX1CM,PY1CM,PZ1CM,SRT)
4586 * PURPOSE : FIND THE MOMENTA OF PARTICLES IN THE CMS OF THE
4587 *          TWO COLLIDING PARTICLES
4588 * VARIABLES :
4589 *****************************************
4590             PARAMETER (MAXSTR=150001)
4591             double precision px1,py1,pz1,px2,py2,pz2,em1,em2,e1,e2,
4592      1      s,ETOTAL,P1BETA,TRANSF,dBETAX,dBETAY,dBETAZ,dGAMMA,scheck
4593             COMMON   /BB/  P(3,MAXSTR)
4594             COMMON   /CC/  E(MAXSTR)
4595             COMMON   /BG/  BETAX,BETAY,BETAZ,GAMMA
4596             SAVE   
4597             PX1=dble(P(1,I1))
4598             PY1=dble(P(2,I1))
4599             PZ1=dble(P(3,I1))
4600             PX2=dble(P(1,I2))
4601             PY2=dble(P(2,I2))
4602             PZ2=dble(P(3,I2))
4603             EM1=dble(E(I1))
4604             EM2=dble(E(I2))
4605             E1=dSQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
4606             E2=dSQRT(EM2**2+PX2**2+PY2**2+PZ2**2)
4607             S=(E1+E2)**2-(PX1+PX2)**2-(PY1+PY2)**2-(PZ1+PZ2)**2
4608             IF(S.LE.0) S=0d0
4609             SRT=sngl(dSQRT(S))
4610 *LORENTZ-TRANSFORMATION IN I1-I2-C.M. SYSTEM
4611             ETOTAL = E1 + E2
4612             dBETAX  = (PX1+PX2) / ETOTAL
4613             dBETAY  = (PY1+PY2) / ETOTAL
4614             dBETAZ  = (PZ1+PZ2) / ETOTAL
4615 clin-9/2012: check argument in sqrt():
4616             scheck=1.d0-dBETAX**2-dBETAY**2-dBETAZ**2
4617             if(scheck.le.0d0) then
4618                write(99,*) 'scheck1: ', scheck
4619                stop
4620             endif
4621             dGAMMA=1.d0/dSQRT(scheck)
4622 *TRANSFORMATION OF MOMENTA (PX1CM = - PX2CM)
4623             P1BETA = PX1*dBETAX + PY1*dBETAY + PZ1 * dBETAZ
4624             TRANSF = dGAMMA * ( dGAMMA * P1BETA / (dGAMMA + 1d0) - E1 )
4625             PX1CM  = sngl(dBETAX * TRANSF + PX1)
4626             PY1CM  = sngl(dBETAY * TRANSF + PY1)
4627             PZ1CM  = sngl(dBETAZ * TRANSF + PZ1)
4628             BETAX  = sngl(dBETAX)
4629             BETAY  = sngl(dBETAY)
4630             BETAZ  = sngl(dBETAZ)
4631             GAMMA  = sngl(dGAMMA)
4632             RETURN
4633             END
4634 clin-9/2012-end
4635 
4636 ***************************************
4637             SUBROUTINE DISTCE(I1,I2,DELTAR,DS,DT,EC,SRT
4638      1      ,IC,PX1CM,PY1CM,PZ1CM)
4639 * PURPOSE : CHECK IF THE COLLISION BETWEEN TWO PARTICLES CAN HAPPEN
4640 *           BY CHECKING
4641 *                      (1) IF THE DISTANCE BETWEEN THEM IS SMALLER
4642 *           THAN THE MAXIMUM DISTANCE DETERMINED FROM THE CROSS SECTION.
4643 *                      (2) IF PARTICLE WILL PASS EACH OTHER WITHIN
4644 *           TWO HARD CORE RADIUS.
4645 *                      (3) IF PARTICLES WILL GET CLOSER.
4646 * VARIABLES :
4647 *           IC=1 COLLISION HAPPENED
4648 *           IC=-1 COLLISION CAN NOT HAPPEN
4649 *****************************************
4650             PARAMETER (MAXSTR=150001)
4651             COMMON   /AA/  R(3,MAXSTR)
4652 cc      SAVE /AA/
4653             COMMON   /BB/  P(3,MAXSTR)
4654 cc      SAVE /BB/
4655             COMMON   /CC/  E(MAXSTR)
4656 cc      SAVE /CC/
4657             COMMON   /BG/  BETAX,BETAY,BETAZ,GAMMA
4658             COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
4659 cc      SAVE /BG/
4660             common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
4661      1           px1n,py1n,pz1n,dp1n
4662             common /dpi/em2,lb2
4663             SAVE   
4664             IC=0
4665             X1=R(1,I1)
4666             Y1=R(2,I1)
4667             Z1=R(3,I1)
4668             PX1=P(1,I1)
4669             PY1=P(2,I1)
4670             PZ1=P(3,I1)
4671             X2=R(1,I2)
4672             Y2=R(2,I2)
4673             Z2=R(3,I2)
4674             PX2=P(1,I2)
4675             PY2=P(2,I2)
4676             PZ2=P(3,I2)
4677             EM1=E(I1)
4678             EM2=E(I2)
4679             E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
4680 c            IF (ABS(X1-X2) .GT. DELTAR) GO TO 400
4681 c            IF (ABS(Y1-Y2) .GT. DELTAR) GO TO 400
4682 c            IF (ABS(Z1-Z2) .GT. DELTAR) GO TO 400
4683             RSQARE = (X1-X2)**2 + (Y1-Y2)**2 + (Z1-Z2)**2
4684             IF (RSQARE .GT. DELTAR**2) GO TO 400
4685 *NOW PARTICLES ARE CLOSE ENOUGH TO EACH OTHER !
4686               E2     = SQRT ( EM2**2 + PX2**2 + PY2**2 + PZ2**2 )
4687               S      = SRT*SRT
4688             IF (S .LT. EC) GO TO 400
4689 *NOW THERE IS ENOUGH ENERGY AVAILABLE !
4690 *LORENTZ-TRANSFORMATION IN I1-I2-C.M. SYSTEM
4691 * BETAX, BETAY, BETAZ AND GAMMA HAVE BEEN GIVEN IN THE SUBROUTINE CMS
4692 *TRANSFORMATION OF MOMENTA (PX1CM = - PX2CM)
4693               P1BETA = PX1*BETAX + PY1*BETAY + PZ1 * BETAZ
4694               TRANSF = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) - E1 )
4695               PRCM   = SQRT (PX1CM**2 + PY1CM**2 + PZ1CM**2)
4696               IF (PRCM .LE. 0.00001) GO TO 400
4697 *TRANSFORMATION OF SPATIAL DISTANCE
4698               DRBETA = BETAX*(X1-X2) + BETAY*(Y1-Y2) + BETAZ*(Z1-Z2)
4699               TRANSF = GAMMA * GAMMA * DRBETA / (GAMMA + 1)
4700               DXCM   = BETAX * TRANSF + X1 - X2
4701               DYCM   = BETAY * TRANSF + Y1 - Y2
4702               DZCM   = BETAZ * TRANSF + Z1 - Z2
4703 *DETERMINING IF THIS IS THE POINT OF CLOSEST APPROACH
4704               DRCM   = SQRT (DXCM**2  + DYCM**2  + DZCM**2 )
4705               DZZ    = (PX1CM*DXCM + PY1CM*DYCM + PZ1CM*DZCM) / PRCM
4706               if ((drcm**2 - dzz**2) .le. 0.) then
4707                 BBB = 0.
4708               else
4709                 BBB    = SQRT (DRCM**2 - DZZ**2)
4710               end if
4711 *WILL PARTICLE PASS EACH OTHER WITHIN 2 * HARD CORE RADIUS ?
4712               IF (BBB .GT. DS) GO TO 400
4713               RELVEL = PRCM * (1.0/E1 + 1.0/E2)
4714               DDD    = RELVEL * DT * 0.5
4715 *WILL PARTICLES GET CLOSER ?
4716               IF (ABS(DDD) .LT. ABS(DZZ)) GO TO 400
4717               IC=1
4718               GO TO 500
4719 400           IC=-1
4720 500           CONTINUE
4721               RETURN
4722               END
4723 ****************************************
4724 *                                                                      *
4725 *                                                                      *
4726       SUBROUTINE CRNN(IRUN,PX,PY,PZ,SRT,I1,I2,IBLOCK,
4727      1NTAG,SIGNN,SIG,NT,ipert1)
4728 *     PURPOSE:                                                         *
4729 *             DEALING WITH NUCLEON-NUCLEON COLLISIONS                    *
4730 *     NOTE   :                                                         *
4731 *     QUANTITIES:                                                 *
4732 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
4733 *           SRT      - SQRT OF S                                       *
4734 *           NSTAR =1 INCLUDING N* RESORANCE,ELSE NOT                   *
4735 *           NDIRCT=1 INCLUDING DIRECT PION PRODUCTION PROCESS         *
4736 *           IBLOCK   - THE INFORMATION BACK                            *
4737 *                      0-> COLLISION CANNOT HAPPEN                     *
4738 *                      1-> N-N ELASTIC COLLISION                       *
4739 *                      2-> N+N->N+DELTA,OR N+N->N+N* REACTION          *
4740 *                      3-> N+DELTA->N+N OR N+N*->N+N REACTION          *
4741 *                      4-> N+N->D+D+pion reaction
4742 *                     43->N+N->D(N*)+D(N*) reaction
4743 *                     44->N+N->D+D+rho reaction
4744 *                     45->N+N->N+N+rho
4745 *                     46->N+N->N+N+omega
4746 *           N12       - IS USED TO SPECIFY BARYON-BARYON REACTION      *
4747 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
4748 *                      N12,                                            *
4749 *                      M12=1 FOR p+n-->delta(+)+ n                     *
4750 *                          2     p+n-->delta(0)+ p                     *
4751 *                          3     p+p-->delta(++)+n                     *
4752 *                          4     p+p-->delta(+)+p                      *
4753 *                          5     n+n-->delta(0)+n                      *
4754 *                          6     n+n-->delta(-)+p                      *
4755 *                          7     n+p-->N*(0)(1440)+p                   *
4756 *                          8     n+p-->N*(+)(1440)+n                   *
4757 *                        9     p+p-->N*(+)(1535)+p                     *
4758 *                        10    n+n-->N*(0)(1535)+n                     *
4759 *                         11    n+p-->N*(+)(1535)+n                     *
4760 *                        12    n+p-->N*(0)(1535)+p
4761 *                        13    D(++)+D(-)-->N*(+)(1440)+n
4762 *                         14    D(++)+D(-)-->N*(0)(1440)+p
4763 *                        15    D(+)+D(0)--->N*(+)(1440)+n
4764 *                        16    D(+)+D(0)--->N*(0)(1440)+p
4765 *                        17    D(++)+D(0)-->N*(+)(1535)+p
4766 *                        18    D(++)+D(-)-->N*(0)(1535)+p
4767 *                        19    D(++)+D(-)-->N*(+)(1535)+n
4768 *                        20    D(+)+D(+)-->N*(+)(1535)+p
4769 *                        21    D(+)+D(0)-->N*(+)(1535)+n
4770 *                        22    D(+)+D(0)-->N*(0)(1535)+p
4771 *                        23    D(+)+D(-)-->N*(0)(1535)+n
4772 *                        24    D(0)+D(0)-->N*(0)(1535)+n
4773 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
4774 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
4775 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
4776 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
4777 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
4778 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
4779 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
4780 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
4781 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
4782 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
4783 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
4784 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
4785 *                        ++    see the note book for more listing
4786 *                     
4787 *
4788 *     NOTE ABOUT N*(1440) RESORANCE IN Nucleon+NUCLEON COLLISION:      * 
4789 *     As it has been discussed in VerWest's paper,I= 1(initial isospin)*
4790 *     channel can all be attributed to delta resorance while I= 0      *
4791 *     channel can all be  attribured to N* resorance.Only in n+p       *
4792 *     one can have I=0 channel so is the N*(1440) resonance            *
4793 *                                                                      *
4794 *                             REFERENCES:                            *    
4795 *                    J. CUGNON ET AL., NUCL. PHYS. A352, 505 (1981)    *
4796 *                    Y. KITAZOE ET AL., PHYS. LETT. 166B, 35 (1986)    *
4797 *                    B. VerWest el al., PHYS. PRV. C25 (1982)1979      *
4798 *                    Gy. Wolf  et al, Nucl Phys A517 (1990) 615;       *
4799 *                                     Nucl phys A552 (1993) 349.       *
4800 **********************************
4801         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
4802      1  AMP=0.93828,AP1=0.13496,aka=0.498,AP2=0.13957,AM0=1.232,
4803      2  PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383,APHI=1.020)
4804         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
4805         parameter (xmd=1.8756,npdmax=10000)
4806         COMMON /AA/ R(3,MAXSTR)
4807 cc      SAVE /AA/
4808         COMMON /BB/ P(3,MAXSTR)
4809 cc      SAVE /BB/
4810         COMMON /CC/ E(MAXSTR)
4811 cc      SAVE /CC/
4812         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
4813 cc      SAVE /EE/
4814         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
4815 cc      SAVE /ff/
4816         common /gg/ dx,dy,dz,dpx,dpy,dpz
4817 cc      SAVE /gg/
4818         COMMON /INPUT/ NSTAR,NDIRCT,DIR
4819 cc      SAVE /INPUT/
4820         COMMON /NN/NNN
4821 cc      SAVE /NN/
4822         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
4823 cc      SAVE /BG/
4824         COMMON   /RUN/NUM
4825 cc      SAVE /RUN/
4826         COMMON   /PA/RPION(3,MAXSTR,MAXR)
4827 cc      SAVE /PA/
4828         COMMON   /PB/PPION(3,MAXSTR,MAXR)
4829 cc      SAVE /PB/
4830         COMMON   /PC/EPION(MAXSTR,MAXR)
4831 cc      SAVE /PC/
4832         COMMON   /PD/LPION(MAXSTR,MAXR)
4833 cc      SAVE /PD/
4834         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
4835 cc      SAVE /TABLE/
4836         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
4837 cc      SAVE /input1/
4838       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
4839      1 px1n,py1n,pz1n,dp1n
4840 cc      SAVE /leadng/
4841       COMMON/RNDF77/NSEED
4842 cc      SAVE /RNDF77/
4843       common /dpi/em2,lb2
4844       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
4845      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
4846      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
4847       common /para8/ idpert,npertd,idxsec
4848       dimension ppd(3,npdmax),lbpd(npdmax)
4849       SAVE   
4850 *-----------------------------------------------------------------------
4851       n12=0
4852       m12=0
4853       IBLOCK=0
4854       NTAG=0
4855       EM1=E(I1)
4856       EM2=E(I2)
4857       PR=SQRT( PX**2 + PY**2 + PZ**2 )
4858       C2=PZ / PR
4859       X1=RANART(NSEED)
4860       ianti=0
4861       if(lb(i1).lt.0 .and. lb(i2).lt.0) ianti=1
4862       call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
4863 clin-5/2008 Production of perturbative deuterons for idpert=1:
4864       if(idpert.eq.1.and.ipert1.eq.1) then
4865          IF (SRT .LT. 2.012) RETURN
4866          if((iabs(lb(i1)).eq.1.or.iabs(lb(i1)).eq.2)
4867      1        .and.(iabs(lb(i2)).eq.1.or.iabs(lb(i2)).eq.2)) then
4868             goto 108
4869          else
4870             return
4871          endif
4872       endif
4873 c
4874 *-----------------------------------------------------------------------
4875 *COM: TEST FOR ELASTIC SCATTERING (EITHER N-N OR DELTA-DELTA 0R
4876 *      N-DELTA OR N*-N* or N*-Delta)
4877 c      IF (X1 .LE. SIGNN/SIG) THEN
4878       IF (X1.LE.(SIGNN/SIG)) THEN
4879 *COM:  PARAMETRISATION IS TAKEN FROM THE CUGNON-PAPER
4880          AS  = ( 3.65 * (SRT - 1.8766) )**6
4881          A   = 6.0 * AS / (1.0 + AS)
4882          TA  = -2.0 * PR**2
4883          X   = RANART(NSEED)
4884 clin-10/24/02        T1  = DLOG( (1-X) * DEXP(dble(A)*dble(TA)) + X )  /  A
4885          T1  = sngl(DLOG(dble(1.-X)*DEXP(dble(A)*dble(TA))+dble(X)))/  A
4886          C1  = 1.0 - T1/TA
4887          T1  = 2.0 * PI * RANART(NSEED)
4888          IBLOCK=1
4889          GO TO 107
4890       ELSE
4891 *COM: TEST FOR INELASTIC SCATTERING
4892 *     IF THE AVAILABLE ENERGY IS LESS THAN THE PION-MASS, NOTHING
4893 *     CAN HAPPEN ANY MORE ==> RETURN (2.012 = 2*AVMASS + PI-MASS)
4894 clin-5/2008: Mdeuteron+Mpi=2.0106 to 2.0152 GeV/c2, so we can still use this:
4895          IF (SRT .LT. 2.012) RETURN
4896 *     calculate the N*(1535) production cross section in N+N collisions
4897 *     note that the cross sections in this subroutine are in units of mb
4898 *     as only ratios of the cross sections are used to determine the
4899 *     reaction channels
4900        call N1535(iabs(lb(i1)),iabs(lb(i2)),srt,x1535)
4901 *COM: HERE WE HAVE A PROCESS N+N ==> N+DELTA,OR N+N==>N+N*(144) or N*(1535)
4902 *     OR 
4903 * 3 pi channel : N+N==>d1+d2+PION
4904        SIG3=3.*(X3pi(SRT)+x33pi(srt))
4905 * 2 pi channel : N+N==>d1+d2+d1*n*+n*n*
4906        SIG4=4.*X2pi(srt)
4907 * 4 pi channel : N+N==>d1+d2+rho
4908        s4pi=x4pi(srt)
4909 * N+N-->NN+rho channel
4910        srho=xrho(srt)
4911 * N+N-->NN+omega
4912        somega=omega(srt)
4913 * CROSS SECTION FOR KAON PRODUCTION from the four channels
4914 * for NLK channel
4915        akp=0.498
4916        ak0=0.498
4917        ana=0.94
4918        ada=1.232
4919        al=1.1157
4920        as=1.1197
4921        xsk1=0
4922        xsk2=0
4923        xsk3=0
4924        xsk4=0
4925        xsk5=0
4926        t1nlk=ana+al+akp
4927        if(srt.le.t1nlk)go to 222
4928        XSK1=1.5*PPLPK(SRT)
4929 * for DLK channel
4930        t1dlk=ada+al+akp
4931        t2dlk=ada+al-akp
4932        if(srt.le.t1dlk)go to 222
4933        es=srt
4934        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
4935        pmdlk=sqrt(pmdlk2)
4936        XSK3=1.5*PPLPK(srt)
4937 * for NSK channel
4938        t1nsk=ana+as+akp
4939        t2nsk=ana+as-akp
4940        if(srt.le.t1nsk)go to 222
4941        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
4942        pmnsk=sqrt(pmnsk2)
4943        XSK2=1.5*(PPK1(srt)+PPK0(srt))
4944 * for DSK channel
4945        t1DSk=aDa+aS+akp
4946        t2DSk=aDa+aS-akp
4947        if(srt.le.t1dsk)go to 222
4948        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
4949        pmDSk=sqrt(pmDSk2)
4950        XSK4=1.5*(PPK1(srt)+PPK0(srt))
4951 csp11/21/01
4952 c phi production
4953        if(srt.le.(2.*amn+aphi))go to 222
4954 c  !! mb put the correct form
4955        xsk5 = 0.0001
4956 csp11/21/01 end
4957 c
4958 * THE TOTAL KAON+ PRODUCTION CROSS SECTION IS THEN
4959  222   SIGK=XSK1+XSK2+XSK3+XSK4
4960 
4961 cbz3/7/99 neutralk
4962         XSK1 = 2.0 * XSK1
4963         XSK2 = 2.0 * XSK2
4964         XSK3 = 2.0 * XSK3
4965         XSK4 = 2.0 * XSK4
4966         SIGK = 2.0 * SIGK + xsk5
4967 cbz3/7/99 neutralk end
4968 c
4969 ** FOR P+P or L/S+L/S COLLISION:
4970 c       lb1=lb(i1)
4971 c       lb2=lb(i2)
4972         lb1=iabs(lb(i1))
4973         lb2=iabs(lb(i2))
4974         IF((LB(I1)*LB(I2).EQ.1).or.
4975      &       ((lb1.le.17.and.lb1.ge.14).and.(lb2.le.17.and.lb2.ge.14)).
4976      &       or.((lb1.le.2).and.(lb2.le.17.and.lb2.ge.14)).
4977      &       or.((lb2.le.2).and.(lb1.le.17.and.lb1.ge.14)))THEN
4978 clin-8/2008 PP->d+meson here:
4979            IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
4980            SIG1=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
4981            SIG2=1.5*SIGMA(SRT,1,1,1)
4982            SIGND=SIG1+SIG2+SIG3+SIG4+X1535+SIGK+s4pi+srho+somega
4983 clin-5/2008:
4984 c           IF (X1.GT.(SIGNN+SIGND)/SIG)RETURN
4985            IF (X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
4986            DIR=SIG3/SIGND
4987            IF(RANART(NSEED).LE.DIR)GO TO 106
4988            IF(RANART(NSEED).LE.SIGK/(SIGK+X1535+SIG4+SIG2+SIG1
4989      &          +s4pi+srho+somega))GO TO 306
4990            if(RANART(NSEED).le.s4pi/(x1535+sig4+sig2+sig1
4991      &          +s4pi+srho+somega))go to 307
4992            if(RANART(NSEED).le.srho/(x1535+sig4+sig2+sig1
4993      &          +srho+somega))go to 308
4994            if(RANART(NSEED).le.somega/(x1535+sig4+sig2+sig1
4995      &          +somega))go to 309
4996            if(RANART(NSEED).le.x1535/(sig1+sig2+sig4+x1535))then
4997 * N*(1535) production
4998               N12=9
4999            ELSE 
5000               IF(RANART(NSEED).LE.SIG4/(SIG1+sig2+sig4))THEN
5001 * DOUBLE DELTA PRODUCTION
5002                  N12=66
5003                  GO TO 1012
5004               else
5005 *DELTA PRODUCTION
5006                  N12=3
5007                  IF (RANART(NSEED).GT.SIG1/(SIG1+SIG2))N12=4
5008               ENDIF
5009            endif
5010            GO TO 1011
5011         ENDIF
5012 ** FOR N+N COLLISION:
5013         IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
5014 clin-8/2008 NN->d+meson here:
5015            IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
5016            SIG1=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
5017            SIG2=1.5*SIGMA(SRT,1,1,1)
5018            SIGND=SIG1+SIG2+X1535+SIG3+SIG4+SIGK+s4pi+srho+somega
5019 clin-5/2008:
5020 c           IF (X1.GT.(SIGNN+SIGND)/SIG)RETURN
5021            IF (X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
5022            dir=sig3/signd
5023            IF(RANART(NSEED).LE.DIR)GO TO 106
5024            IF(RANART(NSEED).LE.SIGK/(SIGK+X1535+SIG4+SIG2+SIG1
5025      &          +s4pi+srho+somega))GO TO 306
5026            if(RANART(NSEED).le.s4pi/(x1535+sig4+sig2+sig1
5027      &          +s4pi+srho+somega))go to 307
5028            if(RANART(NSEED).le.srho/(x1535+sig4+sig2+sig1
5029      &          +srho+somega))go to 308
5030            if(RANART(NSEED).le.somega/(x1535+sig4+sig2+sig1
5031      &          +somega))go to 309
5032            IF(RANART(NSEED).LE.X1535/(x1535+sig1+sig2+sig4))THEN
5033 * N*(1535) PRODUCTION
5034               N12=10
5035            ELSE 
5036               if(RANART(NSEED).le.sig4/(sig1+sig2+sig4))then
5037 * double delta production
5038                  N12=67
5039                  GO TO 1013
5040               else
5041 * DELTA PRODUCTION
5042                  N12=6
5043                  IF (RANART(NSEED).GT.SIG1/(SIG1+SIG2))N12=5
5044               ENDIF
5045            endif
5046            GO TO 1011
5047         ENDIF
5048 ** FOR N+P COLLISION
5049         IF(LB(I1)*LB(I2).EQ.2)THEN
5050 clin-5/2008 NP->d+meson here:
5051            IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
5052            SIG1=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
5053            IF(NSTAR.EQ.1)THEN
5054               SIG2=(3./4.)*SIGMA(SRT,2,0,1)
5055            ELSE
5056               SIG2=0.
5057            ENDIF
5058            SIGND=2.*(SIG1+SIG2+X1535)+sig3+sig4+SIGK+s4pi+srho+somega
5059 clin-5/2008:
5060 c           IF (X1.GT.(SIGNN+SIGND)/SIG)RETURN
5061            IF (X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
5062            dir=sig3/signd
5063            IF(RANART(NSEED).LE.DIR)GO TO 106
5064            IF(RANART(NSEED).LE.SIGK/(SIGND-SIG3))GO TO 306
5065            if(RANART(NSEED).le.s4pi/(signd-sig3-sigk))go to 307
5066            if(RANART(NSEED).le.srho/(signd-sig3-sigk-s4pi))go to 308
5067            if(RANART(NSEED).le.somega/(signd-sig3-sigk-s4pi-srho))
5068      1          go to 309
5069            IF(RANART(NSEED).LT.X1535/(SIG1+SIG2+X1535+0.5*sig4))THEN
5070 * N*(1535) PRODUCTION
5071               N12=11
5072               IF(RANART(NSEED).LE.0.5)N12=12
5073            ELSE 
5074               if(RANART(NSEED).le.sig4/(sig4+2.*(sig1+sig2)))then
5075 * double resonance production
5076                  N12=68
5077                  GO TO 1014
5078               else
5079                  IF(RANART(NSEED).LE.SIG1/(SIG1+SIG2))THEN
5080 * DELTA PRODUCTION
5081                     N12=2
5082                     IF(RANART(NSEED).GE.0.5)N12=1
5083                  ELSE
5084 * N*(1440) PRODUCTION
5085                     N12=8
5086                     IF(RANART(NSEED).GE.0.5)N12=7
5087                  ENDIF
5088               ENDIF
5089            ENDIF
5090         endif
5091  1011   iblock=2
5092         CONTINUE
5093 *PARAMETRIZATION OF THE SHAPE OF THE DELTA RESONANCE ACCORDING
5094 *     TO kitazoe's or J.D.JACKSON'S MASS FORMULA AND BREIT WIGNER
5095 *     FORMULA FOR N* RESORANCE
5096 *     DETERMINE DELTA MASS VIA REJECTION METHOD.
5097           DMAX = SRT - AVMASS-0.005
5098           DMAX = SRT - AVMASS-0.005
5099           DMIN = 1.078
5100                    IF(N12.LT.7)THEN
5101 * Delta(1232) production
5102           IF(DMAX.LT.1.232) THEN
5103           FM=FDE(DMAX,SRT,0.)
5104           ELSE
5105 
5106 clin-10/25/02 get rid of argument usage mismatch in FDE():
5107              xdmass=1.232
5108 c          FM=FDE(1.232,SRT,1.)
5109           FM=FDE(xdmass,SRT,1.)
5110 clin-10/25/02-end
5111 
5112           ENDIF
5113           IF(FM.EQ.0.)FM=1.E-09
5114           NTRY1=0
5115 10        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
5116           NTRY1=NTRY1+1
5117           IF((RANART(NSEED) .GT. FDE(DM,SRT,1.)/FM).AND.
5118      1    (NTRY1.LE.30)) GOTO 10
5119 
5120 clin-2/26/03 limit the Delta mass below a certain value 
5121 c     (here taken as its central value + 2* B-W fullwidth):
5122           if(dm.gt.1.47) goto 10
5123 
5124               GO TO 13
5125               ENDIF
5126                    IF((n12.eq.7).or.(n12.eq.8))THEN
5127 * N*(1440) production
5128           IF(DMAX.LT.1.44) THEN
5129           FM=FNS(DMAX,SRT,0.)
5130           ELSE
5131 
5132 clin-10/25/02 get rid of argument usage mismatch in FNS():
5133              xdmass=1.44
5134 c          FM=FNS(1.44,SRT,1.)
5135           FM=FNS(xdmass,SRT,1.)
5136 clin-10/25/02-end
5137 
5138           ENDIF
5139           IF(FM.EQ.0.)FM=1.E-09
5140           NTRY2=0
5141 11        DM=RANART(NSEED)*(DMAX-DMIN)+DMIN
5142           NTRY2=NTRY2+1
5143           IF((RANART(NSEED).GT.FNS(DM,SRT,1.)/FM).AND.
5144      1    (NTRY2.LE.10)) GO TO 11
5145 
5146 clin-2/26/03 limit the N* mass below a certain value 
5147 c     (here taken as its central value + 2* B-W fullwidth):
5148           if(dm.gt.2.14) goto 11
5149 
5150               GO TO 13
5151               ENDIF
5152                     IF(n12.ge.17)then
5153 * N*(1535) production
5154           IF(DMAX.LT.1.535) THEN
5155           FM=FD5(DMAX,SRT,0.)
5156           ELSE
5157 
5158 clin-10/25/02 get rid of argument usage mismatch in FNS():
5159              xdmass=1.535
5160 c          FM=FD5(1.535,SRT,1.)
5161           FM=FD5(xdmass,SRT,1.)
5162 clin-10/25/02-end
5163 
5164           ENDIF
5165           IF(FM.EQ.0.)FM=1.E-09
5166           NTRY1=0
5167 12        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
5168           NTRY1=NTRY1+1
5169           IF((RANART(NSEED) .GT. FD5(DM,SRT,1.)/FM).AND.
5170      1    (NTRY1.LE.10)) GOTO 12
5171 
5172 clin-2/26/03 limit the N* mass below a certain value 
5173 c     (here taken as its central value + 2* B-W fullwidth):
5174           if(dm.gt.1.84) goto 12
5175 
5176          GO TO 13
5177              ENDIF
5178 * CALCULATE THE MASSES OF BARYON RESONANCES IN THE DOUBLE RESONANCE
5179 * PRODUCTION PROCESS AND RELABLE THE PARTICLES
5180 1012       iblock=43
5181        call Rmasdd(srt,1.232,1.232,1.08,
5182      &  1.08,ISEED,1,dm1,dm2)
5183        call Rmasdd(srt,1.232,1.44,1.08,
5184      &  1.08,ISEED,3,dm1n,dm2n)
5185        IF(N12.EQ.66)THEN
5186 *(1) PP-->DOUBLE RESONANCES
5187 * DETERMINE THE FINAL STATE
5188        XFINAL=RANART(NSEED)
5189        IF(XFINAL.LE.0.25)THEN
5190 * (1.1) D+++D0 
5191        LB(I1)=9
5192        LB(I2)=7
5193        e(i1)=dm1
5194        e(i2)=dm2
5195        GO TO 200
5196 * go to 200 to set the new momentum
5197        ENDIF
5198        IF((XFINAL.gt.0.25).and.(xfinal.le.0.5))THEN
5199 * (1.2) D++D+
5200        LB(I1)=8
5201        LB(I2)=8
5202        e(i1)=dm1
5203        e(i2)=dm2
5204        GO TO 200
5205 * go to 200 to set the new momentum
5206        ENDIF
5207        IF((XFINAL.gt.0.5).and.(xfinal.le.0.75))THEN
5208 * (1.3) D+++N*0 
5209        LB(I1)=9
5210        LB(I2)=10
5211        e(i1)=dm1n
5212        e(i2)=dm2n
5213        GO TO 200
5214 * go to 200 to set the new momentum
5215        ENDIF
5216        IF(XFINAL.gt.0.75)then
5217 * (1.4) D++N*+ 
5218        LB(I1)=8
5219        LB(I2)=11
5220        e(i1)=dm1n
5221        e(i2)=dm2n
5222        GO TO 200
5223 * go to 200 to set the new momentum
5224        ENDIF
5225        ENDIF
5226 1013       iblock=43
5227        call Rmasdd(srt,1.232,1.232,1.08,
5228      &  1.08,ISEED,1,dm1,dm2)
5229        call Rmasdd(srt,1.232,1.44,1.08,
5230      &  1.08,ISEED,3,dm1n,dm2n)
5231        IF(N12.EQ.67)THEN
5232 *(2) NN-->DOUBLE RESONANCES
5233 * DETERMINE THE FINAL STATE
5234        XFINAL=RANART(NSEED)
5235        IF(XFINAL.LE.0.25)THEN
5236 * (2.1) D0+D0 
5237        LB(I1)=7
5238        LB(I2)=7
5239        e(i1)=dm1
5240        e(i2)=dm2
5241        GO TO 200
5242 * go to 200 to set the new momentum
5243         ENDIF
5244        IF((XFINAL.gt.0.25).and.(xfinal.le.0.5))THEN
5245 * (2.2) D++D+
5246        LB(I1)=6
5247        LB(I2)=8
5248        e(i1)=dm1
5249        e(i2)=dm2
5250        GO TO 200
5251 * go to 200 to set the new momentum
5252        ENDIF
5253        IF((XFINAL.gt.0.5).and.(xfinal.le.0.75))THEN
5254 * (2.3) D0+N*0 
5255        LB(I1)=7
5256        LB(I2)=10
5257        e(i1)=dm1n
5258        e(i2)=dm2n
5259        GO TO 200
5260 * go to 200 to set the new momentum
5261        ENDIF
5262        IF(XFINAL.gt.0.75)then
5263 * (2.4) D++N*+ 
5264        LB(I1)=8
5265        LB(I2)=11
5266        e(i1)=dm1n
5267        e(i2)=dm2n
5268        GO TO 200
5269 * go to 200 to set the new momentum
5270        ENDIF
5271        ENDIF
5272 1014       iblock=43
5273        call Rmasdd(srt,1.232,1.232,1.08,
5274      &  1.08,ISEED,1,dm1,dm2)
5275        call Rmasdd(srt,1.232,1.44,1.08,
5276      &  1.08,ISEED,3,dm1n,dm2n)
5277        IF(N12.EQ.68)THEN
5278 *(3) NP-->DOUBLE RESONANCES
5279 * DETERMINE THE FINAL STATE
5280        XFINAL=RANART(NSEED)
5281        IF(XFINAL.LE.0.25)THEN
5282 * (3.1) D0+D+ 
5283        LB(I1)=7
5284        LB(I2)=8
5285        e(i1)=dm1
5286        e(i2)=dm2
5287        GO TO 200
5288 * go to 200 to set the new momentum
5289        ENDIF
5290        IF((XFINAL.gt.0.25).and.(xfinal.le.0.5))THEN
5291 * (3.2) D+++D-
5292        LB(I1)=9
5293        LB(I2)=6
5294        e(i1)=dm1
5295        e(i2)=dm2
5296        GO TO 200
5297 * go to 200 to set the new momentum
5298        ENDIF
5299        IF((XFINAL.gt.0.5).and.(xfinal.le.0.75))THEN
5300 * (3.3) D0+N*+ 
5301        LB(I1)=7
5302        LB(I2)=11
5303        e(i1)=dm1n
5304        e(i2)=dm2n
5305        GO TO 200
5306 * go to 200 to set the new momentum
5307        ENDIF
5308        IF(XFINAL.gt.0.75)then
5309 * (3.4) D++N*0
5310        LB(I1)=8
5311        LB(I2)=10
5312        e(i1)=dm1n
5313        e(i2)=dm2n
5314        GO TO 200
5315 * go to 200 to set the new momentum
5316        ENDIF
5317        ENDIF
5318 13       CONTINUE
5319 *-------------------------------------------------------
5320 * RELABLE BARYON I1 AND I2
5321 *1. p+n-->delta(+)+n
5322           IF(N12.EQ.1)THEN
5323           IF(iabs(LB(I1)).EQ.1)THEN
5324           LB(I2)=2
5325           LB(I1)=8
5326           E(I1)=DM
5327           ELSE
5328           LB(I1)=2
5329           LB(I2)=8
5330           E(I2)=DM
5331           ENDIF
5332          GO TO 200
5333           ENDIF
5334 *2 p+n-->delta(0)+p
5335           IF(N12.EQ.2)THEN
5336           IF(iabs(LB(I1)).EQ.2)THEN
5337           LB(I2)=1
5338           LB(I1)=7
5339           E(I1)=DM
5340           ELSE
5341           LB(I1)=1
5342           LB(I2)=7
5343           E(I2)=DM
5344           ENDIF
5345          GO TO 200
5346           ENDIF
5347 *3 p+p-->delta(++)+n
5348           IF(N12.EQ.3)THEN
5349           LB(I1)=9
5350           E(I1)=DM
5351           LB(I2)=2
5352           E(I2)=AMN
5353          GO TO 200
5354           ENDIF
5355 *4 p+p-->delta(+)+p
5356           IF(N12.EQ.4)THEN
5357           LB(I2)=1
5358           LB(I1)=8
5359           E(I1)=DM
5360          GO TO 200
5361           ENDIF
5362 *5 n+n--> delta(0)+n
5363           IF(N12.EQ.5)THEN
5364           LB(I2)=2
5365           LB(I1)=7
5366           E(I1)=DM
5367          GO TO 200
5368           ENDIF
5369 *6 n+n--> delta(-)+p
5370           IF(N12.EQ.6)THEN
5371           LB(I1)=6
5372           E(I1)=DM
5373           LB(I2)=1
5374           E(I2)=AMP
5375          GO TO 200
5376           ENDIF
5377 *7 n+p--> N*(0)+p
5378           IF(N12.EQ.7)THEN
5379           IF(iabs(LB(I1)).EQ.1)THEN
5380           LB(I1)=1
5381           LB(I2)=10
5382           E(I2)=DM
5383           ELSE
5384           LB(I2)=1
5385           LB(I1)=10
5386           E(I1)=DM
5387           ENDIF
5388          GO TO 200
5389           ENDIF
5390 *8 n+p--> N*(+)+n
5391           IF(N12.EQ.8)THEN
5392           IF(iabs(LB(I1)).EQ.1)THEN
5393           LB(I2)=2
5394           LB(I1)=11
5395           E(I1)=DM
5396           ELSE
5397           LB(I1)=2
5398           LB(I2)=11
5399           E(I2)=DM
5400           ENDIF
5401          GO TO 200
5402           ENDIF
5403 *9 p+p--> N*(+)(1535)+p
5404           IF(N12.EQ.9)THEN
5405           IF(RANART(NSEED).le.0.5)THEN
5406           LB(I2)=1
5407           LB(I1)=13
5408           E(I1)=DM
5409           ELSE
5410           LB(I1)=1
5411           LB(I2)=13
5412           E(I2)=DM
5413           ENDIF
5414          GO TO 200
5415           ENDIF
5416 *10 n+n--> N*(0)(1535)+n
5417           IF(N12.EQ.10)THEN
5418           IF(RANART(NSEED).le.0.5)THEN
5419           LB(I2)=2
5420           LB(I1)=12
5421           E(I1)=DM
5422           ELSE
5423           LB(I1)=2
5424           LB(I2)=12
5425           E(I2)=DM
5426           ENDIF
5427          GO TO 200
5428           ENDIF
5429 *11 n+p--> N*(+)(1535)+n
5430           IF(N12.EQ.11)THEN
5431           IF(iabs(LB(I1)).EQ.2)THEN
5432           LB(I1)=2
5433           LB(I2)=13
5434           E(I2)=DM
5435           ELSE
5436           LB(I2)=2
5437           LB(I1)=13
5438           E(I1)=DM
5439           ENDIF
5440          GO TO 200
5441           ENDIF
5442 *12 n+p--> N*(0)(1535)+p
5443           IF(N12.EQ.12)THEN
5444           IF(iabs(LB(I1)).EQ.1)THEN
5445           LB(I1)=1
5446           LB(I2)=12
5447           E(I2)=DM
5448           ELSE
5449           LB(I2)=1
5450           LB(I1)=12
5451           E(I1)=DM
5452           ENDIF
5453           ENDIF
5454          endif
5455 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
5456 * ENERGY CONSERVATION
5457 200       EM1=E(I1)
5458           EM2=E(I2)
5459           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
5460      1                - 4.0 * (EM1*EM2)**2
5461           IF(PR2.LE.0.)PR2=1.e-09
5462           PR=SQRT(PR2)/(2.*SRT)
5463               if(srt.le.2.14)C1= 1.0 - 2.0 * RANART(NSEED)
5464          if(srt.gt.2.14.and.srt.le.2.4)c1=ang(srt,iseed)
5465          if(srt.gt.2.4)then
5466 
5467 clin-10/25/02 get rid of argument usage mismatch in PTR():
5468              xptr=0.33*pr
5469 c         cc1=ptr(0.33*pr,iseed)
5470              cc1=ptr(xptr,iseed)
5471 clin-10/25/02-end
5472 
5473 clin-9/2012: check argument in sqrt():
5474              scheck=pr**2-cc1**2
5475              if(scheck.lt.0) then
5476                 write(99,*) 'scheck2: ', scheck
5477                 scheck=0.
5478              endif
5479              c1=sqrt(scheck)/pr
5480 c             c1=sqrt(pr**2-cc1**2)/pr
5481 
5482          endif
5483           T1   = 2.0 * PI * RANART(NSEED)
5484        if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
5485          lb(i1) = -lb(i1)
5486          lb(i2) = -lb(i2)
5487        endif
5488           GO TO 107
5489 *FOR THE NN-->D1+D2+PI PROCESS, FIND MOMENTUM OF THE FINAL TWO
5490 *DELTAS AND PION IN THE NUCLEUS-NUCLEUS CMS.
5491 106     CONTINUE
5492            NTRY1=0
5493 123        CALL DDP2(SRT,ISEED,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
5494      &  PPX,PPY,PPZ,icou1)
5495        NTRY1=NTRY1+1
5496        if((icou1.lt.0).AND.(NTRY1.LE.40))GO TO 123
5497 C       if(icou1.lt.0)return
5498 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
5499        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
5500        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
5501        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
5502                 NNN=NNN+1
5503 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
5504 * (1) FOR P+P
5505               XDIR=RANART(NSEED)
5506                 IF(LB(I1)*LB(I2).EQ.1)THEN
5507                 IF(XDIR.Le.0.2)then
5508 * (1.1)P+P-->D+++D0+PION(0)
5509                 LPION(NNN,IRUN)=4
5510                 EPION(NNN,IRUN)=AP1
5511               LB(I1)=9
5512               LB(I2)=7
5513        GO TO 205
5514                 ENDIF
5515 * (1.2)P+P -->D++D+PION(0)
5516                 IF((XDIR.LE.0.4).AND.(XDIR.GT.0.2))THEN
5517                 LPION(NNN,IRUN)=4
5518                 EPION(NNN,IRUN)=AP1
5519                 LB(I1)=8
5520                 LB(I2)=8
5521        GO TO 205
5522               ENDIF 
5523 * (1.3)P+P-->D+++D+PION(-)
5524                 IF((XDIR.LE.0.6).AND.(XDIR.GT.0.4))THEN
5525                 LPION(NNN,IRUN)=3
5526                 EPION(NNN,IRUN)=AP2
5527                 LB(I1)=9
5528                 LB(I2)=8
5529        GO TO 205
5530               ENDIF 
5531                 IF((XDIR.LE.0.8).AND.(XDIR.GT.0.6))THEN
5532                 LPION(NNN,IRUN)=5
5533                 EPION(NNN,IRUN)=AP2
5534                 LB(I1)=9
5535                 LB(I2)=6
5536        GO TO 205
5537               ENDIF 
5538                 IF(XDIR.GT.0.8)THEN
5539                 LPION(NNN,IRUN)=5
5540                 EPION(NNN,IRUN)=AP2
5541                 LB(I1)=7
5542                 LB(I2)=8
5543        GO TO 205
5544               ENDIF 
5545                ENDIF
5546 * (2)FOR N+N
5547                 IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
5548                 IF(XDIR.Le.0.2)then
5549 * (2.1)N+N-->D++D-+PION(0)
5550                 LPION(NNN,IRUN)=4
5551                 EPION(NNN,IRUN)=AP1
5552               LB(I1)=6
5553               LB(I2)=7
5554        GO TO 205
5555                 ENDIF
5556 * (2.2)N+N -->D+++D-+PION(-)
5557                 IF((XDIR.LE.0.4).AND.(XDIR.GT.0.2))THEN
5558                 LPION(NNN,IRUN)=3
5559                 EPION(NNN,IRUN)=AP2
5560                 LB(I1)=6
5561                 LB(I2)=9
5562        GO TO 205
5563               ENDIF 
5564 * (2.3)P+P-->D0+D-+PION(+)
5565                 IF((XDIR.GT.0.4).AND.(XDIR.LE.0.6))THEN
5566                 LPION(NNN,IRUN)=5
5567                 EPION(NNN,IRUN)=AP2
5568                 LB(I1)=9
5569                 LB(I2)=8
5570        GO TO 205
5571               ENDIF 
5572 * (2.4)P+P-->D0+D0+PION(0)
5573                 IF((XDIR.GT.0.6).AND.(XDIR.LE.0.8))THEN
5574                 LPION(NNN,IRUN)=4
5575                 EPION(NNN,IRUN)=AP1
5576                 LB(I1)=7
5577                 LB(I2)=7
5578        GO TO 205
5579               ENDIF 
5580 * (2.5)P+P-->D0+D++PION(-)
5581                 IF(XDIR.GT.0.8)THEN
5582                 LPION(NNN,IRUN)=3
5583                 EPION(NNN,IRUN)=AP2
5584                 LB(I1)=7
5585                 LB(I2)=8
5586        GO TO 205
5587               ENDIF 
5588               ENDIF
5589 * (3)FOR N+P
5590                 IF(LB(I1)*LB(I2).EQ.2)THEN
5591                 IF(XDIR.Le.0.17)then
5592 * (3.1)N+P-->D+++D-+PION(0)
5593                 LPION(NNN,IRUN)=4
5594                 EPION(NNN,IRUN)=AP1
5595               LB(I1)=6
5596               LB(I2)=9
5597        GO TO 205
5598                 ENDIF
5599 * (3.2)N+P -->D+++D0+PION(-)
5600                 IF((XDIR.LE.0.34).AND.(XDIR.GT.0.17))THEN
5601                 LPION(NNN,IRUN)=3
5602                 EPION(NNN,IRUN)=AP2
5603                 LB(I1)=7
5604                 LB(I2)=9
5605        GO TO 205
5606               ENDIF 
5607 * (3.3)N+P-->D++D-+PION(+)
5608                 IF((XDIR.GT.0.34).AND.(XDIR.LE.0.51))THEN
5609                 LPION(NNN,IRUN)=5
5610                 EPION(NNN,IRUN)=AP2
5611                 LB(I1)=7
5612                 LB(I2)=8
5613        GO TO 205
5614               ENDIF 
5615 * (3.4)N+P-->D++D++PION(-)
5616                 IF((XDIR.GT.0.51).AND.(XDIR.LE.0.68))THEN
5617                 LPION(NNN,IRUN)=3
5618                 EPION(NNN,IRUN)=AP2
5619                 LB(I1)=8
5620                 LB(I2)=8
5621        GO TO 205
5622               ENDIF 
5623 * (3.5)N+P-->D0+D++PION(0)
5624                 IF((XDIR.GT.0.68).AND.(XDIR.LE.0.85))THEN
5625                 LPION(NNN,IRUN)=4
5626                 EPION(NNN,IRUN)=AP2
5627                 LB(I1)=7
5628                 LB(I2)=8
5629        GO TO 205
5630               ENDIF 
5631 * (3.6)N+P-->D0+D0+PION(+)
5632                 IF(XDIR.GT.0.85)THEN
5633                 LPION(NNN,IRUN)=5
5634                 EPION(NNN,IRUN)=AP2
5635                 LB(I1)=7
5636                 LB(I2)=7
5637               ENDIF 
5638                 ENDIF
5639 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
5640 * NUCLEUS CMS. FRAME 
5641 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
5642 205           E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
5643               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
5644               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
5645               Pt1i1 = BETAX * TRANSF + PX3
5646               Pt2i1 = BETAY * TRANSF + PY3
5647               Pt3i1 = BETAZ * TRANSF + PZ3
5648              Eti1   = DM3
5649 c
5650              if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
5651                lb(i1) = -lb(i1)
5652                lb(i2) = -lb(i2)
5653                 if(LPION(NNN,IRUN) .eq. 3)then
5654                   LPION(NNN,IRUN)=5
5655                 elseif(LPION(NNN,IRUN) .eq. 5)then
5656                   LPION(NNN,IRUN)=3
5657                 endif
5658                endif
5659 c
5660              lb1=lb(i1)
5661 * FOR DELTA2
5662                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
5663                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
5664                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
5665                 Pt1I2 = BETAX * TRANSF + PX4
5666                 Pt2I2 = BETAY * TRANSF + PY4
5667                 Pt3I2 = BETAZ * TRANSF + PZ4
5668               EtI2   = DM4
5669               lb2=lb(i2)
5670 * assign delta1 and delta2 to i1 or i2 to keep the leadng particle
5671 * behaviour
5672 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
5673               p(1,i1)=pt1i1
5674               p(2,i1)=pt2i1
5675               p(3,i1)=pt3i1
5676               e(i1)=eti1
5677               lb(i1)=lb1
5678               p(1,i2)=pt1i2
5679               p(2,i2)=pt2i2
5680               p(3,i2)=pt3i2
5681               e(i2)=eti2
5682               lb(i2)=lb2
5683                 PX1     = P(1,I1)
5684                 PY1     = P(2,I1)
5685                 PZ1     = P(3,I1)
5686               EM1       = E(I1)
5687                 ID(I1)  = 2
5688                 ID(I2)  = 2
5689                 ID1     = ID(I1)
5690                 IBLOCK=4
5691 * GET PION'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
5692                 EPCM=SQRT(EPION(NNN,IRUN)**2+PPX**2+PPY**2+PPZ**2)
5693                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
5694                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
5695                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
5696                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
5697                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
5698 clin-5/2008:
5699                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
5700 clin-5/2008 do not allow smearing in position of produced particles 
5701 c     to avoid immediate reinteraction with the particle I1, I2 or themselves:
5702 c2002        X01 = 1.0 - 2.0 * RANART(NSEED)
5703 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
5704 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
5705 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2002
5706 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
5707 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
5708 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
5709                 RPION(1,NNN,IRUN)=R(1,I1)
5710                 RPION(2,NNN,IRUN)=R(2,I1)
5711                 RPION(3,NNN,IRUN)=R(3,I1)
5712 c
5713               go to 90005
5714 clin-5/2008 N+N->Deuteron+pi:
5715 *     FIND MOMENTUM OF THE FINAL PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
5716  108       CONTINUE
5717            if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
5718 c     For idpert=1: we produce npertd pert deuterons:
5719               ndloop=npertd
5720            elseif(idpert.eq.2.and.npertd.ge.1) then
5721 c     For idpert=2: we first save information for npertd pert deuterons;
5722 c     at the last ndloop we create the regular deuteron+pi 
5723 c     and those pert deuterons:
5724               ndloop=npertd+1
5725            else
5726 c     Just create the regular deuteron+pi:
5727               ndloop=1
5728            endif
5729 c
5730            dprob1=sdprod/sig/float(npertd)
5731            do idloop=1,ndloop
5732               CALL bbdangle(pxd,pyd,pzd,nt,ipert1,ianti,idloop,pfinal,
5733      1 dprob1,lbm)
5734               CALL ROTATE(PX,PY,PZ,PXd,PYd,PZd)
5735 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
5736 *     FROM THE NN CMS FRAME INTO THE GLOBAL CMS FRAME:
5737 *     For the Deuteron:
5738               xmass=xmd
5739               E1dCM=SQRT(xmass**2+PXd**2+PYd**2+PZd**2)
5740               P1dBETA=PXd*BETAX+PYd*BETAY+PZd*BETAZ
5741               TRANSF=GAMMA*(GAMMA*P1dBETA/(GAMMA+1.)+E1dCM)
5742               pxi1=BETAX*TRANSF+PXd
5743               pyi1=BETAY*TRANSF+PYd
5744               pzi1=BETAZ*TRANSF+PZd
5745               if(ianti.eq.0)then
5746                  lbd=42
5747               else
5748                  lbd=-42
5749               endif
5750               if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
5751 cccc  Perturbative production for idpert=1:
5752                  nnn=nnn+1
5753                  PPION(1,NNN,IRUN)=pxi1
5754                  PPION(2,NNN,IRUN)=pyi1
5755                  PPION(3,NNN,IRUN)=pzi1
5756                  EPION(NNN,IRUN)=xmd
5757                  LPION(NNN,IRUN)=lbd
5758                  RPION(1,NNN,IRUN)=R(1,I1)
5759                  RPION(2,NNN,IRUN)=R(2,I1)
5760                  RPION(3,NNN,IRUN)=R(3,I1)
5761 clin-5/2008 assign the perturbative probability:
5762                  dppion(NNN,IRUN)=sdprod/sig/float(npertd)
5763               elseif(idpert.eq.2.and.idloop.le.npertd) then
5764 clin-5/2008 For idpert=2, we produce NPERTD perturbative (anti)deuterons 
5765 c     only when a regular (anti)deuteron+pi is produced in NN collisions.
5766 c     First save the info for the perturbative deuterons:
5767                  ppd(1,idloop)=pxi1
5768                  ppd(2,idloop)=pyi1
5769                  ppd(3,idloop)=pzi1
5770                  lbpd(idloop)=lbd
5771               else
5772 cccc  Regular production:
5773 c     For the regular pion: do LORENTZ-TRANSFORMATION:
5774                  E(i1)=xmm
5775                  E2piCM=SQRT(xmm**2+PXd**2+PYd**2+PZd**2)
5776                  P2piBETA=-PXd*BETAX-PYd*BETAY-PZd*BETAZ
5777                  TRANSF=GAMMA*(GAMMA*P2piBETA/(GAMMA+1.)+E2piCM)
5778                  pxi2=BETAX*TRANSF-PXd
5779                  pyi2=BETAY*TRANSF-PYd
5780                  pzi2=BETAZ*TRANSF-PZd
5781                  p(1,i1)=pxi2
5782                  p(2,i1)=pyi2
5783                  p(3,i1)=pzi2
5784 c     Remove regular pion to check the equivalence 
5785 c     between the perturbative and regular deuteron results:
5786 c                 E(i1)=0.
5787 c
5788                  LB(I1)=lbm
5789                  PX1=P(1,I1)
5790                  PY1=P(2,I1)
5791                  PZ1=P(3,I1)
5792                  EM1=E(I1)
5793                  ID(I1)=2
5794                  ID1=ID(I1)
5795                  E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
5796                  lb1=lb(i1)
5797 c     For the regular deuteron:
5798                  p(1,i2)=pxi1
5799                  p(2,i2)=pyi1
5800                  p(3,i2)=pzi1
5801                  lb(i2)=lbd
5802                  lb2=lb(i2)
5803                  E(i2)=xmd
5804                  EtI2=E(I2)
5805                  ID(I2)=2
5806 c     For idpert=2: create the perturbative deuterons:
5807                  if(idpert.eq.2.and.idloop.eq.ndloop) then
5808                     do ipertd=1,npertd
5809                        nnn=nnn+1
5810                        PPION(1,NNN,IRUN)=ppd(1,ipertd)
5811                        PPION(2,NNN,IRUN)=ppd(2,ipertd)
5812                        PPION(3,NNN,IRUN)=ppd(3,ipertd)
5813                        EPION(NNN,IRUN)=xmd
5814                        LPION(NNN,IRUN)=lbpd(ipertd)
5815                        RPION(1,NNN,IRUN)=R(1,I1)
5816                        RPION(2,NNN,IRUN)=R(2,I1)
5817                        RPION(3,NNN,IRUN)=R(3,I1)
5818 clin-5/2008 assign the perturbative probability:
5819                        dppion(NNN,IRUN)=1./float(npertd)
5820                     enddo
5821                  endif
5822               endif
5823            enddo
5824            IBLOCK=501
5825            go to 90005
5826 clin-5/2008 N+N->Deuteron+pi over
5827 * FOR THE NN-->KAON+X PROCESS, FIND MOMENTUM OF THE FINAL PARTICLES IN 
5828 * THE NUCLEUS-NUCLEUS CMS.
5829 306     CONTINUE
5830 csp11/21/01 phi production
5831               if(XSK5/sigK.gt.RANART(NSEED))then
5832               pz1=p(3,i1)
5833               pz2=p(3,i2)
5834                 LB(I1) = 1 + int(2 * RANART(NSEED))
5835                 LB(I2) = 1 + int(2 * RANART(NSEED))
5836               nnn=nnn+1
5837                 LPION(NNN,IRUN)=29
5838                 EPION(NNN,IRUN)=APHI
5839                 iblock = 222
5840               GO TO 208
5841                ENDIF
5842 c
5843                  IBLOCK=9
5844                  if(ianti .eq. 1)iblock=-9
5845 c
5846               pz1=p(3,i1)
5847               pz2=p(3,i2)
5848 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
5849               nnn=nnn+1
5850                 LPION(NNN,IRUN)=23
5851                 EPION(NNN,IRUN)=Aka
5852               if(srt.le.2.63)then
5853 * only lambda production is possible
5854 * (1.1)P+P-->p+L+kaon+
5855               ic=1
5856                 LB(I1) = 1 + int(2 * RANART(NSEED))
5857               LB(I2)=14
5858               GO TO 208
5859                 ENDIF
5860        if(srt.le.2.74.and.srt.gt.2.63)then
5861 * both Lambda and sigma production are possible
5862               if(XSK1/(XSK1+XSK2).gt.RANART(NSEED))then
5863 * lambda production
5864               ic=1
5865                 LB(I1) = 1 + int(2 * RANART(NSEED))
5866               LB(I2)=14
5867               else
5868 * sigma production
5869                 LB(I1) = 1 + int(2 * RANART(NSEED))
5870                 LB(I2) = 15 + int(3 * RANART(NSEED))
5871               ic=2
5872               endif
5873               GO TO 208
5874        endif
5875        if(srt.le.2.77.and.srt.gt.2.74)then
5876 * then pp-->Delta lamda kaon can happen
5877               if(xsk1/(xsk1+xsk2+xsk3).
5878      1          gt.RANART(NSEED))then
5879 * * (1.1)P+P-->p+L+kaon+
5880               ic=1
5881                 LB(I1) = 1 + int(2 * RANART(NSEED))
5882               LB(I2)=14
5883               go to 208
5884               else
5885               if(xsk2/(xsk2+xsk3).gt.RANART(NSEED))then
5886 * pp-->psk
5887               ic=2
5888                 LB(I1) = 1 + int(2 * RANART(NSEED))
5889                 LB(I2) = 15 + int(3 * RANART(NSEED))
5890               else
5891 * pp-->D+l+k        
5892               ic=3
5893                 LB(I1) = 6 + int(4 * RANART(NSEED))
5894               lb(i2)=14
5895               endif
5896               GO TO 208
5897               endif
5898        endif
5899        if(srt.gt.2.77)then
5900 * all four channels are possible
5901               if(xsk1/(xsk1+xsk2+xsk3+xsk4).gt.RANART(NSEED))then
5902 * p lambda k production
5903               ic=1
5904                 LB(I1) = 1 + int(2 * RANART(NSEED))
5905               LB(I2)=14
5906               go to 208
5907        else
5908           if(xsk3/(xsk2+xsk3+xsk4).gt.RANART(NSEED))then
5909 * delta l K production
5910               ic=3
5911                 LB(I1) = 6 + int(4 * RANART(NSEED))
5912               lb(i2)=14
5913               go to 208
5914           else
5915               if(xsk2/(xsk2+xsk4).gt.RANART(NSEED))then
5916 * n sigma k production
5917                    LB(I1) = 1 + int(2 * RANART(NSEED))
5918                    LB(I2) = 15 + int(3 * RANART(NSEED))
5919               ic=2
5920               else
5921               ic=4
5922                 LB(I1) = 6 + int(4 * RANART(NSEED))
5923                 LB(I2) = 15 + int(3 * RANART(NSEED))
5924               endif
5925               go to 208
5926           endif
5927        endif
5928        endif
5929 208             continue
5930          if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
5931           lb(i1) = - lb(i1)
5932           lb(i2) = - lb(i2)
5933           if(LPION(NNN,IRUN) .eq. 23)LPION(NNN,IRUN)=21
5934          endif
5935 * KEEP ALL COORDINATES OF PARTICLE 2 FOR POSSIBLE PHASE SPACE CHANGE
5936            NTRY1=0
5937 127        CALL BBKAON(ic,SRT,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
5938      &  PPX,PPY,PPZ,icou1)
5939        NTRY1=NTRY1+1
5940        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 127
5941 c       if(icou1.lt.0)return
5942 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
5943        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
5944        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
5945        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
5946 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
5947 * NUCLEUS CMS. FRAME 
5948 * (1) for the necleon/delta
5949 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
5950               E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
5951               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
5952               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
5953               Pt1i1 = BETAX * TRANSF + PX3
5954               Pt2i1 = BETAY * TRANSF + PY3
5955               Pt3i1 = BETAZ * TRANSF + PZ3
5956              Eti1   = DM3
5957              lbi1=lb(i1)
5958 * (2) for the lambda/sigma
5959                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
5960                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
5961                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
5962                 Pt1I2 = BETAX * TRANSF + PX4
5963                 Pt2I2 = BETAY * TRANSF + PY4
5964                 Pt3I2 = BETAZ * TRANSF + PZ4
5965               EtI2   = DM4
5966               lbi2=lb(i2)
5967 * GET the kaon'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
5968                 EPCM=SQRT(aka**2+PPX**2+PPY**2+PPZ**2)
5969                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
5970                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
5971                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
5972                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
5973                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
5974 clin-5/2008
5975                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
5976 clin-5/2008
5977 c2003        X01 = 1.0 - 2.0 * RANART(NSEED)
5978 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
5979 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
5980 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2003
5981 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
5982 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
5983 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
5984                 RPION(1,NNN,IRUN)=R(1,I1)
5985                 RPION(2,NNN,IRUN)=R(2,I1)
5986                 RPION(3,NNN,IRUN)=R(3,I1)
5987 c
5988 * assign the nucleon/delta and lambda/sigma to i1 or i2 to keep the 
5989 * leadng particle behaviour
5990 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
5991               p(1,i1)=pt1i1
5992               p(2,i1)=pt2i1
5993               p(3,i1)=pt3i1
5994               e(i1)=eti1
5995               lb(i1)=lbi1
5996               p(1,i2)=pt1i2
5997               p(2,i2)=pt2i2
5998               p(3,i2)=pt3i2
5999               e(i2)=eti2
6000               lb(i2)=lbi2
6001                 PX1     = P(1,I1)
6002                 PY1     = P(2,I1)
6003                 PZ1     = P(3,I1)
6004               EM1       = E(I1)
6005                 ID(I1)  = 2
6006                 ID(I2)  = 2
6007                 ID1     = ID(I1)
6008               go to 90005
6009 * FOR THE NN-->Delta+Delta+rho PROCESS, FIND MOMENTUM OF THE FINAL 
6010 * PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
6011 307     CONTINUE
6012            NTRY1=0
6013 125        CALL DDrho(SRT,ISEED,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
6014      &  PPX,PPY,PPZ,amrho,icou1)
6015        NTRY1=NTRY1+1
6016        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 125
6017 C       if(icou1.lt.0)return
6018 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
6019        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
6020        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
6021        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
6022                 NNN=NNN+1
6023               arho=amrho
6024 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
6025 * (1) FOR P+P
6026               XDIR=RANART(NSEED)
6027                 IF(LB(I1)*LB(I2).EQ.1)THEN
6028                 IF(XDIR.Le.0.2)then
6029 * (1.1)P+P-->D+++D0+rho(0)
6030                 LPION(NNN,IRUN)=26
6031                 EPION(NNN,IRUN)=Arho
6032               LB(I1)=9
6033               LB(I2)=7
6034        GO TO 2051
6035                 ENDIF
6036 * (1.2)P+P -->D++D+rho(0)
6037                 IF((XDIR.LE.0.4).AND.(XDIR.GT.0.2))THEN
6038                 LPION(NNN,IRUN)=26
6039                 EPION(NNN,IRUN)=Arho
6040                 LB(I1)=8
6041                 LB(I2)=8
6042        GO TO 2051
6043               ENDIF 
6044 * (1.3)P+P-->D+++D+arho(-)
6045                 IF((XDIR.LE.0.6).AND.(XDIR.GT.0.4))THEN
6046                 LPION(NNN,IRUN)=25
6047                 EPION(NNN,IRUN)=Arho
6048                 LB(I1)=9
6049                 LB(I2)=8
6050        GO TO 2051
6051               ENDIF 
6052                 IF((XDIR.LE.0.8).AND.(XDIR.GT.0.6))THEN
6053                 LPION(NNN,IRUN)=27
6054                 EPION(NNN,IRUN)=Arho
6055                 LB(I1)=9
6056                 LB(I2)=6
6057        GO TO 2051
6058               ENDIF 
6059                 IF(XDIR.GT.0.8)THEN
6060                 LPION(NNN,IRUN)=27
6061                 EPION(NNN,IRUN)=Arho
6062                 LB(I1)=7
6063                 LB(I2)=8
6064        GO TO 2051
6065               ENDIF 
6066                ENDIF
6067 * (2)FOR N+N
6068                 IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
6069                 IF(XDIR.Le.0.2)then
6070 * (2.1)N+N-->D++D-+rho(0)
6071                 LPION(NNN,IRUN)=26
6072                 EPION(NNN,IRUN)=Arho
6073               LB(I1)=6
6074               LB(I2)=7
6075        GO TO 2051
6076                 ENDIF
6077 * (2.2)N+N -->D+++D-+rho(-)
6078                 IF((XDIR.LE.0.4).AND.(XDIR.GT.0.2))THEN
6079                 LPION(NNN,IRUN)=25
6080                 EPION(NNN,IRUN)=Arho
6081                 LB(I1)=6
6082                 LB(I2)=9
6083        GO TO 2051
6084               ENDIF 
6085 * (2.3)P+P-->D0+D-+rho(+)
6086                 IF((XDIR.GT.0.4).AND.(XDIR.LE.0.6))THEN
6087                 LPION(NNN,IRUN)=27
6088                 EPION(NNN,IRUN)=Arho
6089                 LB(I1)=9
6090                 LB(I2)=8
6091        GO TO 2051
6092               ENDIF 
6093 * (2.4)P+P-->D0+D0+rho(0)
6094                 IF((XDIR.GT.0.6).AND.(XDIR.LE.0.8))THEN
6095                 LPION(NNN,IRUN)=26
6096                 EPION(NNN,IRUN)=Arho
6097                 LB(I1)=7
6098                 LB(I2)=7
6099        GO TO 2051
6100               ENDIF 
6101 * (2.5)P+P-->D0+D++rho(-)
6102                 IF(XDIR.GT.0.8)THEN
6103                 LPION(NNN,IRUN)=25
6104                 EPION(NNN,IRUN)=Arho
6105                 LB(I1)=7
6106                 LB(I2)=8
6107        GO TO 2051
6108               ENDIF 
6109               ENDIF
6110 * (3)FOR N+P
6111                 IF(LB(I1)*LB(I2).EQ.2)THEN
6112                 IF(XDIR.Le.0.17)then
6113 * (3.1)N+P-->D+++D-+rho(0)
6114                 LPION(NNN,IRUN)=25
6115                 EPION(NNN,IRUN)=Arho
6116               LB(I1)=6
6117               LB(I2)=9
6118        GO TO 2051
6119                 ENDIF
6120 * (3.2)N+P -->D+++D0+rho(-)
6121                 IF((XDIR.LE.0.34).AND.(XDIR.GT.0.17))THEN
6122                 LPION(NNN,IRUN)=25
6123                 EPION(NNN,IRUN)=Arho
6124                 LB(I1)=7
6125                 LB(I2)=9
6126        GO TO 2051
6127               ENDIF 
6128 * (3.3)N+P-->D++D-+rho(+)
6129                 IF((XDIR.GT.0.34).AND.(XDIR.LE.0.51))THEN
6130                 LPION(NNN,IRUN)=27
6131                 EPION(NNN,IRUN)=Arho
6132                 LB(I1)=7
6133                 LB(I2)=8
6134        GO TO 2051
6135               ENDIF 
6136 * (3.4)N+P-->D++D++rho(-)
6137                 IF((XDIR.GT.0.51).AND.(XDIR.LE.0.68))THEN
6138                 LPION(NNN,IRUN)=25
6139                 EPION(NNN,IRUN)=Arho
6140                 LB(I1)=8
6141                 LB(I2)=8
6142        GO TO 2051
6143               ENDIF 
6144 * (3.5)N+P-->D0+D++rho(0)
6145                 IF((XDIR.GT.0.68).AND.(XDIR.LE.0.85))THEN
6146                 LPION(NNN,IRUN)=26
6147                 EPION(NNN,IRUN)=Arho
6148                 LB(I1)=7
6149                 LB(I2)=8
6150        GO TO 2051
6151               ENDIF 
6152 * (3.6)N+P-->D0+D0+rho(+)
6153                 IF(XDIR.GT.0.85)THEN
6154                 LPION(NNN,IRUN)=27
6155                 EPION(NNN,IRUN)=Arho
6156                 LB(I1)=7
6157                 LB(I2)=7
6158               ENDIF 
6159                 ENDIF
6160 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
6161 * NUCLEUS CMS. FRAME 
6162 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
6163 2051          E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
6164               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
6165               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
6166               Pt1i1 = BETAX * TRANSF + PX3
6167               Pt2i1 = BETAY * TRANSF + PY3
6168               Pt3i1 = BETAZ * TRANSF + PZ3
6169              Eti1   = DM3
6170 c
6171              if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
6172                lb(i1) = -lb(i1)
6173                lb(i2) = -lb(i2)
6174                 if(LPION(NNN,IRUN) .eq. 25)then
6175                   LPION(NNN,IRUN)=27
6176                 elseif(LPION(NNN,IRUN) .eq. 27)then
6177                   LPION(NNN,IRUN)=25
6178                 endif
6179                endif
6180 c
6181              lb1=lb(i1)
6182 * FOR DELTA2
6183                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
6184                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
6185                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
6186                 Pt1I2 = BETAX * TRANSF + PX4
6187                 Pt2I2 = BETAY * TRANSF + PY4
6188                 Pt3I2 = BETAZ * TRANSF + PZ4
6189               EtI2   = DM4
6190               lb2=lb(i2)
6191 * assign delta1 and delta2 to i1 or i2 to keep the leadng particle
6192 * behaviour
6193 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
6194               p(1,i1)=pt1i1
6195               p(2,i1)=pt2i1
6196               p(3,i1)=pt3i1
6197               e(i1)=eti1
6198               lb(i1)=lb1
6199               p(1,i2)=pt1i2
6200               p(2,i2)=pt2i2
6201               p(3,i2)=pt3i2
6202               e(i2)=eti2
6203               lb(i2)=lb2
6204                 PX1     = P(1,I1)
6205                 PY1     = P(2,I1)
6206                 PZ1     = P(3,I1)
6207               EM1       = E(I1)
6208                 ID(I1)  = 2
6209                 ID(I2)  = 2
6210                 ID1     = ID(I1)
6211                 IBLOCK=44
6212 * GET rho'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
6213                 EPCM=SQRT(EPION(NNN,IRUN)**2+PPX**2+PPY**2+PPZ**2)
6214                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
6215                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
6216                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
6217                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
6218                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
6219 clin-5/2008:
6220                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
6221 clin-5/2008:
6222 c2004        X01 = 1.0 - 2.0 * RANART(NSEED)
6223 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
6224 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
6225 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2004
6226 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
6227 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
6228 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
6229                 RPION(1,NNN,IRUN)=R(1,I1)
6230                 RPION(2,NNN,IRUN)=R(2,I1)
6231                 RPION(3,NNN,IRUN)=R(3,I1)
6232 c
6233               go to 90005
6234 * FOR THE NN-->N+N+rho PROCESS, FIND MOMENTUM OF THE FINAL 
6235 * PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
6236 308     CONTINUE
6237            NTRY1=0
6238 126        CALL pprho(SRT,ISEED,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
6239      &  PPX,PPY,PPZ,amrho,icou1)
6240        NTRY1=NTRY1+1
6241        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 126
6242 C       if(icou1.lt.0)return
6243 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
6244        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
6245        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
6246        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
6247                 NNN=NNN+1
6248               arho=amrho
6249 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
6250 * (1) FOR P+P
6251               XDIR=RANART(NSEED)
6252                 IF(LB(I1)*LB(I2).EQ.1)THEN
6253                 IF(XDIR.Le.0.5)then
6254 * (1.1)P+P-->P+P+rho(0)
6255                 LPION(NNN,IRUN)=26
6256                 EPION(NNN,IRUN)=Arho
6257               LB(I1)=1
6258               LB(I2)=1
6259        GO TO 2052
6260                 Else
6261 * (1.2)P+P -->p+n+rho(+)
6262                 LPION(NNN,IRUN)=27
6263                 EPION(NNN,IRUN)=Arho
6264                 LB(I1)=1
6265                 LB(I2)=2
6266        GO TO 2052
6267               ENDIF 
6268               endif
6269 * (2)FOR N+N
6270                 IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
6271                 IF(XDIR.Le.0.5)then
6272 * (2.1)N+N-->N+N+rho(0)
6273                 LPION(NNN,IRUN)=26
6274                 EPION(NNN,IRUN)=Arho
6275               LB(I1)=2
6276               LB(I2)=2
6277        GO TO 2052
6278                 Else
6279 * (2.2)N+N -->N+P+rho(-)
6280                 LPION(NNN,IRUN)=25
6281                 EPION(NNN,IRUN)=Arho
6282                 LB(I1)=1
6283                 LB(I2)=2
6284        GO TO 2052
6285               ENDIF 
6286               endif
6287 * (3)FOR N+P
6288                 IF(LB(I1)*LB(I2).EQ.2)THEN
6289                 IF(XDIR.Le.0.33)then
6290 * (3.1)N+P-->N+P+rho(0)
6291                 LPION(NNN,IRUN)=26
6292                 EPION(NNN,IRUN)=Arho
6293               LB(I1)=1
6294               LB(I2)=2
6295        GO TO 2052
6296 * (3.2)N+P -->P+P+rho(-)
6297                 else IF((XDIR.LE.0.67).AND.(XDIR.GT.0.34))THEN
6298                 LPION(NNN,IRUN)=25
6299                 EPION(NNN,IRUN)=Arho
6300                 LB(I1)=1
6301                 LB(I2)=1
6302        GO TO 2052
6303               Else 
6304 * (3.3)N+P-->N+N+rho(+)
6305                 LPION(NNN,IRUN)=27
6306                 EPION(NNN,IRUN)=Arho
6307                 LB(I1)=2
6308                 LB(I2)=2
6309        GO TO 2052
6310               ENDIF 
6311               endif
6312 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
6313 * NUCLEUS CMS. FRAME 
6314 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
6315 2052          E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
6316               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
6317               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
6318               Pt1i1 = BETAX * TRANSF + PX3
6319               Pt2i1 = BETAY * TRANSF + PY3
6320               Pt3i1 = BETAZ * TRANSF + PZ3
6321              Eti1   = DM3
6322 c
6323               if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
6324                lb(i1) = -lb(i1)
6325                lb(i2) = -lb(i2)
6326                 if(LPION(NNN,IRUN) .eq. 25)then
6327                   LPION(NNN,IRUN)=27
6328                 elseif(LPION(NNN,IRUN) .eq. 27)then
6329                   LPION(NNN,IRUN)=25
6330                 endif
6331                endif
6332 c
6333              lb1=lb(i1)
6334 * FOR p2
6335                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
6336                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
6337                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
6338                 Pt1I2 = BETAX * TRANSF + PX4
6339                 Pt2I2 = BETAY * TRANSF + PY4
6340                 Pt3I2 = BETAZ * TRANSF + PZ4
6341               EtI2   = DM4
6342               lb2=lb(i2)
6343 * assign p1 and p2 to i1 or i2 to keep the leadng particle
6344 * behaviour
6345 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
6346               p(1,i1)=pt1i1
6347               p(2,i1)=pt2i1
6348               p(3,i1)=pt3i1
6349               e(i1)=eti1
6350               lb(i1)=lb1
6351               p(1,i2)=pt1i2
6352               p(2,i2)=pt2i2
6353               p(3,i2)=pt3i2
6354               e(i2)=eti2
6355               lb(i2)=lb2
6356                 PX1     = P(1,I1)
6357                 PY1     = P(2,I1)
6358                 PZ1     = P(3,I1)
6359               EM1       = E(I1)
6360                 ID(I1)  = 2
6361                 ID(I2)  = 2
6362                 ID1     = ID(I1)
6363                 IBLOCK=45
6364 * GET rho'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
6365                 EPCM=SQRT(EPION(NNN,IRUN)**2+PPX**2+PPY**2+PPZ**2)
6366                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
6367                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
6368                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
6369                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
6370                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
6371 clin-5/2008:
6372                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
6373 clin-5/2008:
6374 c2005        X01 = 1.0 - 2.0 * RANART(NSEED)
6375 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
6376 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
6377 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2005
6378 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
6379 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
6380 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
6381                 RPION(1,NNN,IRUN)=R(1,I1)
6382                 RPION(2,NNN,IRUN)=R(2,I1)
6383                 RPION(3,NNN,IRUN)=R(3,I1)
6384 c
6385               go to 90005
6386 * FOR THE NN-->p+p+omega PROCESS, FIND MOMENTUM OF THE FINAL 
6387 * PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
6388 309     CONTINUE
6389            NTRY1=0
6390 138        CALL ppomga(SRT,ISEED,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
6391      &  PPX,PPY,PPZ,icou1)
6392        NTRY1=NTRY1+1
6393        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 138
6394 C       if(icou1.lt.0)return
6395 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
6396        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
6397        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
6398        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
6399                 NNN=NNN+1
6400               aomega=0.782
6401 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
6402 * (1) FOR P+P
6403                 IF(LB(I1)*LB(I2).EQ.1)THEN
6404 * (1.1)P+P-->P+P+omega(0)
6405                 LPION(NNN,IRUN)=28
6406                 EPION(NNN,IRUN)=Aomega
6407               LB(I1)=1
6408               LB(I2)=1
6409        GO TO 2053
6410                 ENDIF
6411 * (2)FOR N+N
6412                 IF(iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2)THEN
6413 * (2.1)N+N-->N+N+omega(0)
6414                 LPION(NNN,IRUN)=28
6415                 EPION(NNN,IRUN)=Aomega
6416               LB(I1)=2
6417               LB(I2)=2
6418        GO TO 2053
6419                 ENDIF
6420 * (3)FOR N+P
6421                 IF(LB(I1)*LB(I2).EQ.2)THEN
6422 * (3.1)N+P-->N+P+omega(0)
6423                 LPION(NNN,IRUN)=28
6424                 EPION(NNN,IRUN)=Aomega
6425               LB(I1)=1
6426               LB(I2)=2
6427        GO TO 2053
6428                 ENDIF
6429 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
6430 * NUCLEUS CMS. FRAME 
6431 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
6432 2053          E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
6433               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
6434               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
6435               Pt1i1 = BETAX * TRANSF + PX3
6436               Pt2i1 = BETAY * TRANSF + PY3
6437               Pt3i1 = BETAZ * TRANSF + PZ3
6438              Eti1   = DM3
6439               if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
6440                lb(i1) = -lb(i1)
6441                lb(i2) = -lb(i2)
6442                endif
6443              lb1=lb(i1)
6444 * FOR DELTA2
6445                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
6446                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
6447                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
6448                 Pt1I2 = BETAX * TRANSF + PX4
6449                 Pt2I2 = BETAY * TRANSF + PY4
6450                 Pt3I2 = BETAZ * TRANSF + PZ4
6451               EtI2   = DM4
6452                 lb2=lb(i2)
6453 * assign delta1 and delta2 to i1 or i2 to keep the leadng particle
6454 * behaviour
6455 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
6456               p(1,i1)=pt1i1
6457               p(2,i1)=pt2i1
6458               p(3,i1)=pt3i1
6459               e(i1)=eti1
6460               lb(i1)=lb1
6461               p(1,i2)=pt1i2
6462               p(2,i2)=pt2i2
6463               p(3,i2)=pt3i2
6464               e(i2)=eti2
6465               lb(i2)=lb2
6466                 PX1     = P(1,I1)
6467                 PY1     = P(2,I1)
6468                 PZ1     = P(3,I1)
6469               EM1       = E(I1)
6470                 ID(I1)  = 2
6471                 ID(I2)  = 2
6472                 ID1     = ID(I1)
6473                 IBLOCK=46
6474 * GET omega'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
6475                 EPCM=SQRT(EPION(NNN,IRUN)**2+PPX**2+PPY**2+PPZ**2)
6476                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
6477                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
6478                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
6479                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
6480                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
6481 clin-5/2008:
6482                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
6483 clin-5/2008:
6484 c2006        X01 = 1.0 - 2.0 * RANART(NSEED)
6485 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
6486 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
6487 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2006
6488 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
6489 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
6490 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
6491                     RPION(1,NNN,IRUN)=R(1,I1)
6492                     RPION(2,NNN,IRUN)=R(2,I1)
6493                     RPION(3,NNN,IRUN)=R(3,I1)
6494 c
6495               go to 90005
6496 * change phase space density FOR NUCLEONS AFTER THE PROCESS
6497 
6498 clin-10/25/02-comment out following, since there is no path to it:
6499 clin-8/16/02 used before set
6500 c     IX1,IY1,IZ1,IPX1,IPY1,IPZ1, IX2,IY2,IZ2,IPX2,IPY2,IPZ2:
6501 c                if ((abs(ix1).le.mx) .and. (abs(iy1).le.my) .and.
6502 c     &              (abs(iz1).le.mz)) then
6503 c                  ipx1p = nint(p(1,i1)/dpx)
6504 c                  ipy1p = nint(p(2,i1)/dpy)
6505 c                  ipz1p = nint(p(3,i1)/dpz)
6506 c                  if ((ipx1p.ne.ipx1) .or. (ipy1p.ne.ipy1) .or.
6507 c     &                (ipz1p.ne.ipz1)) then
6508 c                    if ((abs(ipx1).le.mpx) .and. (abs(ipy1).le.my)
6509 c     &                .and. (ipz1.ge.-mpz) .and. (ipz1.le.mpzp))
6510 c     &                f(ix1,iy1,iz1,ipx1,ipy1,ipz1) =
6511 c     &                f(ix1,iy1,iz1,ipx1,ipy1,ipz1) - 1.
6512 c                    if ((abs(ipx1p).le.mpx) .and. (abs(ipy1p).le.my)
6513 c     &                .and. (ipz1p.ge.-mpz).and. (ipz1p.le.mpzp))
6514 c     &                f(ix1,iy1,iz1,ipx1p,ipy1p,ipz1p) =
6515 c     &                f(ix1,iy1,iz1,ipx1p,ipy1p,ipz1p) + 1.
6516 c                  end if
6517 c                end if
6518 c                if ((abs(ix2).le.mx) .and. (abs(iy2).le.my) .and.
6519 c     &              (abs(iz2).le.mz)) then
6520 c                  ipx2p = nint(p(1,i2)/dpx)
6521 c                  ipy2p = nint(p(2,i2)/dpy)
6522 c                  ipz2p = nint(p(3,i2)/dpz)
6523 c                  if ((ipx2p.ne.ipx2) .or. (ipy2p.ne.ipy2) .or.
6524 c     &                (ipz2p.ne.ipz2)) then
6525 c                    if ((abs(ipx2).le.mpx) .and. (abs(ipy2).le.my)
6526 c     &                .and. (ipz2.ge.-mpz) .and. (ipz2.le.mpzp))
6527 c     &                f(ix2,iy2,iz2,ipx2,ipy2,ipz2) =
6528 c     &                f(ix2,iy2,iz2,ipx2,ipy2,ipz2) - 1.
6529 c                    if ((abs(ipx2p).le.mpx) .and. (abs(ipy2p).le.my)
6530 c     &                .and. (ipz2p.ge.-mpz) .and. (ipz2p.le.mpzp))
6531 c     &                f(ix2,iy2,iz2,ipx2p,ipy2p,ipz2p) =
6532 c     &                f(ix2,iy2,iz2,ipx2p,ipy2p,ipz2p) + 1.
6533 c                  end if
6534 c                end if
6535 clin-10/25/02-end
6536 
6537 90005       continue
6538        RETURN
6539 *-----------------------------------------------------------------------
6540 *COM: SET THE NEW MOMENTUM COORDINATES
6541 107     IF(PX .EQ. 0.0 .AND. PY .EQ. 0.0) THEN
6542         T2 = 0.0
6543       ELSE
6544         T2=ATAN2(PY,PX)
6545       END IF
6546       S1   = 1.0 - C1**2 
6547        IF(S1.LE.0)S1=0
6548        S1=SQRT(S1)
6549 
6550 clin-9/2012: check argument in sqrt():
6551        scheck=1.0 - C2**2
6552        if(scheck.lt.0) then
6553           write(99,*) 'scheck3: ', scheck
6554           scheck=0.
6555        endif
6556        S2=SQRT(scheck)
6557 c       S2  =  SQRT( 1.0 - C2**2 )
6558 
6559       CT1  = COS(T1)
6560       ST1  = SIN(T1)
6561       CT2  = COS(T2)
6562       ST2  = SIN(T2)
6563       PZ   = PR * ( C1*C2 - S1*S2*CT1 )
6564       SS   = C2 * S1 * CT1  +  S2 * C1
6565       PX   = PR * ( SS*CT2 - S1*ST1*ST2 )
6566       PY   = PR * ( SS*ST2 + S1*ST1*CT2 )
6567       RETURN
6568       END
6569 clin-5/2008 CRNN over
6570 
6571 **********************************
6572 **********************************
6573 *                                                                      *
6574 *                                                                      *
6575 c
6576       SUBROUTINE CRPP(PX,PY,PZ,SRT,I1,I2,IBLOCK,
6577      &ppel,ppin,spprho,ipp)
6578 *     PURPOSE:                                                         *
6579 *             DEALING WITH PION-PION COLLISIONS                        *
6580 *     NOTE   :                                                         *
6581 *           VALID ONLY FOR PION-PION-DISTANCES LESS THAN 2.5 FM        *
6582 *     QUANTITIES:                                                 *
6583 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
6584 *           SRT      - SQRT OF S                                       *
6585 *           IBLOCK   - THE INFORMATION BACK                            *
6586 *                     6-> Meson+Meson elastic
6587 *                     66-> Meson+meson-->K+K-
6588 **********************************
6589       PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
6590      1     AMP=0.93828,AP1=0.13496,
6591      2 AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
6592       PARAMETER      (AKA=0.498,aks=0.895)
6593       parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
6594       COMMON /AA/ R(3,MAXSTR)
6595 cc      SAVE /AA/
6596       COMMON /BB/ P(3,MAXSTR)
6597 cc      SAVE /BB/
6598       COMMON /CC/ E(MAXSTR)
6599 cc      SAVE /CC/
6600       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
6601 cc      SAVE /EE/
6602       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
6603 cc      SAVE /input1/
6604       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
6605 cc      SAVE /ppb1/
6606       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
6607 cc      SAVE /ppmm/
6608       COMMON/RNDF77/NSEED
6609 cc      SAVE /RNDF77/
6610       SAVE   
6611 
6612       lb1i=lb(i1)
6613       lb2i=lb(i2)
6614 
6615        PX0=PX
6616        PY0=PY
6617        PZ0=PZ
6618         iblock=1
6619 *-----------------------------------------------------------------------
6620 * check Meson+Meson inelastic collisions
6621 clin-9/28/00
6622 c        if((srt.gt.1.).and.(ppin/(ppin+ppel).gt.RANART(NSEED)))then
6623 c        iblock=66
6624 c        e(i1)=0.498
6625 c        e(i2)=0.498
6626 c        lb(i1)=21
6627 c        lb(i2)=23
6628 c        go to 10
6629 clin-11/07/00
6630 c        if(srt.gt.1.and.(ppin/(ppin+ppel)).gt.RANART(NSEED)) then
6631 clin-4/03/02
6632         if(srt.gt.(2*aka).and.(ppin/(ppin+ppel)).gt.RANART(NSEED)) then
6633 c        if(ppin/(ppin+ppel).gt.RANART(NSEED)) then
6634 clin-10/08/00
6635 
6636            ranpi=RANART(NSEED)
6637            if((pprr/ppin).ge.ranpi) then
6638 
6639 c     1) pi pi <-> rho rho:
6640               call pi2ro2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6641 
6642 clin-4/03/02 eta equilibration:
6643            elseif((pprr+ppee)/ppin.ge.ranpi) then
6644 c     4) pi pi <-> eta eta:
6645               call pi2et2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6646            elseif(((pprr+ppee+pppe)/ppin).ge.ranpi) then
6647 c     5) pi pi <-> pi eta:
6648               call pi3eta(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6649            elseif(((pprr+ppee+pppe+rpre)/ppin).ge.ranpi) then
6650 c     6) rho pi <-> pi eta:
6651               call rpiret(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6652            elseif(((pprr+ppee+pppe+rpre+xopoe)/ppin).ge.ranpi) then
6653 c     7) omega pi <-> omega eta:
6654               call opioet(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6655            elseif(((pprr+ppee+pppe+rpre+xopoe+rree)
6656      1             /ppin).ge.ranpi) then
6657 c     8) rho rho <-> eta eta:
6658               call ro2et2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
6659 clin-4/03/02-end
6660 
6661 c     2) BBbar production:
6662            elseif(((pprr+ppee+pppe+rpre+xopoe+rree+ppinnb)/ppin)
6663      1             .ge.ranpi) then
6664 
6665               call bbarfs(lbb1,lbb2,ei1,ei2,iblock,iseed)
6666 c     3) KKbar production:
6667            else
6668               iblock=66
6669               ei1=aka
6670               ei2=aka
6671               lbb1=21
6672               lbb2=23
6673 clin-11/07/00 pi rho -> K* Kbar and K*bar K productions:
6674               lb1=lb(i1)
6675               lb2=lb(i2)
6676 clin-2/13/03 include omega the same as rho, eta the same as pi:
6677 c        if(((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.25.and.lb2.le.27))
6678 c     1  .or.((lb2.ge.3.and.lb2.le.5).and.(lb1.ge.25.and.lb1.le.27)))
6679         if( ( (lb1.eq.0.or.(lb1.ge.3.and.lb1.le.5))
6680      1       .and.(lb2.ge.25.and.lb2.le.28))
6681      2       .or. ( (lb2.eq.0.or.(lb2.ge.3.and.lb2.le.5))
6682      3       .and.(lb1.ge.25.and.lb1.le.28))) then
6683            ei1=aks
6684            ei2=aka
6685            if(RANART(NSEED).ge.0.5) then
6686               iblock=366
6687               lbb1=30
6688               lbb2=21
6689            else
6690               iblock=367
6691               lbb1=-30
6692               lbb2=23
6693            endif
6694         endif
6695 clin-11/07/00-end
6696            endif
6697 clin-ppbar-8/25/00
6698            e(i1)=ei1
6699            e(i2)=ei2
6700            lb(i1)=lbb1
6701            lb(i2)=lbb2
6702 clin-10/08/00-end
6703 
6704        else
6705 cbzdbg10/15/99
6706 c.....for meson+meson elastic srt.le.2Mk, if not pi+pi collision return
6707          if ((lb(i1).lt.3.or.lb(i1).gt.5).and.
6708      &        (lb(i2).lt.3.or.lb(i2).gt.5)) return
6709 cbzdbg10/15/99 end
6710 
6711 * check Meson+Meson elastic collisions
6712         IBLOCK=6
6713 * direct process
6714        if(ipp.eq.1.or.ipp.eq.4.or.ipp.eq.6)go to 10
6715        if(spprho/ppel.gt.RANART(NSEED))go to 20
6716        endif
6717 10      NTAG=0
6718         EM1=E(I1)
6719         EM2=E(I2)
6720 
6721 *-----------------------------------------------------------------------
6722 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
6723 * ENERGY CONSERVATION
6724           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
6725      1                - 4.0 * (EM1*EM2)**2
6726           IF(PR2.LE.0.)PR2=1.e-09
6727           PR=SQRT(PR2)/(2.*SRT)
6728           C1   = 1.0 - 2.0 * RANART(NSEED)
6729           T1   = 2.0 * PI * RANART(NSEED)
6730           S1   = SQRT( 1.0 - C1**2 )
6731       CT1  = COS(T1)
6732       ST1  = SIN(T1)
6733       PZ   = PR * C1
6734       PX   = PR * S1*CT1 
6735       PY   = PR * S1*ST1
6736 * for isotropic distribution no need to ROTATE THE MOMENTUM
6737 
6738 * ROTATE IT 
6739       CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
6740 
6741       RETURN
6742 20       continue
6743        iblock=666
6744 * treat rho formation in pion+pion collisions
6745 * calculate the mass and momentum of rho in the nucleus-nucleus frame
6746        call rhores(i1,i2)
6747        if(ipp.eq.2)lb(i1)=27
6748        if(ipp.eq.3)lb(i1)=26
6749        if(ipp.eq.5)lb(i1)=25
6750        return       
6751       END
6752 **********************************
6753 **********************************
6754 *                                                                      *
6755 *                                                                      *
6756       SUBROUTINE CRND(IRUN,PX,PY,PZ,SRT,I1,I2,IBLOCK,
6757      &SIGNN,SIG,sigk,xsk1,xsk2,xsk3,xsk4,xsk5,NT,ipert1)
6758 *     PURPOSE:                                                         *
6759 *             DEALING WITH NUCLEON-BARYON RESONANCE COLLISIONS         *
6760 *     NOTE   :                                                         *
6761 *           VALID ONLY FOR BARYON-BARYON-DISTANCES LESS THAN 1.32 FM   *
6762 *           (1.32 = 2 * HARD-CORE-RADIUS [HRC] )                       *
6763 *     QUANTITIES:                                                 *
6764 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
6765 *           SRT      - SQRT OF S                                       *
6766 *           NSTAR =1 INCLUDING N* RESORANCE,ELSE NOT                   *
6767 *           NDIRCT=1 INCLUDING DIRECT PION PRODUCTION PROCESS         *
6768 *           IBLOCK   - THE INFORMATION BACK                            *
6769 *                      0-> COLLISION CANNOT HAPPEN                     *
6770 *                      1-> N-N ELASTIC COLLISION                       *
6771 *                      2-> N+N->N+DELTA,OR N+N->N+N* REACTION          *
6772 *                      3-> N+DELTA->N+N OR N+N*->N+N REACTION          *
6773 *                      4-> N+N->N+N+PION,DIRTCT PROCESS                *
6774 *           N12       - IS USED TO SPECIFY BARYON-BARYON REACTION      *
6775 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
6776 *                      N12,                                            *
6777 *                      M12=1 FOR p+n-->delta(+)+ n                     *
6778 *                          2     p+n-->delta(0)+ p                     *
6779 *                          3     p+p-->delta(++)+n                     *
6780 *                          4     p+p-->delta(+)+p                      *
6781 *                          5     n+n-->delta(0)+n                      *
6782 *                          6     n+n-->delta(-)+p                      *
6783 *                          7     n+p-->N*(0)(1440)+p                   *
6784 *                          8     n+p-->N*(+)(1440)+n                   *
6785 *                        9     p+p-->N*(+)(1535)+p                     *
6786 *                        10    n+n-->N*(0)(1535)+n                     *
6787 *                         11    n+p-->N*(+)(1535)+n                     *
6788 *                        12    n+p-->N*(0)(1535)+p
6789 *                        13    D(++)+D(-)-->N*(+)(1440)+n
6790 *                         14    D(++)+D(-)-->N*(0)(1440)+p
6791 *                        15    D(+)+D(0)--->N*(+)(1440)+n
6792 *                        16    D(+)+D(0)--->N*(0)(1440)+p
6793 *                        17    D(++)+D(0)-->N*(+)(1535)+p
6794 *                        18    D(++)+D(-)-->N*(0)(1535)+p
6795 *                        19    D(++)+D(-)-->N*(+)(1535)+n
6796 *                        20    D(+)+D(+)-->N*(+)(1535)+p
6797 *                        21    D(+)+D(0)-->N*(+)(1535)+n
6798 *                        22    D(+)+D(0)-->N*(0)(1535)+p
6799 *                        23    D(+)+D(-)-->N*(0)(1535)+n
6800 *                        24    D(0)+D(0)-->N*(0)(1535)+n
6801 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
6802 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
6803 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
6804 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
6805 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
6806 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
6807 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
6808 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
6809 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
6810 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
6811 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
6812 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
6813 *                        ++    see the note book for more listing
6814 **********************************
6815         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
6816      1  AMP=0.93828,AP1=0.13496,AKA=0.498,APHI=1.020,
6817      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
6818         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
6819         parameter (xmd=1.8756,npdmax=10000)
6820         COMMON /AA/ R(3,MAXSTR)
6821 cc      SAVE /AA/
6822         COMMON /BB/ P(3,MAXSTR)
6823 cc      SAVE /BB/
6824         COMMON /CC/ E(MAXSTR)
6825 cc      SAVE /CC/
6826         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
6827 cc      SAVE /EE/
6828         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
6829 cc      SAVE /ff/
6830         common /gg/ dx,dy,dz,dpx,dpy,dpz
6831 cc      SAVE /gg/
6832         COMMON /INPUT/ NSTAR,NDIRCT,DIR
6833 cc      SAVE /INPUT/
6834         COMMON /NN/NNN
6835 cc      SAVE /NN/
6836         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
6837 cc      SAVE /BG/
6838         COMMON   /RUN/NUM
6839 cc      SAVE /RUN/
6840         COMMON   /PA/RPION(3,MAXSTR,MAXR)
6841 cc      SAVE /PA/
6842         COMMON   /PB/PPION(3,MAXSTR,MAXR)
6843 cc      SAVE /PB/
6844         COMMON   /PC/EPION(MAXSTR,MAXR)
6845 cc      SAVE /PC/
6846         COMMON   /PD/LPION(MAXSTR,MAXR)
6847 cc      SAVE /PD/
6848         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
6849 cc      SAVE /input1/
6850       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
6851      1 px1n,py1n,pz1n,dp1n
6852 cc      SAVE /leadng/
6853       COMMON/RNDF77/NSEED
6854 cc      SAVE /RNDF77/
6855       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
6856      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
6857      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
6858       common /dpi/em2,lb2
6859       common /para8/ idpert,npertd,idxsec
6860       dimension ppd(3,npdmax),lbpd(npdmax)
6861       SAVE   
6862 *-----------------------------------------------------------------------
6863        n12=0
6864        m12=0
6865         IBLOCK=0
6866         NTAG=0
6867         EM1=E(I1)
6868         EM2=E(I2)
6869         PR  = SQRT( PX**2 + PY**2 + PZ**2 )
6870         C2  = PZ / PR
6871         X1  = RANART(NSEED)
6872         ianti=0
6873         if(lb(i1).lt.0 .and. lb(i2).lt.0)ianti=1
6874 
6875 clin-6/2008 Production of perturbative deuterons for idpert=1:
6876       call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
6877       if(idpert.eq.1.and.ipert1.eq.1) then
6878          IF (SRT .LT. 2.012) RETURN
6879          if((iabs(lb(i1)).eq.1.or.iabs(lb(i1)).eq.2)
6880      1        .and.(iabs(lb(i2)).ge.6.and.iabs(lb(i2)).le.13)) then
6881             goto 108
6882          elseif((iabs(lb(i2)).eq.1.or.iabs(lb(i2)).eq.2)
6883      1           .and.(iabs(lb(i1)).ge.6.and.iabs(lb(i1)).le.13)) then
6884             goto 108
6885          else
6886             return
6887          endif
6888       endif
6889 *-----------------------------------------------------------------------
6890 *COM: TEST FOR ELASTIC SCATTERING (EITHER N-N OR DELTA-DELTA 0R
6891 *      N-DELTA OR N*-N* or N*-Delta)
6892       IF (X1 .LE. SIGNN/SIG) THEN
6893 *COM:  PARAMETRISATION IS TAKEN FROM THE CUGNON-PAPER
6894         AS  = ( 3.65 * (SRT - 1.8766) )**6
6895         A   = 6.0 * AS / (1.0 + AS)
6896         TA  = -2.0 * PR**2
6897         X   = RANART(NSEED)
6898 clin-10/24/02        T1  = ALOG( (1-X) * DEXP(dble(A)*dble(TA)) + X )  /  A
6899         T1  = sngl(DLOG(dble(1.-X)*DEXP(dble(A)*dble(TA))+dble(X)))/  A
6900         C1  = 1.0 - T1/TA
6901         T1  = 2.0 * PI * RANART(NSEED)
6902         IBLOCK=1
6903        GO TO 107
6904       ELSE
6905 *COM: TEST FOR INELASTIC SCATTERING
6906 *     IF THE AVAILABLE ENERGY IS LESS THAN THE PION-MASS, NOTHING
6907 *     CAN HAPPEN ANY MORE ==> RETURN (2.04 = 2*AVMASS + PI-MASS+0.02)
6908         IF (SRT .LT. 2.04) RETURN
6909 clin-6/2008 add d+meson production for n*N*(0)(1440) and p*N*(+)(1440) channels
6910 c     (they did not have any inelastic reactions before):
6911         if(((iabs(LB(I1)).EQ.2.or.iabs(LB(I2)).EQ.2).AND.
6912      1       (LB(I1)*LB(I2)).EQ.20).or.(LB(I1)*LB(I2)).EQ.13) then
6913            IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6914         ENDIF
6915 c
6916 * Resonance absorption or Delta + N-->N*(1440), N*(1535)
6917 * COM: TEST FOR DELTA OR N* ABSORPTION
6918 *      IN THE PROCESS DELTA+N-->NN, N*+N-->NN
6919         PRF=SQRT(0.25*SRT**2-AVMASS**2)
6920         IF(EM1.GT.1.)THEN
6921         DELTAM=EM1
6922         ELSE
6923         DELTAM=EM2
6924         ENDIF
6925         RENOM=DELTAM*PRF**2/DENOM(SRT,1.)/PR
6926         RENOMN=DELTAM*PRF**2/DENOM(SRT,2.)/PR
6927         RENOM1=DELTAM*PRF**2/DENOM(SRT,-1.)/PR
6928 * avoid the inelastic collisions between n+delta- -->N+N 
6929 *       and p+delta++ -->N+N due to charge conservation,
6930 *       but they can scatter to produce kaons 
6931        if((iabs(lb(i1)).eq.2).and.(iabs(lb(i2)).eq.6)) renom=0.
6932        if((iabs(lb(i2)).eq.2).and.(iabs(lb(i1)).eq.6)) renom=0.
6933        if((iabs(lb(i1)).eq.1).and.(iabs(lb(i2)).eq.9)) renom=0.
6934        if((iabs(lb(i2)).eq.1).and.(iabs(lb(i1)).eq.9)) renom=0.
6935        Call M1535(iabs(lb(i1)),iabs(lb(i2)),srt,x1535)
6936         X1440=(3./4.)*SIGMA(SRT,2,0,1)
6937 * CROSS SECTION FOR KAON PRODUCTION from the four channels
6938 * for NLK channel
6939 * avoid the inelastic collisions between n+delta- -->N+N 
6940 *       and p+delta++ -->N+N due to charge conservation,
6941 *       but they can scatter to produce kaons 
6942        if(((iabs(lb(i1)).eq.2).and.(iabs(lb(i2)).eq.6)).OR. 
6943      &         ((iabs(lb(i2)).eq.2).and.(iabs(lb(i1)).eq.6)).OR.
6944      &         ((iabs(lb(i1)).eq.1).and.(iabs(lb(i2)).eq.9)).OR.
6945      &         ((iabs(lb(i2)).eq.1).and.(iabs(lb(i1)).eq.9)))THEN
6946 clin-6/2008
6947           IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6948 c          IF((SIGK+SIGNN)/SIG.GE.X1)GO TO 306
6949           IF((SIGK+SIGNN+sdprod)/SIG.GE.X1)GO TO 306
6950 c
6951        ENDIF
6952 * WE DETERMINE THE REACTION CHANNELS IN THE FOLLOWING
6953 * FOR n+delta(++)-->p+p or n+delta(++)-->n+N*(+)(1440),n+N*(+)(1535)
6954 * REABSORPTION OR N*(1535) PRODUCTION LIKE IN P+P OR N*(1440) LIKE PN, 
6955         IF(LB(I1)*LB(I2).EQ.18.AND.
6956      &  (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))then
6957         SIGND=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
6958         SIGDN=0.25*SIGND*RENOM
6959 clin-6/2008
6960         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6961 c        IF(X1.GT.(SIGNN+SIGDN+X1440+X1535+SIGK)/SIG)RETURN
6962         IF(X1.GT.(SIGNN+SIGDN+X1440+X1535+SIGK+sdprod)/SIG)RETURN
6963 c
6964        IF(SIGK/(SIGK+SIGDN+X1440+X1535).GT.RANART(NSEED))GO TO 306
6965 * REABSORPTION:
6966        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1440+X1535))THEN
6967         M12=3
6968        GO TO 206
6969        ELSE
6970 * N* PRODUCTION
6971               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
6972 * N*(1440)
6973               M12=37
6974               ELSE
6975 * N*(1535)       M12=38
6976 clin-2/26/03 why is the above commented out? leads to M12=0 but 
6977 c     particle mass is changed after 204 (causes energy violation).
6978 c     replace by elastic process (return):
6979                    return
6980 
6981               ENDIF
6982        GO TO 204
6983        ENDIF
6984         ENDIF
6985 * FOR p+delta(-)-->n+n or p+delta(-)-->n+N*(0)(1440),n+N*(0)(1535)
6986 * REABSORPTION OR N*(1535) PRODUCTION LIKE IN P+P OR N*(1440) LIKE PN, 
6987         IF(LB(I1)*LB(I2).EQ.6.AND.
6988      &   ((iabs(LB(I1)).EQ.1).OR.(iabs(LB(I2)).EQ.1)))then
6989         SIGND=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
6990         SIGDN=0.25*SIGND*RENOM
6991 clin-6/2008
6992         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
6993 c        IF (X1.GT.(SIGNN+SIGDN+X1440+X1535+SIGK)/SIG)RETURN
6994         IF (X1.GT.(SIGNN+SIGDN+X1440+X1535+SIGK+sdprod)/SIG)RETURN
6995 c
6996        IF(SIGK/(SIGK+SIGDN+X1440+X1535).GT.RANART(NSEED))GO TO 306
6997 * REABSORPTION:
6998        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1440+X1535))THEN
6999         M12=6
7000        GO TO 206
7001        ELSE
7002 * N* PRODUCTION
7003               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
7004 * N*(1440)
7005               M12=47
7006               ELSE
7007 * N*(1535)       M12=48
7008 clin-2/26/03 causes energy violation, replace by elastic process (return):
7009                    return
7010 
7011               ENDIF
7012        GO TO 204
7013        ENDIF
7014         ENDIF
7015 * FOR p+delta(+)-->p+p, N*(+)(144)+p, N*(+)(1535)+p
7016         IF(LB(I1)*LB(I2).EQ.8.AND.
7017      &   (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))THEN
7018         SIGND=1.5*SIGMA(SRT,1,1,1)
7019         SIGDN=0.25*SIGND*RENOM
7020 clin-6/2008
7021         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
7022 c        IF(X1.GT.(SIGNN+SIGDN+x1440+x1535+SIGK)/SIG)RETURN
7023         IF(X1.GT.(SIGNN+SIGDN+x1440+x1535+SIGK+sdprod)/SIG)RETURN
7024 c
7025        IF(SIGK/(SIGK+SIGDN+X1440+X1535).GT.RANART(NSEED))GO TO 306
7026        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1440+X1535))THEN
7027         M12=4
7028        GO TO 206
7029        ELSE
7030               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
7031 * N*(144)
7032               M12=39
7033               ELSE
7034               M12=40
7035               ENDIF
7036               GO TO 204
7037        ENDIF
7038         ENDIF
7039 * FOR n+delta(0)-->n+n, N*(0)(144)+n, N*(0)(1535)+n
7040         IF(LB(I1)*LB(I2).EQ.14.AND.
7041      &   (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))THEN
7042         SIGND=1.5*SIGMA(SRT,1,1,1)
7043         SIGDN=0.25*SIGND*RENOM
7044 clin-6/2008
7045         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
7046 c        IF(X1.GT.(SIGNN+SIGDN+x1440+x1535+SIGK)/SIG)RETURN
7047         IF(X1.GT.(SIGNN+SIGDN+x1440+x1535+SIGK+sdprod)/SIG)RETURN
7048 c
7049        IF(SIGK/(SIGK+SIGDN+X1440+X1535).GT.RANART(NSEED))GO TO 306
7050        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1440+X1535))THEN
7051         M12=5
7052        GO TO 206
7053        ELSE
7054               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
7055 * N*(144)
7056               M12=48
7057               ELSE
7058               M12=49
7059               ENDIF
7060               GO TO 204
7061        ENDIF
7062         ENDIF
7063 * FOR n+delta(+)-->n+p, N*(+)(1440)+n,N*(0)(1440)+p,
7064 *                       N*(+)(1535)+n,N*(0)(1535)+p
7065         IF(LB(I1)*LB(I2).EQ.16.AND.
7066      &   (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))THEN
7067         SIGND=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
7068         SIGDN=0.5*SIGND*RENOM
7069 clin-6/2008
7070         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
7071 c        IF(X1.GT.(SIGNN+SIGDN+2.*x1440+2.*x1535+SIGK)/SIG)RETURN
7072         IF(X1.GT.(SIGNN+SIGDN+2.*x1440+2.*x1535+SIGK+sdprod)/SIG)RETURN
7073 c
7074        IF(SIGK/(SIGK+SIGDN+2*X1440+2*X1535).GT.RANART(NSEED))GO TO 306
7075        IF(RANART(NSEED).LT.SIGDN/(SIGDN+2.*X1440+2.*X1535))THEN
7076         M12=1
7077        GO TO 206
7078        ELSE
7079               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
7080               M12=41
7081               IF(RANART(NSEED).LE.0.5)M12=43
7082               ELSE
7083               M12=42
7084               IF(RANART(NSEED).LE.0.5)M12=44
7085               ENDIF
7086               GO TO 204
7087        ENDIF
7088         ENDIF
7089 * FOR p+delta(0)-->n+p, N*(+)(1440)+n,N*(0)(1440)+p,
7090 *                       N*(+)(1535)+n,N*(0)(1535)+p
7091         IF(LB(I1)*LB(I2).EQ.7)THEN
7092         SIGND=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
7093         SIGDN=0.5*SIGND*RENOM
7094 clin-6/2008
7095         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
7096 c        IF(X1.GT.(SIGNN+SIGDN+2.*x1440+2.*x1535+SIGK)/SIG)RETURN
7097         IF(X1.GT.(SIGNN+SIGDN+2.*x1440+2.*x1535+SIGK+sdprod)/SIG)RETURN
7098 c
7099        IF(SIGK/(SIGK+SIGDN+2*X1440+2*X1535).GT.RANART(NSEED))GO TO 306
7100        IF(RANART(NSEED).LT.SIGDN/(SIGDN+2.*X1440+2.*X1535))THEN
7101         M12=2
7102        GO TO 206
7103        ELSE
7104               IF(RANART(NSEED).LT.X1440/(X1440+X1535))THEN
7105               M12=50
7106               IF(RANART(NSEED).LE.0.5)M12=51
7107               ELSE
7108               M12=52
7109               IF(RANART(NSEED).LE.0.5)M12=53
7110               ENDIF
7111               GO TO 204
7112        ENDIF
7113         ENDIF
7114 * FOR p+N*(0)(14)-->p+n, N*(+)(1535)+n,N*(0)(1535)+p
7115 * OR  P+N*(0)(14)-->D(+)+N, D(0)+P, 
7116         IF(LB(I1)*LB(I2).EQ.10.AND.
7117      &  (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))then
7118         SIGND=(3./4.)*SIGMA(SRT,2,0,1)
7119         SIGDN=SIGND*RENOMN
7120 clin-6/2008
7121         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
7122 c        IF(X1.GT.(SIGNN+SIGDN+X1535+SIGK)/SIG)RETURN
7123         IF(X1.GT.(SIGNN+SIGDN+X1535+SIGK+sdprod)/SIG)RETURN
7124 c
7125        IF(SIGK/(SIGK+SIGDN+X1535).GT.RANART(NSEED))GO TO 306
7126        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1535))THEN
7127         M12=7
7128         GO TO 206
7129        ELSE
7130        M12=54
7131        IF(RANART(NSEED).LE.0.5)M12=55
7132        ENDIF
7133        GO TO 204
7134         ENDIF
7135 * FOR n+N*(+)-->p+n, N*(+)(1535)+n,N*(0)(1535)+p
7136         IF(LB(I1)*LB(I2).EQ.22.AND.
7137      &   (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))then
7138         SIGND=(3./4.)*SIGMA(SRT,2,0,1)
7139         SIGDN=SIGND*RENOMN
7140 clin-6/2008
7141         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
7142 c        IF(X1.GT.(SIGNN+SIGDN+X1535+SIGK)/SIG)RETURN
7143         IF(X1.GT.(SIGNN+SIGDN+X1535+SIGK+sdprod)/SIG)RETURN
7144 c
7145        IF(SIGK/(SIGK+SIGDN+X1535).GT.RANART(NSEED))GO TO 306
7146        IF(RANART(NSEED).LT.SIGDN/(SIGDN+X1535))THEN
7147         M12=8
7148         GO TO 206
7149        ELSE
7150        M12=56
7151        IF(RANART(NSEED).LE.0.5)M12=57
7152        ENDIF
7153        GO TO 204
7154         ENDIF
7155 * FOR N*(1535)+N-->N+N COLLISIONS
7156         IF((iabs(LB(I1)).EQ.12).OR.(iabs(LB(I1)).EQ.13).OR.
7157      1  (iabs(LB(I2)).EQ.12).OR.(iabs(LB(I2)).EQ.13))THEN
7158         SIGND=X1535
7159         SIGDN=SIGND*RENOM1
7160 clin-6/2008
7161         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
7162 c        IF(X1.GT.(SIGNN+SIGDN+SIGK)/SIG)RETURN
7163         IF(X1.GT.(SIGNN+SIGDN+SIGK+sdprod)/SIG)RETURN
7164 c
7165        IF(SIGK/(SIGK+SIGDN).GT.RANART(NSEED))GO TO 306
7166         IF(LB(I1)*LB(I2).EQ.24)M12=10
7167         IF(LB(I1)*LB(I2).EQ.12)M12=12
7168         IF(LB(I1)*LB(I2).EQ.26)M12=11
7169        IF(LB(I1)*LB(I2).EQ.13)M12=9
7170        GO TO 206
7171         ENDIF
7172 204       CONTINUE
7173 * (1) GENERATE THE MASS FOR THE N*(1440) AND N*(1535)
7174 * (2) CALCULATE THE FINAL MOMENTUM OF THE n+N* SYSTEM
7175 * (3) RELABLE THE FINAL STATE PARTICLES
7176 *PARAMETRIZATION OF THE SHAPE OF THE N* RESONANCE ACCORDING
7177 *     TO kitazoe's or J.D.JACKSON'S MASS FORMULA AND BREIT WIGNER
7178 *     FORMULA FOR N* RESORANCE
7179 *     DETERMINE DELTA MASS VIA REJECTION METHOD.
7180           DMAX = SRT - AVMASS-0.005
7181           DMIN = 1.078
7182           IF((M12.eq.37).or.(M12.eq.39).or.
7183      1    (M12.eQ.41).OR.(M12.eQ.43).OR.(M12.EQ.46).
7184      2     OR.(M12.EQ.48).OR.(M12.EQ.50).OR.(M12.EQ.51))then
7185 * N*(1440) production
7186           IF(DMAX.LT.1.44) THEN
7187           FM=FNS(DMAX,SRT,0.)
7188           ELSE
7189 
7190 clin-10/25/02 get rid of argument usage mismatch in FNS():
7191              xdmass=1.44
7192 c          FM=FNS(1.44,SRT,1.)
7193           FM=FNS(xdmass,SRT,1.)
7194 clin-10/25/02-end
7195 
7196           ENDIF
7197           IF(FM.EQ.0.)FM=1.E-09
7198           NTRY2=0
7199 11        DM=RANART(NSEED)*(DMAX-DMIN)+DMIN
7200           NTRY2=NTRY2+1
7201           IF((RANART(NSEED).GT.FNS(DM,SRT,1.)/FM).AND.
7202      1    (NTRY2.LE.10)) GO TO 11
7203 
7204 clin-2/26/03 limit the N* mass below a certain value 
7205 c     (here taken as its central value + 2* B-W fullwidth):
7206           if(dm.gt.2.14) goto 11
7207 
7208               GO TO 13
7209               ELSE
7210 * N*(1535) production
7211           IF(DMAX.LT.1.535) THEN
7212           FM=FD5(DMAX,SRT,0.)
7213           ELSE
7214 
7215 clin-10/25/02 get rid of argument usage mismatch in FNS():
7216              xdmass=1.535
7217 c          FM=FD5(1.535,SRT,1.)
7218           FM=FD5(xdmass,SRT,1.)
7219 clin-10/25/02-end
7220 
7221           ENDIF
7222           IF(FM.EQ.0.)FM=1.E-09
7223           NTRY1=0
7224 12        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
7225           NTRY1=NTRY1+1
7226           IF((RANART(NSEED) .GT. FD5(DM,SRT,1.)/FM).AND.
7227      1    (NTRY1.LE.10)) GOTO 12
7228 
7229 clin-2/26/03 limit the N* mass below a certain value 
7230 c     (here taken as its central value + 2* B-W fullwidth):
7231           if(dm.gt.1.84) goto 12
7232 
7233              ENDIF
7234 13       CONTINUE
7235 * (2) DETERMINE THE FINAL MOMENTUM
7236        PRF=0.
7237        PF2=((SRT**2-DM**2+AVMASS**2)/(2.*SRT))**2-AVMASS**2
7238        IF(PF2.GT.0.)PRF=SQRT(PF2)
7239 * (3) RELABLE FINAL STATE PARTICLES
7240 * 37 D(++)+n-->N*(+)(14)+p
7241           IF(M12.EQ.37)THEN
7242           IF(iabs(LB(I1)).EQ.9)THEN
7243           LB(I1)=1
7244           E(I1)=AMP
7245          LB(I2)=11
7246          E(I2)=DM
7247           ELSE
7248           LB(I2)=1
7249           E(I2)=AMP
7250          LB(I1)=11
7251          E(I1)=DM
7252           ENDIF
7253          GO TO 207
7254           ENDIF
7255 * 38 D(++)+n-->N*(+)(15)+p
7256           IF(M12.EQ.38)THEN
7257           IF(iabs(LB(I1)).EQ.9)THEN
7258           LB(I1)=1
7259           E(I1)=AMP
7260          LB(I2)=13
7261          E(I2)=DM
7262           ELSE
7263           LB(I2)=1
7264           E(I2)=AMP
7265          LB(I1)=13
7266          E(I1)=DM
7267           ENDIF
7268          GO TO 207
7269          ENDIF
7270 * 39 D(+)+P-->N*(+)(14)+p
7271           IF(M12.EQ.39)THEN
7272           IF(iabs(LB(I1)).EQ.8)THEN
7273           LB(I1)=1
7274           E(I1)=AMP
7275          LB(I2)=11
7276          E(I2)=DM
7277           ELSE
7278           LB(I2)=1
7279           E(I2)=AMP
7280          LB(I1)=11
7281          E(I1)=DM
7282           ENDIF
7283          GO TO 207
7284          ENDIF
7285 * 40 D(+)+P-->N*(+)(15)+p
7286           IF(M12.EQ.40)THEN
7287           IF(iabs(LB(I1)).EQ.8)THEN
7288           LB(I1)=1
7289           E(I1)=AMP
7290          LB(I2)=13
7291          E(I2)=DM
7292           ELSE
7293           LB(I2)=1
7294           E(I2)=AMP
7295          LB(I1)=13
7296          E(I1)=DM
7297           ENDIF
7298          GO TO 207
7299          ENDIF
7300 * 41 D(+)+N-->N*(+)(14)+N
7301           IF(M12.EQ.41)THEN
7302           IF(iabs(LB(I1)).EQ.8)THEN
7303           LB(I1)=2
7304           E(I1)=AMN
7305          LB(I2)=11
7306          E(I2)=DM
7307           ELSE
7308           LB(I2)=2
7309           E(I2)=AMN
7310          LB(I1)=11
7311          E(I1)=DM
7312           ENDIF
7313          GO TO 207
7314          ENDIF
7315 * 42 D(+)+N-->N*(+)(15)+N
7316           IF(M12.EQ.42)THEN
7317           IF(iabs(LB(I1)).EQ.8)THEN
7318           LB(I1)=2
7319           E(I1)=AMN
7320          LB(I2)=13
7321          E(I2)=DM
7322           ELSE
7323           LB(I2)=2
7324           E(I2)=AMN
7325          LB(I1)=13
7326          E(I1)=DM
7327           ENDIF
7328          GO TO 207
7329          ENDIF
7330 * 43 D(+)+N-->N*(0)(14)+P
7331           IF(M12.EQ.43)THEN
7332           IF(iabs(LB(I1)).EQ.8)THEN
7333           LB(I1)=1
7334           E(I1)=AMP
7335          LB(I2)=10
7336          E(I2)=DM
7337           ELSE
7338           LB(I2)=1
7339           E(I2)=AMP
7340          LB(I1)=10
7341          E(I1)=DM
7342           ENDIF
7343          GO TO 207
7344          ENDIF
7345 * 44 D(+)+N-->N*(0)(15)+P
7346           IF(M12.EQ.44)THEN
7347           IF(iabs(LB(I1)).EQ.8)THEN
7348           LB(I1)=1
7349           E(I1)=AMP
7350          LB(I2)=12
7351          E(I2)=DM
7352           ELSE
7353           LB(I2)=1
7354           E(I2)=AMP
7355          LB(I1)=12
7356          E(I1)=DM
7357           ENDIF
7358          GO TO 207
7359          ENDIF
7360 * 46 D(-)+P-->N*(0)(14)+N
7361           IF(M12.EQ.46)THEN
7362           IF(iabs(LB(I1)).EQ.6)THEN
7363           LB(I1)=2
7364           E(I1)=AMN
7365          LB(I2)=10
7366          E(I2)=DM
7367           ELSE
7368           LB(I2)=2
7369           E(I2)=AMN
7370          LB(I1)=10
7371          E(I1)=DM
7372           ENDIF
7373          GO TO 207
7374          ENDIF
7375 * 47 D(-)+P-->N*(0)(15)+N
7376           IF(M12.EQ.47)THEN
7377           IF(iabs(LB(I1)).EQ.6)THEN
7378           LB(I1)=2
7379           E(I1)=AMN
7380          LB(I2)=12
7381          E(I2)=DM
7382           ELSE
7383           LB(I2)=2
7384           E(I2)=AMN
7385          LB(I1)=12
7386          E(I1)=DM
7387           ENDIF
7388          GO TO 207
7389          ENDIF
7390 * 48 D(0)+N-->N*(0)(14)+N
7391           IF(M12.EQ.48)THEN
7392           IF(iabs(LB(I1)).EQ.7)THEN
7393           LB(I1)=2
7394           E(I1)=AMN
7395          LB(I2)=11
7396          E(I2)=DM
7397           ELSE
7398           LB(I2)=2
7399           E(I2)=AMN
7400          LB(I1)=11
7401          E(I1)=DM
7402           ENDIF
7403          GO TO 207
7404          ENDIF
7405 * 49 D(0)+N-->N*(0)(15)+N
7406           IF(M12.EQ.49)THEN
7407           IF(iabs(LB(I1)).EQ.7)THEN
7408           LB(I1)=2
7409           E(I1)=AMN
7410          LB(I2)=12
7411          E(I2)=DM
7412           ELSE
7413           LB(I2)=2
7414           E(I2)=AMN
7415          LB(I1)=12
7416          E(I1)=DM
7417           ENDIF
7418          GO TO 207
7419          ENDIF
7420 * 50 D(0)+P-->N*(0)(14)+P
7421           IF(M12.EQ.50)THEN
7422           IF(iabs(LB(I1)).EQ.7)THEN
7423           LB(I1)=1
7424           E(I1)=AMP
7425          LB(I2)=10
7426          E(I2)=DM
7427           ELSE
7428           LB(I2)=1
7429           E(I2)=AMP
7430          LB(I1)=10
7431          E(I1)=DM
7432           ENDIF
7433          GO TO 207
7434          ENDIF
7435 * 51 D(0)+P-->N*(+)(14)+N
7436           IF(M12.EQ.51)THEN
7437           IF(iabs(LB(I1)).EQ.7)THEN
7438           LB(I1)=2
7439           E(I1)=AMN
7440          LB(I2)=11
7441          E(I2)=DM
7442           ELSE
7443           LB(I2)=2
7444           E(I2)=AMN
7445          LB(I1)=11
7446          E(I1)=DM
7447           ENDIF
7448          GO TO 207
7449          ENDIF
7450 * 52 D(0)+P-->N*(0)(15)+P
7451           IF(M12.EQ.52)THEN
7452           IF(iabs(LB(I1)).EQ.7)THEN
7453           LB(I1)=1
7454           E(I1)=AMP
7455          LB(I2)=12
7456          E(I2)=DM
7457           ELSE
7458           LB(I2)=1
7459           E(I2)=AMP
7460          LB(I1)=12
7461          E(I1)=DM
7462           ENDIF
7463          GO TO 207
7464          ENDIF
7465 * 53 D(0)+P-->N*(+)(15)+N
7466           IF(M12.EQ.53)THEN
7467           IF(iabs(LB(I1)).EQ.7)THEN
7468           LB(I1)=2
7469           E(I1)=AMN
7470          LB(I2)=13
7471          E(I2)=DM
7472           ELSE
7473           LB(I2)=2
7474           E(I2)=AMN
7475          LB(I1)=13
7476          E(I1)=DM
7477           ENDIF
7478          GO TO 207
7479          ENDIF
7480 * 54 N*(0)(14)+P-->N*(+)(15)+N
7481           IF(M12.EQ.54)THEN
7482           IF(iabs(LB(I1)).EQ.10)THEN
7483           LB(I1)=2
7484           E(I1)=AMN
7485          LB(I2)=13
7486          E(I2)=DM
7487           ELSE
7488           LB(I2)=2
7489           E(I2)=AMN
7490          LB(I1)=13
7491          E(I1)=DM
7492           ENDIF
7493          GO TO 207
7494          ENDIF
7495 * 55 N*(0)(14)+P-->N*(0)(15)+P
7496           IF(M12.EQ.55)THEN
7497           IF(iabs(LB(I1)).EQ.10)THEN
7498           LB(I1)=1
7499           E(I1)=AMP
7500          LB(I2)=12
7501          E(I2)=DM
7502           ELSE
7503           LB(I2)=1
7504           E(I2)=AMP
7505          LB(I1)=12
7506          E(I1)=DM
7507           ENDIF
7508          GO TO 207
7509          ENDIF
7510 * 56 N*(+)(14)+N-->N*(+)(15)+N
7511           IF(M12.EQ.56)THEN
7512           IF(iabs(LB(I1)).EQ.11)THEN
7513           LB(I1)=2
7514           E(I1)=AMN
7515          LB(I2)=13
7516          E(I2)=DM
7517           ELSE
7518           LB(I2)=2
7519           E(I2)=AMN
7520          LB(I1)=13
7521          E(I1)=DM
7522           ENDIF
7523          GO TO 207
7524          ENDIF
7525 * 57 N*(+)(14)+N-->N*(0)(15)+P
7526           IF(M12.EQ.57)THEN
7527           IF(iabs(LB(I1)).EQ.11)THEN
7528           LB(I1)=1
7529           E(I1)=AMP
7530          LB(I2)=12
7531          E(I2)=DM
7532           ELSE
7533           LB(I2)=1
7534           E(I2)=AMP
7535          LB(I1)=12
7536          E(I1)=DM
7537           ENDIF
7538          ENDIF
7539           GO TO 207
7540 *------------------------------------------------
7541 * RELABLE NUCLEONS AFTER DELTA OR N* BEING ABSORBED
7542 *(1) n+delta(+)-->n+p
7543 206       IF(M12.EQ.1)THEN
7544           IF(iabs(LB(I1)).EQ.8)THEN
7545           LB(I2)=2
7546           LB(I1)=1
7547           E(I1)=AMP
7548           ELSE
7549           LB(I1)=2
7550           LB(I2)=1
7551           E(I2)=AMP
7552           ENDIF
7553          GO TO 207
7554           ENDIF
7555 *(2) p+delta(0)-->p+n
7556           IF(M12.EQ.2)THEN
7557           IF(iabs(LB(I1)).EQ.7)THEN
7558           LB(I2)=1
7559           LB(I1)=2
7560           E(I1)=AMN
7561           ELSE
7562           LB(I1)=1
7563           LB(I2)=2
7564           E(I2)=AMN
7565           ENDIF
7566          GO TO 207
7567           ENDIF
7568 *(3) n+delta(++)-->p+p
7569           IF(M12.EQ.3)THEN
7570           LB(I1)=1
7571           LB(I2)=1
7572           E(I1)=AMP
7573           E(I2)=AMP
7574          GO TO 207
7575           ENDIF
7576 *(4) p+delta(+)-->p+p
7577           IF(M12.EQ.4)THEN
7578           LB(I1)=1
7579           LB(I2)=1
7580           E(I1)=AMP
7581           E(I2)=AMP
7582          GO TO 207
7583           ENDIF
7584 *(5) n+delta(0)-->n+n
7585           IF(M12.EQ.5)THEN
7586           LB(I1)=2
7587           LB(I2)=2
7588           E(I1)=AMN
7589           E(I2)=AMN
7590          GO TO 207
7591           ENDIF
7592 *(6) p+delta(-)-->n+n
7593           IF(M12.EQ.6)THEN
7594           LB(I1)=2
7595           LB(I2)=2
7596           E(I1)=AMN
7597           E(I2)=AMN
7598          GO TO 207
7599           ENDIF
7600 *(7) p+N*(0)-->n+p
7601           IF(M12.EQ.7)THEN
7602           IF(iabs(LB(I1)).EQ.1)THEN
7603           LB(I1)=1
7604           LB(I2)=2
7605           E(I1)=AMP
7606           E(I2)=AMN
7607           ELSE
7608           LB(I1)=2
7609           LB(I2)=1
7610           E(I1)=AMN
7611           E(I2)=AMP
7612           ENDIF
7613          GO TO 207
7614           ENDIF
7615 *(8) n+N*(+)-->n+p
7616           IF(M12.EQ.8)THEN
7617           IF(iabs(LB(I1)).EQ.2)THEN
7618           LB(I1)=2
7619           LB(I2)=1
7620           E(I1)=AMN
7621           E(I2)=AMP
7622           ELSE
7623           LB(I1)=1
7624           LB(I2)=2
7625           E(I1)=AMP
7626           E(I2)=AMN
7627           ENDIF
7628          GO TO 207
7629           ENDIF
7630 clin-6/2008
7631 c*(9) N*(+)p-->pp
7632 *(9) N*(+)(1535) p-->pp
7633           IF(M12.EQ.9)THEN
7634           LB(I1)=1
7635           LB(I2)=1
7636           E(I1)=AMP
7637           E(I2)=AMP
7638          GO TO 207
7639          ENDIF
7640 *(12) N*(0)P-->nP
7641           IF(M12.EQ.12)THEN
7642           LB(I1)=2
7643           LB(I2)=1
7644           E(I1)=AMN
7645           E(I2)=AMP
7646          GO TO 207
7647          ENDIF
7648 *(11) N*(+)n-->nP
7649           IF(M12.EQ.11)THEN
7650           LB(I1)=2
7651           LB(I2)=1
7652           E(I1)=AMN
7653           E(I2)=AMP
7654          GO TO 207
7655          ENDIF
7656 clin-6/2008
7657 c*(12) N*(0)p-->Np
7658 *(12) N*(0)(1535) p-->Np
7659           IF(M12.EQ.12)THEN
7660           LB(I1)=1
7661           LB(I2)=2
7662           E(I1)=AMP
7663           E(I2)=AMN
7664          ENDIF
7665 *----------------------------------------------
7666 207       PR   = PRF
7667           C1   = 1.0 - 2.0 * RANART(NSEED)
7668               if(srt.le.2.14)C1= 1.0 - 2.0 * RANART(NSEED)
7669          if(srt.gt.2.14.and.srt.le.2.4)c1=ang(srt,iseed)
7670          if(srt.gt.2.4)then
7671 
7672 clin-10/25/02 get rid of argument usage mismatch in PTR():
7673              xptr=0.33*pr
7674 c         cc1=ptr(0.33*pr,iseed)
7675          cc1=ptr(xptr,iseed)
7676 clin-10/25/02-end
7677 
7678 clin-9/2012: check argument in sqrt():
7679          scheck=pr**2-cc1**2
7680          if(scheck.lt.0) then
7681             write(99,*) 'scheck4: ', scheck
7682             scheck=0.
7683          endif
7684          c1=sqrt(scheck)/pr
7685 c         c1=sqrt(pr**2-cc1**2)/pr
7686 
7687          endif
7688           T1   = 2.0 * PI * RANART(NSEED)
7689           IBLOCK=3
7690       ENDIF
7691       if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
7692          lb(i1) = -lb(i1)
7693          lb(i2) = -lb(i2)
7694       endif
7695 
7696 *-----------------------------------------------------------------------
7697 *COM: SET THE NEW MOMENTUM COORDINATES
7698  107  IF(PX .EQ. 0.0 .AND. PY .EQ. 0.0) THEN
7699          T2 = 0.0
7700       ELSE
7701          T2=ATAN2(PY,PX)
7702       END IF
7703 
7704 clin-9/2012: check argument in sqrt():
7705       scheck=1.0 - C1**2
7706       if(scheck.lt.0) then
7707          write(99,*) 'scheck5: ', scheck
7708          scheck=0.
7709       endif
7710       S1=SQRT(scheck)
7711 c      S1   = SQRT( 1.0 - C1**2 )
7712 
7713 clin-9/2012: check argument in sqrt():
7714       scheck=1.0 - C2**2
7715       if(scheck.lt.0) then
7716          write(99,*) 'scheck6: ', scheck
7717          scheck=0.
7718       endif
7719       S2=SQRT(scheck)
7720 c      S2  =  SQRT( 1.0 - C2**2 )
7721 
7722       CT1  = COS(T1)
7723       ST1  = SIN(T1)
7724       CT2  = COS(T2)
7725       ST2  = SIN(T2)
7726       PZ   = PR * ( C1*C2 - S1*S2*CT1 )
7727       SS   = C2 * S1 * CT1  +  S2 * C1
7728       PX   = PR * ( SS*CT2 - S1*ST1*ST2 )
7729       PY   = PR * ( SS*ST2 + S1*ST1*CT2 )
7730       RETURN
7731 * FOR THE NN-->KAON+X PROCESS, FIND MOMENTUM OF THE FINAL PARTICLES IN 
7732 * THE NUCLEUS-NUCLEUS CMS.
7733 306     CONTINUE
7734 csp11/21/01 phi production
7735               if(XSK5/sigK.gt.RANART(NSEED))then
7736               pz1=p(3,i1)
7737               pz2=p(3,i2)
7738                 LB(I1) = 1 + int(2 * RANART(NSEED))
7739                 LB(I2) = 1 + int(2 * RANART(NSEED))
7740               nnn=nnn+1
7741                 LPION(NNN,IRUN)=29
7742                 EPION(NNN,IRUN)=APHI
7743                 iblock = 222
7744               GO TO 208
7745                ENDIF
7746 csp11/21/01 end
7747                 IBLOCK=11
7748                 if(ianti .eq. 1)iblock=-11
7749 c
7750               pz1=p(3,i1)
7751               pz2=p(3,i2)
7752 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
7753               nnn=nnn+1
7754                 LPION(NNN,IRUN)=23
7755                 EPION(NNN,IRUN)=Aka
7756               if(srt.le.2.63)then
7757 * only lambda production is possible
7758 * (1.1)P+P-->p+L+kaon+
7759               ic=1
7760 
7761                 LB(I1) = 1 + int(2 * RANART(NSEED))
7762               LB(I2)=14
7763               GO TO 208
7764                 ENDIF
7765        if(srt.le.2.74.and.srt.gt.2.63)then
7766 * both Lambda and sigma production are possible
7767               if(XSK1/(XSK1+XSK2).gt.RANART(NSEED))then
7768 * lambda production
7769               ic=1
7770 
7771                 LB(I1) = 1 + int(2 * RANART(NSEED))
7772               LB(I2)=14
7773               else
7774 * sigma production
7775 
7776                    LB(I1) = 1 + int(2 * RANART(NSEED))
7777                    LB(I2) = 15 + int(3 * RANART(NSEED))
7778               ic=2
7779               endif
7780               GO TO 208
7781        endif
7782        if(srt.le.2.77.and.srt.gt.2.74)then
7783 * then pp-->Delta lamda kaon can happen
7784               if(xsk1/(xsk1+xsk2+xsk3).
7785      1          gt.RANART(NSEED))then
7786 * * (1.1)P+P-->p+L+kaon+
7787               ic=1
7788 
7789                 LB(I1) = 1 + int(2 * RANART(NSEED))
7790               LB(I2)=14
7791               go to 208
7792               else
7793               if(xsk2/(xsk2+xsk3).gt.RANART(NSEED))then
7794 * pp-->psk
7795               ic=2
7796 
7797                 LB(I1) = 1 + int(2 * RANART(NSEED))
7798                 LB(I2) = 15 + int(3 * RANART(NSEED))
7799 
7800               else
7801 * pp-->D+l+k        
7802               ic=3
7803 
7804                 LB(I1) = 6 + int(4 * RANART(NSEED))
7805               lb(i2)=14
7806               endif
7807               GO TO 208
7808               endif
7809        endif
7810        if(srt.gt.2.77)then
7811 * all four channels are possible
7812               if(xsk1/(xsk1+xsk2+xsk3+xsk4).gt.RANART(NSEED))then
7813 * p lambda k production
7814               ic=1
7815 
7816                 LB(I1) = 1 + int(2 * RANART(NSEED))
7817               LB(I2)=14
7818               go to 208
7819        else
7820           if(xsk3/(xsk2+xsk3+xsk4).gt.RANART(NSEED))then
7821 * delta l K production
7822               ic=3
7823 
7824                 LB(I1) = 6 + int(4 * RANART(NSEED))
7825               lb(i2)=14
7826               go to 208
7827           else
7828               if(xsk2/(xsk2+xsk4).gt.RANART(NSEED))then
7829 * n sigma k production
7830 
7831                    LB(I1) = 1 + int(2 * RANART(NSEED))
7832                    LB(I2) = 15 + int(3 * RANART(NSEED))
7833 
7834               ic=2
7835               else
7836               ic=4
7837 
7838                 LB(I1) = 6 + int(4 * RANART(NSEED))
7839                 LB(I2) = 15 + int(3 * RANART(NSEED))
7840 
7841               endif
7842               go to 208
7843           endif
7844        endif
7845        endif
7846 208             continue
7847          if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
7848           lb(i1) = - lb(i1)
7849           lb(i2) = - lb(i2)
7850           if(LPION(NNN,IRUN) .eq. 23)LPION(NNN,IRUN)=21
7851          endif
7852        lbi1=lb(i1)
7853        lbi2=lb(i2)
7854 * KEEP ALL COORDINATES OF PARTICLE 2 FOR POSSIBLE PHASE SPACE CHANGE
7855            NTRY1=0
7856 128        CALL BBKAON(ic,SRT,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
7857      &  PPX,PPY,PPZ,icou1)
7858        NTRY1=NTRY1+1
7859        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 128
7860 c       if(icou1.lt.0)return
7861 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
7862        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
7863        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
7864        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
7865 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
7866 * NUCLEUS CMS. FRAME 
7867 * (1) for the necleon/delta
7868 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
7869               E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
7870               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
7871               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
7872               Pt1i1 = BETAX * TRANSF + PX3
7873               Pt2i1 = BETAY * TRANSF + PY3
7874               Pt3i1 = BETAZ * TRANSF + PZ3
7875              Eti1   = DM3
7876 * (2) for the lambda/sigma
7877                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
7878                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
7879                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
7880                 Pt1I2 = BETAX * TRANSF + PX4
7881                 Pt2I2 = BETAY * TRANSF + PY4
7882                 Pt3I2 = BETAZ * TRANSF + PZ4
7883               EtI2   = DM4
7884 * GET the kaon'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
7885                 EPCM=SQRT(aka**2+PPX**2+PPY**2+PPZ**2)
7886                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
7887                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
7888                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
7889                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
7890                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
7891 clin-5/2008:
7892                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
7893 clin-5/2008:
7894 c2008        X01 = 1.0 - 2.0 * RANART(NSEED)
7895 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
7896 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
7897 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2008
7898 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
7899 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
7900 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
7901                     RPION(1,NNN,IRUN)=R(1,I1)
7902                     RPION(2,NNN,IRUN)=R(2,I1)
7903                     RPION(3,NNN,IRUN)=R(3,I1)
7904 c
7905 * assign the nucleon/delta and lambda/sigma to i1 or i2 to keep the 
7906 * leadng particle behaviour
7907 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
7908               p(1,i1)=pt1i1
7909               p(2,i1)=pt2i1
7910               p(3,i1)=pt3i1
7911               e(i1)=eti1
7912               lb(i1)=lbi1
7913               p(1,i2)=pt1i2
7914               p(2,i2)=pt2i2
7915               p(3,i2)=pt3i2
7916               e(i2)=eti2
7917               lb(i2)=lbi2
7918                 PX1     = P(1,I1)
7919                 PY1     = P(2,I1)
7920                 PZ1     = P(3,I1)
7921               EM1       = E(I1)
7922                 ID(I1)  = 2
7923                 ID(I2)  = 2
7924                 ID1     = ID(I1)
7925                 if(LPION(NNN,IRUN) .ne. 29) IBLOCK=11
7926         LB1=LB(I1)
7927         LB2=LB(I2)
7928         AM1=EM1
7929        am2=em2
7930         E1= SQRT( EM1**2 + PX1**2 + PY1**2 + PZ1**2 )
7931        RETURN
7932 
7933 clin-6/2008 N+D->Deuteron+pi:
7934 *     FIND MOMENTUM OF THE FINAL PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
7935  108   CONTINUE
7936            if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
7937 c     For idpert=1: we produce npertd pert deuterons:
7938               ndloop=npertd
7939            elseif(idpert.eq.2.and.npertd.ge.1) then
7940 c     For idpert=2: we first save information for npertd pert deuterons;
7941 c     at the last ndloop we create the regular deuteron+pi 
7942 c     and those pert deuterons:
7943               ndloop=npertd+1
7944            else
7945 c     Just create the regular deuteron+pi:
7946               ndloop=1
7947            endif
7948 c
7949            dprob1=sdprod/sig/float(npertd)
7950            do idloop=1,ndloop
7951               CALL bbdangle(pxd,pyd,pzd,nt,ipert1,ianti,idloop,pfinal,
7952      1 dprob1,lbm)
7953               CALL ROTATE(PX,PY,PZ,PXd,PYd,PZd)
7954 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
7955 *     FROM THE NN CMS FRAME INTO THE GLOBAL CMS FRAME:
7956 *     For the Deuteron:
7957               xmass=xmd
7958               E1dCM=SQRT(xmass**2+PXd**2+PYd**2+PZd**2)
7959               P1dBETA=PXd*BETAX+PYd*BETAY+PZd*BETAZ
7960               TRANSF=GAMMA*(GAMMA*P1dBETA/(GAMMA+1.)+E1dCM)
7961               pxi1=BETAX*TRANSF+PXd
7962               pyi1=BETAY*TRANSF+PYd
7963               pzi1=BETAZ*TRANSF+PZd
7964               if(ianti.eq.0)then
7965                  lbd=42
7966               else
7967                  lbd=-42
7968               endif
7969               if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
7970 cccc  Perturbative production for idpert=1:
7971                  nnn=nnn+1
7972                  PPION(1,NNN,IRUN)=pxi1
7973                  PPION(2,NNN,IRUN)=pyi1
7974                  PPION(3,NNN,IRUN)=pzi1
7975                  EPION(NNN,IRUN)=xmd
7976                  LPION(NNN,IRUN)=lbd
7977                  RPION(1,NNN,IRUN)=R(1,I1)
7978                  RPION(2,NNN,IRUN)=R(2,I1)
7979                  RPION(3,NNN,IRUN)=R(3,I1)
7980 clin-6/2008 assign the perturbative probability:
7981                  dppion(NNN,IRUN)=sdprod/sig/float(npertd)
7982               elseif(idpert.eq.2.and.idloop.le.npertd) then
7983 clin-6/2008 For idpert=2, we produce NPERTD perturbative (anti)deuterons 
7984 c     only when a regular (anti)deuteron+pi is produced in NN collisions.
7985 c     First save the info for the perturbative deuterons:
7986                  ppd(1,idloop)=pxi1
7987                  ppd(2,idloop)=pyi1
7988                  ppd(3,idloop)=pzi1
7989                  lbpd(idloop)=lbd
7990               else
7991 cccc  Regular production:
7992 c     For the regular pion: do LORENTZ-TRANSFORMATION:
7993                  E(i1)=xmm
7994                  E2piCM=SQRT(xmm**2+PXd**2+PYd**2+PZd**2)
7995                  P2piBETA=-PXd*BETAX-PYd*BETAY-PZd*BETAZ
7996                  TRANSF=GAMMA*(GAMMA*P2piBETA/(GAMMA+1.)+E2piCM)
7997                  pxi2=BETAX*TRANSF-PXd
7998                  pyi2=BETAY*TRANSF-PYd
7999                  pzi2=BETAZ*TRANSF-PZd
8000                  p(1,i1)=pxi2
8001                  p(2,i1)=pyi2
8002                  p(3,i1)=pzi2
8003 c     Remove regular pion to check the equivalence 
8004 c     between the perturbative and regular deuteron results:
8005 c                 E(i1)=0.
8006 c
8007                  LB(I1)=lbm
8008                  PX1=P(1,I1)
8009                  PY1=P(2,I1)
8010                  PZ1=P(3,I1)
8011                  EM1=E(I1)
8012                  ID(I1)=2
8013                  ID1=ID(I1)
8014                  E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
8015                  lb1=lb(i1)
8016 c     For the regular deuteron:
8017                  p(1,i2)=pxi1
8018                  p(2,i2)=pyi1
8019                  p(3,i2)=pzi1
8020                  lb(i2)=lbd
8021                  lb2=lb(i2)
8022                  E(i2)=xmd
8023                  EtI2=E(I2)
8024                  ID(I2)=2
8025 c     For idpert=2: create the perturbative deuterons:
8026                  if(idpert.eq.2.and.idloop.eq.ndloop) then
8027                     do ipertd=1,npertd
8028                        nnn=nnn+1
8029                        PPION(1,NNN,IRUN)=ppd(1,ipertd)
8030                        PPION(2,NNN,IRUN)=ppd(2,ipertd)
8031                        PPION(3,NNN,IRUN)=ppd(3,ipertd)
8032                        EPION(NNN,IRUN)=xmd
8033                        LPION(NNN,IRUN)=lbpd(ipertd)
8034                        RPION(1,NNN,IRUN)=R(1,I1)
8035                        RPION(2,NNN,IRUN)=R(2,I1)
8036                        RPION(3,NNN,IRUN)=R(3,I1)
8037 clin-6/2008 assign the perturbative probability:
8038                        dppion(NNN,IRUN)=1./float(npertd)
8039                     enddo
8040                  endif
8041               endif
8042            enddo
8043            IBLOCK=501
8044            return
8045 clin-6/2008 N+D->Deuteron+pi over
8046 
8047       END
8048 **********************************
8049 *                                                                      *
8050 *                                                                      *
8051       SUBROUTINE CRDD(IRUN,PX,PY,PZ,SRT,I1,I2,IBLOCK,
8052      1NTAG,SIGNN,SIG,NT,ipert1)
8053 c     1NTAG,SIGNN,SIG)
8054 *     PURPOSE:                                                         *
8055 *             DEALING WITH BARYON RESONANCE-BARYON RESONANCE COLLISIONS*
8056 *     NOTE   :                                                         *
8057 *     QUANTITIES:                                                 *
8058 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
8059 *           SRT      - SQRT OF S                                       *
8060 *           NSTAR =1 INCLUDING N* RESORANCE,ELSE NOT                   *
8061 *           NDIRCT=1 INCLUDING DIRECT PION PRODUCTION PROCESS         *
8062 *           IBLOCK   - THE INFORMATION BACK                            *
8063 *                      0-> COLLISION CANNOT HAPPEN                     *
8064 *                      1-> N-N ELASTIC COLLISION                       *
8065 *                      2-> N+N->N+DELTA,OR N+N->N+N* REACTION          *
8066 *                      3-> N+DELTA->N+N OR N+N*->N+N REACTION          *
8067 *                      4-> N+N->N+N+PION,DIRTCT PROCESS                *
8068 *                     5-> DELTA(N*)+DELTA(N*)   TOTAL   COLLISIONS    *
8069 *           N12       - IS USED TO SPECIFY BARYON-BARYON REACTION      *
8070 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
8071 *                      N12,                                            *
8072 *                      M12=1 FOR p+n-->delta(+)+ n                     *
8073 *                          2     p+n-->delta(0)+ p                     *
8074 *                          3     p+p-->delta(++)+n                     *
8075 *                          4     p+p-->delta(+)+p                      *
8076 *                          5     n+n-->delta(0)+n                      *
8077 *                          6     n+n-->delta(-)+p                      *
8078 *                          7     n+p-->N*(0)(1440)+p                   *
8079 *                          8     n+p-->N*(+)(1440)+n                   *
8080 *                        9     p+p-->N*(+)(1535)+p                     *
8081 *                        10    n+n-->N*(0)(1535)+n                     *
8082 *                         11    n+p-->N*(+)(1535)+n                     *
8083 *                        12    n+p-->N*(0)(1535)+p
8084 *                        13    D(++)+D(-)-->N*(+)(1440)+n
8085 *                         14    D(++)+D(-)-->N*(0)(1440)+p
8086 *                        15    D(+)+D(0)--->N*(+)(1440)+n
8087 *                        16    D(+)+D(0)--->N*(0)(1440)+p
8088 *                        17    D(++)+D(0)-->N*(+)(1535)+p
8089 *                        18    D(++)+D(-)-->N*(0)(1535)+p
8090 *                        19    D(++)+D(-)-->N*(+)(1535)+n
8091 *                        20    D(+)+D(+)-->N*(+)(1535)+p
8092 *                        21    D(+)+D(0)-->N*(+)(1535)+n
8093 *                        22    D(+)+D(0)-->N*(0)(1535)+p
8094 *                        23    D(+)+D(-)-->N*(0)(1535)+n
8095 *                        24    D(0)+D(0)-->N*(0)(1535)+n
8096 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
8097 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
8098 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
8099 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
8100 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
8101 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
8102 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
8103 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
8104 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
8105 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
8106 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
8107 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
8108 *                        +++
8109 *               AND MORE CHANNELS AS LISTED IN THE NOTE BOOK      
8110 *
8111 * NOTE ABOUT N*(1440) RESORANCE:                                       *
8112 *     As it has been discussed in VerWest's paper,I= 1 (initial isospin)
8113 *     channel can all be attributed to delta resorance while I= 0      *
8114 *     channel can all be  attribured to N* resorance.Only in n+p       *
8115 *     one can have I=0 channel so is the N*(1440) resorance            *
8116 * REFERENCES:    J. CUGNON ET AL., NUCL. PHYS. A352, 505 (1981)        *
8117 *                    Y. KITAZOE ET AL., PHYS. LETT. 166B, 35 (1986)    *
8118 *                    B. VerWest el al., PHYS. PRV. C25 (1982)1979      *
8119 *                    Gy. Wolf  et al, Nucl Phys A517 (1990) 615        *
8120 *                    CUTOFF = 2 * AVMASS + 20 MEV                      *
8121 *                                                                      *
8122 *       for N*(1535) we use the parameterization by Gy. Wolf et al     *
8123 *       Nucl phys A552 (1993) 349, added May 18, 1994                  *
8124 **********************************
8125         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
8126      1  AMP=0.93828,AP1=0.13496,AKA=0.498,APHI=1.020,
8127      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
8128         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
8129         parameter (xmd=1.8756,npdmax=10000)
8130         COMMON /AA/ R(3,MAXSTR)
8131 cc      SAVE /AA/
8132         COMMON /BB/ P(3,MAXSTR)
8133 cc      SAVE /BB/
8134         COMMON /CC/ E(MAXSTR)
8135 cc      SAVE /CC/
8136         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
8137 cc      SAVE /EE/
8138         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
8139 cc      SAVE /ff/
8140         common /gg/ dx,dy,dz,dpx,dpy,dpz
8141 cc      SAVE /gg/
8142         COMMON /INPUT/ NSTAR,NDIRCT,DIR
8143 cc      SAVE /INPUT/
8144         COMMON /NN/NNN
8145 cc      SAVE /NN/
8146         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
8147 cc      SAVE /BG/
8148         COMMON   /RUN/NUM
8149 cc      SAVE /RUN/
8150         COMMON   /PA/RPION(3,MAXSTR,MAXR)
8151 cc      SAVE /PA/
8152         COMMON   /PB/PPION(3,MAXSTR,MAXR)
8153 cc      SAVE /PB/
8154         COMMON   /PC/EPION(MAXSTR,MAXR)
8155 cc      SAVE /PC/
8156         COMMON   /PD/LPION(MAXSTR,MAXR)
8157 cc      SAVE /PD/
8158         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
8159 cc      SAVE /input1/
8160       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
8161      1 px1n,py1n,pz1n,dp1n
8162 cc      SAVE /leadng/
8163       COMMON/RNDF77/NSEED
8164 cc      SAVE /RNDF77/
8165       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
8166      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
8167      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
8168       common /dpi/em2,lb2
8169       common /para8/ idpert,npertd,idxsec
8170       dimension ppd(3,npdmax),lbpd(npdmax)
8171       SAVE   
8172 *-----------------------------------------------------------------------
8173        n12=0
8174        m12=0
8175         IBLOCK=0
8176         NTAG=0
8177         EM1=E(I1)
8178         EM2=E(I2)
8179       PR  = SQRT( PX**2 + PY**2 + PZ**2 )
8180       C2  = PZ / PR
8181       IF(PX .EQ. 0.0 .AND. PY .EQ. 0.0) THEN
8182         T2 = 0.0
8183       ELSE
8184         T2=ATAN2(PY,PX)
8185       END IF
8186       X1  = RANART(NSEED)
8187       ianti=0
8188       if(lb(i1).lt.0 .and. lb(i2).lt.0)ianti=1
8189 
8190 clin-6/2008 Production of perturbative deuterons for idpert=1:
8191       call sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
8192       if(idpert.eq.1.and.ipert1.eq.1) then
8193          IF (SRT .LT. 2.012) RETURN
8194          if((iabs(lb(i1)).ge.6.and.iabs(lb(i1)).le.13)
8195      1        .and.(iabs(lb(i2)).ge.6.and.iabs(lb(i2)).le.13)) then
8196             goto 108
8197          else
8198             return
8199          endif
8200       endif
8201       
8202 *-----------------------------------------------------------------------
8203 *COM: TEST FOR ELASTIC SCATTERING (EITHER N-N OR DELTA-DELTA 0R
8204 *      N-DELTA OR N*-N* or N*-Delta)
8205       IF (X1 .LE. SIGNN/SIG) THEN
8206 *COM:  PARAMETRISATION IS TAKEN FROM THE CUGNON-PAPER
8207         AS  = ( 3.65 * (SRT - 1.8766) )**6
8208         A   = 6.0 * AS / (1.0 + AS)
8209         TA  = -2.0 * PR**2
8210         X   = RANART(NSEED)
8211 clin-10/24/02        T1  = DLOG( (1-X) * DEXP(dble(A)*dble(TA)) + X )  /  A
8212         T1  = sngl(DLOG(dble(1.-X)*DEXP(dble(A)*dble(TA))+dble(X)))/  A
8213         C1  = 1.0 - T1/TA
8214         T1  = 2.0 * PI * RANART(NSEED)
8215         IBLOCK=20
8216        GO TO 107
8217       ELSE
8218 *COM: TEST FOR INELASTIC SCATTERING
8219 *     IF THE AVAILABLE ENERGY IS LESS THAN THE PION-MASS, NOTHING
8220 *     CAN HAPPEN ANY MORE ==> RETURN (2.15 = 2*AVMASS +2*PI-MASS)
8221         IF (SRT .LT. 2.15) RETURN
8222 *     IF THERE WERE 2 N*(1535) AND THEY DIDN'T SCATT. ELAST., 
8223 *     ALLOW THEM TO PRODUCE KAONS. NO OTHER INELASTIC CHANNELS
8224 *     ARE KNOWN
8225 C       if((lb(i1).ge.12).and.(lb(i2).ge.12))return
8226 *     ALL the inelastic collisions between N*(1535) and Delta as well
8227 *     as N*(1440) TO PRODUCE KAONS, NO OTHER CHANNELS ARE KNOWN
8228 C       if((lb(i1).ge.12).and.(lb(i2).ge.3))return
8229 C       if((lb(i2).ge.12).and.(lb(i1).ge.3))return
8230 *     calculate the N*(1535) production cross section in I1+I2 collisions
8231        call N1535(iabs(lb(i1)),iabs(lb(i2)),srt,X1535)
8232 
8233 * for Delta+Delta-->N*(1440 OR 1535)+N AND N*(1440)+N*(1440)-->N*(1535)+X 
8234 *     AND DELTA+N*(1440)-->N*(1535)+X
8235 * WE ASSUME THEY HAVE THE SAME CROSS SECTIONS as CORRESPONDING N+N COLLISION):
8236 * FOR D++D0, D+D+,D+D-,D0D0,N*+N*+,N*0N*0,N*(+)D+,N*(+)D(-),N*(0)D(0)
8237 * N*(1535) production, kaon production and reabsorption through 
8238 * D(N*)+D(N*)-->NN are ALLOWED.
8239 * CROSS SECTION FOR KAON PRODUCTION from the four channels are
8240 * for NLK channel
8241        akp=0.498
8242        ak0=0.498
8243        ana=0.938
8244        ada=1.232
8245        al=1.1157
8246        as=1.1197
8247        xsk1=0
8248        xsk2=0
8249        xsk3=0
8250        xsk4=0
8251        xsk5=0
8252        t1nlk=ana+al+akp
8253        if(srt.le.t1nlk)go to 222
8254        XSK1=1.5*PPLPK(SRT)
8255 * for DLK channel
8256        t1dlk=ada+al+akp
8257        t2dlk=ada+al-akp
8258        if(srt.le.t1dlk)go to 222
8259        es=srt
8260        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
8261        pmdlk=sqrt(pmdlk2)
8262        XSK3=1.5*PPLPK(srt)
8263 * for NSK channel
8264        t1nsk=ana+as+akp
8265        t2nsk=ana+as-akp
8266        if(srt.le.t1nsk)go to 222
8267        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
8268        pmnsk=sqrt(pmnsk2)
8269        XSK2=1.5*(PPK1(srt)+PPK0(srt))
8270 * for DSK channel
8271        t1DSk=aDa+aS+akp
8272        t2DSk=aDa+aS-akp
8273        if(srt.le.t1dsk)go to 222
8274        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
8275        pmDSk=sqrt(pmDSk2)
8276        XSK4=1.5*(PPK1(srt)+PPK0(srt))
8277 csp11/21/01
8278 c phi production
8279        if(srt.le.(2.*amn+aphi))go to 222
8280 c  !! mb put the correct form
8281          xsk5 = 0.0001
8282 csp11/21/01 end
8283 * THE TOTAL KAON+ PRODUCTION CROSS SECTION IS THEN
8284 222       SIGK=XSK1+XSK2+XSK3+XSK4
8285 
8286 cbz3/7/99 neutralk
8287         XSK1 = 2.0 * XSK1
8288         XSK2 = 2.0 * XSK2
8289         XSK3 = 2.0 * XSK3
8290         XSK4 = 2.0 * XSK4
8291         SIGK = 2.0 * SIGK + xsk5
8292 cbz3/7/99 neutralk end
8293 
8294 * The reabsorption cross section for the process
8295 * D(N*)D(N*)-->NN is
8296        s2d=reab2d(i1,i2,srt)
8297 
8298 cbz3/16/99 pion
8299         S2D = 0.
8300 cbz3/16/99 pion end
8301 
8302 *(1) N*(1535)+D(N*(1440)) reactions
8303 *    we allow kaon production and reabsorption only
8304        if(((iabs(lb(i1)).ge.12).and.(iabs(lb(i2)).ge.12)).OR.
8305      &       ((iabs(lb(i1)).ge.12).and.(iabs(lb(i2)).ge.6)).OR.
8306      &       ((iabs(lb(i2)).ge.12).and.(iabs(lb(i1)).ge.6)))THEN
8307        signd=sigk+s2d
8308 clin-6/2008
8309        IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
8310 c       if(x1.gt.(signd+signn)/sig)return
8311        if(x1.gt.(signd+signn+sdprod)/sig)return
8312 c
8313 * if kaon production
8314 clin-6/2008
8315 c       IF(SIGK/SIG.GE.RANART(NSEED))GO TO 306
8316        IF((SIGK+sdprod)/SIG.GE.RANART(NSEED))GO TO 306
8317 c
8318 * if reabsorption
8319        go to 1012
8320        ENDIF
8321        IDD=iabs(LB(I1)*LB(I2))
8322 * channels have the same charge as pp 
8323         IF((IDD.EQ.63).OR.(IDD.EQ.64).OR.(IDD.EQ.48).
8324      1  OR.(IDD.EQ.49).OR.(IDD.EQ.11*11).OR.(IDD.EQ.10*10).
8325      2  OR.(IDD.EQ.88).OR.(IDD.EQ.66).
8326      3  OR.(IDD.EQ.90).OR.(IDD.EQ.70))THEN
8327         SIGND=X1535+SIGK+s2d
8328 clin-6/2008
8329         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
8330 c        IF (X1.GT.(SIGNN+SIGND)/SIG)RETURN
8331         IF (X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
8332 c
8333 * if kaon production
8334        IF(SIGK/SIGND.GT.RANART(NSEED))GO TO 306
8335 * if reabsorption
8336        if(s2d/(x1535+s2d).gt.RANART(NSEED))go to 1012
8337 * if N*(1535) production
8338        IF(IDD.EQ.63)N12=17
8339        IF(IDD.EQ.64)N12=20
8340        IF(IDD.EQ.48)N12=23
8341        IF(IDD.EQ.49)N12=24
8342        IF(IDD.EQ.121)N12=25
8343        IF(IDD.EQ.100)N12=26
8344        IF(IDD.EQ.88)N12=29
8345        IF(IDD.EQ.66)N12=31
8346        IF(IDD.EQ.90)N12=32
8347        IF(IDD.EQ.70)N12=35
8348        GO TO 1011
8349         ENDIF
8350 * IN DELTA+N*(1440) and N*(1440)+N*(1440) COLLISIONS, 
8351 * N*(1535), kaon production and reabsorption are ALLOWED
8352 * IN N*(1440)+N*(1440) COLLISIONS, ONLY N*(1535) IS ALLOWED
8353        IF((IDD.EQ.110).OR.(IDD.EQ.77).OR.(IDD.EQ.80))THEN
8354 clin-6/2008
8355           IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
8356 c       IF(X1.GT.(SIGNN+X1535+SIGK+s2d)/SIG)RETURN
8357           IF(X1.GT.(SIGNN+X1535+SIGK+s2d+sdprod)/SIG)RETURN
8358 c
8359        IF(SIGK/(X1535+SIGK+s2d).GT.RANART(NSEED))GO TO 306
8360        if(s2d/(x1535+s2d).gt.RANART(NSEED))go to 1012
8361        IF(IDD.EQ.77)N12=30
8362        IF((IDD.EQ.77).AND.(RANART(NSEED).LE.0.5))N12=36
8363        IF(IDD.EQ.80)N12=34
8364        IF((IDD.EQ.80).AND.(RANART(NSEED).LE.0.5))N12=35
8365        IF(IDD.EQ.110)N12=27
8366        IF((IDD.EQ.110).AND.(RANART(NSEED).LE.0.5))N12=28
8367        GO TO 1011
8368         ENDIF
8369        IF((IDD.EQ.54).OR.(IDD.EQ.56))THEN
8370 * LIKE FOR N+P COLLISION, 
8371 * IN DELTA+DELTA COLLISIONS BOTH N*(1440) AND N*(1535) CAN BE PRODUCED
8372         SIG2=(3./4.)*SIGMA(SRT,2,0,1)
8373         SIGND=2.*(SIG2+X1535)+SIGK+s2d
8374 clin-6/2008
8375         IF(X1.LE.((SIGNN+sdprod)/SIG)) GO TO 108
8376 c        IF(X1.GT.(SIGNN+SIGND)/SIG)RETURN
8377         IF(X1.GT.(SIGNN+SIGND+sdprod)/SIG)RETURN
8378 c
8379        IF(SIGK/SIGND.GT.RANART(NSEED))GO TO 306
8380        if(s2d/(2.*(sig2+x1535)+s2d).gt.RANART(NSEED))go to 1012
8381        IF(RANART(NSEED).LT.X1535/(SIG2+X1535))THEN
8382 * N*(1535) PRODUCTION
8383        IF(IDD.EQ.54)N12=18
8384        IF((IDD.EQ.54).AND.(RANART(NSEED).LE.0.5))N12=19
8385        IF(IDD.EQ.56)N12=21
8386        IF((IDD.EQ.56).AND.(RANART(NSEED).LE.0.5))N12=22
8387                ELSE 
8388 * N*(144) PRODUCTION
8389        IF(IDD.EQ.54)N12=13
8390        IF((IDD.EQ.54).AND.(RANART(NSEED).LE.0.5))N12=14
8391        IF(IDD.EQ.56)N12=15
8392        IF((IDD.EQ.56).AND.(RANART(NSEED).LE.0.5))N12=16
8393               ENDIF
8394        ENDIF
8395 1011       CONTINUE
8396        iblock=5
8397 *PARAMETRIZATION OF THE SHAPE OF THE N*(1440) AND N*(1535) 
8398 * RESONANCE ACCORDING
8399 *     TO kitazoe's or J.D.JACKSON'S MASS FORMULA AND BREIT WIGNER
8400 *     FORMULA FOR N* RESORANCE
8401 *     DETERMINE DELTA MASS VIA REJECTION METHOD.
8402           DMAX = SRT - AVMASS-0.005
8403           DMIN = 1.078
8404           IF((n12.ge.13).and.(n12.le.16))then
8405 * N*(1440) production
8406           IF(DMAX.LT.1.44) THEN
8407           FM=FNS(DMAX,SRT,0.)
8408           ELSE
8409 
8410 clin-10/25/02 get rid of argument usage mismatch in FNS():
8411              xdmass=1.44
8412 c          FM=FNS(1.44,SRT,1.)
8413           FM=FNS(xdmass,SRT,1.)
8414 clin-10/25/02-end
8415 
8416           ENDIF
8417           IF(FM.EQ.0.)FM=1.E-09
8418           NTRY2=0
8419 11        DM=RANART(NSEED)*(DMAX-DMIN)+DMIN
8420           NTRY2=NTRY2+1
8421           IF((RANART(NSEED).GT.FNS(DM,SRT,1.)/FM).AND.
8422      1    (NTRY2.LE.10)) GO TO 11
8423 
8424 clin-2/26/03 limit the N* mass below a certain value 
8425 c     (here taken as its central value + 2* B-W fullwidth):
8426           if(dm.gt.2.14) goto 11
8427 
8428               GO TO 13
8429               ENDIF
8430                     IF((n12.ge.17).AND.(N12.LE.36))then
8431 * N*(1535) production
8432           IF(DMAX.LT.1.535) THEN
8433           FM=FD5(DMAX,SRT,0.)
8434           ELSE
8435 
8436 clin-10/25/02 get rid of argument usage mismatch in FNS():
8437              xdmass=1.535
8438 c          FM=FD5(1.535,SRT,1.)
8439           FM=FD5(xdmass,SRT,1.)
8440 clin-10/25/02-end
8441 
8442           ENDIF
8443           IF(FM.EQ.0.)FM=1.E-09
8444           NTRY1=0
8445 12        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
8446           NTRY1=NTRY1+1
8447           IF((RANART(NSEED) .GT. FD5(DM,SRT,1.)/FM).AND.
8448      1    (NTRY1.LE.10)) GOTO 12
8449 
8450 clin-2/26/03 limit the N* mass below a certain value 
8451 c     (here taken as its central value + 2* B-W fullwidth):
8452           if(dm.gt.1.84) goto 12
8453 
8454              ENDIF
8455 13       CONTINUE
8456 *-------------------------------------------------------
8457 * RELABLE BARYON I1 AND I2
8458 *13 D(++)+D(-)--> N*(+)(14)+n
8459           IF(N12.EQ.13)THEN
8460           IF(RANART(NSEED).LE.0.5)THEN
8461           LB(I2)=11
8462           E(I2)=DM
8463          LB(I1)=2
8464          E(I1)=AMN
8465           ELSE
8466           LB(I1)=11
8467           E(I1)=DM
8468          LB(I2)=2
8469          E(I2)=AMN
8470           ENDIF
8471          go to 200
8472           ENDIF
8473 *14 D(++)+D(-)--> N*(0)(14)+P
8474           IF(N12.EQ.14)THEN
8475           IF(RANART(NSEED).LE.0.5)THEN
8476           LB(I2)=10
8477           E(I2)=DM
8478          LB(I1)=1
8479          E(I1)=AMP
8480           ELSE
8481           LB(I1)=10
8482           E(I1)=DM
8483          LB(I2)=1
8484          E(I2)=AMP
8485           ENDIF
8486          go to 200
8487           ENDIF
8488 *15 D(+)+D(0)--> N*(+)(14)+n
8489           IF(N12.EQ.15)THEN
8490           IF(RANART(NSEED).LE.0.5)THEN
8491           LB(I2)=11
8492           E(I2)=DM
8493          LB(I1)=2
8494          E(I1)=AMN
8495           ELSE
8496           LB(I1)=11
8497           E(I1)=DM
8498          LB(I2)=2
8499          E(I2)=AMN
8500           ENDIF
8501          go to 200
8502           ENDIF
8503 *16 D(+)+D(0)--> N*(0)(14)+P
8504           IF(N12.EQ.16)THEN
8505           IF(RANART(NSEED).LE.0.5)THEN
8506           LB(I2)=10
8507           E(I2)=DM
8508          LB(I1)=1
8509          E(I1)=AMP
8510           ELSE
8511           LB(I1)=10
8512           E(I1)=DM
8513          LB(I2)=1
8514          E(I2)=AMP
8515           ENDIF
8516          go to 200
8517           ENDIF
8518 *17 D(++)+D(0)--> N*(+)(14)+P
8519           IF(N12.EQ.17)THEN
8520           LB(I2)=13
8521           E(I2)=DM
8522          LB(I1)=1
8523          E(I1)=AMP
8524          go to 200
8525           ENDIF
8526 *18 D(++)+D(-)--> N*(0)(15)+P
8527           IF(N12.EQ.18)THEN
8528           IF(RANART(NSEED).LE.0.5)THEN
8529           LB(I2)=12
8530           E(I2)=DM
8531          LB(I1)=1
8532          E(I1)=AMP
8533           ELSE
8534           LB(I1)=12
8535           E(I1)=DM
8536          LB(I2)=1
8537          E(I2)=AMP
8538           ENDIF
8539          go to 200
8540           ENDIF
8541 *19 D(++)+D(-)--> N*(+)(15)+N
8542           IF(N12.EQ.19)THEN
8543           IF(RANART(NSEED).LE.0.5)THEN
8544           LB(I2)=13
8545           E(I2)=DM
8546          LB(I1)=2
8547          E(I1)=AMN
8548           ELSE
8549           LB(I1)=13
8550           E(I1)=DM
8551          LB(I2)=2
8552          E(I2)=AMN
8553           ENDIF
8554          go to 200
8555           ENDIF
8556 *20 D(+)+D(+)--> N*(+)(15)+P
8557           IF(N12.EQ.20)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 *21 D(+)+D(0)--> N*(+)(15)+N
8572           IF(N12.EQ.21)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 *22 D(+)+D(0)--> N*(0)(15)+P
8587           IF(N12.EQ.22)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 *23 D(+)+D(-)--> N*(0)(15)+N
8602           IF(N12.EQ.23)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 *24 D(0)+D(0)--> N*(0)(15)+N
8617           IF(N12.EQ.24)THEN
8618           LB(I2)=12
8619           E(I2)=DM
8620          LB(I1)=2
8621          E(I1)=AMN
8622          go to 200
8623           ENDIF
8624 *25 N*(+)+N*(+)--> N*(0)(15)+P
8625           IF(N12.EQ.25)THEN
8626           LB(I2)=12
8627           E(I2)=DM
8628          LB(I1)=1
8629          E(I1)=AMP
8630          go to 200
8631           ENDIF
8632 *26 N*(0)+N*(0)--> N*(0)(15)+N
8633           IF(N12.EQ.26)THEN
8634           LB(I2)=12
8635           E(I2)=DM
8636          LB(I1)=2
8637          E(I1)=AMN
8638          go to 200
8639           ENDIF
8640 *27 N*(+)+N*(0)--> N*(+)(15)+N
8641           IF(N12.EQ.27)THEN
8642           IF(RANART(NSEED).LE.0.5)THEN
8643           LB(I2)=13
8644           E(I2)=DM
8645          LB(I1)=2
8646          E(I1)=AMN
8647           ELSE
8648           LB(I1)=13
8649           E(I1)=DM
8650          LB(I2)=2
8651          E(I2)=AMN
8652           ENDIF
8653          go to 200
8654           ENDIF
8655 *28 N*(+)+N*(0)--> N*(0)(15)+P
8656           IF(N12.EQ.28)THEN
8657           IF(RANART(NSEED).LE.0.5)THEN
8658           LB(I2)=12
8659           E(I2)=DM
8660          LB(I1)=1
8661          E(I1)=AMP
8662           ELSE
8663           LB(I1)=12
8664           E(I1)=DM
8665          LB(I2)=1
8666          E(I2)=AMP
8667           ENDIF
8668          go to 200
8669           ENDIF
8670 *27 N*(+)+N*(0)--> N*(+)(15)+N
8671           IF(N12.EQ.27)THEN
8672           IF(RANART(NSEED).LE.0.5)THEN
8673           LB(I2)=13
8674           E(I2)=DM
8675          LB(I1)=2
8676          E(I1)=AMN
8677           ELSE
8678           LB(I1)=13
8679           E(I1)=DM
8680          LB(I2)=2
8681          E(I2)=AMN
8682           ENDIF
8683          go to 200
8684           ENDIF
8685 *29 N*(+)+D(+)--> N*(+)(15)+P
8686           IF(N12.EQ.29)THEN
8687           IF(RANART(NSEED).LE.0.5)THEN
8688           LB(I2)=13
8689           E(I2)=DM
8690          LB(I1)=1
8691          E(I1)=AMP
8692           ELSE
8693           LB(I1)=13
8694           E(I1)=DM
8695          LB(I2)=1
8696          E(I2)=AMP
8697           ENDIF
8698          go to 200
8699           ENDIF
8700 *30 N*(+)+D(0)--> N*(+)(15)+N
8701           IF(N12.EQ.30)THEN
8702           IF(RANART(NSEED).LE.0.5)THEN
8703           LB(I2)=13
8704           E(I2)=DM
8705          LB(I1)=2
8706          E(I1)=AMN
8707           ELSE
8708           LB(I1)=13
8709           E(I1)=DM
8710          LB(I2)=2
8711          E(I2)=AMN
8712           ENDIF
8713          go to 200
8714           ENDIF
8715 *31 N*(+)+D(-)--> N*(0)(15)+N
8716           IF(N12.EQ.31)THEN
8717           IF(RANART(NSEED).LE.0.5)THEN
8718           LB(I2)=12
8719           E(I2)=DM
8720          LB(I1)=2
8721          E(I1)=AMN
8722           ELSE
8723           LB(I1)=12
8724           E(I1)=DM
8725          LB(I2)=2
8726          E(I2)=AMN
8727           ENDIF
8728          go to 200
8729           ENDIF
8730 *32 N*(0)+D(++)--> N*(+)(15)+P
8731           IF(N12.EQ.32)THEN
8732           IF(RANART(NSEED).LE.0.5)THEN
8733           LB(I2)=13
8734           E(I2)=DM
8735          LB(I1)=1
8736          E(I1)=AMP
8737           ELSE
8738           LB(I1)=13
8739           E(I1)=DM
8740          LB(I2)=1
8741          E(I2)=AMP
8742           ENDIF
8743          go to 200
8744           ENDIF
8745 *33 N*(0)+D(+)--> N*(+)(15)+N
8746           IF(N12.EQ.33)THEN
8747           IF(RANART(NSEED).LE.0.5)THEN
8748           LB(I2)=13
8749           E(I2)=DM
8750          LB(I1)=2
8751          E(I1)=AMN
8752           ELSE
8753           LB(I1)=13
8754           E(I1)=DM
8755          LB(I2)=2
8756          E(I2)=AMN
8757           ENDIF
8758          go to 200
8759           ENDIF
8760 *34 N*(0)+D(+)--> N*(0)(15)+P
8761           IF(N12.EQ.34)THEN
8762           IF(RANART(NSEED).LE.0.5)THEN
8763           LB(I2)=12
8764           E(I2)=DM
8765          LB(I1)=1
8766          E(I1)=AMP
8767           ELSE
8768           LB(I1)=12
8769           E(I1)=DM
8770          LB(I2)=1
8771          E(I2)=AMP
8772           ENDIF
8773          go to 200
8774           ENDIF
8775 *35 N*(0)+D(0)--> N*(0)(15)+N
8776           IF(N12.EQ.35)THEN
8777           IF(RANART(NSEED).LE.0.5)THEN
8778           LB(I2)=12
8779           E(I2)=DM
8780          LB(I1)=2
8781          E(I1)=AMN
8782           ELSE
8783           LB(I1)=12
8784           E(I1)=DM
8785          LB(I2)=2
8786          E(I2)=AMN
8787           ENDIF
8788          go to 200
8789           ENDIF
8790 *36 N*(+)+D(0)--> N*(0)(15)+P
8791           IF(N12.EQ.36)THEN
8792           IF(RANART(NSEED).LE.0.5)THEN
8793           LB(I2)=12
8794           E(I2)=DM
8795          LB(I1)=1
8796          E(I1)=AMP
8797           ELSE
8798           LB(I1)=12
8799           E(I1)=DM
8800          LB(I2)=1
8801          E(I2)=AMP
8802           ENDIF
8803          go to 200
8804           ENDIF
8805 1012         continue
8806          iblock=55
8807          lb1=lb(i1)
8808          lb2=lb(i2)
8809          ich=iabs(lb1*lb2)
8810 *-------------------------------------------------------
8811 * RELABLE BARYON I1 AND I2 in the reabsorption processes
8812 *37 D(++)+D(-)--> n+p
8813           IF(ich.EQ.9*6)THEN
8814           IF(RANART(NSEED).LE.0.5)THEN
8815           LB(I2)=1
8816           E(I2)=amp
8817          LB(I1)=2
8818          E(I1)=AMN
8819           ELSE
8820           LB(I1)=1
8821           E(I1)=amp
8822          LB(I2)=2
8823          E(I2)=AMN
8824           ENDIF
8825          go to 200
8826           ENDIF
8827 *38 D(+)+D(0)--> n+p
8828           IF(ich.EQ.8*7)THEN
8829           IF(RANART(NSEED).LE.0.5)THEN
8830           LB(I2)=1
8831           E(I2)=amp
8832          LB(I1)=2
8833          E(I1)=AMN
8834           ELSE
8835           LB(I1)=1
8836           E(I1)=amp
8837          LB(I2)=2
8838          E(I2)=AMN
8839           ENDIF
8840          go to 200
8841           ENDIF
8842 *39 D(++)+D(0)--> p+p
8843           IF(ich.EQ.9*7)THEN
8844           LB(I2)=1
8845           E(I2)=amp
8846          LB(I1)=1
8847          E(I1)=AMP
8848          go to 200
8849           ENDIF
8850 *40 D(+)+D(+)--> p+p
8851           IF(ich.EQ.8*8)THEN
8852           LB(I2)=1
8853           E(I2)=amp
8854          LB(I1)=1
8855          E(I1)=AMP
8856           go to 200
8857           ENDIF
8858 *41 D(+)+D(-)--> n+n
8859           IF(ich.EQ.8*6)THEN
8860           LB(I2)=2
8861           E(I2)=amn
8862          LB(I1)=2
8863          E(I1)=AMN
8864           go to 200
8865           ENDIF
8866 *42 D(0)+D(0)--> n+n
8867           IF(ich.EQ.6*6)THEN
8868           LB(I2)=2
8869           E(I2)=amn
8870          LB(I1)=2
8871          E(I1)=AMN
8872          go to 200
8873           ENDIF
8874 *43 N*(+)+N*(+)--> p+p
8875           IF(ich.EQ.11*11.or.ich.eq.13*13.or.ich.eq.11*13)THEN
8876           LB(I2)=1
8877           E(I2)=amp
8878          LB(I1)=1
8879          E(I1)=AMP
8880          go to 200
8881           ENDIF
8882 *44 N*(0)(1440)+N*(0)--> n+n
8883           IF(ich.EQ.10*10.or.ich.eq.12*12.or.ich.eq.10*12)THEN
8884           LB(I2)=2
8885           E(I2)=amn
8886          LB(I1)=2
8887          E(I1)=AMN
8888          go to 200
8889           ENDIF
8890 *45 N*(+)+N*(0)--> n+p
8891           IF(ich.EQ.10*11.or.ich.eq.12*13.or.ich.
8892      &    eq.10*13.or.ich.eq.11*12)THEN
8893           IF(RANART(NSEED).LE.0.5)THEN
8894           LB(I2)=1
8895           E(I2)=amp
8896          LB(I1)=2
8897          E(I1)=AMN
8898           ELSE
8899           LB(I1)=1
8900           E(I1)=amp
8901          LB(I2)=2
8902          E(I2)=AMN
8903           ENDIF
8904          go to 200
8905           ENDIF
8906 *46 N*(+)+D(+)--> p+p
8907           IF(ich.eq.11*8.or.ich.eq.13*8)THEN
8908           LB(I2)=1
8909           E(I2)=amp
8910          LB(I1)=1
8911          E(I1)=AMP
8912           go to 200
8913           ENDIF
8914 *47 N*(+)+D(0)--> n+p
8915           IF(ich.EQ.11*7.or.ich.eq.13*7)THEN
8916           IF(RANART(NSEED).LE.0.5)THEN
8917           LB(I2)=1
8918           E(I2)=amp
8919          LB(I1)=2
8920          E(I1)=AMN
8921           ELSE
8922           LB(I1)=1
8923           E(I1)=amp
8924          LB(I2)=2
8925          E(I2)=AMN
8926           ENDIF
8927          go to 200
8928           ENDIF
8929 *48 N*(+)+D(-)--> n+n
8930           IF(ich.EQ.11*6.or.ich.eq.13*6)THEN
8931           LB(I2)=2
8932           E(I2)=amn
8933          LB(I1)=2
8934          E(I1)=AMN
8935           go to 200
8936           ENDIF
8937 *49 N*(0)+D(++)--> p+p
8938           IF(ich.EQ.10*9.or.ich.eq.12*9)THEN
8939           LB(I2)=1
8940           E(I2)=amp
8941          LB(I1)=1
8942          E(I1)=AMP
8943          go to 200
8944           ENDIF
8945 *50 N*(0)+D(0)--> n+n
8946           IF(ich.EQ.10*7.or.ich.eq.12*7)THEN
8947           LB(I2)=2
8948           E(I2)=amn
8949          LB(I1)=2
8950          E(I1)=AMN
8951           go to 200
8952           ENDIF
8953 *51 N*(0)+D(+)--> n+p
8954           IF(ich.EQ.10*8.or.ich.eq.12*8)THEN
8955           IF(RANART(NSEED).LE.0.5)THEN
8956           LB(I2)=2
8957           E(I2)=amn
8958          LB(I1)=1
8959          E(I1)=AMP
8960           ELSE
8961           LB(I1)=2
8962           E(I1)=amn
8963          LB(I2)=1
8964          E(I2)=AMP
8965           ENDIF
8966          go to 200
8967           ENDIF
8968          lb(i1)=1
8969          e(i1)=amp
8970          lb(i2)=2
8971          e(i2)=amn
8972 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
8973 * ENERGY CONSERVATION
8974 * resonance production or absorption in resonance+resonance collisions is
8975 * assumed to have the same pt distribution as pp
8976 200       EM1=E(I1)
8977           EM2=E(I2)
8978           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
8979      1                - 4.0 * (EM1*EM2)**2
8980           IF(PR2.LE.0.)PR2=1.e-09
8981           PR=SQRT(PR2)/(2.*SRT)
8982              if(srt.le.2.14)C1= 1.0 - 2.0 * RANART(NSEED)
8983          if(srt.gt.2.14.and.srt.le.2.4)c1=ang(srt,iseed)       
8984          if(srt.gt.2.4)then
8985 
8986 clin-10/25/02 get rid of argument usage mismatch in PTR():
8987              xptr=0.33*pr
8988 c         cc1=ptr(0.33*pr,iseed)
8989          cc1=ptr(xptr,iseed)
8990 clin-10/25/02-end
8991 
8992 clin-9/2012: check argument in sqrt():
8993          scheck=pr**2-cc1**2
8994          if(scheck.lt.0) then
8995             write(99,*) 'scheck7: ', scheck
8996             scheck=0.
8997          endif
8998          c1=sqrt(scheck)/pr
8999 c         c1=sqrt(pr**2-cc1**2)/pr
9000 
9001          endif
9002           T1   = 2.0 * PI * RANART(NSEED)
9003        if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
9004          lb(i1) = -lb(i1)
9005          lb(i2) = -lb(i2)
9006        endif
9007          ENDIF
9008 *COM: SET THE NEW MOMENTUM COORDINATES
9009 
9010 clin-9/2012: check argument in sqrt():
9011  107     scheck=1.0 - C1**2
9012          if(scheck.lt.0) then
9013             write(99,*) 'scheck8: ', scheck
9014             scheck=0.
9015          endif
9016          S1=SQRT(scheck)
9017 c107   S1   = SQRT( 1.0 - C1**2 )
9018 
9019 clin-9/2012: check argument in sqrt():
9020       scheck=1.0 - C2**2
9021       if(scheck.lt.0) then
9022          write(99,*) 'scheck9: ', scheck
9023          scheck=0.
9024       endif
9025       S2=SQRT(scheck)
9026 c      S2  =  SQRT( 1.0 - C2**2 )
9027 
9028       CT1  = COS(T1)
9029       ST1  = SIN(T1)
9030       CT2  = COS(T2)
9031       ST2  = SIN(T2)
9032       PZ   = PR * ( C1*C2 - S1*S2*CT1 )
9033       SS   = C2 * S1 * CT1  +  S2 * C1
9034       PX   = PR * ( SS*CT2 - S1*ST1*ST2 )
9035       PY   = PR * ( SS*ST2 + S1*ST1*CT2 )
9036       RETURN
9037 * FOR THE DD-->KAON+X PROCESS, FIND MOMENTUM OF THE FINAL PARTICLES IN 
9038 * THE NUCLEUS-NUCLEUS CMS.
9039 306     CONTINUE
9040 csp11/21/01 phi production
9041               if(XSK5/sigK.gt.RANART(NSEED))then
9042               pz1=p(3,i1)
9043               pz2=p(3,i2)
9044                 LB(I1) = 1 + int(2 * RANART(NSEED))
9045                 LB(I2) = 1 + int(2 * RANART(NSEED))
9046               nnn=nnn+1
9047                 LPION(NNN,IRUN)=29
9048                 EPION(NNN,IRUN)=APHI
9049                 iblock = 222
9050               GO TO 208
9051                ENDIF
9052               iblock=10
9053                 if(ianti .eq. 1)iblock=-10
9054               pz1=p(3,i1)
9055               pz2=p(3,i2)
9056 * DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
9057               nnn=nnn+1
9058                 LPION(NNN,IRUN)=23
9059                 EPION(NNN,IRUN)=Aka
9060               if(srt.le.2.63)then
9061 * only lambda production is possible
9062 * (1.1)P+P-->p+L+kaon+
9063               ic=1
9064                 LB(I1) = 1 + int(2 * RANART(NSEED))
9065               LB(I2)=14
9066               GO TO 208
9067                 ENDIF
9068        if(srt.le.2.74.and.srt.gt.2.63)then
9069 * both Lambda and sigma production are possible
9070               if(XSK1/(XSK1+XSK2).gt.RANART(NSEED))then
9071 * lambda production
9072               ic=1
9073                 LB(I1) = 1 + int(2 * RANART(NSEED))
9074               LB(I2)=14
9075               else
9076 * sigma production
9077                 LB(I1) = 1 + int(2 * RANART(NSEED))
9078                 LB(I2) = 15 + int(3 * RANART(NSEED))
9079               ic=2
9080               endif
9081               GO TO 208
9082        endif
9083        if(srt.le.2.77.and.srt.gt.2.74)then
9084 * then pp-->Delta lamda kaon can happen
9085               if(xsk1/(xsk1+xsk2+xsk3).gt.RANART(NSEED))then
9086 * * (1.1)P+P-->p+L+kaon+
9087               ic=1
9088                 LB(I1) = 1 + int(2 * RANART(NSEED))
9089               LB(I2)=14
9090               go to 208
9091               else
9092               if(xsk2/(xsk2+xsk3).gt.RANART(NSEED))then
9093 * pp-->psk
9094               ic=2
9095                 LB(I1) = 1 + int(2 * RANART(NSEED))
9096                 LB(I2) = 15 + int(3 * RANART(NSEED))
9097               else
9098 * pp-->D+l+k        
9099               ic=3
9100                 LB(I1) = 6 + int(4 * RANART(NSEED))
9101               lb(i2)=14
9102               endif
9103               GO TO 208
9104               endif
9105        endif
9106        if(srt.gt.2.77)then
9107 * all four channels are possible
9108               if(xsk1/(xsk1+xsk2+xsk3+xsk4).gt.RANART(NSEED))then
9109 * p lambda k production
9110               ic=1
9111                 LB(I1) = 1 + int(2 * RANART(NSEED))
9112               LB(I2)=14
9113               go to 208
9114        else
9115           if(xsk3/(xsk2+xsk3+xsk4).gt.RANART(NSEED))then
9116 * delta l K production
9117               ic=3
9118                 LB(I1) = 6 + int(4 * RANART(NSEED))
9119               lb(i2)=14
9120               go to 208
9121           else
9122               if(xsk2/(xsk2+xsk4).gt.RANART(NSEED))then
9123 * n sigma k production
9124                 LB(I1) = 1 + int(2 * RANART(NSEED))
9125                 LB(I2) = 15 + int(3 * RANART(NSEED))
9126               ic=2
9127               else
9128 * D sigma K
9129               ic=4
9130                 LB(I1) = 6 + int(4 * RANART(NSEED))
9131                 LB(I2) = 15 + int(3 * RANART(NSEED))
9132               endif
9133               go to 208
9134           endif
9135        endif
9136        endif
9137 208             continue
9138          if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
9139           lb(i1) = - lb(i1)
9140           lb(i2) = - lb(i2)
9141           if(LPION(NNN,IRUN) .eq. 23)LPION(NNN,IRUN)=21
9142          endif
9143        lbi1=lb(i1)
9144        lbi2=lb(i2)
9145 * KEEP ALL COORDINATES OF PARTICLE 2 FOR POSSIBLE PHASE SPACE CHANGE
9146            NTRY1=0
9147 129        CALL BBKAON(ic,SRT,PX3,PY3,PZ3,DM3,PX4,PY4,PZ4,DM4,
9148      &  PPX,PPY,PPZ,icou1)
9149        NTRY1=NTRY1+1
9150        if((icou1.lt.0).AND.(NTRY1.LE.20))GO TO 129
9151 c       if(icou1.lt.0)return
9152 * ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
9153        CALL ROTATE(PX,PY,PZ,PX3,PY3,PZ3)
9154        CALL ROTATE(PX,PY,PZ,PX4,PY4,PZ4)
9155        CALL ROTATE(PX,PY,PZ,PPX,PPY,PPZ)
9156 * FIND THE MOMENTUM OF PARTICLES IN THE FINAL STATE IN THE NUCLEUS-
9157 * NUCLEUS CMS. FRAME 
9158 * (1) for the necleon/delta
9159 *             LORENTZ-TRANSFORMATION INTO LAB FRAME FOR DELTA1
9160               E1CM    = SQRT (dm3**2 + PX3**2 + PY3**2 + PZ3**2)
9161               P1BETA  = PX3*BETAX + PY3*BETAY + PZ3*BETAZ
9162               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
9163               Pt1i1 = BETAX * TRANSF + PX3
9164               Pt2i1 = BETAY * TRANSF + PY3
9165               Pt3i1 = BETAZ * TRANSF + PZ3
9166              Eti1   = DM3
9167 * (2) for the lambda/sigma
9168                 E2CM    = SQRT (dm4**2 + PX4**2 + PY4**2 + PZ4**2)
9169                 P2BETA  = PX4*BETAX+PY4*BETAY+PZ4*BETAZ
9170                 TRANSF  = GAMMA * (GAMMA*P2BETA / (GAMMA + 1.) + E2CM)
9171                 Pt1I2 = BETAX * TRANSF + PX4
9172                 Pt2I2 = BETAY * TRANSF + PY4
9173                 Pt3I2 = BETAZ * TRANSF + PZ4
9174               EtI2   = DM4
9175 * GET the kaon'S MOMENTUM AND COORDINATES IN NUCLEUS-NUCLEUS CMS. FRAME
9176                 EPCM=SQRT(aka**2+PPX**2+PPY**2+PPZ**2)
9177                 PPBETA=PPX*BETAX+PPY*BETAY+PPZ*BETAZ
9178                 TRANSF=GAMMA*(GAMMA*PPBETA/(GAMMA+1.)+EPCM)
9179                 PPION(1,NNN,IRUN)=BETAX*TRANSF+PPX
9180                 PPION(2,NNN,IRUN)=BETAY*TRANSF+PPY
9181                 PPION(3,NNN,IRUN)=BETAZ*TRANSF+PPZ
9182 clin-5/2008:
9183                 dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
9184 clin-5/2008:
9185 c2007        X01 = 1.0 - 2.0 * RANART(NSEED)
9186 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
9187 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
9188 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2007
9189 c                RPION(1,NNN,IRUN)=R(1,I1)+0.5*x01
9190 c                RPION(2,NNN,IRUN)=R(2,I1)+0.5*y01
9191 c                RPION(3,NNN,IRUN)=R(3,I1)+0.5*z01
9192                     RPION(1,NNN,IRUN)=R(1,I1)
9193                     RPION(2,NNN,IRUN)=R(2,I1)
9194                     RPION(3,NNN,IRUN)=R(3,I1)
9195 c
9196 * assign the nucleon/delta and lambda/sigma to i1 or i2 to keep the 
9197 * leadng particle behaviour
9198 C              if((pt1i1*px1+pt2i1*py1+pt3i1*pz1).gt.0)then
9199               p(1,i1)=pt1i1
9200               p(2,i1)=pt2i1
9201               p(3,i1)=pt3i1
9202               e(i1)=eti1
9203               lb(i1)=lbi1
9204               p(1,i2)=pt1i2
9205               p(2,i2)=pt2i2
9206               p(3,i2)=pt3i2
9207               e(i2)=eti2
9208               lb(i2)=lbi2
9209                 PX1     = P(1,I1)
9210                 PY1     = P(2,I1)
9211                 PZ1     = P(3,I1)
9212               EM1       = E(I1)
9213                 ID(I1)  = 2
9214                 ID(I2)  = 2
9215                 ID1     = ID(I1)
9216         LB1=LB(I1)
9217         LB2=LB(I2)
9218         AM1=EM1
9219        am2=em2
9220         E1= SQRT( EM1**2 + PX1**2 + PY1**2 + PZ1**2 )
9221        RETURN
9222 
9223 clin-6/2008 D+D->Deuteron+pi:
9224 *     FIND MOMENTUM OF THE FINAL PARTICLES IN THE NUCLEUS-NUCLEUS CMS.
9225  108   CONTINUE
9226            if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
9227 c     For idpert=1: we produce npertd pert deuterons:
9228               ndloop=npertd
9229            elseif(idpert.eq.2.and.npertd.ge.1) then
9230 c     For idpert=2: we first save information for npertd pert deuterons;
9231 c     at the last ndloop we create the regular deuteron+pi 
9232 c     and those pert deuterons:
9233               ndloop=npertd+1
9234            else
9235 c     Just create the regular deuteron+pi:
9236               ndloop=1
9237            endif
9238 c
9239            dprob1=sdprod/sig/float(npertd)
9240            do idloop=1,ndloop
9241               CALL bbdangle(pxd,pyd,pzd,nt,ipert1,ianti,idloop,pfinal,
9242      1 dprob1,lbm)
9243               CALL ROTATE(PX,PY,PZ,PXd,PYd,PZd)
9244 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
9245 *     FROM THE NN CMS FRAME INTO THE GLOBAL CMS FRAME:
9246 *     For the Deuteron:
9247               xmass=xmd
9248               E1dCM=SQRT(xmass**2+PXd**2+PYd**2+PZd**2)
9249               P1dBETA=PXd*BETAX+PYd*BETAY+PZd*BETAZ
9250               TRANSF=GAMMA*(GAMMA*P1dBETA/(GAMMA+1.)+E1dCM)
9251               pxi1=BETAX*TRANSF+PXd
9252               pyi1=BETAY*TRANSF+PYd
9253               pzi1=BETAZ*TRANSF+PZd
9254               if(ianti.eq.0)then
9255                  lbd=42
9256               else
9257                  lbd=-42
9258               endif
9259               if(idpert.eq.1.and.ipert1.eq.1.and.npertd.ge.1) then
9260 cccc  Perturbative production for idpert=1:
9261                  nnn=nnn+1
9262                  PPION(1,NNN,IRUN)=pxi1
9263                  PPION(2,NNN,IRUN)=pyi1
9264                  PPION(3,NNN,IRUN)=pzi1
9265                  EPION(NNN,IRUN)=xmd
9266                  LPION(NNN,IRUN)=lbd
9267                  RPION(1,NNN,IRUN)=R(1,I1)
9268                  RPION(2,NNN,IRUN)=R(2,I1)
9269                  RPION(3,NNN,IRUN)=R(3,I1)
9270 clin-6/2008 assign the perturbative probability:
9271                  dppion(NNN,IRUN)=sdprod/sig/float(npertd)
9272               elseif(idpert.eq.2.and.idloop.le.npertd) then
9273 clin-6/2008 For idpert=2, we produce NPERTD perturbative (anti)deuterons 
9274 c     only when a regular (anti)deuteron+pi is produced in NN collisions.
9275 c     First save the info for the perturbative deuterons:
9276                  ppd(1,idloop)=pxi1
9277                  ppd(2,idloop)=pyi1
9278                  ppd(3,idloop)=pzi1
9279                  lbpd(idloop)=lbd
9280               else
9281 cccc  Regular production:
9282 c     For the regular pion: do LORENTZ-TRANSFORMATION:
9283                  E(i1)=xmm
9284                  E2piCM=SQRT(xmm**2+PXd**2+PYd**2+PZd**2)
9285                  P2piBETA=-PXd*BETAX-PYd*BETAY-PZd*BETAZ
9286                  TRANSF=GAMMA*(GAMMA*P2piBETA/(GAMMA+1.)+E2piCM)
9287                  pxi2=BETAX*TRANSF-PXd
9288                  pyi2=BETAY*TRANSF-PYd
9289                  pzi2=BETAZ*TRANSF-PZd
9290                  p(1,i1)=pxi2
9291                  p(2,i1)=pyi2
9292                  p(3,i1)=pzi2
9293 c     Remove regular pion to check the equivalence 
9294 c     between the perturbative and regular deuteron results:
9295 c                 E(i1)=0.
9296 c
9297                  LB(I1)=lbm
9298                  PX1=P(1,I1)
9299                  PY1=P(2,I1)
9300                  PZ1=P(3,I1)
9301                  EM1=E(I1)
9302                  ID(I1)=2
9303                  ID1=ID(I1)
9304                  E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
9305                  lb1=lb(i1)
9306 c     For the regular deuteron:
9307                  p(1,i2)=pxi1
9308                  p(2,i2)=pyi1
9309                  p(3,i2)=pzi1
9310                  lb(i2)=lbd
9311                  lb2=lb(i2)
9312                  E(i2)=xmd
9313                  EtI2=E(I2)
9314                  ID(I2)=2
9315 c     For idpert=2: create the perturbative deuterons:
9316                  if(idpert.eq.2.and.idloop.eq.ndloop) then
9317                     do ipertd=1,npertd
9318                        nnn=nnn+1
9319                        PPION(1,NNN,IRUN)=ppd(1,ipertd)
9320                        PPION(2,NNN,IRUN)=ppd(2,ipertd)
9321                        PPION(3,NNN,IRUN)=ppd(3,ipertd)
9322                        EPION(NNN,IRUN)=xmd
9323                        LPION(NNN,IRUN)=lbpd(ipertd)
9324                        RPION(1,NNN,IRUN)=R(1,I1)
9325                        RPION(2,NNN,IRUN)=R(2,I1)
9326                        RPION(3,NNN,IRUN)=R(3,I1)
9327 clin-6/2008 assign the perturbative probability:
9328                        dppion(NNN,IRUN)=1./float(npertd)
9329                     enddo
9330                  endif
9331               endif
9332            enddo
9333            IBLOCK=501
9334            return
9335 clin-6/2008 D+D->Deuteron+pi over
9336 
9337         END
9338 **********************************
9339 **********************************
9340 *                                                                      *
9341       SUBROUTINE INIT(MINNUM,MAXNUM,NUM,RADIUS,X0,Z0,P0,
9342      &                GAMMA,ISEED,MASS,IOPT)
9343 *                                                                      *
9344 *       PURPOSE:     PROVIDING INITIAL CONDITIONS FOR PHASE-SPACE      *
9345 *                    DISTRIBUTION OF TESTPARTICLES                     *
9346 *       VARIABLES:   (ALL INPUT)                                       *
9347 *         MINNUM  - FIRST TESTPARTICLE TREATED IN ONE RUN    (INTEGER) *
9348 *         MAXNUM  - LAST TESTPARTICLE TREATED IN ONE RUN     (INTEGER) *
9349 *         NUM     - NUMBER OF TESTPARTICLES PER NUCLEON      (INTEGER) *
9350 *         RADIUS  - RADIUS OF NUCLEUS "FM"                      (REAL) *
9351 *         X0,Z0   - DISPLACEMENT OF CENTER OF NUCLEUS IN X,Z-          *
9352 *                   DIRECTION "FM"                              (REAL) *
9353 *         P0      - MOMENTUM-BOOST IN C.M. FRAME "GEV/C"        (REAL) *
9354 *         GAMMA   - RELATIVISTIC GAMMA-FACTOR                   (REAL) *
9355 *         ISEED   - SEED FOR RANDOM-NUMBER GENERATOR         (INTEGER) *
9356 *         MASS    - TOTAL MASS OF THE SYSTEM                 (INTEGER) *
9357 *         IOPT    - OPTION FOR DIFFERENT OCCUPATION OF MOMENTUM        *
9358 *                   SPACE                                    (INTEGER) *
9359 *                                                                      *
9360 **********************************
9361       PARAMETER     (MAXSTR=150001,  AMU   = 0.9383)
9362       PARAMETER     (MAXX   =   20,  MAXZ  =    24)
9363       PARAMETER     (PI=3.1415926)
9364 *
9365       REAL              PTOT(3)
9366       COMMON  /AA/      R(3,MAXSTR)
9367 cc      SAVE /AA/
9368       COMMON  /BB/      P(3,MAXSTR)
9369 cc      SAVE /BB/
9370       COMMON  /CC/      E(MAXSTR)
9371 cc      SAVE /CC/
9372       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9373      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9374      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9375 cc      SAVE /DD/
9376       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
9377 cc      SAVE /EE/
9378       common  /ss/      inout(20)
9379 cc      SAVE /ss/
9380       COMMON/RNDF77/NSEED
9381 cc      SAVE /RNDF77/
9382       SAVE   
9383 *----------------------------------------------------------------------
9384 *     PREPARATION FOR LORENTZ-TRANSFORMATIONS
9385 *
9386       IF (P0 .NE. 0.) THEN
9387         SIGN = P0 / ABS(P0)
9388       ELSE
9389         SIGN = 0.
9390       END IF
9391 
9392 clin-9/2012: check argument in sqrt():
9393       scheck=GAMMA**2-1.
9394       if(scheck.lt.0) then
9395          write(99,*) 'scheck10: ', scheck
9396          scheck=0.
9397       endif
9398       BETA=SIGN*SQRT(scheck)/GAMMA
9399 c      BETA = SIGN * SQRT(GAMMA**2-1.)/GAMMA
9400 
9401 *-----------------------------------------------------------------------
9402 *     TARGET-ID = 1 AND PROJECTILE-ID = -1
9403 *
9404       IF (MINNUM .EQ. 1) THEN
9405         IDNUM = 1
9406       ELSE
9407         IDNUM = -1
9408       END IF
9409 *-----------------------------------------------------------------------
9410 *     IDENTIFICATION OF TESTPARTICLES AND ASSIGMENT OF RESTMASS
9411 *
9412 *     LOOP OVER ALL PARALLEL RUNS:
9413       DO 400 IRUN = 1,NUM
9414         DO 100 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9415           ID(I) = IDNUM
9416           E(I)  = AMU
9417   100   CONTINUE
9418 *-----------------------------------------------------------------------
9419 *       OCCUPATION OF COORDINATE-SPACE
9420 *
9421         DO 300 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9422   200     CONTINUE
9423             X = 1.0 - 2.0 * RANART(NSEED)
9424             Y = 1.0 - 2.0 * RANART(NSEED)
9425             Z = 1.0 - 2.0 * RANART(NSEED)
9426           IF ((X*X+Y*Y+Z*Z) .GT. 1.0) GOTO 200
9427           R(1,I) = X * RADIUS
9428           R(2,I) = Y * RADIUS
9429           R(3,I) = Z * RADIUS
9430   300   CONTINUE
9431   400 CONTINUE
9432 *=======================================================================
9433       IF (IOPT .NE. 3) THEN
9434 *-----
9435 *     OPTION 1: USE WOODS-SAXON PARAMETRIZATION FOR DENSITY AND
9436 *-----          CALCULATE LOCAL FERMI-MOMENTUM
9437 *
9438         RHOW0  = 0.168
9439         DO 1000 IRUN = 1,NUM
9440           DO 600 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9441   500       CONTINUE
9442               PX = 1.0 - 2.0 * RANART(NSEED)
9443               PY = 1.0 - 2.0 * RANART(NSEED)
9444               PZ = 1.0 - 2.0 * RANART(NSEED)
9445             IF (PX*PX+PY*PY+PZ*PZ .GT. 1.0) GOTO 500
9446             RDIST  = SQRT( R(1,I)**2 + R(2,I)**2 + R(3,I)**2 )
9447             RHOWS  = RHOW0 / (  1.0 + EXP( (RDIST-RADIUS) / 0.55 )  )
9448             PFERMI = 0.197 * (1.5 * PI*PI * RHOWS)**(1./3.)
9449 *-----
9450 *     OPTION 2: NUCLEAR MATTER CASE
9451             IF(IOPT.EQ.2) PFERMI=0.27
9452            if(iopt.eq.4) pfermi=0.
9453 *-----
9454             P(1,I) = PFERMI * PX
9455             P(2,I) = PFERMI * PY
9456             P(3,I) = PFERMI * PZ
9457   600     CONTINUE
9458 *
9459 *         SET TOTAL MOMENTUM TO 0 IN REST FRAME AND BOOST
9460 *
9461           DO 700 IDIR = 1,3
9462             PTOT(IDIR) = 0.0
9463   700     CONTINUE
9464           NPART = 0
9465           DO 900 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9466             NPART = NPART + 1
9467             DO 800 IDIR = 1,3
9468               PTOT(IDIR) = PTOT(IDIR) + P(IDIR,I)
9469   800       CONTINUE
9470   900     CONTINUE
9471           DO 950 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9472             DO 925 IDIR = 1,3
9473               P(IDIR,I) = P(IDIR,I) - PTOT(IDIR) / FLOAT(NPART)
9474   925       CONTINUE
9475 *           BOOST
9476             IF ((IOPT .EQ. 1).or.(iopt.eq.2)) THEN
9477               EPART = SQRT(P(1,I)**2+P(2,I)**2+P(3,I)**2+AMU**2)
9478               P(3,I) = GAMMA*(P(3,I) + BETA*EPART)
9479             ELSE
9480               P(3,I) = P(3,I) + P0
9481             END IF
9482   950     CONTINUE
9483  1000   CONTINUE
9484 *-----
9485       ELSE
9486 *-----
9487 *     OPTION 3: GIVE ALL NUCLEONS JUST A Z-MOMENTUM ACCORDING TO
9488 *               THE BOOST OF THE NUCLEI
9489 *
9490         DO 1200 IRUN = 1,NUM
9491           DO 1100 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9492             P(1,I) = 0.0
9493             P(2,I) = 0.0
9494             P(3,I) = P0
9495  1100     CONTINUE
9496  1200   CONTINUE
9497 *-----
9498       END IF
9499 *=======================================================================
9500 *     PUT PARTICLES IN THEIR POSITION IN COORDINATE-SPACE
9501 *     (SHIFT AND RELATIVISTIC CONTRACTION)
9502 *
9503       DO 1400 IRUN = 1,NUM
9504         DO 1300 I = MINNUM+(IRUN-1)*MASS,MAXNUM+(IRUN-1)*MASS
9505           R(1,I) = R(1,I) + X0
9506 * two nuclei in touch after contraction
9507           R(3,I) = (R(3,I)+Z0)/ GAMMA 
9508 * two nuclei in touch before contraction
9509 c          R(3,I) = R(3,I) / GAMMA + Z0
9510  1300   CONTINUE
9511  1400 CONTINUE
9512 *
9513       RETURN
9514       END
9515 **********************************
9516 *                                                                      *
9517       SUBROUTINE DENS(IPOT,MASS,NUM,NESC)
9518 *                                                                      *
9519 *       PURPOSE:     CALCULATION OF LOCAL BARYON, MESON AND ENERGY     * 
9520 *                    DENSITY FROM SPATIAL DISTRIBUTION OF TESTPARTICLES*
9521 *                                                                      *
9522 *       VARIABLES (ALL INPUT, ALL INTEGER)                             *
9523 *         MASS    -  MASS NUMBER OF THE SYSTEM                         *
9524 *         NUM     -  NUMBER OF TESTPARTICLES PER NUCLEON               *
9525 *                                                                      *
9526 *         NESC    -  NUMBER OF ESCAPED PARTICLES      (INTEGER,OUTPUT) *
9527 *                                                                      *
9528 **********************************
9529       PARAMETER     (MAXSTR= 150001,MAXR=1)
9530       PARAMETER     (MAXX   =    20,  MAXZ  =    24)
9531 *
9532       dimension pxl(-maxx:maxx,-maxx:maxx,-maxz:maxz),
9533      1          pyl(-maxx:maxx,-maxx:maxx,-maxz:maxz),
9534      2          pzl(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9535       COMMON  /AA/      R(3,MAXSTR)
9536 cc      SAVE /AA/
9537       COMMON  /BB/      P(3,MAXSTR)
9538 cc      SAVE /BB/
9539       COMMON  /CC/      E(MAXSTR)
9540 cc      SAVE /CC/
9541       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9542      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9543      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9544 cc      SAVE /DD/
9545       COMMON  /DDpi/    piRHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9546 cc      SAVE /DDpi/
9547       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
9548 cc      SAVE /EE/
9549       common  /ss/  inout(20)
9550 cc      SAVE /ss/
9551       COMMON  /RR/  MASSR(0:MAXR)
9552 cc      SAVE /RR/
9553       common  /tt/  PEL(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9554      &,rxy(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9555 cc      SAVE /tt/
9556       common  /bbb/ bxx(-maxx:maxx,-maxx:maxx,-maxz:maxz),
9557      &byy(-maxx:maxx,-maxx:maxx,-maxz:maxz),
9558      &bzz(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9559 *
9560       real zet(-45:45)
9561       SAVE   
9562       data zet /
9563      4     1.,0.,0.,0.,0.,
9564      3     1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
9565      2     -1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
9566      1     0.,0.,0.,-1.,0.,1.,0.,-1.,0.,-1.,
9567      s     0.,-2.,-1.,0.,1.,0.,0.,0.,0.,-1.,
9568      e     0.,
9569      s     1.,0.,-1.,0.,1.,-1.,0.,1.,2.,0.,
9570      1     1.,0.,1.,0.,-1.,0.,1.,0.,0.,0.,
9571      2     -1.,0.,1.,0.,-1.,0.,1.,0.,0.,1.,
9572      3     0.,0.,0.,0.,0.,0.,0.,0.,0.,-1.,
9573      4     0.,0.,0.,0.,-1./
9574 
9575       DO 300 IZ = -MAXZ,MAXZ
9576         DO 200 IY = -MAXX,MAXX
9577           DO 100 IX = -MAXX,MAXX
9578             RHO(IX,IY,IZ) = 0.0
9579             RHOn(IX,IY,IZ) = 0.0
9580             RHOp(IX,IY,IZ) = 0.0
9581             piRHO(IX,IY,IZ) = 0.0
9582            pxl(ix,iy,iz) = 0.0
9583            pyl(ix,iy,iz) = 0.0
9584            pzl(ix,iy,iz) = 0.0
9585            pel(ix,iy,iz) = 0.0
9586            bxx(ix,iy,iz) = 0.0
9587            byy(ix,iy,iz) = 0.0
9588            bzz(ix,iy,iz) = 0.0
9589   100     CONTINUE
9590   200   CONTINUE
9591   300 CONTINUE
9592 *
9593       NESC  = 0
9594       BIG   = 1.0 / ( 3.0 * FLOAT(NUM) )
9595       SMALL = 1.0 / ( 9.0 * FLOAT(NUM) )
9596 *
9597       MSUM=0
9598       DO 400 IRUN = 1,NUM
9599       MSUM=MSUM+MASSR(IRUN-1)
9600       DO 400 J=1,MASSr(irun)
9601       I=J+MSUM
9602         IX = NINT( R(1,I) )
9603         IY = NINT( R(2,I) )
9604         IZ = NINT( R(3,I) )
9605         IF( IX .LE. -MAXX .OR. IX .GE. MAXX .OR.
9606      &      IY .LE. -MAXX .OR. IY .GE. MAXX .OR.
9607      &      IZ .LE. -MAXZ .OR. IZ .GE. MAXZ )    THEN
9608           NESC = NESC + 1
9609         ELSE
9610 c
9611 csp01/04/02 include baryon density
9612           if(j.gt.mass)go to 30
9613 c         if( (lb(i).eq.1.or.lb(i).eq.2) .or.
9614 c    &    (lb(i).ge.6.and.lb(i).le.17) )then                       
9615 * (1) baryon density
9616           RHO(IX,  IY,  IZ  ) = RHO(IX,  IY,  IZ  ) + BIG
9617           RHO(IX+1,IY,  IZ  ) = RHO(IX+1,IY,  IZ  ) + SMALL
9618           RHO(IX-1,IY,  IZ  ) = RHO(IX-1,IY,  IZ  ) + SMALL
9619           RHO(IX,  IY+1,IZ  ) = RHO(IX,  IY+1,IZ  ) + SMALL
9620           RHO(IX,  IY-1,IZ  ) = RHO(IX,  IY-1,IZ  ) + SMALL
9621           RHO(IX,  IY,  IZ+1) = RHO(IX,  IY,  IZ+1) + SMALL
9622           RHO(IX,  IY,  IZ-1) = RHO(IX,  IY,  IZ-1) + SMALL
9623 * (2) CALCULATE THE PROTON DENSITY
9624          IF(ZET(LB(I)).NE.0)THEN
9625           RHOP(IX,  IY,  IZ  ) = RHOP(IX,  IY,  IZ  ) + BIG
9626           RHOP(IX+1,IY,  IZ  ) = RHOP(IX+1,IY,  IZ  ) + SMALL
9627           RHOP(IX-1,IY,  IZ  ) = RHOP(IX-1,IY,  IZ  ) + SMALL
9628           RHOP(IX,  IY+1,IZ  ) = RHOP(IX,  IY+1,IZ  ) + SMALL
9629           RHOP(IX,  IY-1,IZ  ) = RHOP(IX,  IY-1,IZ  ) + SMALL
9630           RHOP(IX,  IY,  IZ+1) = RHOP(IX,  IY,  IZ+1) + SMALL
9631           RHOP(IX,  IY,  IZ-1) = RHOP(IX,  IY,  IZ-1) + SMALL
9632          go to 40
9633          ENDIF
9634 * (3) CALCULATE THE NEUTRON DENSITY
9635          IF(ZET(LB(I)).EQ.0)THEN
9636           RHON(IX,  IY,  IZ  ) = RHON(IX,  IY,  IZ  ) + BIG
9637           RHON(IX+1,IY,  IZ  ) = RHON(IX+1,IY,  IZ  ) + SMALL
9638           RHON(IX-1,IY,  IZ  ) = RHON(IX-1,IY,  IZ  ) + SMALL
9639           RHON(IX,  IY+1,IZ  ) = RHON(IX,  IY+1,IZ  ) + SMALL
9640           RHON(IX,  IY-1,IZ  ) = RHON(IX,  IY-1,IZ  ) + SMALL
9641           RHON(IX,  IY,  IZ+1) = RHON(IX,  IY,  IZ+1) + SMALL
9642           RHON(IX,  IY,  IZ-1) = RHON(IX,  IY,  IZ-1) + SMALL
9643          go to 40
9644           END IF
9645 c           else    !! sp01/04/02
9646 * (4) meson density       
9647 30              piRHO(IX,  IY,  IZ  ) = piRHO(IX,  IY,  IZ  ) + BIG
9648           piRHO(IX+1,IY,  IZ  ) = piRHO(IX+1,IY,  IZ  ) + SMALL
9649           piRHO(IX-1,IY,  IZ  ) = piRHO(IX-1,IY,  IZ  ) + SMALL
9650           piRHO(IX,  IY+1,IZ  ) = piRHO(IX,  IY+1,IZ  ) + SMALL
9651           piRHO(IX,  IY-1,IZ  ) = piRHO(IX,  IY-1,IZ  ) + SMALL
9652           piRHO(IX,  IY,  IZ+1) = piRHO(IX,  IY,  IZ+1) + SMALL
9653           piRHO(IX,  IY,  IZ-1) = piRHO(IX,  IY,  IZ-1) + SMALL
9654 c           endif    !! sp01/04/02
9655 * to calculate the Gamma factor in each cell
9656 *(1) PX
9657 40       pxl(ix,iy,iz)=pxl(ix,iy,iz)+p(1,I)*BIG
9658        pxl(ix+1,iy,iz)=pxl(ix+1,iy,iz)+p(1,I)*SMALL
9659        pxl(ix-1,iy,iz)=pxl(ix-1,iy,iz)+p(1,I)*SMALL
9660        pxl(ix,iy+1,iz)=pxl(ix,iy+1,iz)+p(1,I)*SMALL
9661        pxl(ix,iy-1,iz)=pxl(ix,iy-1,iz)+p(1,I)*SMALL
9662        pxl(ix,iy,iz+1)=pxl(ix,iy,iz+1)+p(1,I)*SMALL
9663        pxl(ix,iy,iz-1)=pxl(ix,iy,iz-1)+p(1,I)*SMALL
9664 *(2) PY
9665        pYl(ix,iy,iz)=pYl(ix,iy,iz)+p(2,I)*BIG
9666        pYl(ix+1,iy,iz)=pYl(ix+1,iy,iz)+p(2,I)*SMALL
9667        pYl(ix-1,iy,iz)=pYl(ix-1,iy,iz)+p(2,I)*SMALL
9668        pYl(ix,iy+1,iz)=pYl(ix,iy+1,iz)+p(2,I)*SMALL
9669        pYl(ix,iy-1,iz)=pYl(ix,iy-1,iz)+p(2,I)*SMALL
9670        pYl(ix,iy,iz+1)=pYl(ix,iy,iz+1)+p(2,I)*SMALL
9671        pYl(ix,iy,iz-1)=pYl(ix,iy,iz-1)+p(2,I)*SMALL
9672 * (3) PZ
9673        pZl(ix,iy,iz)=pZl(ix,iy,iz)+p(3,I)*BIG
9674        pZl(ix+1,iy,iz)=pZl(ix+1,iy,iz)+p(3,I)*SMALL
9675        pZl(ix-1,iy,iz)=pZl(ix-1,iy,iz)+p(3,I)*SMALL
9676        pZl(ix,iy+1,iz)=pZl(ix,iy+1,iz)+p(3,I)*SMALL
9677        pZl(ix,iy-1,iz)=pZl(ix,iy-1,iz)+p(3,I)*SMALL
9678        pZl(ix,iy,iz+1)=pZl(ix,iy,iz+1)+p(3,I)*SMALL
9679        pZl(ix,iy,iz-1)=pZl(ix,iy,iz-1)+p(3,I)*SMALL
9680 * (4) ENERGY
9681        pel(ix,iy,iz)=pel(ix,iy,iz)
9682      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*BIG
9683        pel(ix+1,iy,iz)=pel(ix+1,iy,iz)
9684      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9685        pel(ix-1,iy,iz)=pel(ix-1,iy,iz)
9686      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9687        pel(ix,iy+1,iz)=pel(ix,iy+1,iz)
9688      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9689        pel(ix,iy-1,iz)=pel(ix,iy-1,iz)
9690      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9691        pel(ix,iy,iz+1)=pel(ix,iy,iz+1)
9692      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9693        pel(ix,iy,iz-1)=pel(ix,iy,iz-1)
9694      1     +sqrt(e(I)**2+p(1,i)**2+p(2,I)**2+p(3,I)**2)*SMALL
9695         END IF
9696   400 CONTINUE
9697 *
9698       DO 301 IZ = -MAXZ,MAXZ
9699         DO 201 IY = -MAXX,MAXX
9700           DO 101 IX = -MAXX,MAXX
9701       IF((RHO(IX,IY,IZ).EQ.0).OR.(PEL(IX,IY,IZ).EQ.0))
9702      1GO TO 101
9703       SMASS2=PEL(IX,IY,IZ)**2-PXL(IX,IY,IZ)**2
9704      1-PYL(IX,IY,IZ)**2-PZL(IX,IY,IZ)**2
9705        IF(SMASS2.LE.0)SMASS2=1.E-06
9706        SMASS=SQRT(SMASS2)
9707            IF(SMASS.EQ.0.)SMASS=1.e-06
9708            GAMMA=PEL(IX,IY,IZ)/SMASS
9709            if(gamma.eq.0)go to 101
9710        bxx(ix,iy,iz)=pxl(ix,iy,iz)/pel(ix,iy,iz)                  
9711        byy(ix,iy,iz)=pyl(ix,iy,iz)/pel(ix,iy,iz)       
9712        bzz(ix,iy,iz)=pzl(ix,iy,iz)/pel(ix,iy,iz)                  
9713             RHO(IX,IY,IZ) = RHO(IX,IY,IZ)/GAMMA
9714             RHOn(IX,IY,IZ) = RHOn(IX,IY,IZ)/GAMMA
9715             RHOp(IX,IY,IZ) = RHOp(IX,IY,IZ)/GAMMA
9716             piRHO(IX,IY,IZ) = piRHO(IX,IY,IZ)/GAMMA
9717             pEL(IX,IY,IZ) = pEL(IX,IY,IZ)/(GAMMA**2)
9718            rho0=0.163
9719            IF(IPOT.EQ.0)THEN
9720            U=0
9721            GO TO 70
9722            ENDIF
9723            IF(IPOT.EQ.1.or.ipot.eq.6)THEN
9724            A=-0.1236
9725            B=0.0704
9726            S=2
9727            GO TO 60
9728            ENDIF
9729            IF(IPOT.EQ.2.or.ipot.eq.7)THEN
9730            A=-0.218
9731            B=0.164
9732            S=4./3.
9733            ENDIF
9734            IF(IPOT.EQ.3)THEN
9735            a=-0.3581
9736            b=0.3048
9737            S=1.167
9738            GO TO 60
9739            ENDIF
9740            IF(IPOT.EQ.4)THEN
9741            denr=rho(ix,iy,iz)/rho0         
9742            b=0.3048
9743            S=1.167
9744            if(denr.le.4.or.denr.gt.7)then
9745            a=-0.3581
9746            else
9747            a=-b*denr**(1./6.)-2.*0.036/3.*denr**(-0.333)
9748            endif
9749            GO TO 60
9750            ENDIF
9751 60           U = 0.5*A*RHO(IX,IY,IZ)**2/RHO0 
9752      1        + B/(1+S) * (RHO(IX,IY,IZ)/RHO0)**S*RHO(IX,IY,IZ)  
9753 70           PEL(IX,IY,IZ)=PEL(IX,IY,IZ)+U
9754   101     CONTINUE
9755   201   CONTINUE
9756   301 CONTINUE
9757       RETURN
9758       END
9759 
9760 **********************************
9761 *                                                                      *
9762       SUBROUTINE GRADU(IOPT,IX,IY,IZ,GRADX,GRADY,GRADZ)
9763 *                                                                      *
9764 *       PURPOSE:     DETERMINE GRAD(U(RHO(X,Y,Z)))                     *
9765 *       VARIABLES:                                                     *
9766 *         IOPT                - METHOD FOR EVALUATING THE GRADIENT     *
9767 *                                                      (INTEGER,INPUT) *
9768 *         IX, IY, IZ          - COORDINATES OF POINT   (INTEGER,INPUT) *
9769 *         GRADX, GRADY, GRADZ - GRADIENT OF U            (REAL,OUTPUT) *
9770 *                                                                      *
9771 **********************************
9772       PARAMETER         (MAXX =    20,  MAXZ =   24)
9773       PARAMETER         (RHO0 = 0.167)
9774 *
9775       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9776      &                  RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9777      &                  RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9778 cc      SAVE /DD/
9779       common  /ss/      inout(20)
9780 cc      SAVE /ss/
9781       common  /tt/  PEL(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9782      &,rxy(-maxx:maxx,-maxx:maxx,-maxz:maxz)
9783 cc      SAVE /tt/
9784       SAVE   
9785 *
9786       RXPLUS   = RHO(IX+1,IY,  IZ  ) / RHO0
9787       RXMINS   = RHO(IX-1,IY,  IZ  ) / RHO0
9788       RYPLUS   = RHO(IX,  IY+1,IZ  ) / RHO0
9789       RYMINS   = RHO(IX,  IY-1,IZ  ) / RHO0
9790       RZPLUS   = RHO(IX,  IY,  IZ+1) / RHO0
9791       RZMINS   = RHO(IX,  IY,  IZ-1) / RHO0
9792       den0     = RHO(IX,  IY,  IZ) / RHO0
9793       ene0     = pel(IX,  IY,  IZ) 
9794 *-----------------------------------------------------------------------
9795       GOTO (1,2,3,4,5) IOPT
9796        if(iopt.eq.6)go to 6
9797        if(iopt.eq.7)go to 7
9798 *
9799     1 CONTINUE
9800 *       POTENTIAL USED IN 1) (STIFF):
9801 *       U = -.124 * RHO/RHO0 + .0705 (RHO/RHO0)**2 GEV
9802 *
9803            GRADX  = -0.062 * (RXPLUS - RXMINS) + 0.03525 * (RXPLUS**2 -
9804      &                                                      RXMINS**2)
9805            GRADY  = -0.062 * (RYPLUS - RYMINS) + 0.03525 * (RYPLUS**2 -
9806      &                                                      RYMINS**2)
9807            GRADZ  = -0.062 * (RZPLUS - RZMINS) + 0.03525 * (RZPLUS**2 -
9808      &                                                      RZMINS**2)
9809            RETURN
9810 *
9811     2 CONTINUE
9812 *       POTENTIAL USED IN 2):
9813 *       U = -.218 * RHO/RHO0 + .164 (RHO/RHO0)**(4/3) GEV
9814 *
9815            EXPNT = 1.3333333
9816            GRADX = -0.109 * (RXPLUS - RXMINS) 
9817      &     + 0.082 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9818            GRADY = -0.109 * (RYPLUS - RYMINS) 
9819      &     + 0.082 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9820            GRADZ = -0.109 * (RZPLUS - RZMINS) 
9821      &     + 0.082 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9822            RETURN
9823 *
9824     3 CONTINUE
9825 *       POTENTIAL USED IN 3) (SOFT):
9826 *       U = -.356 * RHO/RHO0 + .303 * (RHO/RHO0)**(7/6)  GEV
9827 *
9828            EXPNT = 1.1666667
9829           acoef = 0.178
9830            GRADX = -acoef * (RXPLUS - RXMINS) 
9831      &     + 0.1515 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9832            GRADY = -acoef * (RYPLUS - RYMINS) 
9833      &     + 0.1515 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9834            GRADZ = -acoef * (RZPLUS - RZMINS) 
9835      &     + 0.1515 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9836                  RETURN
9837 *
9838 *
9839     4   CONTINUE
9840 *       POTENTIAL USED IN 4) (super-soft in the mixed phase of 4 < rho/rho <7):
9841 *       U1 = -.356 * RHO/RHO0 + .303 * (RHO/RHO0)**(7/6)  GEV
9842 *       normal phase, soft eos of iopt=3
9843 *       U2 = -.02 * (RHO/RHO0)**(2/3) -0.0253 * (RHO/RHO0)**(7/6)  GEV
9844 *
9845        eh=4.
9846        eqgp=7.
9847            acoef=0.178
9848            EXPNT = 1.1666667
9849        denr=rho(ix,iy,iz)/rho0
9850        if(denr.le.eh.or.denr.ge.eqgp)then
9851            GRADX = -acoef * (RXPLUS - RXMINS) 
9852      &     + 0.1515 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9853            GRADY = -acoef * (RYPLUS - RYMINS) 
9854      &     + 0.1515 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9855            GRADZ = -acoef * (RZPLUS - RZMINS) 
9856      &     + 0.1515 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9857        else
9858           acoef1=0.178
9859           acoef2=0.0
9860           expnt2=2./3.
9861            GRADX =-acoef1* (RXPLUS**EXPNT-RXMINS**EXPNT)
9862      &                 -acoef2* (RXPLUS**expnt2 - RXMINS**expnt2) 
9863            GRADy =-acoef1* (RyPLUS**EXPNT-RyMINS**EXPNT)
9864      &                 -acoef2* (RyPLUS**expnt2 - RyMINS**expnt2) 
9865            GRADz =-acoef1* (RzPLUS**EXPNT-RzMINS**EXPNT)
9866      &                 -acoef2* (RzPLUS**expnt2 - RzMINS**expnt2) 
9867        endif
9868        return
9869 *     
9870     5   CONTINUE
9871 *       POTENTIAL USED IN 5) (SUPER STIFF):
9872 *       U = -.10322 * RHO/RHO0 + .04956 * (RHO/RHO0)**(2.77)  GEV
9873 *
9874            EXPNT = 2.77
9875            GRADX = -0.0516 * (RXPLUS - RXMINS) 
9876      &     + 0.02498 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9877            GRADY = -0.0516 * (RYPLUS - RYMINS) 
9878      &     + 0.02498 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9879            GRADZ = -0.0516 * (RZPLUS - RZMINS) 
9880      &     + 0.02498 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9881            RETURN
9882 *
9883     6 CONTINUE
9884 *       POTENTIAL USED IN 6) (STIFF-qgp):
9885 *       U = -.124 * RHO/RHO0 + .0705 (RHO/RHO0)**2 GEV
9886 *
9887        if(ene0.le.0.5)then
9888            GRADX  = -0.062 * (RXPLUS - RXMINS) + 0.03525 * (RXPLUS**2 -
9889      &                                                      RXMINS**2)
9890            GRADY  = -0.062 * (RYPLUS - RYMINS) + 0.03525 * (RYPLUS**2 -
9891      &                                                      RYMINS**2)
9892            GRADZ  = -0.062 * (RZPLUS - RZMINS) + 0.03525 * (RZPLUS**2 -
9893      &                                                      RZMINS**2)
9894            RETURN
9895        endif
9896        if(ene0.gt.0.5.and.ene0.le.1.5)then
9897 *       U=c1-ef*rho/rho0**2/3
9898        ef=36./1000.
9899            GRADX  = -0.5*ef* (RXPLUS**0.67-RXMINS**0.67)
9900            GRADy  = -0.5*ef* (RyPLUS**0.67-RyMINS**0.67)
9901            GRADz  = -0.5*ef* (RzPLUS**0.67-RzMINS**0.67)
9902            RETURN
9903        endif
9904        if(ene0.gt.1.5)then
9905 * U=800*(rho/rho0)**1/3.-Ef*(rho/rho0)**2/3.-c2
9906        ef=36./1000.
9907        cf0=0.8
9908         GRADX  =0.5*cf0*(rxplus**0.333-rxmins**0.333) 
9909      &         -0.5*ef* (RXPLUS**0.67-RXMINS**0.67)
9910         GRADy  =0.5*cf0*(ryplus**0.333-rymins**0.333) 
9911      &         -0.5*ef* (RyPLUS**0.67-RyMINS**0.67)
9912         GRADz  =0.5*cf0*(rzplus**0.333-rzmins**0.333) 
9913      &         -0.5*ef* (RzPLUS**0.67-RzMINS**0.67)
9914            RETURN
9915        endif
9916 *
9917     7 CONTINUE
9918 *       POTENTIAL USED IN 7) (Soft-qgp):
9919        if(den0.le.4.5)then
9920 *       POTENTIAL USED is the same as IN 3) (SOFT):
9921 *       U = -.356 * RHO/RHO0 + .303 * (RHO/RHO0)**(7/6)  GEV
9922 *
9923            EXPNT = 1.1666667
9924           acoef = 0.178
9925            GRADX = -acoef * (RXPLUS - RXMINS) 
9926      &     + 0.1515 * (RXPLUS**EXPNT-RXMINS**EXPNT)
9927            GRADY = -acoef * (RYPLUS - RYMINS) 
9928      &     + 0.1515 * (RYPLUS**EXPNT-RYMINS**EXPNT)
9929            GRADZ = -acoef * (RZPLUS - RZMINS) 
9930      &     + 0.1515 * (RZPLUS**EXPNT-RZMINS**EXPNT)
9931        return
9932        endif
9933        if(den0.gt.4.5.and.den0.le.5.1)then
9934 *       U=c1-ef*rho/rho0**2/3
9935        ef=36./1000.
9936            GRADX  = -0.5*ef* (RXPLUS**0.67-RXMINS**0.67)
9937            GRADy  = -0.5*ef* (RyPLUS**0.67-RyMINS**0.67)
9938            GRADz  = -0.5*ef* (RzPLUS**0.67-RzMINS**0.67)
9939            RETURN
9940        endif
9941        if(den0.gt.5.1)then
9942 * U=800*(rho/rho0)**1/3.-Ef*(rho/rho0)**2/3.-c2
9943        ef=36./1000.
9944        cf0=0.8
9945         GRADX  =0.5*cf0*(rxplus**0.333-rxmins**0.333) 
9946      &         -0.5*ef* (RXPLUS**0.67-RXMINS**0.67)
9947         GRADy  =0.5*cf0*(ryplus**0.333-rymins**0.333) 
9948      &         -0.5*ef* (RyPLUS**0.67-RyMINS**0.67)
9949         GRADz  =0.5*cf0*(rzplus**0.333-rzmins**0.333) 
9950      &         -0.5*ef* (RzPLUS**0.67-RzMINS**0.67)
9951            RETURN
9952        endif
9953         END
9954 **********************************
9955 *                                                                      *
9956       SUBROUTINE GRADUK(IX,IY,IZ,GRADXk,GRADYk,GRADZk)
9957 *                                                                      *
9958 *       PURPOSE:     DETERMINE the baryon density gradient for         *
9959 *                    proporgating kaons in a mean field caused by      *
9960 *                    surrounding baryons                               * 
9961 *       VARIABLES:                                                     *
9962 *         IX, IY, IZ          - COORDINATES OF POINT   (INTEGER,INPUT) *
9963 *         GRADXk, GRADYk, GRADZk                       (REAL,OUTPUT)   *
9964 *                                                                      *
9965 **********************************
9966       PARAMETER         (MAXX =    20,  MAXZ =   24)
9967       PARAMETER         (RHO0 = 0.168)
9968 *
9969       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9970      &                  RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
9971      &                  RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
9972 cc      SAVE /DD/
9973       common  /ss/      inout(20)
9974 cc      SAVE /ss/
9975       SAVE   
9976 *
9977       RXPLUS   = RHO(IX+1,IY,  IZ  ) 
9978       RXMINS   = RHO(IX-1,IY,  IZ  ) 
9979       RYPLUS   = RHO(IX,  IY+1,IZ  ) 
9980       RYMINS   = RHO(IX,  IY-1,IZ  ) 
9981       RZPLUS   = RHO(IX,  IY,  IZ+1) 
9982       RZMINS   = RHO(IX,  IY,  IZ-1) 
9983            GRADXk  = (RXPLUS - RXMINS)/2. 
9984            GRADYk  = (RYPLUS - RYMINS)/2.
9985            GRADZk  = (RZPLUS - RZMINS)/2.
9986            RETURN
9987            END
9988 *-----------------------------------------------------------------------
9989       SUBROUTINE GRADUP(IX,IY,IZ,GRADXP,GRADYP,GRADZP)
9990 *                                                                      *
9991 *       PURPOSE:     DETERMINE THE GRADIENT OF THE PROTON DENSITY      *
9992 *       VARIABLES:                                                     *
9993 *                                                                           *
9994 *         IX, IY, IZ          - COORDINATES OF POINT   (INTEGER,INPUT) *
9995 *         GRADXP, GRADYP, GRADZP - GRADIENT OF THE PROTON              *
9996 *                                  DENSITY(REAL,OUTPUT)                *
9997 *                                                                      *
9998 **********************************
9999       PARAMETER         (MAXX =    20,  MAXZ =   24)
10000       PARAMETER         (RHO0 = 0.168)
10001 *
10002       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
10003      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
10004      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
10005 cc      SAVE /DD/
10006       common  /ss/      inout(20)
10007 cc      SAVE /ss/
10008       SAVE   
10009 *
10010       RXPLUS   = RHOP(IX+1,IY,  IZ  ) / RHO0
10011       RXMINS   = RHOP(IX-1,IY,  IZ  ) / RHO0
10012       RYPLUS   = RHOP(IX,  IY+1,IZ  ) / RHO0
10013       RYMINS   = RHOP(IX,  IY-1,IZ  ) / RHO0
10014       RZPLUS   = RHOP(IX,  IY,  IZ+1) / RHO0
10015       RZMINS   = RHOP(IX,  IY,  IZ-1) / RHO0
10016 *-----------------------------------------------------------------------
10017 *
10018            GRADXP  = (RXPLUS - RXMINS)/2. 
10019            GRADYP  = (RYPLUS - RYMINS)/2.
10020            GRADZP  = (RZPLUS - RZMINS)/2.
10021            RETURN
10022       END
10023 *-----------------------------------------------------------------------
10024       SUBROUTINE GRADUN(IX,IY,IZ,GRADXN,GRADYN,GRADZN)
10025 *                                                                      *
10026 *       PURPOSE:     DETERMINE THE GRADIENT OF THE NEUTRON DENSITY     *
10027 *       VARIABLES:                                                     *
10028 *                                                                           *
10029 *         IX, IY, IZ          - COORDINATES OF POINT   (INTEGER,INPUT) *
10030 *         GRADXN, GRADYN, GRADZN - GRADIENT OF THE NEUTRON             *
10031 *                                  DENSITY(REAL,OUTPUT)                *
10032 *                                                                      *
10033 **********************************
10034       PARAMETER         (MAXX =    20,  MAXZ =   24)
10035       PARAMETER         (RHO0 = 0.168)
10036 *
10037       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
10038      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
10039      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
10040 cc      SAVE /DD/
10041       common  /ss/      inout(20)
10042 cc      SAVE /ss/
10043       SAVE   
10044 *
10045       RXPLUS   = RHON(IX+1,IY,  IZ  ) / RHO0
10046       RXMINS   = RHON(IX-1,IY,  IZ  ) / RHO0
10047       RYPLUS   = RHON(IX,  IY+1,IZ  ) / RHO0
10048       RYMINS   = RHON(IX,  IY-1,IZ  ) / RHO0
10049       RZPLUS   = RHON(IX,  IY,  IZ+1) / RHO0
10050       RZMINS   = RHON(IX,  IY,  IZ-1) / RHO0
10051 *-----------------------------------------------------------------------
10052 *
10053            GRADXN  = (RXPLUS - RXMINS)/2. 
10054            GRADYN  = (RYPLUS - RYMINS)/2.
10055            GRADZN  = (RZPLUS - RZMINS)/2.
10056            RETURN
10057       END
10058 
10059 *-----------------------------------------------------------------------------
10060 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
10061 *KITAZOE'S FORMULA
10062         REAL FUNCTION FDE(DMASS,SRT,CON)
10063       SAVE   
10064         AMN=0.938869
10065         AVPI=0.13803333
10066         AM0=1.232
10067         FD=4.*(AM0**2)*WIDTH(DMASS)/((DMASS**2-1.232**2)**2
10068      1  +AM0**2*WIDTH(DMASS)**2)
10069         IF(CON.EQ.1.)THEN
10070         P11=(SRT**2+DMASS**2-AMN**2)**2
10071      1  /(4.*SRT**2)-DMASS**2
10072        if(p11.le.0)p11=1.E-06
10073        p1=sqrt(p11)
10074         ELSE
10075         DMASS=AMN+AVPI
10076         P11=(SRT**2+DMASS**2-AMN**2)**2
10077      1  /(4.*SRT**2)-DMASS**2
10078        if(p11.le.0)p11=1.E-06
10079        p1=sqrt(p11)
10080         ENDIF
10081         FDE=FD*P1*DMASS
10082         RETURN
10083         END
10084 *-------------------------------------------------------------
10085 *FUNCTION FDE(DMASS) GIVES N*(1535) MASS DISTRIBUTION BY USING OF
10086 *KITAZOE'S FORMULA
10087         REAL FUNCTION FD5(DMASS,SRT,CON)
10088       SAVE   
10089         AMN=0.938869
10090         AVPI=0.13803333
10091         AM0=1.535
10092         FD=4.*(AM0**2)*W1535(DMASS)/((DMASS**2-1.535**2)**2
10093      1  +AM0**2*W1535(DMASS)**2)
10094         IF(CON.EQ.1.)THEN
10095 
10096 clin-9/2012: check argument in sqrt():
10097            scheck=(SRT**2+DMASS**2-AMN**2)**2/(4.*SRT**2)-DMASS**2
10098            if(scheck.lt.0) then
10099               write(99,*) 'scheck11: ', scheck
10100               scheck=0.
10101            endif
10102            P1=SQRT(scheck)
10103 c           P1=SQRT((SRT**2+DMASS**2-AMN**2)**2
10104 c     1          /(4.*SRT**2)-DMASS**2)
10105 
10106         ELSE
10107         DMASS=AMN+AVPI
10108 
10109 clin-9/2012: check argument in sqrt():
10110         scheck=(SRT**2+DMASS**2-AMN**2)**2/(4.*SRT**2)-DMASS**2
10111         if(scheck.lt.0) then
10112            write(99,*) 'scheck12: ', scheck
10113            scheck=0.
10114         endif
10115         P1=SQRT(scheck)
10116 c        P1=SQRT((SRT**2+DMASS**2-AMN**2)**2
10117 c     1  /(4.*SRT**2)-DMASS**2)
10118 
10119         ENDIF
10120         FD5=FD*P1*DMASS
10121         RETURN
10122         END
10123 *--------------------------------------------------------------------------
10124 *FUNCTION FNS(DMASS) GIVES N* MASS DISTRIBUTION 
10125 c     BY USING OF BREIT-WIGNER FORMULA
10126         REAL FUNCTION FNS(DMASS,SRT,CON)
10127       SAVE   
10128         WIDTH=0.2
10129         AMN=0.938869
10130         AVPI=0.13803333
10131         AN0=1.43
10132         FN=4.*(AN0**2)*WIDTH/((DMASS**2-1.44**2)**2+AN0**2*WIDTH**2)
10133         IF(CON.EQ.1.)THEN
10134 
10135 clin-9/2012: check argument in sqrt():
10136            scheck=(SRT**2+DMASS**2-AMN**2)**2/(4.*SRT**2)-DMASS**2
10137            if(scheck.lt.0) then
10138               write(99,*) 'scheck13: ', scheck
10139               scheck=0.
10140            endif
10141            P1=SQRT(scheck)
10142 c        P1=SQRT((SRT**2+DMASS**2-AMN**2)**2
10143 c     1  /(4.*SRT**2)-DMASS**2)
10144 
10145         ELSE
10146         DMASS=AMN+AVPI
10147 clin-9/2012: check argument in sqrt():
10148         scheck=(SRT**2+DMASS**2-AMN**2)**2/(4.*SRT**2)-DMASS**2
10149         if(scheck.lt.0) then
10150            write(99,*) 'scheck14: ', scheck
10151            scheck=0.
10152         endif
10153         P1=SQRT(scheck)
10154 c        P1=SQRT((SRT**2+DMASS**2-AMN**2)**2
10155 c     1  /(4.*SRT**2)-DMASS**2)
10156 
10157         ENDIF
10158         FNS=FN*P1*DMASS
10159         RETURN
10160         END
10161 *-----------------------------------------------------------------------------
10162 *-----------------------------------------------------------------------------
10163 * PURPOSE:1. SORT N*(1440) and N*(1535) 2-body DECAY PRODUCTS
10164 *         2. DETERMINE THE MOMENTUM AND COORDINATES OF NUCLEON AND PION
10165 *            AFTER THE DELTA OR N* DECAYING
10166 * DATE   : JAN. 24,1990, MODIFIED ON MAY 17, 1994 TO INCLUDE ETA 
10167         SUBROUTINE DECAY(IRUN,I,NNN,ISEED,wid,nt)
10168         PARAMETER (MAXSTR=150001,MAXR=1,
10169      1  AMN=0.939457,ETAM=0.5475,AMP=0.93828,AP1=0.13496,
10170      2  AP2=0.13957,AM0=1.232,PI=3.1415926)
10171         COMMON /AA/ R(3,MAXSTR)
10172 cc      SAVE /AA/
10173         COMMON /BB/ P(3,MAXSTR)
10174 cc      SAVE /BB/
10175         COMMON /CC/ E(MAXSTR)
10176 cc      SAVE /CC/
10177         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10178 cc      SAVE /EE/
10179         COMMON   /RUN/NUM
10180 cc      SAVE /RUN/
10181         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10182 cc      SAVE /PA/
10183         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10184 cc      SAVE /PB/
10185         COMMON   /PC/EPION(MAXSTR,MAXR)
10186 cc      SAVE /PC/
10187         COMMON   /PD/LPION(MAXSTR,MAXR)
10188 cc      SAVE /PD/
10189         COMMON /INPUT2/ ILAB, MANYB, NTMAX, ICOLL, INSYS, IPOT, MODE, 
10190      &       IMOMEN, NFREQ, ICFLOW, ICRHO, ICOU, KPOTEN, KMUL
10191 cc      SAVE /INPUT2/
10192       COMMON/RNDF77/NSEED
10193       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
10194      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
10195      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
10196 cc      SAVE /RNDF77/
10197       SAVE   
10198         lbanti=LB(I)
10199 c
10200         DM=E(I)
10201 *1. FOR N*+(1440) DECAY
10202         IF(iabs(LB(I)).EQ.11)THEN
10203            X3=RANART(NSEED)
10204            IF(X3.GT.(1./3.))THEN
10205               LB(I)=2
10206               NLAB=2
10207               LPION(NNN,IRUN)=5
10208               EPION(NNN,IRUN)=AP2
10209            ELSE
10210               LB(I)=1
10211               NLAB=1
10212               LPION(NNN,IRUN)=4
10213               EPION(NNN,IRUN)=AP1
10214            ENDIF
10215 *2. FOR N*0(1440) DECAY
10216         ELSEIF(iabs(LB(I)).EQ.10)THEN
10217            X4=RANART(NSEED)
10218            IF(X4.GT.(1./3.))THEN
10219               LB(I)=1
10220               NLAB=1
10221               LPION(NNN,IRUN)=3
10222               EPION(NNN,IRUN)=AP2
10223            ELSE
10224               LB(I)=2
10225               NALB=2
10226               LPION(NNN,IRUN)=4
10227               EPION(NNN,IRUN)=AP1
10228            ENDIF
10229 * N*(1535) CAN DECAY TO A PION OR AN ETA IF DM > 1.49 GeV
10230 *3 N*(0)(1535) DECAY
10231         ELSEIF(iabs(LB(I)).EQ.12)THEN
10232            CTRL=0.65
10233            IF(DM.lE.1.49)ctrl=-1.
10234            X5=RANART(NSEED)
10235            IF(X5.GE.ctrl)THEN
10236 * DECAY TO PION+NUCLEON
10237               X6=RANART(NSEED)
10238               IF(X6.GT.(1./3.))THEN
10239                  LB(I)=1
10240                  NLAB=1
10241                  LPION(NNN,IRUN)=3
10242                  EPION(NNN,IRUN)=AP2
10243               ELSE
10244                  LB(I)=2
10245                  NALB=2
10246                  LPION(NNN,IRUN)=4
10247                  EPION(NNN,IRUN)=AP1
10248               ENDIF
10249            ELSE
10250 * DECAY TO ETA+NEUTRON
10251               LB(I)=2
10252               NLAB=2
10253               LPION(NNN,IRUN)=0
10254               EPION(NNN,IRUN)=ETAM
10255            ENDIF
10256 *4. FOR N*+(1535) DECAY
10257         ELSEIF(iabs(LB(I)).EQ.13)THEN
10258            CTRL=0.65
10259            IF(DM.lE.1.49)ctrl=-1.
10260            X5=RANART(NSEED)
10261            IF(X5.GE.ctrl)THEN
10262 * DECAY TO PION+NUCLEON
10263               X8=RANART(NSEED)
10264               IF(X8.GT.(1./3.))THEN
10265                  LB(I)=2
10266                  NLAB=2
10267                  LPION(NNN,IRUN)=5
10268                  EPION(NNN,IRUN)=AP2
10269               ELSE
10270                  LB(I)=1
10271                  NLAB=1
10272                  LPION(NNN,IRUN)=4
10273                  EPION(NNN,IRUN)=AP1
10274               ENDIF
10275            ELSE
10276 * DECAY TO ETA+NUCLEON
10277               LB(I)=1
10278               NLAB=1
10279               LPION(NNN,IRUN)=0
10280               EPION(NNN,IRUN)=ETAM
10281            ENDIF
10282         ENDIF
10283 c
10284         CALL DKINE(IRUN,I,NNN,NLAB,ISEED,wid,nt)
10285 c
10286 c     anti-particle ID for anti-N* decays:
10287         if(lbanti.lt.0) then
10288            lbi=LB(I)
10289            if(lbi.eq.1.or.lbi.eq.2) then
10290               lbi=-lbi
10291            elseif(lbi.eq.3) then
10292               lbi=5
10293            elseif(lbi.eq.5) then
10294               lbi=3
10295            endif
10296            LB(I)=lbi
10297 c
10298            lbi=LPION(NNN,IRUN)
10299            if(lbi.eq.3) then
10300               lbi=5
10301            elseif(lbi.eq.5) then
10302               lbi=3
10303            elseif(lbi.eq.1.or.lbi.eq.2) then
10304               lbi=-lbi
10305            endif
10306            LPION(NNN,IRUN)=lbi
10307         endif
10308 c
10309         if(nt.eq.ntmax) then
10310 c     at the last timestep, assign rho or eta (decay daughter) 
10311 c     to lb(i1) only (not to lpion) in order to decay them again:
10312            lbm=LPION(NNN,IRUN)
10313            if(lbm.eq.0.or.lbm.eq.25
10314      1          .or.lbm.eq.26.or.lbm.eq.27) then
10315 c     switch rho or eta with baryon, positions are the same (no change needed):
10316               lbsave=lbm
10317               xmsave=EPION(NNN,IRUN)
10318               pxsave=PPION(1,NNN,IRUN)
10319               pysave=PPION(2,NNN,IRUN)
10320               pzsave=PPION(3,NNN,IRUN)
10321 clin-5/2008:
10322               dpsave=dppion(NNN,IRUN)
10323               LPION(NNN,IRUN)=LB(I)
10324               EPION(NNN,IRUN)=E(I)
10325               PPION(1,NNN,IRUN)=P(1,I)
10326               PPION(2,NNN,IRUN)=P(2,I)
10327               PPION(3,NNN,IRUN)=P(3,I)
10328 clin-5/2008:
10329               dppion(NNN,IRUN)=dpertp(I)
10330               LB(I)=lbsave
10331               E(I)=xmsave
10332               P(1,I)=pxsave
10333               P(2,I)=pysave
10334               P(3,I)=pzsave
10335 clin-5/2008:
10336               dpertp(I)=dpsave
10337            endif
10338         endif
10339 
10340        RETURN
10341        END
10342 
10343 *-------------------------------------------------------------------
10344 *-------------------------------------------------------------------
10345 * PURPOSE:
10346 *         CALCULATE THE MOMENTUM OF NUCLEON AND PION (OR ETA) 
10347 *         IN THE LAB. FRAME AFTER DELTA OR N* DECAY
10348 * DATE   : JAN. 24,1990, MODIFIED ON MAY 17, 1994 TO INCLUDE ETA PRODUCTION
10349         SUBROUTINE DKINE(IRUN,I,NNN,NLAB,ISEED,wid,nt)
10350         PARAMETER (hbarc=0.19733)
10351         PARAMETER (MAXSTR=150001,MAXR=1,
10352      1  AMN=0.939457,AMP=0.93828,ETAM=0.5475,
10353      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10354         COMMON /AA/ R(3,MAXSTR)
10355 cc      SAVE /AA/
10356         COMMON /BB/ P(3,MAXSTR)
10357 cc      SAVE /BB/
10358         COMMON /CC/ E(MAXSTR)
10359 cc      SAVE /CC/
10360         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10361 cc      SAVE /EE/
10362         COMMON   /RUN/NUM
10363 cc      SAVE /RUN/
10364         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10365 cc      SAVE /PA/
10366         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10367 cc      SAVE /PB/
10368         COMMON   /PC/EPION(MAXSTR,MAXR)
10369 cc      SAVE /PC/
10370         COMMON   /PD/LPION(MAXSTR,MAXR)
10371 cc      SAVE /PD/
10372       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
10373      1 px1n,py1n,pz1n,dp1n
10374 cc      SAVE /leadng/
10375         COMMON/tdecay/tfdcy(MAXSTR),tfdpi(MAXSTR,MAXR),tft(MAXSTR)
10376 cc      SAVE /tdecay/
10377         COMMON /INPUT2/ ILAB, MANYB, NTMAX, ICOLL, INSYS, IPOT, MODE, 
10378      &       IMOMEN, NFREQ, ICFLOW, ICRHO, ICOU, KPOTEN, KMUL
10379 cc      SAVE /INPUT2/
10380       COMMON/RNDF77/NSEED
10381 cc      SAVE /RNDF77/
10382       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
10383      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
10384      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
10385         EXTERNAL IARFLV, INVFLV
10386       SAVE   
10387 * READ IN THE COORDINATES OF DELTA OR N* UNDERGOING DECAY
10388         PX=P(1,I)
10389         PY=P(2,I)
10390         PZ=P(3,I)
10391         RX=R(1,I)
10392         RY=R(2,I)
10393         RZ=R(3,I)
10394         DM=E(I)
10395         EDELTA=SQRT(DM**2+PX**2+PY**2+PZ**2)
10396         PM=EPION(NNN,IRUN)
10397         AM=AMP
10398         IF(NLAB.EQ.2)AM=AMN
10399 * FIND OUT THE MOMENTUM AND ENERGY OF PION AND NUCLEON IN DELTA REST FRAME
10400 * THE MAGNITUDE OF MOMENTUM IS DETERMINED BY ENERGY CONSERVATION ,THE FORMULA
10401 * CAN BE FOUND ON PAGE 716,W BAUER P.R.C40,1989
10402 * THE DIRECTION OF THE MOMENTUM IS ASSUMED ISOTROPIC. NOTE THAT P(PION)=-P(N)
10403         Q2=((DM**2-AM**2+PM**2)/(2.*DM))**2-PM**2
10404         IF(Q2.LE.0.)Q2=1.e-09
10405         Q=SQRT(Q2)
10406 11      QX=1.-2.*RANART(NSEED)
10407         QY=1.-2.*RANART(NSEED)
10408         QZ=1.-2.*RANART(NSEED)
10409         QS=QX**2+QY**2+QZ**2
10410         IF(QS.GT.1.) GO TO 11
10411         PXP=Q*QX/SQRT(QS)
10412         PYP=Q*QY/SQRT(QS)
10413         PZP=Q*QZ/SQRT(QS)
10414         EP=SQRT(Q**2+PM**2)
10415         PXN=-PXP
10416         PYN=-PYP
10417         PZN=-PZP
10418         EN=SQRT(Q**2+AM**2)
10419 * TRANSFORM INTO THE LAB. FRAME. THE GENERAL LORENTZ TRANSFORMATION CAN
10420 * BE FOUND ON PAGE 34 OF R. HAGEDORN " RELATIVISTIC KINEMATICS"
10421         GD=EDELTA/DM
10422         FGD=GD/(1.+GD)
10423         BDX=PX/EDELTA
10424         BDY=PY/EDELTA
10425         BDZ=PZ/EDELTA
10426         BPP=BDX*PXP+BDY*PYP+BDZ*PZP
10427         BPN=BDX*PXN+BDY*PYN+BDZ*PZN
10428         P(1,I)=PXN+BDX*GD*(FGD*BPN+EN)
10429         P(2,I)=PYN+BDY*GD*(FGD*BPN+EN)
10430         P(3,I)=PZN+BDZ*GD*(FGD*BPN+EN)
10431         E(I)=AM
10432 * WE ASSUME THAT THE SPACIAL COORDINATE OF THE NUCLEON
10433 * IS THAT OF THE DELTA
10434         PPION(1,NNN,IRUN)=PXP+BDX*GD*(FGD*BPP+EP)
10435         PPION(2,NNN,IRUN)=PYP+BDY*GD*(FGD*BPP+EP)
10436         PPION(3,NNN,IRUN)=PZP+BDZ*GD*(FGD*BPP+EP)
10437 clin-5/2008:
10438         dppion(NNN,IRUN)=dpertp(I)
10439 * WE ASSUME THE PION OR ETA COMING FROM DELTA DECAY IS LOCATED ON THE SPHERE
10440 * OF RADIUS 0.5FM AROUND DELTA, THIS POINT NEED TO BE CHECKED 
10441 * AND OTHER CRIERTION MAY BE TRIED
10442 clin-2/20/03 no additional smearing for position of decay daughters:
10443 c200         X0 = 1.0 - 2.0 * RANART(NSEED)
10444 c            Y0 = 1.0 - 2.0 * RANART(NSEED)
10445 c            Z0 = 1.0 - 2.0 * RANART(NSEED)
10446 c        IF ((X0*X0+Y0*Y0+Z0*Z0) .GT. 1.0) GOTO 200
10447 c        RPION(1,NNN,IRUN)=R(1,I)+0.5*x0
10448 c        RPION(2,NNN,IRUN)=R(2,I)+0.5*y0
10449 c        RPION(3,NNN,IRUN)=R(3,I)+0.5*z0
10450         RPION(1,NNN,IRUN)=R(1,I)
10451         RPION(2,NNN,IRUN)=R(2,I)
10452         RPION(3,NNN,IRUN)=R(3,I)
10453 c
10454         devio=SQRT(EPION(NNN,IRUN)**2+PPION(1,NNN,IRUN)**2
10455      1       +PPION(2,NNN,IRUN)**2+PPION(3,NNN,IRUN)**2)
10456      2       +SQRT(E(I)**2+P(1,I)**2+P(2,I)**2+P(3,I)**2)-e1
10457 c        if(abs(devio).gt.0.02) write(93,*) 'decay(): nt=',nt,devio,lb1
10458 
10459 c     add decay time to daughter's formation time at the last timestep:
10460         if(nt.eq.ntmax) then
10461            tau0=hbarc/wid
10462            taudcy=tau0*(-1.)*alog(1.-RANART(NSEED))
10463 c     lorentz boost:
10464            taudcy=taudcy*e1/em1
10465            tfnl=tfnl+taudcy
10466            xfnl=xfnl+px1/e1*taudcy
10467            yfnl=yfnl+py1/e1*taudcy
10468            zfnl=zfnl+pz1/e1*taudcy
10469            R(1,I)=xfnl
10470            R(2,I)=yfnl
10471            R(3,I)=zfnl
10472            tfdcy(I)=tfnl
10473            RPION(1,NNN,IRUN)=xfnl
10474            RPION(2,NNN,IRUN)=yfnl
10475            RPION(3,NNN,IRUN)=zfnl
10476            tfdpi(NNN,IRUN)=tfnl
10477         endif
10478 
10479 cms 200    format(a30,2(1x,e10.4))
10480 cms 210    format(i6,5(1x,f8.3))
10481 cms 220    format(a2,i5,5(1x,f8.3))
10482 
10483         RETURN
10484         END
10485 
10486 *-----------------------------------------------------------------------------
10487 *-----------------------------------------------------------------------------
10488 * PURPOSE:1. N*-->N+PION+PION  DECAY PRODUCTS
10489 *         2. DETERMINE THE MOMENTUM AND COORDINATES OF NUCLEON AND PION
10490 *            AFTER THE DELTA OR N* DECAYING
10491 * DATE   : NOV.7,1994
10492 *----------------------------------------------------------------------------
10493         SUBROUTINE DECAY2(IRUN,I,NNN,ISEED,wid,nt)
10494         PARAMETER (MAXSTR=150001,MAXR=1,
10495      1  AMN=0.939457,ETAM=0.5475,AMP=0.93828,AP1=0.13496,
10496      2  AP2=0.13957,AM0=1.232,PI=3.1415926)
10497         COMMON /AA/ R(3,MAXSTR)
10498 cc      SAVE /AA/
10499         COMMON /BB/ P(3,MAXSTR)
10500 cc      SAVE /BB/
10501         COMMON /CC/ E(MAXSTR)
10502 cc      SAVE /CC/
10503         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10504 cc      SAVE /EE/
10505         COMMON   /RUN/NUM
10506 cc      SAVE /RUN/
10507         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10508 cc      SAVE /PA/
10509         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10510 cc      SAVE /PB/
10511         COMMON   /PC/EPION(MAXSTR,MAXR)
10512 cc      SAVE /PC/
10513         COMMON   /PD/LPION(MAXSTR,MAXR)
10514 cc      SAVE /PD/
10515       COMMON/RNDF77/NSEED
10516 cc      SAVE /RNDF77/
10517       SAVE   
10518 
10519         lbanti=LB(I)
10520 c
10521         DM=E(I)
10522 * DETERMINE THE DECAY PRODUCTS
10523 * FOR N*+(1440) DECAY
10524         IF(iabs(LB(I)).EQ.11)THEN
10525            X3=RANART(NSEED)
10526            IF(X3.LT.(1./3))THEN
10527               LB(I)=2
10528               NLAB=2
10529               LPION(NNN,IRUN)=5
10530               EPION(NNN,IRUN)=AP2
10531               LPION(NNN+1,IRUN)=4
10532               EPION(NNN+1,IRUN)=AP1
10533            ELSEIF(X3.LT.2./3.AND.X3.GT.1./3.)THEN
10534               LB(I)=1
10535               NLAB=1
10536               LPION(NNN,IRUN)=5
10537               EPION(NNN,IRUN)=AP2
10538               LPION(NNN+1,IRUN)=3
10539               EPION(NNN+1,IRUN)=AP2
10540            ELSE
10541               LB(I)=1
10542               NLAB=1
10543               LPION(NNN,IRUN)=4
10544               EPION(NNN,IRUN)=AP1
10545               LPION(NNN+1,IRUN)=4
10546               EPION(NNN+1,IRUN)=AP1
10547            ENDIF
10548 * FOR N*0(1440) DECAY
10549         ELSEIF(iabs(LB(I)).EQ.10)THEN
10550            X3=RANART(NSEED)
10551            IF(X3.LT.(1./3))THEN
10552               LB(I)=2
10553               NLAB=2
10554               LPION(NNN,IRUN)=4
10555               EPION(NNN,IRUN)=AP1
10556               LPION(NNN+1,IRUN)=4
10557               EPION(NNN+1,IRUN)=AP1
10558            ELSEIF(X3.LT.2./3.AND.X3.GT.1./3.)THEN
10559               LB(I)=1
10560               NLAB=1
10561               LPION(NNN,IRUN)=3
10562               EPION(NNN,IRUN)=AP2
10563               LPION(NNN+1,IRUN)=4
10564               EPION(NNN+1,IRUN)=AP1
10565            ELSE
10566               LB(I)=2
10567               NLAB=2
10568               LPION(NNN,IRUN)=5
10569               EPION(NNN,IRUN)=AP2
10570               LPION(NNN+1,IRUN)=3
10571               EPION(NNN+1,IRUN)=AP2
10572            ENDIF
10573         ENDIF
10574 
10575         CALL DKINE2(IRUN,I,NNN,NLAB,ISEED,wid,nt)
10576 c
10577 c     anti-particle ID for anti-N* decays:
10578         if(lbanti.lt.0) then
10579            lbi=LB(I)
10580            if(lbi.eq.1.or.lbi.eq.2) then
10581               lbi=-lbi
10582            elseif(lbi.eq.3) then
10583               lbi=5
10584            elseif(lbi.eq.5) then
10585               lbi=3
10586            endif
10587            LB(I)=lbi
10588 c
10589            lbi=LPION(NNN,IRUN)
10590            if(lbi.eq.3) then
10591               lbi=5
10592            elseif(lbi.eq.5) then
10593               lbi=3
10594            elseif(lbi.eq.1.or.lbi.eq.2) then
10595               lbi=-lbi
10596            endif
10597            LPION(NNN,IRUN)=lbi
10598 c
10599            lbi=LPION(NNN+1,IRUN)
10600            if(lbi.eq.3) then
10601               lbi=5
10602            elseif(lbi.eq.5) then
10603               lbi=3
10604            elseif(lbi.eq.1.or.lbi.eq.2) then
10605               lbi=-lbi
10606            endif
10607            LPION(NNN+1,IRUN)=lbi
10608         endif
10609 c
10610        RETURN
10611        END
10612 *-------------------------------------------------------------------
10613 *--------------------------------------------------------------------------
10614 *         CALCULATE THE MOMENTUM OF NUCLEON AND PION (OR ETA) 
10615 *         IN THE LAB. FRAME AFTER DELTA OR N* DECAY
10616 * DATE   : JAN. 24,1990, MODIFIED ON MAY 17, 1994 TO INCLUDE ETA PRODUCTION
10617 *--------------------------------------------------------------------------
10618         SUBROUTINE DKINE2(IRUN,I,NNN,NLAB,ISEED,wid,nt)
10619         PARAMETER (hbarc=0.19733)
10620         PARAMETER (MAXSTR=150001,MAXR=1,
10621      1  AMN=0.939457,AMP=0.93828,ETAM=0.5475,
10622      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10623         COMMON /AA/ R(3,MAXSTR)
10624 cc      SAVE /AA/
10625         COMMON /BB/ P(3,MAXSTR)
10626 cc      SAVE /BB/
10627         COMMON /CC/ E(MAXSTR)
10628 cc      SAVE /CC/
10629         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10630 cc      SAVE /EE/
10631         COMMON   /RUN/NUM
10632 cc      SAVE /RUN/
10633         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10634 cc      SAVE /PA/
10635         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10636 cc      SAVE /PB/
10637         COMMON   /PC/EPION(MAXSTR,MAXR)
10638 cc      SAVE /PC/
10639         COMMON   /PD/LPION(MAXSTR,MAXR)
10640 cc      SAVE /PD/
10641       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
10642      1 px1n,py1n,pz1n,dp1n
10643 cc      SAVE /leadng/
10644         COMMON/tdecay/tfdcy(MAXSTR),tfdpi(MAXSTR,MAXR),tft(MAXSTR)
10645 cc      SAVE /tdecay/
10646         COMMON /INPUT2/ ILAB, MANYB, NTMAX, ICOLL, INSYS, IPOT, MODE, 
10647      &       IMOMEN, NFREQ, ICFLOW, ICRHO, ICOU, KPOTEN, KMUL
10648 cc      SAVE /INPUT2/
10649         EXTERNAL IARFLV, INVFLV
10650       COMMON/RNDF77/NSEED
10651 cc      SAVE /RNDF77/
10652       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
10653      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
10654      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
10655       SAVE   
10656 
10657 * READ IN THE COORDINATES OF THE N*(1440) UNDERGOING DECAY
10658         PX=P(1,I)
10659         PY=P(2,I)
10660         PZ=P(3,I)
10661         RX=R(1,I)
10662         RY=R(2,I)
10663         RZ=R(3,I)
10664         DM=E(I)
10665         EDELTA=SQRT(DM**2+PX**2+PY**2+PZ**2)
10666         PM1=EPION(NNN,IRUN)
10667         PM2=EPION(NNN+1,IRUN)
10668         AM=AMN
10669        IF(NLAB.EQ.1)AM=AMP
10670 * THE MAXIMUM MOMENTUM OF THE NUCLEON FROM THE DECAY OF A N*
10671        PMAX2=(DM**2-(AM+PM1+PM2)**2)*(DM**2-(AM-PM1-PM2)**2)/4/DM**2
10672 
10673 clin-9/2012: check argument in sqrt():
10674        scheck=PMAX2
10675        if(scheck.lt.0) then
10676           write(99,*) 'scheck15: ', scheck
10677           scheck=0.
10678        endif
10679        PMAX=SQRT(scheck)
10680 c       PMAX=SQRT(PMAX2)
10681 
10682 * GENERATE THE MOMENTUM OF THE NUCLEON IN THE N* REST FRAME
10683        CSS=1.-2.*RANART(NSEED)
10684        SSS=SQRT(1-CSS**2)
10685        FAI=2*PI*RANART(NSEED)
10686        PX0=PMAX*SSS*COS(FAI)
10687        PY0=PMAX*SSS*SIN(FAI)
10688        PZ0=PMAX*CSS
10689        EP0=SQRT(PX0**2+PY0**2+PZ0**2+AM**2)
10690 clin-5/23/01 bug: P0 for pion0 is equal to PMAX, leaving pion+ and pion- 
10691 c     without no relative momentum, thus producing them with equal momenta, 
10692 * BETA AND GAMMA OF THE CMS OF PION+-PION-
10693        BETAX=-PX0/(DM-EP0)
10694        BETAY=-PY0/(DM-EP0)
10695        BETAZ=-PZ0/(DM-EP0)
10696 
10697 clin-9/2012: check argument in sqrt():
10698        scheck=1-BETAX**2-BETAY**2-BETAZ**2
10699        if(scheck.le.0) then
10700           write(99,*) 'scheck16: ', scheck
10701           stop
10702        endif
10703        GD1=1./SQRT(scheck)
10704 c       GD1=1./SQRT(1-BETAX**2-BETAY**2-BETAZ**2)
10705 
10706        FGD1=GD1/(1+GD1)
10707 * GENERATE THE MOMENTA OF PIONS IN THE CMS OF PION+PION-
10708         Q2=((DM-EP0)/(2.*GD1))**2-PM1**2
10709         IF(Q2.LE.0.)Q2=1.E-09
10710         Q=SQRT(Q2)
10711 11      QX=1.-2.*RANART(NSEED)
10712         QY=1.-2.*RANART(NSEED)
10713         QZ=1.-2.*RANART(NSEED)
10714         QS=QX**2+QY**2+QZ**2
10715         IF(QS.GT.1.) GO TO 11
10716         PXP=Q*QX/SQRT(QS)
10717         PYP=Q*QY/SQRT(QS)
10718         PZP=Q*QZ/SQRT(QS)
10719         EP=SQRT(Q**2+PM1**2)
10720         PXN=-PXP
10721         PYN=-PYP
10722         PZN=-PZP
10723         EN=SQRT(Q**2+PM2**2)
10724 * TRANSFORM THE MOMENTA OF PION+PION- INTO THE N* REST FRAME
10725         BPP1=BETAX*PXP+BETAY*PYP+BETAZ*PZP
10726         BPN1=BETAX*PXN+BETAY*PYN+BETAZ*PZN
10727 * FOR PION-
10728         P1M=PXN+BETAX*GD1*(FGD1*BPN1+EN)
10729         P2M=PYN+BETAY*GD1*(FGD1*BPN1+EN)
10730         P3M=PZN+BETAZ*GD1*(FGD1*BPN1+EN)
10731        EPN=SQRT(P1M**2+P2M**2+P3M**2+PM2**2)
10732 * FOR PION+
10733         P1P=PXP+BETAX*GD1*(FGD1*BPP1+EP)
10734         P2P=PYP+BETAY*GD1*(FGD1*BPP1+EP)
10735         P3P=PZP+BETAZ*GD1*(FGD1*BPP1+EP)
10736        EPP=SQRT(P1P**2+P2P**2+P3P**2+PM1**2)
10737 * TRANSFORM MOMENTA OF THE THREE PIONS INTO THE 
10738 * THE NUCLEUS-NUCLEUS CENTER OF MASS  FRAME. 
10739 * THE GENERAL LORENTZ TRANSFORMATION CAN
10740 * BE FOUND ON PAGE 34 OF R. HAGEDORN " RELATIVISTIC KINEMATICS"
10741         GD=EDELTA/DM
10742         FGD=GD/(1.+GD)
10743         BDX=PX/EDELTA
10744         BDY=PY/EDELTA
10745         BDZ=PZ/EDELTA
10746        BP0=BDX*PX0+BDY*PY0+BDZ*PZ0
10747         BPP=BDX*P1P+BDY*P2P+BDZ*P3P
10748         BPN=BDX*P1M+BDY*P2M+BDZ*P3M
10749 * FOR THE NUCLEON
10750         P(1,I)=PX0+BDX*GD*(FGD*BP0+EP0)
10751         P(2,I)=PY0+BDY*GD*(FGD*BP0+EP0)
10752         P(3,I)=PZ0+BDZ*GD*(FGD*BP0+EP0)
10753        E(I)=am
10754        ID(I)=0
10755        enucl=sqrt(p(1,i)**2+p(2,i)**2+p(3,i)**2+e(i)**2)
10756 * WE ASSUME THAT THE SPACIAL COORDINATE OF THE PION0
10757 * IS in a sphere of radius 0.5 fm around N*
10758 * FOR PION+
10759         PPION(1,NNN,IRUN)=P1P+BDX*GD*(FGD*BPP+EPP)
10760         PPION(2,NNN,IRUN)=P2P+BDY*GD*(FGD*BPP+EPP)
10761         PPION(3,NNN,IRUN)=P3P+BDZ*GD*(FGD*BPP+EPP)
10762        epion1=sqrt(ppion(1,nnn,irun)**2
10763      &  +ppion(2,nnn,irun)**2+ppion(3,nnn,irun)**2
10764      &  +epion(nnn,irun)**2)
10765 clin-2/20/03 no additional smearing for position of decay daughters:
10766 c200         X0 = 1.0 - 2.0 * RANART(NSEED)
10767 c            Y0 = 1.0 - 2.0 * RANART(NSEED)
10768 c            Z0 = 1.0 - 2.0 * RANART(NSEED)
10769 c        IF ((X0*X0+Y0*Y0+Z0*Z0) .GT. 1.0) GOTO 200
10770 c        RPION(1,NNN,IRUN)=R(1,I)+0.5*x0
10771 c        RPION(2,NNN,IRUN)=R(2,I)+0.5*y0
10772 c        RPION(3,NNN,IRUN)=R(3,I)+0.5*z0
10773         RPION(1,NNN,IRUN)=R(1,I)
10774         RPION(2,NNN,IRUN)=R(2,I)
10775         RPION(3,NNN,IRUN)=R(3,I)
10776 * FOR PION-
10777         PPION(1,NNN+1,IRUN)=P1M+BDX*GD*(FGD*BPN+EPN)
10778         PPION(2,NNN+1,IRUN)=P2M+BDY*GD*(FGD*BPN+EPN)
10779         PPION(3,NNN+1,IRUN)=P3M+BDZ*GD*(FGD*BPN+EPN)
10780 clin-5/2008:
10781         dppion(NNN,IRUN)=dpertp(I)
10782         dppion(NNN+1,IRUN)=dpertp(I)
10783 c
10784        epion2=sqrt(ppion(1,nnn+1,irun)**2
10785      &  +ppion(2,nnn+1,irun)**2+ppion(3,nnn+1,irun)**2
10786      &  +epion(nnn+1,irun)**2)
10787 clin-2/20/03 no additional smearing for position of decay daughters:
10788 c300         X0 = 1.0 - 2.0 * RANART(NSEED)
10789 c            Y0 = 1.0 - 2.0 * RANART(NSEED)
10790 c            Z0 = 1.0 - 2.0 * RANART(NSEED)
10791 c        IF ((X0*X0+Y0*Y0+Z0*Z0) .GT. 1.0) GOTO 300
10792 c        RPION(1,NNN+1,IRUN)=R(1,I)+0.5*x0
10793 c        RPION(2,NNN+1,IRUN)=R(2,I)+0.5*y0
10794 c        RPION(3,NNN+1,IRUN)=R(3,I)+0.5*z0
10795         RPION(1,NNN+1,IRUN)=R(1,I)
10796         RPION(2,NNN+1,IRUN)=R(2,I)
10797         RPION(3,NNN+1,IRUN)=R(3,I)
10798 c
10799 * check energy conservation in the decay
10800 c       efinal=enucl+epion1+epion2
10801 c       DEEE=(EDELTA-EFINAL)/EDELTA
10802 c       IF(ABS(DEEE).GE.1.E-03)write(6,*)1,edelta,efinal
10803 
10804         devio=SQRT(EPION(NNN,IRUN)**2+PPION(1,NNN,IRUN)**2
10805      1       +PPION(2,NNN,IRUN)**2+PPION(3,NNN,IRUN)**2)
10806      2       +SQRT(E(I)**2+P(1,I)**2+P(2,I)**2+P(3,I)**2)
10807      3       +SQRT(EPION(NNN+1,IRUN)**2+PPION(1,NNN+1,IRUN)**2
10808      4       +PPION(2,NNN+1,IRUN)**2+PPION(3,NNN+1,IRUN)**2)-e1
10809 c        if(abs(devio).gt.0.02) write(93,*) 'decay2(): nt=',nt,devio,lb1
10810 
10811 c     add decay time to daughter's formation time at the last timestep:
10812         if(nt.eq.ntmax) then
10813            tau0=hbarc/wid
10814            taudcy=tau0*(-1.)*alog(1.-RANART(NSEED))
10815 c     lorentz boost:
10816            taudcy=taudcy*e1/em1
10817            tfnl=tfnl+taudcy
10818            xfnl=xfnl+px1/e1*taudcy
10819            yfnl=yfnl+py1/e1*taudcy
10820            zfnl=zfnl+pz1/e1*taudcy
10821            R(1,I)=xfnl
10822            R(2,I)=yfnl
10823            R(3,I)=zfnl
10824            tfdcy(I)=tfnl
10825            RPION(1,NNN,IRUN)=xfnl
10826            RPION(2,NNN,IRUN)=yfnl
10827            RPION(3,NNN,IRUN)=zfnl
10828            tfdpi(NNN,IRUN)=tfnl
10829            RPION(1,NNN+1,IRUN)=xfnl
10830            RPION(2,NNN+1,IRUN)=yfnl
10831            RPION(3,NNN+1,IRUN)=zfnl
10832            tfdpi(NNN+1,IRUN)=tfnl
10833         endif
10834 
10835 cms 200    format(a30,2(1x,e10.4))
10836 cms 210    format(i6,5(1x,f8.3))
10837 cms 220    format(a2,i5,5(1x,f8.3))
10838 
10839         RETURN
10840         END
10841 *---------------------------------------------------------------------------
10842 *---------------------------------------------------------------------------
10843 * PURPOSE : CALCULATE THE MASS AND MOMENTUM OF BARYON RESONANCE 
10844 *           AFTER PION OR ETA BEING ABSORBED BY A NUCLEON
10845 * NOTE    : 
10846 *           
10847 * DATE    : JAN.29,1990
10848         SUBROUTINE DRESON(I1,I2)
10849         PARAMETER (MAXSTR=150001,MAXR=1,
10850      1  AMN=0.939457,AMP=0.93828,
10851      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10852 clin-9/2012: improve precision for argument in sqrt():
10853         double precision e10,e20,scheck,p1,p2,p3
10854         COMMON /AA/ R(3,MAXSTR)
10855 cc      SAVE /AA/
10856         COMMON /BB/ P(3,MAXSTR)
10857 cc      SAVE /BB/
10858         COMMON /CC/ E(MAXSTR)
10859 cc      SAVE /CC/
10860         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10861 cc      SAVE /EE/
10862         COMMON   /RUN/NUM
10863 cc      SAVE /RUN/
10864         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10865 cc      SAVE /PA/
10866         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10867 cc      SAVE /PB/
10868         COMMON   /PC/EPION(MAXSTR,MAXR)
10869 cc      SAVE /PC/
10870         COMMON   /PD/LPION(MAXSTR,MAXR)
10871 cc      SAVE /PD/
10872       SAVE   
10873 * 1. DETERMINE THE MOMENTUM COMPONENT OF DELTA/N* IN THE LAB. FRAME
10874 clin-9/2012: improve precision for argument in sqrt():
10875 c        E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
10876 c        E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
10877         E10=dSQRT(dble(E(I1))**2+dble(P(1,I1))**2
10878      1     +dble(P(2,I1))**2+dble(P(3,I1))**2)
10879         E20=dSQRT(dble(E(I2))**2+dble(P(1,I2))**2
10880      1       +dble(P(2,I2))**2+dble(P(3,I2))**2)
10881         p1=dble(P(1,I1))+dble(P(1,I2))
10882         p2=dble(P(2,I1))+dble(P(2,I2))
10883         p3=dble(P(3,I1))+dble(P(3,I2))
10884 
10885         IF(iabs(LB(I2)) .EQ. 1 .OR. iabs(LB(I2)) .EQ. 2 .OR.
10886      &     (iabs(LB(I2)) .GE. 6 .AND. iabs(LB(I2)) .LE. 17)) THEN
10887         E(I1)=0.
10888         I=I2
10889         ELSE
10890         E(I2)=0.
10891         I=I1
10892         ENDIF
10893         P(1,I)=P(1,I1)+P(1,I2)
10894         P(2,I)=P(2,I1)+P(2,I2)
10895         P(3,I)=P(3,I1)+P(3,I2)
10896 * 2. DETERMINE THE MASS OF DELTA/N* BY USING THE REACTION KINEMATICS
10897 
10898 clin-9/2012: check argument in sqrt():
10899         scheck=(E10+E20)**2-p1**2-p2**2-p3**2
10900         if(scheck.lt.0) then
10901            write(99,*) 'scheck17: ', scheck
10902            write(99,*) 'scheck17', scheck,E10,E20,P(1,I),P(2,I),P(3,I)
10903            write(99,*) 'scheck17-1',E(I1),P(1,I1),P(2,I1),P(3,I1)
10904            write(99,*) 'scheck17-2',E(I2),P(1,I2),P(2,I2),P(3,I2)
10905            scheck=0.d0
10906         endif
10907         DM=SQRT(sngl(scheck))
10908 c        DM=SQRT((E10+E20)**2-P(1,I)**2-P(2,I)**2-P(3,I)**2)
10909 
10910         E(I)=DM
10911         RETURN
10912         END
10913 *---------------------------------------------------------------------------
10914 * PURPOSE : CALCULATE THE MASS AND MOMENTUM OF RHO RESONANCE 
10915 *           AFTER PION + PION COLLISION
10916 * DATE    : NOV. 30,1994
10917         SUBROUTINE RHORES(I1,I2)
10918         PARAMETER (MAXSTR=150001,MAXR=1,
10919      1  AMN=0.939457,AMP=0.93828,
10920      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10921 clin-9/2012: improve precision for argument in sqrt():
10922         double precision e10,e20,scheck,p1,p2,p3
10923         COMMON /AA/ R(3,MAXSTR)
10924 cc      SAVE /AA/
10925         COMMON /BB/ P(3,MAXSTR)
10926 cc      SAVE /BB/
10927         COMMON /CC/ E(MAXSTR)
10928 cc      SAVE /CC/
10929         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10930 cc      SAVE /EE/
10931         COMMON   /RUN/NUM
10932 cc      SAVE /RUN/
10933         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10934 cc      SAVE /PA/
10935         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10936 cc      SAVE /PB/
10937         COMMON   /PC/EPION(MAXSTR,MAXR)
10938 cc      SAVE /PC/
10939         COMMON   /PD/LPION(MAXSTR,MAXR)
10940 cc      SAVE /PD/
10941       SAVE   
10942 * 1. DETERMINE THE MOMENTUM COMPONENT OF THE RHO IN THE CMS OF NN FRAME
10943 *    WE LET I1 TO BE THE RHO AND ABSORB I2
10944 clin-9/2012: improve precision for argument in sqrt():
10945 c        E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
10946 c        E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
10947         E10=dSQRT(dble(E(I1))**2+dble(P(1,I1))**2
10948      1     +dble(P(2,I1))**2+dble(P(3,I1))**2)
10949         E20=dSQRT(dble(E(I2))**2+dble(P(1,I2))**2
10950      1       +dble(P(2,I2))**2+dble(P(3,I2))**2)
10951         p1=dble(P(1,I1))+dble(P(1,I2))
10952         p2=dble(P(2,I1))+dble(P(2,I2))
10953         p3=dble(P(3,I1))+dble(P(3,I2))
10954 
10955         P(1,I1)=P(1,I1)+P(1,I2)
10956         P(2,I1)=P(2,I1)+P(2,I2)
10957         P(3,I1)=P(3,I1)+P(3,I2)
10958 * 2. DETERMINE THE MASS OF THE RHO BY USING THE REACTION KINEMATICS
10959 
10960 clin-9/2012: check argument in sqrt():
10961         scheck=(E10+E20)**2-p1**2-p2**2-p3**2
10962         if(scheck.lt.0) then
10963            write(99,*) 'scheck18: ', scheck
10964            scheck=0.d0
10965         endif
10966         DM=SQRT(sngl(scheck))
10967 c        DM=SQRT((E10+E20)**2-P(1,I1)**2-P(2,I1)**2-P(3,I1)**2)
10968 
10969         E(I1)=DM
10970        E(I2)=0
10971         RETURN
10972         END
10973 *---------------------------------------------------------------------------
10974 * PURPOSE : CALCULATE THE PION+NUCLEON CROSS SECTION ACCORDING TO THE
10975 *           BREIT-WIGNER FORMULA/(p*)**2
10976 * VARIABLE : LA = 1 FOR DELTA RESONANCE
10977 *            LA = 0 FOR N*(1440) RESONANCE
10978 *            LA = 2 FRO N*(1535) RESONANCE
10979 * DATE    : JAN.29,1990
10980         REAL FUNCTION XNPI(I1,I2,LA,XMAX)
10981         PARAMETER (MAXSTR=150001,MAXR=1,
10982      1  AMN=0.939457,AMP=0.93828,
10983      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
10984 clin-9/2012: improve precision for argument in sqrt():
10985         double precision e10,e20,scheck,p1,p2,p3
10986         COMMON /AA/ R(3,MAXSTR)
10987 cc      SAVE /AA/
10988         COMMON /BB/ P(3,MAXSTR)
10989 cc      SAVE /BB/
10990         COMMON /CC/ E(MAXSTR)
10991 cc      SAVE /CC/
10992         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
10993 cc      SAVE /EE/
10994         COMMON   /RUN/NUM
10995 cc      SAVE /RUN/
10996         COMMON   /PA/RPION(3,MAXSTR,MAXR)
10997 cc      SAVE /PA/
10998         COMMON   /PB/PPION(3,MAXSTR,MAXR)
10999 cc      SAVE /PB/
11000         COMMON   /PC/EPION(MAXSTR,MAXR)
11001 cc      SAVE /PC/
11002         COMMON   /PD/LPION(MAXSTR,MAXR)
11003 cc      SAVE /PD/
11004       SAVE   
11005         AVMASS=0.5*(AMN+AMP)
11006         AVPI=(2.*AP2+AP1)/3.
11007 * 1. DETERMINE THE MOMENTUM COMPONENT OF DELTA IN THE LAB. FRAME
11008 clin-9/2012: improve precision for argument in sqrt():
11009 c        E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
11010 c        E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
11011         E10=dSQRT(dble(E(I1))**2+dble(P(1,I1))**2
11012      1     +dble(P(2,I1))**2+dble(P(3,I1))**2)
11013         E20=dSQRT(dble(E(I2))**2+dble(P(1,I2))**2
11014      1       +dble(P(2,I2))**2+dble(P(3,I2))**2)
11015 c        P1=P(1,I1)+P(1,I2)
11016 c        P2=P(2,I1)+P(2,I2)
11017 c        P3=P(3,I1)+P(3,I2)
11018         p1=dble(P(1,I1))+dble(P(1,I2))
11019         p2=dble(P(2,I1))+dble(P(2,I2))
11020         p3=dble(P(3,I1))+dble(P(3,I2))
11021 
11022 * 2. DETERMINE THE MASS OF DELTA BY USING OF THE REACTION KINEMATICS
11023 
11024 clin-9/2012: check argument in sqrt():
11025         scheck=(E10+E20)**2-p1**2-p2**2-p3**2
11026         if(scheck.lt.0) then
11027            write(99,*) 'scheck19: ', scheck
11028            scheck=0.d0
11029         endif
11030         DM=SQRT(sngl(scheck))
11031 c        DM=SQRT((E10+E20)**2-P1**2-P2**2-P3**2)
11032 
11033         IF(DM.LE.1.1) THEN
11034         XNPI=1.e-09
11035         RETURN
11036         ENDIF
11037 * 3. DETERMINE THE PION+NUCLEON CROSS SECTION ACCORDING TO THE
11038 *    BREIT-WIGNER FORMULA IN UNIT OF FM**2
11039         IF(LA.EQ.1)THEN
11040         GAM=WIDTH(DM)
11041         F1=0.25*GAM**2/(0.25*GAM**2+(DM-1.232)**2)
11042         PDELT2=0.051622
11043         GO TO 10
11044        ENDIF
11045        IF(LA.EQ.0)THEN
11046         GAM=W1440(DM)
11047         F1=0.25*GAM**2/(0.25*GAM**2+(DM-1.440)**2)
11048         PDELT2=0.157897
11049        GO TO 10
11050         ENDIF
11051        IF(LA.EQ.2)THEN
11052         GAM=W1535(DM)
11053         F1=0.25*GAM**2/(0.25*GAM**2+(DM-1.535)**2)
11054         PDELT2=0.2181
11055         ENDIF
11056 10      PSTAR2=((DM**2-AVMASS**2+AVPI**2)/(2.*DM))**2-AVPI**2
11057         IF(PSTAR2.LE.0.)THEN
11058         XNPI=1.e-09
11059         ELSE
11060 * give the cross section in unit of fm**2
11061         XNPI=F1*(PDELT2/PSTAR2)*XMAX/10.
11062         ENDIF
11063         RETURN
11064         END
11065 *------------------------------------------------------------------------------
11066 *****************************************
11067         REAL FUNCTION SIGMA(SRT,ID,IOI,IOF)
11068 *PURPOSE : THIS IS THE PROGRAM TO CALCULATE THE ISOSPIN DECOMPOSED CROSS
11069 *       SECTION BY USING OF B.J.VerWEST AND R.A.ARNDT'S PARAMETERIZATION
11070 *REFERENCE: PHYS. REV. C25(1982)1979
11071 *QUANTITIES: IOI -- INITIAL ISOSPIN OF THE TWO NUCLEON SYSTEM
11072 *            IOF -- FINAL   ISOSPIN -------------------------
11073 *            ID -- =1 FOR DELTA RESORANCE
11074 *                  =2 FOR N*    RESORANCE
11075 *DATE : MAY 15,1990
11076 *****************************************
11077         PARAMETER (AMU=0.9383,AMP=0.1384,PI=3.1415926,HC=0.19733)
11078       SAVE   
11079         IF(ID.EQ.1)THEN
11080         AMASS0=1.22
11081         T0 =0.12
11082         ELSE
11083         AMASS0=1.43
11084         T0 =0.2
11085         ENDIF
11086         IF((IOI.EQ.1).AND.(IOF.EQ.1))THEN
11087         ALFA=3.772
11088         BETA=1.262
11089         AM0=1.188
11090         T=0.09902
11091         ENDIF
11092         IF((IOI.EQ.1).AND.(IOF.EQ.0))THEN
11093         ALFA=15.28
11094         BETA=0.
11095         AM0=1.245
11096         T=0.1374
11097         ENDIF
11098         IF((IOI.EQ.0).AND.(IOF.EQ.1))THEN
11099         ALFA=146.3
11100         BETA=0.
11101         AM0=1.472
11102         T=0.02649
11103         ENDIF
11104         ZPLUS=(SRT-AMU-AMASS0)*2./T0
11105         ZMINUS=(AMU+AMP-AMASS0)*2./T0
11106         deln=ATAN(ZPLUS)-ATAN(ZMINUS)
11107        if(deln.eq.0)deln=1.E-06
11108         AMASS=AMASS0+(T0/4.)*ALOG((1.+ZPLUS**2)/(1.+ZMINUS**2))
11109      1  /deln
11110         S=SRT**2
11111         P2=S/4.-AMU**2
11112         S0=(AMU+AM0)**2
11113         P02=S0/4.-AMU**2
11114         P0=SQRT(P02)
11115         PR2=(S-(AMU-AMASS)**2)*(S-(AMU+AMASS)**2)/(4.*S)
11116         IF(PR2.GT.1.E-06)THEN
11117         PR=SQRT(PR2)
11118         ELSE
11119         PR=0.
11120         SIGMA=1.E-06
11121         RETURN
11122         ENDIF
11123         SS=AMASS**2
11124         Q2=(SS-(AMU-AMP)**2)*(SS-(AMU+AMP)**2)/(4.*SS)
11125         IF(Q2.GT.1.E-06)THEN
11126         Q=SQRT(Q2)
11127         ELSE
11128         Q=0.
11129         SIGMA=1.E-06
11130         RETURN
11131         ENDIF
11132         SS0=AM0**2
11133         Q02=(SS0-(AMU-AMP)**2)*(SS0-(AMU+AMP)**2)/(4.*SS0)
11134 
11135 clin-9/2012: check argument in sqrt():
11136         scheck=Q02
11137         if(scheck.lt.0) then
11138            write(99,*) 'scheck20: ', scheck
11139            scheck=0.
11140         endif
11141         Q0=SQRT(scheck)
11142 c        Q0=SQRT(Q02)
11143 
11144         SIGMA=PI*(HC)**2/(2.*P2)*ALFA*(PR/P0)**BETA*AM0**2*T**2
11145      1  *(Q/Q0)**3/((SS-AM0**2)**2+AM0**2*T**2)
11146         SIGMA=SIGMA*10.
11147        IF(SIGMA.EQ.0)SIGMA=1.E-06
11148         RETURN
11149         END
11150 
11151 *****************************
11152         REAL FUNCTION DENOM(SRT,CON)
11153 * NOTE: CON=1 FOR DELTA RESONANCE, CON=2 FOR N*(1440) RESONANCE
11154 *       con=-1 for N*(1535)
11155 * PURPOSE : CALCULATE THE INTEGRAL IN THE DETAILED BALANCE
11156 *
11157 * DATE : NOV. 15, 1991
11158 *******************************
11159         PARAMETER (AP1=0.13496,
11160      1  AP2=0.13957,PI=3.1415926,AVMASS=0.9383)
11161       SAVE   
11162         AVPI=(AP1+2.*AP2)/3.
11163         AM0=1.232
11164         AMN=AVMASS
11165         AMP=AVPI
11166         AMAX=SRT-AVMASS
11167         AMIN=AVMASS+AVPI
11168         NMAX=200
11169         DMASS=(AMAX-AMIN)/FLOAT(NMAX)
11170         SUM=0.
11171         DO 10 I=1,NMAX+1
11172         DM=AMIN+FLOAT(I-1)*DMASS
11173         IF(CON.EQ.1.)THEN
11174         Q2=((DM**2-AMN**2+AMP**2)/(2.*DM))**2-AMP**2
11175            IF(Q2.GT.0.)THEN
11176            Q=SQRT(Q2)
11177            ELSE
11178            Q=1.E-06
11179            ENDIF
11180         TQ=0.47*(Q**3)/(AMP**2*(1.+0.6*(Q/AMP)**2))
11181         ELSE if(con.eq.2)then
11182         TQ=0.2
11183         AM0=1.44
11184        else if(con.eq.-1.)then
11185        tq=0.1
11186        am0=1.535
11187         ENDIF
11188         A1=4.*TQ*AM0**2/(AM0**2*TQ**2+(DM**2-AM0**2)**2)
11189         S=SRT**2
11190         P0=(S+DM**2-AMN**2)**2/(4.*S)-DM**2
11191         IF(P0.LE.0.)THEN
11192         P1=1.E-06
11193         ELSE
11194         P1=SQRT(P0)
11195         ENDIF
11196         F=DM*A1*P1
11197         IF((I.EQ.1).OR.(I.EQ.(NMAX+1)))THEN
11198         SUM=SUM+F*0.5
11199         ELSE
11200         SUM=SUM+F
11201         ENDIF
11202 10      CONTINUE
11203         DENOM=SUM*DMASS/(2.*PI)
11204         RETURN
11205         END
11206 **********************************
11207 * subroutine : ang.FOR
11208 * PURPOSE : Calculate the angular distribution of Delta production process 
11209 * DATE    : Nov. 19, 1992
11210 * REFERENCE: G. WOLF ET. AL., NUCL. PHYS. A517 (1990) 615
11211 * Note: this function applies when srt is larger than 2.14 GeV,
11212 * for less energetic reactions, we assume the angular distribution
11213 * is isotropic.
11214 ***********************************
11215        real function ang(srt,iseed)
11216       COMMON/RNDF77/NSEED
11217 cc      SAVE /RNDF77/
11218       SAVE   
11219 c        if(srt.le.2.14)then
11220 c       b1s=0.5
11221 c       b2s=0.
11222 c      endif
11223       if((srt.gt.2.14).and.(srt.le.2.4))then
11224        b1s=29.03-23.75*srt+4.865*srt**2
11225          b2s=-30.33+25.53*srt-5.301*srt**2
11226       endif
11227       if(srt.gt.2.4)then
11228        b1s=0.06
11229          b2s=0.4
11230       endif
11231         x=RANART(NSEED)
11232        p=b1s/b2s
11233        q=(2.*x-1.)*(b1s+b2s)/b2s
11234        IF((-q/2.+sqrt((q/2.)**2+(p/3.)**3)).GE.0.)THEN
11235        ang1=(-q/2.+sqrt((q/2.)**2+(p/3.)**3))**(1./3.)
11236        ELSE
11237        ang1=-(q/2.-sqrt((q/2.)**2+(p/3.)**3))**(1./3.)
11238        ENDIF
11239        IF((-q/2.-sqrt((q/2.)**2+(p/3.)**3).GE.0.))THEN
11240        ang2=(-q/2.-sqrt((q/2.)**2+(p/3.)**3))**(1./3.)
11241        ELSE
11242        ang2=-(q/2.+sqrt((q/2.)**2+(p/3.)**3))**(1./3.)
11243        ENDIF
11244        ANG=ANG1+ANG2
11245        return
11246        end
11247 *--------------------------------------------------------------------------
11248 *****subprogram * kaon production from pi+B collisions *******************
11249       real function PNLKA(srt)
11250       SAVE   
11251 * units: fm**2
11252 ***********************************C
11253       ala=1.116
11254       aka=0.498
11255       ana=0.939
11256       t1=ala+aka      
11257       if(srt.le.t1) THEN
11258       Pnlka=0
11259       Else
11260       IF(SRT.LT.1.7)sbbk=(0.9/0.091)*(SRT-T1)
11261       IF(SRT.GE.1.7)sbbk=0.09/(SRT-1.6)
11262       Pnlka=0.25*sbbk
11263 * give the cross section in units of fm**2
11264        pnlka=pnlka/10.
11265       endif     
11266       return
11267       end
11268 *-------------------------------------------------------------------------
11269 *****subprogram * kaon production from pi+B collisions *******************
11270       real function PNSKA(srt)
11271       SAVE   
11272 ***********************************
11273        if(srt.gt.3.0)then
11274        pnska=0
11275        return
11276        endif
11277       ala=1.116
11278       aka=0.498
11279       ana=0.939
11280       asa=1.197
11281       t1=asa+aka      
11282       if(srt.le.t1) THEN
11283       Pnska=0
11284        return
11285       Endif
11286       IF(SRT.LT.1.9)SBB1=(0.7/0.218)*(SRT-T1)
11287       IF(SRT.GE.1.9)SBB1=0.14/(SRT-1.7)
11288       sbb2=0.
11289        if(srt.gT.1.682)sbb2=0.5*(1.-0.75*(srt-1.682))
11290        pnska=0.25*(sbb1+sbb2)
11291 * give the cross section in fm**2
11292        pnska=pnska/10.
11293       return
11294       end
11295 
11296 ********************************
11297 *
11298 *       Kaon momentum distribution in baryon-baryon-->N lamda K process
11299 *
11300 *       NOTE: dsima/dp is prototional to (1-p/p_max)(p/p_max)^2
11301 *              we use rejection method to generate kaon momentum
11302 *
11303 *       Variables: Fkaon = F(p)/F_max
11304 *                 srt   = cms energy of the colliding pair, 
11305 *                          used to calculate the P_max
11306 *       Date: Feb. 8, 1994
11307 *
11308 *       Reference: C. M. Ko et al.  
11309 ******************************** 
11310        Real function fkaon(p,pmax)
11311       SAVE   
11312        fmax=0.148
11313        if(pmax.eq.0.)pmax=0.000001
11314        fkaon=(1.-p/pmax)*(p/pmax)**2
11315        if(fkaon.gt.fmax)fkaon=fmax
11316        fkaon=fkaon/fmax
11317        return
11318        end
11319 
11320 *************************
11321 * cross section for N*(1535) production in ND OR NN* collisions
11322 * VARIABLES:
11323 * LB1,LB2 ARE THE LABLES OF THE TWO COLLIDING PARTICLES
11324 * SRT IS THE CMS ENERGY
11325 * X1535 IS THE N*(1535) PRODUCTION CROSS SECTION
11326 * NOTE THAT THE N*(1535) PRODUCTION CROSS SECTION IS 2 TIMES THE ETA 
11327 * PRODUCTION CROSS SECTION
11328 * DATE: MAY 18, 1994
11329 * ***********************
11330        Subroutine M1535(LB1,LB2,SRT,X1535)
11331       SAVE   
11332        S0=2.424
11333        x1535=0.
11334        IF(SRT.LE.S0)RETURN
11335        SIGMA=2.*0.102*(SRT-S0)/(0.058+(SRT-S0)**2)
11336 * I N*(1535) PRODUCTION IN NUCLEON-DELTA COLLISIONS
11337 *(1) nD(++)->pN*(+)(1535), pD(-)->nN*(0)(1535),pD(+)-->N*(+)p
11338 cbz11/25/98
11339 c       IF((LB1*LB2.EQ.18).OR.(LB1*LB2.EQ.6).
11340 c     1  or.(lb1*lb2).eq.8)then
11341        IF((LB1*LB2.EQ.18.AND.(LB1.EQ.2.OR.LB2.EQ.2)).OR.
11342      &     (LB1*LB2.EQ.6.AND.(LB1.EQ.1.OR.LB2.EQ.1)).or.
11343      &     (lb1*lb2.eq.8.AND.(LB1.EQ.1.OR.LB2.EQ.1)))then
11344 cbz11/25/98end
11345        X1535=SIGMA
11346        return
11347        ENDIF
11348 *(2) pD(0)->pN*(0)(1535),pD(0)->nN*(+)(1535)
11349        IF(LB1*LB2.EQ.7)THEN
11350        X1535=3.*SIGMA
11351        RETURN
11352        ENDIF 
11353 * II N*(1535) PRODUCTION IN N*(1440)+NUCLEON REACTIONS
11354 *(3) N*(+)(1440)p->N*(0+)(1535)p, N*(0)(1440)n->N*(0)(1535)
11355 cbz11/25/98
11356 c       IF((LB1*LB2.EQ.11).OR.(LB1*LB2.EQ.20))THEN
11357        IF((LB1*LB2.EQ.11).OR.
11358      &     (LB1*LB2.EQ.20.AND.(LB1.EQ.2.OR.LB2.EQ.2)))THEN
11359 cbz11/25/98end
11360        X1535=SIGMA
11361        RETURN
11362        ENDIF
11363 *(4) N*(0)(1440)p->N*(0+) or N*(+)(1440)n->N*(0+)(1535)
11364 cbz11/25/98
11365 c       IF((LB1*LB2.EQ.10).OR.(LB1*LB2.EQ.22))X1535=3.*SIGMA
11366        IF((LB1*LB2.EQ.10.AND.(LB1.EQ.1.OR.LB2.EQ.1)).OR.
11367      &     (LB1*LB2.EQ.22.AND.(LB1.EQ.2.OR.LB2.EQ.2)))
11368      &     X1535=3.*SIGMA
11369 cbz11/25/98end
11370        RETURN
11371        END
11372 *************************
11373 * cross section for N*(1535) production in NN collisions
11374 * VARIABLES:
11375 * LB1,LB2 ARE THE LABLES OF THE TWO COLLIDING PARTICLES
11376 * SRT IS THE CMS ENERGY
11377 * X1535 IS THE N*(1535) PRODUCTION CROSS SECTION
11378 * NOTE THAT THE N*(1535) PRODUCTION CROSS SECTION IS 2 TIMES THE ETA 
11379 * PRODUCTION CROSS SECTION
11380 * DATE: MAY 18, 1994
11381 * ***********************
11382        Subroutine N1535(LB1,LB2,SRT,X1535)
11383       SAVE   
11384        S0=2.424
11385        x1535=0.
11386        IF(SRT.LE.S0)RETURN
11387        SIGMA=2.*0.102*(SRT-S0)/(0.058+(SRT-S0)**2)
11388 * I N*(1535) PRODUCTION IN NUCLEON-NUCLEON COLLISIONS
11389 *(1) pp->pN*(+)(1535), nn->nN*(0)(1535)
11390 cbdbg11/25/98
11391 c       IF((LB1*LB2.EQ.1).OR.(LB1*LB2.EQ.4))then
11392        IF((LB1*LB2.EQ.1).OR.
11393      &     (LB1.EQ.2.AND.LB2.EQ.2))then
11394 cbz11/25/98end
11395        X1535=SIGMA
11396        return
11397        endif
11398 *(2) pn->pN*(0)(1535),pn->nN*(+)(1535)
11399        IF(LB1*LB2.EQ.2)then
11400        X1535=3.*SIGMA
11401        return
11402        endif 
11403 * III N*(1535) PRODUCTION IN DELTA+DELTA REACTIONS
11404 * (5) D(++)+D(0), D(+)+D(+),D(+)+D(-),D(0)+D(0)
11405 cbz11/25/98
11406 c       IF((LB1*LB2.EQ.63).OR.(LB1*LB2.EQ.64).OR.(LB1*LB2.EQ.48).
11407 c     1  OR.(LB1*LB2.EQ.49))then
11408        IF((LB1*LB2.EQ.63.AND.(LB1.EQ.7.OR.LB2.EQ.7)).OR.
11409      &     (LB1*LB2.EQ.64.AND.(LB1.EQ.8.OR.LB2.EQ.8)).OR.
11410      &     (LB1*LB2.EQ.48.AND.(LB1.EQ.6.OR.LB2.EQ.6)).OR.
11411      &     (LB1*LB2.EQ.49.AND.(LB1.EQ.7.OR.LB2.EQ.7)))then
11412 cbz11/25/98end
11413        X1535=SIGMA
11414        return
11415        endif
11416 * (6) D(++)+D(-),D(+)+D(0)
11417 cbz11/25/98
11418 c       IF((LB1*LB2.EQ.54).OR.(LB1*LB2.EQ.56))then
11419        IF((LB1*LB2.EQ.54.AND.(LB1.EQ.6.OR.LB2.EQ.6)).OR.
11420      &     (LB1*LB2.EQ.56.AND.(LB1.EQ.7.OR.LB2.EQ.7)))then
11421 cbz11/25/98end
11422        X1535=3.*SIGMA
11423        return
11424        endif
11425 * IV N*(1535) PRODUCTION IN N*(1440)+N*(1440) REACTIONS
11426 cbz11/25/98
11427 c       IF((LB1*LB2.EQ.100).OR.(LB1*LB2.EQ.11*11))X1535=SIGMA
11428        IF((LB1.EQ.10.AND.LB2.EQ.10).OR.
11429      &     (LB1.EQ.11.AND.LB2.EQ.11))X1535=SIGMA
11430 c       IF(LB1*LB2.EQ.110)X1535=3.*SIGMA
11431        IF(LB1*LB2.EQ.110.AND.(LB1.EQ.10.OR.LB2.EQ.10))X1535=3.*SIGMA
11432 cbdbg11/25/98end
11433        RETURN
11434        END
11435 ************************************       
11436 * FUNCTION WA1(DMASS) GIVES THE A1 DECAY WIDTH
11437 
11438         subroutine WIDA1(DMASS,rhomp,wa1,iseed)
11439       SAVE   
11440 c
11441         PIMASS=0.137265
11442         coupa = 14.8
11443 c
11444        RHOMAX = DMASS-PIMASS-0.02
11445        IF(RHOMAX.LE.0)then
11446          rhomp=0.
11447 c   !! no decay
11448          wa1=-10.
11449         endif
11450         icount = 0
11451 711       rhomp=RHOMAS(RHOMAX,ISEED)
11452       icount=icount+1
11453       if(dmass.le.(pimass+rhomp)) then
11454        if(icount.le.100) then
11455         goto 711
11456        else
11457          rhomp=0.
11458 c   !! no decay
11459          wa1=-10.
11460         return
11461        endif
11462       endif
11463       qqp2=(dmass**2-(rhomp+pimass)**2)*(dmass**2-(rhomp-pimass)**2)
11464       qqp=sqrt(qqp2)/(2.0*dmass)
11465       epi=sqrt(pimass**2+qqp**2)
11466       erho=sqrt(rhomp**2+qqp**2)
11467       epirho=2.0*(epi*erho+qqp**2)**2+rhomp**2*epi**2
11468       wa1=coupa**2*qqp*epirho/(24.0*3.1416*dmass**2)
11469        return
11470        end
11471 ************************************       
11472 * FUNCTION W1535(DMASS) GIVES THE N*(1535) DECAY WIDTH 
11473 c     FOR A GIVEN N*(1535) MASS
11474 * HERE THE FORMULA GIVEN BY KITAZOE IS USED
11475         REAL FUNCTION W1535(DMASS)
11476       SAVE   
11477         AVMASS=0.938868
11478         PIMASS=0.137265
11479            AUX = 0.25*(DMASS**2-AVMASS**2-PIMASS**2)**2
11480      &           -(AVMASS*PIMASS)**2
11481             IF (AUX .GT. 0.) THEN
11482               QAVAIL = SQRT(AUX / DMASS**2)
11483             ELSE
11484               QAVAIL = 1.E-06
11485             END IF
11486             W1535 = 0.15* QAVAIL/0.467
11487 c       W1535=0.15
11488         RETURN
11489         END
11490 ************************************       
11491 * FUNCTION W1440(DMASS) GIVES THE N*(1440) DECAY WIDTH 
11492 c     FOR A GIVEN N*(1535) MASS
11493 * HERE THE FORMULA GIVEN BY KITAZOE IS USED
11494         REAL FUNCTION W1440(DMASS)
11495       SAVE   
11496         AVMASS=0.938868
11497         PIMASS=0.137265
11498            AUX = 0.25*(DMASS**2-AVMASS**2-PIMASS**2)**2
11499      &           -(AVMASS*PIMASS)**2
11500             IF (AUX .GT. 0.) THEN
11501               QAVAIL = SQRT(AUX)/DMASS
11502             ELSE
11503               QAVAIL = 1.E-06
11504             END IF
11505 c              w1440=0.2 
11506            W1440 = 0.2* (QAVAIL/0.397)**3
11507         RETURN
11508         END
11509 ****************
11510 * PURPOSE : CALCULATE THE PION(ETA)+NUCLEON CROSS SECTION 
11511 *           ACCORDING TO THE BREIT-WIGNER FORMULA, 
11512 *           NOTE THAT N*(1535) IS S_11
11513 * VARIABLE : LA = 1 FOR PI+N
11514 *            LA = 0 FOR ETA+N
11515 * DATE    : MAY 16, 1994
11516 ****************
11517         REAL FUNCTION XN1535(I1,I2,LA)
11518         PARAMETER (MAXSTR=150001,MAXR=1,
11519      1  AMN=0.939457,AMP=0.93828,ETAM=0.5475,
11520      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
11521 clin-9/2012: improve precision for argument in sqrt():
11522         double precision e10,e20,scheck,p1,p2,p3
11523         COMMON /AA/ R(3,MAXSTR)
11524 cc      SAVE /AA/
11525         COMMON /BB/ P(3,MAXSTR)
11526 cc      SAVE /BB/
11527         COMMON /CC/ E(MAXSTR)
11528 cc      SAVE /CC/
11529         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
11530 cc      SAVE /EE/
11531         COMMON   /RUN/NUM
11532 cc      SAVE /RUN/
11533         COMMON   /PA/RPION(3,MAXSTR,MAXR)
11534 cc      SAVE /PA/
11535         COMMON   /PB/PPION(3,MAXSTR,MAXR)
11536 cc      SAVE /PB/
11537         COMMON   /PC/EPION(MAXSTR,MAXR)
11538 cc      SAVE /PC/
11539         COMMON   /PD/LPION(MAXSTR,MAXR)
11540 cc      SAVE /PD/
11541       SAVE   
11542         AVMASS=0.5*(AMN+AMP)
11543         AVPI=(2.*AP2+AP1)/3.
11544 * 1. DETERMINE THE MOMENTUM COMPONENT OF N*(1535) IN THE LAB. FRAME
11545 clin-9/2012: improve precision for argument in sqrt():
11546 c        E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
11547 c        E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
11548         E10=dSQRT(dble(E(I1))**2+dble(P(1,I1))**2
11549      1     +dble(P(2,I1))**2+dble(P(3,I1))**2)
11550         E20=dSQRT(dble(E(I2))**2+dble(P(1,I2))**2
11551      1       +dble(P(2,I2))**2+dble(P(3,I2))**2)
11552 c        P1=P(1,I1)+P(1,I2)
11553 c        P2=P(2,I1)+P(2,I2)
11554 c        P3=P(3,I1)+P(3,I2)
11555         p1=dble(P(1,I1))+dble(P(1,I2))
11556         p2=dble(P(2,I1))+dble(P(2,I2))
11557         p3=dble(P(3,I1))+dble(P(3,I2))
11558 
11559 * 2. DETERMINE THE MASS OF DELTA BY USING OF THE REACTION KINEMATICS
11560 
11561 clin-9/2012: check argument in sqrt():
11562         scheck=(E10+E20)**2-p1**2-p2**2-p3**2
11563         if(scheck.lt.0) then
11564            write(99,*) 'scheck21: ', scheck
11565            scheck=0.d0
11566         endif
11567         DM=SQRT(sngl(scheck))
11568 c        DM=SQRT((E10+E20)**2-P1**2-P2**2-P3**2)
11569 
11570         IF(DM.LE.1.1) THEN
11571         XN1535=1.E-06
11572         RETURN
11573         ENDIF
11574 * 3. DETERMINE THE PION(ETA)+NUCLEON->N*(1535) CROSS SECTION ACCORDING TO THE
11575 *    BREIT-WIGNER FORMULA IN UNIT OF FM**2
11576         GAM=W1535(DM)
11577        GAM0=0.15
11578         F1=0.25*GAM0**2/(0.25*GAM**2+(DM-1.535)**2)
11579         IF(LA.EQ.1)THEN
11580        XMAX=11.3
11581         ELSE
11582        XMAX=74.
11583         ENDIF
11584         XN1535=F1*XMAX/10.
11585         RETURN
11586         END
11587 ***************************8
11588 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
11589 *KITAZOE'S FORMULA
11590         REAL FUNCTION FDELTA(DMASS)
11591       SAVE   
11592         AMN=0.938869
11593         AVPI=0.13803333
11594         AM0=1.232
11595         FD=0.25*WIDTH(DMASS)**2/((DMASS-1.232)**2
11596      1  +0.25*WIDTH(DMASS)**2)
11597         FDELTA=FD
11598         RETURN
11599         END
11600 * FUNCTION WIDTH(DMASS) GIVES THE DELTA DECAY WIDTH FOR A GIVEN DELTA MASS
11601 * HERE THE FORMULA GIVEN BY KITAZOE IS USED
11602         REAL FUNCTION WIDTH(DMASS)
11603       SAVE   
11604         AVMASS=0.938868
11605         PIMASS=0.137265
11606            AUX = 0.25*(DMASS**2-AVMASS**2-PIMASS**2)**2
11607      &           -(AVMASS*PIMASS)**2
11608             IF (AUX .GT. 0.) THEN
11609               QAVAIL = SQRT(AUX / DMASS**2)
11610             ELSE
11611               QAVAIL = 1.E-06
11612             END IF
11613             WIDTH = 0.47 * QAVAIL**3 /
11614      &              (PIMASS**2 * (1.+0.6*(QAVAIL/PIMASS)**2))
11615 c       width=0.115
11616         RETURN
11617         END
11618 ************************************       
11619         SUBROUTINE ddp2(SRT,ISEED,PX,PY,PZ,DM1,PNX,
11620      &  PNY,PNZ,DM2,PPX,PPY,PPZ,icou1)
11621 * PURPOSE : CALCULATE MOMENTUM OF PARTICLES IN THE FINAL SATAT FROM
11622 * THE PROCESS N+N--->D1+D2+PION
11623 *       DATE : July 25, 1994
11624 * Generate the masses and momentum for particles in the NN-->DDpi process
11625 * for a given center of mass energy srt, the momenta are given in the center
11626 * of mass of the NN
11627 *****************************************
11628         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
11629 cc      SAVE /TABLE/
11630       COMMON/RNDF77/NSEED
11631 cc      SAVE /RNDF77/
11632       SAVE   
11633        icou1=0
11634        pi=3.1415926
11635         AMN=938.925/1000.
11636         AMP=137.265/1000.
11637 * (1) GENGRATE THE MASS OF DELTA1 AND DELTA2 USING
11638        srt1=srt-amp-0.02
11639        ntrym=0
11640 8       call Rmasdd(srt1,1.232,1.232,1.08,
11641      &  1.08,ISEED,1,dm1,dm2)
11642        ntrym=ntrym+1
11643 * CONSTANTS FOR GENERATING THE LONGITUDINAL MOMENTUM 
11644 * FOR ONE OF THE RESONANCES
11645        V=0.43
11646        W=-0.84
11647 * (2) Generate the transverse momentum
11648 *     OF DELTA1
11649 * (2.1) estimate the maximum transverse momentum
11650        PTMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11651      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2
11652        if(ptmax2.le.0)go to 8
11653        PTMAX=SQRT(PTMAX2)*1./3.
11654 7       PT=PTR(PTMAX,ISEED)       
11655 * (3.1) THE MAXIMUM LONGITUDINAL MOMENTUM IS
11656        PZMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11657      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2-PT**2
11658        IF((PZMAX2.LT.0.).and.ntrym.le.100)then 
11659        go to 7
11660        else
11661        pzmax2=1.E-09
11662        endif
11663        PZMAX=SQRT(PZMAX2)
11664        XMAX=2.*PZMAX/SRT
11665 * (3.2) THE GENERATED X IS
11666 * THE DSTRIBUTION HAS A MAXIMUM AT X0=-V/(2*w), f(X0)=1.056
11667        ntryx=0
11668        fmax00=1.056
11669        x00=0.26
11670        if(abs(xmax).gt.0.26)then
11671        f00=fmax00
11672        else
11673        f00=1.+v*abs(xmax)+w*xmax**2
11674        endif
11675 9       X=XMAX*(1.-2.*RANART(NSEED))
11676        ntryx=ntryx+1
11677        xratio=(1.+V*ABS(X)+W*X**2)/f00       
11678 clin-8/17/00       IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11679        IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11680 * (3.5) THE PZ IS
11681        PZ=0.5*SRT*X
11682 * The x and y components of the deltA1
11683        fai=2.*pi*RANART(NSEED)
11684        Px=pt*cos(fai)
11685        Py=pt*sin(fai)
11686 * find the momentum of delta2 and pion
11687 * the energy of the delta1
11688        ek=sqrt(dm1**2+PT**2+Pz**2)
11689 * (1) Generate the momentum of the delta2 in the cms of delta2 and pion
11690 *     the energy of the cms of DP
11691         eln=srt-ek
11692        IF(ELN.lE.0)then
11693        icou1=-1
11694        return
11695        endif
11696 * beta and gamma of the cms of delta2+pion
11697        bx=-Px/eln
11698        by=-Py/eln
11699        bz=-Pz/eln
11700 
11701 clin-9/2012: check argument in sqrt():
11702        scheck=1.-bx**2-by**2-bz**2
11703        if(scheck.le.0) then
11704           write(99,*) 'scheck22: ', scheck
11705           stop
11706        endif
11707        ga=1./sqrt(scheck)
11708 c       ga=1./sqrt(1.-bx**2-by**2-bz**2)
11709 
11710 * the momentum of delta2 and pion in their cms frame
11711        elnc=eln/ga 
11712        pn2=((elnc**2+dm2**2-amp**2)/(2.*elnc))**2-dm2**2
11713        if(pn2.le.0)then
11714        icou1=-1
11715        return
11716        endif
11717        pn=sqrt(pn2)
11718 
11719 clin-10/25/02 get rid of argument usage mismatch in PTR():
11720         xptr=0.33*PN
11721 c       PNT=PTR(0.33*PN,ISEED)
11722        PNT=PTR(xptr,ISEED)
11723 clin-10/25/02-end
11724 
11725        fain=2.*pi*RANART(NSEED)
11726        pnx=pnT*cos(fain)
11727        pny=pnT*sin(fain)
11728        SIG=1
11729        IF(X.GT.0)SIG=-1
11730 
11731 clin-9/2012: check argument in sqrt():
11732        scheck=pn**2-PNT**2
11733        if(scheck.lt.0) then
11734           write(99,*) 'scheck23: ', scheck
11735           scheck=0.
11736        endif
11737        pnz=SIG*SQRT(scheck)
11738 c       pnz=SIG*SQRT(pn**2-PNT**2)
11739 
11740        en=sqrt(dm2**2+pnx**2+pny**2+pnz**2)
11741 * (2) the momentum for the pion
11742        ppx=-pnx
11743        ppy=-pny
11744        ppz=-pnz
11745        ep=sqrt(amp**2+ppx**2+ppy**2+ppz**2)
11746 * (3) for the delta2, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11747         PBETA  = PnX*BX + PnY*By+ PnZ*Bz
11748               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
11749               Pnx = BX * TRANS0 + PnX
11750               Pny = BY * TRANS0 + PnY
11751               Pnz = BZ * TRANS0 + PnZ
11752 * (4) for the pion, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11753              if(ep.eq.0.)ep=1.E-09
11754               PBETA  = PPX*BX + PPY*By+ PPZ*Bz
11755               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + EP )
11756               PPx = BX * TRANS0 + PPX
11757               PPy = BY * TRANS0 + PPY
11758               PPz = BZ * TRANS0 + PPZ
11759        return
11760        end
11761 ****************************************
11762         SUBROUTINE ddrho(SRT,ISEED,PX,PY,PZ,DM1,PNX,
11763      &  PNY,PNZ,DM2,PPX,PPY,PPZ,amp,icou1)
11764 * PURPOSE : CALCULATE MOMENTUM OF PARTICLES IN THE FINAL SATAT FROM
11765 * THE PROCESS N+N--->D1+D2+rho
11766 *       DATE : Nov.5, 1994
11767 * Generate the masses and momentum for particles in the NN-->DDrho process
11768 * for a given center of mass energy srt, the momenta are given in the center
11769 * of mass of the NN
11770 *****************************************
11771         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
11772 cc      SAVE /TABLE/
11773       COMMON/RNDF77/NSEED
11774 cc      SAVE /RNDF77/
11775       SAVE   
11776        icou1=0
11777        pi=3.1415926
11778         AMN=938.925/1000.
11779         AMP=770./1000.
11780 * (1) GENGRATE THE MASS OF DELTA1 AND DELTA2 USING
11781        srt1=srt-amp-0.02
11782        ntrym=0
11783 8       call Rmasdd(srt1,1.232,1.232,1.08,
11784      &  1.08,ISEED,1,dm1,dm2)
11785        ntrym=ntrym+1
11786 * GENERATE THE MASS FOR THE RHO
11787        RHOMAX = SRT-DM1-DM2-0.02
11788        IF(RHOMAX.LE.0.and.ntrym.le.20)go to 8
11789        AMP=RHOMAS(RHOMAX,ISEED)
11790 * CONSTANTS FOR GENERATING THE LONGITUDINAL MOMENTUM 
11791 * FOR ONE OF THE RESONANCES
11792        V=0.43
11793        W=-0.84
11794 * (2) Generate the transverse momentum
11795 *     OF DELTA1
11796 * (2.1) estimate the maximum transverse momentum
11797        PTMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11798      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2
11799 
11800 clin-9/2012: check argument in sqrt():
11801        scheck=PTMAX2
11802        if(scheck.lt.0) then
11803           write(99,*) 'scheck24: ', scheck
11804           scheck=0.
11805        endif
11806        PTMAX=SQRT(scheck)*1./3.
11807 c       PTMAX=SQRT(PTMAX2)*1./3.
11808 
11809 7       PT=PTR(PTMAX,ISEED)
11810 * (3) GENGRATE THE LONGITUDINAL MOMENTUM FOR DM1
11811 *     USING THE GIVEN DISTRIBUTION
11812 * (3.1) THE MAXIMUM LONGITUDINAL MOMENTUM IS
11813        PZMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11814      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2-PT**2
11815        IF((PZMAX2.LT.0.).and.ntrym.le.100)then 
11816        go to 7
11817        else
11818        pzmax2=1.E-06
11819        endif
11820        PZMAX=SQRT(PZMAX2)
11821        XMAX=2.*PZMAX/SRT
11822 * (3.2) THE GENERATED X IS
11823 * THE DSTRIBUTION HAS A MAXIMUM AT X0=-V/(2*w), f(X0)=1.056
11824        ntryx=0
11825        fmax00=1.056
11826        x00=0.26
11827        if(abs(xmax).gt.0.26)then
11828        f00=fmax00
11829        else
11830        f00=1.+v*abs(xmax)+w*xmax**2
11831        endif
11832 9       X=XMAX*(1.-2.*RANART(NSEED))
11833        ntryx=ntryx+1
11834        xratio=(1.+V*ABS(X)+W*X**2)/f00       
11835 clin-8/17/00       IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11836        IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11837 * (3.5) THE PZ IS
11838        PZ=0.5*SRT*X
11839 * The x and y components of the delta1
11840        fai=2.*pi*RANART(NSEED)
11841        Px=pt*cos(fai)
11842        Py=pt*sin(fai)
11843 * find the momentum of delta2 and rho
11844 * the energy of the delta1
11845        ek=sqrt(dm1**2+PT**2+Pz**2)
11846 * (1) Generate the momentum of the delta2 in the cms of delta2 and rho
11847 *     the energy of the cms of Drho
11848         eln=srt-ek
11849        IF(ELN.lE.0)then
11850        icou1=-1
11851        return
11852        endif
11853 * beta and gamma of the cms of delta2 and rho
11854        bx=-Px/eln
11855        by=-Py/eln
11856        bz=-Pz/eln
11857 
11858 clin-9/2012: check argument in sqrt():
11859        scheck=1.-bx**2-by**2-bz**2
11860        if(scheck.le.0) then
11861           write(99,*) 'scheck25: ', scheck
11862           stop
11863        endif
11864        ga=1./sqrt(scheck)
11865 c       ga=1./sqrt(1.-bx**2-by**2-bz**2)
11866 
11867        elnc=eln/ga
11868        pn2=((elnc**2+dm2**2-amp**2)/(2.*elnc))**2-dm2**2
11869        if(pn2.le.0)then
11870        icou1=-1
11871        return
11872        endif
11873        pn=sqrt(pn2)
11874 
11875 clin-10/25/02 get rid of argument usage mismatch in PTR():
11876         xptr=0.33*PN
11877 c       PNT=PTR(0.33*PN,ISEED)
11878        PNT=PTR(xptr,ISEED)
11879 clin-10/25/02-end
11880 
11881        fain=2.*pi*RANART(NSEED)
11882        pnx=pnT*cos(fain)
11883        pny=pnT*sin(fain)
11884        SIG=1
11885        IF(X.GT.0)SIG=-1
11886 
11887 clin-9/2012: check argument in sqrt():
11888        scheck=pn**2-PNT**2
11889        if(scheck.lt.0) then
11890           write(99,*) 'scheck26: ', scheck
11891           scheck=0.
11892        endif
11893        pnz=SIG*SQRT(scheck)
11894 c       pnz=SIG*SQRT(pn**2-PNT**2)
11895 
11896        en=sqrt(dm2**2+pnx**2+pny**2+pnz**2)
11897 * (2) the momentum for the rho
11898        ppx=-pnx
11899        ppy=-pny
11900        ppz=-pnz
11901        ep=sqrt(amp**2+ppx**2+ppy**2+ppz**2)
11902 * (3) for the delta2, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11903         PBETA  = PnX*BX + PnY*By+ PnZ*Bz
11904               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
11905               Pnx = BX * TRANS0 + PnX
11906               Pny = BY * TRANS0 + PnY
11907               Pnz = BZ * TRANS0 + PnZ
11908 * (4) for the rho, LORENTZ-TRANSFORMATION INTO nn cms FRAME
11909              if(ep.eq.0.)ep=1.e-09
11910               PBETA  = PPX*BX + PPY*By+ PPZ*Bz
11911               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + EP )
11912               PPx = BX * TRANS0 + PPX
11913               PPy = BY * TRANS0 + PPY
11914               PPz = BZ * TRANS0 + PPZ
11915        return
11916        end
11917 ****************************************
11918         SUBROUTINE pprho(SRT,ISEED,PX,PY,PZ,DM1,PNX,
11919      &  PNY,PNZ,DM2,PPX,PPY,PPZ,amp,icou1)
11920 * PURPOSE : CALCULATE MOMENTUM OF PARTICLES IN THE FINAL SATAT FROM
11921 * THE PROCESS N+N--->N1+N2+rho
11922 *       DATE : Nov.5, 1994
11923 * Generate the masses and momentum for particles in the NN--> process
11924 * for a given center of mass energy srt, the momenta are given in the center
11925 * of mass of the NN
11926 *****************************************
11927         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
11928 cc      SAVE /TABLE/
11929       COMMON/RNDF77/NSEED
11930 cc      SAVE /RNDF77/
11931       SAVE   
11932         ntrym=0
11933        icou1=0
11934        pi=3.1415926
11935         AMN=938.925/1000.
11936 *        AMP=770./1000.
11937        DM1=amn
11938        DM2=amn
11939 * GENERATE THE MASS FOR THE RHO
11940        RHOMAX=SRT-DM1-DM2-0.02
11941        IF(RHOMAX.LE.0)THEN
11942        ICOU=-1
11943        RETURN
11944        ENDIF
11945        AMP=RHOMAS(RHOMAX,ISEED)
11946 * CONSTANTS FOR GENERATING THE LONGITUDINAL MOMENTUM 
11947 * FOR ONE OF THE nucleons
11948        V=0.43
11949        W=-0.84
11950 * (2) Generate the transverse momentum
11951 *     OF p1
11952 * (2.1) estimate the maximum transverse momentum
11953        PTMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11954      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2
11955 
11956 clin-9/2012: check argument in sqrt():
11957        scheck=PTMAX2
11958        if(scheck.lt.0) then
11959           write(99,*) 'scheck27: ', scheck
11960           scheck=0.
11961        endif
11962        PTMAX=SQRT(scheck)*1./3.
11963 c       PTMAX=SQRT(PTMAX2)*1./3.
11964 
11965 7       PT=PTR(PTMAX,ISEED)
11966 * (3) GENGRATE THE LONGITUDINAL MOMENTUM FOR DM1
11967 *     USING THE GIVEN DISTRIBUTION
11968 * (3.1) THE MAXIMUM LONGITUDINAL MOMENTUM IS
11969        PZMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
11970      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2-PT**2
11971        NTRYM=NTRYM+1
11972        IF((PZMAX2.LT.0.).and.ntrym.le.100)then 
11973        go to 7
11974        else
11975        pzmax2=1.E-06
11976        endif
11977        PZMAX=SQRT(PZMAX2)
11978        XMAX=2.*PZMAX/SRT
11979 * (3.2) THE GENERATED X IS
11980 * THE DSTRIBUTION HAS A MAXIMUM AT X0=-V/(2*w), f(X0)=1.056
11981        ntryx=0
11982        fmax00=1.056
11983        x00=0.26
11984        if(abs(xmax).gt.0.26)then
11985        f00=fmax00
11986        else
11987        f00=1.+v*abs(xmax)+w*xmax**2
11988        endif
11989 9       X=XMAX*(1.-2.*RANART(NSEED))
11990        ntryx=ntryx+1
11991        xratio=(1.+V*ABS(X)+W*X**2)/f00       
11992 clin-8/17/00       IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11993        IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
11994 * (3.5) THE PZ IS
11995        PZ=0.5*SRT*X
11996 * The x and y components of the delta1
11997        fai=2.*pi*RANART(NSEED)
11998        Px=pt*cos(fai)
11999        Py=pt*sin(fai)
12000 * find the momentum of delta2 and rho
12001 * the energy of the delta1
12002        ek=sqrt(dm1**2+PT**2+Pz**2)
12003 * (1) Generate the momentum of the delta2 in the cms of delta2 and rho
12004 *     the energy of the cms of Drho
12005         eln=srt-ek
12006        IF(ELN.lE.0)then
12007        icou1=-1
12008        return
12009        endif
12010 * beta and gamma of the cms of the two partciles
12011        bx=-Px/eln
12012        by=-Py/eln
12013        bz=-Pz/eln
12014 
12015 clin-9/2012: check argument in sqrt():
12016        scheck=1.-bx**2-by**2-bz**2
12017        if(scheck.le.0) then
12018           write(99,*) 'scheck28: ', scheck
12019           stop
12020        endif
12021        ga=1./sqrt(scheck)
12022 c       ga=1./sqrt(1.-bx**2-by**2-bz**2)
12023 
12024         elnc=eln/ga
12025        pn2=((elnc**2+dm2**2-amp**2)/(2.*elnc))**2-dm2**2
12026        if(pn2.le.0)then
12027        icou1=-1
12028        return
12029        endif
12030        pn=sqrt(pn2)
12031 
12032 clin-10/25/02 get rid of argument usage mismatch in PTR():
12033         xptr=0.33*PN
12034 c       PNT=PTR(0.33*PN,ISEED)
12035        PNT=PTR(xptr,ISEED)
12036 clin-10/25/02-end
12037 
12038        fain=2.*pi*RANART(NSEED)
12039        pnx=pnT*cos(fain)
12040        pny=pnT*sin(fain)
12041        SIG=1
12042        IF(X.GT.0)SIG=-1
12043 
12044 clin-9/2012: check argument in sqrt():
12045        scheck=pn**2-PNT**2
12046        if(scheck.lt.0) then
12047           write(99,*) 'scheck29: ', scheck
12048           scheck=0.
12049        endif
12050        pnz=SIG*SQRT(scheck)
12051 c       pnz=SIG*SQRT(pn**2-PNT**2)
12052 
12053        en=sqrt(dm2**2+pnx**2+pny**2+pnz**2)
12054 * (2) the momentum for the rho
12055        ppx=-pnx
12056        ppy=-pny
12057        ppz=-pnz
12058        ep=sqrt(amp**2+ppx**2+ppy**2+ppz**2)
12059 * (3) for the delta2, LORENTZ-TRANSFORMATION INTO nn cms FRAME
12060         PBETA  = PnX*BX + PnY*By+ PnZ*Bz
12061               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
12062               Pnx = BX * TRANS0 + PnX
12063               Pny = BY * TRANS0 + PnY
12064               Pnz = BZ * TRANS0 + PnZ
12065 * (4) for the rho, LORENTZ-TRANSFORMATION INTO nn cms FRAME
12066              if(ep.eq.0.)ep=1.e-09
12067               PBETA  = PPX*BX + PPY*By+ PPZ*Bz
12068               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + EP )
12069               PPx = BX * TRANS0 + PPX
12070               PPy = BY * TRANS0 + PPY
12071               PPz = BZ * TRANS0 + PPZ
12072        return
12073        end
12074 ***************************8
12075 ****************************************
12076         SUBROUTINE ppomga(SRT,ISEED,PX,PY,PZ,DM1,PNX,
12077      &  PNY,PNZ,DM2,PPX,PPY,PPZ,icou1)
12078 * PURPOSE : CALCULATE MOMENTUM OF PARTICLES IN THE FINAL SATAT FROM
12079 * THE PROCESS N+N--->N1+N2+OMEGA
12080 *       DATE : Nov.5, 1994
12081 * Generate the masses and momentum for particles in the NN--> process
12082 * for a given center of mass energy srt, the momenta are given in the center
12083 * of mass of the NN
12084 *****************************************
12085         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
12086 cc      SAVE /TABLE/
12087       COMMON/RNDF77/NSEED
12088 cc      SAVE /RNDF77/
12089       SAVE   
12090         ntrym=0
12091        icou1=0
12092        pi=3.1415926
12093         AMN=938.925/1000.
12094         AMP=782./1000.
12095        DM1=amn
12096        DM2=amn
12097 * CONSTANTS FOR GENERATING THE LONGITUDINAL MOMENTUM 
12098 * FOR ONE OF THE nucleons
12099        V=0.43
12100        W=-0.84
12101 * (2) Generate the transverse momentum
12102 *     OF p1
12103 * (2.1) estimate the maximum transverse momentum
12104        PTMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
12105      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2
12106 
12107 clin-9/2012: check argument in sqrt():
12108        scheck=PTMAX2
12109        if(scheck.lt.0) then
12110           write(99,*) 'scheck30: ', scheck
12111           scheck=0.
12112        endif
12113        PTMAX=SQRT(scheck)*1./3.
12114 c       PTMAX=SQRT(PTMAX2)*1./3.
12115 
12116 7       PT=PTR(PTMAX,ISEED)
12117 * (3) GENGRATE THE LONGITUDINAL MOMENTUM FOR DM1
12118 *     USING THE GIVEN DISTRIBUTION
12119 * (3.1) THE MAXIMUM LONGITUDINAL MOMENTUM IS
12120        PZMAX2=(SRT**2-(DM1+DM2+AMP)**2)*
12121      1  (SRT**2-(DM1-AMP-DM2)**2)/4./SRT**2-PT**2
12122        NTRYM=NTRYM+1
12123        IF((PZMAX2.LT.0.).and.ntrym.le.100)then 
12124        go to 7
12125        else
12126        pzmax2=1.E-09
12127        endif
12128        PZMAX=SQRT(PZMAX2)
12129        XMAX=2.*PZMAX/SRT
12130 * (3.2) THE GENERATED X IS
12131 * THE DSTRIBUTION HAS A MAXIMUM AT X0=-V/(2*w), f(X0)=1.056
12132        ntryx=0
12133        fmax00=1.056
12134        x00=0.26
12135        if(abs(xmax).gt.0.26)then
12136        f00=fmax00
12137        else
12138        f00=1.+v*abs(xmax)+w*xmax**2
12139        endif
12140 9       X=XMAX*(1.-2.*RANART(NSEED))
12141        ntryx=ntryx+1
12142        xratio=(1.+V*ABS(X)+W*X**2)/f00       
12143 clin-8/17/00       IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
12144        IF(xratio.LT.RANART(NSEED).and.ntryx.le.50)GO TO 9       
12145 * (3.5) THE PZ IS
12146        PZ=0.5*SRT*X
12147 * The x and y components of the delta1
12148        fai=2.*pi*RANART(NSEED)
12149        Px=pt*cos(fai)
12150        Py=pt*sin(fai)
12151 * find the momentum of delta2 and rho
12152 * the energy of the delta1
12153        ek=sqrt(dm1**2+PT**2+Pz**2)
12154 * (1) Generate the momentum of the delta2 in the cms of delta2 and rho
12155 *     the energy of the cms of Drho
12156         eln=srt-ek
12157        IF(ELN.lE.0)then
12158        icou1=-1
12159        return
12160        endif
12161        bx=-Px/eln
12162        by=-Py/eln
12163        bz=-Pz/eln
12164 
12165 clin-9/2012: check argument in sqrt():
12166        scheck=1.-bx**2-by**2-bz**2
12167        if(scheck.le.0) then
12168           write(99,*) 'scheck31: ', scheck
12169           stop
12170        endif
12171        ga=1./sqrt(scheck)
12172 c       ga=1./sqrt(1.-bx**2-by**2-bz**2)
12173 
12174        elnc=eln/ga
12175        pn2=((elnc**2+dm2**2-amp**2)/(2.*elnc))**2-dm2**2
12176        if(pn2.le.0)then
12177        icou1=-1
12178        return
12179        endif
12180        pn=sqrt(pn2)
12181 
12182 clin-10/25/02 get rid of argument usage mismatch in PTR():
12183         xptr=0.33*PN
12184 c       PNT=PTR(0.33*PN,ISEED)
12185        PNT=PTR(xptr,ISEED)
12186 clin-10/25/02-end
12187 
12188        fain=2.*pi*RANART(NSEED)
12189        pnx=pnT*cos(fain)
12190        pny=pnT*sin(fain)
12191        SIG=1
12192        IF(X.GT.0)SIG=-1
12193 
12194 clin-9/2012: check argument in sqrt():
12195        scheck=pn**2-PNT**2
12196        if(scheck.lt.0) then
12197           write(99,*) 'scheck32: ', scheck
12198           scheck=0.
12199        endif
12200        pnz=SIG*SQRT(scheck)
12201 c       pnz=SIG*SQRT(pn**2-PNT**2)
12202 
12203        en=sqrt(dm2**2+pnx**2+pny**2+pnz**2)
12204 * (2) the momentum for the rho
12205        ppx=-pnx
12206        ppy=-pny
12207        ppz=-pnz
12208        ep=sqrt(amp**2+ppx**2+ppy**2+ppz**2)
12209 * (3) for the delta2, LORENTZ-TRANSFORMATION INTO nn cms FRAME
12210         PBETA  = PnX*BX + PnY*By+ PnZ*Bz
12211               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
12212               Pnx = BX * TRANS0 + PnX
12213               Pny = BY * TRANS0 + PnY
12214               Pnz = BZ * TRANS0 + PnZ
12215 * (4) for the rho, LORENTZ-TRANSFORMATION INTO nn cms FRAME
12216              if(ep.eq.0.)ep=1.E-09
12217               PBETA  = PPX*BX + PPY*By+ PPZ*Bz
12218               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + EP )
12219               PPx = BX * TRANS0 + PPX
12220               PPy = BY * TRANS0 + PPY
12221               PPz = BZ * TRANS0 + PPZ
12222        return
12223        end
12224 ***************************8
12225 ***************************8
12226 *   DELTA MASS GENERATOR
12227        REAL FUNCTION RMASS(DMAX,ISEED)
12228       COMMON/RNDF77/NSEED
12229 cc      SAVE /RNDF77/
12230       SAVE   
12231 * THE MINIMUM MASS FOR DELTA
12232           DMIN = 1.078
12233 * Delta(1232) production
12234           IF(DMAX.LT.1.232) THEN
12235           FM=FDELTA(DMAX)
12236           ELSE
12237           FM=1.
12238           ENDIF
12239           IF(FM.EQ.0.)FM=1.E-06
12240           NTRY1=0
12241 10        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
12242           NTRY1=NTRY1+1
12243           IF((RANART(NSEED) .GT. FDELTA(DM)/FM).AND.
12244      1    (NTRY1.LE.10)) GOTO 10
12245 clin-2/26/03 sometimes Delta mass can reach very high values (e.g. 15.GeV),
12246 c     thus violating the thresh of the collision which produces it 
12247 c     and leads to large violation of energy conservation. 
12248 c     To limit the above, limit the Delta mass below a certain value 
12249 c     (here taken as its central value + 2* B-W fullwidth):
12250           if(dm.gt.1.47) goto 10
12251 
12252        RMASS=DM
12253        RETURN
12254        END
12255 
12256 *------------------------------------------------------------------
12257 * THE Breit Wigner FORMULA
12258         REAL FUNCTION FRHO(DMASS)
12259       SAVE   
12260         AM0=0.77
12261        WID=0.153
12262         FD=0.25*wid**2/((DMASS-AM0)**2+0.25*WID**2)
12263         FRHO=FD
12264         RETURN
12265         END
12266 ***************************8
12267 *   RHO MASS GENERATOR
12268        REAL FUNCTION RHOMAS(DMAX,ISEED)
12269       COMMON/RNDF77/NSEED
12270 cc      SAVE /RNDF77/
12271       SAVE   
12272 * THE MINIMUM MASS FOR DELTA
12273           DMIN = 0.28
12274 * RHO(770) production
12275           IF(DMAX.LT.0.77) THEN
12276           FM=FRHO(DMAX)
12277           ELSE
12278           FM=1.
12279           ENDIF
12280           IF(FM.EQ.0.)FM=1.E-06
12281           NTRY1=0
12282 10        DM = RANART(NSEED) * (DMAX-DMIN) + DMIN
12283           NTRY1=NTRY1+1
12284           IF((RANART(NSEED) .GT. FRHO(DM)/FM).AND.
12285      1    (NTRY1.LE.10)) GOTO 10
12286 clin-2/26/03 limit the rho mass below a certain value
12287 c     (here taken as its central value + 2* B-W fullwidth):
12288           if(dm.gt.1.07) goto 10
12289 
12290        RHOMAS=DM
12291        RETURN
12292        END
12293 ******************************************
12294 * for pp-->pp+2pi
12295 c      real*4 function X2pi(srt)
12296       real function X2pi(srt)
12297 *  This function contains the experimental 
12298 c     total pp-pp+pi(+)pi(-) Xsections    *
12299 *  srt    = DSQRT(s) in GeV                                                  *
12300 *  xsec   = production cross section in mb                                   *
12301 *  earray = EXPerimental table with proton momentum in GeV/c                 *
12302 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye)*
12303 *                                                                            *
12304 ******************************************
12305 c      real*4   xarray(15), earray(15)
12306       real   xarray(15), earray(15)
12307       SAVE   
12308       data earray /2.23,2.81,3.67,4.0,4.95,5.52,5.97,6.04,
12309      &6.6,6.9,7.87,8.11,10.01,16.0,19./
12310       data xarray /1.22,2.51,2.67,2.95,2.96,2.84,2.8,3.2,
12311      &2.7,3.0,2.54,2.46,2.4,1.66,1.5/
12312 
12313            pmass=0.9383 
12314 * 1.Calculate p(lab)  from srt [GeV]
12315 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12316 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12317        x2pi=0.000001
12318        if(srt.le.2.2)return
12319       plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12320       if (plab .lt. earray(1)) then
12321         x2pi = xarray(1)
12322         return
12323       end if
12324 *
12325 * 2.Interpolate double logarithmically to find sigma(srt)
12326 *
12327       do 1001 ie = 1,15
12328         if (earray(ie) .eq. plab) then
12329           x2pi= xarray(ie)
12330           return
12331         else if (earray(ie) .gt. plab) then
12332           ymin = alog(xarray(ie-1))
12333           ymax = alog(xarray(ie))
12334           xmin = alog(earray(ie-1))
12335           xmax = alog(earray(ie))
12336           X2pi = exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
12337      &    /(xmax-xmin) )
12338           return
12339         end if
12340  1001 continue
12341       return
12342         END
12343 ******************************************
12344 * for pp-->pn+pi(+)pi(+)pi(-)
12345 c      real*4 function X3pi(srt)
12346       real function X3pi(srt)
12347 *  This function contains the experimental pp->pp+3pi cross sections          *
12348 *  srt    = DSQRT(s) in GeV                                                   *
12349 *  xsec   = production cross section in mb                                    *
12350 *  earray = EXPerimental table with proton energies in MeV                    *
12351 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12352 *                                                                             *
12353 ******************************************
12354 c      real*4   xarray(12), earray(12)
12355       real   xarray(12), earray(12)
12356       SAVE   
12357       data xarray /0.02,0.4,1.15,1.60,2.19,2.85,2.30,
12358      &3.10,2.47,2.60,2.40,1.70/
12359       data earray /2.23,2.81,3.67,4.00,4.95,5.52,5.97,
12360      &6.04,6.60,6.90,10.01,19./
12361 
12362            pmass=0.9383 
12363 * 1.Calculate p(lab)  from srt [GeV]
12364 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12365 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12366        x3pi=1.E-06
12367        if(srt.le.2.3)return
12368       plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12369       if (plab .lt. earray(1)) then
12370         x3pi = xarray(1)
12371         return
12372       end if
12373 *
12374 * 2.Interpolate double logarithmically to find sigma(srt)
12375 *
12376       do 1001 ie = 1,12
12377         if (earray(ie) .eq. plab) then
12378           x3pi= xarray(ie)
12379           return
12380         else if (earray(ie) .gt. plab) then
12381           ymin = alog(xarray(ie-1))
12382           ymax = alog(xarray(ie))
12383           xmin = alog(earray(ie-1))
12384           xmax = alog(earray(ie))
12385           X3pi= exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
12386      &                                            /(xmax-xmin) )
12387           return
12388         end if
12389  1001 continue
12390       return
12391         END
12392 ******************************************
12393 ******************************************
12394 * for pp-->pp+pi(+)pi(-)pi(0)
12395 c      real*4 function X33pi(srt)
12396       real function X33pi(srt)
12397 *  This function contains the experimental pp->pp+3pi cross sections          *
12398 *  srt    = DSQRT(s) in GeV                                                   *
12399 *  xsec   = production cross section in mb                                    *
12400 *  earray = EXPerimental table with proton energies in MeV                    *
12401 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12402 *                                                                             *
12403 ******************************************
12404 c      real*4   xarray(12), earray(12)
12405       real   xarray(12), earray(12)
12406       SAVE   
12407       data xarray /0.02,0.22,0.74,1.10,1.76,1.84,2.20,
12408      &2.40,2.15,2.60,2.30,1.70/
12409       data earray /2.23,2.81,3.67,4.00,4.95,5.52,5.97,
12410      &6.04,6.60,6.90,10.01,19./
12411 
12412            pmass=0.9383 
12413        x33pi=1.E-06
12414        if(srt.le.2.3)return
12415 * 1.Calculate p(lab)  from srt [GeV]
12416 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12417 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12418       plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12419       if (plab .lt. earray(1)) then
12420         x33pi = xarray(1)
12421         return
12422       end if
12423 *
12424 * 2.Interpolate double logarithmically to find sigma(srt)
12425 *
12426       do 1001 ie = 1,12
12427         if (earray(ie) .eq. plab) then
12428           x33pi= xarray(ie)
12429           return
12430         else if (earray(ie) .gt. plab) then
12431           ymin = alog(xarray(ie-1))
12432           ymax = alog(xarray(ie))
12433           xmin = alog(earray(ie-1))
12434           xmax = alog(earray(ie))
12435           x33pi= exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
12436      &    /(xmax-xmin))
12437           return
12438         end if
12439  1001   continue
12440         return
12441         END
12442 ******************************************
12443 c       REAL*4 FUNCTION X4pi(SRT)
12444       REAL FUNCTION X4pi(SRT)
12445       SAVE   
12446 *       CROSS SECTION FOR NN-->DD+rho PROCESS
12447 * *****************************
12448        akp=0.498
12449        ak0=0.498
12450        ana=0.94
12451        ada=1.232
12452        al=1.1157
12453        as=1.1197
12454        pmass=0.9383
12455        ES=SRT
12456        IF(ES.LE.4)THEN
12457        X4pi=0.
12458        ELSE
12459 * cross section for two resonance pp-->DD+DN*+N*N*
12460        xpp2pi=4.*x2pi(es)
12461 * cross section for pp-->pp+spi
12462        xpp3pi=3.*(x3pi(es)+x33pi(es))
12463 * cross section for pp-->pD+ and nD++
12464        pps1=sigma(es,1,1,0)+0.5*sigma(es,1,1,1)
12465        pps2=1.5*sigma(es,1,1,1)
12466        ppsngl=pps1+pps2+s1535(es)
12467 * CROSS SECTION FOR KAON PRODUCTION from the four channels
12468 * for NLK channel
12469        xk1=0
12470        xk2=0
12471        xk3=0
12472        xk4=0
12473        t1nlk=ana+al+akp
12474        t2nlk=ana+al-akp
12475        if(es.le.t1nlk)go to 333
12476        pmnlk2=(es**2-t1nlk**2)*(es**2-t2nlk**2)/(4.*es**2)
12477        pmnlk=sqrt(pmnlk2)
12478        xk1=pplpk(es)
12479 * for DLK channel
12480        t1dlk=ada+al+akp
12481        t2dlk=ada+al-akp
12482        if(es.le.t1dlk)go to 333
12483        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
12484        pmdlk=sqrt(pmdlk2)
12485        xk3=pplpk(es)
12486 * for NSK channel
12487        t1nsk=ana+as+akp
12488        t2nsk=ana+as-akp
12489        if(es.le.t1nsk)go to 333
12490        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
12491        pmnsk=sqrt(pmnsk2)
12492        xk2=ppk1(es)+ppk0(es)
12493 * for DSK channel
12494        t1DSk=aDa+aS+akp
12495        t2DSk=aDa+aS-akp
12496        if(es.le.t1dsk)go to 333
12497        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
12498        pmDSk=sqrt(pmDSk2)
12499        xk4=ppk1(es)+ppk0(es)
12500 * THE TOTAL KAON+ AND KAON0 PRODUCTION CROSS SECTION IS THEN
12501 333       XKAON=3.*(xk1+xk2+xk3+xk4)
12502 * cross section for pp-->DD+rho
12503        x4pi=pp1(es)-ppsngl-xpp2pi-xpp3pi-XKAON
12504        if(x4pi.le.0)x4pi=1.E-06
12505        ENDIF
12506        RETURN
12507        END
12508 ******************************************
12509 * for pp-->inelastic
12510 c      real*4 function pp1(srt)
12511       real function pp1(srt)
12512       SAVE   
12513 *  srt    = DSQRT(s) in GeV                                                   *
12514 *  xsec   = production cross section in mb                                    *
12515 *  earray = EXPerimental table with proton energies in MeV                    *
12516 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12517 *                                                                             *
12518 ******************************************
12519            pmass=0.9383 
12520        PP1=0.
12521 * 1.Calculate p(lab)  from srt [GeV]
12522 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12523 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12524       plab2=((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2
12525        IF(PLAB2.LE.0)RETURN
12526       plab=sqrt(PLAB2)
12527        pmin=0.968
12528        pmax=2080
12529       if ((plab .lt. pmin).or.(plab.gt.pmax)) then
12530         pp1 = 0.
12531         return
12532       end if
12533 c* fit parameters
12534        a=30.9
12535        b=-28.9
12536        c=0.192
12537        d=-0.835
12538        an=-2.46
12539         pp1 = a+b*(plab**an)+c*(alog(plab))**2
12540        if(pp1.le.0)pp1=0.0
12541         return
12542         END
12543 ******************************************
12544 * for pp-->elastic
12545 c      real*4 function pp2(srt)
12546       real function pp2(srt)
12547       SAVE   
12548 *  srt    = DSQRT(s) in GeV                                                   *
12549 *  xsec   = production cross section in mb                                    *
12550 *  earray = EXPerimental table with proton energies in MeV                    *
12551 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12552 *                                                                             *
12553 ******************************************
12554            pmass=0.9383 
12555 * 1.Calculate p(lab)  from srt [GeV]
12556 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12557 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12558 
12559 clin-9/2012: check argument in sqrt():
12560        scheck=((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2
12561        if(scheck.lt.0) then
12562           write(99,*) 'scheck33: ', scheck
12563           scheck=0.
12564        endif
12565        plab=sqrt(scheck)
12566 c      plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12567 
12568        pmin=2.
12569        pmax=2050
12570        if(plab.gt.pmax)then
12571        pp2=8.
12572        return
12573        endif
12574         if(plab .lt. pmin)then
12575         pp2 = 25.
12576         return
12577         end if
12578 c* fit parameters
12579        a=11.2
12580        b=25.5
12581        c=0.151
12582        d=-1.62
12583        an=-1.12
12584         pp2 = a+b*(plab**an)+c*(alog(plab))**2+d*alog(plab)
12585        if(pp2.le.0)pp2=0
12586         return
12587         END
12588 
12589 ******************************************
12590 * for pp-->total
12591 c      real*4 function ppt(srt)
12592       real function ppt(srt)
12593       SAVE   
12594 *  srt    = DSQRT(s) in GeV                                                   *
12595 *  xsec   = production cross section in mb                                    *
12596 *  earray = EXPerimental table with proton energies in MeV                    *
12597 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12598 *                                                                             *
12599 ******************************************
12600            pmass=0.9383 
12601 * 1.Calculate p(lab)  from srt [GeV]
12602 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12603 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12604 
12605 clin-9/2012: check argument in sqrt():
12606        scheck=((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2
12607        if(scheck.lt.0) then
12608           write(99,*) 'scheck34: ', scheck
12609           scheck=0.
12610        endif
12611        plab=sqrt(scheck)
12612 c      plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12613 
12614        pmin=3. 
12615        pmax=2100
12616       if ((plab .lt. pmin).or.(plab.gt.pmax)) then
12617         ppt = 55.
12618         return
12619       end if
12620 c* fit parameters
12621        a=45.6
12622        b=219.0
12623        c=0.410
12624        d=-3.41
12625        an=-4.23
12626         ppt = a+b*(plab**an)+c*(alog(plab))**2+d*alog(plab)
12627        if(ppt.le.0)ppt=0.0
12628         return
12629         END
12630 
12631 *************************
12632 * cross section for N*(1535) production in PP collisions
12633 * VARIABLES:
12634 * LB1,LB2 ARE THE LABLES OF THE TWO COLLIDING PARTICLES
12635 * SRT IS THE CMS ENERGY
12636 * X1535 IS THE N*(1535) PRODUCTION CROSS SECTION
12637 * NOTE THAT THE N*(1535) PRODUCTION CROSS SECTION IS 2 TIMES THE ETA 
12638 * PRODUCTION CROSS SECTION
12639 * DATE: Aug. 1 , 1994
12640 * ********************************
12641        real function s1535(SRT)
12642       SAVE   
12643        S0=2.424
12644        s1535=0.
12645        IF(SRT.LE.S0)RETURN
12646        S1535=2.*0.102*(SRT-S0)/(0.058+(SRT-S0)**2)
12647        return
12648        end
12649 ****************************************
12650 * generate a table for pt distribution for
12651        subroutine tablem
12652 * THE PROCESS N+N--->N+N+PION
12653 *       DATE : July 11, 1994
12654 *****************************************
12655         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
12656 cc      SAVE /TABLE/
12657       SAVE   
12658        ptmax=2.01
12659        anorm=ptdis(ptmax)
12660        do 10 L=0,200
12661        x=0.01*float(L+1)
12662        rr=ptdis(x)/anorm
12663        earray(l)=rr
12664        xarray(l)=x
12665 10       continue
12666        RETURN
12667        end
12668 *********************************
12669        real function ptdis(x)
12670       SAVE   
12671 * NUCLEON TRANSVERSE MOMENTUM DISTRIBUTION AT HIGH ENERGIES
12672 * DATE: Aug. 11, 1994
12673 *********************************
12674        b=3.78
12675        c=0.47
12676        d=3.60
12677 c       b=b*3
12678 c       d=d*3
12679        ptdis=1./(2.*b)*(1.-exp(-b*x**2))-c/d*x*exp(-d*x)
12680      1     -c/D**2*(exp(-d*x)-1.)
12681        return
12682        end
12683 *****************************
12684        subroutine ppxS(lb1,lb2,srt,ppsig,spprho,ipp)
12685 * purpose: this subroutine gives the cross section for pion+pion 
12686 *          elastic collision
12687 * variables: 
12688 *       input: lb1,lb2 and srt are the labels and srt for I1 and I2
12689 *       output: ppsig: pp xsection
12690 *               ipp: label for the pion+pion channel
12691 *               Ipp=0 NOTHING HAPPEND 
12692 *                  1 for Pi(+)+PI(+) DIRECT
12693 *                   2     PI(+)+PI(0) FORMING RHO(+)
12694 *                  3     PI(+)+PI(-) FORMING RHO(0)
12695 *                   4     PI(0)+PI(O) DIRECT
12696 *                  5     PI(0)+PI(-) FORMING RHO(-)
12697 *                  6     PI(-)+PI(-) DIRECT
12698 * reference: G.F. Bertsch, Phys. Rev. D37 (1988) 1202.
12699 * date : Aug 29, 1994
12700 *****************************
12701        parameter (amp=0.14,pi=3.1415926)
12702       SAVE   
12703        PPSIG=0.0
12704 
12705 cbzdbg10/15/99
12706         spprho=0.0
12707 cbzdbg10/15/99 end
12708 
12709        IPP=0
12710        IF(SRT.LE.0.3)RETURN
12711        q=sqrt((srt/2)**2-amp**2)
12712        esigma=5.8*amp
12713        tsigma=2.06*q
12714        erho=0.77
12715        trho=0.095*q*(q/amp/(1.+(q/erho)**2))**2
12716        esi=esigma-srt
12717        if(esi.eq.0)then
12718        d00=pi/2.
12719        go to 10
12720        endif
12721        d00=atan(tsigma/2./esi)
12722 10       erh=erho-srt
12723        if(erh.eq.0.)then
12724        d11=pi/2.
12725        go to 20
12726        endif
12727        d11=atan(trho/2./erh)
12728 20       d20=-0.12*q/amp
12729        s0=8.*pi*sin(d00)**2/q**2
12730        s1=8*pi*3*sin(d11)**2/q**2
12731        s2=8*pi*5*sin(d20)**2/q**2
12732 c    !! GeV^-2 to mb
12733         s0=s0*0.197**2*10.
12734         s1=s1*0.197**2*10.
12735         s2=s2*0.197**2*10.
12736 C       ppXS=s0/9.+s1/3.+s2*0.56
12737 C       if(ppxs.le.0)ppxs=0.00001
12738        spprho=s1/2.
12739 * (1) PI(+)+PI(+)
12740        IF(LB1.EQ.5.AND.LB2.EQ.5)THEN
12741        IPP=1
12742        PPSIG=S2
12743        RETURN
12744        ENDIF
12745 * (2) PI(+)+PI(0)
12746        IF((LB1.EQ.5.AND.LB2.EQ.4).OR.(LB1.EQ.4.AND.LB2.EQ.5))THEN
12747        IPP=2
12748        PPSIG=S2/2.+S1/2.
12749        RETURN
12750        ENDIF
12751 * (3) PI(+)+PI(-)
12752        IF((LB1.EQ.5.AND.LB2.EQ.3).OR.(LB1.EQ.3.AND.LB2.EQ.5))THEN
12753        IPP=3
12754        PPSIG=S2/6.+S1/2.+S0/3.
12755        RETURN
12756        ENDIF
12757 * (4) PI(0)+PI(0)
12758        IF(LB1.EQ.4.AND.LB2.EQ.4)THEN
12759        IPP=4
12760        PPSIG=2*S2/3.+S0/3.
12761        RETURN
12762        ENDIF
12763 * (5) PI(0)+PI(-)
12764        IF((LB1.EQ.4.AND.LB2.EQ.3).OR.(LB1.EQ.3.AND.LB2.EQ.4))THEN
12765        IPP=5
12766        PPSIG=S2/2.+S1/2.
12767        RETURN
12768        ENDIF
12769 * (6) PI(-)+PI(-)
12770        IF(LB1.EQ.3.AND.LB2.EQ.3)THEN
12771        IPP=6
12772        PPSIG=S2
12773        ENDIF
12774        return
12775        end
12776 **********************************
12777 * elementary kaon production cross sections
12778 *  from the CERN data book
12779 *  date: Sept.2, 1994
12780 *  for pp-->pLK+
12781 c      real*4 function pplpk(srt)
12782       real function pplpk(srt)
12783       SAVE   
12784 *  srt    = DSQRT(s) in GeV                                                   *
12785 *  xsec   = production cross section in mb                                    *
12786 *  earray = EXPerimental table with proton energies in MeV                    *
12787 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
12788 *                                                                             *
12789 ******************************************
12790            pmass=0.9383 
12791 * 1.Calculate p(lab)  from srt [GeV]
12792 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12793 *   find the center of mass energy corresponding to the given pm as
12794 *   if Lambda+N+K are produced
12795        pplpk=0.
12796 
12797 clin-9/2012: check argument in sqrt():
12798        scheck=((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2
12799        if(scheck.lt.0) then
12800           write(99,*) 'scheck35: ', scheck
12801           scheck=0.
12802        endif
12803        plab=sqrt(scheck)
12804 c        plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12805 
12806        pmin=2.82
12807        pmax=25.0
12808        if(plab.gt.pmax)then
12809        pplpk=0.036
12810        return
12811        endif
12812         if(plab .lt. pmin)then
12813         pplpk = 0.
12814         return
12815         end if
12816 c* fit parameters
12817        a=0.0654
12818        b=-3.16
12819        c=-0.0029
12820        an=-4.14
12821         pplpk = a+b*(plab**an)+c*(alog(plab))**2
12822        if(pplpk.le.0)pplpk=0
12823         return
12824         END
12825 
12826 ******************************************
12827 * for pp-->pSigma+K0
12828 c      real*4 function ppk0(srt)
12829       real function ppk0(srt)
12830 *  srt    = DSQRT(s) in GeV                                                   *
12831 *  xsec   = production cross section in mb                                    *
12832 *                                                                             *
12833 ******************************************
12834 c      real*4   xarray(7), earray(7)
12835       real   xarray(7), earray(7)
12836       SAVE   
12837       data xarray /0.030,0.025,0.025,0.026,0.02,0.014,0.06/
12838       data earray /3.67,4.95,5.52,6.05,6.92,7.87,10./
12839 
12840            pmass=0.9383 
12841 * 1.Calculate p(lab)  from srt [GeV]
12842 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12843 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12844        ppk0=0
12845        if(srt.le.2.63)return
12846        if(srt.gt.4.54)then
12847        ppk0=0.037
12848        return
12849        endif
12850         plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12851         if (plab .lt. earray(1)) then
12852         ppk0 = xarray(1)
12853         return
12854       end if
12855 *
12856 * 2.Interpolate double logarithmically to find sigma(srt)
12857 *
12858       do 1001 ie = 1,7
12859         if (earray(ie) .eq. plab) then
12860           ppk0 = xarray(ie)
12861           go to 10
12862         else if (earray(ie) .gt. plab) then
12863           ymin = alog(xarray(ie-1))
12864           ymax = alog(xarray(ie))
12865           xmin = alog(earray(ie-1))
12866           xmax = alog(earray(ie))
12867           ppk0 = exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
12868      &/(xmax-xmin) )
12869           go to 10
12870         end if
12871  1001 continue
12872 10       continue
12873       return
12874         END
12875 ******************************************
12876 * for pp-->pSigma0K+
12877 c      real*4 function ppk1(srt)
12878       real function ppk1(srt)
12879 *  srt    = DSQRT(s) in GeV                                                   *
12880 *  xsec   = production cross section in mb                                    *
12881 *                                                                             *
12882 ******************************************
12883 c      real*4   xarray(7), earray(7)
12884       real   xarray(7), earray(7)
12885       SAVE   
12886       data xarray /0.013,0.025,0.016,0.012,0.017,0.029,0.025/
12887       data earray /3.67,4.95,5.52,5.97,6.05,6.92,7.87/
12888 
12889            pmass=0.9383 
12890 * 1.Calculate p(lab)  from srt [GeV]
12891 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
12892 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
12893        ppk1=0.
12894        if(srt.le.2.63)return
12895        if(srt.gt.4.08)then
12896        ppk1=0.025
12897        return
12898        endif
12899         plab=sqrt(((srt**2-2.*pmass**2)/(2.*pmass))**2-pmass**2)
12900         if (plab .lt. earray(1)) then
12901         ppk1 =xarray(1)
12902         return
12903       end if
12904 *
12905 * 2.Interpolate double logarithmically to find sigma(srt)
12906 *
12907       do 1001 ie = 1,7
12908         if (earray(ie) .eq. plab) then
12909           ppk1 = xarray(ie)
12910           go to 10
12911         else if (earray(ie) .gt. plab) then
12912           ymin = alog(xarray(ie-1))
12913           ymax = alog(xarray(ie))
12914           xmin = alog(earray(ie-1))
12915           xmax = alog(earray(ie))
12916           ppk1 = exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
12917      &/(xmax-xmin) )
12918           go to 10
12919         end if
12920  1001 continue
12921 10       continue
12922       return
12923         END
12924 **********************************
12925 *                                                                      *
12926 *                                                                      *
12927       SUBROUTINE CRPN(PX,PY,PZ,SRT,I1,I2,
12928      & IBLOCK,xkaon0,xkaon,Xphi,xphin)
12929 *     PURPOSE:                                                         *
12930 *           DEALING WITH PION+N-->L/S+KAON PROCESS AND PION PRODUCTION *
12931 *     NOTE   :                                                         *
12932 *          
12933 *     QUANTITIES:                                                 *
12934 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
12935 *           SRT      - SQRT OF S                                       *
12936 *           IBLOCK   - THE INFORMATION BACK                            *
12937 *                     7  PION+N-->L/S+KAON
12938 *           iblock   - 77 pion+N-->Delta+pion
12939 *           iblock   - 78 pion+N-->Delta+RHO
12940 *           iblock   - 79 pion+N-->Delta+OMEGA
12941 *           iblock   - 222 pion+N-->Phi 
12942 **********************************
12943         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
12944      1  AMP=0.93828,AP1=0.13496,APHI=1.020,
12945      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
12946         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
12947         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
12948         COMMON /AA/ R(3,MAXSTR)
12949 cc      SAVE /AA/
12950         COMMON /BB/ P(3,MAXSTR)
12951 cc      SAVE /BB/
12952         COMMON /CC/ E(MAXSTR)
12953 cc      SAVE /CC/
12954         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
12955 cc      SAVE /EE/
12956         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
12957 cc      SAVE /input1/
12958       COMMON/RNDF77/NSEED
12959 cc      SAVE /RNDF77/
12960       SAVE   
12961 
12962       PX0=PX
12963       PY0=PY
12964       PZ0=PZ
12965       iblock=1
12966       x1=RANART(NSEED)
12967       ianti=0
12968       if(lb(i1).lt.0 .or. lb(i2).lt.0) ianti=1
12969       if(xkaon0/(xkaon+Xphi).ge.x1)then
12970 * kaon production
12971 *-----------------------------------------------------------------------
12972         IBLOCK=7
12973         if(ianti .eq. 1)iblock=-7
12974         NTAG=0
12975 * RELABLE PARTICLES FOR THE PROCESS PION+n-->LAMBDA K OR SIGMA k
12976 * DECIDE LAMBDA OR SIGMA PRODUCTION, AND TO CALCULATE THE NEW
12977 * MOMENTA FOR PARTICLES IN THE FINAL STATE.
12978        KAONC=0
12979        IF(PNLKA(SRT)/(PNLKA(SRT)
12980      &       +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
12981        IF(E(I1).LE.0.2)THEN
12982            LB(I1)=23
12983            E(I1)=AKA
12984            IF(KAONC.EQ.1)THEN
12985               LB(I2)=14
12986               E(I2)=ALA
12987            ELSE
12988               LB(I2) = 15 + int(3 * RANART(NSEED))
12989               E(I2)=ASA       
12990            ENDIF
12991            if(ianti .eq. 1)then
12992               lb(i1) = 21
12993               lb(i2) = -lb(i2)
12994            endif
12995        ELSE
12996            LB(I2)=23
12997            E(I2)=AKA
12998            IF(KAONC.EQ.1)THEN
12999               LB(I1)=14
13000               E(I1)=ALA
13001            ELSE
13002               LB(I1) = 15 + int(3 * RANART(NSEED))
13003               E(I1)=ASA       
13004            ENDIF
13005            if(ianti .eq. 1)then
13006               lb(i2) = 21
13007               lb(i1) = -lb(i1)
13008            endif
13009        ENDIF
13010         EM1=E(I1)
13011         EM2=E(I2)
13012         go to 50
13013 * to gererate the momentum for the kaon and L/S
13014       elseif(Xphi/(xkaon+Xphi).ge.x1)then
13015           iblock=222
13016          if(xphin/Xphi .ge. RANART(NSEED))then
13017           LB(I1)= 1+int(2*RANART(NSEED))
13018            E(I1)=AMN
13019          else
13020           LB(I1)= 6+int(4*RANART(NSEED))
13021            E(I1)=AM0
13022          endif
13023 c  !! at present only baryon
13024          if(ianti .eq. 1)lb(i1)=-lb(i1)
13025           LB(I2)= 29
13026            E(I2)=APHI
13027         EM1=E(I1)
13028         EM2=E(I2)
13029        go to 50
13030          else
13031 * CHECK WHAT KIND OF PION PRODUCTION PROCESS HAS HAPPENED
13032        IF(RANART(NSEED).LE.TWOPI(SRT)/
13033      &  (TWOPI(SRT)+THREPI(SRT)+FOURPI(SRT)))THEN
13034        iblock=77
13035        ELSE 
13036         IF(THREPI(SRT)/(THREPI(SRT)+FOURPI(SRT)).
13037      &  GT.RANART(NSEED))THEN
13038        IBLOCK=78
13039        ELSE
13040        IBLOCK=79
13041        ENDIF
13042        endif
13043        ntag=0
13044 * pion production (Delta+pion/rho/omega in the final state)
13045 * generate the mass of the delta resonance
13046        X2=RANART(NSEED)
13047 * relable the particles
13048        if(iblock.eq.77)then
13049 * GENERATE THE DELTA MASS
13050        dmax=srt-ap1-0.02
13051        dm=rmass(dmax,iseed)
13052 * pion+baryon-->pion+delta
13053 * Relable particles, I1 is assigned to the Delta and I2 is assigned to the
13054 * meson
13055 *(1) for pi(+)+p-->D(+)+P(+) OR D(++)+p(0)
13056        if( ((lb(i1).eq.1.and.lb(i2).eq.5).
13057      &  or.(lb(i1).eq.5.and.lb(i2).eq.1))
13058      &       .OR. ((lb(i1).eq.-1.and.lb(i2).eq.3).
13059      &  or.(lb(i1).eq.3.and.lb(i2).eq.-1)) )then
13060               if(iabs(lb(i1)).eq.1)then
13061         ii = i1
13062        IF(X2.LE.0.5)THEN
13063        lb(i1)=8
13064        e(i1)=dm
13065        lb(i2)=5
13066        e(i2)=ap1
13067        go to 40
13068        ELSE
13069        lb(i1)=9
13070        e(i1)=dm
13071        lb(i2)=4
13072         ipi = 4
13073        e(i2)=ap1
13074        go to 40
13075        endif
13076               else
13077         ii = i2
13078        IF(X2.LE.0.5)THEN
13079        lb(i2)=8
13080        e(i2)=dm
13081        lb(i1)=5
13082        e(i1)=ap1
13083        go to 40
13084        ELSE
13085        lb(i2)=9
13086        e(i2)=dm
13087        lb(i1)=4
13088        e(i1)=ap1
13089        go to 40
13090        endif
13091               endif
13092        endif
13093 *(2) for pi(-)+p-->D(0)+P(0) OR D(+)+p(-),or D(-)+p(+)
13094        if( ((lb(i1).eq.1.and.lb(i2).eq.3).
13095      &  or.(lb(i1).eq.3.and.lb(i2).eq.1))
13096      &        .OR. ((lb(i1).eq.-1.and.lb(i2).eq.5).
13097      &  or.(lb(i1).eq.5.and.lb(i2).eq.-1)) )then
13098               if(iabs(lb(i1)).eq.1)then
13099         ii = i1
13100        IF(X2.LE.0.33)THEN
13101        lb(i1)=6
13102        e(i1)=dm
13103        lb(i2)=5
13104        e(i2)=ap1
13105        go to 40
13106        ENDIF
13107        if(X2.gt.0.33.and.X2.le.0.67)then
13108        lb(i1)=7
13109        e(i1)=dm
13110        lb(i2)=4
13111        e(i2)=ap1
13112        go to 40
13113        endif
13114        if(X2.gt.0.67)then
13115        lb(i1)=8
13116        e(i1)=dm
13117        lb(i2)=3
13118        e(i2)=ap1
13119        go to 40
13120        endif
13121               else
13122         ii = i2
13123        IF(X2.LE.0.33)THEN
13124        lb(i2)=6
13125        e(i2)=dm
13126        lb(i1)=5
13127        e(i1)=ap1
13128        go to 40
13129        ENDIF
13130        if(X2.gt.0.33.and.X2.le.0.67)then
13131        lb(i2)=7
13132        e(i2)=dm
13133        lb(i1)=4
13134        e(i1)=ap1
13135        go to 40
13136        endif
13137        if(X2.gt.0.67)then
13138        lb(i2)=8
13139        e(i2)=dm
13140        lb(i1)=3
13141        e(i1)=ap1
13142        go to 40
13143        endif
13144               endif
13145        endif
13146 *(3) for pi(+)+n-->D(+)+Pi(0) OR D(++)+p(-) or D(0)+pi(+)
13147        if( ((lb(i1).eq.2.and.lb(i2).eq.5).
13148      &   or.(lb(i1).eq.5.and.lb(i2).eq.2))
13149      & .OR. ((lb(i1).eq.-2.and.lb(i2).eq.3).
13150      &   or.(lb(i1).eq.3.and.lb(i2).eq.-2)) )then
13151               if(iabs(lb(i1)).eq.2)then
13152         ii = i1
13153        IF(X2.LE.0.33)THEN
13154        lb(i1)=8
13155        e(i1)=dm
13156        lb(i2)=4
13157        e(i2)=ap1
13158        go to 40
13159        ENDIF
13160        if(X2.gt.0.33.and.X2.le.0.67)then
13161        lb(i1)=7
13162        e(i1)=dm
13163        lb(i2)=5
13164        e(i2)=ap1
13165        go to 40
13166        endif
13167        if(X2.gt.0.67)then
13168        lb(i1)=9
13169        e(i1)=dm
13170        lb(i2)=3
13171        e(i2)=ap1
13172        go to 40
13173        endif
13174               else
13175         ii = i2
13176        IF(X2.LE.0.33)THEN
13177        lb(i2)=8
13178        e(i2)=dm
13179        lb(i1)=4
13180        e(i1)=ap1
13181        go to 40
13182        ENDIF
13183        if(X2.gt.0.33.and.X2.le.0.67)then
13184        lb(i2)=7
13185        e(i2)=dm
13186        lb(i1)=5
13187        e(i1)=ap1
13188        go to 40
13189        endif
13190        if(X2.gt.0.67)then
13191        lb(i2)=9
13192        e(i2)=dm
13193        lb(i1)=3
13194        e(i1)=ap1
13195        go to 40
13196        endif
13197               endif
13198        endif
13199 *(4) for pi(0)+p-->D(+)+Pi(0) OR D(++)+p(-) or D(0)+pi(+)
13200        if((iabs(lb(i1)).eq.1.and.lb(i2).eq.4).
13201      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.1))then
13202               if(iabs(lb(i1)).eq.1)then
13203         ii = i1
13204        IF(X2.LE.0.33)THEN
13205        lb(i1)=8
13206        e(i1)=dm
13207        lb(i2)=4
13208        e(i2)=ap1
13209        go to 40
13210        ENDIF
13211        if(X2.gt.0.33.and.X2.le.0.67)then
13212        lb(i1)=7
13213        e(i1)=dm
13214        lb(i2)=5
13215        e(i2)=ap1
13216        go to 40
13217        endif
13218        if(X2.gt.0.67)then
13219        lb(i1)=9
13220        e(i1)=dm
13221        lb(i2)=3
13222        e(i2)=ap1
13223        go to 40
13224        endif
13225               else
13226         ii = i2
13227        IF(X2.LE.0.33)THEN
13228        lb(i2)=8
13229        e(i2)=dm
13230        lb(i1)=4
13231        e(i1)=ap1
13232        go to 40
13233        ENDIF
13234        if(X2.gt.0.33.and.X2.le.0.67)then
13235        lb(i2)=7
13236        e(i2)=dm
13237        lb(i1)=5
13238        e(i1)=ap1
13239        go to 40
13240        endif
13241        if(X2.gt.0.67)then
13242        lb(i2)=9
13243        e(i2)=dm
13244        lb(i1)=3
13245        e(i1)=ap1
13246        go to 40
13247        endif
13248               endif
13249        endif 
13250 *(5) for pi(-)+n-->D(-)+P(0) OR D(0)+p(-)
13251        if( ((lb(i1).eq.2.and.lb(i2).eq.3).
13252      &  or.(lb(i1).eq.3.and.lb(i2).eq.2))
13253      &         .OR. ((lb(i1).eq.-2.and.lb(i2).eq.5).
13254      &  or.(lb(i1).eq.5.and.lb(i2).eq.-2)) )then
13255               if(iabs(lb(i1)).eq.2)then
13256         ii = i1
13257        IF(X2.LE.0.5)THEN
13258        lb(i1)=6
13259        e(i1)=dm
13260        lb(i2)=4
13261        e(i2)=ap1
13262        go to 40
13263        ELSE
13264        lb(i1)=7
13265        e(i1)=dm
13266        lb(i2)=3
13267        e(i2)=ap1
13268        go to 40
13269        endif
13270               else
13271         ii = i2
13272        IF(X2.LE.0.5)THEN
13273        lb(i2)=6
13274        e(i2)=dm
13275        lb(i1)=4
13276        e(i1)=ap1
13277        go to 40
13278        ELSE
13279        lb(i2)=7
13280        e(i2)=dm
13281        lb(i1)=3
13282        e(i1)=ap1
13283        go to 40
13284        endif
13285               endif
13286        ENDIF
13287 *(6) for pi(0)+n-->D(0)+P(0), D(-)+p(+) or D(+)+p(-)
13288        if((iabs(lb(i1)).eq.2.and.lb(i2).eq.4).
13289      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.2))then
13290               if(iabs(lb(i1)).eq.2)then
13291         ii = i1
13292        IF(X2.LE.0.33)THEN
13293        lb(i1)=7
13294        e(i1)=dm
13295        lb(i2)=4
13296        e(i2)=ap1
13297        go to 40
13298        Endif
13299        IF(X2.LE.0.67.AND.X2.GT.0.33)THEN       
13300        lb(i1)=6
13301        e(i1)=dm
13302        lb(i2)=5
13303        e(i2)=ap1
13304        go to 40
13305        endif
13306        IF(X2.GT.0.67)THEN
13307        LB(I1)=8
13308        E(I1)=DM
13309        LB(I2)=3
13310        E(I2)=AP1
13311        GO TO 40
13312        ENDIF
13313               else
13314         ii = i2
13315        IF(X2.LE.0.33)THEN
13316        lb(i2)=7
13317        e(i2)=dm
13318        lb(i1)=4
13319        e(i1)=ap1
13320        go to 40
13321        ENDIF
13322        IF(X2.LE.0.67.AND.X2.GT.0.33)THEN       
13323        lb(i2)=6
13324        e(i2)=dm
13325        lb(i1)=5
13326        e(i1)=ap1
13327        go to 40
13328        endif
13329        IF(X2.GT.0.67)THEN
13330        LB(I2)=8
13331        E(I2)=DM
13332        LB(I1)=3
13333        E(I1)=AP1
13334        GO TO 40
13335        ENDIF
13336               endif
13337        endif
13338                      ENDIF
13339        if(iblock.eq.78)then
13340        call Rmasdd(srt,1.232,0.77,1.08,
13341      &  0.28,ISEED,4,dm,ameson)
13342        arho=AMESON
13343 * pion+baryon-->Rho+delta
13344 *(1) for pi(+)+p-->D(+)+rho(+) OR D(++)+rho(0)
13345        if( ((lb(i1).eq.1.and.lb(i2).eq.5).
13346      &  or.(lb(i1).eq.5.and.lb(i2).eq.1))
13347      &        .OR. ((lb(i1).eq.-1.and.lb(i2).eq.3).
13348      &  or.(lb(i1).eq.3.and.lb(i2).eq.-1)) )then
13349               if(iabs(lb(i1)).eq.1)then
13350         ii = i1
13351        IF(X2.LE.0.5)THEN
13352        lb(i1)=8
13353        e(i1)=dm
13354        lb(i2)=27
13355        e(i2)=arho
13356        go to 40
13357        ELSE
13358        lb(i1)=9
13359        e(i1)=dm
13360        lb(i2)=26
13361        e(i2)=arho
13362        go to 40
13363        endif
13364               else
13365         ii = i2
13366        IF(X2.LE.0.5)THEN
13367        lb(i2)=8
13368        e(i2)=dm
13369        lb(i1)=27
13370        e(i1)=arho
13371        go to 40
13372        ELSE
13373        lb(i2)=9
13374        e(i2)=dm
13375        lb(i1)=26
13376        e(i1)=arho
13377        go to 40
13378        endif
13379               endif
13380        endif
13381 *(2) for pi(-)+p-->D(+)+rho(-) OR D(0)+rho(0) or D(-)+rho(+)
13382        if( ((lb(i1).eq.1.and.lb(i2).eq.3).
13383      &  or.(lb(i1).eq.3.and.lb(i2).eq.1))
13384      &        .OR. ((lb(i1).eq.-1.and.lb(i2).eq.5).
13385      &  or.(lb(i1).eq.5.and.lb(i2).eq.-1)) )then
13386               if(iabs(lb(i1)).eq.1)then
13387         ii = i1
13388        IF(X2.LE.0.33)THEN
13389        lb(i1)=6
13390        e(i1)=dm
13391        lb(i2)=27
13392        e(i2)=arho
13393        go to 40
13394        ENDIF
13395        if(X2.gt.0.33.and.X2.le.0.67)then
13396        lb(i1)=7
13397        e(i1)=dm
13398        lb(i2)=26
13399        e(i2)=arho
13400        go to 40
13401        endif
13402        if(X2.gt.0.67)then
13403        lb(i1)=8
13404        e(i1)=dm
13405        lb(i2)=25
13406        e(i2)=arho
13407        go to 40
13408        endif
13409               else
13410         ii = i2
13411        IF(X2.LE.0.33)THEN
13412        lb(i2)=6
13413        e(i2)=dm
13414        lb(i1)=27
13415        e(i1)=arho
13416        go to 40
13417        ENDIF
13418        if(X2.gt.0.33.and.X2.le.0.67)then
13419        lb(i2)=7
13420        e(i2)=dm
13421        lb(i1)=26
13422        e(i1)=arho
13423        go to 40
13424        endif
13425        if(X2.gt.0.67)then
13426        lb(i2)=8
13427        e(i2)=dm
13428        lb(i1)=25
13429        e(i1)=arho
13430        go to 40
13431        endif
13432               endif
13433        endif
13434 *(3) for pi(+)+n-->D(+)+rho(0) OR D(++)+rho(-) or D(0)+rho(+)
13435        if( ((lb(i1).eq.2.and.lb(i2).eq.5).
13436      &  or.(lb(i1).eq.5.and.lb(i2).eq.2))
13437      &       .OR.((lb(i1).eq.-2.and.lb(i2).eq.3).
13438      &  or.(lb(i1).eq.3.and.lb(i2).eq.-2)) )then
13439               if(iabs(lb(i1)).eq.2)then
13440         ii = i1
13441        IF(X2.LE.0.33)THEN
13442        lb(i1)=8
13443        e(i1)=dm
13444        lb(i2)=26
13445        e(i2)=arho
13446        go to 40
13447        ENDIF
13448        if(X2.gt.0.33.and.X2.le.0.67)then
13449        lb(i1)=7
13450        e(i1)=dm
13451        lb(i2)=27
13452        e(i2)=arho
13453        go to 40
13454        endif
13455        if(X2.gt.0.67)then
13456        lb(i1)=9
13457        e(i1)=dm
13458        lb(i2)=25
13459        e(i2)=arho
13460        go to 40
13461        endif
13462               else
13463         ii = i2
13464        IF(X2.LE.0.33)THEN
13465        lb(i2)=8
13466        e(i2)=dm
13467        lb(i1)=26
13468        e(i1)=arho
13469        go to 40
13470        ENDIF
13471        if(X2.gt.0.33.and.X2.le.0.67)then
13472        lb(i2)=7
13473        e(i2)=dm
13474        lb(i1)=27
13475        e(i1)=arho
13476        go to 40
13477        endif
13478        if(X2.gt.0.67)then
13479        lb(i2)=9
13480        e(i2)=dm
13481        lb(i1)=25
13482        e(i1)=arho
13483        go to 40
13484        endif
13485               endif
13486        endif
13487 *(4) for pi(0)+p-->D(+)+rho(0) OR D(++)+rho(-) or D(0)+rho(+)
13488        if((iabs(lb(i1)).eq.1.and.lb(i2).eq.4).
13489      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.1))then
13490               if(iabs(lb(i1)).eq.1)then
13491         ii = i1
13492        IF(X2.LE.0.33)THEN
13493        lb(i1)=7
13494        e(i1)=dm
13495        lb(i2)=27
13496        e(i2)=arho
13497        go to 40
13498        ENDIF
13499        if(X2.gt.0.33.and.X2.le.0.67)then
13500        lb(i1)=8
13501        e(i1)=dm
13502        lb(i2)=26
13503        e(i2)=arho
13504        go to 40
13505        endif
13506        if(X2.gt.0.67)then
13507        lb(i1)=9
13508        e(i1)=dm
13509        lb(i2)=25
13510        e(i2)=arho
13511        go to 40
13512        endif
13513               else
13514         ii = i2
13515        IF(X2.LE.0.33)THEN
13516        lb(i2)=7
13517        e(i2)=dm
13518        lb(i1)=27
13519        e(i1)=arho
13520        go to 40
13521        ENDIF
13522        if(X2.gt.0.33.and.X2.le.0.67)then
13523        lb(i2)=8
13524        e(i2)=dm
13525        lb(i1)=26
13526        e(i1)=arho
13527        go to 40
13528        endif
13529        if(X2.gt.0.67)then
13530        lb(i2)=9
13531        e(i2)=dm
13532        lb(i1)=25
13533        e(i1)=arho
13534        go to 40
13535        endif
13536               endif
13537        endif 
13538 *(5) for pi(-)+n-->D(-)+rho(0) OR D(0)+rho(-)
13539        if( ((lb(i1).eq.2.and.lb(i2).eq.3).
13540      &  or.(lb(i1).eq.3.and.lb(i2).eq.2))
13541      &        .OR. ((lb(i1).eq.-2.and.lb(i2).eq.5).
13542      &  or.(lb(i1).eq.5.and.lb(i2).eq.-2)) )then
13543               if(iabs(lb(i1)).eq.2)then
13544         ii = i1
13545        IF(X2.LE.0.5)THEN
13546        lb(i1)=6
13547        e(i1)=dm
13548        lb(i2)=26
13549        e(i2)=arho
13550        go to 40
13551        ELSE
13552        lb(i1)=7
13553        e(i1)=dm
13554        lb(i2)=25
13555        e(i2)=arho
13556        go to 40
13557        endif
13558               else
13559         ii = i2
13560        IF(X2.LE.0.5)THEN
13561        lb(i2)=6
13562        e(i2)=dm
13563        lb(i1)=26
13564        e(i1)=arho
13565        go to 40
13566        ELSE
13567        lb(i2)=7
13568        e(i2)=dm
13569        lb(i1)=25
13570        e(i1)=arho
13571        go to 40
13572        endif
13573               endif
13574        ENDIF
13575 *(6) for pi(0)+n-->D(0)+rho(0), D(-)+rho(+) and D(+)+rho(-)
13576        if((iabs(lb(i1)).eq.2.and.lb(i2).eq.4).
13577      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.2))then
13578               if(iabs(lb(i1)).eq.2)then
13579         ii = i1
13580        IF(X2.LE.0.33)THEN
13581        lb(i1)=7
13582        e(i1)=dm
13583        lb(i2)=26
13584        e(i2)=arho
13585        go to 40
13586        endif
13587        if(x2.gt.0.33.and.x2.le.0.67)then       
13588        lb(i1)=6
13589        e(i1)=dm
13590        lb(i2)=27
13591        e(i2)=arho
13592        go to 40
13593        endif
13594        if(x2.gt.0.67)then
13595        lb(i1)=8
13596        e(i1)=dm
13597        lb(i2)=25
13598        e(i2)=arho
13599        endif
13600               else
13601         ii = i2
13602        IF(X2.LE.0.33)THEN
13603        lb(i2)=7
13604        e(i2)=dm
13605        lb(i1)=26
13606        e(i1)=arho
13607        go to 40
13608        endif
13609        if(x2.le.0.67.and.x2.gt.0.33)then       
13610        lb(i2)=6
13611        e(i2)=dm
13612        lb(i1)=27
13613        e(i1)=arho
13614        go to 40
13615        endif
13616        if(x2.gt.0.67)then
13617        lb(i2)=8
13618        e(i2)=dm
13619        lb(i1)=25
13620        e(i1)=arho
13621        endif
13622               endif
13623        endif
13624                      Endif
13625        if(iblock.eq.79)then
13626        aomega=0.782
13627 * GENERATE THE DELTA MASS
13628        dmax=srt-0.782-0.02
13629        dm=rmass(dmax,iseed)
13630 * pion+baryon-->omega+delta
13631 *(1) for pi(+)+p-->D(++)+omega(0)
13632        if( ((lb(i1).eq.1.and.lb(i2).eq.5).
13633      &  or.(lb(i1).eq.5.and.lb(i2).eq.1))
13634      &  .OR.((lb(i1).eq.-1.and.lb(i2).eq.3).
13635      &  or.(lb(i1).eq.3.and.lb(i2).eq.-1)) )then
13636               if(iabs(lb(i1)).eq.1)then
13637         ii = i1
13638        lb(i1)=9
13639        e(i1)=dm
13640        lb(i2)=28
13641        e(i2)=aomega
13642        go to 40
13643               else
13644         ii = i2
13645        lb(i2)=9
13646        e(i2)=dm
13647        lb(i1)=28
13648        e(i1)=aomega
13649        go to 40
13650               endif
13651        endif
13652 *(2) for pi(-)+p-->D(0)+omega(0) 
13653        if( ((lb(i1).eq.1.and.lb(i2).eq.3).
13654      &  or.(lb(i1).eq.3.and.lb(i2).eq.1))
13655      &        .OR. ((lb(i1).eq.-1.and.lb(i2).eq.5).
13656      &  or.(lb(i1).eq.5.and.lb(i2).eq.-1)) )then
13657               if(iabs(lb(i1)).eq.1)then
13658         ii = i1
13659        lb(i1)=7
13660        e(i1)=dm
13661        lb(i2)=28
13662        e(i2)=aomega
13663        go to 40
13664               else
13665         ii = i2
13666        lb(i2)=7
13667        e(i2)=dm
13668        lb(i1)=28
13669        e(i1)=aomega
13670        go to 40
13671               endif
13672        endif
13673 *(3) for pi(+)+n-->D(+)+omega(0) 
13674        if( ((lb(i1).eq.2.and.lb(i2).eq.5).
13675      &  or.(lb(i1).eq.5.and.lb(i2).eq.2))
13676      &       .OR. ((lb(i1).eq.-2.and.lb(i2).eq.3).
13677      &  or.(lb(i1).eq.3.and.lb(i2).eq.-2)) )then
13678               if(iabs(lb(i1)).eq.2)then
13679         ii = i1
13680        lb(i1)=8
13681        e(i1)=dm
13682        lb(i2)=28
13683        e(i2)=aomega
13684        go to 40
13685               else
13686         ii = i2
13687        lb(i2)=8
13688        e(i2)=dm
13689        lb(i1)=28
13690        e(i1)=aomega
13691        go to 40
13692               endif
13693        endif
13694 *(4) for pi(0)+p-->D(+)+omega(0) 
13695        if((iabs(lb(i1)).eq.1.and.lb(i2).eq.4).
13696      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.1))then
13697               if(iabs(lb(i1)).eq.1)then
13698         ii = i1
13699        lb(i1)=8
13700        e(i1)=dm
13701        lb(i2)=28
13702        e(i2)=aomega
13703        go to 40
13704               else
13705         ii = i2
13706        lb(i2)=8
13707        e(i2)=dm
13708        lb(i1)=28
13709        e(i1)=aomega
13710        go to 40
13711               endif
13712        endif 
13713 *(5) for pi(-)+n-->D(-)+omega(0) 
13714        if( ((lb(i1).eq.2.and.lb(i2).eq.3).
13715      &  or.(lb(i1).eq.3.and.lb(i2).eq.2))
13716      &        .OR. ((lb(i1).eq.-2.and.lb(i2).eq.5).
13717      &  or.(lb(i1).eq.5.and.lb(i2).eq.-2)) )then
13718               if(iabs(lb(i1)).eq.2)then
13719         ii = i1
13720        lb(i1)=6
13721        e(i1)=dm
13722        lb(i2)=28
13723        e(i2)=aomega
13724        go to 40
13725               ELSE
13726         ii = i2
13727        lb(i2)=6
13728        e(i2)=dm
13729        lb(i1)=28
13730        e(i1)=aomega
13731               endif
13732        ENDIF
13733 *(6) for pi(0)+n-->D(0)+omega(0) 
13734        if((iabs(lb(i1)).eq.2.and.lb(i2).eq.4).
13735      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.2))then
13736               if(iabs(lb(i1)).eq.2)then
13737         ii = i1
13738        lb(i1)=7
13739        e(i1)=dm
13740        lb(i2)=28
13741        e(i2)=aomega
13742        go to 40
13743               else
13744         ii = i2
13745        lb(i2)=7
13746        e(i2)=dm
13747        lb(i1)=26
13748        e(i1)=arho
13749        go to 40
13750               endif
13751        endif
13752                      Endif
13753 40       em1=e(i1)
13754        em2=e(i2)
13755        if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
13756          lb(ii) = -lb(ii)
13757            jj = i2
13758           if(ii .eq. i2)jj = i1
13759          if(iblock .eq. 77)then
13760           if(lb(jj).eq.3)then
13761            lb(jj) = 5
13762           elseif(lb(jj).eq.5)then
13763            lb(jj) = 3
13764           endif
13765          elseif(iblock .eq. 78)then
13766           if(lb(jj).eq.25)then
13767            lb(jj) = 27
13768           elseif(lb(jj).eq.27)then
13769            lb(jj) = 25
13770           endif
13771          endif
13772        endif
13773            endif
13774 *-----------------------------------------------------------------------
13775 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
13776 * ENERGY CONSERVATION
13777 50          PR2   = (SRT**2 - EM1**2 - EM2**2)**2
13778      1                - 4.0 * (EM1*EM2)**2
13779           IF(PR2.LE.0.)PR2=0.00000001
13780           PR=SQRT(PR2)/(2.*SRT)
13781 * here we use the same transverse momentum distribution as for
13782 * pp collisions, it might be necessary to use a different distribution
13783 
13784 clin-10/25/02 get rid of argument usage mismatch in PTR():
13785           xptr=0.33*pr
13786 c         cc1=ptr(0.33*pr,iseed)
13787          cc1=ptr(xptr,iseed)
13788 clin-10/25/02-end
13789 
13790 clin-9/2012: check argument in sqrt():
13791          scheck=pr**2-cc1**2
13792          if(scheck.lt.0) then
13793             write(99,*) 'scheck36: ', scheck
13794             scheck=0.
13795          endif
13796          c1=sqrt(scheck)/pr
13797 c         c1=sqrt(pr**2-cc1**2)/pr
13798 
13799 *          C1   = 1.0 - 2.0 * RANART(NSEED)
13800           T1   = 2.0 * PI * RANART(NSEED)
13801       S1   = SQRT( 1.0 - C1**2 )
13802       CT1  = COS(T1)
13803       ST1  = SIN(T1)
13804 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
13805       PZ   = PR * C1
13806       PX   = PR * S1*CT1 
13807       PY   = PR * S1*ST1
13808 * ROTATE IT 
13809        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
13810       RETURN
13811       END
13812 **********************************
13813 *                                                                      *
13814 *                                                                      *
13815       SUBROUTINE CREN(PX,PY,PZ,SRT,I1,I2,IBLOCK)
13816 *     PURPOSE:                                                         *
13817 *             DEALING WITH ETA+N-->L/S+KAON PROCESS                   *
13818 *     NOTE   :                                                         *
13819 *          
13820 *     QUANTITIES:                                                 *
13821 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
13822 *           SRT      - SQRT OF S                                       *
13823 *           IBLOCK   - THE INFORMATION BACK                            *
13824 *                     7  ETA+N-->L/S+KAON
13825 **********************************
13826         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
13827      1  AMP=0.93828,AP1=0.13496,
13828      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
13829         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
13830         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
13831         COMMON /AA/ R(3,MAXSTR)
13832 cc      SAVE /AA/
13833         COMMON /BB/ P(3,MAXSTR)
13834 cc      SAVE /BB/
13835         COMMON /CC/ E(MAXSTR)
13836 cc      SAVE /CC/
13837         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
13838 cc      SAVE /EE/
13839         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
13840 cc      SAVE /input1/
13841       COMMON/RNDF77/NSEED
13842 cc      SAVE /RNDF77/
13843       SAVE   
13844 
13845        PX0=PX
13846        PY0=PY
13847        PZ0=PZ
13848         NTAG=0
13849         IBLOCK=7
13850         ianti=0
13851         if(lb(i1).lt.0 .or. lb(i2).lt.0)then
13852           ianti=1
13853           iblock=-7
13854         endif
13855 * RELABLE PARTICLES FOR THE PROCESS eta+n-->LAMBDA K OR SIGMA k
13856 * DECIDE LAMBDA OR SIGMA PRODUCTION, AND TO CALCULATE THE NEW
13857 * MOMENTA FOR PARTICLES IN THE FINAL STATE.
13858        KAONC=0
13859        IF(PNLKA(SRT)/(PNLKA(SRT)
13860      & +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
13861        IF(E(I1).LE.0.6)THEN
13862        LB(I1)=23
13863        E(I1)=AKA
13864         IF(KAONC.EQ.1)THEN
13865        LB(I2)=14
13866        E(I2)=ALA
13867         ELSE
13868         LB(I2) = 15 + int(3 * RANART(NSEED))
13869        E(I2)=ASA       
13870         ENDIF
13871           if(ianti .eq. 1)then
13872             lb(i1)=21
13873             lb(i2)=-lb(i2)
13874           endif
13875        ELSE
13876        LB(I2)=23
13877        E(I2)=AKA
13878         IF(KAONC.EQ.1)THEN
13879        LB(I1)=14
13880        E(I1)=ALA
13881         ELSE
13882          LB(I1) = 15 + int(3 * RANART(NSEED))
13883        E(I1)=ASA       
13884         ENDIF
13885           if(ianti .eq. 1)then
13886             lb(i2)=21
13887             lb(i1)=-lb(i1)
13888           endif
13889        ENDIF
13890         EM1=E(I1)
13891         EM2=E(I2)
13892 *-----------------------------------------------------------------------
13893 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
13894 * ENERGY CONSERVATION
13895         PR2   = (SRT**2 - EM1**2 - EM2**2)**2
13896      1                - 4.0 * (EM1*EM2)**2
13897           IF(PR2.LE.0.)PR2=1.e-09
13898           PR=SQRT(PR2)/(2.*SRT)
13899           C1   = 1.0 - 2.0 * RANART(NSEED)
13900           T1   = 2.0 * PI * RANART(NSEED)
13901       S1   = SQRT( 1.0 - C1**2 )
13902       CT1  = COS(T1)
13903       ST1  = SIN(T1)
13904 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
13905       PZ   = PR * C1
13906       PX   = PR * S1*CT1 
13907       PY   = PR * S1*ST1
13908 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
13909       RETURN
13910       END
13911 **********************************
13912 *                                                                      *
13913 *                                                                      *
13914 c      SUBROUTINE Crdir(PX,PY,PZ,SRT,I1,I2)
13915       SUBROUTINE Crdir(PX,PY,PZ,SRT,I1,I2,IBLOCK)
13916 *     PURPOSE:                                                         *
13917 *             DEALING WITH pion+N-->pion+N PROCESS                   *
13918 *     NOTE   :                                                         *
13919 *          
13920 *     QUANTITIES:                                                 *
13921 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
13922 *           SRT      - SQRT OF S                                       *
13923 *           IBLOCK   - THE INFORMATION BACK                            *
13924 *                    
13925 **********************************
13926         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
13927      1  AMP=0.93828,AP1=0.13496,
13928      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
13929         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
13930         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
13931         COMMON /AA/ R(3,MAXSTR)
13932 cc      SAVE /AA/
13933         COMMON /BB/ P(3,MAXSTR)
13934 cc      SAVE /BB/
13935         COMMON /CC/ E(MAXSTR)
13936 cc      SAVE /CC/
13937         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
13938 cc      SAVE /EE/
13939         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
13940 cc      SAVE /input1/
13941       COMMON/RNDF77/NSEED
13942 cc      SAVE /RNDF77/
13943       SAVE   
13944 
13945        PX0=PX
13946        PY0=PY
13947        PZ0=PZ
13948         IBLOCK=999
13949         NTAG=0
13950         EM1=E(I1)
13951         EM2=E(I2)
13952 *-----------------------------------------------------------------------
13953 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
13954 * ENERGY CONSERVATION
13955         PR2   = (SRT**2 - EM1**2 - EM2**2)**2
13956      1                - 4.0 * (EM1*EM2)**2
13957           IF(PR2.LE.0.)PR2=1.e-09
13958           PR=SQRT(PR2)/(2.*SRT)
13959 
13960 clin-10/25/02 get rid of argument usage mismatch in PTR():
13961           xptr=0.33*pr
13962 c         cc1=ptr(0.33*pr,iseed)
13963          cc1=ptr(xptr,iseed)
13964 clin-10/25/02-end
13965 
13966 clin-9/2012: check argument in sqrt():
13967          scheck=pr**2-cc1**2
13968          if(scheck.lt.0) then
13969             write(99,*) 'scheck37: ', scheck
13970             scheck=0.
13971          endif
13972          c1=sqrt(scheck)/pr
13973 c         c1=sqrt(pr**2-cc1**2)/pr
13974 
13975            T1   = 2.0 * PI * RANART(NSEED)
13976       S1   = SQRT( 1.0 - C1**2 )
13977       CT1  = COS(T1)
13978       ST1  = SIN(T1)
13979 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
13980       PZ   = PR * C1
13981       PX   = PR * S1*CT1 
13982       PY   = PR * S1*ST1
13983 * ROTATE the momentum
13984       call rotate(px0,py0,pz0,px,py,pz)
13985       RETURN
13986       END
13987 **********************************
13988 *                                                                      *
13989 *                                                                      *
13990       SUBROUTINE CRPD(PX,PY,PZ,SRT,I1,I2,
13991      & IBLOCK,xkaon0,xkaon,Xphi,xphin)
13992 *     PURPOSE:                                                         *
13993 *     DEALING WITH PION+D(N*)-->PION +N OR 
13994 *                                             L/S+KAON PROCESS         *
13995 *     NOTE   :                                                         *
13996 *          
13997 *     QUANTITIES:                                                 *
13998 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
13999 *           SRT      - SQRT OF S                                       *
14000 *           IBLOCK   - THE INFORMATION BACK                            *
14001 *                     7  PION+D(N*)-->L/S+KAON
14002 *           iblock   - 80 pion+D(N*)-->pion+N
14003 *           iblock   - 81 RHO+D(N*)-->PION+N
14004 *           iblock   - 82 OMEGA+D(N*)-->PION+N
14005 *                     222  PION+D --> PHI
14006 **********************************
14007         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
14008      1  AMP=0.93828,AP1=0.13496,APHI=1.020,
14009      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
14010         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
14011         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
14012         COMMON /AA/ R(3,MAXSTR)
14013 cc      SAVE /AA/
14014         COMMON /BB/ P(3,MAXSTR)
14015 cc      SAVE /BB/
14016         COMMON /CC/ E(MAXSTR)
14017 cc      SAVE /CC/
14018         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
14019 cc      SAVE /EE/
14020         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
14021 cc      SAVE /input1/
14022       COMMON/RNDF77/NSEED
14023 cc      SAVE /RNDF77/
14024       SAVE   
14025 
14026        PX0=PX
14027        PY0=PY
14028        PZ0=PZ
14029         IBLOCK=1
14030        x1=RANART(NSEED)
14031         ianti=0
14032         if(lb(i1).lt.0 .or. lb(i2).lt.0)ianti=1
14033        if(xkaon0/(xkaon+Xphi).ge.x1)then
14034 * kaon production
14035 *-----------------------------------------------------------------------
14036         IBLOCK=7
14037         if(ianti .eq. 1)iblock=-7
14038         NTAG=0
14039 * RELABLE PARTICLES FOR THE PROCESS PION+n-->LAMBDA K OR SIGMA k
14040 * DECIDE LAMBDA OR SIGMA PRODUCTION, AND TO CALCULATE THE NEW
14041 * MOMENTA FOR PARTICLES IN THE FINAL STATE.
14042        KAONC=0
14043        IF(PNLKA(SRT)/(PNLKA(SRT)
14044      &       +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
14045 clin-8/17/00     & +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
14046        IF(E(I1).LE.0.2)THEN
14047            LB(I1)=23
14048            E(I1)=AKA
14049            IF(KAONC.EQ.1)THEN
14050               LB(I2)=14
14051               E(I2)=ALA
14052            ELSE
14053               LB(I2) = 15 + int(3 * RANART(NSEED))
14054               E(I2)=ASA       
14055            ENDIF
14056            if(ianti .eq. 1)then
14057               lb(i1)=21
14058               lb(i2)=-lb(i2)
14059            endif
14060        ELSE
14061            LB(I2)=23
14062            E(I2)=AKA
14063            IF(KAONC.EQ.1)THEN
14064               LB(I1)=14
14065               E(I1)=ALA
14066            ELSE
14067               LB(I1) = 15 + int(3 * RANART(NSEED))
14068               E(I1)=ASA       
14069            ENDIF
14070            if(ianti .eq. 1)then
14071               lb(i2)=21
14072               lb(i1)=-lb(i1)
14073            endif
14074        ENDIF
14075         EM1=E(I1)
14076         EM2=E(I2)
14077        go to 50
14078 * to gererate the momentum for the kaon and L/S
14079 c
14080 c* Phi production
14081        elseif(Xphi/(xkaon+Xphi).ge.x1)then
14082           iblock=222
14083          if(xphin/Xphi .ge. RANART(NSEED))then
14084           LB(I1)= 1+int(2*RANART(NSEED))
14085            E(I1)=AMN
14086          else
14087           LB(I1)= 6+int(4*RANART(NSEED))
14088            E(I1)=AM0
14089          endif
14090 c   !! at present only baryon
14091           if(ianti .eq. 1)lb(i1)=-lb(i1)
14092           LB(I2)= 29
14093            E(I2)=APHI
14094         EM1=E(I1)
14095         EM2=E(I2)
14096        go to 50
14097          else
14098 * PION REABSORPTION HAS HAPPENED
14099        X2=RANART(NSEED)
14100        IBLOCK=80
14101        ntag=0
14102 * Relable particles, I1 is assigned to the nucleon
14103 * and I2 is assigned to the pion
14104 * for the reverse of the following process
14105 *(1) for D(+)+P(+)-->p+pion(+)
14106         if( ((lb(i1).eq.8.and.lb(i2).eq.5).
14107      &       or.(lb(i1).eq.5.and.lb(i2).eq.8))
14108      &       .OR.((lb(i1).eq.-8.and.lb(i2).eq.3).
14109      &       or.(lb(i1).eq.3.and.lb(i2).eq.-8)) )then
14110            if(iabs(lb(i1)).eq.8)then
14111               ii = i1
14112               lb(i1)=1
14113               e(i1)=amn
14114               lb(i2)=5
14115               e(i2)=ap1
14116               go to 40
14117            else
14118               ii = i2
14119               lb(i2)=1
14120               e(i2)=amn
14121               lb(i1)=5
14122               e(i1)=ap1
14123               go to 40
14124            endif
14125        endif
14126 c
14127 *(2) for D(0)+P(0)-->n+pi(0) or p+pi(-) 
14128        if((iabs(lb(i1)).eq.7.and.lb(i2).eq.4).
14129      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.7))then
14130               if(iabs(lb(i1)).eq.7)then
14131         ii = i1
14132        IF(X2.LE.0.5)THEN
14133        lb(i1)=2
14134        e(i1)=amn
14135        lb(i2)=4
14136        e(i2)=ap1
14137        go to 40
14138        Else
14139        lb(i1)=1
14140        e(i1)=amn
14141        lb(i2)=3
14142        e(i2)=ap1
14143        go to 40
14144        endif
14145               else
14146         ii = i2
14147        IF(X2.LE.0.5)THEN
14148        lb(i2)=2
14149        e(i2)=amn
14150        lb(i1)=4
14151        e(i1)=ap1
14152        go to 40
14153        Else
14154        lb(i2)=1
14155        e(i2)=amn
14156        lb(i1)=3
14157        e(i1)=ap1
14158        go to 40
14159        endif
14160               endif
14161        endif
14162 *(3) for D(+)+Pi(0)-->pi(+)+n or pi(0)+p 
14163        if((iabs(lb(i1)).eq.8.and.lb(i2).eq.4).
14164      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.8))then
14165               if(iabs(lb(i1)).eq.8)then
14166         ii = i1
14167        IF(X2.LE.0.5)THEN
14168        lb(i1)=2
14169        e(i1)=amn
14170        lb(i2)=5
14171        e(i2)=ap1
14172        go to 40
14173        Else
14174        lb(i1)=1
14175        e(i1)=amn
14176        lb(i2)=4
14177        e(i2)=ap1
14178        go to 40
14179        endif
14180               else
14181         ii = i2
14182        IF(X2.LE.0.5)THEN
14183        lb(i2)=2
14184        e(i2)=amn
14185        lb(i1)=5
14186        e(i1)=ap1
14187        go to 40
14188        Else
14189        lb(i2)=1
14190        e(i2)=amn
14191        lb(i1)=4
14192        e(i1)=ap1
14193        go to 40
14194        endif
14195               endif
14196        endif
14197 *(4) for D(-)+Pi(0)-->n+pi(-) 
14198        if((iabs(lb(i1)).eq.6.and.lb(i2).eq.4).
14199      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.6))then
14200               if(iabs(lb(i1)).eq.6)then
14201         ii = i1
14202        lb(i1)=2
14203        e(i1)=amn
14204        lb(i2)=3
14205        e(i2)=ap1
14206        go to 40
14207        else
14208         ii = i2
14209        lb(i2)=2
14210        e(i2)=amn
14211        lb(i1)=3
14212        e(i1)=ap1
14213        go to 40
14214        ENDIF
14215        endif
14216 *(5) for D(+)+Pi(-)-->pi(0)+n or pi(-)+p
14217        if( ((lb(i1).eq.8.and.lb(i2).eq.3).
14218      &  or.(lb(i1).eq.3.and.lb(i2).eq.8))
14219      &        .OR.((lb(i1).eq.-8.and.lb(i2).eq.5).
14220      &  or.(lb(i1).eq.5.and.lb(i2).eq.-8)) )then
14221               if(iabs(lb(i1)).eq.8)then
14222         ii = i1
14223         IF(X2.LE.0.5)THEN
14224        lb(i1)=2
14225        e(i1)=amn
14226        lb(i2)=4
14227        e(i2)=ap1
14228        go to 40
14229        ELSE
14230        lb(i1)=1
14231        e(i1)=amn
14232        lb(i2)=3
14233        e(i2)=ap1
14234        go to 40
14235        endif
14236               else
14237         ii = i2
14238         IF(X2.LE.0.5)THEN
14239        lb(i2)=2
14240        e(i2)=amn
14241        lb(i1)=4
14242        e(i1)=ap1
14243        go to 40
14244        ELSE
14245        lb(i2)=1
14246        e(i2)=amn
14247        lb(i1)=3
14248        e(i1)=ap1
14249        go to 40
14250        endif
14251               endif
14252        ENDIF
14253 *(6) D(0)+P(+)-->n+pi(+) or p+pi(0)
14254        if( ((lb(i1).eq.7.and.lb(i2).eq.5).
14255      &  or.(lb(i1).eq.5.and.lb(i2).eq.7))
14256      &        .OR.((lb(i1).eq.-7.and.lb(i2).eq.3).
14257      &  or.(lb(i1).eq.3.and.lb(i2).eq.-7)) )then
14258               if(iabs(lb(i1)).eq.7)then
14259         ii = i1
14260          IF(X2.LE.0.5)THEN
14261        lb(i1)=2
14262        e(i1)=amn
14263        lb(i2)=5
14264        e(i2)=ap1
14265        go to 40
14266        else
14267        lb(i1)=1
14268        e(i1)=amn
14269        lb(i2)=4
14270        e(i2)=ap1
14271        go to 40
14272        endif
14273               else
14274         ii = i2
14275          IF(X2.LE.0.5)THEN
14276        lb(i2)=2
14277        e(i2)=amn
14278        lb(i1)=5
14279        e(i1)=ap1
14280        go to 40
14281        Else
14282        lb(i2)=1
14283        e(i2)=amn
14284        lb(i1)=4
14285        e(i1)=ap1
14286        go to 40
14287        endif
14288               endif
14289        ENDIF
14290 *(7) for D(0)+Pi(-)-->n+pi(-) 
14291        if( ((lb(i1).eq.7.and.lb(i2).eq.3).
14292      &  or.(lb(i1).eq.3.and.lb(i2).eq.7))
14293      &        .OR.((lb(i1).eq.-7.and.lb(i2).eq.5).
14294      &  or.(lb(i1).eq.5.and.lb(i2).eq.-7)) )then
14295               if(iabs(lb(i1)).eq.7)then
14296         ii = i1
14297        lb(i1)=2
14298        e(i1)=amn
14299        lb(i2)=3
14300        e(i2)=ap1
14301        go to 40
14302        else
14303         ii = i2
14304        lb(i2)=2
14305        e(i2)=amn
14306        lb(i1)=3
14307        e(i1)=ap1
14308        go to 40
14309        ENDIF
14310        endif
14311 *(8) D(-)+P(+)-->n+pi(0) or p+pi(-)
14312        if( ((lb(i1).eq.6.and.lb(i2).eq.5)
14313      &      .or.(lb(i1).eq.5.and.lb(i2).eq.6))
14314      &   .OR.((lb(i1).eq.-6.and.lb(i2).eq.3).
14315      &      or.(lb(i1).eq.3.and.lb(i2).eq.-6)) )then
14316               if(iabs(lb(i1)).eq.6)then
14317          ii = i1
14318        IF(X2.LE.0.5)THEN
14319        lb(i1)=2
14320        e(i1)=amn
14321        lb(i2)=4
14322        e(i2)=ap1
14323        go to 40
14324        else
14325        lb(i1)=1
14326        e(i1)=amn
14327        lb(i2)=3
14328        e(i2)=ap1
14329        go to 40
14330        endif
14331               else
14332          ii = i2
14333        IF(X2.LE.0.5)THEN
14334        lb(i2)=2
14335        e(i2)=amn
14336        lb(i1)=4
14337        e(i1)=ap1
14338        go to 40
14339        Else
14340        lb(i2)=1
14341        e(i2)=amn
14342        lb(i1)=3
14343        e(i1)=ap1
14344        go to 40
14345        endif
14346               endif
14347        ENDIF
14348 c
14349 *(9) D(++)+P(-)-->n+pi(+) or p+pi(0)
14350        if( ((lb(i1).eq.9.and.lb(i2).eq.3)
14351      &   .or.(lb(i1).eq.3.and.lb(i2).eq.9))
14352      &       .OR. ((lb(i1).eq.-9.and.lb(i2).eq.5)
14353      &   .or.(lb(i1).eq.5.and.lb(i2).eq.-9)) )then
14354               if(iabs(lb(i1)).eq.9)then
14355         ii = i1
14356        IF(X2.LE.0.5)THEN
14357        lb(i1)=2
14358        e(i1)=amn
14359        lb(i2)=5
14360        e(i2)=ap1
14361        go to 40
14362        else
14363        lb(i1)=1
14364        e(i1)=amn
14365        lb(i2)=4
14366        e(i2)=ap1
14367        go to 40
14368        endif
14369               else
14370         ii = i2
14371        IF(X2.LE.0.5)THEN
14372        lb(i2)=2
14373        e(i2)=amn
14374        lb(i1)=5
14375        e(i1)=ap1
14376        go to 40
14377        Else
14378        lb(i2)=1
14379        e(i2)=amn
14380        lb(i1)=4
14381        e(i1)=ap1
14382        go to 40
14383        endif
14384               endif
14385        ENDIF
14386 *(10) for D(++)+Pi(0)-->p+pi(+) 
14387        if((iabs(lb(i1)).eq.9.and.lb(i2).eq.4)
14388      &    .or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.9))then
14389            if(iabs(lb(i1)).eq.9)then
14390         ii = i1
14391        lb(i1)=1
14392        e(i1)=amn
14393        lb(i2)=5
14394        e(i2)=ap1
14395        go to 40
14396        else
14397         ii = i2
14398        lb(i2)=1
14399        e(i2)=amn
14400        lb(i1)=5
14401        e(i1)=ap1
14402        go to 40
14403        ENDIF
14404        endif
14405 *(11) for N*(1440)(+)or N*(1535)(+)+P(+)-->p+pion(+)
14406        if( ((lb(i1).eq.11.and.lb(i2).eq.5).
14407      &  or.(lb(i1).eq.5.and.lb(i2).eq.11).
14408      &  or.(lb(i1).eq.13.and.lb(i2).eq.5).
14409      &  or.(lb(i1).eq.5.and.lb(i2).eq.13))
14410      &        .OR.((lb(i1).eq.-11.and.lb(i2).eq.3).
14411      &  or.(lb(i1).eq.3.and.lb(i2).eq.-11).
14412      &  or.(lb(i1).eq.-13.and.lb(i2).eq.3).
14413      &  or.(lb(i1).eq.3.and.lb(i2).eq.-13)) )then
14414               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
14415         ii = i1
14416        lb(i1)=1
14417        e(i1)=amn
14418        lb(i2)=5
14419        e(i2)=ap1
14420        go to 40
14421        else
14422         ii = i2
14423        lb(i2)=1
14424        e(i2)=amn
14425        lb(i1)=5
14426        e(i1)=ap1
14427        go to 40
14428               endif
14429        endif
14430 *(12) for N*(1440) or N*(1535)(0)+P(0)-->n+pi(0) or p+pi(-) 
14431        if((iabs(lb(i1)).eq.10.and.lb(i2).eq.4).
14432      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.10).
14433      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.12).
14434      &  or.(lb(i2).eq.4.and.iabs(lb(i1)).eq.12))then
14435               if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
14436         ii = i1
14437        IF(X2.LE.0.5)THEN
14438        lb(i1)=2
14439        e(i1)=amn
14440        lb(i2)=4
14441        e(i2)=ap1
14442        go to 40
14443        Else
14444        lb(i1)=1
14445        e(i1)=amn
14446        lb(i2)=3
14447        e(i2)=ap1
14448        go to 40
14449        endif
14450               else
14451         ii = i2
14452        IF(X2.LE.0.5)THEN
14453        lb(i2)=2
14454        e(i2)=amn
14455        lb(i1)=4
14456        e(i1)=ap1
14457        go to 40
14458        Else
14459        lb(i2)=1
14460        e(i2)=amn
14461        lb(i1)=3
14462        e(i1)=ap1
14463        go to 40
14464        endif
14465               endif
14466        endif
14467 *(13) for N*(1440) or N*(1535)(+)+Pi(0)-->pi(+)+n or pi(0)+p 
14468        if((iabs(lb(i1)).eq.11.and.lb(i2).eq.4).
14469      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.11).
14470      &  or.(lb(i1).eq.4.and.iabs(lb(i2)).eq.13).
14471      &  or.(lb(i2).eq.4.and.iabs(lb(i1)).eq.13))then
14472               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
14473         ii = i1
14474        IF(X2.LE.0.5)THEN
14475        lb(i1)=2
14476        e(i1)=amn
14477        lb(i2)=5
14478        e(i2)=ap1
14479        go to 40
14480        Else
14481        lb(i1)=1
14482        e(i1)=amn
14483        lb(i2)=4
14484        e(i2)=ap1
14485        go to 40
14486        endif
14487               else
14488         ii = i2
14489        IF(X2.LE.0.5)THEN
14490        lb(i2)=2
14491        e(i2)=amn
14492        lb(i1)=5
14493        e(i1)=ap1
14494        go to 40
14495        Else
14496        lb(i2)=1
14497        e(i2)=amn
14498        lb(i1)=4
14499        e(i1)=ap1
14500        go to 40
14501        endif
14502               endif
14503        endif
14504 *(14) for N*(1440) or N*(1535)(+)+Pi(-)-->pi(0)+n or pi(-)+p
14505        if( ((lb(i1).eq.11.and.lb(i2).eq.3).
14506      &  or.(lb(i1).eq.3.and.lb(i2).eq.11).
14507      &  or.(lb(i1).eq.3.and.lb(i2).eq.13).
14508      &  or.(lb(i2).eq.3.and.lb(i1).eq.13))
14509      &        .OR.((lb(i1).eq.-11.and.lb(i2).eq.5).
14510      &  or.(lb(i1).eq.5.and.lb(i2).eq.-11).
14511      &  or.(lb(i1).eq.5.and.lb(i2).eq.-13).
14512      &  or.(lb(i2).eq.5.and.lb(i1).eq.-13)) )then
14513        if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
14514         ii = i1
14515          IF(X2.LE.0.5)THEN
14516        lb(i1)=2
14517        e(i1)=amn
14518        lb(i2)=4
14519        e(i2)=ap1
14520        go to 40
14521        ELSE
14522        lb(i1)=1
14523        e(i1)=amn
14524        lb(i2)=3
14525        e(i2)=ap1
14526        go to 40
14527        endif
14528               else
14529         ii = i2
14530          IF(X2.LE.0.5)THEN
14531        lb(i2)=2
14532        e(i2)=amn
14533        lb(i1)=4
14534        e(i1)=ap1
14535        go to 40
14536        ELSE
14537        lb(i2)=1
14538        e(i2)=amn
14539        lb(i1)=3
14540        e(i1)=ap1
14541        go to 40
14542        endif
14543               endif
14544        ENDIF
14545 *(15) N*(1440) or N*(1535)(0)+P(+)-->n+pi(+) or p+pi(0)
14546        if( ((lb(i1).eq.10.and.lb(i2).eq.5).
14547      &  or.(lb(i1).eq.5.and.lb(i2).eq.10).
14548      &  or.(lb(i1).eq.12.and.lb(i2).eq.5).
14549      &  or.(lb(i1).eq.5.and.lb(i2).eq.12))
14550      &        .OR.((lb(i1).eq.-10.and.lb(i2).eq.3).
14551      &  or.(lb(i1).eq.3.and.lb(i2).eq.-10).
14552      &  or.(lb(i1).eq.-12.and.lb(i2).eq.3).
14553      &  or.(lb(i1).eq.3.and.lb(i2).eq.-12)) )then
14554        if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
14555         ii = i1
14556         IF(X2.LE.0.5)THEN
14557        lb(i1)=2
14558        e(i1)=amn
14559        lb(i2)=5
14560        e(i2)=ap1
14561        go to 40
14562        else
14563        lb(i1)=1
14564        e(i1)=amn
14565        lb(i2)=4
14566        e(i2)=ap1
14567        go to 40
14568        endif
14569               else
14570         ii = i2
14571         IF(X2.LE.0.5)THEN
14572        lb(i2)=2
14573        e(i2)=amn
14574        lb(i1)=5
14575        e(i1)=ap1
14576        go to 40
14577        Else
14578        lb(i2)=1
14579        e(i2)=amn
14580        lb(i1)=4
14581        e(i1)=ap1
14582        go to 40
14583        endif
14584               endif
14585        ENDIF
14586 *(16) for N*(1440) or N*(1535) (0)+Pi(-)-->n+pi(-) 
14587        if( ((lb(i1).eq.10.and.lb(i2).eq.3).
14588      &  or.(lb(i1).eq.3.and.lb(i2).eq.10).
14589      &  or.(lb(i1).eq.3.and.lb(i2).eq.12).
14590      &  or.(lb(i1).eq.12.and.lb(i2).eq.3))
14591      &        .OR.((lb(i1).eq.-10.and.lb(i2).eq.5).
14592      &  or.(lb(i1).eq.5.and.lb(i2).eq.-10).
14593      &  or.(lb(i1).eq.5.and.lb(i2).eq.-12).
14594      &  or.(lb(i1).eq.-12.and.lb(i2).eq.5)) )then
14595            if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
14596         ii = i1
14597        lb(i1)=2
14598        e(i1)=amn
14599        lb(i2)=3
14600        e(i2)=ap1
14601        go to 40
14602        else
14603         ii = i2
14604        lb(i2)=2
14605        e(i2)=amn
14606        lb(i1)=3
14607        e(i1)=ap1
14608        go to 40
14609        ENDIF
14610        endif
14611 40       em1=e(i1)
14612        em2=e(i2)
14613        if(ianti.eq.1 .and.  lb(i1).ge.1 .and. lb(i2).ge.1)then
14614          lb(ii) = -lb(ii)
14615            jj = i2
14616           if(ii .eq. i2)jj = i1
14617           if(lb(jj).eq.3)then
14618            lb(jj) = 5
14619           elseif(lb(jj).eq.5)then
14620            lb(jj) = 3
14621           endif
14622          endif
14623           endif
14624 *-----------------------------------------------------------------------
14625 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
14626 * ENERGY CONSERVATION
14627 50          PR2   = (SRT**2 - EM1**2 - EM2**2)**2
14628      1                - 4.0 * (EM1*EM2)**2
14629           IF(PR2.LE.0.)PR2=1.E-09
14630           PR=SQRT(PR2)/(2.*SRT)
14631 
14632 clin-10/25/02 get rid of argument usage mismatch in PTR():
14633           xptr=0.33*pr
14634 c         cc1=ptr(0.33*pr,iseed)
14635          cc1=ptr(xptr,iseed)
14636 clin-10/25/02-end
14637 
14638 clin-9/2012: check argument in sqrt():
14639          scheck=pr**2-cc1**2
14640          if(scheck.lt.0) then
14641             write(99,*) 'scheck38: ', scheck
14642             scheck=0.
14643          endif
14644          c1=sqrt(scheck)/pr
14645 c         c1=sqrt(pr**2-cc1**2)/pr
14646 
14647 c         C1   = 1.0 - 2.0 * RANART(NSEED)
14648           T1   = 2.0 * PI * RANART(NSEED)
14649       S1   = SQRT( 1.0 - C1**2 )
14650       CT1  = COS(T1)
14651       ST1  = SIN(T1)
14652       PZ   = PR * C1
14653       PX   = PR * S1*CT1 
14654       PY   = PR * S1*ST1 
14655 * rotate the momentum
14656        call rotate(px0,py0,pz0,px,py,pz)
14657       RETURN
14658       END
14659 **********************************
14660 *                                                                      *
14661 *                                                                      *
14662       SUBROUTINE CRRD(PX,PY,PZ,SRT,I1,I2,
14663      & IBLOCK,xkaon0,xkaon,Xphi,xphin)
14664 *     PURPOSE:                                                         *
14665 *     DEALING WITH rho(omega)+N or D(N*)-->PION +N OR 
14666 *                                             L/S+KAON PROCESS         *
14667 *     NOTE   :                                                         *
14668 *          
14669 *     QUANTITIES:                                                 *
14670 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
14671 *           SRT      - SQRT OF S                                       *
14672 *           IBLOCK   - THE INFORMATION BACK                            *
14673 *                     7  rho(omega)+N or D(N*)-->L/S+KAON
14674 *           iblock   - 80 pion+D(N*)-->pion+N
14675 *           iblock   - 81 RHO+D(N*)-->PION+N
14676 *           iblock   - 82 OMEGA+D(N*)-->PION+N
14677 *           iblock   - 222 pion+N-->Phi 
14678 **********************************
14679         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
14680      1  AMP=0.93828,AP1=0.13496,
14681      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
14682         PARAMETER     (AKA=0.498,ALA=1.1157,ASA=1.1974,APHI=1.02)
14683         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
14684         COMMON /AA/ R(3,MAXSTR)
14685 cc      SAVE /AA/
14686         COMMON /BB/ P(3,MAXSTR)
14687 cc      SAVE /BB/
14688         COMMON /CC/ E(MAXSTR)
14689 cc      SAVE /CC/
14690         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
14691 cc      SAVE /EE/
14692         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
14693 cc      SAVE /input1/
14694       COMMON/RNDF77/NSEED
14695 cc      SAVE /RNDF77/
14696       SAVE   
14697 
14698        PX0=PX
14699        PY0=PY
14700        PZ0=PZ
14701        IBLOCK=1
14702        ianti=0
14703        if(lb(i1).lt.0 .or. lb(i2).lt.0) ianti=1
14704        x1=RANART(NSEED)
14705        if(xkaon0/(xkaon+Xphi).ge.x1)then
14706 * kaon production
14707 *-----------------------------------------------------------------------
14708         IBLOCK=7
14709         if(ianti .eq. 1)iblock=-7
14710         NTAG=0
14711 * RELABLE PARTICLES FOR THE PROCESS PION+n-->LAMBDA K OR SIGMA k
14712 * DECIDE LAMBDA OR SIGMA PRODUCTION, AND TO CALCULATE THE NEW
14713 * MOMENTA FOR PARTICLES IN THE FINAL STATE.
14714        KAONC=0
14715        IF(PNLKA(SRT)/(PNLKA(SRT)
14716      & +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
14717 clin-8/17/00     & +PNSKA(SRT)).GT.RANART(NSEED))KAONC=1
14718        IF(E(I1).LE.0.92)THEN
14719        LB(I1)=23
14720        E(I1)=AKA
14721               IF(KAONC.EQ.1)THEN
14722        LB(I2)=14
14723        E(I2)=ALA
14724               ELSE
14725         LB(I2) = 15 + int(3 * RANART(NSEED))
14726        E(I2)=ASA       
14727               ENDIF
14728          if(ianti .eq. 1)then
14729           lb(i1) = 21
14730           lb(i2) = -lb(i2)
14731          endif
14732        ELSE
14733        LB(I2)=23
14734        E(I2)=AKA
14735               IF(KAONC.EQ.1)THEN
14736        LB(I1)=14
14737        E(I1)=ALA
14738               ELSE
14739          LB(I1) = 15 + int(3 * RANART(NSEED))
14740        E(I1)=ASA       
14741               ENDIF
14742          if(ianti .eq. 1)then
14743           lb(i2) = 21
14744           lb(i1) = -lb(i1)
14745          endif
14746        ENDIF
14747         EM1=E(I1)
14748         EM2=E(I2)
14749        go to 50
14750 * to gererate the momentum for the kaon and L/S
14751 c
14752 c* Phi production
14753        elseif(Xphi/(xkaon+Xphi).ge.x1)then
14754           iblock=222
14755          if(xphin/Xphi .ge. RANART(NSEED))then
14756           LB(I1)= 1+int(2*RANART(NSEED))
14757            E(I1)=AMN
14758          else
14759           LB(I1)= 6+int(4*RANART(NSEED))
14760            E(I1)=AM0
14761          endif
14762 c   !! at present only baryon
14763          if(ianti .eq. 1)lb(i1)=-lb(i1)
14764           LB(I2)= 29
14765            E(I2)=APHI
14766         EM1=E(I1)
14767         EM2=E(I2)
14768        go to 50
14769          else
14770 * rho(omega) REABSORPTION HAS HAPPENED
14771        X2=RANART(NSEED)
14772        IBLOCK=81
14773        ntag=0
14774        if(lb(i1).eq.28.or.lb(i2).eq.28)go to 60
14775 * we treat Rho reabsorption in the following 
14776 * Relable particles, I1 is assigned to the Delta 
14777 * and I2 is assigned to the meson
14778 * for the reverse of the following process
14779 *(1) for D(+)+rho(+)-->p+pion(+)
14780        if( ((lb(i1).eq.8.and.lb(i2).eq.27).
14781      &  or.(lb(i1).eq.27.and.lb(i2).eq.8))
14782      &        .OR. ((lb(i1).eq.-8.and.lb(i2).eq.25).
14783      &  or.(lb(i1).eq.25.and.lb(i2).eq.-8)) )then
14784               if(iabs(lb(i1)).eq.8)then
14785         ii = i1
14786        lb(i1)=1
14787        e(i1)=amn
14788        lb(i2)=5
14789        e(i2)=ap1
14790        go to 40
14791        else
14792         ii = i2
14793        lb(i2)=1
14794        e(i2)=amn
14795        lb(i1)=5
14796        e(i1)=ap1
14797        go to 40
14798               endif
14799        endif
14800 *(2) for D(0)+rho(0)-->n+pi(0) or p+pi(-) 
14801        if((iabs(lb(i1)).eq.7.and.lb(i2).eq.26).
14802      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.7))then
14803               if(iabs(lb(i1)).eq.7)then
14804         ii = i1
14805        IF(X2.LE.0.5)THEN
14806        lb(i1)=2
14807        e(i1)=amn
14808        lb(i2)=4
14809        e(i2)=ap1
14810        go to 40
14811        Else
14812        lb(i1)=1
14813        e(i1)=amn
14814        lb(i2)=3
14815        e(i2)=ap1
14816        go to 40
14817        endif
14818               else
14819         ii = i2
14820        IF(X2.LE.0.5)THEN
14821        lb(i2)=2
14822        e(i2)=amn
14823        lb(i1)=4
14824        e(i1)=ap1
14825        go to 40
14826        Else
14827        lb(i2)=1
14828        e(i2)=amn
14829        lb(i1)=3
14830        e(i1)=ap1
14831        go to 40
14832        endif
14833               endif
14834        endif
14835 *(3) for D(+)+rho(0)-->pi(+)+n or pi(0)+p 
14836        if((iabs(lb(i1)).eq.8.and.lb(i2).eq.26).
14837      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.8))then
14838               if(iabs(lb(i1)).eq.8)then
14839         ii = i1
14840        IF(X2.LE.0.5)THEN
14841        lb(i1)=2
14842        e(i1)=amn
14843        lb(i2)=5
14844        e(i2)=ap1
14845        go to 40
14846        Else
14847        lb(i1)=1
14848        e(i1)=amn
14849        lb(i2)=4
14850        e(i2)=ap1
14851        go to 40
14852        endif
14853               else
14854         ii = i2
14855        IF(X2.LE.0.5)THEN
14856        lb(i2)=2
14857        e(i2)=amn
14858        lb(i1)=5
14859        e(i1)=ap1
14860        go to 40
14861        Else
14862        lb(i2)=1
14863        e(i2)=amn
14864        lb(i1)=4
14865        e(i1)=ap1
14866        go to 40
14867        endif
14868               endif
14869        endif
14870 *(4) for D(-)+rho(0)-->n+pi(-) 
14871        if((iabs(lb(i1)).eq.6.and.lb(i2).eq.26).
14872      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.6))then
14873               if(iabs(lb(i1)).eq.6)then
14874         ii = i1
14875        lb(i1)=2
14876        e(i1)=amn
14877        lb(i2)=3
14878        e(i2)=ap1
14879        go to 40
14880        else
14881         ii = i2
14882        lb(i2)=2
14883        e(i2)=amn
14884        lb(i1)=3
14885        e(i1)=ap1
14886        go to 40
14887        ENDIF
14888        endif
14889 *(5) for D(+)+rho(-)-->pi(0)+n or pi(-)+p
14890        if( ((lb(i1).eq.8.and.lb(i2).eq.25).
14891      &  or.(lb(i1).eq.25.and.lb(i2).eq.8))
14892      &        .OR. ((lb(i1).eq.-8.and.lb(i2).eq.27).
14893      &  or.(lb(i1).eq.27.and.lb(i2).eq.-8)) )then
14894               if(iabs(lb(i1)).eq.8)then
14895         ii = i1
14896        IF(X2.LE.0.5)THEN
14897        lb(i1)=2
14898        e(i1)=amn
14899        lb(i2)=4
14900        e(i2)=ap1
14901        go to 40
14902        ELSE
14903        lb(i1)=1
14904        e(i1)=amn
14905        lb(i2)=3
14906        e(i2)=ap1
14907        go to 40
14908        endif
14909               else
14910         ii = i2
14911        IF(X2.LE.0.5)THEN
14912        lb(i2)=2
14913        e(i2)=amn
14914        lb(i1)=4
14915        e(i1)=ap1
14916        go to 40
14917        ELSE
14918        lb(i2)=1
14919        e(i2)=amn
14920        lb(i1)=3
14921        e(i1)=ap1
14922        go to 40
14923        endif
14924               endif
14925        ENDIF
14926 *(6) D(0)+rho(+)-->n+pi(+) or p+pi(0)
14927        if( ((lb(i1).eq.7.and.lb(i2).eq.27).
14928      &  or.(lb(i1).eq.27.and.lb(i2).eq.7))
14929      &       .OR.((lb(i1).eq.-7.and.lb(i2).eq.25).
14930      &  or.(lb(i1).eq.25.and.lb(i2).eq.-7)) )then
14931               if(iabs(lb(i1)).eq.7)then
14932         ii = i1
14933        IF(X2.LE.0.5)THEN
14934        lb(i1)=2
14935        e(i1)=amn
14936        lb(i2)=5
14937        e(i2)=ap1
14938        go to 40
14939        else
14940        lb(i1)=1
14941        e(i1)=amn
14942        lb(i2)=4
14943        e(i2)=ap1
14944        go to 40
14945        endif
14946               else
14947         ii = i2
14948        IF(X2.LE.0.5)THEN
14949        lb(i2)=2
14950        e(i2)=amn
14951        lb(i1)=5
14952        e(i1)=ap1
14953        go to 40
14954        Else
14955        lb(i2)=1
14956        e(i2)=amn
14957        lb(i1)=4
14958        e(i1)=ap1
14959        go to 40
14960        endif
14961               endif
14962        ENDIF
14963 *(7) for D(0)+rho(-)-->n+pi(-) 
14964        if( ((lb(i1).eq.7.and.lb(i2).eq.25).
14965      &  or.(lb(i1).eq.25.and.lb(i2).eq.7))
14966      &       .OR.((lb(i1).eq.-7.and.lb(i2).eq.27).
14967      &  or.(lb(i1).eq.27.and.lb(i2).eq.-7)) )then
14968               if(iabs(lb(i1)).eq.7)then
14969         ii = i1
14970        lb(i1)=2
14971        e(i1)=amn
14972        lb(i2)=3
14973        e(i2)=ap1
14974        go to 40
14975        else
14976         ii = i2
14977        lb(i2)=2
14978        e(i2)=amn
14979        lb(i1)=3
14980        e(i1)=ap1
14981        go to 40
14982        ENDIF
14983        endif
14984 *(8) D(-)+rho(+)-->n+pi(0) or p+pi(-)
14985        if( ((lb(i1).eq.6.and.lb(i2).eq.27).
14986      &  or.(lb(i1).eq.27.and.lb(i2).eq.6))
14987      &        .OR. ((lb(i1).eq.-6.and.lb(i2).eq.25).
14988      &  or.(lb(i1).eq.25.and.lb(i2).eq.-6)) )then
14989               if(iabs(lb(i1)).eq.6)then
14990         ii = i1
14991        IF(X2.LE.0.5)THEN
14992        lb(i1)=2
14993        e(i1)=amn
14994        lb(i2)=4
14995        e(i2)=ap1
14996        go to 40
14997        else
14998        lb(i1)=1
14999        e(i1)=amn
15000        lb(i2)=3
15001        e(i2)=ap1
15002        go to 40
15003        endif
15004               else
15005         ii = i2
15006        IF(X2.LE.0.5)THEN
15007        lb(i2)=2
15008        e(i2)=amn
15009        lb(i1)=4
15010        e(i1)=ap1
15011        go to 40
15012        Else
15013        lb(i2)=1
15014        e(i2)=amn
15015        lb(i1)=3
15016        e(i1)=ap1
15017        go to 40
15018        endif
15019               endif
15020        ENDIF
15021 *(9) D(++)+rho(-)-->n+pi(+) or p+pi(0)
15022        if( ((lb(i1).eq.9.and.lb(i2).eq.25).
15023      &  or.(lb(i1).eq.25.and.lb(i2).eq.9))
15024      &        .OR.((lb(i1).eq.-9.and.lb(i2).eq.27).
15025      &  or.(lb(i1).eq.27.and.lb(i2).eq.-9)) )then
15026               if(iabs(lb(i1)).eq.9)then
15027         ii = i1
15028        IF(X2.LE.0.5)THEN
15029        lb(i1)=2
15030        e(i1)=amn
15031        lb(i2)=5
15032        e(i2)=ap1
15033        go to 40
15034        else
15035        lb(i1)=1
15036        e(i1)=amn
15037        lb(i2)=4
15038        e(i2)=ap1
15039        go to 40
15040        endif
15041               else
15042         ii = i2
15043        IF(X2.LE.0.5)THEN
15044        lb(i2)=2
15045        e(i2)=amn
15046        lb(i1)=5
15047        e(i1)=ap1
15048        go to 40
15049        Else
15050        lb(i2)=1
15051        e(i2)=amn
15052        lb(i1)=4
15053        e(i1)=ap1
15054        go to 40
15055        endif
15056               endif
15057        ENDIF
15058 *(10) for D(++)+rho(0)-->p+pi(+) 
15059        if((iabs(lb(i1)).eq.9.and.lb(i2).eq.26).
15060      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.9))then
15061               if(iabs(lb(i1)).eq.9)then
15062         ii = i1
15063        lb(i1)=1
15064        e(i1)=amn
15065        lb(i2)=5
15066        e(i2)=ap1
15067        go to 40
15068        else
15069         ii = i2
15070        lb(i2)=1
15071        e(i2)=amn
15072        lb(i1)=5
15073        e(i1)=ap1
15074        go to 40
15075        ENDIF
15076        endif
15077 *(11) for N*(1440)(+)or N*(1535)(+)+rho(+)-->p+pion(+)
15078        if( ((lb(i1).eq.11.and.lb(i2).eq.27).
15079      &  or.(lb(i1).eq.27.and.lb(i2).eq.11).
15080      &  or.(lb(i1).eq.13.and.lb(i2).eq.27).
15081      &  or.(lb(i1).eq.27.and.lb(i2).eq.13))
15082      &        .OR. ((lb(i1).eq.-11.and.lb(i2).eq.25).
15083      &  or.(lb(i1).eq.25.and.lb(i2).eq.-11).
15084      &  or.(lb(i1).eq.-13.and.lb(i2).eq.25).
15085      &  or.(lb(i1).eq.25.and.lb(i2).eq.-13)) )then
15086               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
15087         ii = i1
15088        lb(i1)=1
15089        e(i1)=amn
15090        lb(i2)=5
15091        e(i2)=ap1
15092        go to 40
15093        else
15094         ii = i2
15095        lb(i2)=1
15096        e(i2)=amn
15097        lb(i1)=5
15098        e(i1)=ap1
15099        go to 40
15100               endif
15101        endif
15102 *(12) for N*(1440) or N*(1535)(0)+rho(0)-->n+pi(0) or p+pi(-) 
15103        if((iabs(lb(i1)).eq.10.and.lb(i2).eq.26).
15104      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.10).
15105      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.12).
15106      &  or.(lb(i2).eq.26.and.iabs(lb(i1)).eq.12))then
15107               if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
15108         ii = i1
15109        IF(X2.LE.0.5)THEN
15110        lb(i1)=2
15111        e(i1)=amn
15112        lb(i2)=4
15113        e(i2)=ap1
15114        go to 40
15115        Else
15116        lb(i1)=1
15117        e(i1)=amn
15118        lb(i2)=3
15119        e(i2)=ap1
15120        go to 40
15121        endif
15122               else
15123         ii = i2
15124        IF(X2.LE.0.5)THEN
15125        lb(i2)=2
15126        e(i2)=amn
15127        lb(i1)=4
15128        e(i1)=ap1
15129        go to 40
15130        Else
15131        lb(i2)=1
15132        e(i2)=amn
15133        lb(i1)=3
15134        e(i1)=ap1
15135        go to 40
15136        endif
15137               endif
15138        endif
15139 *(13) for N*(1440) or N*(1535)(+)+rho(0)-->pi(+)+n or pi(0)+p 
15140        if((iabs(lb(i1)).eq.11.and.lb(i2).eq.26).
15141      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.11).
15142      &  or.(lb(i1).eq.26.and.iabs(lb(i2)).eq.13).
15143      &  or.(lb(i2).eq.26.and.iabs(lb(i1)).eq.13))then
15144               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
15145         ii = i1
15146        IF(X2.LE.0.5)THEN
15147        lb(i1)=2
15148        e(i1)=amn
15149        lb(i2)=5
15150        e(i2)=ap1
15151        go to 40
15152        Else
15153        lb(i1)=1
15154        e(i1)=amn
15155        lb(i2)=4
15156        e(i2)=ap1
15157        go to 40
15158        endif
15159               else
15160         ii = i2
15161        IF(X2.LE.0.5)THEN
15162        lb(i2)=2
15163        e(i2)=amn
15164        lb(i1)=5
15165        e(i1)=ap1
15166        go to 40
15167        Else
15168        lb(i2)=1
15169        e(i2)=amn
15170        lb(i1)=4
15171        e(i1)=ap1
15172        go to 40
15173        endif
15174               endif
15175        endif
15176 *(14) for N*(1440) or N*(1535)(+)+rho(-)-->pi(0)+n or pi(-)+p
15177        if( ((lb(i1).eq.11.and.lb(i2).eq.25).
15178      &  or.(lb(i1).eq.25.and.lb(i2).eq.11).
15179      &  or.(lb(i1).eq.25.and.lb(i2).eq.13).
15180      &  or.(lb(i2).eq.25.and.lb(i1).eq.13))
15181      &        .OR.((lb(i1).eq.-11.and.lb(i2).eq.27).
15182      &  or.(lb(i1).eq.27.and.lb(i2).eq.-11).
15183      &  or.(lb(i1).eq.27.and.lb(i2).eq.-13).
15184      &  or.(lb(i2).eq.27.and.lb(i1).eq.-13)) )then
15185        if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
15186         ii = i1
15187        IF(X2.LE.0.5)THEN
15188        lb(i1)=2
15189        e(i1)=amn
15190        lb(i2)=4
15191        e(i2)=ap1
15192        go to 40
15193        ELSE
15194        lb(i1)=1
15195        e(i1)=amn
15196        lb(i2)=3
15197        e(i2)=ap1
15198        go to 40
15199        endif
15200               else
15201         ii = i2
15202        IF(X2.LE.0.5)THEN
15203        lb(i2)=2
15204        e(i2)=amn
15205        lb(i1)=4
15206        e(i1)=ap1
15207        go to 40
15208        ELSE
15209        lb(i2)=1
15210        e(i2)=amn
15211        lb(i1)=3
15212        e(i1)=ap1
15213        go to 40
15214        endif
15215               endif
15216        ENDIF
15217 *(15) N*(1440) or N*(1535)(0)+rho(+)-->n+pi(+) or p+pi(0)
15218        if( ((lb(i1).eq.10.and.lb(i2).eq.27).
15219      &  or.(lb(i1).eq.27.and.lb(i2).eq.10).
15220      &  or.(lb(i1).eq.12.and.lb(i2).eq.27).
15221      &  or.(lb(i1).eq.27.and.lb(i2).eq.12))
15222      &         .OR.((lb(i1).eq.-10.and.lb(i2).eq.25).
15223      &  or.(lb(i1).eq.25.and.lb(i2).eq.-10).
15224      &  or.(lb(i1).eq.-12.and.lb(i2).eq.25).
15225      &  or.(lb(i1).eq.25.and.lb(i2).eq.-12)) )then
15226        if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
15227         ii = i1
15228        IF(X2.LE.0.5)THEN
15229        lb(i1)=2
15230        e(i1)=amn
15231        lb(i2)=5
15232        e(i2)=ap1
15233        go to 40
15234        else
15235        lb(i1)=1
15236        e(i1)=amn
15237        lb(i2)=4
15238        e(i2)=ap1
15239        go to 40
15240        endif
15241               else
15242         ii = i2
15243        IF(X2.LE.0.5)THEN
15244        lb(i2)=2
15245        e(i2)=amn
15246        lb(i1)=5
15247        e(i1)=ap1
15248        go to 40
15249        Else
15250        lb(i2)=1
15251        e(i2)=amn
15252        lb(i1)=4
15253        e(i1)=ap1
15254        go to 40
15255        endif
15256               endif
15257        ENDIF
15258 *(16) for N*(1440) or N*(1535) (0)+rho(-)-->n+pi(-) 
15259        if( ((lb(i1).eq.10.and.lb(i2).eq.25).
15260      &  or.(lb(i1).eq.25.and.lb(i2).eq.10).
15261      &  or.(lb(i1).eq.25.and.lb(i2).eq.12).
15262      &  or.(lb(i1).eq.12.and.lb(i2).eq.25))
15263      &       .OR. ((lb(i1).eq.-10.and.lb(i2).eq.27).
15264      &  or.(lb(i1).eq.27.and.lb(i2).eq.-10).
15265      &  or.(lb(i1).eq.27.and.lb(i2).eq.-12).
15266      &  or.(lb(i1).eq.-12.and.lb(i2).eq.27)) )then
15267        if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
15268         ii = i1
15269        lb(i1)=2
15270        e(i1)=amn
15271        lb(i2)=3
15272        e(i2)=ap1
15273        go to 40
15274        else
15275         ii = i2
15276        lb(i2)=2
15277        e(i2)=amn
15278        lb(i1)=3
15279        e(i1)=ap1
15280        go to 40
15281        ENDIF
15282        endif
15283 60       IBLOCK=82
15284 * FOR OMEGA REABSORPTION
15285 * Relable particles, I1 is assigned to the Delta 
15286 * and I2 is assigned to the meson
15287 * for the reverse of the following process
15288 *(1) for D(0)+OMEGA(0)-->n+pi(0) or p+pi(-) 
15289        if((iabs(lb(i1)).eq.7.and.lb(i2).eq.28).
15290      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.7))then
15291               if(iabs(lb(i1)).eq.7)then
15292         ii = i1
15293        IF(X2.LE.0.5)THEN
15294        lb(i1)=2
15295        e(i1)=amn
15296        lb(i2)=4
15297        e(i2)=ap1
15298        go to 40
15299        Else
15300        lb(i1)=1
15301        e(i1)=amn
15302        lb(i2)=3
15303        e(i2)=ap1
15304        go to 40
15305        endif
15306               else
15307         ii = i2
15308        IF(X2.LE.0.5)THEN
15309        lb(i2)=2
15310        e(i2)=amn
15311        lb(i1)=4
15312        e(i1)=ap1
15313        go to 40
15314        Else
15315        lb(i2)=1
15316        e(i2)=amn
15317        lb(i1)=3
15318        e(i1)=ap1
15319        go to 40
15320        endif
15321               endif
15322        endif
15323 *(2) for D(+)+OMEGA(0)-->pi(+)+n or pi(0)+p 
15324        if((iabs(lb(i1)).eq.8.and.lb(i2).eq.28).
15325      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.8))then
15326               if(iabs(lb(i1)).eq.8)then
15327         ii = i1
15328        IF(X2.LE.0.5)THEN
15329        lb(i1)=2
15330        e(i1)=amn
15331        lb(i2)=5
15332        e(i2)=ap1
15333        go to 40
15334        Else
15335        lb(i1)=1
15336        e(i1)=amn
15337        lb(i2)=4
15338        e(i2)=ap1
15339        go to 40
15340        endif
15341               else
15342         ii = i2
15343        IF(X2.LE.0.5)THEN
15344        lb(i2)=2
15345        e(i2)=amn
15346        lb(i1)=5
15347        e(i1)=ap1
15348        go to 40
15349        Else
15350        lb(i2)=1
15351        e(i2)=amn
15352        lb(i1)=4
15353        e(i1)=ap1
15354        go to 40
15355        endif
15356               endif
15357        endif
15358 *(3) for D(-)+OMEGA(0)-->n+pi(-) 
15359        if((iabs(lb(i1)).eq.6.and.lb(i2).eq.28).
15360      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.6))then
15361               if(iabs(lb(i1)).eq.6)then
15362         ii = i1
15363        lb(i1)=2
15364        e(i1)=amn
15365        lb(i2)=3
15366        e(i2)=ap1
15367        go to 40
15368        else
15369         ii = i2
15370        lb(i2)=2
15371        e(i2)=amn
15372        lb(i1)=3
15373        e(i1)=ap1
15374        go to 40
15375        ENDIF
15376        endif
15377 *(4) for D(++)+OMEGA(0)-->p+pi(+) 
15378        if((iabs(lb(i1)).eq.9.and.lb(i2).eq.28).
15379      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.9))then
15380               if(iabs(lb(i1)).eq.9)then
15381         ii = i1
15382        lb(i1)=1
15383        e(i1)=amn
15384        lb(i2)=5
15385        e(i2)=ap1
15386        go to 40
15387        else
15388         ii = i2
15389        lb(i2)=1
15390        e(i2)=amn
15391        lb(i1)=5
15392        e(i1)=ap1
15393        go to 40
15394        ENDIF
15395        endif
15396 *(5) for N*(1440) or N*(1535)(0)+omega(0)-->n+pi(0) or p+pi(-) 
15397        if((iabs(lb(i1)).eq.10.and.lb(i2).eq.28).
15398      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.10).
15399      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.12).
15400      &  or.(lb(i2).eq.28.and.iabs(lb(i1)).eq.12))then
15401               if(iabs(lb(i1)).eq.10.or.iabs(lb(i1)).eq.12)then
15402         ii = i1
15403        IF(X2.LE.0.5)THEN
15404        lb(i1)=2
15405        e(i1)=amn
15406        lb(i2)=4
15407        e(i2)=ap1
15408        go to 40
15409        Else
15410        lb(i1)=1
15411        e(i1)=amn
15412        lb(i2)=3
15413        e(i2)=ap1
15414        go to 40
15415        endif
15416               else
15417         ii = i2
15418        IF(X2.LE.0.5)THEN
15419        lb(i2)=2
15420        e(i2)=amn
15421        lb(i1)=4
15422        e(i1)=ap1
15423        go to 40
15424        Else
15425        lb(i2)=1
15426        e(i2)=amn
15427        lb(i1)=3
15428        e(i1)=ap1
15429        go to 40
15430        endif
15431               endif
15432        endif
15433 *(6) for N*(1440) or N*(1535)(+)+omega(0)-->pi(+)+n or pi(0)+p 
15434        if((iabs(lb(i1)).eq.11.and.lb(i2).eq.28).
15435      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.11).
15436      &  or.(lb(i1).eq.28.and.iabs(lb(i2)).eq.13).
15437      &  or.(lb(i2).eq.28.and.iabs(lb(i1)).eq.13))then
15438               if(iabs(lb(i1)).eq.11.or.iabs(lb(i1)).eq.13)then
15439         ii = i1
15440        IF(X2.LE.0.5)THEN
15441        lb(i1)=2
15442        e(i1)=amn
15443        lb(i2)=5
15444        e(i2)=ap1
15445        go to 40
15446        Else
15447        lb(i1)=1
15448        e(i1)=amn
15449        lb(i2)=4
15450        e(i2)=ap1
15451        go to 40
15452        endif
15453               else
15454         ii = i2
15455        IF(X2.LE.0.5)THEN
15456        lb(i2)=2
15457        e(i2)=amn
15458        lb(i1)=5
15459        e(i1)=ap1
15460        go to 40
15461        Else
15462        lb(i2)=1
15463        e(i2)=amn
15464        lb(i1)=4
15465        e(i1)=ap1
15466        go to 40
15467        endif
15468               endif
15469        endif
15470 40       em1=e(i1)
15471        em2=e(i2)
15472        if(ianti.eq.1 .and. lb(i1).ge.1 .and. lb(i2).ge.1)then
15473          lb(ii) = -lb(ii)
15474            jj = i2
15475           if(ii .eq. i2)jj = i1
15476           if(lb(jj).eq.3)then
15477            lb(jj) = 5
15478           elseif(lb(jj).eq.5)then
15479            lb(jj) = 3
15480           endif
15481          endif
15482        endif
15483 *-----------------------------------------------------------------------
15484 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15485 * ENERGY CONSERVATION
15486 50          PR2   = (SRT**2 - EM1**2 - EM2**2)**2
15487      1                - 4.0 * (EM1*EM2)**2
15488           IF(PR2.LE.0.)PR2=1.E-09
15489           PR=SQRT(PR2)/(2.*SRT)
15490 *          C1   = 1.0 - 2.0 * RANART(NSEED)
15491 
15492 clin-10/25/02 get rid of argument usage mismatch in PTR():
15493           xptr=0.33*pr
15494 c         cc1=ptr(0.33*pr,iseed)
15495          cc1=ptr(xptr,iseed)
15496 clin-10/25/02-end
15497 
15498 clin-9/2012: check argument in sqrt():
15499          scheck=pr**2-cc1**2
15500          if(scheck.lt.0) then
15501             write(99,*) 'scheck39: ', scheck
15502             scheck=0.
15503          endif
15504          c1=sqrt(scheck)/pr
15505 c         c1=sqrt(pr**2-cc1**2)/pr
15506 
15507           T1   = 2.0 * PI * RANART(NSEED)
15508       S1   = SQRT( 1.0 - C1**2 )
15509       CT1  = COS(T1)
15510       ST1  = SIN(T1)
15511       PZ   = PR * C1
15512       PX   = PR * S1*CT1 
15513       PY   = PR * S1*ST1 
15514 * ROTATE THE MOMENTUM
15515        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ)
15516       RETURN
15517       END
15518 **********************************
15519 * sp 03/19/01                                                          *
15520 *                                                                      *
15521         SUBROUTINE Crlaba(PX,PY,PZ,SRT,brel,brsgm,
15522      &                        I1,I2,nt,IBLOCK,nchrg,icase)
15523 *     PURPOSE:                                                         *
15524 *            DEALING WITH   K+ + N(D,N*)-bar <-->  La(Si)-bar + pi     *
15525 *     NOTE   :                                                         *
15526 *                                                                      *
15527 *     QUANTITIES:                                                 *
15528 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15529 *           SRT      - SQRT OF S                                       *
15530 *           IBLOCK   - THE INFORMATION BACK                            *
15531 *                     8-> elastic scatt                               *
15532 *                     100-> K+ + N-bar -> Sigma-bar + PI
15533 *                     102-> PI + Sigma(Lambda)-bar -> K+ + N-bar
15534 **********************************
15535         PARAMETER (MAXSTR=150001, MAXR=1, AMN=0.939457,
15536      1  AMP=0.93828,AP1=0.13496,
15537      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15538         PARAMETER  (AKA=0.498,ALA=1.1157,ASA=1.1974)
15539         PARAMETER  (ETAM=0.5475, AOMEGA=0.782, ARHO=0.77)
15540         COMMON /AA/ R(3,MAXSTR)
15541 cc      SAVE /AA/
15542         COMMON /BB/ P(3,MAXSTR)
15543 cc      SAVE /BB/
15544         COMMON /CC/ E(MAXSTR)
15545 cc      SAVE /CC/
15546         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15547 cc      SAVE /EE/
15548         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15549 cc      SAVE /input1/
15550       COMMON/RNDF77/NSEED
15551 cc      SAVE /RNDF77/
15552       SAVE   
15553 c
15554       PX0=PX
15555       PY0=PY
15556       PZ0=PZ
15557 c
15558       if(icase .eq. 3)then
15559          rrr=RANART(NSEED)
15560          if(rrr.lt.brel) then
15561 c            !! elastic scat.  (avoid in reverse process)
15562             IBLOCK=8
15563         else 
15564             IBLOCK=100
15565             if(rrr.lt.(brel+brsgm)) then
15566 c*    K+ + N-bar -> Sigma-bar + PI
15567                LB(i1) = -15 - int(3 * RANART(NSEED))
15568 
15569                e(i1)=asa
15570             else
15571 c*    K+ + N-bar -> Lambda-bar + PI
15572                LB(i1)= -14  
15573                e(i1)=ala
15574             endif
15575             LB(i2) = 3 + int(3 * RANART(NSEED))
15576             e(i2)=0.138
15577         endif
15578       endif
15579 c
15580 c
15581       if(icase .eq. 4)then
15582          rrr=RANART(NSEED)
15583          if(rrr.lt.brel) then
15584 c            !! elastic scat.
15585             IBLOCK=8
15586          else    
15587             IBLOCK=102
15588 c    PI + Sigma(Lambda)-bar -> K+ + N-bar
15589 c         ! K+
15590             LB(i1) = 23
15591             LB(i2) = -1 - int(2 * RANART(NSEED))
15592             if(nchrg.eq.-2) LB(i2) = -6
15593             if(nchrg.eq. 1) LB(i2) = -9
15594             e(i1) = aka
15595             e(i2) = 0.938
15596             if(nchrg.eq.-2.or.nchrg.eq.1) e(i2)=1.232
15597          endif
15598       endif
15599 c
15600       EM1=E(I1)
15601       EM2=E(I2)
15602 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15603 * ENERGY CONSERVATION
15604       PR2   = (SRT**2 - EM1**2 - EM2**2)**2
15605      1     - 4.0 * (EM1*EM2)**2
15606       IF(PR2.LE.0.)PR2=1.e-09
15607       PR=SQRT(PR2)/(2.*SRT)
15608       C1   = 1.0 - 2.0 * RANART(NSEED)
15609       T1   = 2.0 * PI * RANART(NSEED)
15610       S1   = SQRT( 1.0 - C1**2 )
15611       CT1  = COS(T1)
15612       ST1  = SIN(T1)
15613       PZ   = PR * C1
15614       PX   = PR * S1*CT1 
15615       PY   = PR * S1*ST1
15616 * ROTATE IT 
15617       CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
15618       RETURN
15619       END
15620 **********************************
15621 *                                                                      *
15622 *                                                                      *
15623       SUBROUTINE Crkn(PX,PY,PZ,SRT,I1,I2,IBLOCK)
15624 *     PURPOSE:                                                         *
15625 *             DEALING WITH kaON+N/pi-->KAON +N/pi elastic PROCESS      *
15626 *     NOTE   :                                                         *
15627 *          
15628 *     QUANTITIES:                                                 *
15629 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15630 *           SRT      - SQRT OF S                                       *
15631 *           IBLOCK   - THE INFORMATION BACK                            *
15632 *                     8-> PION+N-->L/S+KAON
15633 **********************************
15634         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15635      1  AMP=0.93828,AP1=0.13496,
15636      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15637         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
15638         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15639         COMMON /AA/ R(3,MAXSTR)
15640 cc      SAVE /AA/
15641         COMMON /BB/ P(3,MAXSTR)
15642 cc      SAVE /BB/
15643         COMMON /CC/ E(MAXSTR)
15644 cc      SAVE /CC/
15645         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15646 cc      SAVE /EE/
15647         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15648 cc      SAVE /input1/
15649       COMMON/RNDF77/NSEED
15650 cc      SAVE /RNDF77/
15651       SAVE   
15652 
15653        PX0=PX
15654        PY0=PY
15655        PZ0=PZ
15656 *-----------------------------------------------------------------------
15657         IBLOCK=8
15658         NTAG=0
15659         EM1=E(I1)
15660         EM2=E(I2)
15661 *-----------------------------------------------------------------------
15662 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15663 * ENERGY CONSERVATION
15664           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
15665      1                - 4.0 * (EM1*EM2)**2
15666           IF(PR2.LE.0.)PR2=1.e-09
15667           PR=SQRT(PR2)/(2.*SRT)
15668           C1   = 1.0 - 2.0 * RANART(NSEED)
15669           T1   = 2.0 * PI * RANART(NSEED)
15670       S1   = SQRT( 1.0 - C1**2 )
15671       CT1  = COS(T1)
15672       ST1  = SIN(T1)
15673       PZ   = PR * C1
15674       PX   = PR * S1*CT1 
15675       PY   = PR * S1*ST1
15676       RETURN
15677       END
15678 **********************************
15679 *                                                                      *
15680 *                                                                      *
15681       SUBROUTINE Crppba(PX,PY,PZ,SRT,I1,I2,IBLOCK)
15682 *     PURPOSE:                                                         *
15683 
15684 clin-8/29/00*             DEALING WITH anti-nucleon annihilation with 
15685 *             DEALING WITH anti-baryon annihilation with 
15686 
15687 *             nucleons or baryon resonances
15688 *             Determine:                                               *
15689 *             (1) no. of pions in the final state
15690 *             (2) relable particles in the final state
15691 *             (3) new momenta of final state particles                 *
15692 *                  
15693 *     QUANTITIES:                                                      *
15694 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15695 *           SRT      - SQRT OF S                                       *
15696 *           IBLOCK   - INFORMATION about the reaction channel          *
15697 *                
15698 *           iblock   - 1902 annihilation-->pion(+)+pion(-)   (2 pion)
15699 *           iblock   - 1903 annihilation-->pion(+)+rho(-)    (3 pion)
15700 *           iblock   - 1904 annihilation-->rho(+)+rho(-)     (4 pion)
15701 *           iblock   - 1905 annihilation-->rho(0)+omega      (5 pion)
15702 *           iblock   - 1906 annihilation-->omega+omega       (6 pion)
15703 *       charge conservation is enforced in relabling particles 
15704 *       in the final state (note: at the momentum we don't check the
15705 *       initial charges while dealing with annihilation, since some
15706 *       annihilation channels between antinucleons and nucleons (baryon
15707 *       resonances) might be forbiden by charge conservation, this effect
15708 *       should be small, but keep it in mind.
15709 **********************************
15710         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15711      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,
15712      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15713         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
15714         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15715         COMMON /AA/ R(3,MAXSTR)
15716 cc      SAVE /AA/
15717         COMMON /BB/ P(3,MAXSTR)
15718 cc      SAVE /BB/
15719         COMMON /CC/ E(MAXSTR)
15720 cc      SAVE /CC/
15721         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15722 cc      SAVE /EE/
15723         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15724 cc      SAVE /input1/
15725       COMMON/RNDF77/NSEED
15726 cc      SAVE /RNDF77/
15727       SAVE   
15728 
15729        PX0=PX
15730        PY0=PY
15731        PZ0=PZ
15732 * determine the no. of pions in the final state using a 
15733 * statistical model
15734        call pbarfs(srt,npion,iseed)
15735 * find the masses of the final state particles before calculate 
15736 * their momenta, and relable them. The masses of rho and omega 
15737 * will be generated according to the Breit Wigner formula       (NOTE!!!
15738 * NOT DONE YET, AT THE MOMENT LET US USE FIXED RHO AND OMEGA MAEES)
15739 cbali2/22/99
15740 * Here we generate two stes of integer random numbers (3,4,5)
15741 * one or both of them are used directly as the lables of pions
15742 * similarly, 22+nchrg1 and 22+nchrg2 are used directly 
15743 * to label rhos  
15744        nchrg1=3+int(3*RANART(NSEED))
15745        nchrg2=3+int(3*RANART(NSEED))
15746 * the corresponding masses of pions
15747       pmass1=ap1
15748        pmass2=ap1
15749        if(nchrg1.eq.3.or.nchrg1.eq.5)pmass1=ap2
15750        if(nchrg2.eq.3.or.nchrg2.eq.5)pmass2=ap2
15751 * (1) for 2 pion production
15752        IF(NPION.EQ.2)THEN 
15753        IBLOCK=1902
15754 * randomly generate the charges of final state particles,
15755        LB(I1)=nchrg1
15756        E(I1)=pmass1
15757        LB(I2)=nchrg2
15758        E(I2)=pmass2
15759 * TO CALCULATE THE FINAL MOMENTA
15760        GO TO 50
15761        ENDIF
15762 * (2) FOR 3 PION PRODUCTION
15763        IF(NPION.EQ.3)THEN 
15764        IBLOCK=1903
15765        LB(I1)=nchrg1
15766        E(I1)=pmass1
15767        LB(I2)=22+nchrg2
15768             E(I2)=AMRHO
15769        GO TO 50
15770        ENDIF
15771 * (3) FOR 4 PION PRODUCTION
15772 * we allow both rho+rho and pi+omega with 50-50% probability
15773         IF(NPION.EQ.4)THEN 
15774        IBLOCK=1904
15775 * determine rho+rho or pi+omega
15776        if(RANART(NSEED).ge.0.5)then
15777 * rho+rho  
15778        LB(I1)=22+nchrg1
15779        E(I1)=AMRHO
15780        LB(I2)=22+nchrg2
15781             E(I2)=AMRHO
15782        else
15783 * pion+omega
15784        LB(I1)=nchrg1
15785        E(I1)=pmass1
15786        LB(I2)=28
15787             E(I2)=AMOMGA
15788        endif
15789        GO TO 50
15790        ENDIF
15791 * (4) FOR 5 PION PRODUCTION
15792         IF(NPION.EQ.5)THEN 
15793        IBLOCK=1905
15794 * RHO AND OMEGA
15795         LB(I1)=22+nchrg1
15796        E(I1)=AMRHO
15797        LB(I2)=28
15798        E(I2)=AMOMGA
15799        GO TO 50
15800        ENDIF
15801 * (5) FOR 6 PION PRODUCTION
15802          IF(NPION.EQ.6)THEN 
15803        IBLOCK=1906
15804 * OMEGA AND OMEGA
15805         LB(I1)=28
15806        E(I1)=AMOMGA
15807        LB(I2)=28
15808           E(I2)=AMOMGA
15809        ENDIF
15810 cbali2/22/99
15811 50    EM1=E(I1)
15812       EM2=E(I2)
15813 *-----------------------------------------------------------------------
15814 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
15815 * ENERGY CONSERVATION
15816           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
15817      1                - 4.0 * (EM1*EM2)**2
15818           IF(PR2.LE.0.)PR2=1.E-08
15819           PR=SQRT(PR2)/(2.*SRT)
15820 * WE ASSUME AN ISOTROPIC ANGULAR DISTRIBUTION IN THE CMS 
15821           C1   = 1.0 - 2.0 * RANART(NSEED)
15822           T1   = 2.0 * PI * RANART(NSEED)
15823       S1   = SQRT( 1.0 - C1**2 )
15824       CT1  = COS(T1)
15825       ST1  = SIN(T1)
15826 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
15827       PZ   = PR * C1
15828       PX   = PR * S1*CT1 
15829       PY   = PR * S1*ST1
15830 * ROTATE IT 
15831        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
15832       RETURN
15833       END
15834 cbali2/7/99end
15835 cbali3/5/99
15836 **********************************
15837 *     PURPOSE:                                                         *
15838 *     assign final states for K+K- --> light mesons
15839 *
15840       SUBROUTINE crkkpi(I1,I2,XSK1, XSK2, XSK3, XSK4,
15841      &             XSK5, XSK6, XSK7, XSK8, XSK9, XSK10, XSK11, SIGK,
15842      &             IBLOCK,lbp1,lbp2,emm1,emm2)
15843 *
15844 *     QUANTITIES:                                                     *
15845 *           IBLOCK   - INFORMATION about the reaction channel          *
15846 *                
15847 *             iblock   - 1907
15848 **********************************
15849         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15850      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,
15851      &  AMETA = 0.5473,
15852      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15853         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
15854         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15855         COMMON /AA/ R(3,MAXSTR)
15856 cc      SAVE /AA/
15857         COMMON /BB/ P(3,MAXSTR)
15858 cc      SAVE /BB/
15859         COMMON /CC/ E(MAXSTR)
15860 cc      SAVE /CC/
15861         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15862 cc      SAVE /EE/
15863         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15864 cc      SAVE /input1/
15865       COMMON/RNDF77/NSEED
15866 cc      SAVE /RNDF77/
15867       SAVE   
15868 
15869        IBLOCK=1907
15870         X1 = RANART(NSEED) * SIGK
15871         XSK2 = XSK1 + XSK2
15872         XSK3 = XSK2 + XSK3
15873         XSK4 = XSK3 + XSK4
15874         XSK5 = XSK4 + XSK5
15875         XSK6 = XSK5 + XSK6
15876         XSK7 = XSK6 + XSK7
15877         XSK8 = XSK7 + XSK8
15878         XSK9 = XSK8 + XSK9
15879         XSK10 = XSK9 + XSK10
15880         IF (X1 .LE. XSK1) THEN
15881            LB(I1) = 3 + int(3 * RANART(NSEED))
15882            LB(I2) = 3 + int(3 * RANART(NSEED))
15883            E(I1) = AP2
15884            E(I2) = AP2
15885            GOTO 100
15886         ELSE IF (X1 .LE. XSK2) THEN
15887            LB(I1) = 3 + int(3 * RANART(NSEED))
15888            LB(I2) = 25 + int(3 * RANART(NSEED))
15889            E(I1) = AP2
15890            E(I2) = AMRHO
15891            GOTO 100
15892         ELSE IF (X1 .LE. XSK3) THEN
15893            LB(I1) = 3 + int(3 * RANART(NSEED))
15894            LB(I2) = 28
15895            E(I1) = AP2
15896            E(I2) = AMOMGA
15897            GOTO 100
15898         ELSE IF (X1 .LE. XSK4) THEN
15899            LB(I1) = 3 + int(3 * RANART(NSEED))
15900            LB(I2) = 0
15901            E(I1) = AP2
15902            E(I2) = AMETA
15903            GOTO 100
15904         ELSE IF (X1 .LE. XSK5) THEN
15905            LB(I1) = 25 + int(3 * RANART(NSEED))
15906            LB(I2) = 25 + int(3 * RANART(NSEED))
15907            E(I1) = AMRHO
15908            E(I2) = AMRHO
15909            GOTO 100
15910         ELSE IF (X1 .LE. XSK6) THEN
15911            LB(I1) = 25 + int(3 * RANART(NSEED))
15912            LB(I2) = 28
15913            E(I1) = AMRHO
15914            E(I2) = AMOMGA
15915            GOTO 100
15916         ELSE IF (X1 .LE. XSK7) THEN
15917            LB(I1) = 25 + int(3 * RANART(NSEED))
15918            LB(I2) = 0
15919            E(I1) = AMRHO
15920            E(I2) = AMETA
15921            GOTO 100
15922         ELSE IF (X1 .LE. XSK8) THEN
15923            LB(I1) = 28
15924            LB(I2) = 28
15925            E(I1) = AMOMGA
15926            E(I2) = AMOMGA
15927            GOTO 100
15928         ELSE IF (X1 .LE. XSK9) THEN
15929            LB(I1) = 28
15930            LB(I2) = 0
15931            E(I1) = AMOMGA
15932            E(I2) = AMETA
15933            GOTO 100
15934         ELSE IF (X1 .LE. XSK10) THEN
15935            LB(I1) = 0
15936            LB(I2) = 0
15937            E(I1) = AMETA
15938            E(I2) = AMETA
15939         ELSE
15940           iblock = 222
15941           call rhores(i1,i2)
15942 c     !! phi
15943           lb(i1) = 29
15944 c          return
15945           e(i2)=0.
15946         END IF
15947 
15948  100    CONTINUE
15949         lbp1=lb(i1)
15950         lbp2=lb(i2)
15951         emm1=e(i1)
15952         emm2=e(i2)
15953 
15954       RETURN
15955       END
15956 **********************************
15957 *     PURPOSE:                                                         *
15958 *             DEALING WITH K+Y -> piN scattering
15959 *
15960       SUBROUTINE Crkhyp(PX,PY,PZ,SRT,I1,I2,
15961      &     XKY1, XKY2, XKY3, XKY4, XKY5,
15962      &     XKY6, XKY7, XKY8, XKY9, XKY10, XKY11, XKY12, XKY13,
15963      &     XKY14, XKY15, XKY16, XKY17, SIGK, IKMP,
15964      &     IBLOCK)
15965 *
15966 *             Determine:                                               *
15967 *             (1) relable particles in the final state                 *
15968 *             (2) new momenta of final state particles                 *
15969 *                                                                        *
15970 *     QUANTITIES:                                                    *
15971 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
15972 *           SRT      - SQRT OF S                                       *
15973 *           IBLOCK   - INFORMATION about the reaction channel          *
15974 *                                                                     *
15975 *             iblock   - 1908                                          *
15976 *             iblock   - 222   !! phi                                  *
15977 **********************************
15978         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
15979      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,APHI=1.02,
15980      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
15981           parameter (pimass=0.140, AMETA = 0.5473, aka=0.498,
15982      &     aml=1.116,ams=1.193, AM1440 = 1.44, AM1535 = 1.535)
15983         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
15984         COMMON /AA/ R(3,MAXSTR)
15985 cc      SAVE /AA/
15986         COMMON /BB/ P(3,MAXSTR)
15987 cc      SAVE /BB/
15988         COMMON /CC/ E(MAXSTR)
15989 cc      SAVE /CC/
15990         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
15991 cc      SAVE /EE/
15992         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
15993 cc      SAVE /input1/
15994       COMMON/RNDF77/NSEED
15995 cc      SAVE /RNDF77/
15996       SAVE   
15997 
15998        PX0=PX
15999        PY0=PY
16000        PZ0=PZ
16001        IBLOCK=1908
16002 c
16003         X1 = RANART(NSEED) * SIGK
16004         XKY2 = XKY1 + XKY2
16005         XKY3 = XKY2 + XKY3
16006         XKY4 = XKY3 + XKY4
16007         XKY5 = XKY4 + XKY5
16008         XKY6 = XKY5 + XKY6
16009         XKY7 = XKY6 + XKY7
16010         XKY8 = XKY7 + XKY8
16011         XKY9 = XKY8 + XKY9
16012         XKY10 = XKY9 + XKY10
16013         XKY11 = XKY10 + XKY11
16014         XKY12 = XKY11 + XKY12
16015         XKY13 = XKY12 + XKY13
16016         XKY14 = XKY13 + XKY14
16017         XKY15 = XKY14 + XKY15
16018         XKY16 = XKY15 + XKY16
16019         IF (X1 .LE. XKY1) THEN
16020            LB(I1) = 3 + int(3 * RANART(NSEED))
16021            LB(I2) = 1 + int(2 * RANART(NSEED))
16022            E(I1) = PIMASS
16023            E(I2) = AMP
16024            GOTO 100
16025         ELSE IF (X1 .LE. XKY2) THEN
16026            LB(I1) = 3 + int(3 * RANART(NSEED))
16027            LB(I2) = 6 + int(4 * RANART(NSEED))
16028            E(I1) = PIMASS
16029            E(I2) = AM0
16030            GOTO 100
16031         ELSE IF (X1 .LE. XKY3) THEN
16032            LB(I1) = 3 + int(3 * RANART(NSEED))
16033            LB(I2) = 10 + int(2 * RANART(NSEED))
16034            E(I1) = PIMASS
16035            E(I2) = AM1440
16036            GOTO 100
16037         ELSE IF (X1 .LE. XKY4) THEN
16038            LB(I1) = 3 + int(3 * RANART(NSEED))
16039            LB(I2) = 12 + int(2 * RANART(NSEED))
16040            E(I1) = PIMASS
16041            E(I2) = AM1535
16042            GOTO 100
16043         ELSE IF (X1 .LE. XKY5) THEN
16044            LB(I1) = 25 + int(3 * RANART(NSEED))
16045            LB(I2) = 1 + int(2 * RANART(NSEED))
16046            E(I1) = AMRHO
16047            E(I2) = AMP
16048            GOTO 100
16049         ELSE IF (X1 .LE. XKY6) THEN
16050            LB(I1) = 25 + int(3 * RANART(NSEED))
16051            LB(I2) = 6 + int(4 * RANART(NSEED))
16052            E(I1) = AMRHO
16053            E(I2) = AM0
16054            GOTO 100
16055         ELSE IF (X1 .LE. XKY7) THEN
16056            LB(I1) = 25 + int(3 * RANART(NSEED))
16057            LB(I2) = 10 + int(2 * RANART(NSEED))
16058            E(I1) = AMRHO
16059            E(I2) = AM1440
16060            GOTO 100
16061         ELSE IF (X1 .LE. XKY8) THEN
16062            LB(I1) = 25 + int(3 * RANART(NSEED))
16063            LB(I2) = 12 + int(2 * RANART(NSEED))
16064            E(I1) = AMRHO
16065            E(I2) = AM1535
16066            GOTO 100
16067         ELSE IF (X1 .LE. XKY9) THEN
16068            LB(I1) = 28
16069            LB(I2) = 1 + int(2 * RANART(NSEED))
16070            E(I1) = AMOMGA
16071            E(I2) = AMP
16072            GOTO 100
16073         ELSE IF (X1 .LE. XKY10) THEN
16074            LB(I1) = 28
16075            LB(I2) = 6 + int(4 * RANART(NSEED))
16076            E(I1) = AMOMGA
16077            E(I2) = AM0
16078            GOTO 100
16079         ELSE IF (X1 .LE. XKY11) THEN
16080            LB(I1) = 28
16081            LB(I2) = 10 + int(2 * RANART(NSEED))
16082            E(I1) = AMOMGA
16083            E(I2) = AM1440
16084            GOTO 100
16085         ELSE IF (X1 .LE. XKY12) THEN
16086            LB(I1) = 28
16087            LB(I2) = 12 + int(2 * RANART(NSEED))
16088            E(I1) = AMOMGA
16089            E(I2) = AM1535
16090            GOTO 100
16091         ELSE IF (X1 .LE. XKY13) THEN
16092            LB(I1) = 0
16093            LB(I2) = 1 + int(2 * RANART(NSEED))
16094            E(I1) = AMETA
16095            E(I2) = AMP
16096            GOTO 100
16097         ELSE IF (X1 .LE. XKY14) THEN
16098            LB(I1) = 0
16099            LB(I2) = 6 + int(4 * RANART(NSEED))
16100            E(I1) = AMETA
16101            E(I2) = AM0
16102            GOTO 100
16103         ELSE IF (X1 .LE. XKY15) THEN
16104            LB(I1) = 0
16105            LB(I2) = 10 + int(2 * RANART(NSEED))
16106            E(I1) = AMETA
16107            E(I2) = AM1440
16108            GOTO 100
16109         ELSE IF (X1 .LE. XKY16) THEN
16110            LB(I1) = 0
16111            LB(I2) = 12 + int(2 * RANART(NSEED))
16112            E(I1) = AMETA
16113            E(I2) = AM1535
16114            GOTO 100
16115         ELSE
16116            LB(I1) = 29
16117            LB(I2) = 1 + int(2 * RANART(NSEED))
16118            E(I1) = APHI
16119            E(I2) = AMN
16120           IBLOCK=222
16121            GOTO 100
16122         END IF
16123 
16124  100    CONTINUE
16125          if(IKMP .eq. -1) LB(I2) = -LB(I2)
16126 
16127       EM1=E(I1)
16128       EM2=E(I2)
16129 *-----------------------------------------------------------------------
16130 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
16131 * ENERGY CONSERVATION
16132           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
16133      1                - 4.0 * (EM1*EM2)**2
16134           IF(PR2.LE.0.)PR2=1.E-08
16135           PR=SQRT(PR2)/(2.*SRT)
16136 * WE ASSUME AN ISOTROPIC ANGULAR DISTRIBUTION IN THE CMS 
16137           C1   = 1.0 - 2.0 * RANART(NSEED)
16138           T1   = 2.0 * PI * RANART(NSEED)
16139       S1   = SQRT( 1.0 - C1**2 )
16140       CT1  = COS(T1)
16141       ST1  = SIN(T1)
16142 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
16143       PZ   = PR * C1
16144       PX   = PR * S1*CT1 
16145       PY   = PR * S1*ST1
16146 * ROTATE IT 
16147        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
16148       RETURN
16149       END
16150 **********************************
16151 *                                                                      *
16152 *                                                                      *
16153       SUBROUTINE CRLAN(PX,PY,PZ,SRT,I1,I2,IBLOCK)
16154 *     PURPOSE:                                                         *
16155 *      DEALING WITH La/Si-bar + N --> K+ + pi PROCESS                  *
16156 *                   La/Si + N-bar --> K- + pi                          *
16157 *     NOTE   :                                                         *
16158 *
16159 *     QUANTITIES:                                                      *
16160 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
16161 *           SRT      - SQRT OF S                                       *
16162 *           IBLOCK   - THE INFORMATION BACK                            *
16163 *                      71
16164 **********************************
16165         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
16166      1  AMP=0.93828,AP1=0.13496,
16167      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
16168         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
16169         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
16170         COMMON /AA/ R(3,MAXSTR)
16171 cc      SAVE /AA/
16172         COMMON /BB/ P(3,MAXSTR)
16173 cc      SAVE /BB/
16174         COMMON /CC/ E(MAXSTR)
16175 cc      SAVE /CC/
16176         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
16177 cc      SAVE /EE/
16178         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
16179 cc      SAVE /input1/
16180       COMMON/RNDF77/NSEED
16181 cc      SAVE /RNDF77/
16182       SAVE   
16183 
16184         PX0=PX
16185         PY0=PY                                                          
16186         PZ0=PZ
16187         IBLOCK=71
16188         NTAG=0
16189        if( (lb(i1).ge.14.and.lb(i1).le.17) .OR.
16190      &     (lb(i2).ge.14.and.lb(i2).le.17) )then
16191         LB(I1)=21
16192        else
16193         LB(I1)=23
16194        endif
16195         LB(I2)= 3 + int(3 * RANART(NSEED))
16196         E(I1)=AKA
16197         E(I2)=0.138
16198         EM1=E(I1)
16199         EM2=E(I2)
16200 *-----------------------------------------------------------------------
16201 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
16202 * ENERGY CONSERVATION
16203         PR2   = (SRT**2 - EM1**2 - EM2**2)**2
16204      1                - 4.0 * (EM1*EM2)**2
16205           IF(PR2.LE.0.)PR2=1.e-09
16206           PR=SQRT(PR2)/(2.*SRT)
16207           C1   = 1.0 - 2.0 * RANART(NSEED)
16208           T1   = 2.0 * PI * RANART(NSEED)
16209       S1   = SQRT( 1.0 - C1**2 )
16210       CT1  = COS(T1)
16211       ST1  = SIN(T1)
16212 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
16213       PZ   = PR * C1
16214       PX   = PR * S1*CT1
16215       PY   = PR * S1*ST1
16216 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
16217       RETURN
16218       END
16219 csp11/03/01 end
16220 ********************************** 
16221 **********************************
16222 *                                                                      *
16223 *                                                                      *
16224         SUBROUTINE Crkpla(PX,PY,PZ,EC,SRT,spika,
16225      &                  emm1,emm2,lbp1,lbp2,I1,I2,icase,srhoks)
16226  
16227 *     PURPOSE:                                                         *
16228 *     DEALING WITH  K+ + Pi ---> La/Si-bar + B, phi+K, phi+K* OR  K* *
16229 *                   K- + Pi ---> La/Si + B-bar  OR   K*-bar          *
16230  
16231 *     NOTE   :                                                         *
16232 *
16233 *     QUANTITIES:                                                      *
16234 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
16235 *           SRT      - SQRT OF S                                       *
16236 *           IBLOCK   - THE INFORMATION BACK                            *
16237 *                      71
16238 **********************************
16239         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
16240      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,AMRHO=0.769,AMOMGA=0.782,
16241      2  AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
16242         PARAMETER (AKA=0.498,AKS=0.895,ALA=1.1157,ASA=1.1974
16243      1 ,APHI=1.02)
16244         PARAMETER (AM1440 = 1.44, AM1535 = 1.535)
16245         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
16246         COMMON /AA/ R(3,MAXSTR)
16247 cc      SAVE /AA/
16248         COMMON /BB/ P(3,MAXSTR)
16249 cc      SAVE /BB/
16250         COMMON /CC/ E(MAXSTR)
16251 cc      SAVE /CC/
16252         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
16253 cc      SAVE /EE/
16254         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
16255 cc      SAVE /input1/
16256       COMMON/RNDF77/NSEED
16257 cc      SAVE /RNDF77/
16258       SAVE   
16259 
16260           emm1=0.
16261           emm2=0.
16262           lbp1=0
16263           lbp2=0
16264            XKP0 = spika
16265            XKP1 = 0.
16266            XKP2 = 0.
16267            XKP3 = 0.
16268            XKP4 = 0.
16269            XKP5 = 0.
16270            XKP6 = 0.
16271            XKP7 = 0.
16272            XKP8 = 0.
16273            XKP9 = 0.
16274            XKP10 = 0.
16275            sigm = 15.
16276 c         if(lb(i1).eq.21.or.lb(i2).eq.21)sigm=10.
16277         pdd = (srt**2-(aka+ap1)**2)*(srt**2-(aka-ap1)**2)
16278 c
16279          if(srt .lt. (ala+amn))go to 70
16280         XKP1 = sigm*(4./3.)*(srt**2-(ala+amn)**2)*
16281      &           (srt**2-(ala-amn)**2)/pdd
16282          if(srt .gt. (ala+am0))then
16283         XKP2 = sigm*(16./3.)*(srt**2-(ala+am0)**2)*
16284      &           (srt**2-(ala-am0)**2)/pdd
16285          endif
16286          if(srt .gt. (ala+am1440))then
16287         XKP3 = sigm*(4./3.)*(srt**2-(ala+am1440)**2)*
16288      &           (srt**2-(ala-am1440)**2)/pdd
16289          endif
16290          if(srt .gt. (ala+am1535))then
16291         XKP4 = sigm*(4./3.)*(srt**2-(ala+am1535)**2)*
16292      &           (srt**2-(ala-am1535)**2)/pdd
16293          endif
16294 c
16295          if(srt .gt. (asa+amn))then
16296         XKP5 = sigm*4.*(srt**2-(asa+amn)**2)*
16297      &           (srt**2-(asa-amn)**2)/pdd
16298          endif
16299          if(srt .gt. (asa+am0))then
16300         XKP6 = sigm*16.*(srt**2-(asa+am0)**2)*
16301      &           (srt**2-(asa-am0)**2)/pdd
16302          endif
16303          if(srt .gt. (asa+am1440))then
16304         XKP7 = sigm*4.*(srt**2-(asa+am1440)**2)*
16305      &           (srt**2-(asa-am1440)**2)/pdd
16306          endif
16307          if(srt .gt. (asa+am1535))then
16308         XKP8 = sigm*4.*(srt**2-(asa+am1535)**2)*
16309      &           (srt**2-(asa-am1535)**2)/pdd
16310          endif
16311 70     continue
16312           sig1 = 195.639
16313           sig2 = 372.378
16314        if(srt .gt. aphi+aka)then
16315         pff = sqrt((srt**2-(aphi+aka)**2)*(srt**2-(aphi-aka)**2))
16316 
16317 clin-9/2012: check argument in sqrt():
16318         scheck=pdd
16319         if(scheck.le.0) then
16320            write(99,*) 'scheck40: ', scheck
16321            stop
16322         endif
16323         
16324          XKP9 = sig1*pff/sqrt(pdd)*1./32./pi/srt**2
16325         if(srt .gt. aphi+aks)then
16326         pff = sqrt((srt**2-(aphi+aks)**2)*(srt**2-(aphi-aks)**2))
16327 
16328 clin-9/2012: check argument in sqrt():
16329         scheck=pdd
16330         if(scheck.le.0) then
16331            write(99,*) 'scheck41: ', scheck
16332            stop
16333         endif
16334 
16335          XKP10 = sig2*pff/sqrt(pdd)*3./32./pi/srt**2
16336        endif
16337         endif
16338 
16339 clin-8/15/02 K pi -> K* (rho omega), from detailed balance, 
16340 c neglect rho and omega mass difference for now:
16341         sigpik=0.
16342         if(srt.gt.(amrho+aks)) then
16343            sigpik=srhoks*9.
16344      1          *(srt**2-(0.77-aks)**2)*(srt**2-(0.77+aks)**2)/4
16345      2          /srt**2/(px**2+py**2+pz**2)
16346            if(srt.gt.(amomga+aks)) sigpik=sigpik*12./9.
16347         endif
16348 
16349 c
16350          sigkp = XKP0 + XKP1 + XKP2 + XKP3 + XKP4
16351      &         + XKP5 + XKP6 + XKP7 + XKP8 + XKP9 + XKP10 +sigpik
16352            icase = 0 
16353          DSkn=SQRT(sigkp/PI/10.)
16354         dsknr=dskn+0.1
16355         CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
16356      1  PX,PY,PZ)
16357         IF(IC.EQ.-1)return
16358 c
16359         randu = RANART(NSEED)*sigkp
16360         XKP1 = XKP0 + XKP1
16361         XKP2 = XKP1 + XKP2
16362         XKP3 = XKP2 + XKP3
16363         XKP4 = XKP3 + XKP4
16364         XKP5 = XKP4 + XKP5
16365         XKP6 = XKP5 + XKP6
16366         XKP7 = XKP6 + XKP7
16367         XKP8 = XKP7 + XKP8
16368         XKP9 = XKP8 + XKP9
16369 
16370         XKP10 = XKP9 + XKP10
16371 c
16372 c   !! K* formation
16373          if(randu .le. XKP0)then
16374            icase = 1
16375             return
16376          else
16377 * La/Si-bar + B formation
16378            icase = 2
16379          if( randu .le. XKP1 )then
16380              lbp1 = -14
16381              lbp2 = 1 + int(2*RANART(NSEED))
16382              emm1 = ala
16383              emm2 = amn
16384              go to 60
16385          elseif( randu .le. XKP2 )then
16386              lbp1 = -14
16387              lbp2 = 6 + int(4*RANART(NSEED))
16388              emm1 = ala
16389              emm2 = am0
16390              go to 60
16391          elseif( randu .le. XKP3 )then
16392              lbp1 = -14
16393              lbp2 = 10 + int(2*RANART(NSEED))
16394              emm1 = ala
16395              emm2 = am1440
16396              go to 60
16397          elseif( randu .le. XKP4 )then
16398              lbp1 = -14
16399              lbp2 = 12 + int(2*RANART(NSEED))
16400              emm1 = ala
16401              emm2 = am1535
16402              go to 60
16403          elseif( randu .le. XKP5 )then
16404              lbp1 = -15 - int(3*RANART(NSEED))
16405              lbp2 = 1 + int(2*RANART(NSEED))
16406              emm1 = asa
16407              emm2 = amn
16408              go to 60
16409          elseif( randu .le. XKP6 )then
16410              lbp1 = -15 - int(3*RANART(NSEED))
16411              lbp2 = 6 + int(4*RANART(NSEED))
16412              emm1 = asa
16413              emm2 = am0
16414              go to 60
16415           elseif( randu .lt. XKP7 )then
16416              lbp1 = -15 - int(3*RANART(NSEED))
16417              lbp2 = 10 + int(2*RANART(NSEED))
16418              emm1 = asa
16419              emm2 = am1440
16420              go to 60
16421           elseif( randu .lt. XKP8 )then
16422              lbp1 = -15 - int(3*RANART(NSEED))
16423              lbp2 = 12 + int(2*RANART(NSEED))
16424              emm1 = asa
16425              emm2 = am1535
16426              go to 60
16427           elseif( randu .lt. XKP9 )then
16428 c       !! phi +K  formation (iblock=224)
16429             icase = 3
16430              lbp1 = 29
16431              lbp2 = 23
16432              emm1 = aphi
16433              emm2 = aka
16434            if(lb(i1).eq.21.or.lb(i2).eq.21)then
16435 c         !! phi +K-bar  formation (iblock=124)
16436              lbp2 = 21
16437              icase = -3
16438            endif
16439              go to 60
16440           elseif( randu .lt. XKP10 )then
16441 c       !! phi +K* formation (iblock=226)
16442             icase = 4
16443              lbp1 = 29
16444              lbp2 = 30
16445              emm1 = aphi
16446              emm2 = aks
16447            if(lb(i1).eq.21.or.lb(i2).eq.21)then
16448              lbp2 = -30
16449              icase = -4
16450            endif
16451            go to 60
16452 
16453           else
16454 c       !! (rho,omega) +K* formation (iblock=88)
16455             icase=5
16456             lbp1=25+int(3*RANART(NSEED))
16457             lbp2=30
16458             emm1=amrho
16459             emm2=aks
16460             if(srt.gt.(amomga+aks).and.RANART(NSEED).lt.0.25) then
16461                lbp1=28
16462                emm1=amomga
16463             endif
16464             if(lb(i1).eq.21.or.lb(i2).eq.21)then
16465                lbp2=-30
16466                icase=-5
16467             endif
16468 
16469           endif
16470           endif
16471 c
16472 60       if( icase.eq.2 .and. (lb(i1).eq.21.or.lb(i2).eq.21) )then
16473             lbp1 = -lbp1
16474             lbp2 = -lbp2
16475          endif
16476         PX0=PX
16477         PY0=PY
16478         PZ0=PZ
16479 *-----------------------------------------------------------------------       
16480 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
16481 * ENERGY CONSERVATION
16482            PR2   = (SRT**2 - EMM1**2 - EMM2**2)**2
16483      1                - 4.0 * (EMM1*EMM2)**2
16484           IF(PR2.LE.0.)PR2=1.e-09
16485           PR=SQRT(PR2)/(2.*SRT)
16486           C1   = 1.0 - 2.0 * RANART(NSEED)
16487           T1   = 2.0 * PI * RANART(NSEED)
16488       S1   = SQRT( 1.0 - C1**2 )
16489       CT1  = COS(T1)
16490       ST1  = SIN(T1)
16491 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
16492       PZ   = PR * C1
16493       PX   = PR * S1*CT1
16494       PY   = PR * S1*ST1
16495 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
16496       RETURN
16497       END
16498 **********************************       
16499 *                                                                      *
16500 *                                                                      *
16501         SUBROUTINE Crkphi(PX,PY,PZ,EC,SRT,IBLOCK,
16502      &                  emm1,emm2,lbp1,lbp2,I1,I2,ikk,icase,rrkk,prkk)
16503  
16504 *     PURPOSE:                                                         *
16505 *     DEALING WITH   KKbar, KK*bar, KbarK*, K*K*bar --> Phi + pi(rho,omega)
16506 *     and KKbar --> (pi eta) (pi eta), (rho omega) (rho omega)
16507 *     and KK*bar or Kbar K* --> (pi eta) (rho omega)
16508 *
16509 *     NOTE   :                                                         *
16510 *
16511 *     QUANTITIES:                                                      *
16512 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
16513 *           SRT      - SQRT OF S                                       *
16514 *           IBLOCK   - THE INFORMATION BACK                            *
16515 *                      222
16516 **********************************
16517         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
16518      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,APHI=1.02,
16519      2  AM0=1.232,AMNS=1.52,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
16520         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,ACAS=1.3213)
16521         PARAMETER      (AKS=0.895,AOMEGA=0.7819, ARHO=0.77)
16522         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
16523         COMMON /AA/ R(3,MAXSTR)
16524 cc      SAVE /AA/
16525         COMMON /BB/ P(3,MAXSTR)
16526 cc      SAVE /BB/
16527         COMMON /CC/ E(MAXSTR)
16528 cc      SAVE /CC/
16529         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
16530 cc      SAVE /EE/
16531         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
16532 cc      SAVE /input1/
16533       COMMON/RNDF77/NSEED
16534 cc      SAVE /RNDF77/
16535       SAVE   
16536 
16537         lb1 = lb(i1) 
16538         lb2 = lb(i2) 
16539         icase = 0
16540 
16541 c        if(srt .lt. aphi+ap1)return
16542 cc        if(srt .lt. aphi+ap1) then
16543         if(srt .lt. (aphi+ap1)) then
16544            sig1 = 0.
16545            sig2 = 0.
16546            sig3 = 0.
16547         else
16548 c
16549          if((lb1.eq.23.and.lb2.eq.21).or.(lb2.eq.23.and.lb1.eq.21))then
16550             dnr =  4.
16551             ikk = 2
16552           elseif((lb1.eq.21.and.lb2.eq.30).or.(lb2.eq.21.and.lb1.eq.30)
16553      & .or.(lb1.eq.23.and.lb2.eq.-30).or.(lb2.eq.23.and.lb1.eq.-30))then
16554              dnr = 12.
16555              ikk = 1
16556           else
16557              dnr = 36.
16558              ikk = 0
16559           endif
16560               
16561           sig1 = 0.
16562           sig2 = 0.
16563           sig3 = 0.
16564           srri = E(i1)+E(i2)
16565           srr1 = aphi+ap1
16566           srr2 = aphi+aomega
16567           srr3 = aphi+arho
16568 c
16569           pii = (srt**2-(e(i1)+e(i2))**2)*(srt**2-(e(i1)-e(i2))**2)
16570           srrt = srt - amax1(srri,srr1)
16571 cc   to avoid divergent/negative values at small srrt:
16572 c          if(srrt .lt. 0.3)then
16573           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
16574           sig = 1.69/(srrt**0.141 - 0.407)
16575          else
16576           sig = 3.74 + 0.008*srrt**1.9
16577          endif                 
16578           sig1=sig*(9./dnr)*(srt**2-(aphi+ap1)**2)*
16579      &           (srt**2-(aphi-ap1)**2)/pii
16580           if(srt .gt. aphi+aomega)then
16581           srrt = srt - amax1(srri,srr2)
16582 cc         if(srrt .lt. 0.3)then
16583           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
16584           sig = 1.69/(srrt**0.141 - 0.407)
16585          else
16586           sig = 3.74 + 0.008*srrt**1.9
16587          endif                 
16588           sig2=sig*(9./dnr)*(srt**2-(aphi+aomega)**2)*
16589      &           (srt**2-(aphi-aomega)**2)/pii
16590            endif
16591          if(srt .gt. aphi+arho)then
16592           srrt = srt - amax1(srri,srr3)
16593 cc         if(srrt .lt. 0.3)then
16594           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
16595           sig = 1.69/(srrt**0.141 - 0.407)
16596          else
16597           sig = 3.74 + 0.008*srrt**1.9
16598          endif                 
16599           sig3=sig*(27./dnr)*(srt**2-(aphi+arho)**2)*
16600      &           (srt**2-(aphi-arho)**2)/pii
16601          endif                 
16602 c         sig1 = amin1(20.,sig1)
16603 c         sig2 = amin1(20.,sig2)
16604 c         sig3 = amin1(20.,sig3)
16605         endif
16606 
16607         rrkk0=rrkk
16608         prkk0=prkk
16609         SIGM=0.
16610         if((lb1.eq.23.and.lb2.eq.21).or.(lb2.eq.23.and.lb1.eq.21))then
16611            CALL XKKANN(SRT, XSK1, XSK2, XSK3, XSK4, XSK5,
16612      &          XSK6, XSK7, XSK8, XSK9, XSK10, XSK11, SIGM, rrkk0)
16613         elseif((lb1.eq.21.and.lb2.eq.30).or.(lb2.eq.21.and.lb1.eq.30)
16614      & .or.(lb1.eq.23.and.lb2.eq.-30).or.(lb2.eq.23.and.lb1.eq.-30))then
16615            CALL XKKSAN(i1,i2,SRT,SIGKS1,SIGKS2,SIGKS3,SIGKS4,SIGM,prkk0)
16616         else
16617         endif
16618 c
16619 c         sigks = sig1 + sig2 + sig3
16620         sigm0=sigm
16621         sigks = sig1 + sig2 + sig3 + SIGM
16622         DSkn=SQRT(sigks/PI/10.)
16623         dsknr=dskn+0.1
16624         CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
16625      1  PX,PY,PZ)
16626         IF(IC.EQ.-1)return
16627         icase = 1
16628         ranx = RANART(NSEED) 
16629 
16630         lbp1 = 29
16631         emm1 = aphi
16632         if(ranx .le. sig1/sigks)then 
16633            lbp2 = 3 + int(3*RANART(NSEED))
16634            emm2 = ap1
16635         elseif(ranx .le. (sig1+sig2)/sigks)then
16636            lbp2 = 28
16637            emm2 = aomega
16638         elseif(ranx .le. (sig1+sig2+sig3)/sigks)then
16639            lbp2 = 25 + int(3*RANART(NSEED))
16640            emm2 = arho
16641         else
16642            if((lb1.eq.23.and.lb2.eq.21)
16643      &          .or.(lb2.eq.23.and.lb1.eq.21))then
16644               CALL crkkpi(I1,I2,XSK1, XSK2, XSK3, XSK4,
16645      &             XSK5, XSK6, XSK7, XSK8, XSK9, XSK10, XSK11, SIGM0,
16646      &             IBLOCK,lbp1,lbp2,emm1,emm2)
16647            elseif((lb1.eq.21.and.lb2.eq.30)
16648      &             .or.(lb2.eq.21.and.lb1.eq.30)
16649      &             .or.(lb1.eq.23.and.lb2.eq.-30)
16650      &             .or.(lb2.eq.23.and.lb1.eq.-30))then
16651               CALL crkspi(I1,I2,SIGKS1, SIGKS2, SIGKS3, SIGKS4,
16652      &             SIGM0,IBLOCK,lbp1,lbp2,emm1,emm2)
16653            else
16654            endif
16655         endif
16656 *
16657         PX0=PX
16658         PY0=PY
16659         PZ0=PZ
16660 *-----------------------------------------------------------------------
16661 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
16662 * ENERGY CONSERVATION
16663            PR2   = (SRT**2 - EMM1**2 - EMM2**2)**2
16664      1                - 4.0 * (EMM1*EMM2)**2
16665           IF(PR2.LE.0.)PR2=1.e-09
16666           PR=SQRT(PR2)/(2.*SRT)
16667           C1   = 1.0 - 2.0 * RANART(NSEED)
16668           T1   = 2.0 * PI * RANART(NSEED)
16669       S1   = SQRT( 1.0 - C1**2 )
16670       CT1  = COS(T1)
16671       ST1  = SIN(T1)
16672 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
16673       PZ   = PR * C1
16674       PX   = PR * S1*CT1
16675       PY   = PR * S1*ST1
16676 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
16677       RETURN
16678       END
16679 csp11/21/01 end
16680 **********************************
16681 *                                                                      *
16682 *                                                                      *
16683         SUBROUTINE Crksph(PX,PY,PZ,EC,SRT,
16684      &     emm1,emm2,lbp1,lbp2,I1,I2,ikkg,ikkl,iblock,
16685      &     icase,srhoks)
16686  
16687 *     PURPOSE:                                                         *
16688 *     DEALING WITH   K + rho(omega) or K* + pi(rho,omega) 
16689 *                    --> Phi + K(K*), pi + K* or pi + K, and elastic 
16690 *     NOTE   :                                                         *
16691 *
16692 *     QUANTITIES:                                                      *
16693 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
16694 *           SRT      - SQRT OF S                                       *
16695 *           IBLOCK   - THE INFORMATION BACK                            *
16696 *                      222
16697 *                      223 --> phi + pi(rho,omega)
16698 *                      224 --> phi + K <-> K + pi(rho,omega)
16699 *                      225 --> phi + K <-> K* + pi(rho,omega)
16700 *                      226 --> phi + K* <-> K + pi(rho,omega)
16701 *                      227 --> phi + K* <-> K* + pi(rho,omega)
16702 **********************************
16703         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
16704      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,APHI=1.02,
16705      2  AM0=1.232,AMNS=1.52,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
16706         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,ACAS=1.3213)
16707         PARAMETER      (AKS=0.895,AOMEGA=0.7819, ARHO=0.77)
16708         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
16709         COMMON /AA/ R(3,MAXSTR)
16710 cc      SAVE /AA/
16711         COMMON /BB/ P(3,MAXSTR)
16712 cc      SAVE /BB/
16713         COMMON /CC/ E(MAXSTR)
16714 cc      SAVE /CC/
16715         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
16716 cc      SAVE /EE/
16717         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
16718 cc      SAVE /input1/
16719       COMMON/RNDF77/NSEED
16720 cc      SAVE /RNDF77/
16721       SAVE   
16722 
16723         lb1 = lb(i1) 
16724         lb2 = lb(i2) 
16725         icase = 0
16726         sigela=10.
16727         sigkm=0.
16728 c     K(K*) + rho(omega) -> pi K*(K)
16729         if((lb1.ge.25.and.lb1.le.28).or.(lb2.ge.25.and.lb2.le.28)) then
16730            if(iabs(lb1).eq.30.or.iabs(lb2).eq.30) then
16731               sigkm=srhoks
16732 clin-2/26/03 check whether (rho K) is above the (pi K*) thresh:
16733            elseif((lb1.eq.23.or.lb1.eq.21.or.lb2.eq.23.or.lb2.eq.21)
16734      1             .and.srt.gt.(ap2+aks)) then
16735               sigkm=srhoks
16736            endif
16737         endif
16738 
16739 c        if(srt .lt. aphi+aka)return
16740         if(srt .lt. (aphi+aka)) then
16741            sig11=0.
16742            sig22=0.
16743         else
16744 
16745 c K*-bar +pi --> phi + (K,K*)-bar
16746          if( (iabs(lb1).eq.30.and.(lb2.ge.3.and.lb2.le.5)) .or.
16747      &       (iabs(lb2).eq.30.and.(lb1.ge.3.and.lb1.le.5)) )then
16748               dnr =  18.
16749               ikkl = 0
16750               IBLOCK = 225
16751 c               sig1 = 15.0  
16752 c               sig2 = 30.0  
16753 clin-2/06/03 these large values reduces to ~10 mb for sig11 or sig22
16754 c     due to the factors of ~1/(32*pi*s)~1/200:
16755                sig1 = 2047.042  
16756                sig2 = 1496.692
16757 c K(-bar)+rho --> phi + (K,K*)-bar
16758        elseif((lb1.eq.23.or.lb1.eq.21.and.(lb2.ge.25.and.lb2.le.27)).or.
16759      &      (lb2.eq.23.or.lb2.eq.21.and.(lb1.ge.25.and.lb1.le.27)) )then
16760               dnr =  18.
16761               ikkl = 1
16762               IBLOCK = 224
16763 c               sig1 = 3.5  
16764 c               sig2 = 9.0  
16765                sig1 = 526.702
16766                sig2 = 1313.960
16767 c K*(-bar) +rho
16768          elseif( (iabs(lb1).eq.30.and.(lb2.ge.25.and.lb2.le.27)) .or.
16769      &           (iabs(lb2).eq.30.and.(lb1.ge.25.and.lb1.le.27)) )then
16770               dnr =  54.
16771               ikkl = 0
16772               IBLOCK = 225
16773 c               sig1 = 3.5  
16774 c               sig2 = 9.0  
16775                sig1 = 1371.257
16776                sig2 = 6999.840
16777 c K(-bar) + omega
16778          elseif( ((lb1.eq.23.or.lb1.eq.21) .and. lb2.eq.28).or.
16779      &           ((lb2.eq.23.or.lb2.eq.21) .and. lb1.eq.28) )then
16780               dnr = 6.
16781               ikkl = 1
16782               IBLOCK = 224
16783 c               sig1 = 3.5  
16784 c               sig2 = 6.5  
16785                sig1 = 355.429
16786                sig2 = 440.558
16787 c K*(-bar) +omega
16788           else
16789               dnr = 18.
16790               ikkl = 0
16791               IBLOCK = 225
16792 c               sig1 = 3.5  
16793 c               sig2 = 15.0  
16794                sig1 = 482.292
16795                sig2 = 1698.903
16796           endif
16797 
16798             sig11 = 0.
16799             sig22 = 0.
16800 c         sig11=sig1*(6./dnr)*(srt**2-(aphi+aka)**2)*
16801 c    &           (srt**2-(aphi-aka)**2)/(srt**2-(e(i1)+e(i2))**2)/
16802 c    &           (srt**2-(e(i1)-e(i2))**2)
16803 
16804 clin-9/2012: check argument in sqrt():
16805             scheck=(srt**2-(e(i1)+e(i2))**2)*(srt**2-(e(i1)-e(i2))**2)
16806             if(scheck.le.0) then
16807                write(99,*) 'scheck42: ', scheck
16808                stop
16809             endif
16810             pii=sqrt(scheck)
16811 c        pii = sqrt((srt**2-(e(i1)+e(i2))**2)*(srt**2-(e(i1)-e(i2))**2))
16812 
16813 clin-9/2012: check argument in sqrt():
16814             scheck=(srt**2-(aphi+aka)**2)*(srt**2-(aphi-aka)**2)
16815             if(scheck.lt.0) then
16816                write(99,*) 'scheck43: ', scheck
16817                scheck=0.
16818             endif
16819         pff = sqrt(scheck)
16820 c        pff = sqrt((srt**2-(aphi+aka)**2)*(srt**2-(aphi-aka)**2))
16821 
16822           sig11 = sig1*pff/pii*6./dnr/32./pi/srt**2
16823 c
16824           if(srt .gt. aphi+aks)then
16825 c         sig22=sig2*(18./dnr)*(srt**2-(aphi+aks)**2)*
16826 c    &           (srt**2-(aphi-aks)**2)/(srt**2-(e(i1)+e(i2))**2)/
16827 c    &           (srt**2-(e(i1)-e(i2))**2)
16828         pff = sqrt((srt**2-(aphi+aks)**2)*(srt**2-(aphi-aks)**2))
16829           sig22 = sig2*pff/pii*18./dnr/32./pi/srt**2
16830            endif
16831 c         sig11 = amin1(20.,sig11)
16832 c         sig22 = amin1(20.,sig22)
16833 c
16834         endif
16835 
16836 c         sigks = sig11 + sig22
16837          sigks=sig11+sig22+sigela+sigkm
16838 c
16839         DSkn=SQRT(sigks/PI/10.)
16840         dsknr=dskn+0.1
16841         CALL DISTCE(I1,I2,dsknr,DSkn,DT,EC,SRT,IC,
16842      1  PX,PY,PZ)
16843         IF(IC.EQ.-1)return
16844         icase = 1
16845         ranx = RANART(NSEED) 
16846 
16847          if(ranx .le. (sigela/sigks))then 
16848             lbp1=lb1
16849             emm1=e(i1)
16850             lbp2=lb2
16851             emm2=e(i2)
16852             iblock=111
16853          elseif(ranx .le. ((sigela+sigkm)/sigks))then 
16854             lbp1=3+int(3*RANART(NSEED))
16855             emm1=0.14
16856             if(lb1.eq.23.or.lb2.eq.23) then
16857                lbp2=30
16858                emm2=aks
16859             elseif(lb1.eq.21.or.lb2.eq.21) then
16860                lbp2=-30
16861                emm2=aks
16862             elseif(lb1.eq.30.or.lb2.eq.30) then
16863                lbp2=23
16864                emm2=aka
16865             else
16866                lbp2=21
16867                emm2=aka
16868             endif
16869             iblock=112
16870          elseif(ranx .le. ((sigela+sigkm+sig11)/sigks))then 
16871             lbp2 = 23
16872             emm2 = aka
16873             ikkg = 1
16874             if(lb1.eq.21.or.lb2.eq.21.or.lb1.eq.-30.or.lb2.eq.-30)then
16875                lbp2=21
16876                iblock=iblock-100
16877             endif
16878             lbp1 = 29
16879             emm1 = aphi
16880          else
16881             lbp2 = 30
16882             emm2 = aks
16883             ikkg = 0
16884             IBLOCK=IBLOCK+2
16885             if(lb1.eq.21.or.lb2.eq.21.or.lb1.eq.-30.or.lb2.eq.-30)then
16886                lbp2=-30
16887                iblock=iblock-100
16888             endif
16889             lbp1 = 29
16890             emm1 = aphi
16891          endif
16892 *
16893         PX0=PX
16894         PY0=PY
16895         PZ0=PZ
16896 *-----------------------------------------------------------------------
16897 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
16898 * ENERGY CONSERVATION
16899            PR2   = (SRT**2 - EMM1**2 - EMM2**2)**2
16900      1                - 4.0 * (EMM1*EMM2)**2
16901           IF(PR2.LE.0.)PR2=1.e-09
16902           PR=SQRT(PR2)/(2.*SRT)
16903           C1   = 1.0 - 2.0 * RANART(NSEED)
16904           T1   = 2.0 * PI * RANART(NSEED)
16905       S1   = SQRT( 1.0 - C1**2 )
16906       CT1  = COS(T1)
16907       ST1  = SIN(T1)
16908 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
16909       PZ   = PR * C1
16910       PX   = PR * S1*CT1
16911       PY   = PR * S1*ST1
16912 * FOR THE ISOTROPIC DISTRIBUTION THERE IS NO NEED TO ROTATE
16913       RETURN
16914       END
16915 csp11/21/01 end
16916 **********************************
16917 ********************************** 
16918         SUBROUTINE bbkaon(ic,SRT,PX,PY,PZ,ana,PlX,
16919      &  PlY,PlZ,ala,pkX,PkY,PkZ,icou1)
16920 * purpose: generate the momenta for kaon,lambda/sigma and nucleon/delta
16921 *          in the BB-->nlk process
16922 * date: Sept. 9, 1994
16923 c
16924         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
16925 cc      SAVE /input1/
16926       COMMON/RNDF77/NSEED
16927 cc      SAVE /RNDF77/
16928       SAVE   
16929 
16930        PI=3.1415962
16931        icou1=0
16932        aka=0.498
16933         ala=1.116
16934        if(ic.eq.2.or.ic.eq.4)ala=1.197
16935        ana=0.939
16936 * generate the mass of the delta
16937        if(ic.gt.2)then
16938        dmax=srt-aka-ala-0.02
16939         DM1=RMASS(DMAX,ISEED)
16940        ana=dm1
16941        endif
16942        t1=aka+ana+ala
16943        t2=ana+ala-aka
16944        if(srt.le.t1)then
16945        icou1=-1
16946        return
16947        endif
16948        pmax=sqrt((srt**2-t1**2)*(srt**2-t2**2))/(2.*srt)
16949        if(pmax.eq.0.)pmax=1.e-09
16950 * (1) Generate the momentum of the kaon according to the distribution Fkaon
16951 *     and assume that the angular distribution is isotropic       
16952 *     in the cms of the colliding pair
16953        ntry=0
16954 1       pk=pmax*RANART(NSEED)
16955        ntry=ntry+1
16956        prob=fkaon(pk,pmax)
16957        if((prob.lt.RANART(NSEED)).and.(ntry.le.40))go to 1
16958        cs=1.-2.*RANART(NSEED)
16959        ss=sqrt(1.-cs**2)
16960        fai=2.*3.14*RANART(NSEED)
16961        pkx=pk*ss*cos(fai)
16962        pky=pk*ss*sin(fai)
16963        pkz=pk*cs
16964 * the energy of the kaon
16965        ek=sqrt(aka**2+pk**2)
16966 * (2) Generate the momentum of the nucleon/delta in the cms of N/delta 
16967 *     and lamda/sigma 
16968 *  the energy of the cms of NL
16969         eln=srt-ek
16970        if(eln.le.0)then
16971        icou1=-1
16972        return
16973        endif
16974 * beta and gamma of the cms of L/S+N
16975        bx=-pkx/eln
16976        by=-pky/eln
16977        bz=-pkz/eln
16978 
16979 clin-9/2012: check argument in sqrt():
16980        scheck=1.-bx**2-by**2-bz**2
16981        if(scheck.le.0) then
16982           write(99,*) 'scheck44: ', scheck
16983           stop
16984        endif
16985        ga=1./sqrt(scheck)
16986 c       ga=1./sqrt(1.-bx**2-by**2-bz**2)
16987 
16988         elnc=eln/ga
16989        pn2=((elnc**2+ana**2-ala**2)/(2.*elnc))**2-ana**2
16990        if(pn2.le.0.)pn2=1.e-09
16991        pn=sqrt(pn2)
16992        csn=1.-2.*RANART(NSEED)
16993        ssn=sqrt(1.-csn**2)
16994        fain=2.*3.14*RANART(NSEED)
16995        px=pn*ssn*cos(fain)
16996        py=pn*ssn*sin(fain)
16997        pz=pn*csn
16998        en=sqrt(ana**2+pn2)
16999 * the momentum of the lambda/sigma in the n-l cms frame is
17000        plx=-px
17001        ply=-py
17002        plz=-pz
17003 * (3) LORENTZ-TRANSFORMATION INTO nn cms FRAME for the neutron/delta
17004         PBETA  = PX*BX + PY*By+ PZ*Bz
17005               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + En )
17006               Px = BX * TRANS0 + PX
17007               Py = BY * TRANS0 + PY
17008               Pz = BZ * TRANS0 + PZ
17009 * (4) Lorentz-transformation for the lambda/sigma
17010        el=sqrt(ala**2+plx**2+ply**2+plz**2)
17011         PBETA  = PlX*BX + PlY*By+ PlZ*Bz
17012               TRANS0  = GA * ( GA * PBETA / (GA + 1.) + El )
17013               Plx = BX * TRANS0 + PlX
17014               Ply = BY * TRANS0 + PlY
17015               Plz = BZ * TRANS0 + PlZ
17016              return
17017              end
17018 ******************************************
17019 * for pion+pion-->K+K-
17020 c      real*4 function pipik(srt)
17021       real function pipik(srt)
17022 *  srt    = DSQRT(s) in GeV                                                   *
17023 *  xsec   = production cross section in mb                                    *
17024 *  NOTE: DEVIDE THE CROSS SECTION TO OBTAIN K+ PRODUCTION                     *
17025 ******************************************
17026 c      real*4   xarray(5), earray(5)
17027       real   xarray(5), earray(5)
17028       SAVE   
17029       data xarray /0.001, 0.7,1.5,1.7,2.0/
17030       data earray /1.,1.2,1.6,2.0,2.4/
17031 
17032            pmass=0.9383 
17033 * 1.Calculate p(lab)  from srt [GeV]
17034 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17035 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
17036        pipik=0.
17037        if(srt.le.1.)return
17038        if(srt.gt.2.4)then
17039            pipik=2.0/2.
17040            return
17041        endif
17042         if (srt .lt. earray(1)) then
17043            pipik =xarray(1)/2.
17044            return
17045         end if
17046 *
17047 * 2.Interpolate double logarithmically to find sigma(srt)
17048 *
17049       do 1001 ie = 1,5
17050         if (earray(ie) .eq. srt) then
17051           pipik = xarray(ie)
17052           go to 10
17053         else if (earray(ie) .gt. srt) then
17054           ymin = alog(xarray(ie-1))
17055           ymax = alog(xarray(ie))
17056           xmin = alog(earray(ie-1))
17057           xmax = alog(earray(ie))
17058           pipik = exp(ymin + (alog(srt)-xmin)*(ymax-ymin)
17059      &/(xmax-xmin) )
17060           go to 10
17061         end if
17062  1001 continue
17063 10       PIPIK=PIPIK/2.
17064        continue
17065       return
17066         END
17067 **********************************
17068 * TOTAL PION-P INELASTIC CROSS SECTION 
17069 *  from the CERN data book
17070 *  date: Sept.2, 1994
17071 *  for pion++p-->Delta+pion
17072 c      real*4 function pionpp(srt)
17073       real function pionpp(srt)
17074       SAVE   
17075 *  srt    = DSQRT(s) in GeV                                                   *
17076 *  xsec   = production cross section in fm**2                                 *
17077 *  earray = EXPerimental table with proton energies in MeV                    *
17078 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17079 *                                                                             *
17080 ******************************************
17081            pmass=0.14 
17082        pmass1=0.938
17083        PIONPP=0.00001
17084        IF(SRT.LE.1.22)RETURN
17085 * 1.Calculate p(lab)  from srt [GeV]
17086 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17087 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
17088         plab=sqrt(((srt**2-pmass**2-pmass1**2)/(2.*pmass1))**2-pmass**2)
17089        pmin=0.3
17090        pmax=25.0
17091        if(plab.gt.pmax)then
17092        pionpp=20./10.
17093        return
17094        endif
17095         if(plab .lt. pmin)then
17096         pionpp = 0.
17097         return
17098         end if
17099 c* fit parameters
17100        a=24.3
17101        b=-12.3
17102        c=0.324
17103        an=-1.91
17104        d=-2.44
17105         pionpp = a+b*(plab**an)+c*(alog(plab))**2+d*alog(plab)
17106        if(pionpp.le.0)pionpp=0
17107        pionpp=pionpp/10.
17108         return
17109         END
17110 **********************************
17111 * elementary cross sections
17112 *  from the CERN data book
17113 *  date: Sept.2, 1994
17114 *  for pion-+p-->INELASTIC
17115 c      real*4 function pipp1(srt)
17116       real function pipp1(srt)
17117       SAVE   
17118 *  srt    = DSQRT(s) in GeV                                                   *
17119 *  xsec   = production cross section in fm**2                                 *
17120 *  earray = EXPerimental table with proton energies in MeV                    *
17121 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17122 *  UNITS: FM**2
17123 ******************************************
17124            pmass=0.14 
17125        pmass1=0.938
17126        PIPP1=0.0001
17127        IF(SRT.LE.1.22)RETURN
17128 * 1.Calculate p(lab)  from srt [GeV]
17129 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17130 c      ekin = 2.*pmass*((srt/(2.*pmass))**2 - 1.)
17131         plab=sqrt(((srt**2-pmass**2-pmass1**2)/(2.*pmass1))**2-pmass**2)
17132        pmin=0.3
17133        pmax=25.0
17134        if(plab.gt.pmax)then
17135        pipp1=20./10.
17136        return
17137        endif
17138         if(plab .lt. pmin)then
17139         pipp1 = 0.
17140         return
17141         end if
17142 c* fit parameters
17143        a=26.6
17144        b=-7.18
17145        c=0.327
17146        an=-1.86
17147        d=-2.81
17148         pipp1 = a+b*(plab**an)+c*(alog(plab))**2+d*alog(plab)
17149        if(pipp1.le.0)pipp1=0
17150        PIPP1=PIPP1/10.
17151         return
17152         END
17153 * *****************************
17154 c       real*4 function xrho(srt)
17155       real function xrho(srt)
17156       SAVE   
17157 *       xsection for pp-->pp+rho
17158 * *****************************
17159        pmass=0.9383
17160        rmass=0.77
17161        trho=0.151
17162        xrho=0.000000001
17163        if(srt.le.2.67)return
17164        ESMIN=2.*0.9383+rmass-trho/2.
17165        ES=srt
17166 * the cross section for tho0 production is
17167        xrho0=0.24*(es-esmin)/(1.4+(es-esmin)**2)
17168        xrho=3.*Xrho0
17169        return
17170        end
17171 * *****************************
17172 c       real*4 function omega(srt)
17173       real function omega(srt)
17174       SAVE   
17175 *       xsection for pp-->pp+omega
17176 * *****************************
17177        pmass=0.9383
17178        omass=0.782
17179        tomega=0.0084
17180        omega=0.00000001
17181        if(srt.le.2.68)return
17182        ESMIN=2.*0.9383+omass-tomega/2.
17183        es=srt
17184        omega=0.36*(es-esmin)/(1.25+(es-esmin)**2)
17185        return
17186        end
17187 ******************************************
17188 * for ppi(+)-->DELTA+pi
17189 c      real*4 function TWOPI(srt)
17190       real function TWOPI(srt)
17191 *  This function contains the experimental pi+p-->DELTA+PION cross sections   *
17192 *  srt    = DSQRT(s) in GeV                                                   *
17193 *  xsec   = production cross section in mb                                    *
17194 *  earray = EXPerimental table with proton energies in MeV                    *
17195 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17196 *                                                                             *
17197 ******************************************
17198 c      real*4   xarray(19), earray(19)
17199       real   xarray(19), earray(19)
17200       SAVE   
17201       data xarray /0.300E-05,0.187E+01,0.110E+02,0.149E+02,0.935E+01,
17202      &0.765E+01,0.462E+01,0.345E+01,0.241E+01,0.185E+01,0.165E+01,
17203      &0.150E+01,0.132E+01,0.117E+01,0.116E+01,0.100E+01,0.856E+00,
17204      &0.745E+00,0.300E-05/
17205       data earray /0.122E+01, 0.147E+01, 0.172E+01, 0.197E+01,
17206      &0.222E+01, 0.247E+01, 0.272E+01, 0.297E+01, 0.322E+01,
17207      &0.347E+01, 0.372E+01, 0.397E+01, 0.422E+01, 0.447E+01,
17208      &0.472E+01, 0.497E+01, 0.522E+01, 0.547E+01, 0.572E+01/
17209 
17210            pmass=0.14 
17211        pmass1=0.938
17212        TWOPI=0.000001
17213        if(srt.le.1.22)return
17214 * 1.Calculate p(lab)  from srt [GeV]
17215 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17216         plab=SRT
17217       if (plab .lt. earray(1)) then
17218         TWOPI= 0.00001
17219         return
17220       end if
17221 *
17222 * 2.Interpolate double logarithmically to find sigma(srt)
17223 *
17224       do 1001 ie = 1,19
17225         if (earray(ie) .eq. plab) then
17226           TWOPI= xarray(ie)
17227           return
17228         else if (earray(ie) .gt. plab) then
17229           ymin = alog(xarray(ie-1))
17230           ymax = alog(xarray(ie))
17231           xmin = alog(earray(ie-1))
17232           xmax = alog(earray(ie))
17233           TWOPI= exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
17234      &    /(xmax-xmin) )
17235           return
17236         end if
17237  1001   continue
17238       return
17239         END
17240 ******************************************
17241 ******************************************
17242 * for ppi(+)-->DELTA+RHO
17243 c      real*4 function THREPI(srt)
17244       real function THREPI(srt)
17245 *  This function contains the experimental pi+p-->DELTA + rho cross sections  *
17246 *  srt    = DSQRT(s) in GeV                                                   *
17247 *  xsec   = production cross section in mb                                    *
17248 *  earray = EXPerimental table with proton energies in MeV                    *
17249 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17250 *                                                                             *
17251 ******************************************
17252 c      real*4   xarray(15), earray(15)
17253       real   xarray(15), earray(15)
17254       SAVE   
17255       data xarray /8.0000000E-06,6.1999999E-05,1.881940,5.025690,    
17256      &11.80154,13.92114,15.07308,11.79571,11.53772,10.01197,9.792673,    
17257      &9.465264,8.970490,7.944254,6.886320/    
17258       data earray /0.122E+01, 0.147E+01, 0.172E+01, 0.197E+01,
17259      &0.222E+01, 0.247E+01, 0.272E+01, 0.297E+01, 0.322E+01,
17260      &0.347E+01, 0.372E+01, 0.397E+01, 0.422E+01, 0.447E+01,
17261      &0.472E+01/
17262 
17263            pmass=0.14 
17264        pmass1=0.938
17265        THREPI=0.000001
17266        if(srt.le.1.36)return
17267 * 1.Calculate p(lab)  from srt [GeV]
17268 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17269         plab=SRT
17270       if (plab .lt. earray(1)) then
17271         THREPI = 0.00001
17272         return
17273       end if
17274 *
17275 * 2.Interpolate double logarithmically to find sigma(srt)
17276 *
17277       do 1001 ie = 1,15
17278         if (earray(ie) .eq. plab) then
17279           THREPI= xarray(ie)
17280           return
17281         else if (earray(ie) .gt. plab) then
17282           ymin = alog(xarray(ie-1))
17283           ymax = alog(xarray(ie))
17284           xmin = alog(earray(ie-1))
17285           xmax = alog(earray(ie))
17286           THREPI = exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
17287      &    /(xmax-xmin) )
17288           return
17289         end if
17290  1001   continue
17291       return
17292         END
17293 ******************************************
17294 ******************************************
17295 * for ppi(+)-->DELTA+omega
17296 c      real*4 function FOURPI(srt)
17297       real function FOURPI(srt)
17298 *  This function contains the experimental pi+p-->DELTA+PION cross sections   *
17299 *  srt    = DSQRT(s) in GeV                                                   *
17300 *  xsec   = production cross section in mb                                    *
17301 *  earray = EXPerimental table with proton energies in MeV                    *
17302 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17303 *                                                                             *
17304 ******************************************
17305 c      real*4   xarray(10), earray(10)
17306       real   xarray(10), earray(10)
17307       SAVE   
17308       data xarray /0.0001,1.986597,6.411932,7.636956,    
17309      &9.598362,9.889740,10.24317,10.80138,11.86988,12.83925/    
17310       data earray /2.468,2.718,2.968,0.322E+01,
17311      &0.347E+01, 0.372E+01, 0.397E+01, 0.422E+01, 0.447E+01,
17312      &0.472E+01/
17313 
17314            pmass=0.14 
17315        pmass1=0.938
17316        FOURPI=0.000001
17317        if(srt.le.1.52)return
17318 * 1.Calculate p(lab)  from srt [GeV]
17319 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17320         plab=SRT
17321       if (plab .lt. earray(1)) then
17322         FOURPI= 0.00001
17323         return
17324       end if
17325 *
17326 * 2.Interpolate double logarithmically to find sigma(srt)
17327 *
17328       do 1001 ie = 1,10
17329         if (earray(ie) .eq. plab) then
17330           FOURPI= xarray(ie)
17331           return
17332         else if (earray(ie) .gt. plab) then
17333           ymin = alog(xarray(ie-1))
17334           ymax = alog(xarray(ie))
17335           xmin = alog(earray(ie-1))
17336           xmax = alog(earray(ie))
17337           FOURPI= exp(ymin + (alog(plab)-xmin)*(ymax-ymin)
17338      &    /(xmax-xmin) )
17339           return
17340         end if
17341  1001   continue
17342       return
17343         END
17344 ******************************************
17345 ******************************************
17346 * for pion (rho or omega)+baryon resonance collisions
17347 c      real*4 function reab(i1,i2,srt,ictrl)
17348       real function reab(i1,i2,srt,ictrl)
17349 *  This function calculates the cross section for 
17350 *  pi+Delta(N*)-->N+PION process                                              *
17351 *  srt    = DSQRT(s) in GeV                                                   *
17352 *  reab   = cross section in fm**2                                            *
17353 *  ictrl=1,2,3 for pion, rho and omega+D(N*)    
17354 ****************************************
17355       PARAMETER (MAXSTR=150001,MAXR=1,PI=3.1415926)
17356       parameter      (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
17357       PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
17358       parameter      (amn=0.938,ap1=0.14,arho=0.77,aomega=0.782)
17359        parameter       (maxx=20,maxz=24)
17360       COMMON   /AA/  R(3,MAXSTR)
17361 cc      SAVE /AA/
17362       COMMON   /BB/  P(3,MAXSTR)
17363 cc      SAVE /BB/
17364       COMMON   /CC/  E(MAXSTR)
17365 cc      SAVE /CC/
17366       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
17367      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
17368      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
17369 cc      SAVE /DD/
17370       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
17371 cc      SAVE /EE/
17372       SAVE   
17373        LB1=LB(I1)
17374        LB2=LB(I2)
17375        reab=0
17376        if(ictrl.eq.1.and.srt.le.(amn+2.*ap1+0.02))return
17377        if(ictrl.eq.3.and.srt.le.(amn+ap1+aomega+0.02))return
17378        pin2=((srt**2+ap1**2-amn**2)/(2.*srt))**2-ap1**2
17379        if(pin2.le.0)return
17380 * for pion+D(N*)-->pion+N
17381        if(ictrl.eq.1)then
17382        if(e(i1).gt.1)then 
17383        ed=e(i1)       
17384        else
17385        ed=e(i2)
17386        endif       
17387        pout2=((srt**2+ap1**2-ed**2)/(2.*srt))**2-ap1**2
17388        if(pout2.le.0)return
17389        xpro=twopi(srt)/10.
17390        factor=1/3.
17391        if( ((lb1.eq.8.and.lb2.eq.5).or.
17392      &    (lb1.eq.5.and.lb2.eq.8))
17393      &        .OR.((lb1.eq.-8.and.lb2.eq.3).or.
17394      &    (lb1.eq.3.and.lb2.eq.-8)) )factor=1/4.
17395        if((iabs(lb1).ge.10.and.iabs(lb1).le.13).
17396      &  or.(iabs(lb2).ge.10.and.iabs(lb2).le.13))factor=1.
17397        reab=factor*pin2/pout2*xpro
17398        return
17399        endif
17400 * for rho reabsorption
17401        if(ictrl.eq.2)then
17402        if(lb(i2).ge.25)then 
17403        ed=e(i1)
17404        arho1=e(i2)       
17405        else
17406        ed=e(i2)
17407        arho1=e(i1)
17408        endif       
17409        if(srt.le.(amn+ap1+arho1+0.02))return
17410        pout2=((srt**2+arho1**2-ed**2)/(2.*srt))**2-arho1**2
17411        if(pout2.le.0)return
17412        xpro=threpi(srt)/10.
17413        factor=1/3.
17414        if( ((lb1.eq.8.and.lb2.eq.27).or.
17415      &       (lb1.eq.27.and.lb2.eq.8))
17416      & .OR. ((lb1.eq.-8.and.lb2.eq.25).or.
17417      &       (lb1.eq.25.and.lb2.eq.-8)) )factor=1/4.
17418        if((iabs(lb1).ge.10.and.iabs(lb1).le.13).
17419      &  or.(iabs(lb2).ge.10.and.iabs(lb2).le.13))factor=1.
17420        reab=factor*pin2/pout2*xpro
17421        return
17422        endif
17423 * for omega reabsorption
17424        if(ictrl.eq.3)then
17425        if(e(i1).gt.1)ed=e(i1)       
17426        if(e(i2).gt.1)ed=e(i2)       
17427        pout2=((srt**2+aomega**2-ed**2)/(2.*srt))**2-aomega**2
17428        if(pout2.le.0)return
17429        xpro=fourpi(srt)/10.
17430        factor=1/6.
17431        if((iabs(lb1).ge.10.and.iabs(lb1).le.13).
17432      &  or.(iabs(lb2).ge.10.and.iabs(lb2).le.13))factor=1./3.
17433        reab=factor*pin2/pout2*xpro
17434        endif
17435       return
17436         END
17437 ******************************************
17438 * for the reabsorption of two resonances
17439 * This function calculates the cross section for 
17440 * DD-->NN, N*N*-->NN and DN*-->NN
17441 c      real*4 function reab2d(i1,i2,srt)
17442       real function reab2d(i1,i2,srt)
17443 *  srt    = DSQRT(s) in GeV                                                   *
17444 *  reab   = cross section in mb
17445 ****************************************
17446       PARAMETER      (MAXSTR=150001,MAXR=1,PI=3.1415926)
17447       parameter      (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
17448       PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
17449       parameter      (amn=0.938,ap1=0.14,arho=0.77,aomega=0.782)
17450        parameter       (maxx=20,maxz=24)
17451       COMMON   /AA/  R(3,MAXSTR)
17452 cc      SAVE /AA/
17453       COMMON   /BB/  P(3,MAXSTR)
17454 cc      SAVE /BB/
17455       COMMON   /CC/  E(MAXSTR)
17456 cc      SAVE /CC/
17457       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
17458      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
17459      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
17460 cc      SAVE /DD/
17461       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
17462 cc      SAVE /EE/
17463       SAVE   
17464        reab2d=0
17465        LB1=iabs(LB(I1))
17466        LB2=iabs(LB(I2))
17467        ed1=e(i1)       
17468        ed2=e(i2)       
17469        pin2=(srt/2.)**2-amn**2
17470        pout2=((srt**2+ed1**2-ed2**2)/(2.*srt))**2-ed1**2
17471        if(pout2.le.0)return
17472        xpro=x2pi(srt)
17473        factor=1/4.
17474        if((lb1.ge.10.and.lb1.le.13).and.
17475      &    (lb2.ge.10.and.lb2.le.13))factor=1.
17476        if((lb1.ge.6.and.lb1.le.9).and.
17477      &    (lb2.gt.10.and.lb2.le.13))factor=1/2.
17478        if((lb2.ge.6.and.lb2.le.9).and.
17479      &    (lb1.gt.10.and.lb1.le.13))factor=1/2.
17480        reab2d=factor*pin2/pout2*xpro
17481        return
17482        end
17483 ***************************************
17484       SUBROUTINE rotate(PX0,PY0,PZ0,px,py,pz)
17485       SAVE   
17486 * purpose: rotate the momentum of a particle in the CMS of p1+p2 such that 
17487 * the x' y' and z' in the cms of p1+p2 is the same as the fixed x y and z
17488 * quantities:
17489 *            px0,py0 and pz0 are the cms momentum of the incoming colliding
17490 *            particles
17491 *            px, py and pz are the cms momentum of any one of the particles 
17492 *            after the collision to be rotated
17493 ***************************************
17494 * the momentum, polar and azimuthal angles of the incoming momentm
17495       PR0  = SQRT( PX0**2 + PY0**2 + PZ0**2 )
17496       IF(PR0.EQ.0)PR0=0.00000001
17497       C2  = PZ0 / PR0
17498       IF(PX0 .EQ. 0.0 .AND. PY0 .EQ. 0.0) THEN
17499         T2 = 0.0
17500       ELSE
17501         T2=ATAN2(PY0,PX0)
17502       END IF
17503 
17504 clin-9/2012: check argument in sqrt():
17505       scheck=1.0 - C2**2
17506       if(scheck.lt.0) then
17507          write(99,*) 'scheck45: ', scheck
17508          scheck=0.
17509       endif
17510       S2=sqrt(scheck)
17511 c      S2  =  SQRT( 1.0 - C2**2 )
17512 
17513       CT2  = COS(T2)
17514       ST2  = SIN(T2)
17515 * the momentum, polar and azimuthal angles of the momentum to be rotated
17516       PR=SQRT(PX**2+PY**2+PZ**2)
17517       IF(PR.EQ.0)PR=0.0000001
17518       C1=PZ/PR
17519       IF(PX.EQ.0.AND.PY.EQ.0)THEN
17520       T1=0.
17521       ELSE
17522       T1=ATAN2(PY,PX)
17523       ENDIF
17524 
17525 clin-9/2012: check argument in sqrt():
17526       scheck=1.0 - C1**2
17527       if(scheck.lt.0) then
17528          write(99,*) 'scheck46: ', scheck
17529          scheck=0.
17530       endif
17531       S1=sqrt(scheck)
17532 c      S1   = SQRT( 1.0 - C1**2 )
17533 
17534       CT1  = COS(T1)
17535       ST1  = SIN(T1)
17536       SS   = C2 * S1 * CT1  +  S2 * C1
17537 * THE MOMENTUM AFTER ROTATION
17538       PX   = PR * ( SS*CT2 - S1*ST1*ST2 )
17539       PY   = PR * ( SS*ST2 + S1*ST1*CT2 )
17540       PZ   = PR * ( C1*C2 - S1*S2*CT1 )
17541       RETURN
17542       END
17543 ******************************************
17544 c      real*4 function Xpp(srt)
17545       real function Xpp(srt)
17546 *  This function contains the experimental total n-p cross sections           *
17547 *  srt    = DSQRT(s) in GeV                                                   *
17548 *  xsec   = production cross section in mb                                    *
17549 *  earray = EXPerimental table with proton energies in MeV                    *
17550 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17551 *  WITH A CUTOFF AT 55MB                                                      *
17552 ******************************************
17553 c      real*4   xarray(14), earray(14)
17554       real   xarray(14), earray(14)
17555       SAVE   
17556       data earray /20.,30.,40.,60.,80.,100.,
17557      &170.,250.,310.,
17558      &350.,460.,560.,660.,800./
17559       data xarray /150.,90.,80.6,48.0,36.6,
17560      &31.6,25.9,24.0,23.1,
17561      &24.0,28.3,33.6,41.5,47/
17562 
17563        xpp=0.
17564        pmass=0.9383 
17565 * 1.Calculate E_kin(lab) [MeV] from srt [GeV]
17566 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17567       ekin = 2000.*pmass*((srt/(2.*pmass))**2 - 1.)
17568       if (ekin .lt. earray(1)) then
17569         xpp = xarray(1)
17570        IF(XPP.GT.55)XPP=55
17571         return
17572       end if
17573        IF(EKIN.GT.EARRAY(14))THEN
17574        XPP=XARRAY(14)
17575        RETURN
17576        ENDIF
17577 *
17578 *
17579 * 2.Interpolate double logarithmically to find sigma(srt)
17580 *
17581       do 1001 ie = 1,14
17582         if (earray(ie) .eq. ekin) then
17583           xPP= xarray(ie)
17584        if(xpp.gt.55)xpp=55.
17585           return
17586        endif
17587         if (earray(ie) .gt. ekin) then
17588           ymin = alog(xarray(ie-1))
17589           ymax = alog(xarray(ie))
17590           xmin = alog(earray(ie-1))
17591           xmax = alog(earray(ie))
17592           XPP = exp(ymin + (alog(ekin)-xmin)
17593      &          *(ymax-ymin)/(xmax-xmin) )
17594        IF(XPP.GT.55)XPP=55.
17595        go to 50
17596         end if
17597  1001 continue
17598 50       continue
17599         return
17600         END
17601 ******************************************
17602       real function Xnp(srt)
17603 *  This function contains the experimental total n-p cross sections           *
17604 *  srt    = DSQRT(s) in GeV                                                   *
17605 *  xsec   = production cross section in mb                                    *
17606 *  earray = EXPerimental table with proton energies in MeV                    *
17607 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
17608 *  WITH  A CUTOFF AT 55MB                                                *
17609 ******************************************
17610 c      real*4   xarray(11), earray(11)
17611       real   xarray(11), earray(11)
17612       SAVE   
17613       data   earray /20.,30.,40.,60.,90.,135.0,200.,
17614      &300.,400.,600.,800./
17615       data  xarray / 410.,270.,214.5,130.,78.,53.5,
17616      &41.6,35.9,34.2,34.3,34.9/
17617 
17618        xnp=0.
17619        pmass=0.9383
17620 * 1.Calculate E_kin(lab) [MeV] from srt [GeV]
17621 *   Formula used:   DSQRT(s) = 2 m DSQRT(E_kin/(2m) + 1)
17622       ekin = 2000.*pmass*((srt/(2.*pmass))**2 - 1.)
17623       if (ekin .lt. earray(1)) then
17624         xnp = xarray(1)
17625        IF(XNP.GT.55)XNP=55
17626         return
17627       end if
17628        IF(EKIN.GT.EARRAY(11))THEN
17629        XNP=XARRAY(11)
17630        RETURN
17631        ENDIF
17632 *
17633 *Interpolate double logarithmically to find sigma(srt)
17634 *
17635       do 1001 ie = 1,11
17636         if (earray(ie) .eq. ekin) then
17637           xNP = xarray(ie)
17638          if(xnp.gt.55)xnp=55.
17639           return
17640        endif
17641         if (earray(ie) .gt. ekin) then
17642           ymin = alog(xarray(ie-1))
17643           ymax = alog(xarray(ie))
17644           xmin = alog(earray(ie-1))
17645           xmax = alog(earray(ie))
17646           xNP = exp(ymin + (alog(ekin)-xmin)
17647      &          *(ymax-ymin)/(xmax-xmin) )
17648        IF(XNP.GT.55)XNP=55
17649        go to 50
17650         end if
17651  1001 continue
17652 50       continue
17653         return
17654         END
17655 *******************************
17656        function ptr(ptmax,iseed)
17657 * (2) Generate the transverse momentum
17658 *     OF nucleons
17659 *******************************
17660         COMMON/TABLE/ xarray(0:1000),earray(0:1000)
17661 cc      SAVE /TABLE/
17662       COMMON/RNDF77/NSEED
17663 cc      SAVE /RNDF77/
17664       SAVE   
17665        ptr=0.
17666        if(ptmax.le.1.e-02)then
17667        ptr=ptmax
17668        return
17669        endif
17670        if(ptmax.gt.2.01)ptmax=2.01
17671        tryial=ptdis(ptmax)/ptdis(2.01)
17672        XT=RANART(NSEED)*tryial
17673 * look up the table and
17674 *Interpolate double logarithmically to find pt
17675         do 50 ie = 1,200
17676         if (earray(ie) .eq. xT) then
17677           ptr = xarray(ie)
17678        return
17679        end if
17680           if(xarray(ie-1).le.0.00001)go to 50
17681           if(xarray(ie).le.0.00001)go to 50
17682           if(earray(ie-1).le.0.00001)go to 50
17683           if(earray(ie).le.0.00001)go to 50
17684         if (earray(ie) .gt. xT) then
17685           ymin = alog(xarray(ie-1))
17686           ymax = alog(xarray(ie))
17687           xmin = alog(earray(ie-1))
17688           xmax = alog(earray(ie))
17689           ptr= exp(ymin + (alog(xT)-xmin)*(ymax-ymin)
17690      &    /(xmax-xmin) )
17691        if(ptr.gt.ptmax)ptr=ptmax
17692        return
17693        endif
17694 50      continue
17695        return
17696        end
17697 
17698 **********************************
17699 **********************************
17700 *                                                                      *
17701 *                                                                      *
17702       SUBROUTINE XND(px,py,pz,srt,I1,I2,xinel,
17703      &               sigk,xsk1,xsk2,xsk3,xsk4,xsk5)
17704 *     PURPOSE:                                                         *
17705 *             calculate NUCLEON-BARYON RESONANCE inelatic Xsection     *
17706 *     NOTE   :                                                         *
17707 *     QUANTITIES:                                                 *
17708 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
17709 *                      N12,                                            *
17710 *                      M12=1 FOR p+n-->delta(+)+ n                     *
17711 *                          2     p+n-->delta(0)+ p                     *
17712 *                          3     p+p-->delta(++)+n                     *
17713 *                          4     p+p-->delta(+)+p                      *
17714 *                          5     n+n-->delta(0)+n                      *
17715 *                          6     n+n-->delta(-)+p                      *
17716 *                          7     n+p-->N*(0)(1440)+p                   *
17717 *                          8     n+p-->N*(+)(1440)+n                   *
17718 *                        9     p+p-->N*(+)(1535)+p                     *
17719 *                        10    n+n-->N*(0)(1535)+n                     *
17720 *                         11    n+p-->N*(+)(1535)+n                     *
17721 *                        12    n+p-->N*(0)(1535)+p
17722 *                        13    D(++)+D(-)-->N*(+)(1440)+n
17723 *                         14    D(++)+D(-)-->N*(0)(1440)+p
17724 *                        15    D(+)+D(0)--->N*(+)(1440)+n
17725 *                        16    D(+)+D(0)--->N*(0)(1440)+p
17726 *                        17    D(++)+D(0)-->N*(+)(1535)+p
17727 *                        18    D(++)+D(-)-->N*(0)(1535)+p
17728 *                        19    D(++)+D(-)-->N*(+)(1535)+n
17729 *                        20    D(+)+D(+)-->N*(+)(1535)+p
17730 *                        21    D(+)+D(0)-->N*(+)(1535)+n
17731 *                        22    D(+)+D(0)-->N*(0)(1535)+p
17732 *                        23    D(+)+D(-)-->N*(0)(1535)+n
17733 *                        24    D(0)+D(0)-->N*(0)(1535)+n
17734 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
17735 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
17736 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
17737 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
17738 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
17739 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
17740 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
17741 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
17742 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
17743 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
17744 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
17745 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
17746 *                            and more
17747 ***********************************
17748         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
17749      1  AMP=0.93828,AP1=0.13496,AKA=0.498,APHI=1.020,
17750      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
17751         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
17752         COMMON /AA/ R(3,MAXSTR)
17753 cc      SAVE /AA/
17754         COMMON /BB/ P(3,MAXSTR)
17755 cc      SAVE /BB/
17756         COMMON /CC/ E(MAXSTR)
17757 cc      SAVE /CC/
17758         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
17759 cc      SAVE /EE/
17760         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
17761 cc      SAVE /ff/
17762         common /gg/ dx,dy,dz,dpx,dpy,dpz
17763 cc      SAVE /gg/
17764         COMMON /INPUT/ NSTAR,NDIRCT,DIR
17765 cc      SAVE /INPUT/
17766         COMMON /NN/NNN
17767 cc      SAVE /NN/
17768         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
17769 cc      SAVE /BG/
17770         COMMON   /RUN/NUM
17771 cc      SAVE /RUN/
17772         COMMON   /PA/RPION(3,MAXSTR,MAXR)
17773 cc      SAVE /PA/
17774         COMMON   /PB/PPION(3,MAXSTR,MAXR)
17775 cc      SAVE /PB/
17776         COMMON   /PC/EPION(MAXSTR,MAXR)
17777 cc      SAVE /PC/
17778         COMMON   /PD/LPION(MAXSTR,MAXR)
17779 cc      SAVE /PD/
17780         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
17781 cc      SAVE /input1/
17782       SAVE   
17783 
17784 *-----------------------------------------------------------------------
17785        xinel=0.
17786        sigk=0
17787        xsk1=0
17788        xsk2=0
17789        xsk3=0
17790        xsk4=0
17791        xsk5=0
17792         EM1=E(I1)
17793         EM2=E(I2)
17794       PR  = SQRT( PX**2 + PY**2 + PZ**2 )
17795 *     CAN HAPPEN ANY MORE ==> RETURN (2.04 = 2*AVMASS + PI-MASS+0.02)
17796         IF (SRT .LT. 2.04) RETURN
17797 * Resonance absorption or Delta + N-->N*(1440), N*(1535)
17798 * COM: TEST FOR DELTA OR N* ABSORPTION
17799 *      IN THE PROCESS DELTA+N-->NN, N*+N-->NN
17800         PRF=SQRT(0.25*SRT**2-AVMASS**2)
17801         IF(EM1.GT.1.)THEN
17802         DELTAM=EM1
17803         ELSE
17804         DELTAM=EM2
17805         ENDIF
17806         RENOM=DELTAM*PRF**2/DENOM(SRT,1.)/PR
17807         RENOMN=DELTAM*PRF**2/DENOM(SRT,2.)/PR
17808         RENOM1=DELTAM*PRF**2/DENOM(SRT,-1.)/PR
17809 * avoid the inelastic collisions between n+delta- -->N+N 
17810 *       and p+delta++ -->N+N due to charge conservation,
17811 *       but they can scatter to produce kaons 
17812        if((iabs(lb(i1)).eq.2).and.(iabs(lb(i2)).eq.6)) renom=0.
17813        if((iabs(lb(i2)).eq.2).and.(iabs(lb(i1)).eq.6)) renom=0.
17814        if((iabs(lb(i1)).eq.1).and.(iabs(lb(i2)).eq.9)) renom=0.
17815        if((iabs(lb(i2)).eq.1).and.(iabs(lb(i1)).eq.9)) renom=0.
17816        Call M1535(iabs(lb(i1)),iabs(lb(i2)),srt,x1535)
17817         X1440=(3./4.)*SIGMA(SRT,2,0,1)
17818 * CROSS SECTION FOR KAON PRODUCTION from the four channels
17819 * for NLK channel
17820        akp=0.498
17821        ak0=0.498
17822        ana=0.94
17823        ada=1.232
17824        al=1.1157
17825        as=1.1197
17826        xsk1=0
17827        xsk2=0
17828        xsk3=0
17829        xsk4=0
17830 c      !! phi production
17831        xsk5=0
17832        t1nlk=ana+al+akp
17833        if(srt.le.t1nlk)go to 222
17834        XSK1=1.5*PPLPK(SRT)
17835 * for DLK channel
17836        t1dlk=ada+al+akp
17837        t2dlk=ada+al-akp
17838        if(srt.le.t1dlk)go to 222
17839        es=srt
17840        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
17841        pmdlk=sqrt(pmdlk2)
17842        XSK3=1.5*PPLPK(srt)
17843 * for NSK channel
17844        t1nsk=ana+as+akp
17845        t2nsk=ana+as-akp
17846        if(srt.le.t1nsk)go to 222
17847        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
17848        pmnsk=sqrt(pmnsk2)
17849        XSK2=1.5*(PPK1(srt)+PPK0(srt))
17850 * for DSK channel
17851        t1DSk=aDa+aS+akp
17852        t2DSk=aDa+aS-akp
17853        if(srt.le.t1dsk)go to 222
17854        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
17855        pmDSk=sqrt(pmDSk2)
17856        XSK4=1.5*(PPK1(srt)+PPK0(srt))
17857 csp11/21/01
17858 c phi production
17859        if(srt.le.(2.*amn+aphi))go to 222
17860 c  !! mb put the correct form
17861          xsk5 = 0.0001
17862 csp11/21/01 end
17863 
17864 * THE TOTAL KAON+ PRODUCTION CROSS SECTION IS THEN
17865 222       SIGK=XSK1+XSK2+XSK3+XSK4
17866 
17867 cbz3/7/99 neutralk
17868         XSK1 = 2.0 * XSK1
17869         XSK2 = 2.0 * XSK2
17870         XSK3 = 2.0 * XSK3
17871         XSK4 = 2.0 * XSK4
17872         SIGK = 2.0 * SIGK + xsk5
17873 cbz3/7/99 neutralk end
17874 
17875 * avoid the inelastic collisions between n+delta- -->N+N 
17876 *       and p+delta++ -->N+N due to charge conservation,
17877 *       but they can scatter to produce kaons 
17878        if(((iabs(lb(i1)).eq.2).and.(iabs(lb(i2)).eq.6)).OR. 
17879      &         ((iabs(lb(i2)).eq.2).and.(iabs(lb(i1)).eq.6)).OR.
17880      &         ((iabs(lb(i1)).eq.1).and.(iabs(lb(i2)).eq.9)).OR.
17881      &         ((iabs(lb(i2)).eq.1).and.(iabs(lb(i1)).eq.9)))THEN
17882        xinel=sigk
17883        return
17884        ENDIF
17885 * WE DETERMINE THE REACTION CHANNELS IN THE FOLLOWING
17886 * FOR n+delta(++)-->p+p or n+delta(++)-->n+N*(+)(1440),n+N*(+)(1535)
17887 * REABSORPTION OR N*(1535) PRODUCTION LIKE IN P+P OR N*(1440) LIKE PN, 
17888         IF(LB(I1)*LB(I2).EQ.18.AND.
17889      &    (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))then
17890         SIGND=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
17891         SIGDN=0.25*SIGND*RENOM
17892         xinel=SIGDN+X1440+X1535+SIGK
17893        RETURN
17894        endif
17895 * FOR p+delta(-)-->n+n or p+delta(-)-->n+N*(0)(1440),n+N*(0)(1535)
17896 * REABSORPTION OR N*(1535) PRODUCTION LIKE IN P+P OR N*(1440) LIKE PN, 
17897         IF(LB(I1)*LB(I2).EQ.6.AND.
17898      &    (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))THEN
17899         SIGND=SIGMA(SRT,1,1,0)+0.5*SIGMA(SRT,1,1,1)
17900         SIGDN=0.25*SIGND*RENOM
17901         xinel=SIGDN+X1440+X1535+SIGK
17902        RETURN
17903        endif
17904 * FOR p+delta(+)-->p+p, N*(+)(144)+p, N*(+)(1535)+p
17905 cbz11/25/98
17906         IF(LB(I1)*LB(I2).EQ.8.AND.
17907      &    (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))THEN
17908         SIGND=1.5*SIGMA(SRT,1,1,1)
17909         SIGDN=0.25*SIGND*RENOM
17910         xinel=SIGDN+x1440+x1535+SIGK
17911        RETURN
17912        endif
17913 * FOR n+delta(0)-->n+n, N*(0)(144)+n, N*(0)(1535)+n
17914         IF(LB(I1)*LB(I2).EQ.14.AND.
17915      &   (iabs(LB(I1)).EQ.2.AND.iabs(LB(I2)).EQ.2))THEN
17916         SIGND=1.5*SIGMA(SRT,1,1,1)
17917         SIGDN=0.25*SIGND*RENOM
17918         xinel=SIGDN+x1440+x1535+SIGK
17919        RETURN
17920        endif
17921 * FOR n+delta(+)-->n+p, N*(+)(1440)+n,N*(0)(1440)+p,
17922 *                       N*(+)(1535)+n,N*(0)(1535)+p
17923         IF(LB(I1)*LB(I2).EQ.16.AND.
17924      &     (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))THEN
17925         SIGND=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
17926         SIGDN=0.5*SIGND*RENOM
17927         xinel=SIGDN+2.*x1440+2.*x1535+SIGK
17928        RETURN
17929        endif
17930 * FOR p+delta(0)-->n+p, N*(+)(1440)+n,N*(0)(1440)+p,
17931 *                       N*(+)(1535)+n,N*(0)(1535)+p
17932         IF(LB(I1)*LB(I2).EQ.7)THEN
17933         SIGND=0.5*SIGMA(SRT,1,1,1)+0.25*SIGMA(SRT,1,1,0)
17934         SIGDN=0.5*SIGND*RENOM
17935         xinel=SIGDN+2.*x1440+2.*x1535+SIGK
17936        RETURN
17937        endif
17938 * FOR p+N*(0)(14)-->p+n, N*(+)(1535)+n,N*(0)(1535)+p
17939 * OR  P+N*(0)(14)-->D(+)+N, D(0)+P, 
17940         IF(LB(I1)*LB(I2).EQ.10.AND.
17941      &   (iabs(LB(I1)).EQ.1.OR.iabs(LB(I2)).EQ.1))then
17942         SIGND=(3./4.)*SIGMA(SRT,2,0,1)
17943         SIGDN=SIGND*RENOMN
17944         xinel=SIGDN+X1535+SIGK
17945        RETURN
17946        endif
17947 * FOR n+N*(+)-->p+n, N*(+)(1535)+n,N*(0)(1535)+p
17948         IF(LB(I1)*LB(I2).EQ.22.AND.
17949      &   (iabs(LB(I1)).EQ.2.OR.iabs(LB(I2)).EQ.2))then
17950         SIGND=(3./4.)*SIGMA(SRT,2,0,1)
17951         SIGDN=SIGND*RENOMN
17952         xinel=SIGDN+X1535+SIGK
17953        RETURN
17954        endif
17955 * FOR N*(1535)+N-->N+N COLLISIONS
17956         IF((iabs(LB(I1)).EQ.12).OR.(iabs(LB(I1)).EQ.13).OR.
17957      1  (iabs(LB(I2)).EQ.12).OR.(iabs(LB(I2)).EQ.13))THEN
17958         SIGND=X1535
17959         SIGDN=SIGND*RENOM1
17960         xinel=SIGDN+SIGK
17961        RETURN
17962        endif
17963         RETURN
17964        end
17965 **********************************
17966 *                                                                      *
17967 *                                                                      *
17968       SUBROUTINE XDDIN(PX,PY,PZ,SRT,I1,I2,
17969      &XINEL,SIGK,XSK1,XSK2,XSK3,XSK4,XSK5)
17970 *     PURPOSE:                                                         *
17971 *             DEALING WITH BARYON RESONANCE-BARYON RESONANCE COLLISIONS*
17972 *     NOTE   :                                                         *
17973 *           VALID ONLY FOR BARYON-BARYON-DISTANCES LESS THAN 1.32 FM   *
17974 *           (1.32 = 2 * HARD-CORE-RADIUS [HRC] )                       *
17975 *     QUANTITIES:                                                 *
17976 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
17977 *           SRT      - SQRT OF S                                       *
17978 *           NSTAR =1 INCLUDING N* RESORANCE,ELSE NOT                   *
17979 *           NDIRCT=1 INCLUDING DIRECT PION PRODUCTION PROCESS         *
17980 *           IBLOCK   - THE INFORMATION BACK                            *
17981 *                      0-> COLLISION CANNOT HAPPEN                     *
17982 *                      1-> N-N ELASTIC COLLISION                       *
17983 *                      2-> N+N->N+DELTA,OR N+N->N+N* REACTION          *
17984 *                      3-> N+DELTA->N+N OR N+N*->N+N REACTION          *
17985 *                      4-> N+N->N+N+PION,DIRTCT PROCESS                *
17986 *                     5-> DELTA(N*)+DELTA(N*)   TOTAL   COLLISIONS    *
17987 *           N12       - IS USED TO SPECIFY BARYON-BARYON REACTION      *
17988 *                      CHANNELS. M12 IS THE REVERSAL CHANNEL OF N12    *
17989 *                      N12,                                            *
17990 *                      M12=1 FOR p+n-->delta(+)+ n                     *
17991 *                          2     p+n-->delta(0)+ p                     *
17992 *                          3     p+p-->delta(++)+n                     *
17993 *                          4     p+p-->delta(+)+p                      *
17994 *                          5     n+n-->delta(0)+n                      *
17995 *                          6     n+n-->delta(-)+p                      *
17996 *                          7     n+p-->N*(0)(1440)+p                   *
17997 *                          8     n+p-->N*(+)(1440)+n                   *
17998 *                        9     p+p-->N*(+)(1535)+p                     *
17999 *                        10    n+n-->N*(0)(1535)+n                     *
18000 *                         11    n+p-->N*(+)(1535)+n                     *
18001 *                        12    n+p-->N*(0)(1535)+p
18002 *                        13    D(++)+D(-)-->N*(+)(1440)+n
18003 *                         14    D(++)+D(-)-->N*(0)(1440)+p
18004 *                        15    D(+)+D(0)--->N*(+)(1440)+n
18005 *                        16    D(+)+D(0)--->N*(0)(1440)+p
18006 *                        17    D(++)+D(0)-->N*(+)(1535)+p
18007 *                        18    D(++)+D(-)-->N*(0)(1535)+p
18008 *                        19    D(++)+D(-)-->N*(+)(1535)+n
18009 *                        20    D(+)+D(+)-->N*(+)(1535)+p
18010 *                        21    D(+)+D(0)-->N*(+)(1535)+n
18011 *                        22    D(+)+D(0)-->N*(0)(1535)+p
18012 *                        23    D(+)+D(-)-->N*(0)(1535)+n
18013 *                        24    D(0)+D(0)-->N*(0)(1535)+n
18014 *                          25    N*(+)(14)+N*(+)(14)-->N*(+)(15)+p
18015 *                          26    N*(0)(14)+N*(0)(14)-->N*(0)(15)+n
18016 *                          27    N*(+)(14)+N*(0)(14)-->N*(+)(15)+n
18017 *                        28    N*(+)(14)+N*(0)(14)-->N*(0)(15)+p
18018 *                        29    N*(+)(14)+D+-->N*(+)(15)+p
18019 *                        30    N*(+)(14)+D0-->N*(+)(15)+n
18020 *                        31    N*(+)(14)+D(-)-->N*(0)(1535)+n
18021 *                        32    N*(0)(14)+D++--->N*(+)(15)+p
18022 *                        33    N*(0)(14)+D+--->N*(+)(15)+n
18023 *                        34    N*(0)(14)+D+--->N*(0)(15)+p
18024 *                        35    N*(0)(14)+D0-->N*(0)(15)+n
18025 *                        36    N*(+)(14)+D0--->N*(0)(15)+p
18026 *                        +++
18027 *               AND MORE CHANNELS AS LISTED IN THE NOTE BOOK      
18028 *
18029 * NOTE ABOUT N*(1440) RESORANCE:                                       *
18030 *     As it has been discussed in VerWest's paper,I= 1 (initial isospin)
18031 *     channel can all be attributed to delta resorance while I= 0      *
18032 *     channel can all be  attribured to N* resorance.Only in n+p       *
18033 *     one can have I=0 channel so is the N*(1440) resorance            *
18034 * REFERENCES:    J. CUGNON ET AL., NUCL. PHYS. A352, 505 (1981)        *
18035 *                    Y. KITAZOE ET AL., PHYS. LETT. 166B, 35 (1986)    *
18036 *                    B. VerWest el al., PHYS. PRV. C25 (1982)1979      *
18037 *                    Gy. Wolf  et al, Nucl Phys A517 (1990) 615        *
18038 *                    CUTOFF = 2 * AVMASS + 20 MEV                      *
18039 *                                                                      *
18040 *       for N*(1535) we use the parameterization by Gy. Wolf et al     *
18041 *       Nucl phys A552 (1993) 349, added May 18, 1994                  *
18042 **********************************
18043         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
18044      1  AMP=0.93828,AP1=0.13496,AKA=0.498,APHI=1.020,
18045      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
18046         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
18047         COMMON /AA/ R(3,MAXSTR)
18048 cc      SAVE /AA/
18049         COMMON /BB/ P(3,MAXSTR)
18050 cc      SAVE /BB/
18051         COMMON /CC/ E(MAXSTR)
18052 cc      SAVE /CC/
18053         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
18054 cc      SAVE /EE/
18055         common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
18056 cc      SAVE /ff/
18057         common /gg/ dx,dy,dz,dpx,dpy,dpz
18058 cc      SAVE /gg/
18059         COMMON /INPUT/ NSTAR,NDIRCT,DIR
18060 cc      SAVE /INPUT/
18061         COMMON /NN/NNN
18062 cc      SAVE /NN/
18063         COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
18064 cc      SAVE /BG/
18065         COMMON   /RUN/NUM
18066 cc      SAVE /RUN/
18067         COMMON   /PA/RPION(3,MAXSTR,MAXR)
18068 cc      SAVE /PA/
18069         COMMON   /PB/PPION(3,MAXSTR,MAXR)
18070 cc      SAVE /PB/
18071         COMMON   /PC/EPION(MAXSTR,MAXR)
18072 cc      SAVE /PC/
18073         COMMON   /PD/LPION(MAXSTR,MAXR)
18074 cc      SAVE /PD/
18075         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
18076 cc      SAVE /input1/
18077       SAVE   
18078 *-----------------------------------------------------------------------
18079        XINEL=0
18080        SIGK=0
18081        XSK1=0
18082        XSK2=0
18083        XSK3=0
18084        XSK4=0
18085        XSK5=0
18086         EM1=E(I1)
18087         EM2=E(I2)
18088       PR  = SQRT( PX**2 + PY**2 + PZ**2 )
18089 *     IF THERE WERE 2 N*(1535) AND THEY DIDN'T SCATT. ELAST., 
18090 *     ALLOW THEM TO PRODUCE KAONS. NO OTHER INELASTIC CHANNELS
18091 *     ARE KNOWN
18092 C       if((lb(i1).ge.12).and.(lb(i2).ge.12))return
18093 *     ALL the inelastic collisions between N*(1535) and Delta as well
18094 *     as N*(1440) TO PRODUCE KAONS, NO OTHER CHANNELS ARE KNOWN
18095 C       if((lb(i1).ge.12).and.(lb(i2).ge.3))return
18096 C       if((lb(i2).ge.12).and.(lb(i1).ge.3))return
18097 *     calculate the N*(1535) production cross section in I1+I2 collisions
18098        call N1535(iabs(lb(i1)),iabs(lb(i2)),srt,X1535)
18099 c
18100 * for Delta+Delta-->N*(1440 OR 1535)+N AND N*(1440)+N*(1440)-->N*(1535)+X 
18101 *     AND DELTA+N*(1440)-->N*(1535)+X
18102 * WE ASSUME THEY HAVE THE SAME CROSS SECTIONS as CORRESPONDING N+N COLLISION):
18103 * FOR D++D0, D+D+,D+D-,D0D0,N*+N*+,N*0N*0,N*(+)D+,N*(+)D(-),N*(0)D(0)
18104 * N*(1535) production, kaon production and reabsorption through 
18105 * D(N*)+D(N*)-->NN are ALLOWED.
18106 * CROSS SECTION FOR KAON PRODUCTION from the four channels are
18107 * for NLK channel
18108        akp=0.498
18109        ak0=0.498
18110        ana=0.94
18111        ada=1.232
18112        al=1.1157
18113        as=1.1197
18114        xsk1=0
18115        xsk2=0
18116        xsk3=0
18117        xsk4=0
18118        t1nlk=ana+al+akp
18119        if(srt.le.t1nlk)go to 222
18120        XSK1=1.5*PPLPK(SRT)
18121 * for DLK channel
18122        t1dlk=ada+al+akp
18123        t2dlk=ada+al-akp
18124        if(srt.le.t1dlk)go to 222
18125        es=srt
18126        pmdlk2=(es**2-t1dlk**2)*(es**2-t2dlk**2)/(4.*es**2)
18127        pmdlk=sqrt(pmdlk2)
18128        XSK3=1.5*PPLPK(srt)
18129 * for NSK channel
18130        t1nsk=ana+as+akp
18131        t2nsk=ana+as-akp
18132        if(srt.le.t1nsk)go to 222
18133        pmnsk2=(es**2-t1nsk**2)*(es**2-t2nsk**2)/(4.*es**2)
18134        pmnsk=sqrt(pmnsk2)
18135        XSK2=1.5*(PPK1(srt)+PPK0(srt))
18136 * for DSK channel
18137        t1DSk=aDa+aS+akp
18138        t2DSk=aDa+aS-akp
18139        if(srt.le.t1dsk)go to 222
18140        pmDSk2=(es**2-t1DSk**2)*(es**2-t2DSk**2)/(4.*es**2)
18141        pmDSk=sqrt(pmDSk2)
18142        XSK4=1.5*(PPK1(srt)+PPK0(srt))
18143 csp11/21/01
18144 c phi production
18145        if(srt.le.(2.*amn+aphi))go to 222
18146 c  !! mb put the correct form
18147          xsk5 = 0.0001
18148 csp11/21/01 end
18149 * THE TOTAL KAON+ PRODUCTION CROSS SECTION IS THEN
18150 222       SIGK=XSK1+XSK2+XSK3+XSK4
18151 
18152 cbz3/7/99 neutralk
18153         XSK1 = 2.0 * XSK1
18154         XSK2 = 2.0 * XSK2
18155         XSK3 = 2.0 * XSK3
18156         XSK4 = 2.0 * XSK4
18157         SIGK = 2.0 * SIGK + xsk5
18158 cbz3/7/99 neutralk end
18159 
18160         IDD=iabs(LB(I1)*LB(I2))
18161 * The reabsorption cross section for the process
18162 * D(N*)D(N*)-->NN is
18163        s2d=reab2d(i1,i2,srt)
18164 
18165 cbz3/16/99 pion
18166         S2D = 0.
18167 cbz3/16/99 pion end
18168 
18169 *(1) N*(1535)+D(N*(1440)) reactions
18170 *    we allow kaon production and reabsorption only
18171        if(((iabs(lb(i1)).ge.12).and.(iabs(lb(i2)).ge.12)).OR.
18172      &       ((iabs(lb(i1)).ge.12).and.(iabs(lb(i2)).ge.6)).OR.
18173      &       ((iabs(lb(i2)).ge.12).and.(iabs(lb(i1)).ge.6)))THEN
18174        XINEL=sigk+s2d
18175        RETURN
18176        ENDIF
18177 * channels have the same charge as pp 
18178         IF((IDD.EQ.63).OR.(IDD.EQ.64).OR.(IDD.EQ.48).
18179      1  OR.(IDD.EQ.49).OR.(IDD.EQ.11*11).OR.(IDD.EQ.10*10).
18180      2  OR.(IDD.EQ.88).OR.(IDD.EQ.66).
18181      3  OR.(IDD.EQ.90).OR.(IDD.EQ.70))THEN
18182         XINEL=X1535+SIGK+s2d
18183        RETURN
18184         ENDIF
18185 * IN DELTA+N*(1440) and N*(1440)+N*(1440) COLLISIONS, 
18186 * N*(1535), kaon production and reabsorption are ALLOWED
18187 * IN N*(1440)+N*(1440) COLLISIONS, ONLY N*(1535) IS ALLOWED
18188        IF((IDD.EQ.110).OR.(IDD.EQ.77).OR.(IDD.EQ.80))THEN
18189        XINEL=X1535+SIGK+s2d
18190        RETURN
18191        ENDIF       
18192        IF((IDD.EQ.54).OR.(IDD.EQ.56))THEN
18193 * LIKE FOR N+P COLLISION, 
18194 * IN DELTA+DELTA COLLISIONS BOTH N*(1440) AND N*(1535) CAN BE PRODUCED
18195         SIG2=(3./4.)*SIGMA(SRT,2,0,1)
18196         XINEL=2.*(SIG2+X1535)+SIGK+s2d
18197        RETURN
18198        ENDIF
18199        RETURN
18200        END
18201 ******************************************
18202       real function dirct1(srt)
18203 *  This function contains the experimental, direct pion(+) + p cross sections *
18204 *  srt    = DSQRT(s) in GeV                                                   *
18205 *  dirct1  = cross section in fm**2                                     *
18206 *  earray = EXPerimental table with the srt            
18207 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
18208 ******************************************
18209 c      real*4   xarray(122), earray(122)
18210       real   xarray(122), earray(122)
18211       SAVE   
18212       data   earray /
18213      &1.568300,1.578300,1.588300,1.598300,1.608300,1.618300,1.628300,    
18214      &1.638300,1.648300,1.658300,1.668300,1.678300,1.688300,1.698300,    
18215      &1.708300,1.718300,1.728300,1.738300,1.748300,1.758300,1.768300,    
18216      &1.778300,1.788300,1.798300,1.808300,1.818300,1.828300,1.838300,    
18217      &1.848300,1.858300,1.868300,1.878300,1.888300,1.898300,1.908300,    
18218      &1.918300,1.928300,1.938300,1.948300,1.958300,1.968300,1.978300,    
18219      &1.988300,1.998300,2.008300,2.018300,2.028300,2.038300,2.048300,    
18220      &2.058300,2.068300,2.078300,2.088300,2.098300,2.108300,2.118300,    
18221      &2.128300,2.138300,2.148300,2.158300,2.168300,2.178300,2.188300,    
18222      &2.198300,2.208300,2.218300,2.228300,2.238300,2.248300,2.258300,    
18223      &2.268300,2.278300,2.288300,2.298300,2.308300,2.318300,2.328300,    
18224      &2.338300,2.348300,2.358300,2.368300,2.378300,2.388300,2.398300,    
18225      &2.408300,2.418300,2.428300,2.438300,2.448300,2.458300,2.468300,    
18226      &2.478300,2.488300,2.498300,2.508300,2.518300,2.528300,2.538300,    
18227      &2.548300,2.558300,2.568300,2.578300,2.588300,2.598300,2.608300,    
18228      &2.618300,2.628300,2.638300,2.648300,2.658300,2.668300,2.678300,
18229      &2.688300,2.698300,2.708300,2.718300,2.728300,2.738300,2.748300,    
18230      &2.758300,2.768300,2.778300/
18231       data xarray/
18232      &1.7764091E-02,0.5643668,0.8150568,1.045565,2.133695,3.327922,
18233      &4.206488,3.471242,4.486876,5.542213,6.800052,7.192446,6.829848,    
18234      &6.580306,6.868410,8.527946,10.15720,9.716511,9.298335,8.901310,    
18235      &10.31213,10.52185,11.17630,11.61639,12.05577,12.71596,13.46036,    
18236      &14.22060,14.65449,14.94775,14.93310,15.32907,16.56481,16.29422,    
18237      &15.18548,14.12658,13.72544,13.24488,13.31003,14.42680,12.84423,    
18238      &12.49025,12.14858,11.81870,11.18993,11.35816,11.09447,10.83873,    
18239      &10.61592,10.53754,9.425521,8.195912,9.661075,9.696192,9.200142,    
18240      &8.953734,8.715461,8.484999,8.320765,8.255512,8.190969,8.127125,    
18241      &8.079508,8.073004,8.010611,7.948909,7.887895,7.761005,7.626290,    
18242      &7.494696,7.366132,7.530178,8.392097,9.046881,8.962544,8.879403,    
18243      &8.797427,8.716601,8.636904,8.558312,8.404368,8.328978,8.254617,    
18244      &8.181265,8.108907,8.037527,7.967100,7.897617,7.829057,7.761405,    
18245      &7.694647,7.628764,7.563742,7.499570,7.387562,7.273281,7.161334,    
18246      &6.973375,6.529592,6.280323,6.293136,6.305725,6.318097,6.330258,    
18247      &6.342214,6.353968,6.365528,6.376895,6.388079,6.399081,6.409906,    
18248      &6.420560,6.431045,6.441367,6.451529,6.461533,6.471386,6.481091,    
18249      &6.490650,6.476413,6.297259,6.097826/
18250 
18251       dirct1=0.
18252       if (srt .lt. earray(1)) then
18253         dirct1 = 0.00001
18254         return
18255       end if
18256       if (srt .gt. earray(122)) then
18257         dirct1 = xarray(122)
18258        dirct1=dirct1/10.
18259         return
18260       end if
18261 *
18262 *Interpolate double logarithmically to find xdirct2(srt)
18263 *
18264       do 1001 ie = 1,122
18265         if (earray(ie) .eq. srt) then
18266           dirct1= xarray(ie)
18267          dirct1=dirct1/10.
18268           return
18269        endif
18270         if (earray(ie) .gt. srt) then
18271           ymin = alog(xarray(ie-1))
18272           ymax = alog(xarray(ie))
18273           xmin = alog(earray(ie-1))
18274           xmax = alog(earray(ie))
18275           dirct1= exp(ymin + (alog(srt)-xmin)
18276      &          *(ymax-ymin)/(xmax-xmin) )
18277        dirct1=dirct1/10.
18278        go to 50
18279         end if
18280  1001 continue
18281 50       continue
18282         return
18283         END
18284 *******************************
18285 ******************************************
18286       real function dirct2(srt)
18287 *  This function contains the experimental, direct pion(-) + p cross sections *
18288 *  srt    = DSQRT(s) in GeV                                                   *
18289 *  dirct2 = cross section in fm**2
18290 *  earray = EXPerimental table with the srt            
18291 *  xarray = EXPerimental table with cross sections in mb (curve to guide eye) *
18292 ******************************************
18293 c      real*4   xarray(122), earray(122)
18294       real   xarray(122), earray(122)
18295       SAVE   
18296       data   earray /
18297      &1.568300,1.578300,1.588300,1.598300,1.608300,1.618300,1.628300,    
18298      &1.638300,1.648300,1.658300,1.668300,1.678300,1.688300,1.698300,    
18299      &1.708300,1.718300,1.728300,1.738300,1.748300,1.758300,1.768300,    
18300      &1.778300,1.788300,1.798300,1.808300,1.818300,1.828300,1.838300,    
18301      &1.848300,1.858300,1.868300,1.878300,1.888300,1.898300,1.908300,    
18302      &1.918300,1.928300,1.938300,1.948300,1.958300,1.968300,1.978300,    
18303      &1.988300,1.998300,2.008300,2.018300,2.028300,2.038300,2.048300,    
18304      &2.058300,2.068300,2.078300,2.088300,2.098300,2.108300,2.118300,    
18305      &2.128300,2.138300,2.148300,2.158300,2.168300,2.178300,2.188300,    
18306      &2.198300,2.208300,2.218300,2.228300,2.238300,2.248300,2.258300,    
18307      &2.268300,2.278300,2.288300,2.298300,2.308300,2.318300,2.328300,    
18308      &2.338300,2.348300,2.358300,2.368300,2.378300,2.388300,2.398300,    
18309      &2.408300,2.418300,2.428300,2.438300,2.448300,2.458300,2.468300,    
18310      &2.478300,2.488300,2.498300,2.508300,2.518300,2.528300,2.538300,    
18311      &2.548300,2.558300,2.568300,2.578300,2.588300,2.598300,2.608300,    
18312      &2.618300,2.628300,2.638300,2.648300,2.658300,2.668300,2.678300,
18313      &2.688300,2.698300,2.708300,2.718300,2.728300,2.738300,2.748300,    
18314      &2.758300,2.768300,2.778300/
18315       data xarray/0.5773182,1.404156,2.578629,3.832013,4.906011,
18316      &9.076963,13.10492,10.65975,15.31156,19.77611,19.92874,18.68979,    
18317      &19.80114,18.39536,14.34269,13.35353,13.58822,14.57031,10.24686,    
18318      &11.23386,9.764803,10.35652,10.53539,10.07524,9.582198,9.596469,    
18319      &9.818489,9.012848,9.378012,9.529244,9.529698,8.835624,6.671396,    
18320      &8.797758,8.133437,7.866227,7.823946,7.808504,7.791755,7.502062,    
18321      &7.417275,7.592349,7.752028,7.910585,8.068122,8.224736,8.075289,    
18322      &7.895902,7.721359,7.551512,7.386224,7.225343,7.068739,6.916284,    
18323      &6.767842,6.623294,6.482520,6.345404,6.211833,7.339510,7.531462,    
18324      &7.724824,7.919620,7.848021,7.639856,7.571083,7.508881,7.447474,    
18325      &7.386855,7.327011,7.164454,7.001266,6.842526,6.688094,6.537823,    
18326      &6.391583,6.249249,6.110689,5.975790,5.894200,5.959503,6.024602,    
18327      &6.089505,6.154224,6.218760,6.283128,6.347331,6.297411,6.120248,    
18328      &5.948606,6.494864,6.357106,6.222824,6.091910,5.964267,5.839795,    
18329      &5.718402,5.599994,5.499146,5.451325,5.404156,5.357625,5.311721,    
18330      &5.266435,5.301964,5.343963,5.385833,5.427577,5.469200,5.510702,    
18331      &5.552088,5.593359,5.634520,5.675570,5.716515,5.757356,5.798093,    
18332      &5.838732,5.879272,5.919717,5.960068,5.980941/
18333 
18334       dirct2=0.
18335       if (srt .lt. earray(1)) then
18336         dirct2 = 0.00001
18337         return
18338       end if
18339       if (srt .gt. earray(122)) then
18340         dirct2 = xarray(122)
18341        dirct2=dirct2/10.
18342         return
18343       end if
18344 *
18345 *Interpolate double logarithmically to find xdirct2(srt)
18346 *
18347       do 1001 ie = 1,122
18348         if (earray(ie) .eq. srt) then
18349           dirct2= xarray(ie)
18350          dirct2=dirct2/10.
18351           return
18352        endif
18353         if (earray(ie) .gt. srt) then
18354           ymin = alog(xarray(ie-1))
18355           ymax = alog(xarray(ie))
18356           xmin = alog(earray(ie-1))
18357           xmax = alog(earray(ie))
18358           dirct2= exp(ymin + (alog(srt)-xmin)
18359      &          *(ymax-ymin)/(xmax-xmin) )
18360        dirct2=dirct2/10.
18361        go to 50
18362         end if
18363  1001 continue
18364 50       continue
18365         return
18366         END
18367 *******************************
18368 ******************************
18369 * this program calculates the elastic cross section for rho+nucleon
18370 * through higher resonances
18371 c       real*4 function ErhoN(em1,em2,lb1,lb2,srt)
18372        real function ErhoN(em1,em2,lb1,lb2,srt)
18373 * date : Dec. 19, 1994
18374 * ****************************
18375 c       implicit real*4 (a-h,o-z)
18376       dimension   arrayj(19),arrayl(19),arraym(19),
18377      &arrayw(19),arrayb(19)
18378       SAVE   
18379       data arrayj /0.5,1.5,0.5,0.5,2.5,2.5,1.5,0.5,1.5,3.5,
18380      &1.5,0.5,1.5,0.5,2.5,0.5,1.5,2.5,3.5/
18381       data arrayl/1,2,0,0,2,3,2,1,1,3,
18382      &1,0,2,0,3,1,1,2,3/
18383       data arraym /1.44,1.52,1.535,1.65,1.675,1.68,1.70,1.71,
18384      &1.72,1.99,1.60,1.62,1.70,1.90,1.905,1.910,
18385      &1.86,1.93,1.95/
18386       data arrayw/0.2,0.125,0.15,0.15,0.155,0.125,0.1,0.11,
18387      &0.2,0.29,0.25,0.16,0.28,0.15,0.3,0.22,0.25,
18388      &0.25,0.24/
18389       data arrayb/0.15,0.20,0.05,0.175,0.025,0.125,0.1,0.20,
18390      &0.53,0.34,0.05,0.07,0.15,0.45,0.45,0.058,
18391      &0.08,0.12,0.08/
18392 
18393 * the minimum energy for pion+delta collision
18394        pi=3.1415926
18395        xs=0
18396 * include contribution from each resonance
18397        do 1001 ir=1,19
18398 cbz11/25/98
18399        IF(IR.LE.8)THEN
18400 c       if(lb1*lb2.eq.27.OR.LB1*LB2.EQ.25*2)branch=0.
18401 c       if(lb1*lb2.eq.26.OR.LB1*LB2.EQ.26*2)branch=1./3.
18402 c       if(lb1*lb2.eq.27*2.OR.LB1*LB2.EQ.25)branch=2./3.
18403 c       ELSE
18404 c       if(lb1*lb2.eq.27.OR.LB1*LB2.EQ.25*2)branch=1.
18405 c       if(lb1*lb2.eq.26.OR.LB1*LB2.EQ.26*2)branch=2./3.
18406 c       if(lb1*lb2.eq.27*2.OR.LB1*LB2.EQ.25)branch=1./3.
18407 c       ENDIF
18408        if( ((lb1*lb2.eq.27.AND.(LB1.EQ.1.OR.LB2.EQ.1)).OR.
18409      &     (LB1*LB2.EQ.25*2.AND.(LB1.EQ.2.OR.LB2.EQ.2)))
18410      &       .OR.((lb1*lb2.eq.-25.AND.(LB1.EQ.-1.OR.LB2.EQ.-1)).OR.
18411      &     (LB1*LB2.EQ.-27*2.AND.(LB1.EQ.-2.OR.LB2.EQ.-2))) )
18412      &     branch=0.
18413         if((iabs(lb1*lb2).eq.26.AND.(iabs(LB1).EQ.1.OR.iabs(LB2).EQ.1))
18414      &   .OR.(iabs(LB1*LB2).EQ.26*2
18415      &   .AND.(iabs(LB1).EQ.2.OR.iabs(LB2).EQ.2)))
18416      &     branch=1./3.
18417        if( ((lb1*lb2.eq.27*2.AND.(LB1.EQ.2.OR.LB2.EQ.2)).OR.
18418      &     (LB1*LB2.EQ.25.AND.(LB1.EQ.1.OR.LB2.EQ.1)))
18419      &  .OR.((lb1*lb2.eq.-25*2.AND.(LB1.EQ.-2.OR.LB2.EQ.-2)).OR.
18420      &     (LB1*LB2.EQ.-27.AND.(LB1.EQ.-1.OR.LB2.EQ.-1))) )
18421      &     branch=2./3.
18422        ELSE
18423        if( ((lb1*lb2.eq.27.AND.(LB1.EQ.1.OR.LB2.EQ.1)).OR.
18424      &     (LB1*LB2.EQ.25*2.AND.(LB1.EQ.2.OR.LB2.EQ.2)))
18425      &       .OR.((lb1*lb2.eq.-25.AND.(LB1.EQ.-1.OR.LB2.EQ.-1)).OR.
18426      &     (LB1*LB2.EQ.-27*2.AND.(LB1.EQ.-2.OR.LB2.EQ.-2))) )
18427      &     branch=1.
18428         if((iabs(lb1*lb2).eq.26.AND.(iabs(LB1).EQ.1.OR.iabs(LB2).EQ.1))
18429      &   .OR.(iabs(LB1*LB2).EQ.26*2
18430      &   .AND.(iabs(LB1).EQ.2.OR.iabs(LB2).EQ.2)))
18431      &     branch=2./3.
18432        if( ((lb1*lb2.eq.27*2.AND.(LB1.EQ.2.OR.LB2.EQ.2)).OR.
18433      &     (LB1*LB2.EQ.25.AND.(LB1.EQ.1.OR.LB2.EQ.1)))
18434      &  .OR.((lb1*lb2.eq.-25*2.AND.(LB1.EQ.-2.OR.LB2.EQ.-2)).OR.
18435      &     (LB1*LB2.EQ.-27.AND.(LB1.EQ.-1.OR.LB2.EQ.-1))) )
18436      &     branch=1./3.
18437        ENDIF
18438 cbz11/25/98end
18439        xs0=fdR(arraym(ir),arrayj(ir),arrayl(ir),
18440      &arrayw(ir),arrayb(ir),srt,EM1,EM2)
18441        xs=xs+1.3*pi*branch*xs0*(0.1973)**2
18442  1001 continue
18443        Erhon=xs
18444        return
18445        end
18446 ***************************8
18447 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
18448 *KITAZOE'S FORMULA
18449 c        REAL*4 FUNCTION FDR(DMASS,aj,al,width,widb0,srt,em1,em2)
18450       REAL FUNCTION FDR(DMASS,aj,al,width,widb0,srt,em1,em2)
18451       SAVE   
18452         AMd=em1
18453         AmP=em2
18454            Ak02= 0.25*(DMASS**2-amd**2-amp**2)**2
18455      &           -(Amp*amd)**2
18456             IF (ak02 .GT. 0.) THEN
18457               Q0 = SQRT(ak02/DMASS)
18458             ELSE
18459               Q0= 0.0
18460              fdR=0
18461            return
18462             END IF
18463            Ak2= 0.25*(srt**2-amd**2-amp**2)**2
18464      &           -(Amp*amd)**2
18465             IF (ak2 .GT. 0.) THEN
18466               Q = SQRT(ak2/DMASS)
18467             ELSE
18468               Q= 0.00
18469              fdR=0
18470              return
18471             END IF
18472        b=widb0*1.2*dmass/srt*(q/q0)**(2.*al+1)
18473      &  /(1.+0.2*(q/q0)**(2*al))
18474         FDR=(2.*aj+1)*WIDTH**2*b/((srt-dmass)**2
18475      1  +0.25*WIDTH**2)/(6.*q**2)
18476         RETURN
18477         END
18478 ******************************
18479 * this program calculates the elastic cross section for pion+delta
18480 * through higher resonances
18481 c       REAL*4 FUNCTION DIRCT3(SRT)
18482       REAL FUNCTION DIRCT3(SRT)
18483 * date : Dec. 19, 1994
18484 * ****************************
18485 c     implicit real*4 (a-h,o-z)
18486       dimension   arrayj(17),arrayl(17),arraym(17),
18487      &arrayw(17),arrayb(17)
18488       SAVE   
18489       data arrayj /1.5,0.5,2.5,2.5,1.5,0.5,1.5,3.5,
18490      &1.5,0.5,1.5,0.5,2.5,0.5,1.5,2.5,3.5/
18491       data arrayl/2,0,2,3,2,1,1,3,
18492      &1,0,2,0,3,1,1,2,3/
18493       data arraym /1.52,1.65,1.675,1.68,1.70,1.71,
18494      &1.72,1.99,1.60,1.62,1.70,1.90,1.905,1.910,
18495      &1.86,1.93,1.95/
18496       data arrayw/0.125,0.15,0.155,0.125,0.1,0.11,
18497      &0.2,0.29,0.25,0.16,0.28,0.15,0.3,0.22,0.25,
18498      &0.25,0.24/
18499       data arrayb/0.55,0.6,0.375,0.6,0.1,0.15,
18500      &0.15,0.05,0.35,0.3,0.15,0.1,0.1,0.22,
18501      &0.2,0.09,0.4/
18502 
18503 * the minimum energy for pion+delta collision
18504        pi=3.1415926
18505        amn=0.938
18506        amp=0.138
18507        xs=0
18508 * include contribution from each resonance
18509        branch=1./3.
18510        do 1001 ir=1,17
18511        if(ir.gt.8)branch=2./3.
18512        xs0=fd1(arraym(ir),arrayj(ir),arrayl(ir),
18513      &arrayw(ir),arrayb(ir),srt)
18514        xs=xs+1.3*pi*branch*xs0*(0.1973)**2
18515  1001   continue
18516        DIRCT3=XS
18517        RETURN
18518        end
18519 ***************************8
18520 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
18521 *KITAZOE'S FORMULA
18522 c        REAL*4 FUNCTION FD1(DMASS,aj,al,width,widb0,srt)
18523       REAL FUNCTION FD1(DMASS,aj,al,width,widb0,srt)
18524       SAVE   
18525         AMN=0.938
18526         AmP=0.138
18527        amd=amn
18528            Ak02= 0.25*(DMASS**2-amd**2-amp**2)**2
18529      &           -(Amp*amd)**2
18530             IF (ak02 .GT. 0.) THEN
18531               Q0 = SQRT(ak02/DMASS)
18532             ELSE
18533               Q0= 0.0
18534              fd1=0
18535            return
18536             END IF
18537            Ak2= 0.25*(srt**2-amd**2-amp**2)**2
18538      &           -(Amp*amd)**2
18539             IF (ak2 .GT. 0.) THEN
18540               Q = SQRT(ak2/DMASS)
18541             ELSE
18542               Q= 0.00
18543              fd1=0
18544              return
18545             END IF
18546        b=widb0*1.2*dmass/srt*(q/q0)**(2.*al+1)
18547      &  /(1.+0.2*(q/q0)**(2*al))
18548         FD1=(2.*aj+1)*WIDTH**2*b/((srt-dmass)**2
18549      1  +0.25*WIDTH**2)/(2.*q**2)
18550         RETURN
18551         END
18552 ******************************
18553 * this program calculates the elastic cross section for pion+delta
18554 * through higher resonances
18555 c       REAL*4 FUNCTION DPION(EM1,EM2,LB1,LB2,SRT)
18556       REAL FUNCTION DPION(EM1,EM2,LB1,LB2,SRT)
18557 * date : Dec. 19, 1994
18558 * ****************************
18559 c     implicit real*4 (a-h,o-z)
18560       dimension   arrayj(19),arrayl(19),arraym(19),
18561      &arrayw(19),arrayb(19)
18562       SAVE   
18563       data arrayj /0.5,1.5,0.5,0.5,2.5,2.5,1.5,0.5,1.5,3.5,
18564      &1.5,0.5,1.5,0.5,2.5,0.5,1.5,2.5,3.5/
18565       data arrayl/1,2,0,0,2,3,2,1,1,3,
18566      &1,0,2,0,3,1,1,2,3/
18567       data arraym /1.44,1.52,1.535,1.65,1.675,1.68,1.70,1.71,
18568      &1.72,1.99,1.60,1.62,1.70,1.90,1.905,1.910,
18569      &1.86,1.93,1.95/
18570       data arrayw/0.2,0.125,0.15,0.15,0.155,0.125,0.1,0.11,
18571      &0.2,0.29,0.25,0.16,0.28,0.15,0.3,0.22,0.25,
18572      &0.25,0.24/
18573       data arrayb/0.15,0.25,0.,0.05,0.575,0.125,0.379,0.10,
18574      &0.10,0.062,0.45,0.60,0.6984,0.05,0.25,0.089,
18575      &0.19,0.2,0.13/
18576 
18577 * the minimum energy for pion+delta collision
18578        pi=3.1415926
18579        amn=0.94
18580        amp=0.14
18581        xs=0
18582 * include contribution from each resonance
18583        do 1001 ir=1,19
18584        BRANCH=0.
18585 cbz11/25/98
18586        if(ir.LE.8)THEN
18587 c       IF(LB1*LB2.EQ.5*7.OR.LB1*LB2.EQ.3*8)branch=1./6.
18588 c       IF(LB1*LB2.EQ.4*7.OR.LB1*LB2.EQ.4*8)branch=1./3.
18589 c       IF(LB1*LB2.EQ.5*6.OR.LB1*LB2.EQ.3*9)branch=1./2.
18590 c       ELSE
18591 c       IF(LB1*LB2.EQ.5*8.OR.LB1*LB2.EQ.5*6)branch=2./5.
18592 c       IF(LB1*LB2.EQ.3*9.OR.LB1*LB2.EQ.3*7)branch=2./5.
18593 c       IF(LB1*LB2.EQ.5*7.OR.LB1*LB2.EQ.3*8)branch=8./15.
18594 c       IF(LB1*LB2.EQ.4*7.OR.LB1*LB2.EQ.4*8)branch=1./15.
18595 c       IF(LB1*LB2.EQ.4*9.OR.LB1*LB2.EQ.4*6)branch=3./5.
18596 c       ENDIF
18597        IF( ((LB1*LB2.EQ.5*7.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18598      &     (LB1*LB2.EQ.3*8.AND.(LB1.EQ.3.OR.LB2.EQ.3)))
18599      &       .OR.((LB1*LB2.EQ.-3*7.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18600      &     (LB1*LB2.EQ.-5*8.AND.(LB1.EQ.5.OR.LB2.EQ.5))) )
18601      &     branch=1./6.
18602        IF((iabs(LB1*LB2).EQ.4*7.AND.(LB1.EQ.4.OR.LB2.EQ.4)).OR.
18603      &     (iabs(LB1*LB2).EQ.4*8.AND.(LB1.EQ.4.OR.LB2.EQ.4)))
18604      &     branch=1./3.
18605        IF( ((LB1*LB2.EQ.5*6.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18606      &     (LB1*LB2.EQ.3*9.AND.(LB1.EQ.3.OR.LB2.EQ.3)))
18607      &       .OR.((LB1*LB2.EQ.-3*6.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18608      &     (LB1*LB2.EQ.-5*9.AND.(LB1.EQ.5.OR.LB2.EQ.5))) )
18609      &     branch=1./2.
18610        ELSE
18611        IF( ((LB1*LB2.EQ.5*8.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18612      &     (LB1*LB2.EQ.5*6.AND.(LB1.EQ.5.OR.LB2.EQ.5)))
18613      &        .OR.((LB1*LB2.EQ.-3*8.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18614      &     (LB1*LB2.EQ.-3*6.AND.(LB1.EQ.3.OR.LB2.EQ.3))) )
18615      &     branch=2./5.
18616        IF( ((LB1*LB2.EQ.3*9.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18617      &     (LB1*LB2.EQ.3*7.AND.(LB1.EQ.3.OR.LB2.EQ.3)))
18618      &        .OR. ((LB1*LB2.EQ.-5*9.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18619      &     (LB1*LB2.EQ.-5*7.AND.(LB1.EQ.5.OR.LB2.EQ.5))) )
18620      &     branch=2./5.
18621        IF( ((LB1*LB2.EQ.5*7.AND.(LB1.EQ.5.OR.LB2.EQ.5)).OR.
18622      &     (LB1*LB2.EQ.3*8.AND.(LB1.EQ.3.OR.LB2.EQ.3)))
18623      &        .OR.((LB1*LB2.EQ.-3*7.AND.(LB1.EQ.3.OR.LB2.EQ.3)).OR.
18624      &     (LB1*LB2.EQ.-5*8.AND.(LB1.EQ.5.OR.LB2.EQ.5))) )
18625      &     branch=8./15.
18626        IF((iabs(LB1*LB2).EQ.4*7.AND.(LB1.EQ.4.OR.LB2.EQ.4)).OR.
18627      &     (iabs(LB1*LB2).EQ.4*8.AND.(LB1.EQ.4.OR.LB2.EQ.4)))
18628      &     branch=1./15.
18629        IF((iabs(LB1*LB2).EQ.4*9.AND.(LB1.EQ.4.OR.LB2.EQ.4)).OR.
18630      &     (iabs(LB1*LB2).EQ.4*6.AND.(LB1.EQ.4.OR.LB2.EQ.4)))
18631      &     branch=3./5.
18632        ENDIF
18633 cbz11/25/98end
18634        xs0=fd2(arraym(ir),arrayj(ir),arrayl(ir),
18635      &arrayw(ir),arrayb(ir),EM1,EM2,srt)
18636        xs=xs+1.3*pi*branch*xs0*(0.1973)**2
18637  1001   continue
18638        DPION=XS
18639        RETURN
18640        end
18641 ***************************8
18642 *FUNCTION FDE(DMASS) GIVES DELTA MASS DISTRIBUTION BY USING OF
18643 *KITAZOE'S FORMULA
18644 c        REAL*4 FUNCTION FD2(DMASS,aj,al,width,widb0,EM1,EM2,srt)
18645       REAL FUNCTION FD2(DMASS,aj,al,width,widb0,EM1,EM2,srt)
18646       SAVE   
18647         AmP=EM1
18648        amd=EM2
18649            Ak02= 0.25*(DMASS**2-amd**2-amp**2)**2
18650      &           -(Amp*amd)**2
18651             IF (ak02 .GT. 0.) THEN
18652               Q0 = SQRT(ak02/DMASS)
18653             ELSE
18654               Q0= 0.0
18655              fd2=0
18656            return
18657             END IF
18658            Ak2= 0.25*(srt**2-amd**2-amp**2)**2
18659      &           -(Amp*amd)**2
18660             IF (ak2 .GT. 0.) THEN
18661               Q = SQRT(ak2/DMASS)
18662             ELSE
18663               Q= 0.00
18664              fd2=0
18665              return
18666             END IF
18667        b=widb0*1.2*dmass/srt*(q/q0)**(2.*al+1)
18668      &  /(1.+0.2*(q/q0)**(2*al))
18669         FD2=(2.*aj+1)*WIDTH**2*b/((srt-dmass)**2
18670      1  +0.25*WIDTH**2)/(4.*q**2)
18671         RETURN
18672         END
18673 ***************************8
18674 *   MASS GENERATOR for two resonances simultaneously
18675        subroutine Rmasdd(srt,am10,am20,
18676      &dmin1,dmin2,ISEED,ic,dm1,dm2)
18677       COMMON/RNDF77/NSEED
18678 cc      SAVE /RNDF77/
18679       SAVE   
18680        amn=0.94
18681        amp=0.14
18682 * the maximum mass for resonance 1
18683          dmax1=srt-dmin2
18684 * generate the mass for the first resonance
18685  5        NTRY1=0
18686          ntry2=0
18687          ntry=0
18688          ictrl=0
18689 10        DM1 = RANART(NSEED) * (DMAX1-DMIN1) + DMIN1
18690           NTRY1=NTRY1+1
18691 * the maximum mass for resonance 2 
18692          if(ictrl.eq.0)dmax2=srt-dm1
18693 * generate the mass for the second resonance
18694 20         dm2=RANART(NSEED)*(dmax2-dmin2)+dmin2
18695           NTRY2=NTRY2+1
18696 * check the energy-momentum conservation with two masses
18697 * q2 in the following is q**2*4*srt**2
18698          q2=((srt**2-dm1**2-dm2**2)**2-4.*dm1**2*dm2**2)
18699          if(q2.le.0)then
18700          dmax2=dm2-0.01
18701 c         dmax1=dm1-0.01
18702          ictrl=1
18703          go to 20
18704          endif
18705 * determine the weight of the mass pair         
18706           IF(DMAX1.LT.am10) THEN
18707           if(ic.eq.1)FM1=Fmassd(DMAX1)
18708           if(ic.eq.2)FM1=Fmassn(DMAX1)
18709           if(ic.eq.3)FM1=Fmassd(DMAX1)
18710           if(ic.eq.4)FM1=Fmassd(DMAX1)
18711           ELSE
18712           if(ic.eq.1)FM1=Fmassd(am10)
18713           if(ic.eq.2)FM1=Fmassn(am10)
18714           if(ic.eq.3)FM1=Fmassd(am10)
18715           if(ic.eq.4)FM1=Fmassd(am10)
18716           ENDIF
18717           IF(DMAX2.LT.am20) THEN
18718           if(ic.eq.1)FM2=Fmassd(DMAX2)
18719           if(ic.eq.2)FM2=Fmassn(DMAX2)
18720           if(ic.eq.3)FM2=Fmassn(DMAX2)
18721           if(ic.eq.4)FM2=Fmassr(DMAX2)
18722           ELSE
18723           if(ic.eq.1)FM2=Fmassd(am20)
18724           if(ic.eq.2)FM2=Fmassn(am20)
18725           if(ic.eq.3)FM2=Fmassn(am20)
18726           if(ic.eq.4)FM2=Fmassr(am20)
18727           ENDIF
18728           IF(FM1.EQ.0.)FM1=1.e-04
18729           IF(FM2.EQ.0.)FM2=1.e-04
18730          prob0=fm1*fm2
18731           if(ic.eq.1)prob=Fmassd(dm1)*fmassd(dm2)
18732           if(ic.eq.2)prob=Fmassn(dm1)*fmassn(dm2)
18733           if(ic.eq.3)prob=Fmassd(dm1)*fmassn(dm2)
18734           if(ic.eq.4)prob=Fmassd(dm1)*fmassr(dm2)
18735          if(prob.le.1.e-06)prob=1.e-06
18736          fff=prob/prob0
18737          ntry=ntry+1 
18738           IF(RANART(NSEED).GT.fff.AND.
18739      1    NTRY.LE.20) GO TO 10
18740 
18741 clin-2/26/03 limit the mass of (rho,Delta,N*1440) below a certain value
18742 c     (here taken as its central value + 2* B-W fullwidth):
18743           if((abs(am10-0.77).le.0.01.and.dm1.gt.1.07)
18744      1         .or.(abs(am10-1.232).le.0.01.and.dm1.gt.1.47)
18745      2         .or.(abs(am10-1.44).le.0.01.and.dm1.gt.2.14)) goto 5
18746           if((abs(am20-0.77).le.0.01.and.dm2.gt.1.07)
18747      1         .or.(abs(am20-1.232).le.0.01.and.dm2.gt.1.47)
18748      2         .or.(abs(am20-1.44).le.0.01.and.dm2.gt.2.14)) goto 5
18749 
18750        RETURN
18751        END
18752 *FUNCTION Fmassd(DMASS) GIVES the delta MASS DISTRIBUTION 
18753         REAL FUNCTION Fmassd(DMASS)
18754       SAVE   
18755         AM0=1.232
18756         Fmassd=am0*WIDTH(DMASS)/((DMASS**2-am0**2)**2
18757      1  +am0**2*WIDTH(DMASS)**2)
18758         RETURN
18759         END
18760 *FUNCTION Fmassn(DMASS) GIVES the N* MASS DISTRIBUTION 
18761         REAL FUNCTION Fmassn(DMASS)
18762       SAVE   
18763         AM0=1.44
18764         Fmassn=am0*W1440(DMASS)/((DMASS**2-am0**2)**2
18765      1  +am0**2*W1440(DMASS)**2)
18766         RETURN
18767         END
18768 *FUNCTION Fmassr(DMASS) GIVES the rho MASS DISTRIBUTION 
18769         REAL FUNCTION Fmassr(DMASS)
18770       SAVE   
18771         AM0=0.77
18772        wid=0.153
18773         Fmassr=am0*Wid/((DMASS**2-am0**2)**2
18774      1  +am0**2*Wid**2)
18775         RETURN
18776         END
18777 **********************************
18778 * PURPOSE : flow analysis  
18779 * DATE : Feb. 1, 1995
18780 ***********************************
18781        subroutine flow(nt)
18782 c       IMPLICIT REAL*4 (A-H,O-Z)
18783        PARAMETER ( PI=3.1415926,APion=0.13957,aka=0.498)
18784         PARAMETER   (MAXSTR=150001,MAXR=1,AMU= 0.9383,etaM=0.5475)
18785        DIMENSION ypion(-80:80),ypr(-80:80),ykaon(-80:80)
18786        dimension pxpion(-80:80),pxpro(-80:80),pxkaon(-80:80)
18787 *----------------------------------------------------------------------*
18788       COMMON  /AA/      R(3,MAXSTR)
18789 cc      SAVE /AA/
18790       COMMON  /BB/      P(3,MAXSTR)
18791 cc      SAVE /BB/
18792       COMMON  /CC/      E(MAXSTR)
18793 cc      SAVE /CC/
18794       COMMON  /EE/      ID(MAXSTR),LB(MAXSTR)
18795 cc      SAVE /EE/
18796       COMMON  /RR/      MASSR(0:MAXR)
18797 cc      SAVE /RR/
18798       COMMON  /RUN/     NUM
18799 cc      SAVE /RUN/
18800       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
18801 cc      SAVE /input1/
18802       SAVE   
18803 *----------------------------------------------------------------------*
18804        ycut1=-2.6
18805        ycut2=2.6
18806        DY=0.2
18807        LY=NINT((YCUT2-YCUT1)/DY)
18808 ***********************************
18809 C initialize the transverse momentum counters 
18810        do 11 kk=-80,80
18811        pxpion(kk)=0
18812        pxpro(kk)=0
18813        pxkaon(kk)=0
18814 11       continue
18815        DO 701 J=-LY,LY
18816        ypion(j)=0
18817        ykaon(j)=0
18818        ypr(j)=0
18819   701   CONTINUE
18820        nkaon=0
18821        npr=0
18822        npion=0
18823           IS=0
18824           DO 20 NRUN=1,NUM
18825           IS=IS+MASSR(NRUN-1)
18826           DO 20 J=1,MASSR(NRUN)
18827           I=J+IS
18828 * for protons go to 200 to calculate its rapidity and transvese momentum
18829 * distributions
18830        e00=sqrt(P(1,I)**2+P(2,i)**2+P(3,i)**2+e(I)**2)
18831        y00=0.5*alog((e00+p(3,i))/(e00-p(3,i)))
18832        if(abs(y00).ge.ycut2)go to 20
18833        iy=nint(y00/DY)
18834        if(abs(iy).ge.80)go to 20
18835        if(e(i).eq.0)go to 20
18836        if(lb(i).ge.25)go to 20
18837        if((lb(i).le.5).and.(lb(i).ge.3))go to 50
18838        if(lb(i).eq.1.or.lb(i).eq.2)go to 200
18839 cbz3/10/99
18840 c       if(lb(i).ge.6.and.lb(i).le.15)go to 200
18841        if(lb(i).ge.6.and.lb(i).le.17)go to 200
18842 cbz3/10/99 end
18843        if(lb(i).eq.23)go to 400
18844        go to 20
18845 * calculate rapidity and transverse momentum distribution for pions
18846 50       npion=npion+1
18847 * (2) rapidity distribution in the cms frame
18848         ypion(iy)=ypion(iy)+1
18849        pxpion(iy)=pxpion(iy)+p(1,i)/e(I)
18850        go TO 20
18851 * calculate rapidity and transverse energy distribution for baryons
18852 200      npr=npr+1  
18853                 pxpro(iy)=pxpro(iy)+p(1,I)/E(I)
18854                  ypr(iy)=ypr(iy)+1.
18855         go to 20
18856 400     nkaon=nkaon+1  
18857                  ykaon(iy)=ykaon(iy)+1.
18858                 pxkaon(iy)=pxkaon(iy)+p(1,i)/E(i)
18859 20      CONTINUE
18860 C PRINT OUT NUCLEON'S TRANSVERSE MOMENTUM distribution
18861 c       write(1041,*)Nt
18862 c       write(1042,*)Nt
18863 c       write(1043,*)Nt
18864 c       write(1090,*)Nt
18865 c       write(1091,*)Nt
18866 c       write(1092,*)Nt
18867        do 3 npt=-10,10
18868        IF(ypr(npt).eq.0) go to 101
18869        pxpro(NPT)=-Pxpro(NPT)/ypr(NPT)
18870        DNUC=Pxpro(NPT)/SQRT(ypr(NPT))
18871 c       WRITE(1041,*)NPT*DY,Pxpro(NPT),DNUC
18872 c print pion's transverse momentum distribution
18873 101       IF(ypion(npt).eq.0) go to 102
18874        pxpion(NPT)=-pxpion(NPT)/ypion(NPT)
18875        DNUCp=pxpion(NPT)/SQRT(ypion(NPT))
18876 c       WRITE(1042,*)NPT*DY,Pxpion(NPT),DNUCp
18877 c kaons
18878 102       IF(ykaon(npt).eq.0) go to 3
18879        pxkaon(NPT)=-pxkaon(NPT)/ykaon(NPT)
18880        DNUCk=pxkaon(NPT)/SQRT(ykaon(NPT))
18881 c       WRITE(1043,*)NPT*DY,Pxkaon(NPT),DNUCk
18882 3       CONTINUE
18883 ********************************
18884 * OUTPUT PION AND PROTON RAPIDITY DISTRIBUTIONS
18885        DO 1001 M=-LY,LY
18886 * PROTONS
18887        DYPR=0
18888        IF(YPR(M).NE.0)DYPR=SQRT(YPR(M))/FLOAT(NRUN)/DY
18889        YPR(M)=YPR(M)/FLOAT(NRUN)/DY
18890 c       WRITE(1090,'(E11.3,2X,E11.3,2X,E11.3)')m*DY,YPR(M),DYPR
18891 * PIONS
18892        DYPION=0
18893        IF(YPION(M).NE.0)DYPION=SQRT(YPION(M))/FLOAT(NRUN)/DY
18894        YPION(M)=YPION(M)/FLOAT(NRUN)/DY
18895 c       WRITE(1091,'(E11.3,2X,E11.3,2X,E11.3)')m*DY,YPION(M),DYPION
18896 * KAONS
18897        DYKAON=0
18898        IF(YKAON(M).NE.0)DYKAON=SQRT(YKAON(M))/FLOAT(NRUN)/DY
18899        YKAON(M)=YKAON(M)/FLOAT(NRUN)/DY
18900 c       WRITE(1092,'(E11.3,2X,E11.3,2X,E11.3)')m*DY,YKAON(M),DYKAON
18901  1001 CONTINUE
18902        return
18903        end
18904 cbali1/16/99
18905 ********************************************
18906 * Purpose: pp_bar annihilation cross section as a functon of their cms energy
18907 c      real*4 function xppbar(srt)
18908       real function xppbar(srt)
18909 *  srt    = DSQRT(s) in GeV                                                   *
18910 *  xppbar = pp_bar annihilation cross section in mb                           *
18911 *                                                    
18912 *  Reference: G.J. Wang, R. Bellwied, C. Pruneau and G. Welke
18913 *             Proc. of the 14th Winter Workshop on Nuclear Dynamics, 
18914 *             Snowbird, Utah 31, Eds. W. Bauer and H.G. Ritter 
18915 *             (Plenum Publishing, 1998)                             *
18916 *
18917 ******************************************
18918        Parameter (pmass=0.9383,xmax=400.)
18919       SAVE   
18920 * Note:
18921 * (1) we introduce a new parameter xmax=400 mb:
18922 *     the maximum annihilation xsection 
18923 * there are shadowing effects in pp_bar annihilation, with this parameter
18924 * we can probably look at these effects  
18925 * (2) Calculate p(lab) from srt [GeV], since the formular in the 
18926 * reference applies only to the case of a p_bar on a proton at rest
18927 * Formula used: srt**2=2.*pmass*(pmass+sqrt(pmass**2+plab**2))
18928        xppbar=1.e-06
18929        plab2=(srt**2/(2.*pmass)-pmass)**2-pmass**2
18930        if(plab2.gt.0)then
18931            plab=sqrt(plab2)
18932        xppbar=67./(plab**0.7)
18933        if(xppbar.gt.xmax)xppbar=xmax
18934        endif
18935          return
18936       END
18937 cbali1/16/99 end
18938 **********************************
18939 cbali2/6/99
18940 ********************************************
18941 * Purpose: To generate randomly the no. of pions in the final 
18942 *          state of pp_bar annihilation according to a statistical 
18943 *          model by using of the rejection method.  
18944 cbz2/25/99
18945 c      real*4 function pbarfs(srt,npion,iseed)
18946       subroutine pbarfs(srt,npion,iseed)
18947 cbz2/25/99end
18948 * Quantities: 
18949 *  srt: DSQRT(s) in GeV                                                    *
18950 *  npion: No. of pions produced in the annihilation of ppbar at srt        *
18951 *  nmax=6, cutoff of the maximum no. of n the code can handle     
18952 *                                             
18953 *  Reference: C.M. Ko and R. Yuan, Phys. Lett. B192 (1987) 31      *
18954 *
18955 ******************************************
18956        parameter (pimass=0.140,pi=3.1415926) 
18957        Dimension factor(6),pnpi(6) 
18958       COMMON/RNDF77/NSEED
18959 cc      SAVE /RNDF77/
18960       SAVE   
18961 C the factorial coefficients in the pion no. distribution 
18962 * from n=2 to 6 calculated use the formula in the reference
18963        factor(2)=1.
18964        factor(3)=1.17e-01
18965        factor(4)=3.27e-03
18966        factor(5)=3.58e-05
18967        factor(6)=1.93e-07
18968        ene=(srt/pimass)**3/(6.*pi**2)
18969 c the relative probability from n=2 to 6
18970        do 1001 n=2,6 
18971            pnpi(n)=ene**n*factor(n)
18972  1001   continue
18973 c find the maximum of the probabilities, I checked a 
18974 c Fortan manual: max() returns the maximum value of 
18975 c the same type as in the argument list
18976        pmax=max(pnpi(2),pnpi(3),pnpi(4),pnpi(5),pnpi(6))
18977 c randomly generate n between 2 and 6
18978        ntry=0
18979  10    npion=2+int(5*RANART(NSEED))
18980 clin-4/2008 check bounds:
18981        if(npion.gt.6) goto 10
18982        thisp=pnpi(npion)/pmax  
18983        ntry=ntry+1 
18984 c decide whether to take this npion according to the distribution
18985 c using rejection method.
18986        if((thisp.lt.RANART(NSEED)).and.(ntry.le.20)) go to 10
18987 c now take the last generated npion and return
18988        return
18989        END
18990 **********************************
18991 cbali2/6/99 end
18992 cbz3/9/99 kkbar
18993 cbali3/5/99
18994 ******************************************
18995 * purpose: Xsection for K+ K- to pi+ pi-
18996 c      real*4 function xkkpi(srt)
18997 *  srt    = DSQRT(s) in GeV                                  *
18998 *  xkkpi   = xsection in mb obtained from
18999 *           the detailed balance                             *
19000 * ******************************************
19001 c          parameter (pimass=0.140,aka=0.498)
19002 c       xkkpi=1.e-08 
19003 c       ppi2=(srt/2)**2-pimass**2
19004 c       pk2=(srt/2)**2-aka**2
19005 c       if(ppi2.le.0.or.pk2.le.0)return
19006 cbz3/9/99 kkbar
19007 c       xkkpi=ppi2/pk2*pipik(srt)
19008 c       xkkpi=9.0 / 4.0 * ppi2/pk2*pipik(srt)
19009 c        xkkpi = 2.0 * xkkpi
19010 cbz3/9/99 kkbar end
19011 
19012 cbz3/9/99 kkbar
19013 c       end
19014 c       return
19015 c        END
19016 cbz3/9/99 kkbar end
19017 
19018 cbali3/5/99 end
19019 cbz3/9/99 kkbar end
19020 
19021 cbz3/9/99 kkbar
19022 *****************************
19023 * purpose: Xsection for K+ K- to pi+ pi-
19024       SUBROUTINE XKKANN(SRT, XSK1, XSK2, XSK3, XSK4, XSK5,
19025      &     XSK6, XSK7, XSK8, XSK9, XSK10, XSK11, SIGK, rrkk)
19026 *  srt    = DSQRT(s) in GeV                                       *
19027 *  xsk1   = annihilation into pi pi                               *
19028 *  xsk2   = annihilation into pi rho (shifted to XKKSAN)         *
19029 *  xsk3   = annihilation into pi omega (shifted to XKKSAN)       *
19030 *  xsk4   = annihilation into pi eta                              *
19031 *  xsk5   = annihilation into rho rho                             *
19032 *  xsk6   = annihilation into rho omega                           *
19033 *  xsk7   = annihilation into rho eta (shifted to XKKSAN)        *
19034 *  xsk8   = annihilation into omega omega                         *
19035 *  xsk9   = annihilation into omega eta (shifted to XKKSAN)      *
19036 *  xsk10  = annihilation into eta eta                             *
19037 *  sigk   = xsection in mb obtained from                          *
19038 *           the detailed balance                                  *
19039 * ***************************
19040       PARAMETER  (MAXSTR=150001, MAXX=20,  MAXZ=24)
19041           PARAMETER (AKA=0.498, PIMASS=0.140, RHOM = 0.770, 
19042      &     OMEGAM = 0.7819, ETAM = 0.5473, APHI=1.02)
19043       COMMON  /AA/ R(3,MAXSTR)
19044 cc      SAVE /AA/
19045       COMMON /BB/  P(3,MAXSTR)
19046 cc      SAVE /BB/
19047       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
19048 cc      SAVE /EE/
19049       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
19050      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
19051      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
19052 cc      SAVE /DD/
19053       SAVE   
19054 
19055         S = SRT ** 2
19056        SIGK = 1.E-08
19057         XSK1 = 0.0
19058         XSK2 = 0.0
19059         XSK3 = 0.0
19060         XSK4 = 0.0
19061         XSK5 = 0.0
19062         XSK6 = 0.0
19063         XSK7 = 0.0
19064         XSK8 = 0.0
19065         XSK9 = 0.0
19066         XSK10 = 0.0
19067         XSK11 = 0.0
19068 
19069         XPION0 = PIPIK(SRT)
19070 c.....take into account both K+ and K0
19071         XPION0 = 2.0 * XPION0
19072         PI2 = S * (S - 4.0 * AKA ** 2)
19073          if(PI2 .le. 0.0)return
19074 
19075         XM1 = PIMASS
19076         XM2 = PIMASS
19077         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19078         IF (PF2 .GT. 0.0) THEN
19079            XSK1 = 9.0 / 4.0 * PF2 / PI2 * XPION0
19080         END IF
19081 
19082 clin-8/28/00 (pi eta) eta -> K+K- is assumed the same as pi pi -> K+K-:
19083         XM1 = PIMASS
19084         XM2 = ETAM
19085         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19086         IF (PF2 .GT. 0.0) THEN
19087            XSK4 = 3.0 / 4.0 * PF2 / PI2 * XPION0
19088         END IF
19089 
19090         XM1 = ETAM
19091         XM2 = ETAM
19092         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19093         IF (PF2 .GT. 0.0) THEN
19094            XSK10 = 1.0 / 4.0 * PF2 / PI2 * XPION0
19095         END IF
19096 
19097         XPION0 = rrkk
19098 
19099 clin-11/07/00: (pi eta) (rho omega) -> K* Kbar (or K*bar K) instead to K Kbar:
19100 c        XM1 = PIMASS
19101 c        XM2 = RHOM
19102 c        PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19103 c        IF (PF2 .GT. 0.0) THEN
19104 c           XSK2 = 27.0 / 4.0 * PF2 / PI2 * XPION0
19105 c        END IF
19106 
19107 c        XM1 = PIMASS
19108 c        XM2 = OMEGAM
19109 c        PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19110 c        IF (PF2 .GT. 0.0) THEN
19111 c           XSK3 = 9.0 / 4.0 * PF2 / PI2 * XPION0
19112 c        END IF
19113 
19114         XM1 = RHOM
19115         XM2 = RHOM
19116         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19117         IF (PF2 .GT. 0.0) THEN
19118            XSK5 = 81.0 / 4.0 * PF2 / PI2 * XPION0
19119         END IF
19120 
19121         XM1 = RHOM
19122         XM2 = OMEGAM
19123         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19124         IF (PF2 .GT. 0.0) THEN
19125            XSK6 = 27.0 / 4.0 * PF2 / PI2 * XPION0
19126         END IF
19127 
19128 c        XM1 = RHOM
19129 c        XM2 = ETAM
19130 c        PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19131 c        IF (PF2 .GT. 0.0) THEN
19132 c           XSK7 = 9.0 / 4.0 * PF2 / PI2 * XPION0
19133 c        END IF
19134 
19135         XM1 = OMEGAM
19136         XM2 = OMEGAM
19137         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19138         IF (PF2 .GT. 0.0) THEN
19139            XSK8 = 9.0 / 4.0 * PF2 / PI2 * XPION0
19140         END IF
19141 
19142 c        XM1 = OMEGAM
19143 c        XM2 = ETAM
19144 c        PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19145 c        IF (PF2 .GT. 0.0) THEN
19146 c           XSK9 = 3.0 / 4.0 * PF2 / PI2 * XPION0
19147 c        END IF
19148 
19149 c* K+ + K- --> phi
19150           fwdp = 1.68*(aphi**2-4.*aka**2)**1.5/6./aphi/aphi     
19151 
19152 clin-9/2012: check argument in sqrt():
19153           scheck=srt**2-4.0*aka**2
19154           if(scheck.le.0) then
19155              write(99,*) 'scheck47: ', scheck
19156              stop
19157           endif
19158           pkaon=0.5*sqrt(scheck)
19159 c          pkaon=0.5*sqrt(srt**2-4.0*aka**2)
19160 
19161           XSK11 = 30.*3.14159*0.1973**2*(aphi*fwdp)**2/
19162      &             ((srt**2-aphi**2)**2+(aphi*fwdp)**2)/pkaon**2
19163 c
19164         SIGK = XSK1 + XSK2 + XSK3 + XSK4 + XSK5 + 
19165      &     XSK6 + XSK7 + XSK8 + XSK9 + XSK10 + XSK11
19166 
19167        RETURN
19168         END
19169 cbz3/9/99 kkbar end
19170 
19171 *****************************
19172 * purpose: Xsection for Phi + B 
19173        SUBROUTINE XphiB(LB1, LB2, EM1, EM2, SRT,
19174      &                  XSK1, XSK2, XSK3, XSK4, XSK5, SIGP)
19175 c
19176 * ***************************
19177         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
19178      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
19179           PARAMETER (AKA=0.498, ALA = 1.1157, PIMASS=0.140, APHI=1.02)
19180         parameter (arho=0.77)
19181       SAVE   
19182 
19183        SIGP = 1.E-08
19184         XSK1 = 0.0
19185         XSK2 = 0.0
19186         XSK3 = 0.0
19187         XSK4 = 0.0
19188         XSK5 = 0.0
19189         XSK6 = 0.0
19190           srrt = srt - (em1+em2)
19191 
19192 c* phi + N(D) -> elastic scattering
19193 c            XSK1 = 0.56  !! mb
19194 c  !! mb  (photo-production xsecn used)
19195             XSK1 = 8.00
19196 c
19197 c* phi + N(D) -> pi + N
19198         IF (srt  .GT. (ap1+amn)) THEN
19199              XSK2 = 0.0235*srrt**(-0.519) 
19200         END IF
19201 c
19202 c* phi + N(D) -> pi + D
19203         IF (srt  .GT. (ap1+am0)) THEN
19204             if(srrt .lt. 0.7)then
19205              XSK3 = 0.0119*srrt**(-0.534)
19206             else
19207              XSK3 = 0.0130*srrt**(-0.304)
19208             endif      
19209         END IF
19210 c
19211 c* phi + N(D) -> rho + N
19212         IF (srt  .GT. (arho+amn)) THEN
19213            if(srrt .lt. 0.7)then
19214              XSK4 = 0.0166*srrt**(-0.786)
19215             else
19216              XSK4 = 0.0189*srrt**(-0.277)
19217             endif
19218         END IF
19219 c
19220 c* phi + N(D) -> rho + D   (same as pi + D)
19221         IF (srt  .GT. (arho+am0)) THEN
19222             if(srrt .lt. 0.7)then
19223              XSK5 = 0.0119*srrt**(-0.534)
19224             else
19225              XSK5 = 0.0130*srrt**(-0.304)
19226             endif      
19227         END IF
19228 c
19229 c* phi + N -> K+ + La
19230        IF( (lb1.ge.1.and.lb1.le.2) .or. (lb2.ge.1.and.lb2.le.2) )THEN
19231         IF (srt  .GT. (aka+ala)) THEN
19232            XSK6 = 1.715/((srrt+3.508)**2-12.138)  
19233         END IF
19234        END IF
19235         SIGP = XSK1 + XSK2 + XSK3 + XSK4 + XSK5 + XSK6
19236        RETURN
19237         END
19238 c
19239 **********************************
19240 *
19241         SUBROUTINE CRPHIB(PX,PY,PZ,SRT,I1,I2,
19242      &     XSK1, XSK2, XSK3, XSK4, XSK5, SIGP, IBLOCK)
19243 *
19244 *     PURPOSE:                                                         *
19245 *             DEALING WITH PHI + N(D) --> pi+N(D), rho+N(D),  K+ + La
19246 *     QUANTITIES:                                                      *
19247 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
19248 *           SRT      - SQRT OF S                                       *
19249 *           IBLOCK   - INFORMATION about the reaction channel          *
19250 *                
19251 *             iblock   - 20  elastic
19252 *             iblock   - 221  K+ formation
19253 *             iblock   - 223  others
19254 **********************************
19255         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
19256      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,
19257      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
19258         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,ARHO=0.77)
19259         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
19260         COMMON /AA/ R(3,MAXSTR)
19261 cc      SAVE /AA/
19262         COMMON /BB/ P(3,MAXSTR)
19263 cc      SAVE /BB/
19264         COMMON /CC/ E(MAXSTR)
19265 cc      SAVE /CC/
19266         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
19267 cc      SAVE /EE/
19268         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
19269 cc      SAVE /input1/
19270       COMMON/RNDF77/NSEED
19271 cc      SAVE /RNDF77/
19272       SAVE   
19273 c
19274        PX0=PX
19275        PY0=PY
19276        PZ0=PZ
19277        IBLOCK=223
19278 c
19279         X1 = RANART(NSEED) * SIGP
19280         XSK2 = XSK1 + XSK2
19281         XSK3 = XSK2 + XSK3
19282         XSK4 = XSK3 + XSK4
19283         XSK5 = XSK4 + XSK5
19284 c
19285 c  !! elastic scatt.
19286         IF (X1 .LE. XSK1) THEN
19287            iblock=20
19288            GOTO 100
19289         ELSE IF (X1 .LE. XSK2) THEN
19290            LB(I1) = 3 + int(3 * RANART(NSEED))
19291            LB(I2) = 1 + int(2 * RANART(NSEED))
19292            E(I1) = AP1
19293            E(I2) = AMN
19294            GOTO 100
19295         ELSE IF (X1 .LE. XSK3) THEN
19296            LB(I1) = 3 + int(3 * RANART(NSEED))
19297            LB(I2) = 6 + int(4 * RANART(NSEED))
19298            E(I1) = AP1
19299            E(I2) = AM0
19300            GOTO 100
19301         ELSE IF (X1 .LE. XSK4) THEN
19302            LB(I1) = 25 + int(3 * RANART(NSEED))
19303            LB(I2) = 1 + int(2 * RANART(NSEED))
19304            E(I1) = ARHO
19305            E(I2) = AMN
19306            GOTO 100
19307         ELSE IF (X1 .LE. XSK5) THEN
19308            LB(I1) = 25 + int(3 * RANART(NSEED))
19309            LB(I2) = 6 + int(4 * RANART(NSEED))
19310            E(I1) = ARHO
19311            E(I2) = AM0
19312            GOTO 100
19313         ELSE 
19314            LB(I1) = 23
19315            LB(I2) = 14
19316            E(I1) = AKA
19317            E(I2) = ALA
19318           IBLOCK=221
19319          ENDIF
19320  100    CONTINUE
19321       EM1=E(I1)
19322       EM2=E(I2)
19323 *-----------------------------------------------------------------------
19324 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
19325 * ENERGY CONSERVATION
19326           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
19327      1                - 4.0 * (EM1*EM2)**2
19328           IF(PR2.LE.0.)PR2=1.E-08
19329           PR=SQRT(PR2)/(2.*SRT)
19330 * WE ASSUME AN ISOTROPIC ANGULAR DISTRIBUTION IN THE CMS 
19331           C1   = 1.0 - 2.0 * RANART(NSEED)
19332           T1   = 2.0 * PI * RANART(NSEED)
19333       S1   = SQRT( 1.0 - C1**2 )
19334       CT1  = COS(T1)
19335       ST1  = SIN(T1)
19336 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
19337       PZ   = PR * C1
19338       PX   = PR * S1*CT1 
19339       PY   = PR * S1*ST1
19340 * ROTATE IT 
19341        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
19342       RETURN
19343       END
19344 c
19345 *****************************
19346 * purpose: Xsection for Phi + B 
19347 c!! in fm^2
19348       SUBROUTINE pibphi(srt,lb1,lb2,em1,em2,Xphi,xphin) 
19349 c
19350 *      phi + N(D) <- pi + N
19351 *      phi + N(D) <- pi + D
19352 *      phi + N(D) <- rho + N
19353 *      phi + N(D) <- rho + D   (same as pi + D)
19354 c
19355 * ***************************
19356         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
19357      1  AMP=0.93828,AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
19358           PARAMETER (AKA=0.498, ALA = 1.1157, PIMASS=0.140, APHI=1.02)
19359         parameter (arho=0.77)
19360       SAVE   
19361 
19362        Xphi = 0.0
19363        xphin = 0.0
19364        xphid = 0.0
19365 c
19366        if( (lb1.ge.3.and.lb1.le.5) .or.
19367      &     (lb2.ge.3.and.lb2.le.5) )then
19368 c
19369        if( (iabs(lb1).ge.1.and.iabs(lb1).le.2) .or.
19370      &     (iabs(lb2).ge.1.and.iabs(lb2).le.2) )then
19371 c* phi + N <- pi + N
19372         IF (srt  .GT. (aphi+amn)) THEN
19373              srrt = srt - (aphi+amn)
19374              sig = 0.0235*srrt**(-0.519) 
19375           xphin=sig*1.*(srt**2-(aphi+amn)**2)*
19376      &           (srt**2-(aphi-amn)**2)/(srt**2-(em1+em2)**2)/
19377      &           (srt**2-(em1-em2)**2)
19378         END IF
19379 c* phi + D <- pi + N
19380         IF (srt  .GT. (aphi+am0)) THEN
19381              srrt = srt - (aphi+am0)
19382              sig = 0.0235*srrt**(-0.519) 
19383           xphid=sig*4.*(srt**2-(aphi+am0)**2)*
19384      &           (srt**2-(aphi-am0)**2)/(srt**2-(em1+em2)**2)/
19385      &           (srt**2-(em1-em2)**2)
19386         END IF
19387        else
19388 c* phi + N <- pi + D
19389         IF (srt  .GT. (aphi+amn)) THEN
19390              srrt = srt - (aphi+amn)
19391             if(srrt .lt. 0.7)then
19392              sig = 0.0119*srrt**(-0.534)
19393             else
19394              sig = 0.0130*srrt**(-0.304)
19395             endif      
19396           xphin=sig*(1./4.)*(srt**2-(aphi+amn)**2)*
19397      &           (srt**2-(aphi-amn)**2)/(srt**2-(em1+em2)**2)/
19398      &           (srt**2-(em1-em2)**2)
19399         END IF
19400 c* phi + D <- pi + D
19401         IF (srt  .GT. (aphi+am0)) THEN
19402              srrt = srt - (aphi+am0)
19403              if(srrt .lt. 0.7)then
19404              sig = 0.0119*srrt**(-0.534)
19405             else
19406              sig = 0.0130*srrt**(-0.304)
19407             endif      
19408           xphid=sig*1.*(srt**2-(aphi+am0)**2)*
19409      &           (srt**2-(aphi-am0)**2)/(srt**2-(em1+em2)**2)/
19410      &           (srt**2-(em1-em2)**2)
19411         END IF
19412        endif
19413 c
19414 c
19415 C** for rho + N(D) colln
19416 c
19417        else
19418 c
19419        if( (iabs(lb1).ge.1.and.iabs(lb1).le.2) .or.
19420      &     (iabs(lb2).ge.1.and.iabs(lb2).le.2) )then
19421 c
19422 c* phi + N <- rho + N
19423         IF (srt  .GT. (aphi+amn)) THEN
19424              srrt = srt - (aphi+amn)
19425            if(srrt .lt. 0.7)then
19426              sig = 0.0166*srrt**(-0.786)
19427             else
19428              sig = 0.0189*srrt**(-0.277)
19429             endif
19430           xphin=sig*(1./3.)*(srt**2-(aphi+amn)**2)*
19431      &           (srt**2-(aphi-amn)**2)/(srt**2-(em1+em2)**2)/
19432      &           (srt**2-(em1-em2)**2)
19433         END IF
19434 c* phi + D <- rho + N
19435         IF (srt  .GT. (aphi+am0)) THEN
19436              srrt = srt - (aphi+am0)
19437            if(srrt .lt. 0.7)then
19438              sig = 0.0166*srrt**(-0.786)
19439             else
19440              sig = 0.0189*srrt**(-0.277)
19441             endif
19442           xphid=sig*(4./3.)*(srt**2-(aphi+am0)**2)*
19443      &           (srt**2-(aphi-am0)**2)/(srt**2-(em1+em2)**2)/
19444      &           (srt**2-(em1-em2)**2)
19445         END IF
19446        else
19447 c* phi + N <- rho + D  (same as pi+D->phi+N)
19448         IF (srt  .GT. (aphi+amn)) THEN
19449              srrt = srt - (aphi+amn)
19450             if(srrt .lt. 0.7)then
19451              sig = 0.0119*srrt**(-0.534)
19452             else
19453              sig = 0.0130*srrt**(-0.304)
19454             endif      
19455           xphin=sig*(1./12.)*(srt**2-(aphi+amn)**2)*
19456      &           (srt**2-(aphi-amn)**2)/(srt**2-(em1+em2)**2)/
19457      &           (srt**2-(em1-em2)**2)
19458         END IF
19459 c* phi + D <- rho + D  (same as pi+D->phi+D)
19460         IF (srt  .GT. (aphi+am0)) THEN
19461              srrt = srt - (aphi+am0)
19462              if(srrt .lt. 0.7)then
19463              sig = 0.0119*srrt**(-0.534)
19464             else
19465              sig = 0.0130*srrt**(-0.304)
19466             endif      
19467           xphid=sig*(1./3.)*(srt**2-(aphi+am0)**2)*
19468      &           (srt**2-(aphi-am0)**2)/(srt**2-(em1+em2)**2)/
19469      &           (srt**2-(em1-em2)**2)
19470         END IF
19471        endif
19472         END IF
19473 c   !! in fm^2
19474          xphin = xphin/10.
19475 c   !! in fm^2
19476          xphid = xphid/10.
19477          Xphi = xphin + xphid
19478 
19479        RETURN
19480         END
19481 c
19482 *****************************
19483 * purpose: Xsection for phi +M to K+K etc
19484       SUBROUTINE PHIMES(I1, I2, SRT, XSK1, XSK2, XSK3, XSK4, XSK5,
19485      1     XSK6, XSK7, SIGPHI)
19486 
19487 *     QUANTITIES:                                                      *
19488 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
19489 *           SRT      - SQRT OF S                                       *
19490 *           IBLOCK   - THE INFORMATION BACK                            *
19491 *                      223 --> phi destruction
19492 *                      20 -->  elastic
19493 **********************************
19494         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
19495      1  AMP=0.93828,AP1=0.13496,
19496      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
19497         PARAMETER  (AKA=0.498, AKS=0.895, AOMEGA=0.7819,
19498      3               ARHO=0.77, APHI=1.02)
19499         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
19500         PARAMETER  (MAXX=20,  MAXZ=24)
19501         COMMON /AA/ R(3,MAXSTR)
19502 cc      SAVE /AA/
19503         COMMON /BB/ P(3,MAXSTR)
19504 cc      SAVE /BB/
19505         COMMON /CC/ E(MAXSTR)
19506 cc      SAVE /CC/
19507       COMMON  /DD/      RHO(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
19508      &                     RHOP(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ),
19509      &                     RHON(-MAXX:MAXX,-MAXX:MAXX,-MAXZ:MAXZ)
19510 cc      SAVE /DD/
19511         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
19512 cc      SAVE /EE/
19513       SAVE   
19514 
19515         S = SRT ** 2
19516        SIGPHI = 1.E-08
19517         XSK1 = 0.0
19518         XSK2 = 0.0
19519         XSK3 = 0.0
19520         XSK4 = 0.0
19521         XSK5 = 0.0
19522         XSK6 = 0.0
19523         XSK7 = 0.0
19524          em1 = E(i1)
19525          em2 = E(i2)
19526          LB1 = LB(i1)
19527          LB2 = LB(i2)
19528          akap = aka
19529 c******
19530 c
19531 c   !! mb, elastic
19532          XSK1 = 5.0
19533          
19534 clin-9/2012: check argument in sqrt():
19535          scheck=(S-(em1+em2)**2)*(S-(em1-em2)**2)
19536          if(scheck.le.0) then
19537             write(99,*) 'scheck48: ', scheck
19538             stop
19539          endif
19540          pii=sqrt(scheck)
19541 c           pii = sqrt((S-(em1+em2)**2)*(S-(em1-em2)**2))
19542 
19543 * phi + K(-bar) channel
19544        if( lb1.eq.23.or.lb2.eq.23 .or. lb1.eq.21.or.lb2.eq.21 )then
19545           if(srt .gt. (ap1+akap))then
19546 c             XSK2 = 2.5  
19547            pff = sqrt((S-(ap1+akap)**2)*(S-(ap1-akap)**2))
19548            XSK2 = 195.639*pff/pii/32./pi/S 
19549           endif
19550           if(srt .gt. (arho+akap))then
19551 c              XSK3 = 3.5  
19552            pff = sqrt((S-(arho+akap)**2)*(S-(arho-akap)**2))
19553            XSK3 = 526.702*pff/pii/32./pi/S 
19554           endif
19555           if(srt .gt. (aomega+akap))then
19556 c               XSK4 = 3.5 
19557            pff = sqrt((S-(aomega+akap)**2)*(S-(aomega-akap)**2))
19558            XSK4 = 355.429*pff/pii/32./pi/S 
19559           endif
19560           if(srt .gt. (ap1+aks))then
19561 c           XSK5 = 15.0  
19562            pff = sqrt((S-(ap1+aks)**2)*(S-(ap1-aks)**2))
19563            XSK5 = 2047.042*pff/pii/32./pi/S 
19564           endif
19565           if(srt .gt. (arho+aks))then
19566 c            XSK6 = 3.5 
19567            pff = sqrt((S-(arho+aks)**2)*(S-(arho-aks)**2))
19568            XSK6 = 1371.257*pff/pii/32./pi/S 
19569           endif
19570           if(srt .gt. (aomega+aks))then
19571 c            XSK7 = 3.5 
19572            pff = sqrt((S-(aomega+aks)**2)*(S-(aomega-aks)**2))
19573            XSK7 = 482.292*pff/pii/32./pi/S 
19574           endif
19575 c
19576        elseif( iabs(lb1).eq.30.or.iabs(lb2).eq.30 )then
19577 * phi + K*(-bar) channel
19578 c
19579           if(srt .gt. (ap1+akap))then
19580 c             XSK2 = 3.5  
19581            pff = sqrt((S-(ap1+akap)**2)*(S-(ap1-akap)**2))
19582            XSK2 = 372.378*pff/pii/32./pi/S 
19583           endif
19584           if(srt .gt. (arho+akap))then
19585 c              XSK3 = 9.0  
19586            pff = sqrt((S-(arho+akap)**2)*(S-(arho-akap)**2))
19587            XSK3 = 1313.960*pff/pii/32./pi/S 
19588           endif
19589           if(srt .gt. (aomega+akap))then
19590 c               XSK4 = 6.5 
19591            pff = sqrt((S-(aomega+akap)**2)*(S-(aomega-akap)**2))
19592            XSK4 = 440.558*pff/pii/32./pi/S 
19593           endif
19594           if(srt .gt. (ap1+aks))then
19595 c           XSK5 = 30.0 !wrong  
19596            pff = sqrt((S-(ap1+aks)**2)*(S-(ap1-aks)**2))
19597            XSK5 = 1496.692*pff/pii/32./pi/S 
19598           endif
19599           if(srt .gt. (arho+aks))then
19600 c            XSK6 = 9.0 
19601            pff = sqrt((S-(arho+aks)**2)*(S-(arho-aks)**2))
19602            XSK6 = 6999.840*pff/pii/32./pi/S 
19603           endif
19604           if(srt .gt. (aomega+aks))then
19605 c            XSK7 = 15.0 
19606            pff = sqrt((S-(aomega+aks)**2)*(S-(aomega-aks)**2))
19607            XSK7 = 1698.903*pff/pii/32./pi/S 
19608           endif
19609        else
19610 c
19611 * phi + rho(pi,omega) channel
19612 c
19613            srr1 = em1+em2
19614          if(srt .gt. (akap+akap))then
19615           srrt = srt - srr1
19616 cc          if(srrt .lt. 0.3)then
19617           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
19618           XSK2 = 1.69/(srrt**0.141 - 0.407)
19619           else
19620           XSK2 = 3.74 + 0.008*srrt**1.9
19621           endif                 
19622          endif
19623          if(srt .gt. (akap+aks))then
19624           srr2 = akap+aks
19625           srr = amax1(srr1,srr2)
19626           srrt = srt - srr
19627 cc          if(srrt .lt. 0.3)then
19628           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
19629           XSK3 = 1.69/(srrt**0.141 - 0.407)
19630           else
19631           XSK3 = 3.74 + 0.008*srrt**1.9
19632           endif
19633          endif
19634          if(srt .gt. (aks+aks))then
19635           srr2 = aks+aks
19636           srr = amax1(srr1,srr2)
19637           srrt = srt - srr
19638 cc          if(srrt .lt. 0.3)then
19639           if(srrt .lt. 0.3 .and. srrt .gt. 0.01)then
19640           XSK4 = 1.69/(srrt**0.141 - 0.407)
19641           else
19642           XSK4 = 3.74 + 0.008*srrt**1.9
19643           endif
19644          endif
19645 c          xsk2 = amin1(20.,xsk2)
19646 c          xsk3 = amin1(20.,xsk3)
19647 c          xsk4 = amin1(20.,xsk4)
19648       endif
19649 
19650         SIGPHI = XSK1 + XSK2 + XSK3 + XSK4 + XSK5 + XSK6 + XSK7
19651 
19652        RETURN
19653        END
19654 
19655 **********************************
19656 *     PURPOSE:                                                         *
19657 *             DEALING WITH phi+M  scatt.
19658 *
19659        SUBROUTINE CRPHIM(PX,PY,PZ,SRT,I1,I2,
19660      &  XSK1, XSK2, XSK3, XSK4, XSK5, XSK6, SIGPHI, IKKG, IKKL, IBLOCK)
19661 *
19662 *     QUANTITIES:                                                      *
19663 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
19664 *           SRT      - SQRT OF S                                       *
19665 *           IBLOCK   - THE INFORMATION BACK                            *
19666 *                      20 -->  elastic
19667 *                      223 --> phi + pi(rho,omega)
19668 *                      224 --> phi + K -> K + pi(rho,omega)
19669 *                      225 --> phi + K -> K* + pi(rho,omega)
19670 *                      226 --> phi + K* -> K + pi(rho,omega)
19671 *                      227 --> phi + K* -> K* + pi(rho,omega)
19672 **********************************
19673         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
19674      1  AMP=0.93828,AP1=0.13496,ARHO=0.77,AOMEGA=0.7819,
19675      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
19676         PARAMETER    (AKA=0.498,AKS=0.895)
19677         parameter   (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
19678         COMMON /AA/ R(3,MAXSTR)
19679 cc      SAVE /AA/
19680         COMMON /BB/ P(3,MAXSTR)
19681 cc      SAVE /BB/
19682         COMMON /CC/ E(MAXSTR)
19683 cc      SAVE /CC/
19684         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
19685 cc      SAVE /EE/
19686         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
19687 cc      SAVE /input1/
19688       COMMON/RNDF77/NSEED
19689 cc      SAVE /RNDF77/
19690       SAVE   
19691 c
19692        PX0=PX
19693        PY0=PY
19694        PZ0=PZ
19695          LB1 = LB(i1)
19696          LB2 = LB(i2)
19697 
19698         X1 = RANART(NSEED) * SIGPHI
19699         XSK2 = XSK1 + XSK2
19700         XSK3 = XSK2 + XSK3
19701         XSK4 = XSK3 + XSK4
19702         XSK5 = XSK4 + XSK5
19703         XSK6 = XSK5 + XSK6
19704         IF (X1 .LE. XSK1) THEN
19705 c        !! elastic scatt
19706            IBLOCK=20
19707            GOTO 100
19708         ELSE
19709 c
19710 *phi + (K,K*)-bar
19711        if( lb1.eq.23.or.lb1.eq.21.or.iabs(lb1).eq.30 .OR.
19712      &     lb2.eq.23.or.lb2.eq.21.or.iabs(lb2).eq.30 )then
19713 c
19714              if(lb1.eq.23.or.lb2.eq.23)then
19715                IKKL=1
19716                IBLOCK=224
19717                iad1 = 23
19718                iad2 = 30
19719               elseif(lb1.eq.30.or.lb2.eq.30)then
19720                IKKL=0
19721                IBLOCK=226
19722                iad1 = 23
19723                iad2 = 30
19724              elseif(lb1.eq.21.or.lb2.eq.21)then
19725                IKKL=1
19726                IBLOCK=124
19727                iad1 = 21
19728                iad2 = -30
19729 c         !! -30
19730              else
19731                IKKL=0
19732                IBLOCK=126
19733                iad1 = 21
19734                iad2 = -30
19735               endif
19736          IF (X1 .LE. XSK2) THEN
19737            LB(I1) = 3 + int(3 * RANART(NSEED))
19738            LB(I2) = iad1
19739            E(I1) = AP1
19740            E(I2) = AKA
19741            IKKG = 1
19742            GOTO 100
19743         ELSE IF (X1 .LE. XSK3) THEN
19744            LB(I1) = 25 + int(3 * RANART(NSEED))
19745            LB(I2) = iad1
19746            E(I1) = ARHO
19747            E(I2) = AKA
19748            IKKG = 1
19749            GOTO 100
19750         ELSE IF (X1 .LE. XSK4) THEN
19751            LB(I1) = 28
19752            LB(I2) = iad1
19753            E(I1) = AOMEGA
19754            E(I2) = AKA
19755            IKKG = 1
19756            GOTO 100
19757         ELSE IF (X1 .LE. XSK5) THEN
19758            LB(I1) = 3 + int(3 * RANART(NSEED))
19759            LB(I2) = iad2
19760            E(I1) = AP1
19761            E(I2) = AKS
19762            IKKG = 0
19763            IBLOCK=IBLOCK+1
19764            GOTO 100
19765         ELSE IF (X1 .LE. XSK6) THEN
19766            LB(I1) = 25 + int(3 * RANART(NSEED))
19767            LB(I2) = iad2
19768            E(I1) = ARHO
19769            E(I2) = AKS
19770            IKKG = 0
19771            IBLOCK=IBLOCK+1
19772            GOTO 100
19773         ELSE 
19774            LB(I1) = 28
19775            LB(I2) = iad2
19776            E(I1) = AOMEGA
19777            E(I2) = AKS
19778            IKKG = 0
19779            IBLOCK=IBLOCK+1
19780            GOTO 100
19781          ENDIF
19782        else
19783 c      !! phi destruction via (pi,rho,omega)
19784           IBLOCK=223
19785 *phi + pi(rho,omega)
19786          IF (X1 .LE. XSK2) THEN
19787            LB(I1) = 23
19788            LB(I2) = 21
19789            E(I1) = AKA
19790            E(I2) = AKA
19791            IKKG = 2
19792            IKKL = 0
19793            GOTO 100
19794         ELSE IF (X1 .LE. XSK3) THEN
19795            LB(I1) = 23
19796 c           LB(I2) = 30
19797            LB(I2) = -30
19798 clin-2/10/03 currently take XSK3 to be the sum of KK*bar & KbarK*:
19799            if(RANART(NSEED).le.0.5) then
19800               LB(I1) = 21
19801               LB(I2) = 30
19802            endif
19803               
19804            E(I1) = AKA
19805            E(I2) = AKS
19806            IKKG = 1
19807            IKKL = 0
19808            GOTO 100
19809         ELSE IF (X1 .LE. XSK4) THEN
19810            LB(I1) = 30
19811 c           LB(I2) = 30
19812            LB(I2) = -30
19813            E(I1) = AKS
19814            E(I2) = AKS
19815            IKKG = 0
19816            IKKL = 0
19817            GOTO 100
19818          ENDIF
19819        endif
19820          ENDIF
19821 *
19822 100    CONTINUE
19823        EM1=E(I1)
19824        EM2=E(I2)
19825 
19826 *-----------------------------------------------------------------------
19827 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
19828 * ENERGY CONSERVATION
19829           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
19830      1                - 4.0 * (EM1*EM2)**2
19831           IF(PR2.LE.0.)PR2=1.E-08
19832           PR=SQRT(PR2)/(2.*SRT)
19833 * WE ASSUME AN ISOTROPIC ANGULAR DISTRIBUTION IN THE CMS 
19834           C1   = 1.0 - 2.0 * RANART(NSEED)
19835           T1   = 2.0 * PI * RANART(NSEED)
19836       S1   = SQRT( 1.0 - C1**2 )
19837       CT1  = COS(T1)
19838       ST1  = SIN(T1)
19839 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
19840       PZ   = PR * C1
19841       PX   = PR * S1*CT1 
19842       PY   = PR * S1*ST1
19843 * ROTATE IT 
19844        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
19845       RETURN
19846       END
19847 **********************************
19848 **********************************
19849 cbz3/9/99 khyperon
19850 *************************************
19851 * purpose: Xsection for K+Y ->  piN                                       *
19852 *          Xsection for K+Y-bar ->  piN-bar   !! sp03/29/01               *
19853 *
19854         SUBROUTINE XKHYPE(I1, I2, SRT, XKY1, XKY2, XKY3, XKY4, XKY5,
19855      &     XKY6, XKY7, XKY8, XKY9, XKY10, XKY11, XKY12, XKY13,
19856      &     XKY14, XKY15, XKY16, XKY17, SIGK)
19857 c      subroutine xkhype(i1, i2, srt, sigk)
19858 *  srt    = DSQRT(s) in GeV                                               *
19859 *  xkkpi   = xsection in mb obtained from                                 *
19860 *           the detailed balance                                          *
19861 * ***********************************
19862         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
19863      1  AMP=0.93828,AP1=0.13496,AMRHO=0.769,AMOMGA=0.782,APHI=1.02,
19864      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
19865           parameter (pimass=0.140, AMETA = 0.5473, aka=0.498,
19866      &     aml=1.116,ams=1.193, AM1440 = 1.44, AM1535 = 1.535)
19867         COMMON  /EE/ID(MAXSTR), LB(MAXSTR)
19868 cc      SAVE /EE/
19869       SAVE   
19870 
19871         S = SRT ** 2
19872        SIGK=1.E-08 
19873         XKY1 = 0.0
19874         XKY2 = 0.0
19875         XKY3 = 0.0
19876         XKY4 = 0.0
19877         XKY5 = 0.0
19878         XKY6 = 0.0
19879         XKY7 = 0.0
19880         XKY8 = 0.0
19881         XKY9 = 0.0
19882         XKY10 = 0.0
19883         XKY11 = 0.0
19884         XKY12 = 0.0
19885         XKY13 = 0.0
19886         XKY14 = 0.0
19887         XKY15 = 0.0
19888         XKY16 = 0.0
19889         XKY17 = 0.0
19890 
19891         LB1 = LB(I1)
19892         LB2 = LB(I2)
19893         IF (iabs(LB1) .EQ. 14 .OR. iabs(LB2) .EQ. 14) THEN
19894            XKAON0 = PNLKA(SRT)
19895            XKAON0 = 2.0 * XKAON0
19896            PI2 = (S - (AML + AKA) ** 2) * (S - (AML - AKA) ** 2)
19897         ELSE
19898            XKAON0 = PNSKA(SRT)
19899            XKAON0 = 2.0 * XKAON0
19900            PI2 = (S - (AMS + AKA) ** 2) * (S - (AMS - AKA) ** 2)
19901         END IF
19902           if(PI2 .le. 0.0)return
19903 
19904         XM1 = PIMASS
19905         XM2 = AMP
19906         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19907         IF (PF2 .GT. 0.0) THEN
19908            XKY1 = 3.0 * PF2 / PI2 * XKAON0
19909         END IF
19910         
19911         XM1 = PIMASS
19912         XM2 = AM0
19913         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19914         IF (PF2 .GT. 0.0) THEN
19915            XKY2 = 12.0 * PF2 / PI2 * XKAON0
19916         END IF
19917         
19918         XM1 = PIMASS
19919         XM2 = AM1440
19920         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19921         IF (PF2 .GT. 0.0) THEN
19922            XKY3 = 3.0 * PF2 / PI2 * XKAON0
19923         END IF
19924         
19925         XM1 = PIMASS
19926         XM2 = AM1535
19927         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19928         IF (PF2 .GT. 0.0) THEN
19929            XKY4 = 3.0 * PF2 / PI2 * XKAON0
19930         END IF
19931         
19932         XM1 = AMRHO
19933         XM2 = AMP
19934         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19935         IF (PF2 .GT. 0.0) THEN
19936            XKY5 = 9.0 * PF2 / PI2 * XKAON0
19937         END IF
19938         
19939         XM1 = AMRHO
19940         XM2 = AM0
19941         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19942         IF (PF2 .GT. 0.0) THEN
19943            XKY6 = 36.0 * PF2 / PI2 * XKAON0
19944         END IF
19945         
19946         XM1 = AMRHO
19947         XM2 = AM1440
19948         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19949         IF (PF2 .GT. 0.0) THEN
19950            XKY7 = 9.0 * PF2 / PI2 * XKAON0
19951         END IF
19952         
19953         XM1 = AMRHO
19954         XM2 = AM1535
19955         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19956         IF (PF2 .GT. 0.0) THEN
19957            XKY8 = 9.0 * PF2 / PI2 * XKAON0
19958         END IF
19959         
19960         XM1 = AMOMGA
19961         XM2 = AMP
19962         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19963         IF (PF2 .GT. 0.0) THEN
19964            XKY9 = 3.0 * PF2 / PI2 * XKAON0
19965         END IF
19966         
19967         XM1 = AMOMGA
19968         XM2 = AM0
19969         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19970         IF (PF2 .GT. 0.0) THEN
19971            XKY10 = 12.0 * PF2 / PI2 * XKAON0
19972         END IF
19973         
19974         XM1 = AMOMGA
19975         XM2 = AM1440
19976         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19977         IF (PF2 .GT. 0.0) THEN
19978            XKY11 = 3.0 * PF2 / PI2 * XKAON0
19979         END IF
19980         
19981         XM1 = AMOMGA
19982         XM2 = AM1535
19983         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19984         IF (PF2 .GT. 0.0) THEN
19985            XKY12 = 3.0 * PF2 / PI2 * XKAON0
19986         END IF
19987         
19988         XM1 = AMETA
19989         XM2 = AMP
19990         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19991         IF (PF2 .GT. 0.0) THEN
19992            XKY13 = 1.0 * PF2 / PI2 * XKAON0
19993         END IF
19994         
19995         XM1 = AMETA
19996         XM2 = AM0
19997         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
19998         IF (PF2 .GT. 0.0) THEN
19999            XKY14 = 4.0 * PF2 / PI2 * XKAON0
20000         END IF
20001         
20002         XM1 = AMETA
20003         XM2 = AM1440
20004         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
20005         IF (PF2 .GT. 0.0) THEN
20006            XKY15 = 1.0 * PF2 / PI2 * XKAON0
20007         END IF
20008         
20009         XM1 = AMETA
20010         XM2 = AM1535
20011         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
20012         IF (PF2 .GT. 0.0) THEN
20013            XKY16 = 1.0 * PF2 / PI2 * XKAON0
20014         END IF
20015 
20016 csp11/21/01  K+ + La --> phi + N 
20017         if(lb1.eq.14 .or. lb2.eq.14)then
20018          if(srt .gt. (aphi+amn))then
20019            srrt = srt - (aphi+amn)
20020            sig = 1.715/((srrt+3.508)**2-12.138)
20021          XM1 = AMN
20022          XM2 = APHI
20023          PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
20024 c     ! fm^-1
20025          XKY17 = 3.0 * PF2 / PI2 * SIG/10.
20026         endif
20027        endif
20028 csp11/21/01  end 
20029 c
20030 
20031        IF ((iabs(LB1) .GE. 15 .AND. iabs(LB1) .LE. 17) .OR. 
20032      &     (iabs(LB2) .GE. 15 .AND. iabs(LB2) .LE. 17)) THEN
20033            DDF = 3.0
20034            XKY1 = XKY1 / DDF
20035            XKY2 = XKY2 / DDF
20036            XKY3 = XKY3 / DDF
20037            XKY4 = XKY4 / DDF
20038            XKY5 = XKY5 / DDF
20039            XKY6 = XKY6 / DDF
20040            XKY7 = XKY7 / DDF
20041            XKY8 = XKY8 / DDF
20042            XKY9 = XKY9 / DDF
20043            XKY10 = XKY10/ DDF
20044            XKY11 = XKY11 / DDF
20045            XKY12 = XKY12 / DDF
20046            XKY13 = XKY13 / DDF
20047            XKY14 = XKY14 / DDF
20048            XKY15 = XKY15 / DDF
20049            XKY16 = XKY16 / DDF
20050         END IF
20051         
20052         SIGK = XKY1 + XKY2 + XKY3 + XKY4 +
20053      &       XKY5 + XKY6 + XKY7 + XKY8 +
20054      &       XKY9 + XKY10 + XKY11 + XKY12 +
20055      &       XKY13 + XKY14 + XKY15 + XKY16 + XKY17
20056 
20057        RETURN
20058        END
20059 
20060 C*******************************  
20061       BLOCK DATA PPBDAT 
20062     
20063       parameter (AMP=0.93828,AMN=0.939457,
20064      1     AM0=1.232,AM1440 = 1.44, AM1535 = 1.535)
20065 
20066 c     to give default values to parameters for BbarB production from mesons
20067       COMMON/ppbmas/niso(15),nstate,ppbm(15,2),thresh(15),weight(15)
20068 cc      SAVE /ppbmas/
20069       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20070 cc      SAVE /ppb1/
20071       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20072 cc      SAVE /ppmm/
20073       SAVE   
20074 c     thresh(i) gives the mass thresh for final channel i:
20075       DATA thresh/1.87656,1.877737,1.878914,2.17028,
20076      1     2.171457,2.37828,2.379457,2.464,2.47328,2.474457,
20077      2     2.672,2.767,2.88,2.975,3.07/
20078 c     ppbm(i,j=1,2) gives masses for the two final baryons of channel i,
20079 c     with j=1 for the lighter baryon:
20080       DATA (ppbm(i,1),i=1,15)/amp,amp,amn,amp,amn,amp,amn,
20081      1     am0,amp,amn,am0,am0,am1440,am1440,am1535/
20082       DATA (ppbm(i,2),i=1,15)/amp,amn,amn,am0,am0,am1440,am1440,
20083      1     am0,am1535,am1535,am1440,am1535,am1440,am1535,am1535/
20084 c     factr2(i) gives weights for producing i pions from ppbar annihilation:
20085       DATA factr2/0,1,1.17e-01,3.27e-03,3.58e-05,1.93e-07/
20086 c     niso(i) gives the degeneracy factor for final channel i:
20087       DATA niso/1,2,1,16,16,4,4,64,4,4,32,32,4,8,4/
20088 
20089       END   
20090 
20091 
20092 *****************************************
20093 * get the number of BbarB states available for mm collisions of energy srt 
20094       subroutine getnst(srt)
20095 *  srt    = DSQRT(s) in GeV                                                   *
20096 *****************************************
20097       parameter (pimass=0.140,pi=3.1415926)
20098       COMMON/ppbmas/niso(15),nstate,ppbm(15,2),thresh(15),weight(15)
20099 cc      SAVE /ppbmas/
20100       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20101 cc      SAVE /ppb1/
20102       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20103 cc      SAVE /ppmm/
20104       SAVE   
20105 
20106       s=srt**2
20107       nstate=0
20108       wtot=0.
20109       if(srt.le.thresh(1)) return
20110       do 1001 i=1,15
20111          weight(i)=0.
20112          if(srt.gt.thresh(i)) nstate=i
20113  1001 continue
20114       do 1002 i=1,nstate
20115          pf2=(s-(ppbm(i,1)+ppbm(i,2))**2)
20116      1        *(s-(ppbm(i,1)-ppbm(i,2))**2)/4/s
20117          weight(i)=pf2*niso(i)
20118          wtot=wtot+weight(i)
20119  1002 continue
20120       ene=(srt/pimass)**3/(6.*pi**2)
20121       fsum=factr2(2)+factr2(3)*ene+factr2(4)*ene**2
20122      1     +factr2(5)*ene**3+factr2(6)*ene**4
20123 
20124       return
20125       END
20126 
20127 *****************************************
20128 * for pion+pion-->Bbar B                                                      *
20129 c      real*4 function ppbbar(srt)
20130       real function ppbbar(srt)
20131 *****************************************
20132       parameter (pimass=0.140,arho=0.77,aomega=0.782)
20133       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20134 cc      SAVE /ppb1/
20135       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20136 cc      SAVE /ppmm/
20137       SAVE   
20138 
20139       sppb2p=xppbar(srt)*factr2(2)/fsum
20140       pi2=(s-4*pimass**2)/4
20141       ppbbar=4./9.*sppb2p/pi2*wtot
20142 
20143       return
20144       END
20145 
20146 *****************************************
20147 * for pion+rho-->Bbar B                                                      *
20148 c      real*4 function prbbar(srt)
20149       real function prbbar(srt)
20150 *****************************************
20151       parameter (pimass=0.140,arho=0.77,aomega=0.782)
20152       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20153 cc      SAVE /ppb1/
20154       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20155 cc      SAVE /ppmm/
20156       SAVE   
20157 
20158       sppb3p=xppbar(srt)*factr2(3)*ene/fsum
20159       pi2=(s-(pimass+arho)**2)*(s-(pimass-arho)**2)/4/s
20160       prbbar=4./27.*sppb3p/pi2*wtot
20161 
20162       return
20163       END
20164 
20165 *****************************************
20166 * for rho+rho-->Bbar B                                                      *
20167 c      real*4 function rrbbar(srt)
20168       real function rrbbar(srt)
20169 *****************************************
20170       parameter (pimass=0.140,arho=0.77,aomega=0.782)
20171       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20172 cc      SAVE /ppb1/
20173       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20174 cc      SAVE /ppmm/
20175       SAVE   
20176 
20177       sppb4p=xppbar(srt)*factr2(4)*ene**2/fsum
20178       pi2=(s-4*arho**2)/4
20179       rrbbar=4./81.*(sppb4p/2)/pi2*wtot
20180 
20181       return
20182       END
20183 
20184 *****************************************
20185 * for pi+omega-->Bbar B                                                      *
20186 c      real*4 function pobbar(srt)
20187       real function pobbar(srt)
20188 *****************************************
20189       parameter (pimass=0.140,arho=0.77,aomega=0.782)
20190       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20191 cc      SAVE /ppb1/
20192       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20193 cc      SAVE /ppmm/
20194       SAVE   
20195 
20196       sppb4p=xppbar(srt)*factr2(4)*ene**2/fsum
20197       pi2=(s-(pimass+aomega)**2)*(s-(pimass-aomega)**2)/4/s
20198       pobbar=4./9.*(sppb4p/2)/pi2*wtot
20199 
20200       return
20201       END
20202 
20203 *****************************************
20204 * for rho+omega-->Bbar B                                                      *
20205 c      real*4 function robbar(srt)
20206       real function robbar(srt)
20207 *****************************************
20208       parameter (pimass=0.140,arho=0.77,aomega=0.782)
20209       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20210 cc      SAVE /ppb1/
20211       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20212 cc      SAVE /ppmm/
20213       SAVE   
20214 
20215       sppb5p=xppbar(srt)*factr2(5)*ene**3/fsum
20216       pi2=(s-(arho+aomega)**2)*(s-(arho-aomega)**2)/4/s
20217       robbar=4./27.*sppb5p/pi2*wtot
20218 
20219       return
20220       END
20221 
20222 *****************************************
20223 * for omega+omega-->Bbar B                                                    *
20224 c      real*4 function oobbar(srt)
20225       real function oobbar(srt)
20226 *****************************************
20227       parameter (pimass=0.140,arho=0.77,aomega=0.782)
20228       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20229 cc      SAVE /ppb1/
20230       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20231 cc      SAVE /ppmm/
20232       SAVE   
20233 
20234       sppb6p=xppbar(srt)*factr2(6)*ene**4/fsum
20235       pi2=(s-4*aomega**2)/4
20236       oobbar=4./9.*sppb6p/pi2*wtot
20237 
20238       return
20239       END
20240 
20241 *****************************************
20242 * Generate final states for mm-->Bbar B                                       *
20243       SUBROUTINE bbarfs(lbb1,lbb2,ei1,ei2,iblock,iseed)
20244 *****************************************
20245       COMMON/ppbmas/niso(15),nstate,ppbm(15,2),thresh(15),weight(15)
20246 cc      SAVE /ppbmas/
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       COMMON/RNDF77/NSEED
20252 cc      SAVE /RNDF77/
20253       SAVE   
20254 
20255 c     determine which final BbarB channel occurs:
20256       rd=RANART(NSEED)
20257       wsum=0.
20258       do 1001 i=1,nstate
20259          wsum=wsum+weight(i)
20260          if(rd.le.(wsum/wtot)) then
20261             ifs=i
20262             ei1=ppbm(i,1)
20263             ei2=ppbm(i,2)
20264             goto 10
20265          endif
20266  1001 continue
20267  10   continue
20268 
20269 c1    pbar p
20270       if(ifs.eq.1) then
20271          iblock=1801
20272          lbb1=-1
20273          lbb2=1
20274       elseif(ifs.eq.2) then
20275 c2    pbar n
20276          if(RANART(NSEED).le.0.5) then
20277             iblock=18021
20278             lbb1=-1
20279             lbb2=2
20280 c2    nbar p
20281          else
20282             iblock=18022
20283             lbb1=1
20284             lbb2=-2
20285          endif
20286 c3    nbar n
20287       elseif(ifs.eq.3) then
20288          iblock=1803
20289          lbb1=-2
20290          lbb2=2
20291 c4&5  (pbar nbar) Delta, (p n) anti-Delta
20292       elseif(ifs.eq.4.or.ifs.eq.5) then
20293          rd=RANART(NSEED)
20294          if(rd.le.0.5) then
20295 c     (pbar nbar) Delta
20296             if(ifs.eq.4) then
20297                iblock=18041
20298                lbb1=-1
20299             else
20300                iblock=18051
20301                lbb1=-2
20302             endif
20303             rd2=RANART(NSEED)
20304             if(rd2.le.0.25) then
20305                lbb2=6
20306             elseif(rd2.le.0.5) then
20307                lbb2=7
20308             elseif(rd2.le.0.75) then
20309                lbb2=8
20310             else
20311                lbb2=9
20312             endif
20313          else
20314 c     (p n) anti-Delta
20315             if(ifs.eq.4) then
20316                iblock=18042
20317                lbb1=1
20318             else
20319                iblock=18052
20320                lbb1=2
20321             endif
20322             rd2=RANART(NSEED)
20323             if(rd2.le.0.25) then
20324                lbb2=-6
20325             elseif(rd2.le.0.5) then
20326                lbb2=-7
20327             elseif(rd2.le.0.75) then
20328                lbb2=-8
20329             else
20330                lbb2=-9
20331             endif
20332          endif
20333 c6&7  (pbar nbar) N*(1440), (p n) anti-N*(1440)
20334       elseif(ifs.eq.6.or.ifs.eq.7) then
20335          rd=RANART(NSEED)
20336          if(rd.le.0.5) then
20337 c     (pbar nbar) N*(1440)
20338             if(ifs.eq.6) then
20339                iblock=18061
20340                lbb1=-1
20341             else
20342                iblock=18071
20343                lbb1=-2
20344             endif
20345             rd2=RANART(NSEED)
20346             if(rd2.le.0.5) then
20347                lbb2=10
20348             else
20349                lbb2=11
20350             endif
20351          else
20352 c     (p n) anti-N*(1440)
20353             if(ifs.eq.6) then
20354                iblock=18062
20355                lbb1=1
20356             else
20357                iblock=18072
20358                lbb1=2
20359             endif
20360             rd2=RANART(NSEED)
20361             if(rd2.le.0.5) then
20362                lbb2=-10
20363             else
20364                lbb2=-11
20365             endif
20366          endif
20367 c8    Delta anti-Delta
20368       elseif(ifs.eq.8) then
20369          iblock=1808
20370          rd1=RANART(NSEED)
20371          if(rd1.le.0.25) then
20372             lbb1=6
20373          elseif(rd1.le.0.5) then
20374             lbb1=7
20375          elseif(rd1.le.0.75) then
20376             lbb1=8
20377          else
20378             lbb1=9
20379          endif
20380          rd2=RANART(NSEED)
20381          if(rd2.le.0.25) then
20382             lbb2=-6
20383          elseif(rd2.le.0.5) then
20384             lbb2=-7
20385          elseif(rd2.le.0.75) then
20386             lbb2=-8
20387          else
20388             lbb2=-9
20389          endif
20390 c9&10 (pbar nbar) N*(1535), (p n) anti-N*(1535)
20391       elseif(ifs.eq.9.or.ifs.eq.10) then
20392          rd=RANART(NSEED)
20393          if(rd.le.0.5) then
20394 c     (pbar nbar) N*(1440)
20395             if(ifs.eq.9) then
20396                iblock=18091
20397                lbb1=-1
20398             else
20399                iblock=18101
20400                lbb1=-2
20401             endif
20402             rd2=RANART(NSEED)
20403             if(rd2.le.0.5) then
20404                lbb2=12
20405             else
20406                lbb2=13
20407             endif
20408          else
20409 c     (p n) anti-N*(1535)
20410             if(ifs.eq.9) then
20411                iblock=18092
20412                lbb1=1
20413             else
20414                iblock=18102
20415                lbb1=2
20416             endif
20417             rd2=RANART(NSEED)
20418             if(rd2.le.0.5) then
20419                lbb2=-12
20420             else
20421                lbb2=-13
20422             endif
20423          endif
20424 c11&12 anti-Delta N*, Delta anti-N*
20425       elseif(ifs.eq.11.or.ifs.eq.12) then
20426          rd=RANART(NSEED)
20427          if(rd.le.0.5) then
20428 c     anti-Delta N*
20429             rd1=RANART(NSEED)
20430             if(rd1.le.0.25) then
20431                lbb1=-6
20432             elseif(rd1.le.0.5) then
20433                lbb1=-7
20434             elseif(rd1.le.0.75) then
20435                lbb1=-8
20436             else
20437                lbb1=-9
20438             endif
20439             if(ifs.eq.11) then
20440                iblock=18111
20441                rd2=RANART(NSEED)
20442                if(rd2.le.0.5) then
20443                   lbb2=10
20444                else
20445                   lbb2=11
20446                endif
20447             else
20448                iblock=18121
20449                rd2=RANART(NSEED)
20450                if(rd2.le.0.5) then
20451                   lbb2=12
20452                else
20453                   lbb2=13
20454                endif
20455             endif
20456          else
20457 c     Delta anti-N*
20458             rd1=RANART(NSEED)
20459             if(rd1.le.0.25) then
20460                lbb1=6
20461             elseif(rd1.le.0.5) then
20462                lbb1=7
20463             elseif(rd1.le.0.75) then
20464                lbb1=8
20465             else
20466                lbb1=9
20467             endif
20468             if(ifs.eq.11) then
20469                iblock=18112
20470                rd2=RANART(NSEED)
20471                if(rd2.le.0.5) then
20472                   lbb2=-10
20473                else
20474                   lbb2=-11
20475                endif
20476             else
20477                iblock=18122
20478                rd2=RANART(NSEED)
20479                if(rd2.le.0.5) then
20480                   lbb2=-12
20481                else
20482                   lbb2=-13
20483                endif
20484             endif
20485          endif
20486 c13   N*(1440) anti-N*(1440)
20487       elseif(ifs.eq.13) then
20488          iblock=1813
20489          rd1=RANART(NSEED)
20490          if(rd1.le.0.5) then
20491             lbb1=10
20492          else
20493             lbb1=11
20494          endif
20495          rd2=RANART(NSEED)
20496          if(rd2.le.0.5) then
20497             lbb2=-10
20498          else
20499             lbb2=-11
20500          endif
20501 c14   anti-N*(1440) N*(1535), N*(1440) anti-N*(1535)
20502       elseif(ifs.eq.14) then
20503          rd=RANART(NSEED)
20504          if(rd.le.0.5) then
20505 c     anti-N*(1440) N*(1535)
20506             iblock=18141
20507             rd1=RANART(NSEED)
20508             if(rd1.le.0.5) then
20509                lbb1=-10
20510             else
20511                lbb1=-11
20512             endif
20513             rd2=RANART(NSEED)
20514             if(rd2.le.0.5) then
20515                lbb2=12
20516             else
20517                lbb2=13
20518             endif
20519          else
20520 c     N*(1440) anti-N*(1535)
20521             iblock=18142
20522             rd1=RANART(NSEED)
20523             if(rd1.le.0.5) then
20524                lbb1=10
20525             else
20526                lbb1=11
20527             endif
20528             rd2=RANART(NSEED)
20529             if(rd2.le.0.5) then
20530                lbb2=-12
20531             else
20532                lbb2=-13
20533             endif
20534          endif
20535 c15   N*(1535) anti-N*(1535)
20536       elseif(ifs.eq.15) then
20537          iblock=1815
20538          rd1=RANART(NSEED)
20539          if(rd1.le.0.5) then
20540             lbb1=12
20541          else
20542             lbb1=13
20543          endif
20544          rd2=RANART(NSEED)
20545          if(rd2.le.0.5) then
20546             lbb2=-12
20547          else
20548             lbb2=-13
20549          endif
20550       else
20551       endif
20552 
20553       RETURN
20554       END
20555 
20556 *****************************************
20557 * for pi pi <-> rho rho cross sections
20558         SUBROUTINE spprr(lb1,lb2,srt)
20559         parameter (arho=0.77)
20560       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20561 cc      SAVE /ppb1/
20562       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20563 cc      SAVE /ppmm/
20564       SAVE   
20565 
20566         pprr=0.
20567         if((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5)) then
20568 c     for now, rho mass taken to be the central value in these two processes
20569            if(srt.gt.(2*arho)) pprr=ptor(srt)
20570         elseif((lb1.ge.25.and.lb1.le.27).and.(lb2.ge.25.and.lb2.le.27)) 
20571      1          then
20572            pprr=rtop(srt)
20573         endif
20574 c
20575         return
20576         END
20577 
20578 *****************************************
20579 * for pi pi -> rho rho, determined from detailed balance
20580       real function ptor(srt)
20581 *****************************************
20582       parameter (pimass=0.140,arho=0.77)
20583       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20584 cc      SAVE /ppb1/
20585       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20586 cc      SAVE /ppmm/
20587       SAVE   
20588 
20589       s2=srt**2
20590       ptor=9*(s2-4*arho**2)/(s2-4*pimass**2)*rtop(srt)
20591 
20592       return
20593       END
20594 
20595 *****************************************
20596 * for rho rho -> pi pi, assumed a constant cross section (in mb)
20597       real function rtop(srt)
20598 *****************************************
20599       rtop=5.
20600       return
20601       END
20602 
20603 *****************************************
20604 * for pi pi <-> rho rho final states
20605       SUBROUTINE pi2ro2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20606       PARAMETER (MAXSTR=150001)
20607       PARAMETER (AP1=0.13496,AP2=0.13957)
20608       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20609 cc      SAVE /EE/
20610       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20611 cc      SAVE /ppb1/
20612       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20613 cc      SAVE /ppmm/
20614       COMMON/RNDF77/NSEED
20615 cc      SAVE /RNDF77/
20616       SAVE   
20617 
20618       if((lb(i1).ge.3.and.lb(i1).le.5)
20619      1     .and.(lb(i2).ge.3.and.lb(i2).le.5)) then
20620          iblock=1850
20621          ei1=0.77
20622          ei2=0.77
20623 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20624 c     thus the cross sections used are considered as the isospin-averaged ones.
20625          lbb1=25+int(3*RANART(NSEED))
20626          lbb2=25+int(3*RANART(NSEED))
20627       elseif((lb(i1).ge.25.and.lb(i1).le.27)
20628      1     .and.(lb(i2).ge.25.and.lb(i2).le.27)) then
20629          iblock=1851
20630          lbb1=3+int(3*RANART(NSEED))
20631          lbb2=3+int(3*RANART(NSEED))
20632          ei1=ap2
20633          ei2=ap2
20634          if(lbb1.eq.4) ei1=ap1
20635          if(lbb2.eq.4) ei2=ap1
20636       endif
20637 
20638       return
20639       END
20640 
20641 *****************************************
20642 * for pi pi <-> eta eta cross sections
20643         SUBROUTINE sppee(lb1,lb2,srt)
20644         parameter (ETAM=0.5475)
20645       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20646 cc      SAVE /ppb1/
20647       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20648 cc      SAVE /ppmm/
20649       SAVE   
20650 
20651         ppee=0.
20652         if((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5)) then
20653            if(srt.gt.(2*ETAM)) ppee=ptoe(srt)
20654         elseif(lb1.eq.0.and.lb2.eq.0) then
20655            ppee=etop(srt)
20656         endif
20657 
20658         return
20659         END
20660 
20661 *****************************************
20662 * for pi pi -> eta eta, determined from detailed balance, spin-isospin averaged
20663       real function ptoe(srt)
20664 *****************************************
20665       parameter (pimass=0.140,ETAM=0.5475)
20666       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20667 cc      SAVE /ppb1/
20668       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20669 cc      SAVE /ppmm/
20670       SAVE   
20671 
20672       s2=srt**2
20673       ptoe=1./9.*(s2-4*etam**2)/(s2-4*pimass**2)*etop(srt)
20674 
20675       return
20676       END
20677 *****************************************
20678 * for eta eta -> pi pi, assumed a constant cross section (in mb)
20679       real function etop(srt)
20680 *****************************************
20681 
20682 c     eta equilibration:
20683 c     most important channel is found to be pi pi <-> pi eta, then
20684 c     rho pi <-> rho eta.
20685       etop=5.
20686       return
20687       END
20688 
20689 *****************************************
20690 * for pi pi <-> eta eta final states
20691       SUBROUTINE pi2et2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20692       PARAMETER (MAXSTR=150001)
20693       PARAMETER (AP1=0.13496,AP2=0.13957,ETAM=0.5475)
20694       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20695 cc      SAVE /EE/
20696       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20697 cc      SAVE /ppb1/
20698       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20699 cc      SAVE /ppmm/
20700       COMMON/RNDF77/NSEED
20701 cc      SAVE /RNDF77/
20702       SAVE   
20703 
20704       if((lb(i1).ge.3.and.lb(i1).le.5)
20705      1     .and.(lb(i2).ge.3.and.lb(i2).le.5)) then
20706          iblock=1860
20707          ei1=etam
20708          ei2=etam
20709 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20710 c     thus the cross sections used are considered as the isospin-averaged ones.
20711          lbb1=0
20712          lbb2=0
20713       elseif(lb(i1).eq.0.and.lb(i2).eq.0) then
20714          iblock=1861
20715          lbb1=3+int(3*RANART(NSEED))
20716          lbb2=3+int(3*RANART(NSEED))
20717          ei1=ap2
20718          ei2=ap2
20719          if(lbb1.eq.4) ei1=ap1
20720          if(lbb2.eq.4) ei2=ap1
20721       endif
20722 
20723       return
20724       END
20725 
20726 *****************************************
20727 * for pi pi <-> pi eta cross sections
20728         SUBROUTINE spppe(lb1,lb2,srt)
20729         parameter (pimass=0.140,ETAM=0.5475)
20730       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20731 cc      SAVE /ppb1/
20732       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20733 cc      SAVE /ppmm/
20734       SAVE   
20735 
20736         pppe=0.
20737         if((lb1.ge.3.and.lb1.le.5).and.(lb2.ge.3.and.lb2.le.5)) then
20738            if(srt.gt.(ETAM+pimass)) pppe=pptope(srt)
20739         elseif((lb1.ge.3.and.lb1.le.5).and.lb2.eq.0) then
20740            pppe=petopp(srt)
20741         elseif((lb2.ge.3.and.lb2.le.5).and.lb1.eq.0) then
20742            pppe=petopp(srt)
20743         endif
20744 
20745         return
20746         END
20747 
20748 *****************************************
20749 * for pi pi -> pi eta, determined from detailed balance, spin-isospin averaged
20750       real function pptope(srt)
20751 *****************************************
20752       parameter (pimass=0.140,ETAM=0.5475)
20753       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20754 cc      SAVE /ppb1/
20755       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20756 cc      SAVE /ppmm/
20757       SAVE   
20758 
20759       s2=srt**2
20760       pf2=(s2-(pimass+ETAM)**2)*(s2-(pimass-ETAM)**2)/2/sqrt(s2)
20761       pi2=(s2-4*pimass**2)*s2/2/sqrt(s2)
20762       pptope=1./3.*pf2/pi2*petopp(srt)
20763 
20764       return
20765       END
20766 *****************************************
20767 * for pi eta -> pi pi, assumed a constant cross section (in mb)
20768       real function petopp(srt)
20769 *****************************************
20770 
20771 c     eta equilibration:
20772       petopp=5.
20773       return
20774       END
20775 
20776 *****************************************
20777 * for pi pi <-> pi eta final states
20778       SUBROUTINE pi3eta(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20779       PARAMETER (MAXSTR=150001)
20780       PARAMETER (AP1=0.13496,AP2=0.13957,ETAM=0.5475)
20781       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20782 cc      SAVE /EE/
20783       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20784 cc      SAVE /ppb1/
20785       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20786 cc      SAVE /ppmm/
20787       COMMON/RNDF77/NSEED
20788 cc      SAVE /RNDF77/
20789       SAVE   
20790 
20791       if((lb(i1).ge.3.and.lb(i1).le.5)
20792      1     .and.(lb(i2).ge.3.and.lb(i2).le.5)) then
20793          iblock=1870
20794          ei1=ap2
20795          ei2=etam
20796 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20797 c     thus the cross sections used are considered as the isospin-averaged ones.
20798          lbb1=3+int(3*RANART(NSEED))
20799          if(lbb1.eq.4) ei1=ap1
20800          lbb2=0
20801       elseif((lb(i1).ge.3.and.lb(i1).le.5.and.lb(i2).eq.0).or.
20802      1        (lb(i2).ge.3.and.lb(i2).le.5.and.lb(i1).eq.0)) then
20803          iblock=1871
20804          lbb1=3+int(3*RANART(NSEED))
20805          lbb2=3+int(3*RANART(NSEED))
20806          ei1=ap2
20807          ei2=ap2
20808          if(lbb1.eq.4) ei1=ap1
20809          if(lbb2.eq.4) ei2=ap1
20810       endif
20811 
20812       return
20813       END
20814 
20815 *****************************************
20816 * for rho pi <-> rho eta cross sections
20817         SUBROUTINE srpre(lb1,lb2,srt)
20818         parameter (pimass=0.140,ETAM=0.5475,arho=0.77)
20819         common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20820 cc      SAVE /ppb1/
20821         common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20822 cc      SAVE /ppmm/
20823       SAVE   
20824 
20825         rpre=0.
20826         if(lb1.ge.25.and.lb1.le.27.and.lb2.ge.3.and.lb2.le.5) then
20827            if(srt.gt.(ETAM+arho)) rpre=rptore(srt)
20828         elseif(lb2.ge.25.and.lb2.le.27.and.lb1.ge.3.and.lb1.le.5) then
20829            if(srt.gt.(ETAM+arho)) rpre=rptore(srt)
20830         elseif(lb1.ge.25.and.lb1.le.27.and.lb2.eq.0) then
20831            if(srt.gt.(pimass+arho)) rpre=retorp(srt)
20832         elseif(lb2.ge.25.and.lb2.le.27.and.lb1.eq.0) then
20833            if(srt.gt.(pimass+arho)) rpre=retorp(srt)
20834         endif
20835 
20836         return
20837         END
20838 
20839 *****************************************
20840 * for rho pi->rho eta, determined from detailed balance, spin-isospin averaged
20841       real function rptore(srt)
20842 *****************************************
20843       parameter (pimass=0.140,ETAM=0.5475,arho=0.77)
20844       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20845 cc      SAVE /ppb1/
20846       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20847 cc      SAVE /ppmm/
20848       SAVE   
20849 
20850       s2=srt**2
20851       pf2=(s2-(arho+ETAM)**2)*(s2-(arho-ETAM)**2)/2/sqrt(s2)
20852       pi2=(s2-(arho+pimass)**2)*(s2-(arho-pimass)**2)/2/sqrt(s2)
20853       rptore=1./3.*pf2/pi2*retorp(srt)
20854 
20855       return
20856       END
20857 *****************************************
20858 * for rho eta -> rho pi, assumed a constant cross section (in mb)
20859       real function retorp(srt)
20860 *****************************************
20861 
20862 c     eta equilibration:
20863       retorp=5.
20864       return
20865       END
20866 
20867 *****************************************
20868 * for rho pi <-> rho eta final states
20869       SUBROUTINE rpiret(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20870       PARAMETER (MAXSTR=150001)
20871       PARAMETER (AP1=0.13496,AP2=0.13957,ETAM=0.5475,arho=0.77)
20872       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20873 cc      SAVE /EE/
20874       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20875 cc      SAVE /ppb1/
20876       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20877 cc      SAVE /ppmm/
20878       COMMON/RNDF77/NSEED
20879 cc      SAVE /RNDF77/
20880       SAVE   
20881 
20882       if((lb(i1).ge.25.and.lb(i1).le.27
20883      1     .and.lb(i2).ge.3.and.lb(i2).le.5).or.
20884      2     (lb(i1).ge.3.and.lb(i1).le.5
20885      3     .and.lb(i2).ge.25.and.lb(i2).le.27)) then
20886          iblock=1880
20887          ei1=arho
20888          ei2=etam
20889 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20890 c     thus the cross sections used are considered as the isospin-averaged ones.
20891          lbb1=25+int(3*RANART(NSEED))
20892          lbb2=0
20893       elseif((lb(i1).ge.25.and.lb(i1).le.27.and.lb(i2).eq.0).or.
20894      1        (lb(i2).ge.25.and.lb(i2).le.27.and.lb(i1).eq.0)) then
20895          iblock=1881
20896          lbb1=25+int(3*RANART(NSEED))
20897          lbb2=3+int(3*RANART(NSEED))
20898          ei1=arho
20899          ei2=ap2
20900          if(lbb2.eq.4) ei2=ap1
20901       endif
20902 
20903       return
20904       END
20905 
20906 *****************************************
20907 * for omega pi <-> omega eta cross sections
20908         SUBROUTINE sopoe(lb1,lb2,srt)
20909         parameter (ETAM=0.5475,aomega=0.782)
20910       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20911 cc      SAVE /ppb1/
20912       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20913 cc      SAVE /ppmm/
20914       SAVE   
20915 
20916         xopoe=0.
20917         if((lb1.eq.28.and.lb2.ge.3.and.lb2.le.5).or.
20918      1       (lb2.eq.28.and.lb1.ge.3.and.lb1.le.5)) then
20919            if(srt.gt.(aomega+ETAM)) xopoe=xop2oe(srt)
20920         elseif((lb1.eq.28.and.lb2.eq.0).or.
20921      1          (lb1.eq.0.and.lb2.eq.28)) then
20922            if(srt.gt.(aomega+ETAM)) xopoe=xoe2op(srt)
20923         endif
20924 
20925         return
20926         END
20927 
20928 *****************************************
20929 * for omega pi -> omega eta, 
20930 c     determined from detailed balance, spin-isospin averaged
20931       real function xop2oe(srt)
20932 *****************************************
20933       parameter (pimass=0.140,ETAM=0.5475,aomega=0.782)
20934       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20935 cc      SAVE /ppb1/
20936       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20937 cc      SAVE /ppmm/
20938       SAVE   
20939 
20940       s2=srt**2
20941       pf2=(s2-(aomega+ETAM)**2)*(s2-(aomega-ETAM)**2)/2/sqrt(s2)
20942       pi2=(s2-(aomega+pimass)**2)*(s2-(aomega-pimass)**2)/2/sqrt(s2)
20943       xop2oe=1./3.*pf2/pi2*xoe2op(srt)
20944 
20945       return
20946       END
20947 *****************************************
20948 * for omega eta -> omega pi, assumed a constant cross section (in mb)
20949       real function xoe2op(srt)
20950 *****************************************
20951 
20952 c     eta equilibration:
20953       xoe2op=5.
20954       return
20955       END
20956 
20957 *****************************************
20958 * for omega pi <-> omega eta final states
20959       SUBROUTINE opioet(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
20960       PARAMETER (MAXSTR=150001)
20961       PARAMETER (AP1=0.13496,AP2=0.13957,ETAM=0.5475,aomega=0.782)
20962       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
20963 cc      SAVE /EE/
20964       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20965 cc      SAVE /ppb1/
20966       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
20967 cc      SAVE /ppmm/
20968       COMMON/RNDF77/NSEED
20969 cc      SAVE /RNDF77/
20970       SAVE   
20971 
20972       if((lb(i1).ge.3.and.lb(i1).le.5.and.lb(i2).eq.28).or.
20973      1     (lb(i2).ge.3.and.lb(i2).le.5.and.lb(i1).eq.28)) then
20974          iblock=1890
20975          ei1=aomega
20976          ei2=etam
20977 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
20978 c     thus the cross sections used are considered as the isospin-averaged ones.
20979          lbb1=28
20980          lbb2=0
20981       elseif((lb(i1).eq.28.and.lb(i2).eq.0).or.
20982      1        (lb(i1).eq.0.and.lb(i2).eq.28)) then
20983          iblock=1891
20984          lbb1=28
20985          lbb2=3+int(3*RANART(NSEED))
20986          ei1=aomega
20987          ei2=ap2
20988          if(lbb2.eq.4) ei2=ap1
20989       endif
20990 
20991       return
20992       END
20993 
20994 *****************************************
20995 * for rho rho <-> eta eta cross sections
20996         SUBROUTINE srree(lb1,lb2,srt)
20997         parameter (ETAM=0.5475,arho=0.77)
20998       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
20999 cc      SAVE /ppb1/
21000       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
21001 cc      SAVE /ppmm/
21002       SAVE   
21003 
21004         rree=0.
21005         if(lb1.ge.25.and.lb1.le.27.and.
21006      1       lb2.ge.25.and.lb2.le.27) then
21007            if(srt.gt.(2*ETAM)) rree=rrtoee(srt)
21008         elseif(lb1.eq.0.and.lb2.eq.0) then
21009            if(srt.gt.(2*arho)) rree=eetorr(srt)
21010         endif
21011 
21012         return
21013         END
21014 
21015 *****************************************
21016 * for eta eta -> rho rho
21017 c     determined from detailed balance, spin-isospin averaged
21018       real function eetorr(srt)
21019 *****************************************
21020       parameter (ETAM=0.5475,arho=0.77)
21021       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
21022 cc      SAVE /ppb1/
21023       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
21024 cc      SAVE /ppmm/
21025       SAVE   
21026 
21027       s2=srt**2
21028       eetorr=81.*(s2-4*arho**2)/(s2-4*etam**2)*rrtoee(srt)
21029 
21030       return
21031       END
21032 *****************************************
21033 * for rho rho -> eta eta, assumed a constant cross section (in mb)
21034       real function rrtoee(srt)
21035 *****************************************
21036 
21037 c     eta equilibration:
21038       rrtoee=5.
21039       return
21040       END
21041 
21042 *****************************************
21043 * for rho rho <-> eta eta final states
21044       SUBROUTINE ro2et2(i1,i2,lbb1,lbb2,ei1,ei2,iblock,iseed)
21045       PARAMETER (MAXSTR=150001)
21046       parameter (ETAM=0.5475,arho=0.77)
21047       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
21048 cc      SAVE /EE/
21049       common/ppb1/ene,factr2(6),fsum,ppinnb,s,wtot
21050 cc      SAVE /ppb1/
21051       common/ppmm/pprr,ppee,pppe,rpre,xopoe,rree
21052 cc      SAVE /ppmm/
21053       COMMON/RNDF77/NSEED
21054 cc      SAVE /RNDF77/
21055       SAVE   
21056 
21057       if(lb(i1).ge.25.and.lb(i1).le.27.and.
21058      1     lb(i2).ge.25.and.lb(i2).le.27) then
21059          iblock=1895
21060          ei1=etam
21061          ei2=etam
21062 c     for now, we don't check isospin states(allowing pi+pi+ & pi0pi0 -> 2rho)
21063 c     thus the cross sections used are considered as the isospin-averaged ones.
21064          lbb1=0
21065          lbb2=0
21066       elseif(lb(i1).eq.0.and.lb(i2).eq.0) then
21067          iblock=1896
21068          lbb1=25+int(3*RANART(NSEED))
21069          lbb2=25+int(3*RANART(NSEED))
21070          ei1=arho
21071          ei2=arho
21072       endif
21073 
21074       return
21075       END
21076 
21077 *****************************
21078 * purpose: Xsection for K* Kbar or K*bar K to pi(eta) rho(omega)
21079       SUBROUTINE XKKSAN(i1,i2,SRT,SIGKS1,SIGKS2,SIGKS3,SIGKS4,SIGK,prkk)
21080 *  srt    = DSQRT(s) in GeV                                       *
21081 *  sigk   = xsection in mb obtained from                          *
21082 *           the detailed balance                                  *
21083 * ***************************
21084           PARAMETER (AKA=0.498, PIMASS=0.140, RHOM = 0.770,aks=0.895,
21085      & OMEGAM = 0.7819, ETAM = 0.5473)
21086       PARAMETER (MAXSTR=150001)
21087       COMMON  /CC/      E(MAXSTR)
21088 cc      SAVE /CC/
21089       SAVE   
21090 
21091         S = SRT ** 2
21092        SIGKS1 = 1.E-08
21093        SIGKS2 = 1.E-08
21094        SIGKS3 = 1.E-08
21095        SIGKS4 = 1.E-08
21096 
21097         XPION0 = prkk
21098 clin note that prkk is for pi (rho omega) -> K* Kbar (AND!) K*bar K:
21099         XPION0 = XPION0/2
21100 
21101 cc
21102 c        PI2 = (S - (aks + AKA) ** 2) * (S - (aks - AKA) ** 2)
21103         PI2 = (S - (e(i1) + e(i2)) ** 2) * (S - (e(i1) - e(i2)) ** 2)
21104         SIGK = 1.E-08
21105         if(PI2 .le. 0.0) return
21106 
21107         XM1 = PIMASS
21108         XM2 = RHOM
21109         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
21110         IF (PI2 .GT. 0.0 .AND. PF2 .GT. 0.0) THEN
21111            SIGKS1 = 27.0 / 4.0 * PF2 / PI2 * XPION0
21112         END IF
21113 
21114         XM1 = PIMASS
21115         XM2 = OMEGAM
21116         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
21117         IF (PI2 .GT. 0.0 .AND. PF2 .GT. 0.0) THEN
21118            SIGKS2 = 9.0 / 4.0 * PF2 / PI2 * XPION0
21119         END IF
21120 
21121         XM1 = RHOM
21122         XM2 = ETAM
21123         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
21124         IF (PF2 .GT. 0.0) THEN
21125            SIGKS3 = 9.0 / 4.0 * PF2 / PI2 * XPION0
21126         END IF
21127 
21128         XM1 = OMEGAM
21129         XM2 = ETAM
21130         PF2 = (S - (XM1 + XM2) ** 2) * (S - (XM1 - XM2) ** 2)
21131         IF (PF2 .GT. 0.0) THEN
21132            SIGKS4 = 3.0 / 4.0 * PF2 / PI2 * XPION0
21133         END IF
21134 
21135         SIGK=SIGKS1+SIGKS2+SIGKS3+SIGKS4
21136 
21137        RETURN
21138         END
21139 
21140 **********************************
21141 *     PURPOSE:                                                         *
21142 *     assign final states for KK*bar or K*Kbar --> light mesons
21143 *
21144 c      SUBROUTINE Crkspi(PX,PY,PZ,SRT,I1,I2,IBLOCK)
21145       SUBROUTINE crkspi(I1,I2,XSK1, XSK2, XSK3, XSK4, SIGK,
21146      & IBLOCK,lbp1,lbp2,emm1,emm2)
21147 *             iblock   - 466
21148 **********************************
21149         PARAMETER (MAXSTR=150001,MAXR=1)
21150           PARAMETER (AP1=0.13496,AP2=0.13957,RHOM = 0.770,PI=3.1415926)
21151         PARAMETER (AETA=0.548,AMOMGA=0.782)
21152         parameter (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
21153         COMMON /AA/ R(3,MAXSTR)
21154 cc      SAVE /AA/
21155         COMMON /BB/ P(3,MAXSTR)
21156 cc      SAVE /BB/
21157         COMMON /CC/ E(MAXSTR)
21158 cc      SAVE /CC/
21159         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
21160 cc      SAVE /EE/
21161         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
21162 cc      SAVE /input1/
21163       COMMON/RNDF77/NSEED
21164 cc      SAVE /RNDF77/
21165       SAVE   
21166 
21167        IBLOCK=466
21168 * charges of final state mesons:
21169 
21170         X1 = RANART(NSEED) * SIGK
21171         XSK2 = XSK1 + XSK2
21172         XSK3 = XSK2 + XSK3
21173         XSK4 = XSK3 + XSK4
21174         IF (X1 .LE. XSK1) THEN
21175            LB(I1) = 3 + int(3 * RANART(NSEED))
21176            LB(I2) = 25 + int(3 * RANART(NSEED))
21177            E(I1) = AP2
21178            E(I2) = rhom
21179         ELSE IF (X1 .LE. XSK2) THEN
21180            LB(I1) = 3 + int(3 * RANART(NSEED))
21181            LB(I2) = 28
21182            E(I1) = AP2
21183            E(I2) = AMOMGA
21184         ELSE IF (X1 .LE. XSK3) THEN
21185            LB(I1) = 0
21186            LB(I2) = 25 + int(3 * RANART(NSEED))
21187            E(I1) = AETA
21188            E(I2) = rhom
21189         ELSE
21190            LB(I1) = 0
21191            LB(I2) = 28
21192            E(I1) = AETA
21193            E(I2) = AMOMGA
21194         ENDIF
21195 
21196         if(lb(i1).eq.4) E(I1) = AP1
21197         lbp1=lb(i1)
21198         lbp2=lb(i2)
21199         emm1=e(i1)
21200         emm2=e(i2)
21201 
21202       RETURN
21203       END
21204 
21205 *---------------------------------------------------------------------------
21206 * PURPOSE : CALCULATE THE MASS AND MOMENTUM OF K* RESONANCE 
21207 *           AFTER PION + KAON COLLISION
21208 *clin only here the K* mass may be different from aks=0.895
21209         SUBROUTINE KSRESO(I1,I2)
21210         PARAMETER (MAXSTR=150001,MAXR=1,
21211      1  AMN=0.939457,AMP=0.93828,
21212      2  AP1=0.13496,AP2=0.13957,AM0=1.232,PI=3.1415926)
21213 clin-9/2012: improve precision for argument in sqrt():
21214         double precision e10,e20,scheck,p1,p2,p3
21215         COMMON /AA/ R(3,MAXSTR)
21216 cc      SAVE /AA/
21217         COMMON /BB/ P(3,MAXSTR)
21218 cc      SAVE /BB/
21219         COMMON /CC/ E(MAXSTR)
21220 cc      SAVE /CC/
21221         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
21222 cc      SAVE /EE/
21223         COMMON   /RUN/NUM
21224 cc      SAVE /RUN/
21225         COMMON   /PA/RPION(3,MAXSTR,MAXR)
21226 cc      SAVE /PA/
21227         COMMON   /PB/PPION(3,MAXSTR,MAXR)
21228 cc      SAVE /PB/
21229         COMMON   /PC/EPION(MAXSTR,MAXR)
21230 cc      SAVE /PC/
21231         COMMON   /PD/LPION(MAXSTR,MAXR)
21232 cc      SAVE /PD/
21233       SAVE   
21234 * 1. DETERMINE THE MOMENTUM COMPONENT OF THE K* IN THE CMS OF PI-K FRAME
21235 *    WE LET I1 TO BE THE K* AND ABSORB I2
21236 
21237 clin-9/2012: improve precision for argument in sqrt():
21238 c        E10=SQRT(E(I1)**2+P(1,I1)**2+P(2,I1)**2+P(3,I1)**2)
21239 c        E20=SQRT(E(I2)**2+P(1,I2)**2+P(2,I2)**2+P(3,I2)**2)
21240         E10=dSQRT(dble(E(I1))**2+dble(P(1,I1))**2
21241      1     +dble(P(2,I1))**2+dble(P(3,I1))**2)
21242         E20=dSQRT(dble(E(I2))**2+dble(P(1,I2))**2
21243      1       +dble(P(2,I2))**2+dble(P(3,I2))**2)
21244         p1=dble(P(1,I1))+dble(P(1,I2))
21245         p2=dble(P(2,I1))+dble(P(2,I2))
21246         p3=dble(P(3,I1))+dble(P(3,I2))
21247 
21248         IF(LB(I2) .EQ. 21 .OR. LB(I2) .EQ. 23) THEN
21249         E(I1)=0.
21250         I=I2
21251         ELSE
21252         E(I2)=0.
21253         I=I1
21254         ENDIF
21255         if(LB(I).eq.23) then
21256            LB(I)=30
21257         else if(LB(I).eq.21) then
21258            LB(I)=-30
21259         endif
21260         P(1,I)=P(1,I1)+P(1,I2)
21261         P(2,I)=P(2,I1)+P(2,I2)
21262         P(3,I)=P(3,I1)+P(3,I2)
21263 * 2. DETERMINE THE MASS OF K* BY USING THE REACTION KINEMATICS
21264 
21265 clin-9/2012: check argument in sqrt():
21266         scheck=(E10+E20)**2-p1**2-p2**2-p3**2
21267         if(scheck.lt.0) then
21268            write(99,*) 'scheck49: ',scheck
21269            write(99,*) 'scheck49',scheck,E10,E20,P(1,I),P(2,I),P(3,I)
21270            write(99,*) 'scheck49-1',E(I1),P(1,I1),P(2,I1),P(3,I1)
21271            write(99,*) 'scheck49-2',E(I2),P(1,I2),P(2,I2),P(3,I2)
21272         endif
21273         DM=sqrt(sngl(scheck))
21274 c        DM=SQRT((E10+E20)**2-P(1,I)**2-P(2,I)**2-P(3,I)**2)
21275 
21276         E(I)=DM
21277         RETURN
21278         END
21279 
21280 c--------------------------------------------------------
21281 *************************************
21282 *                                                                         *
21283       SUBROUTINE pertur(PX,PY,PZ,SRT,IRUN,I1,I2,nt,kp,icont)
21284 *                                                                         *
21285 *       PURPOSE:   TO PRODUCE CASCADE AND OMEGA PERTURBATIVELY            *
21286 c sp 01/03/01
21287 *                   40 cascade-
21288 *                  -40 cascade-(bar)
21289 *                   41 cascade0
21290 *                  -41 cascade0(bar)
21291 *                   45 Omega baryon
21292 *                  -45 Omega baryon(bar)
21293 *                   44 Di-Omega
21294 **********************************
21295       PARAMETER      (MAXSTR=150001,MAXR=1,PI=3.1415926)
21296       parameter      (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
21297       PARAMETER (AMN=0.939457,AMP=0.93828,AP1=0.13496,AP2=0.13957)
21298       PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974,aks=0.895)
21299       PARAMETER      (ACAS=1.3213,AOME=1.6724,AMRHO=0.769,AMOMGA=0.782)
21300       PARAMETER      (AETA=0.548,ADIOMG=3.2288)
21301       parameter            (maxx=20,maxz=24)
21302       COMMON   /AA/  R(3,MAXSTR)
21303 cc      SAVE /AA/
21304       COMMON   /BB/  P(3,MAXSTR)
21305 cc      SAVE /BB/
21306       COMMON   /CC/  E(MAXSTR)
21307 cc      SAVE /CC/
21308       COMMON   /EE/  ID(MAXSTR),LB(MAXSTR)
21309 cc      SAVE /EE/
21310       COMMON   /HH/  PROPER(MAXSTR)
21311 cc      SAVE /HH/
21312       common /ff/f(-mx:mx,-my:my,-mz:mz,-mpx:mpx,-mpy:mpy,-mpz:mpzp)
21313 cc      SAVE /ff/
21314       common   /gg/  dx,dy,dz,dpx,dpy,dpz
21315 cc      SAVE /gg/
21316       COMMON   /INPUT/ NSTAR,NDIRCT,DIR
21317 cc      SAVE /INPUT/
21318       COMMON   /NN/NNN
21319 cc      SAVE /NN/
21320       COMMON   /PA/RPION(3,MAXSTR,MAXR)
21321 cc      SAVE /PA/
21322       COMMON   /PB/PPION(3,MAXSTR,MAXR)
21323 cc      SAVE /PB/
21324       COMMON   /PC/EPION(MAXSTR,MAXR)
21325 cc      SAVE /PC/
21326       COMMON   /PD/LPION(MAXSTR,MAXR)
21327 cc      SAVE /PD/
21328       COMMON   /PE/PROPI(MAXSTR,MAXR)
21329 cc      SAVE /PE/
21330       COMMON   /RR/  MASSR(0:MAXR)
21331 cc      SAVE /RR/
21332       COMMON   /BG/BETAX,BETAY,BETAZ,GAMMA
21333 cc      SAVE /BG/
21334       common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
21335 cc      SAVE /input1/
21336 c     perturbative method is disabled:
21337 c      common /imulst/ iperts
21338 c
21339       COMMON/RNDF77/NSEED
21340 cc      SAVE /RNDF77/
21341       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
21342      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
21343      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
21344       SAVE   
21345 
21346       px0 = px
21347       py0 = py
21348       pz0 = pz
21349       LB1 = LB(I1)
21350       EM1 = E(I1)
21351       X1  = R(1,I1)
21352       Y1  = R(2,I1)
21353       Z1  = R(3,I1)
21354       prob1 = PROPER(I1)
21355 c     
21356       LB2 = LB(I2)
21357       EM2 = E(I2)
21358       X2  = R(1,I2)
21359       Y2  = R(2,I2)
21360       Z2  = R(3,I2)
21361       prob2 = PROPER(I2)
21362 c
21363 c                 !! flag for real 2-body process (1/0=no/yes)
21364       icont = 1
21365 c                !! flag for elastic scatt only (-1=no)
21366       icsbel = -1
21367 
21368 * K-/K*0bar + La/Si --> cascade + pi
21369 * K+/K*0 + La/Si (bar) --> cascade-bar + pi
21370        if( (lb1.eq.21.or.lb1.eq.23.or.iabs(lb1).eq.30) .and.
21371      &     (iabs(lb2).ge.14.and.iabs(lb2).le.17) )go to 60
21372        if( (lb2.eq.21.or.lb2.eq.23.or.iabs(lb2).eq.30) .and.
21373      &     (iabs(lb1).ge.14.and.iabs(lb1).le.17) )go to 60
21374 * K-/K*0bar + cascade --> omega + pi
21375 * K+/K*0 + cascade-bar --> omega-bar + pi
21376         if( (lb1.eq.21.or.lb1.eq.23.or.iabs(lb1).eq.30) .and.
21377      &      (iabs(lb2).eq.40.or.iabs(lb2).eq.41) )go to 70
21378         if( (lb2.eq.21.or.lb2.eq.23.or.iabs(lb2).eq.30) .and.
21379      &      (iabs(lb1).eq.40.or.iabs(lb1).eq.41) )go to 70
21380 c
21381 c annhilation of cascade,cascade-bar, omega,omega-bar
21382 c
21383 * K- + La/Si <-- cascade + pi(eta,rho,omega)
21384 * K+ + La/Si(bar) <-- cascade-bar + pi(eta,rho,omega)
21385        if( (((lb1.ge.3.and.lb1.le.5).or.lb1.eq.0) 
21386      &        .and.(iabs(lb2).eq.40.or.iabs(lb2).eq.41))
21387      & .OR. (((lb2.ge.3.and.lb2.le.5).or.lb2.eq.0) 
21388      &        .and.(iabs(lb1).eq.40.or.iabs(lb1).eq.41)) )go to 90
21389 * K- + cascade <-- omega + pi
21390 * K+ + cascade-bar <-- omega-bar + pi
21391 c         if( (lb1.eq.0.and.iabs(lb2).eq.45)
21392 c    &    .OR. (lb2.eq.0.and.iabs(lb1).eq.45) ) go to 110
21393        if( ((lb1.ge.3.and.lb1.le.5).and.iabs(lb2).eq.45)
21394      & .OR.((lb2.ge.3.and.lb2.le.5).and.iabs(lb1).eq.45) )go to 110
21395 c
21396 
21397 c----------------------------------------------------
21398 *  for process:  K-bar + L(S) --> Ca + pi 
21399 *
21400 60         if(iabs(lb1).ge.14 .and. iabs(lb1).le.17)then 
21401              asap = e(i1)
21402              akap = e(i2)
21403              idp = i1
21404            else
21405              asap = e(i2)
21406              akap = e(i1)
21407              idp = i2
21408            endif
21409           app = 0.138
21410          if(srt .lt. (acas+app))return
21411           srrt = srt - (acas+app) + (amn+akap)
21412           pkaon = sqrt(((srrt**2-(amn**2+akap**2))/2./amn)**2 - akap**2)
21413           sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
21414 clin pii & pff should be each divided by (4*srt**2), 
21415 c     but these two factors cancel out in the ratio pii/pff:
21416           pii = sqrt((srt**2-(amn+akap)**2)*(srt**2-(amn-akap)**2))
21417           pff = sqrt((srt**2-(asap+app)**2)*(srt**2-(asap-app)**2))
21418          cmat = sigca*pii/pff
21419          sigpi = cmat*
21420      &            sqrt((srt**2-(acas+app)**2)*(srt**2-(acas-app)**2))/
21421      &            sqrt((srt**2-(asap+akap)**2)*(srt**2-(asap-akap)**2))
21422 c 
21423          sigeta = 0.
21424         if(srt .gt. (acas+aeta))then
21425            srrt = srt - (acas+aeta) + (amn+akap)
21426          pkaon = sqrt(((srrt**2-(amn**2+akap**2))/2./amn)**2 - akap**2)
21427             sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
21428          cmat = sigca*pii/pff
21429          sigeta = cmat*
21430      &            sqrt((srt**2-(acas+aeta)**2)*(srt**2-(acas-aeta)**2))/
21431      &            sqrt((srt**2-(asap+akap)**2)*(srt**2-(asap-akap)**2))
21432         endif
21433 c
21434          sigca = sigpi + sigeta
21435          sigpe = 0.
21436 clin-2/25/03 disable the perturb option:
21437 c        if(iperts .eq. 1) sigpe = 40.   !! perturbative xsecn
21438            sig = amax1(sigpe,sigca)     
21439          ds = sqrt(sig/31.4)
21440          dsr = ds + 0.1
21441          ec = (em1+em2+0.02)**2
21442          call distce(i1,i2,dsr,ds,dt,ec,srt,ic,px,py,pz)
21443            if(ic .eq. -1)return
21444           brpp = sigca/sig
21445 c
21446 c else particle production
21447           if( (lb1.ge.14.and.lb1.le.17) .or.
21448      &          (lb2.ge.14.and.lb2.le.17) )then
21449 c   !! cascade- or cascde0
21450             lbpp1 = 40 + int(2*RANART(NSEED))
21451           else
21452 * elseif(lb1 .eq. -14 .or. lb2 .eq. -14)
21453 c     !! cascade-bar- or cascde0 -bar
21454             lbpp1 = -40 - int(2*RANART(NSEED))
21455           endif
21456               empp1 = acas
21457            if(RANART(NSEED) .lt. sigpi/sigca)then
21458 c    !! pion
21459             lbpp2 = 3 + int(3*RANART(NSEED))
21460             empp2 = 0.138
21461            else
21462 c    !! eta
21463             lbpp2 = 0
21464             empp2 = aeta
21465            endif        
21466 c* check real process of cascade(bar) and pion formation
21467           if(RANART(NSEED) .lt. brpp)then
21468 c       !! real process flag
21469             icont = 0
21470             lb(i1) = lbpp1
21471             e(i1) = empp1
21472 c  !! cascade formed with prob Gam
21473             proper(i1) = brpp
21474             lb(i2) = lbpp2
21475             e(i2) = empp2
21476 c         !! pion/eta formed with prob 1.
21477             proper(i2) = 1.
21478            endif
21479 c else only cascade(bar) formed perturbatively
21480              go to 700
21481             
21482 c----------------------------------------------------
21483 *  for process:  Cas(bar) + K_bar(K) --> Om(bar) + pi  !! eta
21484 *
21485 70         if(iabs(lb1).eq.40 .or. iabs(lb1).eq.41)then 
21486              acap = e(i1)
21487              akap = e(i2)
21488              idp = i1
21489            else
21490              acap = e(i2)
21491              akap = e(i1)
21492              idp = i2
21493            endif
21494            app = 0.138
21495 *         ames = aeta
21496 c  !! only pion
21497            ames = 0.138
21498          if(srt .lt. (aome+ames))return 
21499           srrt = srt - (aome+ames) + (amn+akap)
21500          pkaon = sqrt(((srrt**2-(amn**2+akap**2))/2./amn)**2 - akap**2)
21501 c use K(bar) + Ca --> Om + eta  xsecn same as  K(bar) + N --> Si + Pi
21502 *  as Omega have no resonances
21503 c** using same matrix elements as K-bar + N -> Si + pi
21504          sigomm = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
21505          cmat = sigomm*
21506      &          sqrt((srt**2-(amn+akap)**2)*(srt**2-(amn-akap)**2))/
21507      &          sqrt((srt**2-(asa+app)**2)*(srt**2-(asa-app)**2))
21508         sigom = cmat*
21509      &           sqrt((srt**2-(aome+ames)**2)*(srt**2-(aome-ames)**2))/
21510      &           sqrt((srt**2-(acap+akap)**2)*(srt**2-(acap-akap)**2))
21511           sigpe = 0.
21512 clin-2/25/03 disable the perturb option:
21513 c         if(iperts .eq. 1) sigpe = 40.   !! perturbative xsecn
21514           sig = amax1(sigpe,sigom)     
21515          ds = sqrt(sig/31.4)
21516          dsr = ds + 0.1
21517          ec = (em1+em2+0.02)**2
21518          call distce(i1,i2,dsr,ds,dt,ec,srt,ic,px,py,pz)
21519            if(ic .eq. -1)return
21520            brpp = sigom/sig
21521 c
21522 c else particle production
21523            if( (lb1.ge.40.and.lb1.le.41) .or.
21524      &           (lb2.ge.40.and.lb2.le.41) )then
21525 c    !! omega
21526             lbpp1 = 45
21527            else
21528 * elseif(lb1 .eq. -40 .or. lb2 .eq. -40)
21529 c    !! omega-bar
21530             lbpp1 = -45
21531            endif
21532            empp1 = aome
21533 *           lbpp2 = 0    !! eta
21534 c    !! pion
21535            lbpp2 = 3 + int(3*RANART(NSEED))
21536            empp2 = ames
21537 c
21538 c* check real process of omega(bar) and pion formation
21539            xrand=RANART(NSEED)
21540          if(xrand .lt. (proper(idp)*brpp))then
21541 c       !! real process flag
21542             icont = 0
21543             lb(i1) = lbpp1
21544             e(i1) = empp1
21545 c  !! P_Om = P_Cas*Gam
21546             proper(i1) = proper(idp)*brpp
21547             lb(i2) = lbpp2
21548             e(i2) = empp2
21549 c   !! pion formed with prob 1.
21550             proper(i2) = 1.
21551           elseif(xrand.lt.brpp) then
21552 c else omega(bar) formed perturbatively and cascade destroyed
21553              e(idp) = 0.
21554           endif
21555              go to 700
21556             
21557 c-----------------------------------------------------------
21558 *  for process:  Ca + pi/eta --> K-bar + L(S)
21559 *
21560 90         if(iabs(lb1).eq.40 .or. iabs(lb1).eq.41)then 
21561              acap = e(i1)
21562              app = e(i2)
21563              idp = i1
21564              idn = i2
21565            else
21566              acap = e(i2)
21567              app = e(i1)
21568              idp = i2
21569              idn = i1
21570            endif
21571 c            akal = (aka+aks)/2.  !! average of K and K* taken
21572 c  !! using K only
21573             akal = aka
21574 c
21575          alas = ala
21576        if(srt .le. (alas+aka))return
21577            srrt = srt - (acap+app) + (amn+aka)
21578          pkaon = sqrt(((srrt**2-(amn**2+aka**2))/2./amn)**2 - aka**2)
21579 c** using same matrix elements as K-bar + N -> La/Si + pi
21580          sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
21581          cmat = sigca*
21582      &          sqrt((srt**2-(amn+aka)**2)*(srt**2-(amn-aka)**2))/
21583      &          sqrt((srt**2-(alas+0.138)**2)*(srt**2-(alas-0.138)**2))
21584          sigca = cmat*
21585      &            sqrt((srt**2-(acap+app)**2)*(srt**2-(acap-app)**2))/
21586      &            sqrt((srt**2-(alas+aka)**2)*(srt**2-(alas-aka)**2))
21587 c    !! pi
21588             dfr = 1./3.
21589 c       !! eta
21590            if(lb(idn).eq.0)dfr = 1.
21591         sigcal = sigca*dfr*(srt**2-(alas+aka)**2)*
21592      &           (srt**2-(alas-aka)**2)/(srt**2-(acap+app)**2)/
21593      &           (srt**2-(acap-app)**2)
21594 c
21595           alas = ASA
21596        if(srt .le. (alas+aka))then
21597          sigcas = 0.
21598        else
21599            srrt = srt - (acap+app) + (amn+aka)
21600         pkaon = sqrt(((srrt**2-(amn**2+aka**2))/2./amn)**2 - aka**2)
21601 c use K(bar) + La/Si --> Ca + Pi  xsecn same as  K(bar) + N --> Si + Pi
21602 c** using same matrix elements as K-bar + N -> La/Si + pi
21603           sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
21604          cmat = sigca*
21605      &          sqrt((srt**2-(amn+aka)**2)*(srt**2-(amn-aka)**2))/
21606      &          sqrt((srt**2-(alas+0.138)**2)*(srt**2-(alas-0.138)**2))
21607          sigca = cmat*
21608      &            sqrt((srt**2-(acap+app)**2)*(srt**2-(acap-app)**2))/
21609      &            sqrt((srt**2-(alas+aka)**2)*(srt**2-(alas-aka)**2))
21610 c    !! pi
21611             dfr = 1.
21612 c    !! eta
21613            if(lb(idn).eq.0)dfr = 3.
21614         sigcas = sigca*dfr*(srt**2-(alas+aka)**2)*
21615      &           (srt**2-(alas-aka)**2)/(srt**2-(acap+app)**2)/
21616      &           (srt**2-(acap-app)**2)
21617        endif
21618 c
21619          sig = sigcal + sigcas
21620          brpp = 1.                                                   
21621          ds = sqrt(sig/31.4)
21622          dsr = ds + 0.1
21623          ec = (em1+em2+0.02)**2
21624          call distce(i1,i2,dsr,ds,dt,ec,srt,ic,px,py,pz)
21625 c
21626 clin-2/25/03: checking elastic scatt after failure of inelastic scatt gives 
21627 c     conditional probability (in general incorrect), tell Pal to correct:
21628        if(ic .eq. -1)then
21629 c check for elastic scatt, no particle annhilation
21630 c  !! elastic cross section of 20 mb
21631          ds = sqrt(20.0/31.4)
21632          dsr = ds + 0.1
21633          call distce(i1,i2,dsr,ds,dt,ec,srt,icsbel,px,py,pz)
21634            if(icsbel .eq. -1)return
21635             empp1 = EM1
21636             empp2 = EM2
21637              go to 700
21638        endif
21639 c
21640 c else pert. produced cascade(bar) is annhilated OR real process
21641 c
21642 * DECIDE LAMBDA OR SIGMA PRODUCTION
21643 c
21644        IF(sigcal/sig .GT. RANART(NSEED))THEN  
21645           if(lb1.eq.40.or.lb1.eq.41.or.lb2.eq.40.or.lb2.eq.41)then
21646           lbpp1 = 21
21647            lbpp2 = 14
21648           else
21649            lbpp1 = 23
21650            lbpp2 = -14
21651           endif
21652          alas = ala
21653        ELSE
21654           if(lb1.eq.40.or.lb1.eq.41.or.lb2.eq.40.or.lb2.eq.41)then
21655            lbpp1 = 21
21656             lbpp2 = 15 + int(3 * RANART(NSEED))
21657           else
21658             lbpp1 = 23
21659             lbpp2 = -15 - int(3 * RANART(NSEED))
21660           endif
21661          alas = ASA       
21662         ENDIF
21663              empp1 = aka  
21664              empp2 = alas 
21665 c
21666 c check for real process for L/S(bar) and K(bar) formation
21667           if(RANART(NSEED) .lt. proper(idp))then
21668 * real process
21669 c       !! real process flag
21670             icont = 0
21671             lb(i1) = lbpp1
21672             e(i1) = empp1
21673 c   !! K(bar) formed with prob 1.
21674             proper(i1) = 1.
21675             lb(i2) = lbpp2
21676             e(i2) = empp2
21677 c   !! L/S(bar) formed with prob 1.
21678             proper(i2) = 1.
21679              go to 700
21680            else
21681 c else only cascade(bar) annhilation & go out
21682             e(idp) = 0.
21683            endif
21684           return
21685 c
21686 c----------------------------------------------------
21687 *  for process:  Om(bar) + pi --> Cas(bar) + K_bar(K)
21688 *
21689 110         if(lb1 .eq. 45 .or. lb1 .eq. -45)then 
21690              aomp = e(i1)
21691              app = e(i2)
21692              idp = i1
21693              idn = i2
21694            else
21695              aomp = e(i2)
21696              app = e(i1)
21697              idp = i2
21698              idn = i1
21699            endif
21700 c            akal = (aka+aks)/2.  !! average of K and K* taken 
21701 c  !! using K only
21702             akal = aka
21703        if(srt .le. (acas+aka))return
21704            srrt = srt - (aome+app) + (amn+aka)
21705          pkaon = sqrt(((srrt**2-(amn**2+aka**2))/2./amn)**2 - aka**2)
21706 c use K(bar) + Ca --> Om + eta  xsecn same as  K(bar) + N --> Si + Pi
21707 c** using same matrix elements as K-bar + N -> La/Si + pi
21708            sigca = 1.5*( akNPsg(pkaon)+akNPsg(pkaon) )
21709          cmat = sigca*
21710      &          sqrt((srt**2-(amn+aka)**2)*(srt**2-(amn-aka)**2))/
21711      &          sqrt((srt**2-(asa+0.138)**2)*(srt**2-(asa-0.138)**2))
21712          sigom = cmat*
21713      &            sqrt((srt**2-(aomp+app)**2)*(srt**2-(aomp-app)**2))/
21714      &            sqrt((srt**2-(acas+aka)**2)*(srt**2-(acas-aka)**2))
21715 c            dfr = 2.    !! eta
21716 c    !! pion
21717            dfr = 2./3.
21718         sigom = sigom*dfr*(srt**2-(acas+aka)**2)*
21719      &           (srt**2-(acas-aka)**2)/(srt**2-(aomp+app)**2)/
21720      &           (srt**2-(aomp-app)**2)
21721 c                                                                         
21722          brpp = 1.
21723          ds = sqrt(sigom/31.4)
21724          dsr = ds + 0.1
21725          ec = (em1+em2+0.02)**2
21726          call distce(i1,i2,dsr,ds,dt,ec,srt,ic,px,py,pz)
21727 c
21728 clin-2/25/03: checking elastic scatt after failure of inelastic scatt gives 
21729 c     conditional probability (in general incorrect), tell Pal to correct:
21730        if(ic .eq. -1)then
21731 c check for elastic scatt, no particle annhilation
21732 c  !! elastic cross section of 20 mb
21733          ds = sqrt(20.0/31.4)
21734          dsr = ds + 0.1
21735          call distce(i1,i2,dsr,ds,dt,ec,srt,icsbel,px,py,pz)
21736            if(icsbel .eq. -1)return
21737             empp1 = EM1
21738             empp2 = EM2
21739              go to 700
21740        endif
21741 c
21742 c else pert. produced omega(bar) annhilated  OR real process
21743 c annhilate only pert. omega, rest from hijing go out WITHOUT annhil.
21744            if(lb1.eq.45 .or. lb2.eq.45)then
21745 c  !! Ca
21746              lbpp1 = 40 + int(2*RANART(NSEED))
21747 c   !! K-
21748              lbpp2 = 21
21749             else
21750 * elseif(lb1 .eq. -45 .or. lb2 .eq. -45)
21751 c    !! Ca-bar
21752             lbpp1 = -40 - int(2*RANART(NSEED))
21753 c      !! K+
21754             lbpp2 = 23
21755            endif
21756              empp1 = acas
21757              empp2 = aka  
21758 c
21759 c check for real process for Cas(bar) and K(bar) formation
21760           if(RANART(NSEED) .lt. proper(idp))then
21761 c       !! real process flag
21762             icont = 0
21763             lb(i1) = lbpp1
21764             e(i1) = empp1
21765 c   !! P_Cas(bar) = P_Om(bar)
21766             proper(i1) = proper(idp)
21767             lb(i2) = lbpp2
21768             e(i2) = empp2
21769 c   !! K(bar) formed with prob 1.
21770             proper(i2) = 1.
21771 c
21772            else
21773 c else Cascade(bar)  produced and Omega(bar) annhilated
21774             e(idp) = 0.
21775            endif
21776 c   !! for produced particles
21777              go to 700
21778 c
21779 c-----------------------------------------------------------
21780 700    continue
21781 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
21782 * ENERGY CONSERVATION
21783           PR2   = (SRT**2 - EMpp1**2 - EMpp2**2)**2
21784      &                - 4.0 * (EMpp1*EMpp2)**2
21785           IF(PR2.LE.0.)PR2=0.00000001
21786           PR=SQRT(PR2)/(2.*SRT)
21787 * using isotropic
21788       C1   = 1.0 - 2.0 * RANART(NSEED)
21789       T1   = 2.0 * PI * RANART(NSEED)
21790       S1   = SQRT( 1.0 - C1**2 )
21791       CT1  = COS(T1)
21792       ST1  = SIN(T1)
21793 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
21794       PZ   = PR * C1
21795       PX   = PR * S1*CT1 
21796       PY   = PR * S1*ST1
21797 * ROTATE IT 
21798        CALL ROTATE(PX0,PY0,PZ0,PX,PY,PZ) 
21799        if(icont .eq. 0)return
21800 c
21801 * LORENTZ-TRANSFORMATION INTO CMS FRAME
21802               E1CM    = SQRT (EMpp1**2 + PX**2 + PY**2 + PZ**2)
21803               P1BETA  = PX*BETAX + PY*BETAY + PZ*BETAZ
21804               TRANSF  = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) + E1CM )
21805               Ppt11 = BETAX * TRANSF + PX
21806               Ppt12 = BETAY * TRANSF + PY
21807               Ppt13 = BETAZ * TRANSF + PZ
21808 c
21809 cc** for elastic scattering update the momentum of pertb particles
21810          if(icsbel .ne. -1)then
21811 c            if(EMpp1 .gt. 0.9)then
21812               p(1,i1) = Ppt11
21813               p(2,i1) = Ppt12
21814               p(3,i1) = Ppt13
21815 c            else
21816               E2CM    = SQRT (EMpp2**2 + PX**2 + PY**2 + PZ**2)
21817               TRANSF  = GAMMA * ( -GAMMA * P1BETA / (GAMMA + 1) + E2CM )
21818               Ppt21 = BETAX * TRANSF - PX
21819               Ppt22 = BETAY * TRANSF - PY
21820               Ppt23 = BETAZ * TRANSF - PZ
21821               p(1,i2) = Ppt21
21822               p(2,i2) = Ppt22
21823               p(3,i2) = Ppt23
21824 c            endif
21825              return
21826           endif
21827 clin-5/2008:
21828 c2008        X01 = 1.0 - 2.0 * RANART(NSEED)
21829 c            Y01 = 1.0 - 2.0 * RANART(NSEED)
21830 c            Z01 = 1.0 - 2.0 * RANART(NSEED)
21831 c        IF ((X01*X01+Y01*Y01+Z01*Z01) .GT. 1.0) GOTO 2008
21832 c                Xpt=X1+0.5*x01
21833 c                Ypt=Y1+0.5*y01
21834 c                Zpt=Z1+0.5*z01
21835                 Xpt=X1
21836                 Ypt=Y1
21837                 Zpt=Z1
21838 c
21839 c
21840 c          if(lbpp1 .eq. 45)then
21841 c           write(*,*)'II lb1,lb2,lbpp1,empp1,proper(idp),brpp'
21842 c           write(*,*)lb1,lb2,lbpp1,empp1,proper(idp),brpp
21843 c          endif
21844 c
21845                NNN=NNN+1
21846                PROPI(NNN,IRUN)= proper(idp)*brpp
21847                LPION(NNN,IRUN)= lbpp1
21848                EPION(NNN,IRUN)= empp1
21849                 RPION(1,NNN,IRUN)=Xpt
21850                 RPION(2,NNN,IRUN)=Ypt
21851                 RPION(3,NNN,IRUN)=Zpt
21852                PPION(1,NNN,IRUN)=Ppt11
21853                PPION(2,NNN,IRUN)=Ppt12
21854                PPION(3,NNN,IRUN)=Ppt13
21855 clin-5/2008:
21856                dppion(nnn,irun)=dpertp(i1)*dpertp(i2)
21857             RETURN
21858             END
21859 **********************************
21860 *  sp 12/08/00                                                         *
21861       SUBROUTINE Crhb(PX,PY,PZ,SRT,I1,I2,IBLOCK)
21862 *     PURPOSE:                                                         *
21863 *        DEALING WITH hyperon+N(D,N*)->hyp+N(D,N*) elastic PROCESS     *
21864 *     NOTE   :                                                         *
21865 *          
21866 *     QUANTITIES:                                                 *
21867 *           PX,PY,PZ - MOMENTUM COORDINATES OF ONE PARTICLE IN CM FRAME*
21868 *           SRT      - SQRT OF S                                       *
21869 *           IBLOCK   - THE INFORMATION BACK                            *
21870 *                     144-> hyp+N(D,N*)->hyp+N(D,N*)
21871 **********************************
21872         PARAMETER (MAXSTR=150001,MAXR=1,AMN=0.939457,
21873      1  AMP=0.93828,AP1=0.13496,
21874      2  AP2=0.13957,AM0=1.232,PI=3.1415926,CUTOFF=1.8966,AVMASS=0.9383)
21875         PARAMETER      (AKA=0.498,ALA=1.1157,ASA=1.1974)
21876         parameter     (MX=4,MY=4,MZ=8,MPX=4,MPY=4,mpz=10,mpzp=10)
21877         COMMON /AA/ R(3,MAXSTR)
21878 cc      SAVE /AA/
21879         COMMON /BB/ P(3,MAXSTR)
21880 cc      SAVE /BB/
21881         COMMON /CC/ E(MAXSTR)
21882 cc      SAVE /CC/
21883         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
21884 cc      SAVE /EE/
21885         common/input1/ MASSPR,MASSTA,ISEED,IAVOID,DT
21886 cc      SAVE /input1/
21887       COMMON/RNDF77/NSEED
21888 cc      SAVE /RNDF77/
21889       SAVE   
21890 
21891        PX0=PX
21892        PY0=PY
21893        PZ0=PZ
21894 *-----------------------------------------------------------------------
21895         IBLOCK=144
21896         NTAG=0
21897         EM1=E(I1)
21898         EM2=E(I2)
21899 *-----------------------------------------------------------------------
21900 * CALCULATE THE MAGNITUDE OF THE FINAL MOMENTUM THROUGH
21901 * ENERGY CONSERVATION
21902           PR2   = (SRT**2 - EM1**2 - EM2**2)**2
21903      1                - 4.0 * (EM1*EM2)**2
21904           IF(PR2.LE.0.)PR2=1.e-09
21905           PR=SQRT(PR2)/(2.*SRT)
21906           C1   = 1.0 - 2.0 * RANART(NSEED)
21907           T1   = 2.0 * PI * RANART(NSEED)
21908       S1   = SQRT( 1.0 - C1**2 )
21909       CT1  = COS(T1)
21910       ST1  = SIN(T1)
21911       PZ   = PR * C1
21912       PX   = PR * S1*CT1 
21913       PY   = PR * S1*ST1
21914       RETURN
21915       END
21916 ****************************************
21917 c sp 04/05/01
21918 * Purpose: lambda-baryon elastic xsection as a functon of their cms energy
21919          subroutine lambar(i1,i2,srt,siglab)
21920 *  srt    = DSQRT(s) in GeV                                               *
21921 *  siglab = lambda-nuclar elastic cross section in mb 
21922 *         = 12 + 0.43/p_lab**3.3 (mb)  
21923 *                                                    
21924 * (2) Calculate p(lab) from srt [GeV], since the formular in the 
21925 * reference applies only to the case of a p_bar on a proton at rest
21926 * Formula used: srt**2=2.*pmass*(pmass+sqrt(pmass**2+plab**2))
21927 *****************************
21928         PARAMETER (MAXSTR=150001)
21929         COMMON /AA/ R(3,MAXSTR)
21930 cc      SAVE /AA/
21931         COMMON /BB/ P(3,MAXSTR)
21932 cc      SAVE /BB/
21933         COMMON /CC/ E(MAXSTR)
21934 cc      SAVE /CC/
21935         COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
21936 cc      SAVE /EE/
21937       SAVE   
21938 
21939           siglab=1.e-06
21940         if( iabs(lb(i1)).ge.14.and.iabs(lb(i1)).le.17 )then
21941           eml = e(i1)
21942           emb = e(i2)
21943          else
21944           eml = e(i2)
21945           emb = e(i1)
21946         endif
21947        pthr = srt**2-eml**2-emb**2
21948         if(pthr .gt. 0.)then
21949        plab2=(pthr/2./emb)**2-eml**2
21950        if(plab2.gt.0)then
21951          plab=sqrt(plab2)
21952          siglab=12. + 0.43/(plab**3.3)
21953        if(siglab.gt.200.)siglab=200.
21954        endif
21955        endif
21956          return
21957       END
21958 C------------------------------------------------------------------
21959 clin-7/26/03 improve speed
21960 ***************************************
21961             SUBROUTINE distc0(drmax,deltr0,DT,
21962      1     Ifirst,PX1CM,PY1CM,PZ1CM,
21963      2     x1,y1,z1,px1,py1,pz1,em1,x2,y2,z2,px2,py2,pz2,em2)
21964 * PURPOSE : CHECK IF THE COLLISION BETWEEN TWO PARTICLES CAN HAPPEN
21965 *           BY CHECKING
21966 *                      (2) IF PARTICLE WILL PASS EACH OTHER WITHIN
21967 *           TWO HARD CORE RADIUS.
21968 *                      (3) IF PARTICLES WILL GET CLOSER.
21969 * VARIABLES :
21970 *           Ifirst=1 COLLISION may HAPPENED
21971 *           Ifirst=-1 COLLISION CAN NOT HAPPEN
21972 *****************************************
21973             COMMON   /BG/  BETAX,BETAY,BETAZ,GAMMA
21974 cc      SAVE /BG/
21975       SAVE   
21976             Ifirst=-1
21977             E1=SQRT(EM1**2+PX1**2+PY1**2+PZ1**2)
21978 *NOW PARTICLES ARE CLOSE ENOUGH TO EACH OTHER !
21979             E2     = SQRT ( EM2**2 + PX2**2 + PY2**2 + PZ2**2 )
21980 *NOW THERE IS ENOUGH ENERGY AVAILABLE !
21981 *LORENTZ-TRANSFORMATION IN I1-I2-C.M. SYSTEM
21982 * BETAX, BETAY, BETAZ AND GAMMA HAVE BEEN GIVEN IN THE SUBROUTINE CMS
21983 *TRANSFORMATION OF MOMENTA (PX1CM = - PX2CM)
21984               P1BETA = PX1*BETAX + PY1*BETAY + PZ1 * BETAZ
21985               TRANSF = GAMMA * ( GAMMA * P1BETA / (GAMMA + 1) - E1 )
21986               PRCM   = SQRT (PX1CM**2 + PY1CM**2 + PZ1CM**2)
21987               IF (PRCM .LE. 0.00001) return
21988 *TRANSFORMATION OF SPATIAL DISTANCE
21989               DRBETA = BETAX*(X1-X2) + BETAY*(Y1-Y2) + BETAZ*(Z1-Z2)
21990               TRANSF = GAMMA * GAMMA * DRBETA / (GAMMA + 1)
21991               DXCM   = BETAX * TRANSF + X1 - X2
21992               DYCM   = BETAY * TRANSF + Y1 - Y2
21993               DZCM   = BETAZ * TRANSF + Z1 - Z2
21994 *DETERMINING IF THIS IS THE POINT OF CLOSEST APPROACH
21995               DRCM   = SQRT (DXCM**2  + DYCM**2  + DZCM**2 )
21996               DZZ    = (PX1CM*DXCM + PY1CM*DYCM + PZ1CM*DZCM) / PRCM
21997               if ((drcm**2 - dzz**2) .le. 0.) then
21998                 BBB = 0.
21999               else
22000                 BBB    = SQRT (DRCM**2 - DZZ**2)
22001               end if
22002 *WILL PARTICLE PASS EACH OTHER WITHIN 2 * HARD CORE RADIUS ?
22003               IF (BBB .GT. drmax) return
22004               RELVEL = PRCM * (1.0/E1 + 1.0/E2)
22005               DDD    = RELVEL * DT * 0.5
22006 *WILL PARTICLES GET CLOSER ?
22007               IF (ABS(DDD) .LT. ABS(DZZ)) return
22008               Ifirst=1
22009               RETURN
22010               END
22011 *---------------------------------------------------------------------------
22012 c
22013 clin-8/2008 B+B->Deuteron+Meson cross section in mb:
22014       subroutine sbbdm(srt,sdprod,ianti,lbm,xmm,pfinal)
22015       PARAMETER (xmd=1.8756,AP1=0.13496,AP2=0.13957,
22016      1     xmrho=0.770,xmomega=0.782,xmeta=0.548,srt0=2.012)
22017       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22018      1     px1n,py1n,pz1n,dp1n
22019       common /dpi/em2,lb2
22020       common /para8/ idpert,npertd,idxsec
22021       COMMON/RNDF77/NSEED
22022       SAVE   
22023 c
22024       sdprod=0.
22025       sbbdpi=0.
22026       sbbdrho=0.
22027       sbbdomega=0.
22028       sbbdeta=0.
22029       if(srt.le.(em1+em2)) return
22030 c
22031       ilb1=iabs(lb1)
22032       ilb2=iabs(lb2)
22033 ctest off check Xsec using fixed mass for resonances:
22034 c      if(ilb1.ge.6.and.ilb1.le.9) then
22035 c         em1=1.232
22036 c      elseif(ilb1.ge.10.and.ilb1.le.11) then
22037 c         em1=1.44
22038 c      elseif(ilb1.ge.12.and.ilb1.le.13) then
22039 c         em1=1.535
22040 c      endif
22041 c      if(ilb2.ge.6.and.ilb2.le.9) then
22042 c         em2=1.232
22043 c      elseif(ilb2.ge.10.and.ilb2.le.11) then
22044 c         em2=1.44
22045 c      elseif(ilb2.ge.12.and.ilb2.le.13) then
22046 c         em2=1.535
22047 c      endif
22048 c
22049       s=srt**2
22050 
22051 clin-9/2012: check argument in sqrt():
22052       scheck=(s-(em1+em2)**2)*(s-(em1-em2)**2)
22053       if(scheck.le.0) then
22054          write(99,*) 'scheck50: ', scheck
22055          stop
22056       endif
22057       pinitial=sqrt(scheck)/2./srt
22058 c      pinitial=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
22059 
22060       fs=fnndpi(s)
22061 c     Determine isospin and spin factors for the ratio between 
22062 c     BB->Deuteron+Meson and Deuteron+Meson->BB cross sections:
22063       if(idxsec.eq.1.or.idxsec.eq.2) then
22064 c     Assume B+B -> d+Meson has the same cross sections as N+N -> d+pi:
22065       else
22066 c     Assume d+Meson -> B+B has the same cross sections as d+pi -> N+N, 
22067 c     then determine B+B -> d+Meson cross sections:
22068          if(ilb1.ge.1.and.ilb1.le.2.and.
22069      1        ilb2.ge.1.and.ilb2.le.2) then
22070             pifactor=9./8.
22071          elseif((ilb1.ge.1.and.ilb1.le.2.and.
22072      1           ilb2.ge.6.and.ilb2.le.9).or.
22073      2           (ilb2.ge.1.and.ilb2.le.2.and.
22074      1           ilb1.ge.6.and.ilb1.le.9)) then
22075             pifactor=9./64.
22076          elseif((ilb1.ge.1.and.ilb1.le.2.and.
22077      1           ilb2.ge.10.and.ilb2.le.13).or.
22078      2           (ilb2.ge.1.and.ilb2.le.2.and.
22079      1           ilb1.ge.10.and.ilb1.le.13)) then
22080             pifactor=9./16.
22081          elseif(ilb1.ge.6.and.ilb1.le.9.and.
22082      1           ilb2.ge.6.and.ilb2.le.9) then
22083             pifactor=9./128.
22084          elseif((ilb1.ge.6.and.ilb1.le.9.and.
22085      1           ilb2.ge.10.and.ilb2.le.13).or.
22086      2           (ilb2.ge.6.and.ilb2.le.9.and.
22087      1           ilb1.ge.10.and.ilb1.le.13)) then
22088             pifactor=9./64.
22089          elseif((ilb1.ge.10.and.ilb1.le.11.and.
22090      1           ilb2.ge.10.and.ilb2.le.11).or.
22091      2           (ilb2.ge.12.and.ilb2.le.13.and.
22092      1           ilb1.ge.12.and.ilb1.le.13)) then
22093             pifactor=9./8.
22094          elseif((ilb1.ge.10.and.ilb1.le.11.and.
22095      1           ilb2.ge.12.and.ilb2.le.13).or.
22096      2           (ilb2.ge.10.and.ilb2.le.11.and.
22097      1           ilb1.ge.12.and.ilb1.le.13)) then
22098             pifactor=9./16.
22099          endif
22100       endif
22101 c     d pi: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22102 *     (1) FOR P+P->Deuteron+pi+:
22103       IF((ilb1*ilb2).EQ.1)THEN
22104          lbm=5
22105          if(ianti.eq.1) lbm=3
22106          xmm=ap2
22107 *     (2)FOR N+N->Deuteron+pi-:
22108       ELSEIF(ilb1.EQ.2.AND.ilb2.EQ.2)THEN
22109          lbm=3
22110          if(ianti.eq.1) lbm=5
22111          xmm=ap2
22112 *     (3)FOR N+P->Deuteron+pi0:
22113       ELSEIF((ilb1*ilb2).EQ.2)THEN
22114          lbm=4
22115          xmm=ap1
22116       ELSE
22117 c     For baryon resonances, use isospin-averaged cross sections:
22118          lbm=3+int(3 * RANART(NSEED))
22119          if(lbm.eq.4) then
22120             xmm=ap1
22121          else
22122             xmm=ap2
22123          endif
22124       ENDIF
22125 c
22126       if(srt.ge.(xmd+xmm)) then
22127          pfinal=sqrt((s-(xmd+xmm)**2)*(s-(xmd-xmm)**2))/2./srt
22128          if((ilb1.eq.1.and.ilb2.eq.1).or.
22129      1        (ilb1.eq.2.and.ilb2.eq.2)) then
22130 c     for pp or nn initial states:
22131             sbbdpi=fs*pfinal/pinitial/4.
22132          elseif((ilb1.eq.1.and.ilb2.eq.2).or.
22133      1           (ilb1.eq.2.and.ilb2.eq.1)) then
22134 c     factor of 1/2 for pn or np initial states:
22135             sbbdpi=fs*pfinal/pinitial/4./2.
22136          else
22137 c     for other BB initial states (spin- and isospin averaged):
22138             if(idxsec.eq.1) then
22139 c     1: assume the same |matrix element|**2/s (after averaging over initial 
22140 c     spins and isospins) for B+B -> deuteron+meson at the same sqrt(s);
22141                sbbdpi=fs*pfinal/pinitial*3./16.
22142             elseif(idxsec.eq.2.or.idxsec.eq.4) then
22143                threshold=amax1(xmd+xmm,em1+em2)
22144                snew=(srt-threshold+srt0)**2
22145                if(idxsec.eq.2) then
22146 c     2: assume the same |matrix element|**2/s for B+B -> deuteron+meson 
22147 c     at the same sqrt(s)-threshold:
22148                   sbbdpi=fnndpi(snew)*pfinal/pinitial*3./16.
22149                elseif(idxsec.eq.4) then
22150 c     4: assume the same |matrix element|**2/s for B+B <- deuteron+meson 
22151 c     at the same sqrt(s)-threshold:
22152                   sbbdpi=fnndpi(snew)*pfinal/pinitial/6.*pifactor
22153                endif
22154             elseif(idxsec.eq.3) then
22155 c     3: assume the same |matrix element|**2/s for B+B <- deuteron+meson 
22156 c     at the same sqrt(s):
22157                sbbdpi=fs*pfinal/pinitial/6.*pifactor
22158             endif
22159 c
22160          endif
22161       endif
22162 c     
22163 *     d rho: DETERMINE THE CROSS SECTION TO THIS FINAL STATE:
22164       if(srt.gt.(xmd+xmrho)) then
22165          pfinal=sqrt((s-(xmd+xmrho)**2)*(s-(xmd-xmrho)**2))/2./srt
22166          if(idxsec.eq.1) then
22167             sbbdrho=fs*pfinal/pinitial*3./16.
22168          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22169             threshold=amax1(xmd+xmrho,em1+em2)
22170             snew=(srt-threshold+srt0)**2
22171             if(idxsec.eq.2) then
22172                sbbdrho=fnndpi(snew)*pfinal/pinitial*3./16.
22173             elseif(idxsec.eq.4) then
22174 c     The spin- and isospin-averaged factor is 3-times larger for rho:
22175                sbbdrho=fnndpi(snew)*pfinal/pinitial/6.*(pifactor*3.)
22176             endif
22177          elseif(idxsec.eq.3) then
22178             sbbdrho=fs*pfinal/pinitial/6.*(pifactor*3.)
22179          endif
22180       endif
22181 c
22182 *     d omega: DETERMINE THE CROSS SECTION TO THIS FINAL STATE:
22183       if(srt.gt.(xmd+xmomega)) then
22184          pfinal=sqrt((s-(xmd+xmomega)**2)*(s-(xmd-xmomega)**2))/2./srt
22185          if(idxsec.eq.1) then
22186             sbbdomega=fs*pfinal/pinitial*3./16.
22187          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22188             threshold=amax1(xmd+xmomega,em1+em2)
22189             snew=(srt-threshold+srt0)**2
22190             if(idxsec.eq.2) then
22191                sbbdomega=fnndpi(snew)*pfinal/pinitial*3./16.
22192             elseif(idxsec.eq.4) then
22193                sbbdomega=fnndpi(snew)*pfinal/pinitial/6.*pifactor
22194             endif
22195          elseif(idxsec.eq.3) then
22196             sbbdomega=fs*pfinal/pinitial/6.*pifactor
22197          endif
22198       endif
22199 c
22200 *     d eta: DETERMINE THE CROSS SECTION TO THIS FINAL STATE:
22201       if(srt.gt.(xmd+xmeta)) then
22202          pfinal=sqrt((s-(xmd+xmeta)**2)*(s-(xmd-xmeta)**2))/2./srt
22203          if(idxsec.eq.1) then
22204             sbbdeta=fs*pfinal/pinitial*3./16.
22205          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22206             threshold=amax1(xmd+xmeta,em1+em2)
22207             snew=(srt-threshold+srt0)**2
22208             if(idxsec.eq.2) then
22209                sbbdeta=fnndpi(snew)*pfinal/pinitial*3./16.
22210             elseif(idxsec.eq.4) then
22211                sbbdeta=fnndpi(snew)*pfinal/pinitial/6.*(pifactor/3.)
22212             endif
22213          elseif(idxsec.eq.3) then
22214             sbbdeta=fs*pfinal/pinitial/6.*(pifactor/3.)
22215          endif
22216       endif
22217 c
22218       sdprod=sbbdpi+sbbdrho+sbbdomega+sbbdeta
22219 ctest off
22220 c      write(99,111) srt,sbbdpi,sbbdrho,sbbdomega,sbbdeta,sdprod
22221 c 111  format(6(f8.2,1x))
22222 c
22223       if(sdprod.le.0) return
22224 c
22225 c     choose final state and assign masses here:
22226       x1=RANART(NSEED)
22227       if(x1.le.sbbdpi/sdprod) then
22228 c     use the above-determined lbm and xmm.
22229       elseif(x1.le.(sbbdpi+sbbdrho)/sdprod) then
22230          lbm=25+int(3*RANART(NSEED))
22231          xmm=xmrho
22232       elseif(x1.le.(sbbdpi+sbbdrho+sbbdomega)/sdprod) then
22233          lbm=28
22234          xmm=xmomega
22235       else
22236          lbm=0
22237          xmm=xmeta
22238       endif
22239 c
22240       return
22241       end
22242 c
22243 c     Generate angular distribution of Deuteron in the CMS frame:
22244       subroutine bbdangle(pxd,pyd,pzd,nt,ipert1,ianti,idloop,pfinal,
22245      1 dprob1,lbm)
22246       PARAMETER (PI=3.1415926)
22247       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22248      1     px1n,py1n,pz1n,dp1n
22249       common /dpi/em2,lb2
22250       COMMON/RNDF77/NSEED
22251       common /para8/ idpert,npertd,idxsec
22252       COMMON /AREVT/ IAEVT, IARUN, MISS
22253       SAVE   
22254 c     take isotropic distribution for now:
22255       C1=1.0-2.0*RANART(NSEED)
22256       T1=2.0*PI*RANART(NSEED)
22257       S1=SQRT(1.0-C1**2)
22258       CT1=COS(T1)
22259       ST1=SIN(T1)
22260 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
22261       PZd=pfinal*C1
22262       PXd=pfinal*S1*CT1 
22263       PYd=pfinal*S1*ST1
22264 clin-5/2008 track the number of produced deuterons:
22265       if(idpert.eq.1.and.npertd.ge.1) then
22266          dprob=dprob1
22267       elseif(idpert.eq.2.and.npertd.ge.1) then
22268          dprob=1./float(npertd)
22269       endif
22270       if(ianti.eq.0) then
22271          if(idpert.eq.0.or.(idpert.eq.1.and.ipert1.eq.0).or.
22272      1        (idpert.eq.2.and.idloop.eq.(npertd+1))) then
22273             write (91,*) lb1,' *',lb2,' ->d+',lbm,' (regular d prodn) 
22274      1 @evt#',iaevt,' @nt=',nt
22275          elseif((idpert.eq.1.or.idpert.eq.2).and.idloop.eq.npertd) then
22276             write (91,*) lb1,' *',lb2,' ->d+',lbm,' (pert d prodn) 
22277      1 @evt#',iaevt,' @nt=',nt,' @prob=',dprob
22278          endif
22279       else
22280          if(idpert.eq.0.or.(idpert.eq.1.and.ipert1.eq.0).or.
22281      1        (idpert.eq.2.and.idloop.eq.(npertd+1))) then
22282             write (91,*) lb1,' *',lb2,' ->d+',lbm,' (regular dbar prodn) 
22283      1 @evt#',iaevt,' @nt=',nt
22284          elseif((idpert.eq.1.or.idpert.eq.2).and.idloop.eq.npertd) then
22285             write (91,*) lb1,' *',lb2,' ->d+',lbm,' (pert dbar prodn) 
22286      1 @evt#',iaevt,' @nt=',nt,' @prob=',dprob
22287          endif
22288       endif
22289 c
22290       return
22291       end
22292 c
22293 c     Deuteron+Meson->B+B cross section (in mb)
22294       subroutine sdmbb(SRT,sdm,ianti)
22295       PARAMETER (AMN=0.939457,AMP=0.93828,
22296      1     AM0=1.232,AM1440=1.44,AM1535=1.535,srt0=2.012)
22297       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22298      1     px1n,py1n,pz1n,dp1n
22299       common /dpi/em2,lb2
22300       common /dpifsl/lbnn1,lbnn2,lbnd1,lbnd2,lbns1,lbns2,lbnp1,lbnp2,
22301      1     lbdd1,lbdd2,lbds1,lbds2,lbdp1,lbdp2,lbss1,lbss2,
22302      2     lbsp1,lbsp2,lbpp1,lbpp2
22303       common /dpifsm/xmnn1,xmnn2,xmnd1,xmnd2,xmns1,xmns2,xmnp1,xmnp2,
22304      1     xmdd1,xmdd2,xmds1,xmds2,xmdp1,xmdp2,xmss1,xmss2,
22305      2     xmsp1,xmsp2,xmpp1,xmpp2
22306       common /dpisig/sdmel,sdmnn,sdmnd,sdmns,sdmnp,sdmdd,sdmds,sdmdp,
22307      1     sdmss,sdmsp,sdmpp
22308       common /para8/ idpert,npertd,idxsec
22309       COMMON/RNDF77/NSEED
22310       SAVE   
22311 c
22312       sdm=0.
22313       sdmel=0.
22314       sdmnn=0.
22315       sdmnd=0.
22316       sdmns=0.
22317       sdmnp=0.
22318       sdmdd=0.
22319       sdmds=0.
22320       sdmdp=0.
22321       sdmss=0.
22322       sdmsp=0.
22323       sdmpp=0.
22324 ctest off check Xsec using fixed mass for resonances:
22325 c      if(lb1.ge.25.and.lb1.le.27) then
22326 c         em1=0.776
22327 c      elseif(lb1.eq.28) then
22328 c         em1=0.783
22329 c      elseif(lb1.eq.0) then
22330 c         em1=0.548
22331 c      endif
22332 c      if(lb2.ge.25.and.lb2.le.27) then
22333 c         em2=0.776
22334 c      elseif(lb2.eq.28) then
22335 c         em2=0.783
22336 c      elseif(lb2.eq.0) then
22337 c         em2=0.548
22338 c      endif
22339 c
22340       if(srt.le.(em1+em2)) return
22341       s=srt**2
22342       pinitial=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
22343       fs=fnndpi(s)
22344 c     Determine isospin and spin factors for the ratio between 
22345 c     Deuteron+Meson->BB and BB->Deuteron+Meson cross sections:
22346       if(idxsec.eq.1.or.idxsec.eq.2) then
22347 c     Assume B+B -> d+Meson has the same cross sections as N+N -> d+pi, 
22348 c     then determine d+Meson -> B+B cross sections:
22349          if((lb1.ge.3.and.lb1.le.5).or.
22350      1        (lb2.ge.3.and.lb2.le.5)) then
22351             xnnfactor=8./9.
22352          elseif((lb1.ge.25.and.lb1.le.27).or.
22353      1           (lb2.ge.25.and.lb2.le.27)) then
22354             xnnfactor=8./27.
22355          elseif(lb1.eq.28.or.lb2.eq.28) then
22356             xnnfactor=8./9.
22357          elseif(lb1.eq.0.or.lb2.eq.0) then
22358             xnnfactor=8./3.
22359          endif
22360       else
22361 c     Assume d+Meson -> B+B has the same cross sections as d+pi -> N+N:
22362       endif
22363 clin-9/2008 For elastic collisions:
22364       if(idxsec.eq.1.or.idxsec.eq.3) then
22365 c     1/3: assume the same |matrix element|**2/s (after averaging over initial 
22366 c     spins and isospins) for d+Meson elastic at the same sqrt(s);
22367          sdmel=fdpiel(s)
22368       elseif(idxsec.eq.2.or.idxsec.eq.4) then
22369 c     2/4: assume the same |matrix element|**2/s (after averaging over initial 
22370 c     spins and isospins) for d+Meson elastic at the same sqrt(s)-threshold:
22371          threshold=em1+em2
22372          snew=(srt-threshold+srt0)**2
22373          sdmel=fdpiel(snew)
22374       endif
22375 c
22376 *     NN: DETERMINE THE CHARGE STATES OF PARTICLESIN THE FINAL STATE
22377       IF(((lb1.eq.5.or.lb2.eq.5.or.lb1.eq.27.or.lb2.eq.27)
22378      1     .and.ianti.eq.0).or.
22379      2     ((lb1.eq.3.or.lb2.eq.3.or.lb1.eq.25.or.lb2.eq.25)
22380      3     .and.ianti.eq.1))THEN
22381 *     (1) FOR Deuteron+(pi+,rho+) -> P+P or DeuteronBar+(pi-,rho-)-> PBar+PBar:
22382          lbnn1=1
22383          lbnn2=1
22384          xmnn1=amp
22385          xmnn2=amp
22386       ELSEIF(lb1.eq.3.or.lb2.eq.3.or.lb1.eq.26.or.lb2.eq.26
22387      1        .or.lb1.eq.28.or.lb2.eq.28.or.lb1.eq.0.or.lb2.eq.0)THEN
22388 *     (2) FOR Deuteron+(pi0,rho0,omega,eta) -> N+P 
22389 *     or DeuteronBar+(pi0,rho0,omega,eta) ->NBar+PBar:
22390          lbnn1=2
22391          lbnn2=1
22392          xmnn1=amn
22393          xmnn2=amp
22394       ELSE
22395 *     (3) FOR Deuteron+(pi-,rho-) -> N+N or DeuteronBar+(pi+,rho+)-> NBar+NBar:
22396          lbnn1=2
22397          lbnn2=2
22398          xmnn1=amn
22399          xmnn2=amn
22400       ENDIF
22401       if(srt.gt.(xmnn1+xmnn2)) then
22402          pfinal=sqrt((s-(xmnn1+xmnn2)**2)*(s-(xmnn1-xmnn2)**2))/2./srt
22403          if(idxsec.eq.1) then
22404 c     1: assume the same |matrix element|**2/s (after averaging over initial 
22405 c     spins and isospins) for B+B -> deuteron+meson at the same sqrt(s);
22406             sdmnn=fs*pfinal/pinitial*3./16.*xnnfactor
22407          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22408             threshold=amax1(xmnn1+xmnn2,em1+em2)
22409             snew=(srt-threshold+srt0)**2
22410             if(idxsec.eq.2) then
22411 c     2: assume the same |matrix element|**2/s for B+B -> deuteron+meson 
22412 c     at the same sqrt(s)-threshold:
22413                sdmnn=fnndpi(snew)*pfinal/pinitial*3./16.*xnnfactor
22414             elseif(idxsec.eq.4) then
22415 c     4: assume the same |matrix element|**2/s for B+B <- deuteron+meson 
22416 c     at the same sqrt(s)-threshold:
22417                sdmnn=fnndpi(snew)*pfinal/pinitial/6.
22418             endif
22419          elseif(idxsec.eq.3) then
22420 c     3: assume the same |matrix element|**2/s for B+B <- deuteron+meson 
22421 c     at the same sqrt(s):
22422             sdmnn=fs*pfinal/pinitial/6.
22423          endif
22424       endif
22425 c     
22426 *     ND: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22427       lbnd1=1+int(2*RANART(NSEED))
22428       lbnd2=6+int(4*RANART(NSEED))
22429       if(lbnd1.eq.1) then
22430          xmnd1=amp
22431       elseif(lbnd1.eq.2) then
22432          xmnd1=amn
22433       endif
22434       xmnd2=am0
22435       if(srt.gt.(xmnd1+xmnd2)) then
22436          pfinal=sqrt((s-(xmnd1+xmnd2)**2)*(s-(xmnd1-xmnd2)**2))/2./srt
22437          if(idxsec.eq.1) then
22438 c     The spin- and isospin-averaged factor is 8-times larger for ND:
22439             sdmnd=fs*pfinal/pinitial*3./16.*(xnnfactor*8.)
22440          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22441             threshold=amax1(xmnd1+xmnd2,em1+em2)
22442             snew=(srt-threshold+srt0)**2
22443             if(idxsec.eq.2) then
22444                sdmnd=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*8.)
22445             elseif(idxsec.eq.4) then
22446                sdmnd=fnndpi(snew)*pfinal/pinitial/6.
22447             endif
22448          elseif(idxsec.eq.3) then
22449             sdmnd=fs*pfinal/pinitial/6.
22450          endif
22451       endif
22452 c
22453 *     NS: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22454       lbns1=1+int(2*RANART(NSEED))
22455       lbns2=10+int(2*RANART(NSEED))
22456       if(lbns1.eq.1) then
22457          xmns1=amp
22458       elseif(lbns1.eq.2) then
22459          xmns1=amn
22460       endif
22461       xmns2=am1440
22462       if(srt.gt.(xmns1+xmns2)) then
22463          pfinal=sqrt((s-(xmns1+xmns2)**2)*(s-(xmns1-xmns2)**2))/2./srt
22464          if(idxsec.eq.1) then
22465             sdmns=fs*pfinal/pinitial*3./16.*(xnnfactor*2.)
22466          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22467             threshold=amax1(xmns1+xmns2,em1+em2)
22468             snew=(srt-threshold+srt0)**2
22469             if(idxsec.eq.2) then
22470                sdmns=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*2.)
22471             elseif(idxsec.eq.4) then
22472                sdmns=fnndpi(snew)*pfinal/pinitial/6.
22473             endif
22474          elseif(idxsec.eq.3) then
22475             sdmns=fs*pfinal/pinitial/6.
22476          endif
22477       endif
22478 c
22479 *     NP: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22480       lbnp1=1+int(2*RANART(NSEED))
22481       lbnp2=12+int(2*RANART(NSEED))
22482       if(lbnp1.eq.1) then
22483          xmnp1=amp
22484       elseif(lbnp1.eq.2) then
22485          xmnp1=amn
22486       endif
22487       xmnp2=am1535
22488       if(srt.gt.(xmnp1+xmnp2)) then
22489          pfinal=sqrt((s-(xmnp1+xmnp2)**2)*(s-(xmnp1-xmnp2)**2))/2./srt
22490          if(idxsec.eq.1) then
22491             sdmnp=fs*pfinal/pinitial*3./16.*(xnnfactor*2.)
22492          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22493             threshold=amax1(xmnp1+xmnp2,em1+em2)
22494             snew=(srt-threshold+srt0)**2
22495             if(idxsec.eq.2) then
22496                sdmnp=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*2.)
22497             elseif(idxsec.eq.4) then
22498                sdmnp=fnndpi(snew)*pfinal/pinitial/6.
22499             endif
22500          elseif(idxsec.eq.3) then
22501             sdmnp=fs*pfinal/pinitial/6.
22502          endif
22503       endif
22504 c
22505 *     DD: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22506       lbdd1=6+int(4*RANART(NSEED))
22507       lbdd2=6+int(4*RANART(NSEED))
22508       xmdd1=am0
22509       xmdd2=am0
22510       if(srt.gt.(xmdd1+xmdd2)) then
22511          pfinal=sqrt((s-(xmdd1+xmdd2)**2)*(s-(xmdd1-xmdd2)**2))/2./srt
22512          if(idxsec.eq.1) then
22513             sdmdd=fs*pfinal/pinitial*3./16.*(xnnfactor*16.)
22514          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22515             threshold=amax1(xmdd1+xmdd2,em1+em2)
22516             snew=(srt-threshold+srt0)**2
22517             if(idxsec.eq.2) then
22518                sdmdd=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*16.)
22519             elseif(idxsec.eq.4) then
22520                sdmdd=fnndpi(snew)*pfinal/pinitial/6.
22521             endif
22522          elseif(idxsec.eq.3) then
22523             sdmdd=fs*pfinal/pinitial/6.
22524          endif
22525       endif
22526 c
22527 *     DS: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22528       lbds1=6+int(4*RANART(NSEED))
22529       lbds2=10+int(2*RANART(NSEED))
22530       xmds1=am0
22531       xmds2=am1440
22532       if(srt.gt.(xmds1+xmds2)) then
22533          pfinal=sqrt((s-(xmds1+xmds2)**2)*(s-(xmds1-xmds2)**2))/2./srt
22534          if(idxsec.eq.1) then
22535             sdmds=fs*pfinal/pinitial*3./16.*(xnnfactor*8.)
22536          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22537             threshold=amax1(xmds1+xmds2,em1+em2)
22538             snew=(srt-threshold+srt0)**2
22539             if(idxsec.eq.2) then
22540                sdmds=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*8.)
22541             elseif(idxsec.eq.4) then
22542                sdmds=fnndpi(snew)*pfinal/pinitial/6.
22543             endif
22544          elseif(idxsec.eq.3) then
22545             sdmds=fs*pfinal/pinitial/6.
22546          endif
22547       endif
22548 c
22549 *     DP: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22550       lbdp1=6+int(4*RANART(NSEED))
22551       lbdp2=12+int(2*RANART(NSEED))
22552       xmdp1=am0
22553       xmdp2=am1535
22554       if(srt.gt.(xmdp1+xmdp2)) then
22555          pfinal=sqrt((s-(xmdp1+xmdp2)**2)*(s-(xmdp1-xmdp2)**2))/2./srt
22556          if(idxsec.eq.1) then
22557             sdmdp=fs*pfinal/pinitial*3./16.*(xnnfactor*8.)
22558          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22559             threshold=amax1(xmdp1+xmdp2,em1+em2)
22560             snew=(srt-threshold+srt0)**2
22561             if(idxsec.eq.2) then
22562                sdmdp=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*8.)
22563             elseif(idxsec.eq.4) then
22564                sdmdp=fnndpi(snew)*pfinal/pinitial/6.
22565             endif
22566          elseif(idxsec.eq.3) then
22567             sdmdp=fs*pfinal/pinitial/6.
22568          endif
22569       endif
22570 c
22571 *     SS: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22572       lbss1=10+int(2*RANART(NSEED))
22573       lbss2=10+int(2*RANART(NSEED))
22574       xmss1=am1440
22575       xmss2=am1440
22576       if(srt.gt.(xmss1+xmss2)) then
22577          pfinal=sqrt((s-(xmss1+xmss2)**2)*(s-(xmss1-xmss2)**2))/2./srt
22578          if(idxsec.eq.1) then
22579             sdmss=fs*pfinal/pinitial*3./16.*xnnfactor
22580          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22581             threshold=amax1(xmss1+xmss2,em1+em2)
22582             snew=(srt-threshold+srt0)**2
22583             if(idxsec.eq.2) then
22584                sdmss=fnndpi(snew)*pfinal/pinitial*3./16.*xnnfactor
22585             elseif(idxsec.eq.4) then
22586                sdmss=fnndpi(snew)*pfinal/pinitial/6.
22587             endif
22588          elseif(idxsec.eq.3) then
22589             sdmns=fs*pfinal/pinitial/6.
22590          endif
22591       endif
22592 c
22593 *     SP: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22594       lbsp1=10+int(2*RANART(NSEED))
22595       lbsp2=12+int(2*RANART(NSEED))
22596       xmsp1=am1440
22597       xmsp2=am1535
22598       if(srt.gt.(xmsp1+xmsp2)) then
22599          pfinal=sqrt((s-(xmsp1+xmsp2)**2)*(s-(xmsp1-xmsp2)**2))/2./srt
22600          if(idxsec.eq.1) then
22601             sdmsp=fs*pfinal/pinitial*3./16.*(xnnfactor*2.)
22602          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22603             threshold=amax1(xmsp1+xmsp2,em1+em2)
22604             snew=(srt-threshold+srt0)**2
22605             if(idxsec.eq.2) then
22606                sdmsp=fnndpi(snew)*pfinal/pinitial*3./16.*(xnnfactor*2.)
22607             elseif(idxsec.eq.4) then
22608                sdmsp=fnndpi(snew)*pfinal/pinitial/6.
22609             endif
22610          elseif(idxsec.eq.3) then
22611             sdmsp=fs*pfinal/pinitial/6.
22612          endif
22613       endif
22614 c
22615 *     PP: DETERMINE THE CHARGE STATES OF PARTICLES IN THE FINAL STATE
22616       lbpp1=12+int(2*RANART(NSEED))
22617       lbpp2=12+int(2*RANART(NSEED))
22618       xmpp1=am1535
22619       xmpp2=am1535
22620       if(srt.gt.(xmpp1+xmpp2)) then
22621          pfinal=sqrt((s-(xmpp1+xmpp2)**2)*(s-(xmpp1-xmpp2)**2))/2./srt
22622          if(idxsec.eq.1) then
22623             sdmpp=fs*pfinal/pinitial*3./16.*xnnfactor
22624          elseif(idxsec.eq.2.or.idxsec.eq.4) then
22625             threshold=amax1(xmpp1+xmpp2,em1+em2)
22626             snew=(srt-threshold+srt0)**2
22627             if(idxsec.eq.2) then
22628                sdmpp=fnndpi(snew)*pfinal/pinitial*3./16.*xnnfactor
22629             elseif(idxsec.eq.4) then
22630                sdmpp=fnndpi(snew)*pfinal/pinitial/6.
22631             endif
22632          elseif(idxsec.eq.3) then
22633             sdmpp=fs*pfinal/pinitial/6.
22634          endif
22635       endif
22636 c
22637       sdm=sdmel+sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp
22638      1     +sdmss+sdmsp+sdmpp
22639       if(ianti.eq.1) then
22640          lbnn1=-lbnn1
22641          lbnn2=-lbnn2
22642          lbnd1=-lbnd1
22643          lbnd2=-lbnd2
22644          lbns1=-lbns1
22645          lbns2=-lbns2
22646          lbnp1=-lbnp1
22647          lbnp2=-lbnp2
22648          lbdd1=-lbdd1
22649          lbdd2=-lbdd2
22650          lbds1=-lbds1
22651          lbds2=-lbds2
22652          lbdp1=-lbdp1
22653          lbdp2=-lbdp2
22654          lbss1=-lbss1
22655          lbss2=-lbss2
22656          lbsp1=-lbsp1
22657          lbsp2=-lbsp2
22658          lbpp1=-lbpp1
22659          lbpp2=-lbpp2
22660       endif
22661 ctest off
22662 c      write(98,100) srt,sdmnn,sdmnd,sdmns,sdmnp,sdmdd,sdmds,sdmdp,
22663 c     1     sdmss,sdmsp,sdmpp,sdm
22664 c 100  format(f5.2,11(1x,f5.1))
22665 c
22666       return
22667       end
22668 c
22669 clin-9/2008 Deuteron+Meson ->B+B and elastic collisions
22670       SUBROUTINE crdmbb(PX,PY,PZ,SRT,I1,I2,IBLOCK,
22671      1     NTAG,sig,NT,ianti)
22672       PARAMETER (MAXSTR=150001,MAXR=1)
22673       COMMON /AA/R(3,MAXSTR)
22674       COMMON /BB/ P(3,MAXSTR)
22675       COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
22676       COMMON /CC/ E(MAXSTR)
22677       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
22678       COMMON /AREVT/ IAEVT, IARUN, MISS
22679       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22680      1     px1n,py1n,pz1n,dp1n
22681       common /dpi/em2,lb2
22682       common /para8/ idpert,npertd,idxsec
22683       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
22684      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
22685      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
22686       common /dpifsl/lbnn1,lbnn2,lbnd1,lbnd2,lbns1,lbns2,lbnp1,lbnp2,
22687      1     lbdd1,lbdd2,lbds1,lbds2,lbdp1,lbdp2,lbss1,lbss2,
22688      2     lbsp1,lbsp2,lbpp1,lbpp2
22689       common /dpifsm/xmnn1,xmnn2,xmnd1,xmnd2,xmns1,xmns2,xmnp1,xmnp2,
22690      1     xmdd1,xmdd2,xmds1,xmds2,xmdp1,xmdp2,xmss1,xmss2,
22691      2     xmsp1,xmsp2,xmpp1,xmpp2
22692       common /dpisig/sdmel,sdmnn,sdmnd,sdmns,sdmnp,sdmdd,sdmds,sdmdp,
22693      1     sdmss,sdmsp,sdmpp
22694       COMMON/RNDF77/NSEED
22695       SAVE   
22696 *-----------------------------------------------------------------------
22697       IBLOCK=0
22698       NTAG=0
22699       EM1=E(I1)
22700       EM2=E(I2)
22701       s=srt**2
22702       if(sig.le.0) return
22703 c
22704       if(iabs(lb1).eq.42) then
22705          ideut=i1
22706          lbm=lb2
22707          idm=i2
22708       else
22709          ideut=i2
22710          lbm=lb1
22711          idm=i1
22712       endif
22713 cccc  Elastic collision or destruction of perturbatively-produced deuterons:
22714       if((idpert.eq.1.or.idpert.eq.2).and.dpertp(ideut).ne.1.) then
22715 c     choose reaction channels:
22716          x1=RANART(NSEED)
22717          if(x1.le.sdmel/sig)then
22718 c     Elastic collisions:
22719             if(ianti.eq.0) then
22720                write(91,*) '  d+',lbm,' (pert d M elastic) @nt=',nt
22721      1              ,' @prob=',dpertp(ideut)
22722             else
22723                write(91,*) '  d+',lbm,' (pert dbar M elastic) @nt=',nt
22724      1              ,' @prob=',dpertp(ideut)
22725             endif
22726 
22727 clin-9/2012: check argument in sqrt():
22728             scheck=(s-(em1+em2)**2)*(s-(em1-em2)**2)
22729             if(scheck.lt.0) then
22730                write(99,*) 'scheck51: ', scheck
22731                scheck=0.
22732             endif
22733             pfinal=sqrt(scheck)/2./srt
22734 c            pfinal=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
22735 
22736             CALL dmelangle(pxn,pyn,pzn,pfinal)
22737             CALL ROTATE(PX,PY,PZ,Pxn,Pyn,Pzn)
22738             EdCM=SQRT(E(ideut)**2+Pxn**2+Pyn**2+Pzn**2)
22739             PdBETA=Pxn*BETAX+Pyn*BETAY+Pzn*BETAZ
22740             TRANSF=GAMMA*(GAMMA*PdBETA/(GAMMA+1.)+EdCM)
22741             Pt1d=BETAX*TRANSF+Pxn
22742             Pt2d=BETAY*TRANSF+Pyn
22743             Pt3d=BETAZ*TRANSF+Pzn
22744             p(1,ideut)=pt1d
22745             p(2,ideut)=pt2d
22746             p(3,ideut)=pt3d
22747             IBLOCK=504
22748             PX1=P(1,I1)
22749             PY1=P(2,I1)
22750             PZ1=P(3,I1)
22751             ID(I1)=2
22752             ID(I2)=2
22753 c     Change the position of the perturbative deuteron to that of 
22754 c     the meson to avoid consecutive collisions between them:
22755             R(1,ideut)=R(1,idm)
22756             R(2,ideut)=R(2,idm)
22757             R(3,ideut)=R(3,idm)
22758          else
22759 c     Destruction of deuterons:
22760             if(ianti.eq.0) then
22761                write(91,*) '  d+',lbm,' ->BB (pert d destrn) @nt=',nt
22762      1              ,' @prob=',dpertp(ideut)
22763             else
22764                write(91,*) '  d+',lbm,' ->BB (pert dbar destrn) @nt=',nt
22765      1              ,' @prob=',dpertp(ideut)
22766             endif
22767             e(ideut)=0.
22768             IBLOCK=502
22769          endif
22770          return
22771       endif
22772 c
22773 cccc  Destruction of regularly-produced deuterons:
22774       IBLOCK=502
22775 c     choose final state and assign masses here:
22776       x1=RANART(NSEED)
22777       if(x1.le.sdmnn/sig)then
22778          lbb1=lbnn1
22779          lbb2=lbnn2
22780          xmb1=xmnn1
22781          xmb2=xmnn2
22782       elseif(x1.le.(sdmnn+sdmnd)/sig)then
22783          lbb1=lbnd1
22784          lbb2=lbnd2
22785          xmb1=xmnd1
22786          xmb2=xmnd2
22787       elseif(x1.le.(sdmnn+sdmnd+sdmns)/sig)then
22788          lbb1=lbns1
22789          lbb2=lbns2
22790          xmb1=xmns1
22791          xmb2=xmns2
22792       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp)/sig)then
22793          lbb1=lbnp1
22794          lbb2=lbnp2
22795          xmb1=xmnp1
22796          xmb2=xmnp2
22797       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd)/sig)then
22798          lbb1=lbdd1
22799          lbb2=lbdd2
22800          xmb1=xmdd1
22801          xmb2=xmdd2
22802       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds)/sig)then
22803          lbb1=lbds1
22804          lbb2=lbds2
22805          xmb1=xmds1
22806          xmb2=xmds2
22807       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp)/sig)then
22808          lbb1=lbdp1
22809          lbb2=lbdp2
22810          xmb1=xmdp1
22811          xmb2=xmdp2
22812       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp
22813      1        +sdmss)/sig)then
22814          lbb1=lbss1
22815          lbb2=lbss2
22816          xmb1=xmss1
22817          xmb2=xmss2
22818       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp
22819      1        +sdmss+sdmsp)/sig)then
22820          lbb1=lbsp1
22821          lbb2=lbsp2
22822          xmb1=xmsp1
22823          xmb2=xmsp2
22824       elseif(x1.le.(sdmnn+sdmnd+sdmns+sdmnp+sdmdd+sdmds+sdmdp
22825      1        +sdmss+sdmsp+sdmpp)/sig)then
22826          lbb1=lbpp1
22827          lbb2=lbpp2
22828          xmb1=xmpp1
22829          xmb2=xmpp2
22830       else
22831 c     Elastic collision:
22832          lbb1=lb1
22833          lbb2=lb2
22834          xmb1=em1
22835          xmb2=em2
22836          IBLOCK=504
22837       endif
22838       LB(I1)=lbb1
22839       E(i1)=xmb1
22840       LB(I2)=lbb2
22841       E(I2)=xmb2
22842       lb1=lb(i1)
22843       lb2=lb(i2)
22844 
22845 clin-9/2012: check argument in sqrt():
22846       scheck=(s-(xmb1+xmb2)**2)*(s-(xmb1-xmb2)**2)
22847       if(scheck.lt.0) then
22848          write(99,*) 'scheck52: ', scheck
22849          scheck=0.
22850       endif
22851       pfinal=sqrt(scheck)/2./srt
22852 c      pfinal=sqrt((s-(xmb1+xmb2)**2)*(s-(xmb1-xmb2)**2))/2./srt
22853 
22854       if(iblock.eq.502) then
22855          CALL dmangle(pxn,pyn,pzn,nt,ianti,pfinal,lbm)
22856       elseif(iblock.eq.504) then
22857          if(ianti.eq.0) then
22858             write (91,*) ' d+',lbm,' (regular d M elastic) @evt#',
22859      1           iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22860          else
22861             write (91,*) ' d+',lbm,' (regular dbar M elastic) @evt#',
22862      1           iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22863          endif
22864          CALL dmelangle(pxn,pyn,pzn,pfinal)
22865       else
22866          print *, 'Wrong iblock number in crdmbb()'
22867          stop
22868       endif
22869 *     ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
22870 c     (This is not needed for isotropic distributions)
22871       CALL ROTATE(PX,PY,PZ,Pxn,Pyn,Pzn)
22872 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
22873 *     FROM THE NUCLEUS-NUCLEUS CMS. FRAME INTO LAB FRAME:
22874 *     For the 1st baryon:
22875       E1CM=SQRT(E(I1)**2+Pxn**2+Pyn**2+Pzn**2)
22876       P1BETA=Pxn*BETAX+Pyn*BETAY+Pzn*BETAZ
22877       TRANSF=GAMMA*(GAMMA*P1BETA/(GAMMA+1.)+E1CM)
22878       Pt1i1=BETAX*TRANSF+Pxn
22879       Pt2i1=BETAY*TRANSF+Pyn
22880       Pt3i1=BETAZ*TRANSF+Pzn
22881 c
22882       p(1,i1)=pt1i1
22883       p(2,i1)=pt2i1
22884       p(3,i1)=pt3i1
22885 *     For the 2nd baryon:
22886       E2CM=SQRT(E(I2)**2+Pxn**2+Pyn**2+Pzn**2)
22887       P2BETA=-Pxn*BETAX-Pyn*BETAY-Pzn*BETAZ
22888       TRANSF=GAMMA*(GAMMA*P2BETA/(GAMMA+1.)+E2CM)
22889       Pt1I2=BETAX*TRANSF-Pxn
22890       Pt2I2=BETAY*TRANSF-Pyn
22891       Pt3I2=BETAZ*TRANSF-Pzn
22892 c     
22893       p(1,i2)=pt1i2
22894       p(2,i2)=pt2i2
22895       p(3,i2)=pt3i2
22896 c
22897       PX1=P(1,I1)
22898       PY1=P(2,I1)
22899       PZ1=P(3,I1)
22900       EM1=E(I1)
22901       EM2=E(I2)
22902       ID(I1)=2
22903       ID(I2)=2
22904       RETURN
22905       END
22906 c
22907 c     Generate angular distribution of BB from d+meson in the CMS frame:
22908       subroutine dmangle(pxn,pyn,pzn,nt,ianti,pfinal,lbm)
22909       PARAMETER (PI=3.1415926)
22910       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22911      1     px1n,py1n,pz1n,dp1n
22912       common /dpi/em2,lb2
22913       COMMON /AREVT/ IAEVT, IARUN, MISS
22914       COMMON/RNDF77/NSEED
22915       SAVE   
22916 c     take isotropic distribution for now:
22917       C1=1.0-2.0*RANART(NSEED)
22918       T1=2.0*PI*RANART(NSEED)
22919       S1=SQRT(1.0-C1**2)
22920       CT1=COS(T1)
22921       ST1=SIN(T1)
22922 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
22923       Pzn=pfinal*C1
22924       Pxn=pfinal*S1*CT1 
22925       Pyn=pfinal*S1*ST1
22926 clin-5/2008 track the number of regularly-destructed deuterons:
22927       if(ianti.eq.0) then
22928          write (91,*) ' d+',lbm,' ->BB (regular d destrn) @evt#',
22929      1        iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22930       else
22931          write (91,*) ' d+',lbm,' ->BB (regular dbar destrn) @evt#',
22932      1        iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
22933       endif
22934 c
22935       return
22936       end
22937 c
22938 c     Angular distribution of d+meson elastic collisions in the CMS frame:
22939       subroutine dmelangle(pxn,pyn,pzn,pfinal)
22940       PARAMETER (PI=3.1415926)
22941       COMMON/RNDF77/NSEED
22942       SAVE   
22943 c     take isotropic distribution for now:
22944       C1=1.0-2.0*RANART(NSEED)
22945       T1=2.0*PI*RANART(NSEED)
22946       S1=SQRT(1.0-C1**2)
22947       CT1=COS(T1)
22948       ST1=SIN(T1)
22949 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
22950       Pzn=pfinal*C1
22951       Pxn=pfinal*S1*CT1 
22952       Pyn=pfinal*S1*ST1
22953       return
22954       end
22955 c
22956 clin-9/2008 Deuteron+Baryon elastic cross section (in mb)
22957       subroutine sdbelastic(SRT,sdb)
22958       PARAMETER (srt0=2.012)
22959       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22960      1     px1n,py1n,pz1n,dp1n
22961       common /dpi/em2,lb2
22962       common /para8/ idpert,npertd,idxsec
22963       SAVE   
22964 c
22965       sdb=0.
22966       sdbel=0.
22967       if(srt.le.(em1+em2)) return
22968       s=srt**2
22969 c     For elastic collisions:
22970       if(idxsec.eq.1.or.idxsec.eq.3) then
22971 c     1/3: assume the same |matrix element|**2/s (after averaging over initial 
22972 c     spins and isospins) for d+Baryon elastic at the same sqrt(s);
22973          sdbel=fdbel(s)
22974       elseif(idxsec.eq.2.or.idxsec.eq.4) then
22975 c     2/4: assume the same |matrix element|**2/s (after averaging over initial 
22976 c     spins and isospins) for d+Baryon elastic at the same sqrt(s)-threshold:
22977          threshold=em1+em2
22978          snew=(srt-threshold+srt0)**2
22979          sdbel=fdbel(snew)
22980       endif
22981       sdb=sdbel
22982       return
22983       end
22984 clin-9/2008 Deuteron+Baryon elastic collisions
22985       SUBROUTINE crdbel(PX,PY,PZ,SRT,I1,I2,IBLOCK,
22986      1     NTAG,sig,NT,ianti)
22987       PARAMETER (MAXSTR=150001,MAXR=1)
22988       COMMON /AA/R(3,MAXSTR)
22989       COMMON /BB/ P(3,MAXSTR)
22990       COMMON /BG/BETAX,BETAY,BETAZ,GAMMA
22991       COMMON /CC/ E(MAXSTR)
22992       COMMON /EE/ ID(MAXSTR),LB(MAXSTR)
22993       COMMON /AREVT/ IAEVT, IARUN, MISS
22994       common/leadng/lb1,px1,py1,pz1,em1,e1,xfnl,yfnl,zfnl,tfnl,
22995      1     px1n,py1n,pz1n,dp1n
22996       common /dpi/em2,lb2
22997       common /para8/ idpert,npertd,idxsec
22998       COMMON /dpert/dpertt(MAXSTR,MAXR),dpertp(MAXSTR),dplast(MAXSTR),
22999      1     dpdcy(MAXSTR),dpdpi(MAXSTR,MAXR),dpt(MAXSTR, MAXR),
23000      2     dpp1(MAXSTR,MAXR),dppion(MAXSTR,MAXR)
23001       SAVE   
23002 *-----------------------------------------------------------------------
23003       IBLOCK=0
23004       NTAG=0
23005       EM1=E(I1)
23006       EM2=E(I2)
23007       s=srt**2
23008       if(sig.le.0) return
23009       IBLOCK=503
23010 c
23011       if(iabs(lb1).eq.42) then
23012          ideut=i1
23013          lbb=lb2
23014          idb=i2
23015       else
23016          ideut=i2
23017          lbb=lb1
23018          idb=i1
23019       endif
23020 cccc  Elastic collision of perturbatively-produced deuterons:
23021       if((idpert.eq.1.or.idpert.eq.2).and.dpertp(ideut).ne.1.) then
23022          if(ianti.eq.0) then
23023             write(91,*) '  d+',lbb,' (pert d B elastic) @nt=',nt
23024      1           ,' @prob=',dpertp(ideut),p(1,idb),p(2,idb)
23025      2           ,p(1,ideut),p(2,ideut)
23026          else
23027             write(91,*) '  d+',lbb,' (pert dbar Bbar elastic) @nt=',nt
23028      1           ,' @prob=',dpertp(ideut),p(1,idb),p(2,idb)
23029      2           ,p(1,ideut),p(2,ideut)
23030          endif
23031 
23032 clin-9/2012: check argument in sqrt():
23033          scheck=(s-(em1+em2)**2)*(s-(em1-em2)**2)
23034          if(scheck.lt.0) then
23035             write(99,*) 'scheck53: ', scheck
23036             scheck=0.
23037          endif
23038          pfinal=sqrt(scheck)/2./srt
23039 c         pfinal=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
23040 
23041          CALL dbelangle(pxn,pyn,pzn,pfinal)
23042          CALL ROTATE(PX,PY,PZ,Pxn,Pyn,Pzn)
23043          EdCM=SQRT(E(ideut)**2+Pxn**2+Pyn**2+Pzn**2)
23044          PdBETA=Pxn*BETAX+Pyn*BETAY+Pzn*BETAZ
23045          TRANSF=GAMMA*(GAMMA*PdBETA/(GAMMA+1.)+EdCM)
23046          Pt1d=BETAX*TRANSF+Pxn
23047          Pt2d=BETAY*TRANSF+Pyn
23048          Pt3d=BETAZ*TRANSF+Pzn
23049          p(1,ideut)=pt1d
23050          p(2,ideut)=pt2d
23051          p(3,ideut)=pt3d
23052          PX1=P(1,I1)
23053          PY1=P(2,I1)
23054          PZ1=P(3,I1)
23055          ID(I1)=2
23056          ID(I2)=2
23057 c     Change the position of the perturbative deuteron to that of 
23058 c     the baryon to avoid consecutive collisions between them:
23059          R(1,ideut)=R(1,idb)
23060          R(2,ideut)=R(2,idb)
23061          R(3,ideut)=R(3,idb)
23062          return
23063       endif
23064 c
23065 c     Elastic collision of regularly-produced deuterons:
23066       if(ianti.eq.0) then
23067          write (91,*) ' d+',lbb,' (regular d B elastic) @evt#',
23068      1        iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
23069       else
23070          write (91,*) ' d+',lbb,' (regular dbar Bbar elastic) @evt#',
23071      1        iaevt,' @nt=',nt,' lb1,2=',lb1,lb2
23072       endif
23073 clin-9/2012: check argument in sqrt():
23074       scheck=(s-(em1+em2)**2)*(s-(em1-em2)**2)
23075       if(scheck.lt.0) then
23076          write(99,*) 'scheck54: ', scheck
23077          scheck=0.
23078       endif
23079       pfinal=sqrt(scheck)/2./srt
23080 c      pfinal=sqrt((s-(em1+em2)**2)*(s-(em1-em2)**2))/2./srt
23081 
23082       CALL dbelangle(pxn,pyn,pzn,pfinal)
23083 *     ROTATE THE MOMENTA OF PARTICLES IN THE CMS OF P1+P2
23084 c     (This is not needed for isotropic distributions)
23085       CALL ROTATE(PX,PY,PZ,Pxn,Pyn,Pzn)
23086 *     LORENTZ-TRANSFORMATION OF THE MOMENTUM OF PARTICLES IN THE FINAL STATE 
23087 *     FROM THE NUCLEUS-NUCLEUS CMS. FRAME INTO LAB FRAME:
23088 *     For the 1st baryon:
23089       E1CM=SQRT(E(I1)**2+Pxn**2+Pyn**2+Pzn**2)
23090       P1BETA=Pxn*BETAX+Pyn*BETAY+Pzn*BETAZ
23091       TRANSF=GAMMA*(GAMMA*P1BETA/(GAMMA+1.)+E1CM)
23092       Pt1i1=BETAX*TRANSF+Pxn
23093       Pt2i1=BETAY*TRANSF+Pyn
23094       Pt3i1=BETAZ*TRANSF+Pzn
23095 c
23096       p(1,i1)=pt1i1
23097       p(2,i1)=pt2i1
23098       p(3,i1)=pt3i1
23099 *     For the 2nd baryon:
23100       E2CM=SQRT(E(I2)**2+Pxn**2+Pyn**2+Pzn**2)
23101       P2BETA=-Pxn*BETAX-Pyn*BETAY-Pzn*BETAZ
23102       TRANSF=GAMMA*(GAMMA*P2BETA/(GAMMA+1.)+E2CM)
23103       Pt1I2=BETAX*TRANSF-Pxn
23104       Pt2I2=BETAY*TRANSF-Pyn
23105       Pt3I2=BETAZ*TRANSF-Pzn
23106 c     
23107       p(1,i2)=pt1i2
23108       p(2,i2)=pt2i2
23109       p(3,i2)=pt3i2
23110 c
23111       PX1=P(1,I1)
23112       PY1=P(2,I1)
23113       PZ1=P(3,I1)
23114       EM1=E(I1)
23115       EM2=E(I2)
23116       ID(I1)=2
23117       ID(I2)=2
23118       RETURN
23119       END
23120 c
23121 c     Part of the cross section function of NN->Deuteron+Pi (in mb):
23122       function fnndpi(s)
23123       parameter(srt0=2.012)
23124       if(s.le.srt0**2) then
23125          fnndpi=0.
23126       else
23127          fnndpi=26.*exp(-(s-4.65)**2/0.1)+4.*exp(-(s-4.65)**2/2.)
23128      1        +0.28*exp(-(s-6.)**2/10.)
23129       endif
23130       return
23131       end
23132 c
23133 c     Angular distribution of d+baryon elastic collisions in the CMS frame:
23134       subroutine dbelangle(pxn,pyn,pzn,pfinal)
23135       PARAMETER (PI=3.1415926)
23136       COMMON/RNDF77/NSEED
23137       SAVE   
23138 c     take isotropic distribution for now:
23139       C1=1.0-2.0*RANART(NSEED)
23140       T1=2.0*PI*RANART(NSEED)
23141       S1=SQRT(1.0-C1**2)
23142       CT1=COS(T1)
23143       ST1=SIN(T1)
23144 * THE MOMENTUM IN THE CMS IN THE FINAL STATE
23145       Pzn=pfinal*C1
23146       Pxn=pfinal*S1*CT1 
23147       Pyn=pfinal*S1*ST1
23148       return
23149       end
23150 c
23151 c     Cross section of Deuteron+Pi elastic (in mb):
23152       function fdpiel(s)
23153       parameter(srt0=2.012)
23154       if(s.le.srt0**2) then
23155          fdpiel=0.
23156       else
23157          fdpiel=63.*exp(-(s-4.67)**2/0.15)+15.*exp(-(s-6.25)**2/0.3)
23158       endif
23159       return
23160       end
23161 c
23162 c     Cross section of Deuteron+N elastic (in mb):
23163       function fdbel(s)
23164       parameter(srt0=2.012)
23165       if(s.le.srt0**2) then
23166          fdbel=0.
23167       else
23168          fdbel=2500.*exp(-(s-7.93)**2/0.003)
23169      1        +300.*exp(-(s-7.93)**2/0.1)+10.
23170       endif
23171       return
23172       end