EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pygbeh.F
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file pygbeh.F
1  SUBROUTINE pygbeh(KF,X,Q2,P2,PM2,XPBH)
2 C...Purpose: to evaluate the Bethe-Heitler cross section for
3 C...heavy flavour production.
4  DATA aem2pi/0.0011614/
5 
6 C...Reset output.
7  xpbh=0.
8  sigbh=0.
9 
10 C...Check kinematics limits.
11  IF(x.GE.q2/(4.*pm2+q2+p2)) RETURN
12  w2=q2*(1.-x)/x-p2
13  beta2=1.-4.*pm2/w2
14  IF(beta2.LT.1e-10) RETURN
15  rmq=4.*pm2/q2
16 
17 C...Simple case: P2 = 0.
18  IF(p2.LT.1e-4) THEN
19  beta=sqrt(beta2)
20  IF(beta.LT.0.99) THEN
21  xbl=log((1.+beta)/(1.-beta))
22  ELSE
23  xbl=log((1.+beta)**2*w2/(4.*pm2))
24  ENDIF
25  sigbh=beta*(8.*x*(1.-x)-1.-rmq*x*(1.-x))+
26  & xbl*(x**2+(1.-x)**2+rmq*x*(1.-3.*x)-0.5*rmq**2*x**2)
27 
28 C...Complicated case: P2 > 0, based on approximation of
29 C...C.T. Hill and G.G. Ross, Nucl. Phys. B148 (1979) 373
30  ELSE
31  rpq=1.-4.*x**2*p2/q2
32  IF(rpq.GT.1e-10) THEN
33  rpbe=sqrt(rpq*beta2)
34  IF(rpbe.LT.0.99) THEN
35  xbl=log((1.+rpbe)/(1.-rpbe))
36  xbi=2.*rpbe/(1.-rpbe**2)
37  ELSE
38  rpbesn=4.*pm2/w2+(4.*x**2*p2/q2)*beta2
39  xbl=log((1.+rpbe)**2/rpbesn)
40  xbi=2.*rpbe/rpbesn
41  ENDIF
42  sigbh=beta*(6.*x*(1.-x)-1.)+
43  & xbl*(x**2+(1.-x)**2+rmq*x*(1.-3.*x)-0.5*rmq**2*x**2)+
44  & xbi*(2.*x/q2)*(pm2*x*(2.-rmq)-p2*x)
45  ENDIF
46  ENDIF
47 
48 C...Multiply by charge-squared etc. to get parton distribution.
49  chsq=1./9.
50  IF(iabs(kf).EQ.2.OR.iabs(kf).EQ.4) chsq=4./9.
51  xpbh=3.*chsq*aem2pi*x*sigbh
52 
53  RETURN
54  END