From 0053203c2b5bc9d4a1403ce80df6282bca2a8c33 Mon Sep 17 00:00:00 2001 From: Dave Gaskell <gaskelld@jlab.org> Date: Fri, 8 Jul 2022 15:35:45 -0400 Subject: [PATCH] Fixes for rho decay --- rho_decay.f | 53 +++++++++++++++++++++++++++++++++++++++++++-------- rho_physics.f | 46 ++++++++++++++++++++++++++------------------ 2 files changed, 72 insertions(+), 27 deletions(-) diff --git a/rho_decay.f b/rho_decay.f index 64db156..7ecf7e7 100644 --- a/rho_decay.f +++ b/rho_decay.f @@ -36,6 +36,10 @@ C Local declarations. real*8 norm,dist real*8 grnd + real*8 mmu,mt2,ml2,ml,ksi2 + real*8 pol,rtmp,rtmp2,angle,costh + real*8 delta,fracl + logical success parameter (ctaurho=1.31467e-13) @@ -45,9 +49,29 @@ C Calulate R = sigmaL/sigmaT C Warning! Note that if you change the parameterization of R in C rho-physics, do it here as well for self consistency! C This parameterization is taken from HERMES data... +C DJG R_rho = 0.33*(orig%Q2/mrho2)**(0.61) +C DJG Update to use HepGen parameterization + mmu=105.66 + mt2 = 0.62*mrho2 + ml2 = 1.5*mt2 + ml = sqrt(ml2) + ksi2 = 1.0 - R_rho = 0.33*(orig%Q2/mrho2)**(0.61) - + + + R_rho=(1.+orig%Q2/mt2)**2 * ksi2 * + > (pi/2.*ml2/orig%Q2 - ml2*ml/(sqrt(orig%Q2)*(orig%Q2+ml2)) + > -ml2/orig%Q2*atan(ml/sqrt(orig%Q2)))**2 + + delta = 2.0*mmu**2*(1.0-epsilon)/orig%Q2 + fracl = (epsilon+delta)*R_rho/(1.0+(epsilon+delta)*R_rho) + + rtmp=grnd() + if(rtmp.lt.fracl) then + pol=0.0 ! long. + else + pol=1.0 ! transverse + endif ph = orig%p%P beta = ph/sqrt(ph**2+Mh2) @@ -56,13 +80,26 @@ C This parameterization is taken from HERMES data... C Generate center/mass decay angles and momenta. rph = grnd()*2.*pi - 100 rth1 = grnd()*2.-1. - rth = acos(rth1) + rtmp2 = grnd() + if(pol.eq.0.0) then + if(rtmp2.lt.0.5) then + costh=-1.0*abs(2*rtmp2-1.)**(1./3.) + elseif(rtmp2.gt.0.5) then + costh=+1.0*abs(2*rtmp2-1.)**(1./3.) + else + costh=0.0 + endif + elseif(pol.eq.1.0) then + angle=acos(abs(2*rtmp2-1.)) + if(rtmp2.lt.0.5) then + costh=-2.0*cos((pi+angle)/3.) + else + costh=+2.0*cos((pi+angle)/3.) + endif + endif + rth=acos(costh) - norm = (1.0+2.0*epsilon*R_rho)*grnd() - dist = sin(rth)**2+2.0*epsilon*R_rho*cos(rth)**2 - if(dist.lt.norm) goto 100 c write(6,*) 'now decaying the rho',ctaurho,mh2 ntup%rhotheta=rth c er = 384.65 @@ -117,7 +154,7 @@ C DJG If pion's heading for spectrometer, try to calculate xptar and yptar else th_inp = spec%p%theta+th_inp endif - elseif(hadron_arm.eq.2.or.hadron_arm.eq.4) then + elseif(hadron_arm.eq.2.or.hadron_arm.eq.4.or.hadron_arm.eq.5) then if(pyf.gt.0.0) then th_inp = th_inp - spec%p%theta else diff --git a/rho_physics.f b/rho_physics.f index db6ff93..fd87c63 100644 --- a/rho_physics.f +++ b/rho_physics.f @@ -238,7 +238,8 @@ c mtar_offshell = sqrt(efer**2-pfer**2) ! Put in some W dependence from photoproduction data ! DJG: This is my rough fit to some old photoproduction data. - sig0 = 41.263/(vertex%nu/1000.0)**0.4765 ! microbarns +! DJG sig0 = 41.263/(vertex%nu/1000.0)**0.4765 ! microbarns +! DJG - replace w/HepGen (from Vardan) ! DJG: R is usually fit to the form c_0 (Q2/M2_rho)^c1 ! DJG: The c_0 and c_1 are taken from HERMES data. @@ -246,36 +247,43 @@ c mtar_offshell = sqrt(efer**2-pfer**2) ! DJG: should change it in rho_decay also if you want to be self ! DJG: consistent. - R = 0.33*(vertex%Q2/mrho2)**(0.61) +c DJG R = 0.33*(vertex%Q2/mrho2)**(0.61) ! PYB added this - if(R.lt.0.) write(222,'(''r'',3e12.3)') - > r,vertex%Q2,mrho2 - if(R.lt.0.) R=0. +c DJG if(R.lt.0.) write(222,'(''r'',3e12.3)') +c DJG > r,vertex%Q2,mrho2 +c DJG if(R.lt.0.) R=0. ! DJG: The Q2 dependence is usually given by (M2_rho/(Q2+M2_rho))^2 ! DJG: HERMES found that 2.575 works better than 2 in the exponent. - sigt = sig0*(1.0+epsi*R)*(mrho2/(vertex%Q2+mrho2))**(2.575) +C DJG sigt = sig0*(1.0+epsi*R)*(mrho2/(vertex%Q2+mrho2))**(2.575) ! PYB added this - if(sigt.lt.0.) write(222,'(''sigt'',6e12.3)') - > sigt, sig0, epsi,r,mrho2,vertex%q2 - if(sigt<0.) sigt = 0. - +c if(sigt.lt.0.) write(222,'(''sigt'',6e12.3)') +c > sigt, sig0, epsi,r,mrho2,vertex%q2 +c if(sigt<0.) sigt = 0. ! DJG: Need to parameterize t-dependence with b parameter as a function of c-tau - - cdeltatau = hbarc/(sqrt(vertex%nu**2+vertex%Q2+mrho2)-vertex%nu) !in fm! - if(cdeltatau.lt.2.0) then - brho = 4.4679 + 8.6106*log10(cdeltatau) +! DJG: March 2022: HepGen uses a fixed value +c DJG cdeltatau = hbarc/(sqrt(vertex%nu**2+vertex%Q2+mrho2)-vertex%nu) !in fm! +c DJG if(cdeltatau.lt.2.0) then +c DJG brho = 4.4679 + 8.6106*log10(cdeltatau) ! PYB added this - if(brho.lt.1.0) brho = 1.0 - else - brho = 7.0 - endif +c DJG if(brho.lt.1.0) brho = 1.0 +c DJG else +c DJG brho = 7.0 +c DJG endif - sig219 = sigt*brho*exp(-brho*tprime)/2.0/pi !ub/GeV**2/rad +c DJG HepGen model (from Vardan) + sig0 = 1.0D-3*27.4*(6.0/(vertex%Q2/1.0E6))**1.96 ! microbarns + sigt = sig0*2.33 + if(sigt.lt.0.) write(222,'(''sigt'',6e12.3)') + > sigt, sig0, epsi,r,mrho2,vertex%q2 + if(sigt<0.) sigt = 0. + brho=5.0 + + sig219 = sigt*brho*exp(-brho*tprime)/2.0/pi !ub/GeV**2/rad sig=sig219/1.d+06 !dsig/dtdphicm in microbarns/MeV**2/rad -- GitLab