File indexing completed on 2024-04-06 12:13:31
0001
0002
0003
0004
0005
0006 subroutine bcpythia(ipartic)
0007
0008
0009 implicit double precision(a-h, o-z)
0010 implicit integer(i-n)
0011
0012
0013 parameter (maxnup=500)
0014 common/pypars/mstp(200),parp(200),msti(200),pari(200)
0015 common/hepeup/nup,idprup,xwgtup,scalup,aqedup,aqcdup,idup(maxnup),
0016 &istup(maxnup),mothup(2,maxnup),icolup(2,maxnup),pup(5,maxnup),
0017 &vtimup(maxnup),spinup(maxnup)
0018 save /hepeup/
0019
0020
0021 common/colflow/amp2cf(10),smatval
0022 common/ptpass/ptmin,ptmax,crossmax,etamin,etamax,
0023 & smin,smax,ymin,ymax,psetamin,psetamax
0024
0025 common/coloct/ioctet
0026
0027
0028 nup=5
0029
0030 if(ipartic.eq.21) then
0031
0032 idup(1)= 21 ! gluon 1
0033 idup(2)= 21 ! gluon 2
0034 else
0035
0036 if(ipartic.eq.1) then
0037 idup(1)= 1 ! u
0038 idup(2)= -1 ! \bar{u}
0039 end if
0040 if(ipartic.eq.2) then
0041 idup(1)= 2 ! d
0042 idup(2)= -2 ! \bar{d}
0043 end if
0044 if(ipartic.eq.3) then
0045 idup(1)= 3 ! s
0046 idup(2)= -3 ! \bar{s}
0047 end if
0048 end if
0049
0050 idup(3)= 541 ! b_c+
0051 idup(4)= 5 ! b-quark
0052 idup(5)=-4 ! c-antiquark
0053
0054
0055
0056 istup(1)=-1
0057 istup(2)=-1
0058 istup(3)= 1
0059 istup(4)= 1
0060 istup(5)= 1
0061
0062
0063
0064 mothup(1,1)=0 ! gluon 1 or q <-- proton 1
0065 mothup(2,1)=0
0066 mothup(1,2)=0 ! gluon 2 or \bar{q} <-- proton 2
0067 mothup(2,2)=0
0068 mothup(1,3)=1 ! bc+
0069 mothup(2,3)=2
0070 mothup(1,4)=1 ! b
0071 mothup(2,4)=2
0072 mothup(1,5)=1 !cbar
0073 mothup(2,5)=2
0074
0075
0076
0077 ranmat =smatval*pyr(0)
0078 icolnum=0
0079
0080 if(ipartic.eq.21) then
0081 iuplimit=3
0082 else
0083 iuplimit=2
0084 end if
0085
0086 if(ioctet.eq.1) then
0087 iuplimit=10
0088 end if
0089
0090 110 icolnum=icolnum+1
0091 ranmat =ranmat-amp2cf(icolnum)
0092 if(icolnum.lt.iuplimit .and. ranmat.gt.1.0d-16) go to 110
0093
0094 if(ipartic.eq.21) then
0095
0096 if(ioctet.eq.0) then
0097
0098 if(icolnum.eq.1) then
0099 icolup(1,1)=502
0100 icolup(2,1)=501
0101 icolup(1,2)=503
0102 icolup(2,2)=502
0103 icolup(1,3)=0
0104 icolup(2,3)=0
0105 icolup(1,4)=503
0106 icolup(2,4)=0
0107 icolup(1,5)=0
0108 icolup(2,5)=501
0109 end if
0110
0111 if(icolnum.eq.2) then
0112 icolup(1,1)=503
0113 icolup(2,1)=502
0114 icolup(1,2)=502
0115 icolup(2,2)=501
0116 icolup(1,3)=0
0117 icolup(2,3)=0
0118 icolup(1,4)=503
0119 icolup(2,4)=0
0120 icolup(1,5)=0
0121 icolup(2,5)=501
0122 end if
0123
0124 if(icolnum.eq.3) then
0125 icolup(1,1)=501
0126 icolup(2,1)=502
0127 icolup(1,2)=502
0128 icolup(2,2)=501
0129 icolup(1,3)=0
0130 icolup(2,3)=0
0131 icolup(1,4)=503
0132 icolup(2,4)=0
0133 icolup(1,5)=0
0134 icolup(2,5)=503
0135 end if
0136 end if
0137
0138
0139
0140
0141
0142
0143
0144
0145 if(ioctet.eq.1) then
0146
0147 if(icolnum.eq.1) then
0148 icolup(1,1)=503
0149 icolup(2,1)=502
0150 icolup(1,2)=502
0151 icolup(2,2)=501
0152 icolup(1,3)=0
0153 icolup(2,3)=0
0154 icolup(1,4)=503
0155 icolup(2,4)=0
0156 icolup(1,5)=0
0157 icolup(2,5)=501
0158 end if
0159
0160 if(icolnum.eq.2) then
0161 icolup(1,1)=502
0162 icolup(2,1)=501
0163 icolup(1,2)=503
0164 icolup(2,2)=502
0165 icolup(1,3)=0
0166 icolup(2,3)=0
0167 icolup(1,4)=503
0168 icolup(2,4)=0
0169 icolup(1,5)=0
0170 icolup(2,5)=501
0171 end if
0172
0173 if(icolnum.eq.3) then
0174 icolup(1,1)=503
0175 icolup(2,1)=502
0176 icolup(1,2)=502
0177 icolup(2,2)=501
0178 icolup(1,3)=0
0179 icolup(2,3)=0
0180 icolup(1,4)=503
0181 icolup(2,4)=0
0182 icolup(1,5)=0
0183 icolup(2,5)=501
0184 end if
0185
0186 if(icolnum.eq.4) then
0187 icolup(1,1)=502
0188 icolup(2,1)=501
0189 icolup(1,2)=503
0190 icolup(2,2)=502
0191 icolup(1,3)=0
0192 icolup(2,3)=0
0193 icolup(1,4)=503
0194 icolup(2,4)=0
0195 icolup(1,5)=0
0196 icolup(2,5)=501
0197 end if
0198
0199 if(icolnum.eq.5) then
0200 icolup(1,1)=503
0201 icolup(2,1)=502
0202 icolup(1,2)=502
0203 icolup(2,2)=501
0204 icolup(1,3)=0
0205 icolup(2,3)=0
0206 icolup(1,4)=503
0207 icolup(2,4)=0
0208 icolup(1,5)=0
0209 icolup(2,5)=501
0210 end if
0211
0212 if(icolnum.eq.6) then
0213 icolup(1,1)=502
0214 icolup(2,1)=501
0215 icolup(1,2)=503
0216 icolup(2,2)=502
0217 icolup(1,3)=0
0218 icolup(2,3)=0
0219 icolup(1,4)=503
0220 icolup(2,4)=0
0221 icolup(1,5)=0
0222 icolup(2,5)=501
0223 end if
0224
0225 if(icolnum.eq.7) then
0226 icolup(1,1)=503
0227 icolup(2,1)=502
0228 icolup(1,2)=502
0229 icolup(2,2)=501
0230 icolup(1,3)=0
0231 icolup(2,3)=0
0232 icolup(1,4)=503
0233 icolup(2,4)=0
0234 icolup(1,5)=0
0235 icolup(2,5)=501
0236 end if
0237
0238 if(icolnum.eq.8) then
0239 icolup(1,1)=502
0240 icolup(2,1)=501
0241 icolup(1,2)=503
0242 icolup(2,2)=502
0243 icolup(1,3)=0
0244 icolup(2,3)=0
0245 icolup(1,4)=503
0246 icolup(2,4)=0
0247 icolup(1,5)=0
0248 icolup(2,5)=501
0249 end if
0250
0251 if(icolnum.eq.9) then
0252 icolup(1,1)=503
0253 icolup(2,1)=502
0254 icolup(1,2)=502
0255 icolup(2,2)=501
0256 icolup(1,3)=0
0257 icolup(2,3)=0
0258 icolup(1,4)=503
0259 icolup(2,4)=0
0260 icolup(1,5)=0
0261 icolup(2,5)=501
0262 end if
0263
0264 if(icolnum.eq.10) then
0265 icolup(1,1)=502
0266 icolup(2,1)=501
0267 icolup(1,2)=503
0268 icolup(2,2)=502
0269 icolup(1,3)=0
0270 icolup(2,3)=0
0271 icolup(1,4)=503
0272 icolup(2,4)=0
0273 icolup(1,5)=0
0274 icolup(2,5)=501
0275 end if
0276 end if
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355
0356
0357
0358
0359
0360
0361
0362
0363
0364
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412
0413 else
0414
0415 if(icolnum.eq.1) then
0416 icolup(1,1)=501
0417 icolup(2,1)=0
0418 icolup(1,2)=0
0419 icolup(2,2)=502
0420 icolup(1,3)=0
0421 icolup(2,3)=0
0422 icolup(1,4)=501
0423 icolup(2,4)=0
0424 icolup(1,5)=0
0425 icolup(2,5)=502
0426 end if
0427
0428 if(icolnum.eq.2) then
0429 icolup(1,1)=501
0430 icolup(2,1)=0
0431 icolup(1,2)=0
0432 icolup(2,2)=501
0433 icolup(1,3)=0
0434 icolup(2,3)=0
0435 icolup(1,4)=502
0436 icolup(2,4)=0
0437 icolup(1,5)=0
0438 icolup(2,5)=502
0439 end if
0440 end if
0441
0442 return
0443 end