1 subroutine cgetxsec2(model, pj, media, xs, mfp)
3 use modxsecmedia, xmedia=>media
8 character(*),
intent(in):: model
10 type(xsmedia),
intent(inout):: media
11 real(8),
intent(out):: xs
14 real(8),
intent(out):: mfp
16 call cgetxsec(model, pj, media, xs, mfp)
17 if(xs /= largexs .and. xs /= smallxs)
then 22 subroutine cgetxsec(modelin, pj, media, xs, mfp)
36 use modxsecmedia, xmedia=>media
41 character(*),
intent(in):: modelin
43 type(xsmedia),
intent(inout):: media
44 real(8),
intent(out):: xs
47 real(8),
intent(out):: mfp
51 if( pj%code ==
knuc )
then 52 if( pj%subcode ==
antip .and. pj%fm%p(4) - pj%mass <= 0.)
then 58 elseif( pj%code ==
kneue .or. pj%code ==
kneumu )
then 66 if( model ==
"special" )
then 73 if( model /=
"special" )
then 95 if(media%xs < smallxs)
then 98 if( media%xs /= smallxs .and. media%xs /= largexs)
then 99 mfp = 1.0
d0/( media%mbtoPkgrm * media%xs)
100 elseif( media%xs <= smallxs )
then 110 subroutine cxsjam(pj, media)
111 use modxsecmedia, xmedia=>media
118 type(xsmedia),
intent(inout):: media
122 real(8):: sumns, xs, iAR
125 do i = 1, media%noOfElem
126 ia = media%elem(i)%A + 0.5
d0 128 if(pj%code >=
kpion .and. pj%code <=
knuc )
then 129 if( jamxs == 1 )
then 130 call ctotx(pj, iar, xs)
131 elseif( jamxs == 0 )
then 132 call cinelx(pj, iar, media%elem(i)%Z, xs)
135 *
' JamXs=',jamxs,
' not usable in cxsJam' 139 call cinelx(pj, iar, media%elem(i)%Z, xs)
141 if( xs < smallxs )
then 144 if( xs == smallxs .or. xs == largexs )
then 148 media%elem(i)%nsigma = xs*media%elem(i)%No
149 sumns = sumns + media%elem(i)%nsigma
156 use modxsecmedia, xmedia=>media
162 type(xsmedia),
intent(inout):: media
166 real(8):: sumns, xs, u, elaxs
167 integer::ka, subc, ia, iz
172 do i =1, media%noOfElem
173 ia = media%elem(i)%A + 0.5
176 * .or. ka ==
kgnuc)
then 177 call cphitsxs(pj, ia, iz, elaxs,xs, icon)
185 call cinelx(pj, media%elem(i)%A, media%elem(i)%Z, xs)
192 if( xs <= smallxs .or. xs == largexs )
then 196 media%elem(i)%nsigma = xs*media%elem(i)%No
197 sumns = sumns + media%elem(i)%nsigma
204 use modxsecmedia, xmedia=>media
210 type(xsmedia),
intent(inout):: media
213 real(8):: sumns, xs, iAR
216 do i =1, media%noOfElem
217 ia = media%elem(i)%A + 0.5
d0 219 if( pj%code >=
kpion .and. pj%code <=
knuc )
then 220 if( pj%fm%p(4) .lt. 4.1
d0 )
then 222 call ctotx(pj, iar, xs)
233 call cinelx(pj, iar, media%elem(i)%Z, xs)
236 call cinelx(pj, iar, media%elem(i)%Z, xs)
239 if( xs <= smallxs .or. xs == largexs )
then 243 media%elem(i)%nsigma = xs*media%elem(i)%No
244 sumns = sumns + media%elem(i)%nsigma
252 use modxsecmedia, xmedia=>media
258 type(xsmedia),
intent(inout):: media
262 real(8):: sumns, xs, tga, u, tgz
266 do i =1, media%noOfElem
267 tga = media%elem(i)%A
268 tgz = media%elem(i)%Z
281 if( (pj%code >=
kpion .and. pj%code <=
knuc) .or.
282 * pj%code ==
kgnuc )
then 283 call cxsecqgs(pj, ia, xs)
285 call cinelx(pj, tga, tgz, xs)
288 if( xs <= smallxs .or. xs == largexs )
then 292 media%elem(i)%nsigma = xs*media%elem(i)%No
293 sumns = sumns + media%elem(i)%nsigma
300 use modxsecmedia, xmedia=>media
306 type(xsmedia),
intent(inout):: media
309 real(8):: sumns, xs, tga, u, tgz
314 do i =1, media%noOfElem
315 tga = media%elem(i)%A
316 tgz = media%elem(i)%Z
333 call ceposinioneevent(pj, tg, xs)
334 if( xs <= smallxs .or. xs == largexs )
then 338 media%elem(i)%nsigma = xs*media%elem(i)%No
339 sumns = sumns + media%elem(i)%nsigma
346 use modxsecmedia, xmedia=>media
352 type(xsmedia),
intent(inout):: media
355 real(8):: sumns, xs, tga, u, tgz
360 do i =1, media%noOfElem
361 tga = media%elem(i)%A
362 tgz = media%elem(i)%Z
379 if( media%name ==
"Air" )
then 382 call csibyllxs(pj, tg, xs)
387 call csibyllxs(pj, tg, xs)
388 if( xs <= smallxs .or. xs == largexs )
then 393 if( media%name ==
"Air")
then 397 media%elem(i)%nsigma = xs
399 media%elem(i)%nsigma = xs*media%elem(i)%No
401 sumns = sumns + media%elem(i)%nsigma
407 use modxsecmedia, xmedia=>media
413 type(xsmedia),
intent(inout):: media
416 real(8):: sumns, xs, tga, tgz
420 do i =1, media%noOfElem
421 tga = media%elem(i)%A
422 tgz = media%elem(i)%Z
423 if(pj%code >=
kpion .and. pj%code <=
knuc )
then 424 call cxsecgheisha(pj, tga, tgz, xs)
426 call cinelx(pj, tga, tgz, xs)
428 if( xs <= smallxs .or. xs == largexs )
then 432 media%elem(i)%nsigma = xs*media%elem(i)%No
433 sumns = sumns + media%elem(i)%nsigma
440 use modxsecmedia, xmedia=>media
447 type(xsmedia),
intent(inout):: media
449 real(8):: ek, crossint
452 ek = pj%fm%p(4)- pj%mass
453 if( ek > 0.2
d0 )
then 456 call cccode2hcode(pj, kinc)
457 media%xs = crossint(kinc, ek)
464 use modxsecmedia, xmedia=>media
471 type(xsmedia),
intent(inout):: media
475 real(8):: sumns, xs, iAR
479 do i = 1, media%noOfElem
480 ia = media%elem(i)%A + 0.5
d0 482 call cinelx(pj, iar, media%elem(i)%Z, xs)
486 if( xs <= smallxs .or. xs == largexs )
then 490 media%elem(i)%nsigma = xs*media%elem(i)%No
491 sumns = sumns + media%elem(i)%nsigma
498 use modxsecmedia, xmedia=>media
505 type(xsmedia),
intent(inout):: media
513 if( media%xs == smallxs .or. media%xs == largexs )
then 515 media%elem(j)%nsigma = media%xs
516 elseif( media%noOfElem .eq. 1 )
then 522 do j = 1, media%noOfElem
523 csigma = csigma + media%elem(j)%nsigma
524 if(u <= csigma)
goto 10
526 write(0,*)
'media name=', media%name
527 write(0,*)
'media%xs=',media%xs
528 write(0,*)
'media%noOfElem=', media%noOfElem
529 write(0,*)
'media%elem(:)%nsigma=',
530 * media%elem(1:j)%nsigma
531 write(0,*)
' u=',u,
' csigma=',csigma,
' j=',j
532 call cerrormsg(
'should not come here; cfixTarget',0)
538 ia = media%elem(j)%A + 0.5
550 targetprotonno = media%elem(j)%Z
553 targetxs = media%elem(j)%nsigma / media%elem(j)%No
557 call cworkaround(targetnucleonno, targetprotonno, targetxs,
570 integer,
intent(in):: A
571 integer,
intent(in):: Z
572 real(8),
intent(in):: xs
573 integer,
intent(in):: nelem
575 #include "Zworkaround.h" 590 use modxsecmedia, xmedia=>media
594 type(xsmedia),
intent(inout):: media
601 s0=media%xs/sum( media%elem(:)%No * media%elem(:)%A )
602 media%elem(:)%nsigma =
603 * s0 *media%elem(:)%No * media%elem(:)%A
608 use modxsecmedia, xmedia=>media
614 type(xsmedia),
intent(inout):: media
617 real(8):: sumns, capr
620 do i = 1, media%noOfElem
621 call cmucap( int(media%elem(i)%A), int(media%elem(i)%Z),
623 media%elem(i)%nsigma = capr*media%elem(i)%No
624 sumns = sumns + media%elem(i)%nsigma
632 use modxsecmedia, xmedia=>media
641 type(xsmedia),
intent(inout):: media
642 real(8),
intent(out):: xs
646 real(8),
intent(out):: mfp
652 do i = 1, media%noOfElem
653 call cgpxsec(media%elem(i)%A, pj%fm%p(4), xs)
654 if( xs < smallxs )
then 657 if( xs == smallxs .or. xs == largexs )
then 661 media%elem(i)%nsigma = xs*media%elem(i)%No
662 sumns = sumns + media%elem(i)%nsigma
667 if(media%xs /= smallxs .and. media%xs /= largexs)
then 668 if( media%xs <= 0. )
then 673 mfp =1.0
d0/( media%mbtoPkgrm *media%xs)
675 elseif( media%xs == smallxs )
then subroutine cerrormsg(msg, needrtn)
subroutine cxsgheisha(pj, media)
subroutine cxsjam(pj, media)
subroutine cinelx(pj, A, Z, xs)
max ptcl codes in the kgnuc
subroutine cxssibyll(pj, media)
max ptcl codes in the kneue
subroutine cmucap(a, z, capr)
subroutine cxsother(pj, media)
subroutine ctotx(pjin, Ain, xs)
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
subroutine cxsepos(pj, media)
subroutine cxsphits(pj, media)
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code knuc
max ptcl codes in the kneumu
subroutine cxsqgsjet2(pj, media)
subroutine cworkaround(A, Z, xs, nelem)
subroutine cgetphotopxs(model, pj, media, xs, mfp)
subroutine cxsincdpm3(pj, media)
subroutine cmkptc(code, subcode, charge, p)
subroutine cgetxsec(modelin, pj, media, xs, mfp)
subroutine cfixtarget(media)
subroutine cxsdpmjet3(pj, media)
max ptcl codes in the kseethru ! subcode integer antip
subroutine cgetxsec2(model, pj, media, xs, mfp)
subroutine cgetcaprate(media)
max ptcl codes in the kpion
subroutine cxsspecial(pj, media, model)
subroutine cgpxsec(a, energy, xs)
subroutine cfixtargetmuni(media)