EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pollazimu.F
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file pollazimu.F
1 *72*********************************************************************
2  SUBROUTINE pollazimu(XP,ZP)
3 
4  IMPLICIT NONE
5 
6 C...Choose azimuthal angle (PHI) according to QCD matrix elements.
7 
8 
9 *
10 * to avoid variable conflictions, a second keep element is necessary
11 * with the same common block name (see LPTOU2)
12 *
13 *
14 * to avoid variable conflictions, a second keep element is necessary
15 * with the same common block name (see LPTOU2)
16 *
17  COMMON /leptou/ cut(14),lst(40),parl(30),
18  & x,y,w2,q2,u
19  REAL cut,parl,x,y,w2,q2,u
20  INTEGER lst
21  SAVE /leptou/
22 
23  COMMON /linter/ pari(50),ewqc(2,2,8),qc(8),zl(2,4),zq(2,8),pq(17)
24  REAL pari,ewqc,qc,zl,zq,pq
25  SAVE /linter/
26 
27 
28 *...Two additional (local) arrays to store the values of the
29 *...parton distriutions at XI=X/XP
30  INTEGER j,ifl,i,ih,ievfl
31  REAL xpq1,xp,zp,dqcd,poldqcd,a,b,c,xdpq1,phimax,phi,
32  +xi,sgn
33  REAL rlu
34 
35  dimension xpq1(-6:6),xdpq1(-6:6)
36 *---
37 
38  j=lst(24)-1
39  sgn=sign(1.,2.5-lst(24))
40  ifl=lst(25)
41  i=iabs(ifl)
42  ih=1
43  IF(lst(30).EQ.1) ih=2
44 
45  IF(lst(23).EQ.2) THEN
46  a=pari(24)*dqcd(0,j,1,xp,zp,y)+pari(25)*dqcd(0,j,2,xp,zp,y)
47  & -lst(30)*isign(1,ifl)*pari(26)*dqcd(0,j,3,xp,zp,y)
48  b=dqcd(1,j,1,xp,zp,y)
49  & +sgn*lst(30)*isign(1,ifl)*dqcd(1,j,3,xp,zp,y)
50  c=dqcd(2,j,1,xp,zp,y)
51 
52  ELSEIF(lst(23).EQ.1) THEN
53  xi=x/xp
54  CALL lnstrf(xi,q2,xpq1)
55  CALL dnstrf(xi,q2,xdpq1)
56 
57  IF(lst(24).EQ.2)THEN
58  ievfl=ifl
59  ELSEIF(lst(24).EQ.3)THEN
60  ievfl=0
61  ENDIF
62 
63  a= xpq1(ievfl)*
64  & (pari(24)*dqcd(0,j,1,xp,zp,y)+pari(25)*dqcd(0,j,2,xp,zp,y))
65  & + (float(lst(40))*xdpq1(ievfl)*pari(26)*poldqcd(0,j,3,xp,zp,y))
66  b= xpq1(ievfl) *dqcd(1,j,1,xp,zp,y)
67  & +float(lst(40))*xdpq1(ievfl)*poldqcd(1,j,3,xp,zp,y)
68  c= xpq1(ievfl) *dqcd(2,j,1,xp,zp,y)
69 
70  ENDIF
71 
72  phimax=abs(a)+abs(b)+abs(c)
73 
74  IF(xdpq1(ievfl).gt. xpq1(ievfl).and.
75  & .NOT.(lst(15).ge.107.and.lst(15).le.109)) THEN
76  WRITE(*,*) 'Trouble in POLLAZIMU!'
77  stop
78  ENDIF
79 
80  100 phi=6.2832*rlu(0)
81  IF(a+b*cos(phi)+c*cos(2.*phi).LT.rlu(0)*phimax) goto 100
82  CALL lurobo(0.,phi,0.,0.,0.)
83 
84 CAE.Store ME variables
85  parl(28)=xp
86  parl(29)=zp
87  parl(30)=phi
88 CAE
89  RETURN
90  END