| 1 | SUBROUTINE NIHILA | 
|---|
| 2 |  | 
|---|
| 3 | C----------------------------------------------------------------------- | 
|---|
| 4 | C  (AN)NIHILA(TION) | 
|---|
| 5 | C | 
|---|
| 6 | C  TREATES ANNIHILATION OF ANTINUCLEONS WITH FREE NUCLEONS | 
|---|
| 7 | C  MOMENTA CONSERVED IN ALL DIRECTIONS | 
|---|
| 8 | C  ENERGY CONSERVED BY MULTPLICATION OF ALL MOMENTA WITH A CORRECTION | 
|---|
| 9 | C  FACTOR, CONSERVING MOMENTUM BALANCE | 
|---|
| 10 | C  THIS SUBROUTINE IS CALLED FROM BOX60, BOX61, BOX62, AND BOX63 | 
|---|
| 11 | C | 
|---|
| 12 | C  DESIGN  : D. HECK    IK3  FZK KARLSRUHE | 
|---|
| 13 | C----------------------------------------------------------------------- | 
|---|
| 14 |  | 
|---|
| 15 | IMPLICIT DOUBLE PRECISION (A-H,O-Z) | 
|---|
| 16 | *KEEP,ANNI. | 
|---|
| 17 | COMMON /ANNI/    CAN,CANN | 
|---|
| 18 | DOUBLE PRECISION CAN(50),CANN(50) | 
|---|
| 19 | *KEEP,CONST. | 
|---|
| 20 | COMMON /CONST/   PI,PI2,OB3,TB3,ENEPER | 
|---|
| 21 | DOUBLE PRECISION PI,PI2,OB3,TB3,ENEPER | 
|---|
| 22 | *KEEP,MULT. | 
|---|
| 23 | COMMON /MULT/    EKINL,MSMM,MULTMA,MULTOT | 
|---|
| 24 | DOUBLE PRECISION EKINL | 
|---|
| 25 | INTEGER          MSMM,MULTMA(37,13),MULTOT(37,13) | 
|---|
| 26 | *KEEP,PAM. | 
|---|
| 27 | COMMON /PAM/     PAMA,SIGNUM | 
|---|
| 28 | DOUBLE PRECISION PAMA(6000),SIGNUM(6000) | 
|---|
| 29 | *KEEP,PARPAR. | 
|---|
| 30 | COMMON /PARPAR/  CURPAR,SECPAR,PRMPAR,OUTPAR,C, | 
|---|
| 31 | *                 E00,E00PN,PTOT0,PTOT0N,THICKH,ITYPE,LEVL | 
|---|
| 32 | DOUBLE PRECISION CURPAR(14),SECPAR(14),PRMPAR(14),OUTPAR(14), | 
|---|
| 33 | *                 C(50),E00,E00PN,PTOT0,PTOT0N,THICKH | 
|---|
| 34 | INTEGER          ITYPE,LEVL | 
|---|
| 35 | *KEEP,PARPAE. | 
|---|
| 36 | DOUBLE PRECISION GAMMA,COSTHE,PHI,H,T,X,Y,CHI,BETA,GCM,ECM | 
|---|
| 37 | EQUIVALENCE      (CURPAR(2),GAMMA),  (CURPAR(3),COSTHE), | 
|---|
| 38 | *                 (CURPAR(4), PHI ),  (CURPAR(5), H    ), | 
|---|
| 39 | *                 (CURPAR(6), T   ),  (CURPAR(7), X    ), | 
|---|
| 40 | *                 (CURPAR(8), Y   ),  (CURPAR(9), CHI  ), | 
|---|
| 41 | *                 (CURPAR(10),BETA),  (CURPAR(11),GCM  ), | 
|---|
| 42 | *                 (CURPAR(12),ECM ) | 
|---|
| 43 | *KEEP,RANDPA. | 
|---|
| 44 | COMMON /RANDPA/  FAC,U1,U2,RD,NSEQ,ISEED,KNOR | 
|---|
| 45 | DOUBLE PRECISION FAC,U1,U2 | 
|---|
| 46 | REAL             RD(3000) | 
|---|
| 47 | INTEGER          ISEED(103,10),NSEQ | 
|---|
| 48 | LOGICAL          KNOR | 
|---|
| 49 | *KEEP,RUNPAR. | 
|---|
| 50 | COMMON /RUNPAR/  FIXHEI,THICK0,HILOECM,HILOELB, | 
|---|
| 51 | *                 STEPFC,NRRUN,NSHOW,PATAPE,MONIIN, | 
|---|
| 52 | *                 MONIOU,MDEBUG,NUCNUC, | 
|---|
| 53 | *                 CETAPE, | 
|---|
| 54 | *                 SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL, | 
|---|
| 55 | *                 N1STTR,MDBASE, | 
|---|
| 56 | *                 DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR, | 
|---|
| 57 | *                 FIX1I,FMUADD,FNKG,FPRINT,FDBASE | 
|---|
| 58 | *                ,GHEISH,GHESIG | 
|---|
| 59 | COMMON /RUNPAC/  DSN,HOST,USER | 
|---|
| 60 | DOUBLE PRECISION FIXHEI,THICK0,HILOECM,HILOELB | 
|---|
| 61 | REAL             STEPFC | 
|---|
| 62 | INTEGER          NRRUN,NSHOW,PATAPE,MONIIN,MONIOU,MDEBUG,NUCNUC, | 
|---|
| 63 | *                 SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL, | 
|---|
| 64 | *                 N1STTR,MDBASE | 
|---|
| 65 | INTEGER          CETAPE | 
|---|
| 66 | CHARACTER*79     DSN | 
|---|
| 67 | CHARACTER*20     HOST,USER | 
|---|
| 68 |  | 
|---|
| 69 | LOGICAL          DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR, | 
|---|
| 70 | *                 FIX1I,FMUADD,FNKG,FPRINT,FDBASE | 
|---|
| 71 | *                ,GHEISH,GHESIG | 
|---|
| 72 | *KEEP,VKIN. | 
|---|
| 73 | COMMON /VKIN/    BETACM | 
|---|
| 74 | DOUBLE PRECISION BETACM | 
|---|
| 75 | *KEND. | 
|---|
| 76 |  | 
|---|
| 77 | DOUBLE PRECISION E(10),PHIPAR(10),PL(10),PTR(10),PTSQ(10) | 
|---|
| 78 | DOUBLE PRECISION PX(10),PY(10) | 
|---|
| 79 | DIMENSION ISEQ(10),NTYP(10) | 
|---|
| 80 | C----------------------------------------------------------------------- | 
|---|
| 81 |  | 
|---|
| 82 | IF ( DEBUG ) WRITE(MDEBUG,444) (CURPAR(I),I=1,9) | 
|---|
| 83 | 444 FORMAT(' NIHILA: CURPAR=',1P,9E10.3) | 
|---|
| 84 |  | 
|---|
| 85 | IREP = 0 | 
|---|
| 86 |  | 
|---|
| 87 | C  RANDOM DECISION FOR ANNIHILATION WITH PROTON OR NEUTRON | 
|---|
| 88 |  | 
|---|
| 89 | 20  CONTINUE | 
|---|
| 90 | CALL RMMAR( RD,2,1 ) | 
|---|
| 91 | IREP = IREP + 1 | 
|---|
| 92 | C  AFTER THE 5TH TRY, QUIT THE ANNIHILATION WITHOUT ANY PION GENERATED | 
|---|
| 93 | IF ( IREP .GT. 5 ) GOTO 999 | 
|---|
| 94 | IF ( RD(1) .LE. 0.5 ) THEN | 
|---|
| 95 |  | 
|---|
| 96 | C----------------------------------------------------------------------- | 
|---|
| 97 | C  ANTIPROTON - PROTON AND ANTINEUTRON - NEUTRON ANNIHILATION | 
|---|
| 98 | IF     ( RD(2) .LE. CANN(1)  ) THEN | 
|---|
| 99 | C  ANNIHILATION INTO PI+, PI- | 
|---|
| 100 | NPIPOS = 1 | 
|---|
| 101 | NPINEG = 1 | 
|---|
| 102 | NPIZ   = 0 | 
|---|
| 103 | ELSEIF ( RD(2) .LE. CANN(2)  ) THEN | 
|---|
| 104 | C  ANNIHILATION INTO PI+, PI-, PI0 | 
|---|
| 105 | NPIPOS = 1 | 
|---|
| 106 | NPINEG = 1 | 
|---|
| 107 | NPIZ   = 1 | 
|---|
| 108 | ELSEIF ( RD(2) .LE. CANN(3)  ) THEN | 
|---|
| 109 | C  ANNIHILATION INTO PI+, PI-, 2PI0 | 
|---|
| 110 | NPIPOS = 1 | 
|---|
| 111 | NPINEG = 1 | 
|---|
| 112 | NPIZ   = 2 | 
|---|
| 113 | ELSEIF ( RD(2) .LE. CANN(4)  ) THEN | 
|---|
| 114 | C  ANNIHILATION INTO PI+, PI-, 3PI0 | 
|---|
| 115 | NPIPOS = 1 | 
|---|
| 116 | NPINEG = 1 | 
|---|
| 117 | NPIZ   = 3 | 
|---|
| 118 | ELSEIF ( RD(2) .LE. CANN(5)  ) THEN | 
|---|
| 119 | C  ANNIHILATION INTO PI+, PI-, 4PI0 | 
|---|
| 120 | NPIPOS = 1 | 
|---|
| 121 | NPINEG = 1 | 
|---|
| 122 | NPIZ   = 4 | 
|---|
| 123 | ELSEIF ( RD(2) .LE. CANN(6)  ) THEN | 
|---|
| 124 | C  ANNIHILATION INTO 2PI+, 2PI- | 
|---|
| 125 | NPIPOS = 2 | 
|---|
| 126 | NPINEG = 2 | 
|---|
| 127 | NPIZ   = 0 | 
|---|
| 128 | ELSEIF ( RD(2) .LE. CANN(7)  ) THEN | 
|---|
| 129 | C  ANNIHILATION INTO 2PI+, 2PI-, PI0 | 
|---|
| 130 | NPIPOS = 2 | 
|---|
| 131 | NPINEG = 2 | 
|---|
| 132 | NPIZ   = 1 | 
|---|
| 133 | ELSEIF ( RD(2) .LE. CANN(8)  ) THEN | 
|---|
| 134 | C  ANNIHILATION INTO 2PI+, 2PI-, 2PI0 | 
|---|
| 135 | NPIPOS = 2 | 
|---|
| 136 | NPINEG = 2 | 
|---|
| 137 | NPIZ   = 2 | 
|---|
| 138 | ELSEIF ( RD(2) .LE. CANN(9)  ) THEN | 
|---|
| 139 | C  ANNIHILATION INTO 2PI+, 2PI-, 3PI0 | 
|---|
| 140 | NPIPOS = 2 | 
|---|
| 141 | NPINEG = 2 | 
|---|
| 142 | NPIZ   = 3 | 
|---|
| 143 | ELSEIF ( RD(2) .LE. CANN(10) ) THEN | 
|---|
| 144 | C  ANNIHILATION INTO 3PI+, 3PI- | 
|---|
| 145 | NPIPOS = 3 | 
|---|
| 146 | NPINEG = 3 | 
|---|
| 147 | NPIZ   = 0 | 
|---|
| 148 | ELSEIF ( RD(2) .LE. CANN(11) ) THEN | 
|---|
| 149 | C  ANNIHILATION INTO 3PI+, 3PI-, PI0 | 
|---|
| 150 | NPIPOS = 3 | 
|---|
| 151 | NPINEG = 3 | 
|---|
| 152 | NPIZ   = 1 | 
|---|
| 153 | ELSEIF ( RD(2) .LE. CANN(12) ) THEN | 
|---|
| 154 | C  ANNIHILATION INTO 3PI+, 3PI-, 2PI0 | 
|---|
| 155 | NPIPOS = 3 | 
|---|
| 156 | NPINEG = 3 | 
|---|
| 157 | NPIZ   = 2 | 
|---|
| 158 | ELSE | 
|---|
| 159 | C  ANNIHILATION INTO 4PI0 | 
|---|
| 160 | NPIPOS = 0 | 
|---|
| 161 | NPINEG = 0 | 
|---|
| 162 | NPIZ   = 4 | 
|---|
| 163 | ENDIF | 
|---|
| 164 |  | 
|---|
| 165 | ELSE | 
|---|
| 166 | C----------------------------------------------------------------------- | 
|---|
| 167 | C  ANTIPROTON - NEUTRON (OR ANTINEUTRON - PROTON) ANNIHILATION | 
|---|
| 168 | IF     ( RD(2) .LE. CANN(13) ) THEN | 
|---|
| 169 | C  ANNIHILATION INTO PI-, PI0 | 
|---|
| 170 | NPIPOS = 0 | 
|---|
| 171 | NPINEG = 1 | 
|---|
| 172 | NPIZ   = 1 | 
|---|
| 173 | ELSEIF ( RD(2) .LE. CANN(14) ) THEN | 
|---|
| 174 | C  ANNIHILATION INTO PI-, 2PI0 | 
|---|
| 175 | NPIPOS = 0 | 
|---|
| 176 | NPINEG = 1 | 
|---|
| 177 | NPIZ   = 2 | 
|---|
| 178 | ELSEIF ( RD(2) .LE. CANN(15) ) THEN | 
|---|
| 179 | C  ANNIHILATION INTO PI-, 3PI0 | 
|---|
| 180 | NPIPOS = 0 | 
|---|
| 181 | NPINEG = 1 | 
|---|
| 182 | NPIZ   = 3 | 
|---|
| 183 | ELSEIF ( RD(2) .LE. CANN(16) ) THEN | 
|---|
| 184 | C  ANNIHILATION INTO PI-, 4PI0 | 
|---|
| 185 | NPIPOS = 0 | 
|---|
| 186 | NPINEG = 1 | 
|---|
| 187 | NPIZ   = 4 | 
|---|
| 188 | ELSEIF ( RD(2) .LE. CANN(17) ) THEN | 
|---|
| 189 | C  ANNIHILATION INTO PI-, 5PI0 | 
|---|
| 190 | NPIPOS = 0 | 
|---|
| 191 | NPINEG = 1 | 
|---|
| 192 | NPIZ   = 5 | 
|---|
| 193 | ELSEIF ( RD(2) .LE. CANN(18) ) THEN | 
|---|
| 194 | C  ANNIHILATION INTO PI+, 2PI- | 
|---|
| 195 | NPIPOS = 1 | 
|---|
| 196 | NPINEG = 2 | 
|---|
| 197 | NPIZ   = 0 | 
|---|
| 198 | ELSEIF ( RD(2) .LE. CANN(19) ) THEN | 
|---|
| 199 | C  ANNIHILATION INTO PI+, 2PI-, PI0 | 
|---|
| 200 | NPIPOS = 1 | 
|---|
| 201 | NPINEG = 2 | 
|---|
| 202 | NPIZ   = 1 | 
|---|
| 203 | ELSEIF ( RD(2) .LE. CANN(20) ) THEN | 
|---|
| 204 | C  ANNIHILATION INTO PI+, 2PI-, 2PI0 | 
|---|
| 205 | NPIPOS = 1 | 
|---|
| 206 | NPINEG = 2 | 
|---|
| 207 | NPIZ   = 2 | 
|---|
| 208 | ELSEIF ( RD(2) .LE. CANN(21) ) THEN | 
|---|
| 209 | C  ANNIHILATION INTO PI+, 2PI-, 3PI0 | 
|---|
| 210 | NPIPOS = 1 | 
|---|
| 211 | NPINEG = 2 | 
|---|
| 212 | NPIZ   = 3 | 
|---|
| 213 | ELSEIF ( RD(2) .LE. CANN(22) ) THEN | 
|---|
| 214 | C  ANNIHILATION INTO PI+, 2PI-, 4PI0 | 
|---|
| 215 | NPIPOS = 1 | 
|---|
| 216 | NPINEG = 2 | 
|---|
| 217 | NPIZ   = 4 | 
|---|
| 218 | ELSEIF ( RD(2) .LE. CANN(23) ) THEN | 
|---|
| 219 | C  ANNIHILATION INTO 2PI+, 3PI- | 
|---|
| 220 | NPIPOS = 2 | 
|---|
| 221 | NPINEG = 3 | 
|---|
| 222 | NPIZ   = 0 | 
|---|
| 223 | ELSEIF ( RD(2) .LE. CANN(24) ) THEN | 
|---|
| 224 | C  ANNIHILATION INTO 2PI+, 3PI-, PI0 | 
|---|
| 225 | NPIPOS = 2 | 
|---|
| 226 | NPINEG = 3 | 
|---|
| 227 | NPIZ   = 1 | 
|---|
| 228 | ELSEIF ( RD(2) .LE. CANN(25) ) THEN | 
|---|
| 229 | C  ANNIHILATION INTO 2PI+, 3PI-, 2PI0 | 
|---|
| 230 | NPIPOS = 2 | 
|---|
| 231 | NPINEG = 3 | 
|---|
| 232 | NPIZ   = 2 | 
|---|
| 233 | ELSEIF ( RD(2) .LE. CANN(26) ) THEN | 
|---|
| 234 | C  ANNIHILATION INTO 2PI+, 3PI-, 3PI0 | 
|---|
| 235 | NPIPOS = 2 | 
|---|
| 236 | NPINEG = 3 | 
|---|
| 237 | NPIZ   = 3 | 
|---|
| 238 | ELSE | 
|---|
| 239 | C  ANNIHILATION INTO 3PI+, 4PI- | 
|---|
| 240 | NPIPOS = 3 | 
|---|
| 241 | NPINEG = 4 | 
|---|
| 242 | NPIZ   = 0 | 
|---|
| 243 | ENDIF | 
|---|
| 244 |  | 
|---|
| 245 | C  CHARGE INVERSION IF ANTINEUTRON ANNIHILATES WITH PROTON | 
|---|
| 246 | IF ( ITYPE .EQ. 25 ) THEN | 
|---|
| 247 | NPINEG = NPINEG - 1 | 
|---|
| 248 | NPIPOS = NPIPOS + 1 | 
|---|
| 249 | ENDIF | 
|---|
| 250 |  | 
|---|
| 251 | ENDIF | 
|---|
| 252 |  | 
|---|
| 253 | NPI  = NPIPOS + NPINEG + NPIZ | 
|---|
| 254 | FNPI = 1.D0 / NPI | 
|---|
| 255 | GCMI = 1.D0 / GCM | 
|---|
| 256 |  | 
|---|
| 257 | C----------------------------------------------------------------------- | 
|---|
| 258 | C  CHARGE ASSIGNMENT | 
|---|
| 259 |  | 
|---|
| 260 | DO 26  I = 1,NPI | 
|---|
| 261 | IF     ( I .LE. NPIZ          ) THEN | 
|---|
| 262 | C  NEUTRAL PIONS | 
|---|
| 263 | NTYP(I) = 7 | 
|---|
| 264 | ELSEIF ( I .LE. NPIZ+NPIPOS ) THEN | 
|---|
| 265 | C  POSITIVE PIONS | 
|---|
| 266 | NTYP(I) = 8 | 
|---|
| 267 | ELSE | 
|---|
| 268 | C  NEGATIVE PIONS | 
|---|
| 269 | NTYP(I) = 9 | 
|---|
| 270 | ENDIF | 
|---|
| 271 | 26  CONTINUE | 
|---|
| 272 |  | 
|---|
| 273 | C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 
|---|
| 274 | C  KINEMATIC CALCULATIONS | 
|---|
| 275 |  | 
|---|
| 276 | ISCALE = 0 | 
|---|
| 277 | 27  CONTINUE | 
|---|
| 278 | ISCALE = ISCALE + 1 | 
|---|
| 279 | C  AFTER THE 5TH TRY, TAKE A NEW SET OF PIONS | 
|---|
| 280 | IF ( ISCALE .GT. 5 ) GOTO 20 | 
|---|
| 281 |  | 
|---|
| 282 | C  DISTRIBUTUION OF TRANSVERSE MOMENTA PTR | 
|---|
| 283 |  | 
|---|
| 284 | CORECT = 5.3333333333D0 * FNPI**1.5D0 * ECM | 
|---|
| 285 | DO 28  I = 1,NPI | 
|---|
| 286 | PTR(I) = PTRANS(DUMMY) * (1.33333333D0 + CORECT) | 
|---|
| 287 | 28  CONTINUE | 
|---|
| 288 |  | 
|---|
| 289 | SUMPX = 0.D0 | 
|---|
| 290 | SUMPY = 0.D0 | 
|---|
| 291 | CALL RMMAR( RD,NPI,1 ) | 
|---|
| 292 | DO 29  I = 1,NPI | 
|---|
| 293 | C  SELECT EMISSION ANGLE BY REDUCED RESIDUAL DIRECTION | 
|---|
| 294 | IF ( SUMPX .NE. 0.D0  .OR.  SUMPY .NE. 0.D0 ) THEN | 
|---|
| 295 | PHISUM  = ATAN2( SUMPY, SUMPX ) | 
|---|
| 296 | ELSE | 
|---|
| 297 | PHISUM  = 0.D0 | 
|---|
| 298 | ENDIF | 
|---|
| 299 | PHIPAR(I) = PHISUM + PI + PI * (NPI+1-I) * (2.*RD(I)-1.) * FNPI | 
|---|
| 300 | PX(I)     = COS( PHIPAR(I) ) * PTR(I) | 
|---|
| 301 | PY(I)     = SIN( PHIPAR(I) ) * PTR(I) | 
|---|
| 302 | SUMPX     = SUMPX + PX(I) | 
|---|
| 303 | SUMPY     = SUMPY + PY(I) | 
|---|
| 304 | 29  CONTINUE | 
|---|
| 305 |  | 
|---|
| 306 | C  CORRECTION OF TRANSVERSE MOMENTA TO KEEP TRANSVERSE MOMENTUM BALANCE | 
|---|
| 307 | SUMPT2 = ECM | 
|---|
| 308 | DPX    = SUMPX * FNPI | 
|---|
| 309 | DPY    = SUMPY * FNPI | 
|---|
| 310 | DO 30  I = 1,NPI | 
|---|
| 311 | PX(I)   = PX(I) - DPX | 
|---|
| 312 | PY(I)   = PY(I) - DPY | 
|---|
| 313 | IF ( PX(I) .NE. 0.D0  .OR.  PY(I) .NE. 0.D0 ) THEN | 
|---|
| 314 | PHIPAR(I) = ATAN2( PY(I), PX(I) ) | 
|---|
| 315 | ELSE | 
|---|
| 316 | PHIPAR(I) = 0.D0 | 
|---|
| 317 | ENDIF | 
|---|
| 318 | PTSQ(I) = PX(I)**2 + PY(I)**2 | 
|---|
| 319 | SUMPT2  = SUMPT2 - SQRT( PAMA(NTYP(I))**2 + PTSQ(I) ) | 
|---|
| 320 | 30  CONTINUE | 
|---|
| 321 |  | 
|---|
| 322 | C  CHECK, IF C.M. ENERGY IS EXHAUSTED BY TRANSVERSE MOMENTA | 
|---|
| 323 | C  IF SO, TRY ANOTHER SET OF TRANSVERSE MOMENTA | 
|---|
| 324 | IF ( SUMPT2 .LE. 0.D0 ) GOTO 27 | 
|---|
| 325 |  | 
|---|
| 326 | C  DISTRIBUTION OF LONGITUDINAL MOMENTA PL | 
|---|
| 327 |  | 
|---|
| 328 | C  SUM1PL IS SUM OF ABS. VALUES OF LONGITUDINAL MOMENTA | 
|---|
| 329 | F = SUMPT2 * FNPI | 
|---|
| 330 | SUM1PL = 0.D0 | 
|---|
| 331 | DO 31  I = 1,NPI | 
|---|
| 332 | FWHM    = F + 0.5D0 * SQRT( PTSQ(I) ) | 
|---|
| 333 | PL(I)   = ABS( RANNOR(0.D0,FWHM) ) | 
|---|
| 334 | SUM1PL  = SUM1PL + PL(I) | 
|---|
| 335 | C  SET SEQUENCE COUNTER | 
|---|
| 336 | ISEQ(I) = I | 
|---|
| 337 | 31  CONTINUE | 
|---|
| 338 |  | 
|---|
| 339 | C  SORT ISEQ IN DECREASING SIZE OF THE LONGITUDINAL MOMENTUM | 
|---|
| 340 | DO 33  I = 1,NPI | 
|---|
| 341 | DO 32  K = I+1,NPI | 
|---|
| 342 | IF ( PL(ISEQ(I)) .LT. PL(ISEQ(K)) ) THEN | 
|---|
| 343 | IHELP   = ISEQ(I) | 
|---|
| 344 | ISEQ(I) = ISEQ(K) | 
|---|
| 345 | ISEQ(K) = IHELP | 
|---|
| 346 | ENDIF | 
|---|
| 347 | 32    CONTINUE | 
|---|
| 348 | 33  CONTINUE | 
|---|
| 349 |  | 
|---|
| 350 | C  TRY TO BALANCE LONGITUDINAL MOMENTA (TO MINIMIZE CORRECTIONS) | 
|---|
| 351 | C  START WITH LONG. MOMENTA IN FORWARD/BACKWARD DIRECTION BY RANDOM | 
|---|
| 352 | CALL RMMAR( RD,1,1 ) | 
|---|
| 353 | IF ( RD(1) .LE. 0.5 )  PL(ISEQ(1)) = - PL(ISEQ(1)) | 
|---|
| 354 | SUMPL = PL(ISEQ(1)) | 
|---|
| 355 | DO 34  I = 2,NPI | 
|---|
| 356 | SUM1PL = SUM1PL - PL(ISEQ(I)) | 
|---|
| 357 | C  IF THERE IS NOT ENOUGH MOMENTUM LEFT, SELECT FORWARD/BACKWARD TO | 
|---|
| 358 | C  BALANCE MOMENTUM, ELSE CHOOSE DIRECTION BY RANDOM | 
|---|
| 359 | IF ( PL(ISEQ(I))+ABS(SUMPL) .GT. SUM1PL ) THEN | 
|---|
| 360 | IF ( PL(ISEQ(I))*SUMPL .GT. 0.D0 )  PL(ISEQ(I)) = -PL(ISEQ(I)) | 
|---|
| 361 | ELSE | 
|---|
| 362 | CALL RMMAR( RD,1,1 ) | 
|---|
| 363 | IF ( RD(1) .LE. 0.5 )  PL(ISEQ(I)) = - PL(ISEQ(I)) | 
|---|
| 364 | ENDIF | 
|---|
| 365 | SUMPL = SUMPL + PL(ISEQ(I)) | 
|---|
| 366 | 34  CONTINUE | 
|---|
| 367 |  | 
|---|
| 368 | C  CORRECTION OF LONGITUDINAL MOMENTA TO KEEP MOMENTUM BALANCE | 
|---|
| 369 | DPL = SUMPL * FNPI | 
|---|
| 370 | DO 35  I = 1,NPI | 
|---|
| 371 | PL(I) = PL(I) - DPL | 
|---|
| 372 | 35  CONTINUE | 
|---|
| 373 |  | 
|---|
| 374 | C  ITERATIVE CORRECTION OF ALL MOMENTA TO KEEP ENERGY BALANCE | 
|---|
| 375 |  | 
|---|
| 376 | IREPET = 0 | 
|---|
| 377 | 36  CONTINUE | 
|---|
| 378 | IREPET = IREPET + 1 | 
|---|
| 379 | IF ( IREPET .GT. 10 ) GOTO 27 | 
|---|
| 380 | ETOT   = 0.D0 | 
|---|
| 381 | C  CHECK ENERGY CONSERVATION | 
|---|
| 382 | DO 37  I = 1,NPI | 
|---|
| 383 | PTSQ(I) = PX(I)**2 + PY(I)**2 | 
|---|
| 384 | E(I)    = SQRT( PAMA(NTYP(I))**2 + PTSQ(I) + PL(I)**2 ) | 
|---|
| 385 | ETOT    = ETOT + E(I) | 
|---|
| 386 | 37  CONTINUE | 
|---|
| 387 |  | 
|---|
| 388 | ECORR =  ECM / ETOT - 1.D0 | 
|---|
| 389 |  | 
|---|
| 390 | C  LOOK WHETHER ENERGY IS CONSERVED WITHIN 1 % | 
|---|
| 391 | IF ( ABS(ECORR) .GT. .01D0 ) THEN | 
|---|
| 392 | C  FACTOR IS MODIFIED WITH EMPIRICAL TERM 1/GCM FOR FASTER CONVERGENCE | 
|---|
| 393 | FACT = (0.5D0+GCMI) * ECORR * 0.02D0 * NPI | 
|---|
| 394 | DO 38  I = 1,NPI | 
|---|
| 395 | PX(I) = PX(I) * ( FACT         + 1.D0 ) | 
|---|
| 396 | PY(I) = PY(I) * ( FACT         + 1.D0 ) | 
|---|
| 397 | PL(I) = PL(I) * ( FACT * 20.D0 + 1.D0 ) | 
|---|
| 398 | 38    CONTINUE | 
|---|
| 399 | GOTO 36 | 
|---|
| 400 | ENDIF | 
|---|
| 401 |  | 
|---|
| 402 | C  LORENTZ TRANSFORMATION FROM C.M. TO LAB. FRAME | 
|---|
| 403 |  | 
|---|
| 404 | DO 40  K = 5,8 | 
|---|
| 405 | SECPAR(K) = CURPAR(K) | 
|---|
| 406 | 40  CONTINUE | 
|---|
| 407 | DO 41  I = 1,NPI | 
|---|
| 408 | PLLAB  = GCM * ( PL(I) + BETACM * E(I) ) | 
|---|
| 409 | IF ( PLLAB .LE. 0.D0 ) GOTO 41 | 
|---|
| 410 | CTHETA = PLLAB / SQRT( PTSQ(I) + PLLAB**2 ) | 
|---|
| 411 | IF ( CTHETA .LT. C(27) ) GOTO 41 | 
|---|
| 412 | CALL ADDANG( COSTHE,PHI, CTHETA,PHIPAR(I), SECPAR(3),SECPAR(4) ) | 
|---|
| 413 | IF ( SECPAR(3) .LT. C(29) ) GOTO 41 | 
|---|
| 414 | SECPAR(1) = NTYP(I) | 
|---|
| 415 | SECPAR(2) = GCM / PAMA(NTYP(I)) * ( PL(I) * BETACM + E(I) ) | 
|---|
| 416 | CALL TSTACK | 
|---|
| 417 | 41  CONTINUE | 
|---|
| 418 |  | 
|---|
| 419 | MSMM  = MSMM + NPI | 
|---|
| 420 | 999  CONTINUE | 
|---|
| 421 |  | 
|---|
| 422 | RETURN | 
|---|
| 423 | END | 
|---|