]> git.uio.no Git - u/mrichter/AliRoot.git/blob - spdf/sasano.F
Update master to aliroot
[u/mrichter/AliRoot.git] / spdf / sasano.F
1 #include "pdf/pilot.h"
2       SUBROUTINE SASANO(KF,X,Q2,P2,ALAM,XPGA,VXPGA)
3 C...Purpose: to evaluate the parton distributions of the anomalous
4 C...photon, inhomogeneously evolved from a scale P2 (where it vanishes)
5 C...to Q2.
6 C...KF=0 gives the sum over (up to) 5 flavours,
7 C...KF<0 limits to flavours up to abs(KF),
8 C...KF>0 is for flavour KF only.
9 C...ALAM is the 4-flavour Lambda, which is automatically converted
10 C...to 3- and 5-flavour equivalents as needed.
11       DIMENSION XPGA(-6:6), VXPGA(-6:6), ALAMSQ(3:5)
12       DATA PMC/1.3/, PMB/4.6/, AEM/0.007297/, AEM2PI/0.0011614/
13  
14 C...Reset output.
15       DO 100 KFL=-6,6
16       XPGA(KFL)=0.
17       VXPGA(KFL)=0.
18   100 CONTINUE
19       IF(Q2.LE.P2) RETURN
20       KFA=IABS(KF)
21  
22 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
23       ALAMSQ(3)=(ALAM*(PMC/ALAM)**(2./27.))**2
24       ALAMSQ(4)=ALAM**2
25       ALAMSQ(5)=(ALAM*(ALAM/PMB)**(2./23.))**2
26       P2EFF=MAX(P2,1.2*ALAMSQ(3))
27       IF(KF.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
28       IF(KF.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
29       Q2EFF=MAX(Q2,P2EFF)
30       XL=-LOG(X)
31  
32 C...Find number of flavours at lower and upper scale.
33       NFP=4
34       IF(P2EFF.LT.PMC**2) NFP=3
35       IF(P2EFF.GT.PMB**2) NFP=5
36       NFQ=4
37       IF(Q2EFF.LT.PMC**2) NFQ=3
38       IF(Q2EFF.GT.PMB**2) NFQ=5
39  
40 C...Define range of flavour loop.
41       IF(KF.EQ.0) THEN
42         KFLMN=1
43         KFLMX=5
44       ELSEIF(KF.LT.0) THEN
45         KFLMN=1
46         KFLMX=KFA
47       ELSE
48         KFLMN=KFA
49         KFLMX=KFA
50       ENDIF
51  
52 C...Loop over flavours the photon can branch into.
53       DO 110 KFL=KFLMN,KFLMX
54  
55 C...Light flavours: calculate t range and (approximate) s range.
56       IF(KFL.LE.3.AND.(KFL.EQ.1.OR.KFL.EQ.KF)) THEN
57         TDIFF=LOG(Q2EFF/P2EFF)
58         S=(6./(33.-2.*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
59      &  LOG(P2EFF/ALAMSQ(NFQ)))
60         IF(NFQ.GT.NFP) THEN
61           Q2DIV=PMB**2
62           IF(NFQ.EQ.4) Q2DIV=PMC**2
63           SNFQ=(6./(33.-2.*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
64      &    LOG(P2EFF/ALAMSQ(NFQ)))
65           SNFP=(6./(33.-2.*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
66      &    LOG(P2EFF/ALAMSQ(NFQ-1)))
67           S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
68         ENDIF
69         IF(NFQ.EQ.5.AND.NFP.EQ.3) THEN
70           Q2DIV=PMC**2
71           SNF4=(6./(33.-2.*4))*LOG(LOG(Q2DIV/ALAMSQ(4))/
72      &    LOG(P2EFF/ALAMSQ(4)))
73           SNF3=(6./(33.-2.*3))*LOG(LOG(Q2DIV/ALAMSQ(3))/
74      &    LOG(P2EFF/ALAMSQ(3)))
75           S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNF3-SNF4)
76         ENDIF
77  
78 C...u and s quark do not need a separate treatment when d has been done.
79       ELSEIF(KFL.EQ.2.OR.KFL.EQ.3) THEN
80  
81 C...Charm: as above, but only include range above c threshold.
82       ELSEIF(KFL.EQ.4) THEN
83         IF(Q2.LE.PMC**2) GOTO 110
84         P2EFF=MAX(P2EFF,PMC**2)
85         Q2EFF=MAX(Q2EFF,P2EFF)
86         TDIFF=LOG(Q2EFF/P2EFF)
87         S=(6./(33.-2.*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
88      &  LOG(P2EFF/ALAMSQ(NFQ)))
89         IF(NFQ.EQ.5.AND.NFP.EQ.4) THEN
90           Q2DIV=PMB**2
91           SNFQ=(6./(33.-2.*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
92      &    LOG(P2EFF/ALAMSQ(NFQ)))
93           SNFP=(6./(33.-2.*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
94      &    LOG(P2EFF/ALAMSQ(NFQ-1)))
95           S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
96         ENDIF
97  
98 C...Bottom: as above, but only include range above b threshold.
99       ELSEIF(KFL.EQ.5) THEN
100         IF(Q2.LE.PMB**2) GOTO 110
101         P2EFF=MAX(P2EFF,PMB**2)
102         Q2EFF=MAX(Q2,P2EFF)
103         TDIFF=LOG(Q2EFF/P2EFF)
104         S=(6./(33.-2.*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
105      &  LOG(P2EFF/ALAMSQ(NFQ)))
106       ENDIF
107  
108 C...Evaluate flavour-dependent prefactor (charge^2 etc.).
109       CHSQ=1./9.
110       IF(KFL.EQ.2.OR.KFL.EQ.4) CHSQ=4./9.
111       FAC=AEM2PI*2.*CHSQ*TDIFF
112  
113 C...Evaluate parton distributions (normalized to unit momentum sum).
114       IF(KFL.EQ.1.OR.KFL.EQ.4.OR.KFL.EQ.5.OR.KFL.EQ.KF) THEN
115         XVAL= ((1.5+2.49*S+26.9*S**2)/(1.+32.3*S**2)*X**2 +
116      &  (1.5-0.49*S+7.83*S**2)/(1.+7.68*S**2)*(1.-X)**2 +
117      &  1.5*S/(1.-3.2*S+7.*S**2)*X*(1.-X)) *
118      &  X**(1./(1.+0.58*S)) * (1.-X**2)**(2.5*S/(1.+10.*S))
119         XGLU= 2.*S/(1.+4.*S+7.*S**2) *
120      &  X**(-1.67*S/(1.+2.*S)) * (1.-X**2)**(1.2*S) *
121      &  ((4.*X**2+7.*X+4.)*(1.-X)/3. - 2.*X*(1.+X)*XL)
122         XSEA= 0.333*S**2/(1.+4.90*S+4.69*S**2+21.4*S**3) *
123      &  X**(-1.18*S/(1.+1.22*S)) * (1.-X)**(1.2*S) *
124      &  ((8.-73.*X+62.*X**2)*(1.-X)/9. + (3.-8.*X**2/3.)*X*XL +
125      &  (2.*X-1.)*X*XL**2)
126  
127 C...Threshold factors for c and b sea.
128         SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
129         XCHM=0.
130         IF(Q2.GT.PMC**2.AND.Q2.GT.1.001*P2EFF) THEN
131           SCH=MAX(0.,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
132           XCHM=XSEA*(1.-(SCH/SLL)**3)
133         ENDIF
134         XBOT=0.
135         IF(Q2.GT.PMB**2.AND.Q2.GT.1.001*P2EFF) THEN
136           SBT=MAX(0.,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
137           XBOT=XSEA*(1.-(SBT/SLL)**3)
138         ENDIF
139       ENDIF
140  
141 C...Add contribution of each valence flavour.
142       XPGA(0)=XPGA(0)+FAC*XGLU
143       XPGA(1)=XPGA(1)+FAC*XSEA
144       XPGA(2)=XPGA(2)+FAC*XSEA
145       XPGA(3)=XPGA(3)+FAC*XSEA
146       XPGA(4)=XPGA(4)+FAC*XCHM
147       XPGA(5)=XPGA(5)+FAC*XBOT
148       XPGA(KFL)=XPGA(KFL)+FAC*XVAL
149       VXPGA(KFL)=VXPGA(KFL)+FAC*XVAL
150   110 CONTINUE
151       DO 120 KFL=1,5
152       XPGA(-KFL)=XPGA(KFL)
153       VXPGA(-KFL)=VXPGA(KFL)
154   120 CONTINUE
155  
156       RETURN
157       END