Page MenuHomeHEPForge

No OneTemporary

Index: trunk/share/tests/pdf_builtin.sin
===================================================================
--- trunk/share/tests/pdf_builtin.sin (revision 5839)
+++ trunk/share/tests/pdf_builtin.sin (revision 5840)
@@ -1,72 +1,84 @@
# $Id: pdf_builtin.sin 4932 2013-12-05 08:46:27Z jr_reuter $
# SINDARIN input for WHIZARD self-test
# Process p, p -> e2, E2
library = "pdf_builtin_1_lib"
model = "SM"
?logging = true
?openmp_logging = false
?vis_history = false
?integration_timer = false
?phs_s_mapping = false
alias q = u:d:s
alias Q = U:D:S
alias lepton = e1:e2:e3:E1:E2:E3
seed = 0
$method = "omega"
process pdf_builtin_1_p = q, Q => e2, E2
process pdf_builtin_2_p = A, A => e1, E1
compile ()
ms = 0
me = 0
mmu = 0
$phs_method = "wood"
$integration_method = "vamp"
cuts = all Pt > 100 GeV [lepton]
and all M > 10 GeV [lepton, lepton]
sqrts = 1000
iterations = 4:500, 2:500
!!! Tests should be run single-threaded
openmp_num_threads = 1
beams = u, U
integrate (pdf_builtin_1_p)
beams = p, p => pdf_builtin
$pdf_builtin_set = "cteq6l"
integrate (pdf_builtin_1_p)
beams = p, p => pdf_builtin
$pdf_builtin_set = "mstw2008lo"
integrate (pdf_builtin_1_p)
beams = p, p => pdf_builtin
$pdf_builtin_set = "mstw2008nlo"
integrate (pdf_builtin_1_p)
beams = p, p => pdf_builtin
$pdf_builtin_set = "mstw2008nnlo"
integrate (pdf_builtin_1_p)
beams = p, p => pdf_builtin
$pdf_builtin_set = "ct10"
integrate (pdf_builtin_1_p)
+beams = p, p => pdf_builtin
+$pdf_builtin_set = "CJ12_max"
+integrate (pdf_builtin_1_p)
+
+beams = p, p => pdf_builtin
+$pdf_builtin_set = "CJ12_mid"
+integrate (pdf_builtin_1_p)
+
+beams = p, p => pdf_builtin
+$pdf_builtin_set = "CJ12_min"
+integrate (pdf_builtin_1_p)
+
beams = A, A
integrate (pdf_builtin_2_p)
beams = p, p => pdf_builtin
$pdf_builtin_set = "mrst2004qedp"
integrate (pdf_builtin_2_p)
Index: trunk/share/tests/ref-output-double/pdf_builtin.ref
===================================================================
--- trunk/share/tests/ref-output-double/pdf_builtin.ref (revision 5839)
+++ trunk/share/tests/ref-output-double/pdf_builtin.ref (revision 5840)
@@ -1,407 +1,551 @@
?openmp_logging = false
?vis_history = false
?integration_timer = false
?phs_s_mapping = false
[user variable] q = PDG(2, 1, 3)
[user variable] Q = PDG(-2, -1, -3)
[user variable] lepton = PDG(11, 13, 15, -11, -13, -15)
seed = 0
$method = "omega"
| Process library 'pdf_builtin_1_lib': recorded process 'pdf_builtin_1_p'
| Process library 'pdf_builtin_1_lib': recorded process 'pdf_builtin_2_p'
| Process library 'pdf_builtin_lib': compiling ...
| Process library 'pdf_builtin_lib': ... success.
| Process library 'pdf_builtin_1_lib': compiling ...
| Process library 'pdf_builtin_1_lib': writing makefile
| Process library 'pdf_builtin_1_lib': removing old files
| Process library 'pdf_builtin_1_lib': writing driver
| Process library 'pdf_builtin_1_lib': creating source code
| Process library 'pdf_builtin_1_lib': compiling sources
| Process library 'pdf_builtin_1_lib': linking
| Process library 'pdf_builtin_1_lib': loading
| Process library 'pdf_builtin_1_lib': ... success.
SM.ms = 0.000000000000E+00
SM.me = 0.000000000000E+00
SM.mmu = 0.000000000000E+00
$phs_method = "wood"
$integration_method = "vamp"
sqrts = 1.000000000000E+03
openmp_num_threads = 1
| RNG: Initializing TAO random-number generator
| RNG: Setting seed for random-number generator to 0
| Initializing integration for process pdf_builtin_1_p:
| ------------------------------------------------------------------------
| Process [scattering]: 'pdf_builtin_1_p'
| Library name = 'pdf_builtin_1_lib'
| Process index = 1
| Process components:
| 1: 'pdf_builtin_1_p_i1': u:d:s, ubar:dbar:sbar => mu-, mu+ [omega]
| ------------------------------------------------------------------------
| Beam structure: u, ubar
| Beam data (collision):
| u (mass = 0.0000000E+00 GeV)
| ubar (mass = 0.0000000E+00 GeV)
| sqrts = 1.000000000000E+03 GeV
| Phase space: generating configuration ...
| Phase space: ... success.
| Phase space: writing configuration file 'pdf_builtin_1_p_i1.phs'
| Phase space: 2 channels, 2 dimensions
| Phase space: found 2 channels, collected in 2 groves.
| Phase space: Using 2 equivalences between channels.
| Phase space: wood
| Applying user-defined cuts.
| Starting integration for process 'pdf_builtin_1_p'
| Integrate: iterations = 4:500:"gw", 2:500
| Integrator: 2 chains, 2 channels, 2 dimensions
| Integrator: Using VAMP channel equivalences
| Integrator: 500 initial calls, 20 bins, stratified = T
| Integrator: VAMP
|=============================================================================|
| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
|=============================================================================|
1 400 1.8321997E+01 2.98E-01 1.63 0.33* 35.80
2 400 1.8828751E+01 1.70E-01 0.90 0.18* 40.76
3 400 1.8682775E+01 1.30E-01 0.70 0.14* 53.32
4 400 1.8636496E+01 1.06E-01 0.57 0.11* 40.51
|-----------------------------------------------------------------------------|
4 1600 1.8666882E+01 7.19E-02 0.39 0.15 40.51 0.78 4
|-----------------------------------------------------------------------------|
5 400 1.8881752E+01 1.31E-01 0.69 0.14 40.70
6 400 1.8558177E+01 1.27E-01 0.68 0.14* 39.83
|-----------------------------------------------------------------------------|
6 800 1.8715083E+01 9.12E-02 0.49 0.14 39.83 3.14 2
|=============================================================================|
$pdf_builtin_set = "cteq6l"
| RNG: Initializing TAO random-number generator
| RNG: Setting seed for random-number generator to 1
| Initializing integration for process pdf_builtin_1_p:
| ------------------------------------------------------------------------
| Process [scattering]: 'pdf_builtin_1_p'
| Library name = 'pdf_builtin_1_lib'
| Process index = 1
| Process components:
| 1: 'pdf_builtin_1_p_i1': u:d:s, ubar:dbar:sbar => mu-, mu+ [omega]
| ------------------------------------------------------------------------
| Beam structure: p, p => pdf_builtin
| Beam data (collision):
| p (mass = 0.0000000E+00 GeV)
| p (mass = 0.0000000E+00 GeV)
| sqrts = 1.000000000000E+03 GeV
| Initialized builtin PDF CTEQ6L
| Phase space: generating configuration ...
| Phase space: ... success.
| Phase space: writing configuration file 'pdf_builtin_1_p_i1.phs'
| Phase space: 2 channels, 2 dimensions
| Phase space: found 2 channels, collected in 2 groves.
| Phase space: Using 2 equivalences between channels.
| Phase space: wood
| Beam structure: pdf_builtin, none => none, pdf_builtin
| Beam structure: 1 channels, 2 dimensions
| Applying user-defined cuts.
| Starting integration for process 'pdf_builtin_1_p'
| Integrate: iterations = 4:500:"gw", 2:500
| Integrator: 2 chains, 2 channels, 4 dimensions
| Integrator: Using VAMP channel equivalences
| Integrator: 500 initial calls, 20 bins, stratified = T
| Integrator: VAMP
|=============================================================================|
| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
|=============================================================================|
1 500 1.0289901E+00 2.67E-01 25.95 5.80* 1.50
2 499 1.5389851E+00 1.45E-01 9.41 2.10* 7.00
3 498 1.6947237E+00 8.32E-02 4.91 1.10* 14.36
4 497 1.8264951E+00 9.45E-02 5.17 1.15 11.07
|-----------------------------------------------------------------------------|
4 1994 1.6884026E+00 5.61E-02 3.32 1.48 11.07 3.10 4
|-----------------------------------------------------------------------------|
5 497 1.7911732E+00 9.61E-02 5.36 1.20 7.49
6 497 1.6593299E+00 7.87E-02 4.74 1.06* 6.94
|-----------------------------------------------------------------------------|
6 994 1.7122737E+00 6.09E-02 3.56 1.12 6.94 1.13 2
|=============================================================================|
$pdf_builtin_set = "mstw2008lo"
| RNG: Initializing TAO random-number generator
| RNG: Setting seed for random-number generator to 2
| Initializing integration for process pdf_builtin_1_p:
| ------------------------------------------------------------------------
| Process [scattering]: 'pdf_builtin_1_p'
| Library name = 'pdf_builtin_1_lib'
| Process index = 1
| Process components:
| 1: 'pdf_builtin_1_p_i1': u:d:s, ubar:dbar:sbar => mu-, mu+ [omega]
| ------------------------------------------------------------------------
| Beam structure: p, p => pdf_builtin
| Beam data (collision):
| p (mass = 0.0000000E+00 GeV)
| p (mass = 0.0000000E+00 GeV)
| sqrts = 1.000000000000E+03 GeV
| Initialized builtin PDF MSTW2008LO
| Phase space: generating configuration ...
| Phase space: ... success.
| Phase space: writing configuration file 'pdf_builtin_1_p_i1.phs'
| Phase space: 2 channels, 2 dimensions
| Phase space: found 2 channels, collected in 2 groves.
| Phase space: Using 2 equivalences between channels.
| Phase space: wood
| Beam structure: pdf_builtin, none => none, pdf_builtin
| Beam structure: 1 channels, 2 dimensions
| Applying user-defined cuts.
| Starting integration for process 'pdf_builtin_1_p'
| Integrate: iterations = 4:500:"gw", 2:500
| Integrator: 2 chains, 2 channels, 4 dimensions
| Integrator: Using VAMP channel equivalences
| Integrator: 500 initial calls, 20 bins, stratified = T
| Integrator: VAMP
|=============================================================================|
| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
|=============================================================================|
1 500 1.1880877E+00 5.55E-01 46.70 10.44* 0.75
2 499 1.7294095E+00 1.56E-01 9.03 2.02* 5.67
3 498 1.7268042E+00 9.93E-02 5.75 1.28* 10.16
4 497 1.7156684E+00 8.15E-02 4.75 1.06* 16.39
|-----------------------------------------------------------------------------|
4 1994 1.7155968E+00 5.81E-02 3.39 1.51 16.39 0.31 4
|-----------------------------------------------------------------------------|
5 497 1.8369997E+00 9.31E-02 5.07 1.13 11.18
6 497 1.7518523E+00 9.22E-02 5.26 1.17 10.67
|-----------------------------------------------------------------------------|
6 994 1.7939895E+00 6.55E-02 3.65 1.15 10.67 0.42 2
|=============================================================================|
$pdf_builtin_set = "mstw2008nlo"
| RNG: Initializing TAO random-number generator
| RNG: Setting seed for random-number generator to 3
| Initializing integration for process pdf_builtin_1_p:
| ------------------------------------------------------------------------
| Process [scattering]: 'pdf_builtin_1_p'
| Library name = 'pdf_builtin_1_lib'
| Process index = 1
| Process components:
| 1: 'pdf_builtin_1_p_i1': u:d:s, ubar:dbar:sbar => mu-, mu+ [omega]
| ------------------------------------------------------------------------
| Beam structure: p, p => pdf_builtin
| Beam data (collision):
| p (mass = 0.0000000E+00 GeV)
| p (mass = 0.0000000E+00 GeV)
| sqrts = 1.000000000000E+03 GeV
| Initialized builtin PDF MSTW2008NLO
| Phase space: generating configuration ...
| Phase space: ... success.
| Phase space: writing configuration file 'pdf_builtin_1_p_i1.phs'
| Phase space: 2 channels, 2 dimensions
| Phase space: found 2 channels, collected in 2 groves.
| Phase space: Using 2 equivalences between channels.
| Phase space: wood
| Beam structure: pdf_builtin, none => none, pdf_builtin
| Beam structure: 1 channels, 2 dimensions
| Applying user-defined cuts.
| Starting integration for process 'pdf_builtin_1_p'
| Integrate: iterations = 4:500:"gw", 2:500
| Integrator: 2 chains, 2 channels, 4 dimensions
| Integrator: Using VAMP channel equivalences
| Integrator: 500 initial calls, 20 bins, stratified = T
| Integrator: VAMP
|=============================================================================|
| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
|=============================================================================|
1 500 1.4521330E+00 3.77E-01 25.96 5.81* 1.79
2 499 1.6921136E+00 1.63E-01 9.66 2.16* 5.64
3 498 1.6653622E+00 9.62E-02 5.78 1.29* 7.33
4 497 1.6425744E+00 1.07E-01 6.53 1.46 8.71
|-----------------------------------------------------------------------------|
4 1994 1.6550091E+00 6.46E-02 3.91 1.74 8.71 0.12 4
|-----------------------------------------------------------------------------|
5 497 1.5526409E+00 7.47E-02 4.81 1.07* 8.24
6 497 1.5904078E+00 7.61E-02 4.78 1.07* 8.44
|-----------------------------------------------------------------------------|
6 994 1.5711731E+00 5.33E-02 3.39 1.07 8.44 0.13 2
|=============================================================================|
$pdf_builtin_set = "mstw2008nnlo"
| RNG: Initializing TAO random-number generator
| RNG: Setting seed for random-number generator to 4
| Initializing integration for process pdf_builtin_1_p:
| ------------------------------------------------------------------------
| Process [scattering]: 'pdf_builtin_1_p'
| Library name = 'pdf_builtin_1_lib'
| Process index = 1
| Process components:
| 1: 'pdf_builtin_1_p_i1': u:d:s, ubar:dbar:sbar => mu-, mu+ [omega]
| ------------------------------------------------------------------------
| Beam structure: p, p => pdf_builtin
| Beam data (collision):
| p (mass = 0.0000000E+00 GeV)
| p (mass = 0.0000000E+00 GeV)
| sqrts = 1.000000000000E+03 GeV
| Initialized builtin PDF MSTW2008NNLO
| Phase space: generating configuration ...
| Phase space: ... success.
| Phase space: writing configuration file 'pdf_builtin_1_p_i1.phs'
| Phase space: 2 channels, 2 dimensions
| Phase space: found 2 channels, collected in 2 groves.
| Phase space: Using 2 equivalences between channels.
| Phase space: wood
| Beam structure: pdf_builtin, none => none, pdf_builtin
| Beam structure: 1 channels, 2 dimensions
| Applying user-defined cuts.
| Starting integration for process 'pdf_builtin_1_p'
| Integrate: iterations = 4:500:"gw", 2:500
| Integrator: 2 chains, 2 channels, 4 dimensions
| Integrator: Using VAMP channel equivalences
| Integrator: 500 initial calls, 20 bins, stratified = T
| Integrator: VAMP
|=============================================================================|
| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
|=============================================================================|
1 500 2.2132140E+00 8.52E-01 38.50 8.61* 1.07
2 499 1.8511677E+00 1.49E-01 8.07 1.80* 7.67
3 498 1.5390988E+00 8.55E-02 5.56 1.24* 13.79
4 497 1.6992156E+00 1.48E-01 8.70 1.94 5.13
|-----------------------------------------------------------------------------|
4 1994 1.6363962E+00 6.61E-02 4.04 1.80 5.13 1.33 4
|-----------------------------------------------------------------------------|
5 497 1.6264232E+00 8.16E-02 5.01 1.12* 4.91
6 497 1.7014429E+00 1.20E-01 7.06 1.57 3.55
|-----------------------------------------------------------------------------|
6 994 1.6501017E+00 6.75E-02 4.09 1.29 3.55 0.27 2
|=============================================================================|
$pdf_builtin_set = "ct10"
| RNG: Initializing TAO random-number generator
| RNG: Setting seed for random-number generator to 5
| Initializing integration for process pdf_builtin_1_p:
| ------------------------------------------------------------------------
| Process [scattering]: 'pdf_builtin_1_p'
| Library name = 'pdf_builtin_1_lib'
| Process index = 1
| Process components:
| 1: 'pdf_builtin_1_p_i1': u:d:s, ubar:dbar:sbar => mu-, mu+ [omega]
| ------------------------------------------------------------------------
| Beam structure: p, p => pdf_builtin
| Beam data (collision):
| p (mass = 0.0000000E+00 GeV)
| p (mass = 0.0000000E+00 GeV)
| sqrts = 1.000000000000E+03 GeV
| Initialized builtin PDF CT10
| Phase space: generating configuration ...
| Phase space: ... success.
| Phase space: writing configuration file 'pdf_builtin_1_p_i1.phs'
| Phase space: 2 channels, 2 dimensions
| Phase space: found 2 channels, collected in 2 groves.
| Phase space: Using 2 equivalences between channels.
| Phase space: wood
| Beam structure: pdf_builtin, none => none, pdf_builtin
| Beam structure: 1 channels, 2 dimensions
| Applying user-defined cuts.
| Starting integration for process 'pdf_builtin_1_p'
| Integrate: iterations = 4:500:"gw", 2:500
| Integrator: 2 chains, 2 channels, 4 dimensions
| Integrator: Using VAMP channel equivalences
| Integrator: 500 initial calls, 20 bins, stratified = T
| Integrator: VAMP
|=============================================================================|
| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
|=============================================================================|
1 500 1.3862192E+00 3.57E-01 25.78 5.76* 2.38
2 499 1.3203714E+00 1.15E-01 8.72 1.95* 8.18
3 498 1.4726542E+00 7.75E-02 5.26 1.17* 13.45
4 497 1.4785343E+00 8.04E-02 5.44 1.21 10.57
|-----------------------------------------------------------------------------|
4 1994 1.4448402E+00 4.97E-02 3.44 1.54 10.57 0.50 4
|-----------------------------------------------------------------------------|
5 497 1.5258851E+00 8.23E-02 5.39 1.20* 9.58
6 497 1.5517191E+00 8.03E-02 5.17 1.15* 8.72
|-----------------------------------------------------------------------------|
6 994 1.5391235E+00 5.75E-02 3.73 1.18 8.72 0.05 2
|=============================================================================|
+$pdf_builtin_set = "CJ12_max"
| RNG: Initializing TAO random-number generator
| RNG: Setting seed for random-number generator to 6
+| Initializing integration for process pdf_builtin_1_p:
+| ------------------------------------------------------------------------
+| Process [scattering]: 'pdf_builtin_1_p'
+| Library name = 'pdf_builtin_1_lib'
+| Process index = 1
+| Process components:
+| 1: 'pdf_builtin_1_p_i1': u:d:s, ubar:dbar:sbar => mu-, mu+ [omega]
+| ------------------------------------------------------------------------
+| Beam structure: p, p => pdf_builtin
+| Beam data (collision):
+| p (mass = 0.0000000E+00 GeV)
+| p (mass = 0.0000000E+00 GeV)
+| sqrts = 1.000000000000E+03 GeV
+| Initialized builtin PDF CJ12_max
+| Phase space: generating configuration ...
+| Phase space: ... success.
+| Phase space: writing configuration file 'pdf_builtin_1_p_i1.phs'
+| Phase space: 2 channels, 2 dimensions
+| Phase space: found 2 channels, collected in 2 groves.
+| Phase space: Using 2 equivalences between channels.
+| Phase space: wood
+| Beam structure: pdf_builtin, none => none, pdf_builtin
+| Beam structure: 1 channels, 2 dimensions
+| Applying user-defined cuts.
+| Starting integration for process 'pdf_builtin_1_p'
+| Integrate: iterations = 4:500:"gw", 2:500
+| Integrator: 2 chains, 2 channels, 4 dimensions
+| Integrator: Using VAMP channel equivalences
+| Integrator: 500 initial calls, 20 bins, stratified = T
+| Integrator: VAMP
+|=============================================================================|
+| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
+|=============================================================================|
+ 1 500 1.2718554E+00 3.39E-01 26.68 5.97* 1.36
+ 2 499 9.4516438E-01 8.84E-02 9.35 2.09* 5.81
+ 3 498 1.1890105E+00 6.73E-02 5.66 1.26* 15.09
+ 4 497 1.2755777E+00 6.19E-02 4.86 1.08* 14.48
+|-----------------------------------------------------------------------------|
+ 4 1994 1.1762030E+00 4.02E-02 3.42 1.53 14.48 3.17 4
+|-----------------------------------------------------------------------------|
+ 5 497 1.2817716E+00 5.97E-02 4.65 1.04* 14.20
+ 6 497 1.2209063E+00 6.01E-02 4.92 1.10 12.63
+|-----------------------------------------------------------------------------|
+ 6 994 1.2515528E+00 4.23E-02 3.38 1.07 12.63 0.52 2
+|=============================================================================|
+$pdf_builtin_set = "CJ12_mid"
+| RNG: Initializing TAO random-number generator
+| RNG: Setting seed for random-number generator to 7
+| Initializing integration for process pdf_builtin_1_p:
+| ------------------------------------------------------------------------
+| Process [scattering]: 'pdf_builtin_1_p'
+| Library name = 'pdf_builtin_1_lib'
+| Process index = 1
+| Process components:
+| 1: 'pdf_builtin_1_p_i1': u:d:s, ubar:dbar:sbar => mu-, mu+ [omega]
+| ------------------------------------------------------------------------
+| Beam structure: p, p => pdf_builtin
+| Beam data (collision):
+| p (mass = 0.0000000E+00 GeV)
+| p (mass = 0.0000000E+00 GeV)
+| sqrts = 1.000000000000E+03 GeV
+| Initialized builtin PDF CJ12_mid
+| Phase space: generating configuration ...
+| Phase space: ... success.
+| Phase space: writing configuration file 'pdf_builtin_1_p_i1.phs'
+| Phase space: 2 channels, 2 dimensions
+| Phase space: found 2 channels, collected in 2 groves.
+| Phase space: Using 2 equivalences between channels.
+| Phase space: wood
+| Beam structure: pdf_builtin, none => none, pdf_builtin
+| Beam structure: 1 channels, 2 dimensions
+| Applying user-defined cuts.
+| Starting integration for process 'pdf_builtin_1_p'
+| Integrate: iterations = 4:500:"gw", 2:500
+| Integrator: 2 chains, 2 channels, 4 dimensions
+| Integrator: Using VAMP channel equivalences
+| Integrator: 500 initial calls, 20 bins, stratified = T
+| Integrator: VAMP
+|=============================================================================|
+| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
+|=============================================================================|
+ 1 500 1.4788065E+00 5.50E-01 37.19 8.32* 1.07
+ 2 499 1.2735090E+00 1.38E-01 10.83 2.42* 4.06
+ 3 498 1.1920139E+00 6.35E-02 5.33 1.19* 14.36
+ 4 497 1.1803539E+00 5.26E-02 4.46 0.99* 17.85
+|-----------------------------------------------------------------------------|
+ 4 1994 1.1935506E+00 3.88E-02 3.25 1.45 17.85 0.22 4
+|-----------------------------------------------------------------------------|
+ 5 497 1.0590799E+00 5.91E-02 5.58 1.24 9.23
+ 6 497 1.2928696E+00 1.07E-01 8.27 1.84 4.12
+|-----------------------------------------------------------------------------|
+ 6 994 1.1138863E+00 5.17E-02 4.65 1.46 4.12 3.66 2
+|=============================================================================|
+$pdf_builtin_set = "CJ12_min"
+| RNG: Initializing TAO random-number generator
+| RNG: Setting seed for random-number generator to 8
+| Initializing integration for process pdf_builtin_1_p:
+| ------------------------------------------------------------------------
+| Process [scattering]: 'pdf_builtin_1_p'
+| Library name = 'pdf_builtin_1_lib'
+| Process index = 1
+| Process components:
+| 1: 'pdf_builtin_1_p_i1': u:d:s, ubar:dbar:sbar => mu-, mu+ [omega]
+| ------------------------------------------------------------------------
+| Beam structure: p, p => pdf_builtin
+| Beam data (collision):
+| p (mass = 0.0000000E+00 GeV)
+| p (mass = 0.0000000E+00 GeV)
+| sqrts = 1.000000000000E+03 GeV
+| Initialized builtin PDF CJ12_min
+| Phase space: generating configuration ...
+| Phase space: ... success.
+| Phase space: writing configuration file 'pdf_builtin_1_p_i1.phs'
+| Phase space: 2 channels, 2 dimensions
+| Phase space: found 2 channels, collected in 2 groves.
+| Phase space: Using 2 equivalences between channels.
+| Phase space: wood
+| Beam structure: pdf_builtin, none => none, pdf_builtin
+| Beam structure: 1 channels, 2 dimensions
+| Applying user-defined cuts.
+| Starting integration for process 'pdf_builtin_1_p'
+| Integrate: iterations = 4:500:"gw", 2:500
+| Integrator: 2 chains, 2 channels, 4 dimensions
+| Integrator: Using VAMP channel equivalences
+| Integrator: 500 initial calls, 20 bins, stratified = T
+| Integrator: VAMP
+|=============================================================================|
+| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
+|=============================================================================|
+ 1 500 9.0561608E-01 2.51E-01 27.68 6.19* 1.43
+ 2 499 1.2607338E+00 1.25E-01 9.90 2.21* 5.67
+ 3 498 1.1710580E+00 6.02E-02 5.14 1.15* 14.78
+ 4 497 1.1381306E+00 5.39E-02 4.74 1.06* 12.59
+|-----------------------------------------------------------------------------|
+ 4 1994 1.1570742E+00 3.78E-02 3.27 1.46 12.59 0.62 4
+|-----------------------------------------------------------------------------|
+ 5 497 1.2424073E+00 6.24E-02 5.02 1.12 11.97
+ 6 497 1.1813185E+00 5.64E-02 4.78 1.06* 10.83
+|-----------------------------------------------------------------------------|
+ 6 994 1.2087820E+00 4.19E-02 3.46 1.09 10.83 0.53 2
+|=============================================================================|
+| RNG: Initializing TAO random-number generator
+| RNG: Setting seed for random-number generator to 9
| Initializing integration for process pdf_builtin_2_p:
| ------------------------------------------------------------------------
| Process [scattering]: 'pdf_builtin_2_p'
| Library name = 'pdf_builtin_1_lib'
| Process index = 2
| Process components:
| 1: 'pdf_builtin_2_p_i1': A, A => e-, e+ [omega]
| ------------------------------------------------------------------------
| Beam structure: A, A
| Beam data (collision):
| A (mass = 0.0000000E+00 GeV)
| A (mass = 0.0000000E+00 GeV)
| sqrts = 1.000000000000E+03 GeV
| Phase space: generating configuration ...
| Phase space: ... success.
| Phase space: writing configuration file 'pdf_builtin_2_p_i1.phs'
| Phase space: 4 channels, 2 dimensions
| Phase space: found 4 channels, collected in 1 grove.
| Phase space: Using 8 equivalences between channels.
| Phase space: wood
| Applying user-defined cuts.
| Starting integration for process 'pdf_builtin_2_p'
| Integrate: iterations = 4:500:"gw", 2:500
| Integrator: 1 chains, 4 channels, 2 dimensions
| Integrator: Using VAMP channel equivalences
| Integrator: 500 initial calls, 20 bins, stratified = T
| Integrator: VAMP
|=============================================================================|
| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
|=============================================================================|
- 1 500 9.4963594E+02 5.16E+01 5.43 1.21* 37.26
- 2 500 1.0083599E+03 2.17E+01 2.15 0.48* 56.50
- 3 500 9.9893714E+02 1.74E+01 1.75 0.39* 64.34
- 4 500 9.6584118E+02 1.83E+01 1.89 0.42 51.08
+ 1 500 1.0371009E+03 5.30E+01 5.11 1.14* 40.63
+ 2 500 1.0456202E+03 2.12E+01 2.03 0.45* 60.49
+ 3 500 1.0155966E+03 1.75E+01 1.72 0.39* 64.12
+ 4 500 1.0059769E+03 1.91E+01 1.90 0.43 40.10
|-----------------------------------------------------------------------------|
- 4 2000 9.8782302E+02 1.07E+01 1.08 0.48 51.08 1.10 4
+ 4 2000 1.0212371E+03 1.08E+01 1.06 0.47 40.10 0.72 4
|-----------------------------------------------------------------------------|
- 5 500 1.0292175E+03 1.63E+01 1.59 0.35* 54.40
- 6 500 1.0015150E+03 1.74E+01 1.74 0.39 52.91
+ 5 500 9.9383552E+02 1.80E+01 1.81 0.40* 39.61
+ 6 500 1.0009031E+03 2.09E+01 2.09 0.47 39.87
|-----------------------------------------------------------------------------|
- 6 1000 1.0162799E+03 1.19E+01 1.17 0.37 52.91 1.35 2
+ 6 1000 9.9683579E+02 1.36E+01 1.37 0.43 39.87 0.07 2
|=============================================================================|
$pdf_builtin_set = "mrst2004qedp"
| RNG: Initializing TAO random-number generator
-| RNG: Setting seed for random-number generator to 7
+| RNG: Setting seed for random-number generator to 10
| Initializing integration for process pdf_builtin_2_p:
| ------------------------------------------------------------------------
| Process [scattering]: 'pdf_builtin_2_p'
| Library name = 'pdf_builtin_1_lib'
| Process index = 2
| Process components:
| 1: 'pdf_builtin_2_p_i1': A, A => e-, e+ [omega]
| ------------------------------------------------------------------------
| Beam structure: p, p => pdf_builtin
| Beam data (collision):
| p (mass = 0.0000000E+00 GeV)
| p (mass = 0.0000000E+00 GeV)
| sqrts = 1.000000000000E+03 GeV
| Initialized builtin PDF MRST2004QEDp
| Phase space: generating configuration ...
| Phase space: ... success.
| Phase space: writing configuration file 'pdf_builtin_2_p_i1.phs'
| Phase space: 4 channels, 2 dimensions
| Phase space: found 4 channels, collected in 1 grove.
| Phase space: Using 8 equivalences between channels.
| Phase space: wood
| Beam structure: pdf_builtin, none => none, pdf_builtin
| Beam structure: 1 channels, 2 dimensions
| Applying user-defined cuts.
| Starting integration for process 'pdf_builtin_2_p'
| Integrate: iterations = 4:500:"gw", 2:500
| Integrator: 1 chains, 4 channels, 4 dimensions
| Integrator: Using VAMP channel equivalences
| Integrator: 500 initial calls, 20 bins, stratified = T
| Integrator: VAMP
|=============================================================================|
| It Calls Integral[fb] Error[fb] Err[%] Acc Eff[%] Chi2 N[It] |
|=============================================================================|
- 1 500 7.3619633E-02 3.44E-02 46.68 10.44* 1.00
- 2 500 9.2741916E-02 1.15E-02 12.44 2.78* 4.65
- 3 500 1.5306946E-01 1.35E-02 8.80 1.97* 8.30
- 4 500 1.3542554E-01 7.38E-03 5.45 1.22* 14.94
+ 1 500 2.5151015E-01 1.05E-01 41.56 9.29* 1.10
+ 2 500 1.3019355E-01 1.33E-02 10.20 2.28* 6.31
+ 3 500 1.4584333E-01 1.30E-02 8.94 2.00* 6.30
+ 4 500 1.4904614E-01 9.95E-03 6.67 1.49* 11.22
|-----------------------------------------------------------------------------|
- 4 2000 1.2686716E-01 5.57E-03 4.39 1.96 14.94 5.42 4
+ 4 2000 1.4369827E-01 6.78E-03 4.72 2.11 11.22 0.80 4
|-----------------------------------------------------------------------------|
- 5 500 1.2749759E-01 7.70E-03 6.04 1.35 9.94
- 6 500 1.3511872E-01 8.79E-03 6.51 1.45 7.88
+ 5 500 1.5107240E-01 1.12E-02 7.41 1.66 8.55
+ 6 500 1.3786013E-01 9.41E-03 6.82 1.53* 7.78
|-----------------------------------------------------------------------------|
- 6 1000 1.3080485E-01 5.79E-03 4.43 1.40 7.88 0.43 2
+ 6 1000 1.4332518E-01 7.20E-03 5.03 1.59 7.78 0.82 2
|=============================================================================|
| WHIZARD run finished.
|=============================================================================|
Index: trunk/src/pdf_builtin/pdf_builtin.f90
===================================================================
--- trunk/src/pdf_builtin/pdf_builtin.f90 (revision 5839)
+++ trunk/src/pdf_builtin/pdf_builtin.f90 (revision 5840)
@@ -1,828 +1,868 @@
!$Id$
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! Copyright (C) 1999-2014 by
! Wolfgang Kilian <kilian@physik.uni-siegen.de>
! Thorsten Ohl <ohl@physik.uni-wuerzburg.de>
! Juergen Reuter <juergen.reuter@desy.de>
! Christian Speckner <cnspeckn@googlemail.com>
!
! WHIZARD is free software; you can redistribute it and/or modify it
! under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 2, or (at your option)
! any later version.
!
! WHIZARD is distributed in the hope that it will be useful, but
! WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program; if not, write to the Free Software
! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Wrap a common interface around the different PDF sets.
module pdf_builtin
use kinds, only: default, double
use constants, only: PI
use diagnostics
use iso_varying_string, string_t => varying_string
use file_utils
use mrst2004qed
use cteq6pdf
use mstw2008
use ct10pdf
use CJ12
implicit none
save
private
! The available sets
- integer, parameter :: nsets = 10
+ integer, parameter :: nsets = 13
integer, parameter, public :: &
CTEQ6M = 1, CTEQ6D = 2, CTEQ6L = 3, CTEQ6L1 = 4, &
MRST2004QEDp = 5, MRST2004QEDn = 6, MSTW2008LO = 7, MSTW2008NLO = 8, &
MSTW2008NNLO = 9, CT10 = 10, CJ12_max = 11, CJ12_mid = 12, &
CJ12_min = 13
! Limits
real(kind=default), parameter :: &
cteq6_q_min = 1.3, cteq6_q_max = 10.E3, &
cteq6_x_min = 1.E-6, cteq6_x_max = 1., &
mrst2004qed_q_min = sqrt (1.26_default), mrst2004qed_q_max = sqrt (0.99E7_default), &
mrst2004qed_x_min = 1.01E-5, mrst2004qed_x_max = 1., &
mstw2008_q_min = 1.01, mstw2008_q_max = sqrt (0.99E9_default), &
mstw2008_x_min = 1.01E-6, mstw2008_x_max = 1., &
ct10_q_min = 1.3, ct10_q_max = 1.E5, &
ct10_x_min = 1.E-8, ct10_x_max = 1., &
cj12_q_min = 1.69, cj12_q_max = 3.E5, &
cj12_x_min = 2.E-5, cj12_x_max = 0.9
! Lambda_QCD and quark masses
real(kind=double), dimension(6), parameter, public :: alam_ct10 = &
- (/ 0.37219423568859566_double, 0.37219423568859566_double, &
+ [ 0.37219423568859566_double, 0.37219423568859566_double, &
0.37219423568859566_double, 0.37219423568859566_double, &
- 0.32560730624033124_double, 0.22600000000000001_double /)
+ 0.32560730624033124_double, 0.22600000000000001_double ]
real(kind=double), dimension(6), parameter, public :: alam_cteq6m = &
- (/ 0.37248648555333957_double, 0.37248648555333957_double, &
+ [ 0.37248648555333957_double, 0.37248648555333957_double, &
0.37248648555333957_double, 0.37248648555333957_double, &
- 0.32590307925177625_double, 0.22623045868581182_double /)
+ 0.32590307925177625_double, 0.22623045868581182_double ]
real(kind=double), dimension(6), parameter, public :: alam_cteq6l = &
- (/ 0.37218603304249098_double, 0.37218603304249098_double, &
+ [ 0.37218603304249098_double, 0.37218603304249098_double, &
0.37218603304249098_double, 0.37218603304249098_double, &
- 0.32559900534407232_double, 0.22599353258372407_double /)
+ 0.32559900534407232_double, 0.22599353258372407_double ]
real(kind=double), dimension(6), parameter, public :: alam_cteq6ll = &
- (/ 0.24560434095679567_double, 0.24560434095679567_double, &
+ [ 0.24560434095679567_double, 0.24560434095679567_double, &
0.24560434095679567_double, 0.24560434095679567_double, &
- 0.21495099184302788_double, 0.16499885346541945_double /)
+ 0.21495099184302788_double, 0.16499885346541945_double ]
real(kind=double), dimension(0:5), parameter :: amhat = &
- (/ 0.0000000000000000_double, 0.0000000000000000_double, &
+ [ 0.0000000000000000_double, 0.0000000000000000_double, &
0.0000000000000000_double, 0.0000000000000000_double, &
- 1.3000000000000000_double, 4.500000000000000_double /)
+ 1.3000000000000000_double, 4.500000000000000_double ]
!!! Global parameter for minimal value of evolution
real(kind=double), parameter, private :: amn = 0.375_double, &
tol = .0005_double
integer, parameter, private :: nhq = 2
real(kind=double), parameter :: &
ca = 3.D0, cf = 4./3.D0, tr = 0.5D0
real(kind=double), parameter :: &
b00 = 11./3.d0 * ca, b01 = -4./3.d0 * tr, b10 = 34./3.d0 * ca**2, &
b11 = -20./3.d0 * ca*tr - 4.* cf*tr
! Init flags
integer :: cteq6_initialized = -1
integer :: mstw2008_initialized = -1
logical :: ct10_initialized = .false.
- logical :: cj12_initialized = .false.
+ integer :: cj12_initialized = -1
logical :: &
mrst2004qedp_initialized = .false., &
mrst2004qedn_initialized = .false.
type(string_t) :: mrst2004qedp_prefix, mrst2004qedn_prefix, &
mstw2008_prefix
! 1 is for proton, 2 for pion, 3 for photon
type :: pdf_builtin_status_t
private
logical, dimension(3) :: initialized = .false.
end type pdf_builtin_status_t
! Public stuff
public :: pdf_init
public :: pdf_get_name
public :: pdf_evolve
public :: pdf_evolve_LHAPDF
public :: pdf_provides_photon
public :: pdf_get_id
public :: pdf_alphas
public :: pdf_builtin_status_reset
public :: pdf_builtin_status_is_initialized
public :: pdf_builtin_status_set_initialized
public :: pdf_builtin_status_t
contains
! Get PDF name
function pdf_get_name (pdftype) result (name)
integer, intent(in) :: pdftype
type(string_t) :: name
select case (pdftype)
case (CTEQ6M)
name = var_str ("CTEQ6M")
case (CTEQ6D)
name = var_str ("CTEQ6D")
case (CTEQ6L)
name = var_str ("CTEQ6L")
case (CTEQ6L1)
name = var_str ("CTEQ6L1")
case (MRST2004QEDp)
name = var_str ("MRST2004QEDp")
case (MRST2004QEDn)
name = var_str ("MRST2004QEDn")
case (MSTW2008LO)
name = var_str ("MSTW2008LO")
case (MSTW2008NLO)
name = var_str ("MSTW2008NLO")
case (MSTW2008NNLO)
name = var_str ("MSTW2008NNLO")
case (CT10)
name = var_str ("CT10")
case (CJ12_max)
name = var_str ("CJ12_max")
case (CJ12_mid)
name = var_str ("CJ12_mid")
case (CJ12_min)
name = var_str ("CJ12_min")
case default
call msg_fatal ("pdf_builtin: internal: invalid PDF set!")
end select
end function pdf_get_name
! Get the ID of a PDF set
function pdf_get_id (name) result (id)
type(string_t), intent(in) :: name
integer :: id
do id = 1, nsets
if (upper_case (pdf_get_name (id)) == upper_case (name)) return
end do
id = -1
end function pdf_get_id
! Query whether a PDF supplies a photon distribution
function pdf_provides_photon (pdftype) result (flag)
integer, intent(in) :: pdftype
logical :: flag
select case (pdftype)
case (CTEQ6M, CTEQ6D, CTEQ6L, CTEQ6L1)
flag = .false.
case (MRST2004QEDp, MRST2004QEDn)
flag = .true.
case (MSTW2008LO, MSTW2008NLO, MSTW2008NNLO)
flag = .false.
case (CT10)
flag = .false.
case (CJ12_max, CJ12_mid, CJ12_min)
flag = .false.
case default
call msg_fatal ("pdf_builtin: internal: invalid PDF set!")
end select
end function pdf_provides_photon
! Initialize a PDF
subroutine pdf_init (pdf_status, pdftype, prefix, verbose)
integer, intent(in) :: pdftype
type(pdf_builtin_status_t), intent(inout) :: pdf_status
type(string_t), intent(in), optional :: prefix
type(string_t) :: mprefix
logical, intent(in), optional :: verbose
logical :: mverbose
if (any (pdf_status%initialized)) return
if (present (prefix)) then
mprefix = prefix
else
mprefix = ""
end if
if (present (verbose)) then
mverbose = verbose
else
mverbose = .true.
end if
select case (pdftype)
case (CTEQ6M, CTEQ6D, CTEQ6L, CTEQ6L1)
if (cteq6_initialized == pdftype) return
call setctq6 (pdftype, char (mprefix))
cteq6_initialized = pdftype
case (MRST2004QEDp)
if (mrst2004qedp_initialized) return
mrst2004qedp_initialized = .true.
mrst2004qedp_prefix = mprefix
case (MRST2004QEDn)
if (mrst2004qedn_initialized) return
mrst2004qedn_initialized = .true.
mrst2004qedn_prefix = mprefix
case (MSTW2008LO, MSTW2008NLO, MSTW2008NNLO)
if (mstw2008_initialized == pdftype) return
mstw2008_initialized = pdftype
mstw2008_prefix = mprefix
case (CT10)
if (ct10_initialized) return
call setct10 (char (mprefix), 100)
ct10_initialized = .true.
+ case (CJ12_max)
+ if (cj12_initialized == pdftype) return
+ call setCJ (char (mprefix), 300)
+ cj12_initialized = pdftype
+ case (CJ12_mid)
+ if (cj12_initialized == pdftype) return
+ call setCJ (char (mprefix), 200)
+ cj12_initialized = pdftype
+ case (CJ12_min)
+ if (cj12_initialized == pdftype) return
+ call setCJ (char (mprefix), 100)
+ cj12_initialized = pdftype
case default
call msg_fatal ("pdf_builtin: internal: invalid PDF set!")
end select
if (mverbose) call msg_message ("Initialized builtin PDF " // &
char (pdf_get_name (pdftype)))
!!! Up to now only proton
call pdf_builtin_status_set_initialized (pdf_status, 1)
end subroutine pdf_init
! Evolve PDF
subroutine pdf_evolve (pdftype, x, q, f, fphoton)
integer, intent(in) :: pdftype
real(kind=default), intent(in) :: x, q
real(kind=default), intent(out), optional :: f(-6:6), fphoton
real(kind=double) :: mx, mq
real(kind=double) :: upv, dnv, ups, dns, str, chm, bot, glu, phot, &
sbar, bbar, cbar
type(string_t) :: setname, prefix
select case (pdftype)
case (CTEQ6M, CTEQ6D, CTEQ6L, CTEQ6L1)
if (cteq6_initialized < 0) &
call msg_fatal ("pdf_builtin: internal: PDF set " // &
char (pdf_get_name (pdftype)) // " requested without initialization!")
if (cteq6_initialized /= pdftype) &
call msg_fatal ( &
"PDF sets " // char (pdf_get_name (pdftype)) // " and " // &
char (pdf_get_name (cteq6_initialized)) // &
" cannot be used simultaneously")
mx = max (min (x, cteq6_x_max), cteq6_x_min)
mq = max (min (q, cteq6_q_max), cteq6_q_min)
- if (present (f)) f = (/ 0._double, &
+ if (present (f)) f = [ 0._double, &
ctq6pdf (-5, mx, mq), ctq6pdf (-4, mx, mq), &
ctq6pdf (-3, mx, mq), ctq6pdf (-1, mx, mq), &
ctq6pdf (-2, mx, mq), ctq6pdf ( 0, mx, mq), &
ctq6pdf ( 2, mx, mq), ctq6pdf ( 1, mx, mq), &
ctq6pdf ( 3, mx, mq), ctq6pdf ( 4, mx, mq), &
- ctq6pdf ( 5, mx, mq), 0._double /)
+ ctq6pdf ( 5, mx, mq), 0._double ]
if (present (fphoton)) call msg_fatal ("photon pdf requested for " // &
char (pdf_get_name (pdftype)) // " which does not provide it!")
case (MRST2004QEDp)
if (.not. mrst2004qedp_initialized) call msg_fatal ( &
"pdf_builtin: internal: PDF set MRST2004QEDp requested without " // &
"initialization!")
mx = max (min (x, mrst2004qed_x_max), mrst2004qed_x_min)
mq = max (min (q, mrst2004qed_q_max), mrst2004qed_q_min)
call mrstqed (mx, mq, 1, upv, dnv, ups, dns, str, chm, bot, glu, phot, &
char (mrst2004qedp_prefix))
if (present (f)) f = &
- (/ 0._double, bot, chm, str, ups, dns, glu, dns + dnv, ups + upv, &
- str, chm, bot, 0._double /) / mx
+ [ 0._double, bot, chm, str, ups, dns, glu, dns + dnv, ups + upv, &
+ str, chm, bot, 0._double ] / mx
if (present (fphoton)) fphoton = phot / mx
case (MRST2004QEDn)
if (.not. mrst2004qedn_initialized) call msg_fatal ( &
"pdf_builtin: internal: PDF set MRST2004QEDn requested without " // &
"initialization!")
mx = max (min (x, mrst2004qed_x_max), mrst2004qed_x_min)
mq = max (min (q, mrst2004qed_q_max), mrst2004qed_q_min)
call mrstqed (mx, mq, 2, upv, dnv, ups, dns, str, chm, bot, glu, phot, &
char (mrst2004qedn_prefix))
if (present (f)) f = &
- (/ 0._double, bot, chm, str, ups, dns, glu, dns + dnv, ups + upv, &
- str, chm, bot, 0._double /) / mx
+ [ 0._double, bot, chm, str, ups, dns, glu, dns + dnv, ups + upv, &
+ str, chm, bot, 0._double ] / mx
if (present (fphoton)) fphoton = phot / mx
case (MSTW2008LO, MSTW2008NLO, MSTW2008NNLO)
if (mstw2008_initialized < 0) &
call msg_fatal ("pdf_builtin: internal: PDF set " // &
char (pdf_get_name (pdftype)) // " requested without initialization!")
if (mstw2008_initialized /= pdftype) &
call msg_fatal ( &
"PDF sets " // char (pdf_get_name (pdftype)) // " and " // &
char (pdf_get_name (mstw2008_initialized)) // &
" cannot be used simultaneously")
select case (pdftype)
case (MSTW2008LO)
setname = var_str ("mstw2008lo")
case (MSTW2008NLO)
setname = var_str ("mstw2008nlo")
case (MSTW2008NNLO)
setname = var_str ("mstw2008nnlo")
end select
mx = max (min (x, mstw2008_x_max), mstw2008_x_min)
mq = max (min (q, mstw2008_q_max), mstw2008_q_min)
call getmstw2008 (char (mstw2008_prefix), char (setname), 0, mx, mq, &
upv, dnv, ups, dns, str, sbar, chm, cbar, bot, bbar, glu, phot)
if (present (f)) f = &
- (/ 0._double, bbar, cbar, sbar, ups, dns, glu, dns + dnv, ups + upv, &
- str, chm, bot, 0._double /) / mx
+ [ 0._double, bbar, cbar, sbar, ups, dns, glu, dns + dnv, ups + upv, &
+ str, chm, bot, 0._double ] / mx
if (present (fphoton)) call msg_fatal ("photon pdf requested for " // &
char (pdf_get_name (pdftype)) // " which does not provide it!")
case (CT10)
if (.not. ct10_initialized) call msg_fatal ( &
"pdf_builtin: internal: PDF set CT10 requested without " // &
"initialization!")
mx = max (min (x, ct10_x_max), ct10_x_min)
mq = max (min (q, ct10_q_max), ct10_q_min)
- if (present (f)) f = (/ 0._double, &
+ if (present (f)) f = [ 0._double, &
getct10pdf (-5, mx, mq), getct10pdf (-4, mx, mq), &
getct10pdf (-3, mx, mq), getct10pdf (-1, mx, mq), &
getct10pdf (-2, mx, mq), getct10pdf ( 0, mx, mq), &
getct10pdf ( 2, mx, mq), getct10pdf ( 1, mx, mq), &
getct10pdf ( 3, mx, mq), getct10pdf ( 4, mx, mq), &
- getct10pdf ( 5, mx, mq), 0._double /)
+ getct10pdf ( 5, mx, mq), 0._double ]
if (present (fphoton)) call msg_fatal ("photon pdf requested for " // &
"CT10 which does not provide it!")
+ case (CJ12_max, CJ12_mid, CJ12_min)
+ if (cj12_initialized < 0) &
+ call msg_fatal ("pdf_builtin: internal: PDF set " // &
+ char (pdf_get_name (pdftype)) // " requested without initialization!")
+ if (cj12_initialized /= pdftype) &
+ call msg_fatal ( &
+ "PDF sets " // char (pdf_get_name (pdftype)) // " and " // &
+ char (pdf_get_name (cj12_initialized)) // &
+ " cannot be used simultaneously")
+ mx = max (min (x, cj12_x_max), cj12_x_min)
+ mq = max (min (q, cj12_q_max), cj12_q_min)
+ if (present (f)) f = [ 0._double, &
+ CJpdf (-5, mx, mq), CJpdf (-4, mx, mq), CJpdf (-3, mx, mq), &
+ CJpdf (-2, mx, mq), CJpdf (-1, mx, mq), CJpdf ( 0, mx, mq), &
+ CJpdf ( 1, mx, mq), CJpdf ( 2, mx, mq), CJpdf ( 3, mx, mq), &
+ CJpdf ( 4, mx, mq), CJpdf ( 5, mx, mq), 0._double ]
+ if (present (fphoton)) call msg_fatal ("photon pdf requested for " // &
+ "CJ12 which does not provide it!")
case default
call msg_fatal ("pdf_builtin: internal: invalid PDF set!")
end select
end subroutine pdf_evolve
! included for compatibility with LHAPDF
! use a double precision array for the pdfs instead of a
! default precision
subroutine pdf_evolve_LHAPDF (set, x, q, ff)
integer, intent(in) :: set
double precision, intent(in) :: x, q
real(kind=default) :: dx, dq
double precision, dimension(-6:6), intent(out) :: ff
real(kind=default) :: f(-6:6)
dx = x
dq = q
call pdf_evolve(set, dx, dq, f)
ff = f
end subroutine pdf_evolve_LHAPDF
! PDF-specific running alphas
function pdf_alphas (pdftype, q) result (alphas)
real(kind=double) :: as
real(kind=default), intent(in) :: q
real(kind=double) :: qdummy
real(kind=default) :: alphas
integer, intent(in) :: pdftype
integer, parameter :: nset_dummy = 1
qdummy = q
select case (pdftype)
case (CTEQ6M, CTEQ6D, CTEQ6L, CTEQ6L1)
if (cteq6_initialized < 0) &
call msg_fatal ("pdf_builtin: internal: PDF set " // &
char (pdf_get_name (pdftype)) // " requested without initialization!")
if (cteq6_initialized /= pdftype) &
call msg_fatal ( &
"PDF sets " // char (pdf_get_name (pdftype)) // " and " // &
char (pdf_get_name (cteq6_initialized)) // &
" cannot be used simultaneously")
select case (pdftype)
case (CTEQ6M, CTEQ6D)
as = PI*pdf_builtin_alpi (qdummy,2,5,alam_cteq6m)
case (CTEQ6L)
as = PI*pdf_builtin_alpi (qdummy,2,5,alam_cteq6l)
case (CTEQ6L1)
as = PI*pdf_builtin_alpi (qdummy,1,5,alam_cteq6ll)
case default
call msg_fatal ("Unrecognized PDF setup in evolution of alphas.")
end select
case (CT10)
if (.not. ct10_initialized) call msg_fatal ( &
"pdf_builtin: internal: PDF set CT10 requested without " // &
"initialization!")
as = PI*pdf_builtin_alpi (qdummy,2,5,alam_ct10)
case (MRST2004QEDp)
if (.not. mrst2004qedp_initialized) call msg_fatal ( &
"pdf_builtin: internal: PDF set MRST2004QEDp requested without " // &
"initialization!")
call mrst_alphas (as,qdummy)
case (MRST2004QEDn)
if (.not. mrst2004qedn_initialized) call msg_fatal ( &
"pdf_builtin: internal: PDF set MRST2004QEDn requested without " // &
"initialization!")
call mrst_alphas (as,qdummy)
case (MSTW2008LO, MSTW2008NLO, MSTW2008NNLO)
if (mstw2008_initialized < 0) &
call msg_fatal ("pdf_builtin: internal: PDF set " // &
char (pdf_get_name (pdftype)) // " requested without initialization!")
if (mstw2008_initialized /= pdftype) &
call msg_fatal ( &
"PDF sets " // char (pdf_get_name (pdftype)) // " and " // &
char (pdf_get_name (mstw2008_initialized)) // &
" cannot be used simultaneously")
select case (pdftype)
case (MSTW2008lo)
call pdf_builtin_alfa (as,qdummy,0)
case (MSTW2008nlo)
call pdf_builtin_alfa (as,qdummy,1)
case (MSTW2008nnlo)
call pdf_builtin_alfa (as,qdummy,2)
end select
+ case (CJ12_max, CJ12_mid, CJ12_min)
+ if (cj12_initialized < 0) &
+ call msg_fatal ("pdf_builtin: internal: PDF set " // &
+ char (pdf_get_name (pdftype)) // " requested without initialization!")
+ if (cj12_initialized /= pdftype) &
+ call msg_fatal ( &
+ "PDF sets " // char (pdf_get_name (pdftype)) // " and " // &
+ char (pdf_get_name (cteq6_initialized)) // &
+ " cannot be used simultaneously")
+ as = PI*pdf_builtin_alpi (qdummy,2,5,alam_cteq6m)
case default
call msg_fatal ("pdf_builtin: internal: invalid PDF set!")
end select
alphas = as
end function pdf_alphas
subroutine pdf_builtin_status_reset (pdf_builtin_status)
type(pdf_builtin_status_t), intent(inout) :: pdf_builtin_status
pdf_builtin_status%initialized = .false.
end subroutine pdf_builtin_status_reset
function pdf_builtin_status_is_initialized (pdf_builtin_status, set) result (flag)
logical :: flag
type(pdf_builtin_status_t), intent(in) :: pdf_builtin_status
integer, intent(in), optional :: set
if (present (set)) then
select case (set)
case (1:3); flag = pdf_builtin_status%initialized(set)
case default; flag = .false.
end select
else
flag = any (pdf_builtin_status%initialized)
end if
end function pdf_builtin_status_is_initialized
subroutine pdf_builtin_status_set_initialized (pdf_builtin_status, set)
type(pdf_builtin_status_t), intent(inout) :: pdf_builtin_status
integer, intent(in) :: set
pdf_builtin_status%initialized(set) = .true.
end subroutine pdf_builtin_status_set_initialized
function pdf_builtin_alpi (AMU,NORDER,NF,alam)
integer, intent(in) :: nf, norder
real(kind=double), intent(in) :: amu
real(kind=double), dimension(6), intent(in) :: alam
real(kind=double) :: alm
real(kind=double) :: pdf_builtin_alpi
integer :: irt, n_eff
n_eff = num_flavor (AMU,NF)
alm = alam (n_eff+1)
pdf_builtin_alpi = pdf_builtin_alpqcd (norder, n_eff, amu/alm, irt)
select case (irt)
case (1)
call msg_warning ("AMU < ALAM in pdf_builtin_alpi")
case (2)
call msg_warning ("pdf_builtin_alpi > 3; Be aware!")
end select
end function pdf_builtin_alpi
double precision function pdf_builtin_ALPQCD (IRDR, NF, RML, IRT)
real(kind=double) :: D0 = 0.D0, D1 = 1.D0, BIG = 1.0D15
real(kind=double) :: b0, b1
integer, intent(in) :: irdr, nf
integer :: irt
real(kind=double), intent(in) :: rml
real(kind=double) :: al, aln
real(kind=double) :: rm2
IRT = 0
if (IRDR .LT. 1 .OR. IRDR .GT. 2) THEN
print *, &
& 'Order out of range in pdf_builtin_ALPQCD: IRDR = ', IRDR
STOP
end if
b0 = (11.d0*CA - 2.* NF) / 3.d0
b1 = (34.d0*CA**2 - 10.d0*CA*NF - 6.d0*CF*NF) / 3.d0
rm2 = rml**2
if (RM2 .LE. 1.) THEN
IRT = 1
pdf_builtin_ALPQCD = 99.
RETURN
end if
aln = log (RM2)
al = 4.d0/ B0 / aln
IF (IRDR .GE. 2) AL = AL * (1.d0-B1*log(ALN) / ALN / B0**2)
if (AL .GE. 3.) THEN
IRT = 2
end if
pdf_builtin_ALPQCD = AL
end function pdf_builtin_ALPQCD
function num_flavor (amu,nf)
real(kind=double), intent(in) :: amu
integer, intent(in) :: nf
integer :: num_flavor, i
num_flavor = nf - nhq
IF ((num_flavor .EQ. nf) .OR. (amu .LE. amn)) GOTO 20
do 10 I = nf - NHQ + 1, nf
if (amu .GE. amhat(I)) THEN
num_flavor = I
else
goto 20
end if
10 continue
20 return
end function num_flavor
subroutine pdf_builtin_alfa (alfas,Qalfa,norder)
integer, intent(in) :: norder
real(kind=double), intent(in) :: Qalfa
real(kind=double), intent(out) :: alfas
real(kind=double) :: alphasq0
real(kind=double) :: mCharmSave, mBottomSave, mTopSave
mTopSave = 10000000000.0_double
mBottomSave = 4.75_double
mCharmSave = 1.4_double
select case (norder)
case (0)
alphasq0 = 0.68183_double
case (1)
alphasq0 = 0.491278_double
case (2)
alphasq0 = 0.45077_double
case default
call msg_fatal ("Wrong MSTW order!")
end select
if (Qalfa.GT.mTopSave) call msg_fatal &
("No MSTW alphas for such high scales.")
alfas = pdf_builtin_mstw_alphas (Qalfa,norder,mTopSave**2)
end subroutine pdf_builtin_alfa
function pdf_builtin_mstw_alphas (mur, norder, m2t) result (alfas)
real(kind=double), intent(in) :: mur
real(kind=double) :: alfas
integer, intent(in) :: norder
integer :: nf
real(kind=double), intent(in) :: m2t
real(kind=double) :: as0, asc, asb
real(kind=double) :: r2, m2, asi, asf, r20, r2b, r2c, r2t
real(kind=double), parameter :: m20 = 1.0_double, m2c = 1.96_double, &
m2b = 22.5625_double
real(kind=double) :: logfr
integer :: nff
real(kind=double) :: ast
nff = 4
select case (norder)
case (0)
as0 = 5.4258307424173556E-002_double
asc = 4.0838232991033577E-002_double
asb = 2.2297506503539639E-002_double
case (1)
as0 = 3.9094820221093209E-002_double
asc = 3.0202751103489092E-002_double
asb = 1.7751676069301441E-002_double
case (2)
as0 = 3.5871136848766867E-002_double
asc = 2.8092349518054758E-002_double
asb = 1.6936586710596203E-002_double
case default
call msg_fatal ("Wrong evolution order in MSTW alphas evolution.")
end select
r2 = mur**2
m2 = r2 * exp(+logfr)
if (m2 .gt. m2t) then
nf = 6
r2t = m2t * r2/m2
asi = ast
asf = mstw_alphas (r2,r2t,ast,nf,norder)
else
if (m2 .gt. m2b) then
nf = 5
r2b = m2b * r2/m2
asi = asb
asf = mstw_alphas (r2,r2b,asb,nf,norder)
else
if (m2 .gt. m2c) then
nf = 4
r2c = m2c * r2/m2
asi = asc
asf = mstw_alphas (r2,r2c,asc,nf,norder)
else
nf = 3
r20 = m20 * r2/m2
asi = as0
asf = mstw_alphas (r2,r20,as0,nf,norder)
end if
end if
end if
alfas = 4.D0*PI*ASF
end function pdf_builtin_mstw_alphas
function mstw_alphas (r2, r20, as0, nf, naord) result (as)
real(kind=double) :: as
real(kind=double), intent(in) :: r2, r20, as0
integer, intent(in) :: nf, naord
integer, parameter :: nastps = 20
integer :: k1
real(kind=double), parameter :: sxth = 1./6.
real(kind=double) :: lrrat, dlr, xk0, xk1, xk2, xk3
as = as0
lrrat = log (r2/r20)
dlr = lrrat / nastps
! ..Solution of the evolution equation depending on NAORD
! (fourth-order Runge-Kutta beyond the leading order)
select case (naord)
case (0)
as = as0 / (1.+ beta0(nf) * as0 * lrrat)
case (1)
do k1 = 1, nastps
xk0 = dlr * fbeta1 (as, nf)
xk1 = dlr * fbeta1 (as + 0.5 * xk0, nf)
xk2 = dlr * fbeta1 (as + 0.5 * xk1, nf)
xk3 = dlr * fbeta1 (as + xk2, nf)
as = as + sxth * (xk0 + 2.* xk1 + 2.* xk2 + xk3)
end do
case (2)
do k1 = 1, nastps
xk0 = dlr * fbeta2 (as, nf)
xk1 = dlr * fbeta2 (as + 0.5 * xk0, nf)
xk2 = dlr * fbeta2 (as + 0.5 * xk1, nf)
xk3 = dlr * fbeta2 (as + xk2, nf)
as = as + sxth * (xk0 + 2.* xk1 + 2.* xk2 + xk3)
end do
case (3)
do k1 = 1, nastps
xk0 = dlr * fbeta3 (as, nf)
xk1 = dlr * fbeta3 (as + 0.5 * xk0, nf)
xk2 = dlr * fbeta3 (as + 0.5 * xk1, nf)
xk3 = dlr * fbeta3 (as + xk2, nf)
as = as + sxth * (xk0 + 2.* xk1 + 2.* xk2 + xk3)
end do
end select
end function mstw_alphas
double precision function beta0 (nf)
integer, intent(in) :: nf
beta0 = b00 + b01 * nf
end function beta0
double precision function beta1 (nf)
integer, intent(in) :: nf
beta1 = b10 + b11 * nf
end function beta1
double precision function beta2 (nf)
integer, intent(in) :: nf
beta2 = 1428.50 - 279.611 * nf + 6.01852 * nf**2
end function beta2
double precision function beta3 (nf)
integer, intent(in) :: nf
beta3 = 29243.0 - 6946.30 * nf + 405.089 * nf**2 + &
1.49931 * nf**3
end function beta3
! ..The beta functions FBETAn at N^nLO for n = 1, 2, and 3
double precision function fbeta1 (a, nf)
real(kind=double), intent(in) :: a
integer, intent(in) :: nf
fbeta1 = - a**2 * ( beta0(nf) + a * beta1(nf) )
end function fbeta1
double precision function fbeta2 (a, nf)
real(kind=double), intent(in) :: a
integer, intent(in) :: nf
fbeta2 = - a**2 * ( beta0(nf) + a * ( beta1(nf) &
+ a * beta2(nf) ) )
end function fbeta2
double precision function fbeta3 (a, nf)
real(kind=double), intent(in) :: a
integer, intent(in) :: nf
fbeta3 = - a**2 * ( beta0(nf) + a * ( beta1(nf) &
+ a * ( beta2(nf) + a * beta3(nf)) ) )
end function fbeta3
subroutine mrst_alphas (alpha, q)
real(kind=double), intent(in) :: q
real(kind=double), intent(out) :: alpha
integer :: idir
integer, parameter :: nflav = 4
real(kind=double) :: alphas, qz2, qz, alambda, astep, &
tol2
alphas = 0.1205_double
qz2=8315._double
qz = sqrt(qz2)
alambda = 0.3000_double
astep = 0.010_double
tol2 = 0.0000001_double
idir = +1
100 continue
alambda = alambda + idir*astep
call mrst_lambda (nflav,alpha,qz,alambda)
if (idir*(alphas-alpha).gt.0.0) then
goto 200
else
astep = 0.5*astep
idir = -1*idir
goto 200
end if
200 continue
if(abs(alpha-alphas).gt.tol2) goto 100
! alambda found -- save it !!!!
! next call mrst_lambda to get alphas at q with the correct alambda
call mrst_lambda (nflav,alpha,q,alambda)
RETURN
end subroutine mrst_alphas
subroutine mrst_lambda (nflav,alpha,Q,alambda)
integer, intent(in) :: nflav
integer :: ith
real(kind=double), intent(in) :: q, alambda
real(kind=double), intent(out) :: alpha
real(kind=double) :: al, al2, alfinv, alfqc3, alfqc4, alfqc5, &
alfqs3, alfqs5
real(kind=double) :: x1, x2, t, tt
real(kind=double) :: qsdt, qsdtt, qsct, qsctt, qs, q2
real(kind=double) :: b0, b1, del, f, fp, as, as2
real(kind=double) :: flav
! The value of Lambda required corresponds to nflav=4
qsdt=8.18 !! This is the value of 4m_c^2
qsct=74.0 !! This is the value of 4m_b^2
al2=alambda*alambda
q2=q*q
t = log (q2/al2)
! CHECK: explicitly initialising ALFQC{3,4,5} (by AB)
alfqc3 = 0
alfqc4 = 0
alfqc5 = 0
ith=0
tt=t
qsdtt=qsdt/4.
qsctt=qsct/4.
al = alambda
al2=al*al
flav=4.
qs=al2*exp(T)
if (qs.lt.0.5d0) then !! running stops below 0.5
qs=0.5d0
t = log (qs/al2)
tt= t
end if
if (qs.lt.qsdtt .and. nflav.gt.3) GOTO 312
11 continue
b0 = 11._double - 2./3._double * flav
x1 = 4.*PI/b0
b1=102.-38.*FLAV/3.
X2=B1/B0**2
AS2=X1/T*(1.-X2* log(T)/T)
5 AS=AS2
F=-T+X1/AS-X2*log(X1/AS+X2)
FP=-X1/AS**2*(1.-X2/(X1/AS+X2))
AS2=AS-F/FP
DEL=ABS(F/FP/AS)
IF((DEL-tol).GT.0.) goto 5
ALPHA=AS2
51 continue
IF(ITH.EQ.0) RETURN
GOTO (13,14,15) ITH
! GOTO 5
12 ITH=1
T=log(QSCTT/AL2)
GOTO 11
13 ALFQC4=ALPHA
FLAV=5.
ITH=2
GOTO 11
14 ALFQC5=ALPHA
ITH=3
T=TT
GOTO 11
15 ALFQS5=ALPHA
ALFINV=1./ALFQS5+1./ALFQC4-1./ALFQC5
ALPHA=1./ALFINV
RETURN
311 CONTINUE
B0=11-2.*FLAV/3.
X1=4.*PI/B0
B1=102.-38.*FLAV/3.
X2=B1/B0**2
AS2=X1/T*(1.-X2*log(T)/T)
35 AS=AS2
F=-T+X1/AS-X2*log(X1/AS+X2)
FP=-X1/AS**2*(1.-X2/(X1/AS+X2))
AS2=AS-F/FP
DEL=ABS(F/FP/AS)
IF((DEL-tol).GT.0.) goto 35
ALPHA=AS2
351 continue
IF(ITH.EQ.0) RETURN
GOTO (313,314,315) ITH
312 ITH=1
T=log(QSDTT/AL2)
GOTO 311
313 ALFQC4=ALPHA
FLAV=3.
ITH=2
GOTO 311
314 ALFQC3=ALPHA
ITH=3
T=TT
GOTO 311
315 ALFQS3=ALPHA
ALFINV=1./ALFQS3+1./ALFQC4-1./ALFQC3
ALPHA=1./ALFINV
end subroutine mrst_lambda
end module pdf_builtin
Index: trunk/src/pdf_builtin/CJpdf.f
===================================================================
--- trunk/src/pdf_builtin/CJpdf.f (revision 5839)
+++ trunk/src/pdf_builtin/CJpdf.f (revision 5840)
@@ -1,362 +1,363 @@
c This is the set of user routines which can be used to read the CJ PDF
c tables and extract values of the CJ PDFs at specified values of
c momentum fraction x and factorization scale Q.
c
c
c Patterned after the CTEQ6 PDF routines
c
c J.F. Owens June 2012 - December 2012
c
c Three sets of PDFs are available: CJ12_min, CJ12_mid, and CJ12_max
c corresponding to the minimum, midddle, and maximum nuclear corrections.
c
c The following numbering scheme is used for the variable ISET
c
c ISET PDF
c
c 100 | CJ12_min central PDF
c 101-138 | CJ12_min error PDF sets
c |
c 200 | CJ12_mid central PDF
c 201-238 | CJ12_mid error PDF sets
c |
c 300 | CJ12_max central PDF
c 301-338 | CJ12_max error PDF sets
c
c The tables cover the x range 10^-6 < x < 1. and Q range 1.3 < Q < 10^5 GeV.
c Values outside these ranges must be considered as extrapolations.
c
c The user should initalize the PDF set by first calling SetCJ(ISET)
c
c A function call to CJpdf(Iptn,x,Q) returns the number density PDF of
c flavor Iptn at momentum fraction x and factorization scale Q
c
c A subroutine call to CJpdf_all(x,Q,bb,cb,sb,db,ub,g,u,d,s,c,b) returns all
c the PDFs with one call
c
c Flavor index: Iptn = -5:5 for bb, cb, sb, db, ub, g, u, d, s, c, b,
c
c For the CJ12 PDFs b=bb, c=cb, and s=sb
c
c An example of how to use the CJ PDFs is included in the program tst_CJpdf.f
c This will produce a table of PDFs for a specified value of ISET
c
module CJ12
use file_utils
contains
Function CJpdf(Iptn, x, Q)
Implicit double precision (A-H,O-Z)
Common/CJPAR2/Nx, Nq, Nfmx
Common/QCDtable/Alam, Nfl, Iord
If(x.lt.0.d0.or.x.gt.1.d0)then
Print*,'x out of range in CJPDF:',x
Stop
Endif
If(Q.lt.Alam)then
Print*,'Q out of range in CJpdf:',Q
Stop
Endif
If(Iptn.lt.-Nfmx.or.Iptn.gt.Nfmx)then
Print*,'Iptn out of range in CJpdf:',Iptn
Print*,'Maximum number of flavors is:',Nfmx
Stop
Endif
CJpdf=Getpdf(Iptn,x,Q)
c if(CJpdf.lt.0.d0)CJPDF=0.d0
Return
End
Subroutine CJpdf_all(x,Q,bb,cb,sb,db,ud,g,u,d,s,c,b)
Implicit Double Precision (a-h,o-z)
bb=CJpdf(-5,x,Q)
cb=CJpdf(-4,x,Q)
sb=CJpdf(-3,x,Q)
db=CJpdf(-2,x,Q)
ub=CJpdf(-1,x,Q)
g=CJpdf(0,x,Q)
u=CJpdf(1,x,Q)
d=CJpdf(2,x,Q)
s=sb
c=cb
b=bb
return
end
- Subroutine SetCJ(Iset)
+ Subroutine SetCJ (prefix, Iset)
Implicit Double Precision (A-H,O-Z)
Character Flnm(3)*9, nn*3, Tablefile*40
+ character (*) prefix
Data (Flnm(I), I=1,3)
> / 'CJ12_min_', 'CJ12_mid_', 'CJ12_max_' /
Data Isetold/-1/
save
C If data file not initialized, do so.
If(Iset.ne.Isetold) then
- IU= NextUn()
- If (Iset.ge.100 .and. Iset.le.140) Then
- write(nn,'(I3)') Iset
- Tablefile=Flnm(1)//nn(2:3)//'.tbl'
- Elseif (Iset.ge.200 .and. Iset.le.240) Then
- write(nn,'(I3)') Iset
- Tablefile=Flnm(2)//nn(2:3)//'.tbl'
- Elseif (Iset.ge.300 .and. Iset.le.340) Then
- write(nn,'(I3)') Iset
- Tablefile=Flnm(3)//nn(2:3)//'.tbl'
- Else
- Print *, 'Invalid Iset number in SetCJ :', Iset
- Stop
- Endif
- print*,'Opening ',Tablefile
- Open(IU, File=Tablefile, Status='OLD', Err=100)
+ IU= NextUn()
+ If (Iset.ge.100 .and. Iset.le.140) Then
+ write(nn,'(I3)') Iset
+ Tablefile=Flnm(1)//nn(2:3)//'.tbl'
+ Elseif (Iset.ge.200 .and. Iset.le.240) Then
+ write(nn,'(I3)') Iset
+ Tablefile=Flnm(2)//nn(2:3)//'.tbl'
+ Elseif (Iset.ge.300 .and. Iset.le.340) Then
+ write(nn,'(I3)') Iset
+ Tablefile=Flnm(3)//nn(2:3)//'.tbl'
+ Else
+ Print *, 'Invalid Iset number in SetCJ :', Iset
+ Stop
+ Endif
+C print*,'Opening ',Tablefile
+ Open(IU, File=prefix // "/" // Tablefile, Status='OLD', Err=100)
21 Call ReadTbl (IU)
Close (IU)
Isetold=Iset
Endif
Return
- 100 Print *, ' Data file ', Tablefile, ' cannot be opened '
- >//'in SetCJ!!'
+ 100 Print *, ' Data file ', prefix // "/" // trim (Tablefile),
+ >' cannot be opened in SetCJ!!'
Stop
C ********************
End
Subroutine ReadTbl (Nu)
Implicit Double Precision (A-H,O-Z)
Character Line*80
PARAMETER (MXX = 105, MXQ = 25, MXF = 6)
PARAMETER (MXPQX=(MXF+3)*MXQ*MXX)
Common
> / CJPAR1 / Al, XV(MXX), QV(MXQ), SV(MXQ), UPD(MXPQX)
> / CJPAR2 / Nx, NQ, NfMx
> / XQrange / Qini, Qmax, Xmin
> / QCDtable / Alam, Nfl, Iorder
> / Masstbl / Amass(6)
Read (Nu, '(A)') Line
Read (Nu, '(A)') Line
Read (Nu, *) Dr, Fl, Al, (Amass(I),I=1,6)
Iorder = Nint(Dr)
Nfl = Nint(Fl)
Alam = Al
Read (Nu, '(A)') Line
Read (Nu, *) NX, NQ, NfMx
Read (Nu, '(A)') Line
Read (Nu, *) QINI, QMAX, (QV(I), I =1, NQ)
Read (Nu, '(A)') Line
Read (Nu, *) XMIN, (XV(I), I =1, NX)
Do 11 Iq = 1, NQ
SV(Iq) = Log(Log (QV(Iq) /Alam)/Log(Qini/Alam))
11 Continue
c
Nblk=Nx*NQ
Npts=Nblk*(NfMx+3)
Read(Nu,'(A)') Line
Read(Nu,25,err=999) (UPD(I), I=1,Npts)
25 format(5E14.4)
Return
999 print*,i,UPD(i-1),UPD(i)
stop
End
Function NextUn()
C Returns an unallocated FORTRAN i/o unit.
Logical EX
C
Do 10 N = 10, 300
INQUIRE (UNIT=N, OPENED=EX)
If (.NOT. EX) then
NextUn = N
Return
Endif
10 Continue
Stop ' There is no available I/O unit. '
C *************************
End
C
Function GetPDF(Iptn,x,Q)
IMPLICIT REAL*8 (A-H,O-Z)
PARAMETER (MXX = 105, MXQ = 25, MXF = 6)
PARAMETER (MXPQX=(MXF+3)*MXQ*MXX)
Common
> / CJPAR1 / Al, XV(MXX), QV(MXQ), SV(MXQ), UPD(MXPQX)
> / CJPAR2 / Nx, NQ, NfMx
> / XQrange / Qini, Qmax, Xmin
> / QCDtable / Alam, Nfl, Iorder
> / Masstbl / Amass(6)
c
c Linear interpolation in s
c
s=log(log(Q/Alam)/log(Qini/Alam))
do 2 j=1,NQ
if(s.lt.SV(j))then
J2=J
if(J2.eq.1)J2=2
J1=J2-1
S2=SV(j2)
S1=SV(j2-1)
goto 1
endif
2 continue
1 continue
c
c In CJ12 s=sbar, c=cbar, and b=bbar
c
if(Iptn.gt.2)then
Iptn_temp=-Iptn
else
Iptn_temp=Iptn
endif
A1=GetFV(Iptn_temp,x,J1)
A2=GetFV(Iptn_temp,x,J2)
ANS=A1*(S-S2)/(S1-S2)+A2*(S-S1)/(S2-S1)
if(ans.lt.0.d0)ans=0.d0
GetPDF=ANS
RETURN
END
c
FUNCTION GetFV(Iptn,x,J)
IMPLICIT REAL*8 (A-H,O-Z)
PARAMETER (MXX = 105, MXQ = 25, MXF = 6)
PARAMETER (MXPQX=(MXF+3)*MXQ*MXX)
Dimension xx(4),fx(4)
Common
> / CJPAR1 / Al, XV(MXX), QV(MXQ), SV(MXQ), UPD(MXPQX)
> / CJPAR2 / Nx, NQ, NfMx
> / XQrange / Qini, Qmax, Xmin
> / QCDtable / Alam, Nfl, Iorder
> / Masstbl / Amass(6)
c
c Interpolate in x using the form A*x**alpha*(1-x)**beta
c which is locally valid for each PDF
c
DO 1 I=1,Nx
IF(X.LT.XV(I)) GO TO 2
1 CONTINUE
c 2 I=I-1
2 I=I-2
If(I.le.0.d0) I=2
if(i.gt.(nx-3))i=nx-3
In1=I+Nx*(J-1)+Nx*NQ*(Iptn+5)
xx(1)=xv(I)
xx(2)=xv(i+1)
xx(3)=xv(I+2)
xx(4)=xv(I+3)
fx(1)=UPD(In1)
fx(2)=UPD(In1+1)
fx(3)=UPD(In1+2)
fx(4)=UPD(In1+3)
c call polint(xx,fx,4,x,ans,dy)
call polint4(xx,fx,x,ans)
getfv=ans
END
SUBROUTINE POLINT4 (XA,YA,X,Y)
IMPLICIT DOUBLE PRECISION (A-H, O-Z)
C The POLINT4 routine is based on the POLINT routine from "Numerical Recipes",
C but assuming N=4, and ignoring the error estimation.
C suggested by Z. Sullivan.
DIMENSION XA(*),YA(*)
H1=XA(1)-X
H2=XA(2)-X
H3=XA(3)-X
H4=XA(4)-X
W=YA(2)-YA(1)
DEN=W/(H1-H2)
D1=H2*DEN
C1=H1*DEN
W=YA(3)-YA(2)
DEN=W/(H2-H3)
D2=H3*DEN
C2=H2*DEN
W=YA(4)-YA(3)
DEN=W/(H3-H4)
D3=H4*DEN
C3=H3*DEN
W=C2-D1
DEN=W/(H1-H3)
CD1=H3*DEN
CC1=H1*DEN
W=C3-D2
DEN=W/(H2-H4)
CD2=H4*DEN
CC2=H2*DEN
W=CC2-CD1
DEN=W/(H1-H4)
DD1=H4*DEN
DC1=H1*DEN
If((H3+H4).lt.0D0) Then
Y=YA(4)+D3+CD2+DD1
Elseif((H2+H3).lt.0D0) Then
Y=YA(3)+D2+CD1+DC1
Elseif((H1+H2).lt.0D0) Then
Y=YA(2)+C2+CD1+DC1
ELSE
Y=YA(1)+C1+CC1+DC1
ENDIF
RETURN
END
SUBROUTINE POLINT(XA,YA,N,X,Y,DY)
IMPLICIT REAL*8 (A-H,O-Z)
PARAMETER (NMAX=25)
DIMENSION XA(N),YA(N),C(NMAX),D(NMAX)
NS=1
DIF=ABS(X-XA(1))
DO 11 I=1,N
DIFT=ABS(X-XA(I))
IF (DIFT.LT.DIF) THEN
NS=I
DIF=DIFT
ENDIF
C(I)=YA(I)
D(I)=YA(I)
11 CONTINUE
Y=YA(NS)
NS=NS-1
DO 13 M=1,N-1
DO 12 I=1,N-M
HO=XA(I)-X
HP=XA(I+M)-X
W=C(I+1)-D(I)
DEN=HO-HP
IF(DEN.EQ.0.)then
print*,xa(i),xa(i+m),x
print*, 'Enter <CR> to continue'
read(*,*)
endif
DEN=W/DEN
D(I)=HP*DEN
C(I)=HO*DEN
12 CONTINUE
IF (2*NS.LT.N-M)THEN
DY=C(NS+1)
ELSE
DY=D(NS)
NS=NS-1
ENDIF
Y=Y+DY
13 CONTINUE
RETURN
END
end module CJ12

File Metadata

Mime Type
text/x-diff
Expires
Tue, Nov 19, 8:35 PM (1 d, 2 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3806068
Default Alt Text
(77 KB)

Event Timeline