1 c----------------------------------------------------------------------
2 subroutine hnbaaa156(ip,iret)
3 c----------------------------------------------------------------------
4 c microcanonical decay of cluster ip via loop over hnbmet
5 c----------------------------------------------------------------------
7 common/cxyzt/xptl(mxptl),yptl(mxptl),zptl(mxptl),tptl(mxptl)
8 *,optl(mxptl),uptl(mxptl),sptl(mxptl),rptl(mxptl,3)
10 common/confg/np,amass(maxp),ident(maxp),pcm(5,maxp),wtxlog,wtlog
11 common/citer/iter,itermx
12 double precision tpro,zpro,ttar,ztar,ttaus,detap,detat
13 common /cttaus/ tpro,zpro,ttar,ztar,ttaus,detap,detat
15 double precision p(5),c(5)
16 parameter(maxit=50000)
17 common/count/nacc,nrej,naccit(maxit),nptot,npit(maxit)
18 dimension be(4),pe(5),pa(5)
19 common/yradx/yrad(maxp),phirad(maxp)
20 common/xxxspecsy/ndrop(-4:4,-4:4,-4:4)
21 common/cdelzet/delzet,delsgr /cvocell/vocell
22 call utpri('hnbaaa',ish,ishini,4)
25 write(ifch,140)sngl(ttaus)
26 140 format(/' ----------------------------------'/
27 *' droplet decay at tau =',f6.2/
28 *' ----------------------------------')
29 write(ifch,*)'droplet:'
38 call idquac(ip,nqi,nsi,nai,jc)
45 !print*,'droplet uds=',keu,ked,kes,' E=',pptl(5,ip)
47 volu=4./3.*pi*radptl(ip)**3
49 if(volu.le.0)call utstop('hnbaaa: volume = 0&')
52 write(ifch,*)'***** very small volume:',volu
54 * 'id:',idptl(ip),' r:',radptl(ip),' m:',pptl(5,ip)
58 !~~~~~redefine energy in case of radial flow
59 amin=utamnu(keu,ked,kes,kec,keb,ket,4) !utamnu(...,4) and not utamnu(...,5)
60 aumin=amuseg !otherwise droplet from remnant decay
61 ipo=ip !could be too light after flow
62 if(ityptl(ip).eq.60)ipo=iorptl(ip)
64 if(iappl.eq.4.or.iorsdf.ne.3
65 &.or.ityptl(ip).eq.40.or.ityptl(ip).eq.50)then !not for droplets from remnants
68 yrmax=max(0.0,yradmx+yradmi*alog10(engy/200.))
69 if(maproj.eq.1.and.matarg.eq.1)then
70 yrmax=max(0.0,yradpp+yradpi*alog10(engy/1800.))
72 !if(yrmax.gt.0.2)print*,'===',tecmor,aamin,yrmax
77 &fradflo=1./((sinh(yrmax)*yrmax-cosh(yrmax)+1.)/(yrmax**2/2.))
80 if(yrmax.gt.0..and.tecmor.gt.aumin
81 & .and.tecm*fradflo.gt.amin) then
82 ! redefine energy to account for collective flow
83 ! \int_0^yrmax f(y) d2y = E_new (effective mass)
84 ! \int_0^yrmax cosh(y) f(y) d2y = E_old
86 if(tecm.lt.amin)stop'aaahnb: small mass. should not happen. '
91 !~~~~~redefine energy in case of long coll flow
92 if(iappl.eq.4.or.iorsdf.ne.3
93 &.or.ityptl(ip).eq.40.or.ityptl(ip).eq.50)then !not for droplets from remnants
103 if(yco.gt.0..and.tecmor.gt.aumin) then
104 tecm=tecm/sinh(yco)*yco
108 !print*,'========= cluster energy: ',pptl(5,ip),tecmx,tecm
110 !~~~~~~~~~redefine volume~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112 ccc vocri=tecm/epscri(ioclude) !??????????????????????????????
113 ccc volu=max(vocri,vocell) !????????????????????????????
115 !~~~~~~~~~decay~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
117 !if(iret.ne.0)write(ifch,*)'***** unsucessfull hnbini *****'
118 if(iret.ne.0)goto1000
128 if(ioceau.eq.1.and.iappl.eq.1)call xhnbte(ip)
130 !~~~~~~~~~~long coll flow -> particles~~~~~~~~~~~~~~~~
136 yrad(i)=(2*rangen()-1)*yco
139 energ=energ+be(4)*pcm(4,i)-be(3)*pcm(3,i)
141 if(abs(energ-tecm).gt.0.1) goto 611
142 !print*,'===== energy after flow boosts',energ,' soll: ',tecm
151 call utlob3(1,be(1),be(2),be(3),be(4),1e0
152 * , pcm(1,i), pcm(2,i), pcm(3,i), pcm(4,i))
157 pe(5)=sqrt(pe(4)**2-pe(3)**2-pe(2)**2-pe(1)**2)
158 !write(6,'(a,5e11.3)')'flow boosts',pe
163 call utlob3(1,pe(1),pe(2),pe(3),pe(4),pe(5)
164 * , pcm(1,i), pcm(2,i), pcm(3,i), pcm(4,i))
169 pa(5)=sqrt(pa(4)**2-pa(3)**2-pa(2)**2-pa(1)**2)
170 !write(6,'(a,5e11.3)')' cms boost ',pa
177 pcm(k,j)=scal*pcm(k,j)
179 pcm(4,j)=sqrt(pcm(1,j)**2+pcm(2,j)**2+pcm(3,j)**2
184 !write(6,*)'ipass,scal,e,esoll:'
185 ! $ ,ipass,scal,sum,esoll
186 if(abs(scal-1.).le.errlim) goto301
197 pa(5)=sqrt(pa(4)**2-pa(3)**2-pa(2)**2-pa(1)**2)
198 !write(6,'(a,5e11.3)')' rescaling ',pa
201 !~~~~~~~~~~radial flow -> particles~~~~~~~~~~~~~~~~~~
208 if(ityptl(ip).eq.60)then
210 xx=uptl(ipo) ! <x**2>
211 yy=optl(ipo) ! <y**2>
212 xy=desptl(ipo) ! <x*y>
214 ev1=(xx+yy)/2+sqrt(dta**2+xy**2)
215 ev2=(xx+yy)/2-sqrt(dta**2+xy**2)
216 if(xy.lt.0..and.dta.ne.0.)then
217 theta=0.5*atan(-xy/dta)
218 elseif(xy.gt.0..and.dta.ne.0.)then
219 theta=-0.5*atan(xy/dta)
223 !eccx=(yy-xx)/(yy+xx)
227 !print*,eccx,ecc,theta
240 yrad(i)=sqrt(rangen())
241 phirad(i)=2.*pi*rangen()
242 bex=-dsinh(dble(yrad(i)*yrmax))*cos(phirad(i))*(1+fecc)
243 bey=-dsinh(dble(yrad(i)*yrmax))*sin(phirad(i))*(1-fecc)
247 be(4)=sqrt(1+be(1)**2+be(2)**2)
255 if(abs(energ-tecm).gt.0.1) goto 610
258 bex=dsinh(dble(yrad(i)*yrmax))*cos(phirad(i))*(1+fecc)
259 bey=dsinh(dble(yrad(i)*yrmax))*sin(phirad(i))*(1-fecc)
263 be(4)=sqrt(1+be(1)**2+be(2)**2)
264 call utlob3(1,be(1),be(2),be(3),be(4),1e0
265 * , pcm(1,i), pcm(2,i), pcm(3,i), pcm(4,i))
274 pcm(k,j)=scal*pcm(k,j)
276 pcm(4,j)=sqrt(pcm(1,j)**2+pcm(2,j)**2+pcm(3,j)**2
281 !write(6,*)'ipass,scal,e,esoll:'
282 ! $ ,ipass,scal,sum,esoll
283 if(abs(scal-1.).le.errlim) goto300
297 if(nptl.gt.mxptl)call utstop('hnbptl: mxptl too small&')
303 call utlob2(-1,c(1),c(2),c(3),c(4),c(5),p(1),p(2),p(3),p(4),10)
307 if(tecmor.gt.aumin)then
312 if(ityptl(ip).eq.60)then
313 if(ityptl(nptl).eq.60)then
315 xx=uptl(ipo) ! <x**2>
316 yy=optl(ipo) ! <y**2>
317 rini=sqrt(5./3.*(xx+yy)) !<r**2>=3/5*R**2 for sphere of radius R
318 r=1.15*rini*yrad(n) !yrad=y/ymax
319 tau=2.25/sqrt(yrad(n)**2+0.04)-0.75
322 !zeta=0.5*log((t+z)/(t-z))-0.5*delzet+2*0.5*delzet*rangen()
323 zeta=0.5*log((p(4)+p(3))/(p(4)-p(3)))
326 xorptl(1,nptl)=xorptl(1,ipo)+r*cos(phirad(n))
327 xorptl(2,nptl)=xorptl(2,ipo)+r*sin(phirad(n))
331 xorptl(1,nptl)=xorptl(1,ip)
332 xorptl(2,nptl)=xorptl(2,ip)
333 xorptl(3,nptl)=xorptl(3,ip)
334 xorptl(4,nptl)=xorptl(4,ip)
340 write(ifch,*)'decay products:'
341 call alist('&',nptlb+1,nptl)
343 write(ifch,*)'momentum sum:'
347 pptl(kk,nptl+1)=pptl(kk,nptl+1)+pptl(kk,ii)
349 pptl(kk,nptl+2)=c(kk)
351 call alist('&',nptl+1,nptl+2)
356 call utprix('hnbaaa',ish,ishini,4)