]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/shaker/luxtot.f
Corrections thanks to A.Angelis
[u/mrichter/AliRoot.git] / PHOS / shaker / luxtot.f
1 *CMZ :          17/07/98  15.44.35  by  Federico Carminati
2 *-- Author :
3 C*********************************************************************
4
5       SUBROUTINE LUXTOT(KFL,ECM,XTOT)
6
7 C...Purpose: to calculate total cross-section, including initial
8 C...state radiation effects.
9 *KEEP,LUDAT1.
10       COMMON /LUDAT1/ MSTU(200),PARU(200),MSTJ(200),PARJ(200)
11       SAVE /LUDAT1/
12 *KEEP,LUDAT2.
13       COMMON /LUDAT2/ KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
14       SAVE /LUDAT2/
15 *KEND.
16
17 C...Status, (optimized) Q^2 scale, alpha_strong.
18       PARJ(151)=ECM
19       MSTJ(119)=10*MSTJ(102)+KFL
20       IF(MSTJ(111).EQ.0) THEN
21         Q2R=ECM**2
22       ELSEIF(MSTU(111).EQ.0) THEN
23         PARJ(168)=MIN(1.,MAX(PARJ(128),EXP(-12.*PARU(1)/
24      &  ((33.-2.*MSTU(112))*PARU(111)))))
25         Q2R=PARJ(168)*ECM**2
26       ELSE
27         PARJ(168)=MIN(1.,MAX(PARJ(128),PARU(112)/ECM,
28      &  (2.*PARU(112)/ECM)**2))
29         Q2R=PARJ(168)*ECM**2
30       ENDIF
31       ALSPI=ULALPS(Q2R)/PARU(1)
32
33 C...QCD corrections factor in R.
34       IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN
35         RQCD=1.
36       ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN
37         RQCD=1.+ALSPI
38       ELSEIF(MSTJ(109).EQ.0) THEN
39         RQCD=1.+ALSPI+(1.986-0.115*MSTU(118))*ALSPI**2
40         IF(MSTJ(111).EQ.1) RQCD=MAX(1.,RQCD+(33.-2.*MSTU(112))/12.*
41      &  LOG(PARJ(168))*ALSPI**2)
42       ELSEIF(IABS(MSTJ(101)).EQ.1) THEN
43         RQCD=1.+(3./4.)*ALSPI
44       ELSE
45         RQCD=1.+(3./4.)*ALSPI-(3./32.+0.519*MSTU(118))*ALSPI**2
46       ENDIF
47
48 C...Calculate Z0 width if default value not acceptable.
49       IF(MSTJ(102).GE.3) THEN
50         RVA=3.*(3.+(4.*PARU(102)-1.)**2)+6.*RQCD*(2.+(1.-8.*PARU(102)/
51      &  3.)**2+(4.*PARU(102)/3.-1.)**2)
52         DO 100 KFLC=5,6
53         VQ=1.
54         IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0.,1.-(2.*ULMASS(KFLC)/
55      &  ECM)**2))
56         IF(KFLC.EQ.5) VF=4.*PARU(102)/3.-1.
57         IF(KFLC.EQ.6) VF=1.-8.*PARU(102)/3.
58   100   RVA=RVA+3.*RQCD*(0.5*VQ*(3.-VQ**2)*VF**2+VQ**3)
59         PARJ(124)=PARU(101)*PARJ(123)*RVA/(48.*PARU(102)*(1.-PARU(102)))
60       ENDIF
61
62 C...Calculate propagator and related constants for QFD case.
63       POLL=1.-PARJ(131)*PARJ(132)
64       IF(MSTJ(102).GE.2) THEN
65         SFF=1./(16.*PARU(102)*(1.-PARU(102)))
66         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
67         SFI=SFW*(1.-(PARJ(123)/ECM)**2)
68         VE=4.*PARU(102)-1.
69         SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131))
70         SF1W=SFF**2*((VE**2+1.)*POLL+2.*VE*(PARJ(132)-PARJ(131)))
71         HF1I=SFI*SF1I
72         HF1W=SFW*SF1W
73       ENDIF
74
75 C...Loop over different flavours: charge, velocity.
76       RTOT=0.
77       RQQ=0.
78       RQV=0.
79       RVA=0.
80       DO 110 KFLC=1,MAX(MSTJ(104),KFL)
81       IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110
82       MSTJ(93)=1
83       PMQ=ULMASS(KFLC)
84       IF(ECM.LT.2.*PMQ+PARJ(127)) GOTO 110
85       QF=KCHG(KFLC,1)/3.
86       VQ=1.
87       IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1.-(2.*PMQ/ECM)**2)
88
89 C...Calculate R and sum of charges for QED or QFD case.
90       RQQ=RQQ+3.*QF**2*POLL
91       IF(MSTJ(102).LE.1) THEN
92         RTOT=RTOT+3.*0.5*VQ*(3.-VQ**2)*QF**2*POLL
93       ELSE
94         VF=SIGN(1.,QF)-4.*QF*PARU(102)
95         RQV=RQV-6.*QF*VF*SF1I
96         RVA=RVA+3.*(VF**2+1.)*SF1W
97         RTOT=RTOT+3.*(0.5*VQ*(3.-VQ**2)*(QF**2*POLL-2.*QF*VF*HF1I+
98      &  VF**2*HF1W)+VQ**3*HF1W)
99       ENDIF
100   110 CONTINUE
101       RSUM=RQQ
102       IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA
103
104 C...Calculate cross-section, including QCD corrections.
105       PARJ(141)=RQQ
106       PARJ(142)=RTOT
107       PARJ(143)=RTOT*RQCD
108       PARJ(144)=PARJ(143)
109       PARJ(145)=PARJ(141)*86.8/ECM**2
110       PARJ(146)=PARJ(142)*86.8/ECM**2
111       PARJ(147)=PARJ(143)*86.8/ECM**2
112       PARJ(148)=PARJ(147)
113       PARJ(157)=RSUM*RQCD
114       PARJ(158)=0.
115       PARJ(159)=0.
116       XTOT=PARJ(147)
117       IF(MSTJ(107).LE.0) RETURN
118
119 C...Virtual cross-section.
120       XKL=PARJ(135)
121       XKU=MIN(PARJ(136),1.-(2.*PARJ(127)/ECM)**2)
122       ALE=2.*LOG(ECM/ULMASS(11))-1.
123       SIGV=ALE/3.+2.*LOG(ECM**2/(ULMASS(13)*ULMASS(15)))/3.-4./3.+
124      &1.526*LOG(ECM**2/0.932)
125
126 C...Soft and hard radiative cross-section in QED case.
127       IF(MSTJ(102).LE.1) THEN
128         SIGV=1.5*ALE-0.5+PARU(1)**2/3.+2.*SIGV
129         SIGS=ALE*(2.*LOG(XKL)-LOG(1.-XKL)-XKL)
130         SIGH=ALE*(2.*LOG(XKU/XKL)-LOG((1.-XKU)/(1.-XKL))-(XKU-XKL))
131
132 C...Soft and hard radiative cross-section in QFD case.
133       ELSE
134         SZM=1.-(PARJ(123)/ECM)**2
135         SZW=PARJ(123)*PARJ(124)/ECM**2
136         PARJ(161)=-RQQ/RSUM
137         PARJ(162)=-(RQQ+RQV+RVA)/RSUM
138         PARJ(163)=(RQV*(1.-0.5*SZM-SFI)+RVA*(1.5-SZM-SFW))/RSUM
139         PARJ(164)=(RQV*SZW**2*(1.-2.*SFW)+RVA*(2.*SFI+SZW**2-4.+3.*SZM-
140      &  SZM**2))/(SZW*RSUM)
141         SIGV=1.5*ALE-0.5+PARU(1)**2/3.+((2.*RQQ+SFI*RQV)/RSUM)*SIGV+
142      &  (SZW*SFW*RQV/RSUM)*PARU(1)*20./9.
143         SIGS=ALE*(2.*LOG(XKL)+PARJ(161)*LOG(1.-XKL)+PARJ(162)*XKL+
144      &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+
145      &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW)))
146         SIGH=ALE*(2.*LOG(XKU/XKL)+PARJ(161)*LOG((1.-XKU)/(1.-XKL))+
147      &  PARJ(162)*(XKU-XKL)+PARJ(163)*LOG(((XKU-SZM)**2+SZW**2)/
148      &  ((XKL-SZM)**2+SZW**2))+PARJ(164)*(ATAN((XKU-SZM)/SZW)-
149      &  ATAN((XKL-SZM)/SZW)))
150       ENDIF
151
152 C...Total cross-section and fraction of hard photon events.
153       PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH)
154       PARJ(157)=RSUM*(1.+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD
155       PARJ(144)=PARJ(157)
156       PARJ(148)=PARJ(144)*86.8/ECM**2
157       XTOT=PARJ(148)
158
159       RETURN
160       END