Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pyxxz6.f
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file pyxxz6.f
1 
2 C*********************************************************************
3 
4 C...PYXXZ6
5 C...Used in the calculation of inoi -> inoj + f + ~f.
6 
7  FUNCTION pyxxz6(X)
8 
9 C...Double precision and integer declarations.
10  IMPLICIT DOUBLE PRECISION(a-h, o-z)
11  IMPLICIT INTEGER(i-n)
12  INTEGER pyk,pychge,pycomp
13 C...Parameter statement to help give large particle numbers.
14  parameter(ksusy1=1000000,ksusy2=2000000,ktechn=3000000,
15  &kexcit=4000000,kdimen=5000000)
16 C...Commonblocks.
17  common/pydat1/mstu(200),paru(200),mstj(200),parj(200)
18 C COMMON/PYINTS/XXM(20)
19  COMPLEX*16 cxc
20  common/pyintc/xxc(10),cxc(8)
21  SAVE /pydat1/,/pyintc/
22 
23 C...Local variables.
24  COMPLEX*16 qlls,qrrs,qrls,qlrs,qllu,qrru,qlrt,qrlt
25  DOUBLE PRECISION pyxxz6,x
26  DOUBLE PRECISION xm12,xm22,xm32,s,s13,wprop2
27  DOUBLE PRECISION ww,wf1,wf2,wfl1,wfl2
28  DOUBLE PRECISION sij
29  DOUBLE PRECISION xmv,xmg,xmsu1,xmsu2,xmsd1,xmsd2
30  DOUBLE PRECISION ol2
31  DOUBLE PRECISION s23min,s23max,s23ave,s23del
32  INTEGER i
33 
34 C...Statement functions.
35 C...Integral from x to y of (t-a)(b-t) dt.
36  tint(x,y,a,b)=(x-y)*(-(x**2+x*y+y**2)/3d0+(b+a)*(x+y)/2d0-a*b)
37 C...Integral from x to y of (t-a)(b-t)/(t-c) dt.
38  tint2(x,y,a,b,c)=(x-y)*(-0.5d0*(x+y)+(b+a-c))-
39  &log(abs((x-c)/(y-c)))*(c-b)*(c-a)
40 C...Integral from x to y of (t-a)(b-t)/(t-c)**2 dt.
41  tint3(x,y,a,b,c)=-(x-y)+(c-a)*(c-b)*(y-x)/(x-c)/(y-c)+
42  &(b+a-2d0*c)*log(abs((x-c)/(y-c)))
43 C...Integral from x to y of (t-a)/(b-t) dt.
44  utint(x,y,a,b)=log(abs((x-a)/(b-x)*(b-y)/(y-a)))/(b-a)
45 C...Integral from x to y of 1/(t-a) dt.
46  tprop(x,y,a)=log(abs((x-a)/(y-a)))
47 
48  xm12=xxc(1)**2
49  xm22=xxc(2)**2
50  xm32=xxc(3)**2
51  s=xxc(4)**2
52  s13=x
53 
54  s23ave=xm22+xm32-0.5d0/x*(x+xm32-xm12)*(x+xm22-s)
55  s23del=0.5d0/x*sqrt( ( (x-xm12-xm32)**2-4d0*xm12*xm32)*
56  &( (x-xm22-s)**2 -4d0*xm22*s ) )
57 
58  s23min=(s23ave-s23del)
59  s23max=(s23ave+s23del)
60 
61  xmsd1=xxc(5)**2
62  xmsd2=xxc(7)**2
63  xmsu1=xxc(6)**2
64  xmsu2=xxc(8)**2
65 
66  xmv=xxc(9)
67  xmg=xxc(10)
68  qlls=cxc(1)
69  qllu=cxc(2)
70  qlrs=cxc(3)
71  qlrt=cxc(4)
72  qrls=cxc(5)
73  qrlt=cxc(6)
74  qrrs=cxc(7)
75  qrru=cxc(8)
76  wprop2=(s13-xmv**2)**2+(xmv*xmg)**2
77  sij=2d0*xxc(2)*xxc(4)*s13
78  IF(xmv.LE.1000d0) THEN
79  ol2=abs(qlls)**2+abs(qrrs)**2+abs(qlrs)**2+abs(qrls)**2
80  olr=-2d0*dble(qlrs*dconjg(qlls)+qrls*dconjg(qrrs))
81  ww=(ol2*2d0*tint(s23max,s23min,xm22,s)
82  & +olr*sij*(s23max-s23min))/wprop2
83  IF(xxc(5).LE.10000d0) THEN
84  wfl1=4d0*(dble(qlls*dconjg(qllu))*
85  & tint2(s23max,s23min,xm22,s,xmsd1)-
86  & .5d0*dble(qlls*dconjg(qlrt))*sij*tprop(s23max,s23min,xmsd2)+
87  & dble(qlrs*dconjg(qlrt))*tint2(s23max,s23min,xm22,s,xmsd2)-
88  & .5d0*dble(qlrs*dconjg(qllu))*sij*tprop(s23max,s23min,xmsd1))
89  & *(s13-xmv**2)/wprop2
90  ELSE
91  wfl1=0d0
92  ENDIF
93 
94  IF(xxc(6).LE.10000d0) THEN
95  wfl2=4d0*(dble(qrrs*dconjg(qrru))*
96  & tint2(s23max,s23min,xm22,s,xmsu1)-
97  & .5d0*dble(qrrs*dconjg(qrlt))*sij*tprop(s23max,s23min,xmsu2)+
98  & dble(qrls*dconjg(qrlt))*tint2(s23max,s23min,xm22,s,xmsu2)-
99  & .5d0*dble(qrls*dconjg(qrru))*sij*tprop(s23max,s23min,xmsu1))
100  & *(s13-xmv**2)/wprop2
101  ELSE
102  wfl2=0d0
103  ENDIF
104  ELSE
105  ww=0d0
106  wfl1=0d0
107  wfl2=0d0
108  ENDIF
109  IF(xxc(5).LE.10000d0) THEN
110  wf1=2d0*abs(qllu)**2*tint3(s23max,s23min,xm22,s,xmsd1)
111  & +2d0*abs(qlrt)**2*tint3(s23max,s23min,xm22,s,xmsd2)
112  & - 2d0*dble(qlrt*dconjg(qllu))*
113  & sij*utint(s23max,s23min,xmsd1,xm22+s-s13-xmsd2)
114  ELSE
115  wf1=0d0
116  ENDIF
117  IF(xxc(6).LE.10000d0) THEN
118  wf2=2d0*abs(qrru)**2*tint3(s23max,s23min,xm22,s,xmsu1)
119  & +2d0*abs(qrlt)**2*tint3(s23max,s23min,xm22,s,xmsu2)
120  & - 2d0*dble(qrlt*dconjg(qrru))*
121  & sij*utint(s23max,s23min,xmsu1,xm22+s-s13-xmsu2)
122  ELSE
123  wf2=0d0
124  ENDIF
125 
126  pyxxz6=(ww+wf1+wf2+wfl1+wfl2)
127 
128  IF(pyxxz6.LT.0d0) THEN
129  WRITE(mstu(11),*) ' NEGATIVE WT IN PYXXZ6 '
130  WRITE(mstu(11),*) xxc(1),xxc(2),xxc(3),xxc(4)
131  WRITE(mstu(11),*) (xxc(i),i=5,8)
132  WRITE(mstu(11),*) (xxc(i),i=9,12)
133  WRITE(mstu(11),*) (xxc(i),i=13,16)
134  WRITE(mstu(11),*) ww,wf1,wf2,wfl1,wfl2
135  WRITE(mstu(11),*) s23min,s23max
136  pyxxz6=0d0
137  ENDIF
138 
139  RETURN
140  END