13 #include "Zincidentv.h" 18 real*8 ein1, ein2, eout, deabs1, deabs2, derel1, derel2
19 real*8 derel, deabs, ein
25 integer nevernep/0/, nevere/0/, neverg/0/
26 save nevernep, nevere, neverg
31 integer,
parameter::loopmax=100
54 do while (loopc < loopmax )
66 if(movedtrack%p%code .eq.
kelec)
then 68 elseif(movedtrack%p%code .eq.
kphoton)
then 72 if(intinfarray(processno)%process .eq.
'coll')
then 73 movedtrack%pos%colheight = movedtrack%pos%height
77 if(movedtrack%p%code .eq.
kelec)
then 78 if(nevere .ne. 1)
then 82 elseif(movedtrack%p%code .eq.
kphoton)
then 83 if(neverg .ne. 1)
then 88 if(nevernep .ne. 1)
then 96 if(btest(eabsorb(1), biteconsv-1) )
then 97 if(intinfarray(processno)%process .eq.
'coll' .or.
98 * intinfarray(processno)%process .eq.
'photop' .or.
99 * intinfarray(processno)%process .eq.
'munuci' )
then 105 ein1 = movedtrack%p%fm%p(4)
106 * +
masn*(targetnucleonno-targetprotonno) +
107 *
masp*targetprotonno
108 ein2 = movedtrack%p%fm%p(4) +
masp 111 eout = eout + pwork(
i)%fm%p(4)
115 derel1 = eout/ein1 -1.0
117 derel2 = eout/ein2 -1.0
118 if( abs(derel1) .lt. abs(derel2))
then 127 ein1 = movedtrack%p%fm%p(4)
129 derel1 = eout/ein1 -1.0
130 if(abs(deabs1) .lt. abs(deabs) )
then 136 if( abs(derel) .gt. 0.1 .or.
137 * abs(deabs) .gt. 1.e5 )
then 138 write(0,*)
" code=",movedtrack%p%code
139 write(0,*)
" chg=",movedtrack%p%charge
140 write(0,*)
' Moved E=',movedtrack%p%fm%p(4)
141 write(0,*)
' Ein =', ein,
' Eout=',eout
142 write(0,*)
' Rerr =', eout/ein -1.0
143 write(0,*)
' dEabscol= ',deabs
144 write(0,*)
'ActiveModel=', activemdl
149 ein = movedtrack%p%fm%p(4)
150 if(intinfarray(processno)%process .ne.
'decay' .and.
151 * intinfarray(processno)%process .ne.
'brems' .and.
152 * intinfarray(processno)%process .ne.
'pair' .and.
153 * intinfarray(processno)%process .ne.
'cohs' )
then 156 if(ein .gt. movedtrack%p%mass)
then 159 eout = eout + pwork(
i)%fm%p(4)
162 derel = eout/ein -1.0
163 if( abs(derel) .gt. 0.2 )
then 165 if( abs(deabs) .gt. 1.e5 )
then 166 write(0,*)
'****************************' 168 write(0,*)
'----------------------------' 170 write(0,*)
'proc=', intinfarray(processno)%process
171 write(0,*)
'code=',movedtrack%p%code,
' charge=',
172 * movedtrack%p%charge,
' E=',ein
173 write(0,*)
'dEabs= ', deabs, derel, nproduced
175 write(0,*)
i, pwork(
i)%code, pwork(
i)%fm%p(4)
183 if(onedim .eq. 0)
then 186 call cmoveptcl3(movedtrack, pwork, nproduced, nstacked)
188 movedtrack%vec = incidentcopy%vec
189 call cmoveptcl1(movedtrack, pwork, nproduced, nstacked)
193 if(never .eq. 0 .or. never .eq. 1 )
then 195 elseif(never .eq. 3)
then 198 stackpos=stackpos-nstacked
200 elseif(never .eq. 4)
then 205 call cerrormsg(
'return value from chookE,G,NEPInt wrong', 1)
206 write(0,*)
' never=', never
subroutine cerrormsg(msg, needrtn)
subroutine chookgint(never)
max ptcl codes in the kelec
subroutine chooknepint(never)
subroutine cmoveptcl3(iTrack, pw, n, npush)
subroutine cmoveptcl1(iTrack, pw, n, npush)
subroutine cresetstackpos(stackpos)
subroutine chookeabsorbc(a, n, p, info)
subroutine cgetcurrentstackpos(stackpos)
subroutine chookeint(never)