~maddevelopers/mg5amcnlo/WWW_tg

« back to all changes in this revision

Viewing changes to users/mardelcourt/PROC_427003/PROC_427003/Source/PDF/Partonx5.f

  • Committer: Martin Delcourt
  • Date: 2013-03-25 20:56:51 UTC
  • Revision ID: mdel@perso.be-20130325205651-f3bisj4z2jlfyjh3
added test et test2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
      FUNCTION PartonX (IPRTN, X, Q)
2
 
C
3
 
C   Given the parton distribution function in the array Upd in
4
 
C   COMMON / CtqPar1 / , this routine fetches u(fl, x, q) at any value of
5
 
C   x and q using Mth-order polynomial interpolation for x and Ln(Q/Lambda).
6
 
C
7
 
      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
8
 
C
9
 
      PARAMETER (MXX = 105, MXQ = 25, MXF = 6)
10
 
      PARAMETER (MXPQX = (MXF *2 +2) * MXQ * MXX)
11
 
      PARAMETER (M= 2, M1 = M + 1)
12
 
C
13
 
      Logical First
14
 
      Common 
15
 
     > / CtqPar1 / Al, XV(0:MXX), QL(0:MXQ), UPD(MXPQX)
16
 
     > / CtqPar2 / Nx, Nt, NfMx
17
 
     > / XQrange / Qini, Qmax, Xmin
18
 
C
19
 
      Dimension Fq(M1), Df(M1)
20
 
 
21
 
      Data First /.true./
22
 
      save First
23
 
C                                                 Work with Log (Q)
24
 
      QG  = LOG (Q/AL)
25
 
 
26
 
C                           Find lower end of interval containing X
27
 
      JL = -1
28
 
      JU = Nx+1
29
 
 11   If (JU-JL .GT. 1) Then
30
 
         JM = (JU+JL) / 2
31
 
         If (X .GT. XV(JM)) Then
32
 
            JL = JM
33
 
         Else
34
 
            JU = JM
35
 
         Endif
36
 
         Goto 11
37
 
      Endif
38
 
 
39
 
      Jx = JL - (M-1)/2
40
 
      If (X .lt. Xmin .and. First ) Then
41
 
         First = .false.
42
 
         Print '(A, 2(1pE12.4))', 
43
 
     >     ' WARNING: X < Xmin, extrapolation used; X, Xmin =', X, Xmin
44
 
         If (Jx .LT. 0) Jx = 0
45
 
      Elseif (Jx .GT. Nx-M) Then
46
 
         Jx = Nx - M
47
 
      Endif
48
 
C                                    Find the interval where Q lies
49
 
      JL = -1
50
 
      JU = NT+1
51
 
 12   If (JU-JL .GT. 1) Then
52
 
         JM = (JU+JL) / 2
53
 
         If (QG .GT. QL(JM)) Then
54
 
            JL = JM
55
 
         Else
56
 
            JU = JM
57
 
         Endif
58
 
         Goto 12
59
 
      Endif
60
 
 
61
 
      Jq = JL - (M-1)/2
62
 
      If (Jq .LT. 0) Then
63
 
         Jq = 0
64
 
         If (Q .lt. Qini)  Print '(A, 2(1pE12.4))', 
65
 
     >     ' WARNING: Q < Qini, extrapolation used; Q, Qini =', Q, Qini
66
 
      Elseif (Jq .GT. Nt-M) Then
67
 
         Jq = Nt - M
68
 
         If (Q .gt. Qmax)  Print '(A, 2(1pE12.4))', 
69
 
     >     ' WARNING: Q > Qmax, extrapolation used; Q, Qmax =', Q, Qmax
70
 
      Endif
71
 
 
72
 
      If (Iprtn .GE. 3) Then
73
 
         Ip = - Iprtn
74
 
      Else
75
 
         Ip = Iprtn
76
 
      EndIf
77
 
C                             Find the off-set in the linear array Upd
78
 
      JFL = Ip + NfMx
79
 
      J0  = (JFL * (NT+1) + Jq) * (NX+1) + Jx
80
 
C
81
 
C                                           Now interpolate in x for M1 Q's
82
 
      Do 21 Iq = 1, M1
83
 
         J1 = J0 + (Nx+1)*(Iq-1) + 1
84
 
         Call Polint (XV(Jx), Upd(J1), M1, X, Fq(Iq), Df(Iq))
85
 
 21   Continue
86
 
C                                          Finish off by interpolating in Q
87
 
      Call Polint (QL(Jq), Fq(1), M1, QG, Ftmp, Ddf)
88
 
 
89
 
      PartonX = Ftmp
90
 
C
91
 
      RETURN
92
 
C                        ****************************
93
 
      END
94