EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
lxp.F
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file lxp.F
1 
2 C **********************************************************************
3 
4  SUBROUTINE lxp(XP,IFAIL)
5 
6  IMPLICIT NONE
7 
8 C...Choose value of XP according to QCD matrix elements weighted by
9 C...structure functions.
10 
11 *
12 * to avoid variable conflictions, a second keep element is necessary
13 * with the same common block name (see LPTOU2)
14 *
15  COMMON /leptou/ cut(14),lst(40),parl(30),
16  & x,y,w2,q2,u
17  REAL cut,parl,x,y,w2,q2,u
18  INTEGER lst
19  SAVE /leptou/
20 
21  COMMON /linter/ pari(50),ewqc(2,2,8),qc(8),zl(2,4),zq(2,8),pq(17)
22  REAL pari,ewqc,qc,zl,zq,pq
23  SAVE /linter/
24 
25  COMMON /lgrid/ nxx,nww,xx(31),ww(21),pqg(31,21,3),pqqb(31,21,2),
26  &qgmax(31,21,3),qqbmax(31,21,2),ycut(31,21),xtot(31,21),np
27  REAL xx,ww,pqg,pqqb,qgmax,qqbmax,ycut,xtot
28  INTEGER nxx,nww,np
29  SAVE /lgrid/
30 
31 
32  common/debug1/iw,ix,ip
33  integer iw,ix,ip
34 
35  INTEGER ifail,loop
36  REAL xp,xpmin,xpmax,ap,bp,qxpmax,xpweit
37  REAL rlu,dsigma
38  DOUBLE PRECISION dxpmax
39 
40  ifail=1
41 CAE.Scheme for ME cutoff: W2, Q2, mixed, z-shat
42  IF(lst(20).LE.1) THEN
43  xpmin=dble(x)/(1.d0-2.d0*(1.d0-dble(x))*dble(parl(27)))
44  dxpmax=dble(x)/(dble(x)+(1.d0-dble(x))*dble(parl(27)))
45  xpmax=sngl(dxpmax)
46  ELSEIF(lst(20).EQ.2) THEN
47  xpmin=dble(x)/(1.d0-2.d0*dble(x)*dble(parl(27)))
48  dxpmax=1.d0/(1.d0+dble(parl(27)))
49  xpmax=sngl(dxpmax)
50  ELSEIF(lst(20).EQ.3.OR.lst(20).EQ.4) THEN
51  xpmin=x
52  dxpmax=1.d0/(1.d0+dble(parl(9)))
53  xpmax=dxpmax
54  ELSEIF(lst(20).EQ.5) THEN
55  xpmin=x
56  dxpmax=dble(q2)/(dble(q2)+dble(parl(9)))
57  xpmax=dxpmax
58  ELSEIF(lst(20).EQ.6) THEN
59  xpmin=x
60  dxpmax=dble(q2)/(dble(q2)+dble(parl(27)))
61  xpmax=dxpmax
62  ELSE
63  WRITE(6,*) 'LXP: No such jet scheme!'
64  ENDIF
65 CAE
66  IF(xpmin.LT.x.OR.xpmin.GT.1.) RETURN
67  IF(xpmin.GE.xpmax) RETURN
68  ap=1.-xpmin
69  bp=(1.d0-dxpmax)/ap
70  IF(lst(24).EQ.2) THEN
71  qxpmax=pari(15)
72  IF(lst(17).NE.0.AND.lst(19).GE.0) qxpmax=
73  & pari(24)*pari(15)+pari(25)*pari(16)+pari(26)*pari(17)
74  ELSE
75  qxpmax=pari(18)
76  IF(lst(17).NE.0.AND.lst(19).GE.0) qxpmax=
77  & pari(24)*pari(18)+pari(25)*pari(19)
78  ENDIF
79 
80 C...Safety factor on max value.
81  qxpmax=qxpmax*1.05
82  loop=0
83  100 loop=loop+1
84  IF(loop.GT.1000) RETURN
85  xp=1.-ap*bp**rlu(0)
86  xpweit=dsigma(xp)/qxpmax
87  IF(xpweit.LT.rlu(0)) goto 100
88  ifail=0
89  RETURN
90  END