53 integer noOfFragments, noOfNuc, noOfInteNuc
54 save nooffragments, noofnuc, noofintenuc
56 integer noOfFrag, noOfIntN, noOfNonIntN
84 #include "Zworkaround.h" 99 if( activemdl .eq.
'dpmjet3')
then 100 if((pj%fm%p(4) - pj%mass)/pj%subcode .gt. 5.1)
then 101 call cdpmjet(pj, ia, iz, a, ntp)
104 call cjamevent(pj, ia, iz, targetxs, a, ntp)
106 elseif( activemdl .eq.
'jam')
then 107 call cjamevent(pj, ia, iz, targetxs, a, ntp)
108 elseif( activemdl .eq.
'phits')
then 109 call cphits(pj, ia, iz, targetxs, a, ntp)
110 elseif(activemdl .eq.
'qgsjet2')
then 111 call cqgsjet(pj, ia, iz, a, ntp)
112 elseif(activemdl .eq.
'epos')
then 113 call ceposgenoneevent(pj, ia, iz, a, ntp)
114 elseif(activemdl .eq.
'sibyll')
then 115 call csibyllevent(pj, ia, iz,a, ntp)
116 elseif(activemdl .eq.
'gheisha' .and.
117 * pj%code .eq.
kgnuc .and. (pj%subcode .eq. 2 .or.
118 * pj%subcode .eq. 3) )
then 120 call chagheisha(pj, ia, iz, a, ntp)
126 call cjamevent(pj, ia, iz, targetxs, a, ntp)
158 entry cqhvyintf(fraga, nooffrag)
162 nooffrag = nooffragments
169 entry cqhvyintin(intnuca, noofintn)
171 noofintn = noofintenuc
174 intnuca(i) = nuc(i+noofnuc - noofintenuc)
178 entry cqhvyintnin(nonintnuca, noofnonintn)
180 noofnonintn = noofnuc - noofintenuc
182 do i = 1, noofnonintn
183 nonintnuca(i) = nuc(i)
219 * fra, noOfFragments, nuc, noOfNuc, noOfInteNuc)
228 integer noOfFragments, noOfNuc, noOfInteNuc, ia
230 type(
ptcl):: pj, fra(*), nuc(*)
231 integer ihg, mno, mx, mn, msumf, ihgf, jcon,
234 logical first/.true./
242 if( (pj%fm%p(4)-pj%mass)/pj%subcode .lt. 0.1)
then 251 ihg=charge2heavyg(pj%charge)
280 if( mno .ge. 10 .and. nooffragments .eq. 0)
then 284 u=(1.-cfragmentationtbl(ihg,2))*u +
285 * cfragmentationtbl(ihg,2)
288 * ihg, u, ihgf, jcon)
294 * ihg, u, ihgf, jcon)
299 noofnuc = noofnuc + 1
303 nuc(noofnuc)%fm%p(4) = epn
306 nooffragments=nooffragments+1
309 * 1, fra(nooffragments))
311 fra(nooffragments)%fm%p(4) = heavyg2massn(ihgf) * epn
314 msumf=msumf+heavyg2massn(ihgf)
319 if(msumf .le. mx)
then 321 do i = 1, mno - msumf
322 noofnuc = noofnuc + 1
325 nuc(noofnuc)%fm%p(4) = epn
329 do i = 1, nooffragments
330 zfrag = zfrag + fra(i)%charge
332 if(zfrag .le. pj%charge)
goto 100
347 do i=noofnuc, noofnuc - noofintenuc + 1, -1
350 nuc(i)%fm%p(3) = sqrt(
351 * max( nuc(i)%fm%p(4)**2 - nuc(i)%mass**2, 0.
d0) )
366 type(
ptcl):: nuc(noofnuc)
399 integer noOfNuc, noOfInteNuc, ia
406 ihg=charge2heavyg(pj%charge)
410 avnn = fragmenttbl(ihg, 1)
413 call kbinom( avintn/avnn, noofnuc, noofintenuc)
439 p=sqrt( a(i)%fm%p(4)**2- a(i)%mass**2 )
444 if (pt .lt. p .or. nc .eq. 10)
452 a(i)%fm%p(3) = sqrt(p**2-pt**2)
481 if(aptcl%code .eq.
knuc)
then 489 pt = avpt *sqrt(- log(u)* 2 )
522 cfragmentationtbl(i, 1) = fragmenttbl(i, 1)
524 cfragmentationtbl(i,j+1)=fragmenttbl(i,j+1)
525 * +cfragmentationtbl(i,j)
529 cfragmentationtbl(i, j) = cfragmentationtbl(i,j)/
530 * cfragmentationtbl(i,i)
539 massnum = heavyg2massn(hg)
546 charge = heavyg2charge(hg)
553 if(code .ge.
kalfa .and. code .le.
kiron)
then 554 hg = code2heavyg(code)
557 *
'ccode2hvgrp should not be used for code # He ~Fe',0)
567 if(code .ge.
kalfa .and. code .le.
kiron)
then 568 hg = code2heavyg(code)
569 mass = heavyg2massn(hg) * (
masp+
masn)/2
572 *
'ccode2mass should not be used for code # He ~Fe',0)
subroutine cerrormsg(msg, needrtn)
subroutine chg2charge(hg, charge)
subroutine chg2massn(hg, massnum)
subroutine csampfragpt(aPtcl, pt)
subroutine kfrge(x, intvx, n, c, m, icon)
max ptcl codes in the kgnuc
subroutine kbinom(p, n, nb)
subroutine cheavyint(pj, ia, iz, a, ntp)
subroutine csampfragments(pj, ia,
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon true
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code kalfa
max ptcl codes in the kseethru ! subcode integer regptcl
subroutine ccode2hvgrp(code, hg)
subroutine caveintenuc(pj, tgtMassN, avn)
max ptcl codes in the kiron
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code knuc
subroutine ccode2mass(code, mass)
dE dx *! Nuc Int sampling table d
subroutine kcossn(cs, sn)
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon ! knockon is considered Obsolete *PhotoProd false
subroutine cmkptc(code, subcode, charge, p)
subroutine csampfragmom(a, nf)
subroutine cresetnucchg(nuc, noOfNuc, z)
subroutine csampintenuc(pj, ia, noOfNuc, noOfInteNuc)