Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement QED exact solution #135

Merged
merged 329 commits into from
Mar 9, 2023
Merged
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
329 commits
Select commit Hold shift + click to select a range
cfa76b1
Factorize things inside ad_to_evol_map
niclaurenti Jul 22, 2022
25722ba
Deal with intrinsic quarks also for QED
niclaurenti Jul 22, 2022
b0f8a8f
Fix ad_to_evol_map
niclaurenti Jul 23, 2022
ac5e0e7
Change (br.non_singlet_pids_map[nsV], 0) -> (21,21)
niclaurenti Jul 25, 2022
22506f4
Factor out const elements in ad_to_evol_map
niclaurenti Jul 25, 2022
8d53a98
Remove if condition
niclaurenti Jul 25, 2022
edcf2a4
Add valence_unified_labels to full_unified_labels
niclaurenti Jul 26, 2022
2a00511
Implement unified_evol_basis_pids
niclaurenti Jul 27, 2022
8f62091
Add QED cases in get_range
niclaurenti Jul 27, 2022
f2ab66a
Include QED in ad_projector
niclaurenti Jul 27, 2022
f70f6d6
Add comment
niclaurenti Jul 27, 2022
6a084a4
Init apfel_bench_qed.py
niclaurenti Jul 28, 2022
159b59d
Fix comments
niclaurenti Jul 28, 2022
7f79473
Add qed in rotate_matching
niclaurenti Jul 31, 2022
ddf98d2
Add is_qed in rotate_matching_inverse call
niclaurenti Jul 31, 2022
4ee4315
Remove unnecessary comment
niclaurenti Jul 31, 2022
aa75322
Add comments
niclaurenti Jul 31, 2022
676abfd
Change is_qed -> qed
niclaurenti Jul 31, 2022
e22399b
Add qed in split_ad_to_evol_map
niclaurenti Jul 31, 2022
5b4501e
Fix rotate_matching
niclaurenti Aug 3, 2022
9f90f5d
Fix rotation_parameters
niclaurenti Aug 12, 2022
3eae1ad
Merge branch 'develop' into feature/qed-solution
niclaurenti Aug 12, 2022
d2fda09
Add full_labels_qed in OperatorMatrixElement
niclaurenti Aug 14, 2022
65b2e99
Implement to_uni_evol in output.py
niclaurenti Aug 14, 2022
8e8f338
Remove comments in flavors.py
niclaurenti Aug 16, 2022
aa60432
Add rotation to unified evolution basis
niclaurenti Aug 20, 2022
38710ec
Fix rotation_parameters
niclaurenti Aug 21, 2022
b73fcb3
Fix again rotation_parameters
niclaurenti Aug 21, 2022
c46cd2c
Add documentation about qed matching and basis rotation
niclaurenti Aug 21, 2022
0aefe6a
Remove products of latex compilation
niclaurenti Aug 21, 2022
fa2c7ed
Fix typo in matching_and_rotation.tex
niclaurenti Aug 22, 2022
c9b743a
Fix typos in as1aem1.py
niclaurenti Aug 23, 2022
9269551
Fix typo in anomalous_dimensions/aem2.py
niclaurenti Aug 23, 2022
10d93ef
Add missing elements in ad_to_evol_map
niclaurenti Aug 24, 2022
46ba754
Modify apfel_bench_qed.py
niclaurenti Aug 25, 2022
e694b42
Remove 91 from self.is_QEDvalence
niclaurenti Aug 25, 2022
8a208cf
Update PDF in apfel_bench_qed.py
niclaurenti Aug 29, 2022
05b16b6
Fix harmonics in anomalous_dimensions/__init__.py
niclaurenti Aug 29, 2022
30117ba
Fix basis rotation in physical
niclaurenti Aug 29, 2022
755661b
Fix orders in anomalous_dimensions/__init__.py
niclaurenti Sep 1, 2022
a7bf11a
Fix calling of photon PDF from apfel
niclaurenti Sep 1, 2022
b0f82ee
Add comments in copy_ns_ops
niclaurenti Sep 1, 2022
b876c26
Add skip_singlet and skip_nonsingllet in QED
niclaurenti Sep 1, 2022
c7f1438
Fix apfel_bench_qed
niclaurenti Sep 1, 2022
a14eeed
Add rotation to unified_evol_basis in apfel_utils, lhapdf_utils, pega…
niclaurenti Sep 2, 2022
0fed5a5
Fix names in uni-dglap.tex
niclaurenti Sep 9, 2022
af64f95
Merge branch 'develop' into feature/qed-solution
niclaurenti Sep 9, 2022
8ad97c0
Revert apfel_bench_qed.py
niclaurenti Sep 12, 2022
5b91a9b
Init test_kernels_QED
niclaurenti Sep 12, 2022
70b82c7
Write tests for basis rotation
niclaurenti Sep 12, 2022
f4ae911
Test qed in ad_to_evol_map
niclaurenti Sep 12, 2022
22dfcf6
Merge branch 'develop' into feature/qed-solution
niclaurenti Sep 12, 2022
fa765f4
Test to_flavor_basis_tensor
niclaurenti Sep 12, 2022
b62666c
Test to_uni_evol
niclaurenti Sep 12, 2022
5fb4c6b
Test matching conditions
niclaurenti Sep 12, 2022
f31a138
Fix orders of hamonics in qed singlet and valence
niclaurenti Sep 13, 2022
e1010c4
Fix orders of hamonics in qed nonsinglet
niclaurenti Sep 13, 2022
1be051c
Fix bug in the contruction of beta function
niclaurenti Sep 13, 2022
5630311
Fix test_kernels_QEDsinglet.py test_kernels_QEDvalence.py
niclaurenti Sep 13, 2022
9128a3c
Adding qed tests in test_ev_operator.py
niclaurenti Sep 13, 2022
042966a
Revert CT18_bench.py
niclaurenti Sep 14, 2022
db471de
Test ns scale variation
niclaurenti Sep 14, 2022
f908113
Change names in select_QEDsinglet_element
niclaurenti Sep 14, 2022
ea5b33e
Refactor e2u and e2d in gamma_ns_qed
niclaurenti Sep 14, 2022
b21b5e2
Add missing nb.njit to e2(mode)
niclaurenti Sep 14, 2022
1c9d018
Revert "Add missing nb.njit to e2(mode)"
niclaurenti Sep 14, 2022
ca727cd
Revert "Refactor e2u and e2d in gamma_ns_qed"
niclaurenti Sep 14, 2022
e0dee84
Factor calling of qed non-singlet ad
niclaurenti Sep 14, 2022
ceede58
Rename one-digit variable
niclaurenti Sep 14, 2022
5db58e2
Change name os choose_ad_aem1 ecc
niclaurenti Sep 15, 2022
f1e0fd8
Add bench for NNPDF31_luxqed in NNPDF_bench.py
niclaurenti Sep 15, 2022
de8d731
Write QEDsinglet matrix explicitly
niclaurenti Sep 15, 2022
6e8b1ab
Modify NNPDF_bench.py
niclaurenti Sep 20, 2022
c07a607
Make numbers explicitly floats
niclaurenti Sep 20, 2022
1539b15
Fix integration mellin.Path for QEDsinglet
niclaurenti Sep 21, 2022
dc7746d
Add identity matching for the photon
niclaurenti Sep 22, 2022
3bad655
Fix test_matching
niclaurenti Sep 22, 2022
da31b4a
Bench against CT18qed
niclaurenti Sep 22, 2022
a90b434
Implement fixed alpha running in couplings.py
niclaurenti Sep 23, 2022
49351dd
Test exact running alpha at ord (1,0), (2,0)
niclaurenti Sep 23, 2022
681b49e
Add comment about running_alphaem
niclaurenti Sep 23, 2022
1c13476
Add test_running_alpha
niclaurenti Sep 23, 2022
1ef58fe
Modify compute_exact_fixed_alphaem
niclaurenti Sep 23, 2022
0d85909
Merge branch 'develop' into feature/qed-solution
niclaurenti Sep 23, 2022
fd4aed6
Remove TODO
niclaurenti Sep 26, 2022
f3ba1a2
Compute beta coeff before if statements
niclaurenti Sep 26, 2022
18c33f7
Change calling of beta_vec
niclaurenti Sep 26, 2022
c1e9c8d
Fix documentation in kernels/QEDsinglet and valence
niclaurenti Sep 26, 2022
cfe7a29
Fix documentation in kernels/QEDnonsinglet
niclaurenti Sep 26, 2022
d9e1c2e
Updating docstring in evolution_integrals.py
niclaurenti Sep 26, 2022
5e908a7
Fix dos in anomalous_dimensions/__init__.py
niclaurenti Sep 26, 2022
f976128
Fix docstring in basis_rotation
niclaurenti Sep 26, 2022
05da03b
Fix docstring in evolution_operator/__init__
niclaurenti Sep 26, 2022
3b8bccc
Add qed docstring in functions that use it
niclaurenti Sep 26, 2022
17032a3
Move apfel_bench_qed into apfel_bench
niclaurenti Sep 27, 2022
8c81117
Fix typos in BenchmarkVFNS_qed
niclaurenti Sep 27, 2022
2aacb33
Update docstrings in evolution_integrals.py
niclaurenti Sep 27, 2022
4388a33
Fix ad_projector for qed
niclaurenti Sep 27, 2022
3698ee7
Implementing solution with running alpha
niclaurenti Oct 3, 2022
46e2392
Fixing tests
niclaurenti Oct 3, 2022
9162e28
Modify way aem_liist is passed
niclaurenti Oct 3, 2022
774b39c
Make aem_list np.array
niclaurenti Oct 3, 2022
0a2d98d
Fix parenthesis in compute_aem_as
niclaurenti Oct 3, 2022
45a3298
Implement function a_em in couplings
niclaurenti Oct 3, 2022
55e80fe
Implement running alpha in non singlet qed
niclaurenti Oct 4, 2022
0498d53
Add nl to betaqed
niclaurenti Oct 4, 2022
bd11a38
Add Qedref to theory card
niclaurenti Oct 4, 2022
fb64591
Fix test_beta.py
niclaurenti Oct 4, 2022
73eaca6
Merge branch 'feature/qed-solution' of github.com:N3PDF/eko into feat…
niclaurenti Oct 4, 2022
b7037cc
Revert "Add Qedref to theory card"
niclaurenti Oct 4, 2022
f7ff8e4
Pass alphaem_running from dict
niclaurenti Oct 4, 2022
6c5a73a
Test compute_aem_as
niclaurenti Oct 4, 2022
823d6dd
test aem_list
niclaurenti Oct 4, 2022
aea61b2
Fix reference in test_beta
niclaurenti Oct 4, 2022
74062ff
Make numba compile ns qed sector
niclaurenti Oct 5, 2022
4754f4b
Merge branch 'feature/qed-solution' of github.com:N3PDF/eko into feat…
niclaurenti Oct 5, 2022
1f0de41
Modify test_compute_aem_as
niclaurenti Oct 5, 2022
dceed98
Add nf_ref to test_compute_aem_as
niclaurenti Oct 5, 2022
7557a36
Modify test_couplings
niclaurenti Oct 6, 2022
9963303
Fix compute_aem_as
niclaurenti Oct 6, 2022
14d39c9
Add alphaem_running flag in logger
niclaurenti Oct 7, 2022
3e10c36
Add function a(self) in evolution_operator
niclaurenti Oct 9, 2022
b89329b
Test all code
niclaurenti Oct 11, 2022
6c86787
Add exact LO solution for unidimensiona_exact
niclaurenti Oct 13, 2022
b352062
Fix bug in beta_aem2 and beta_aem3
niclaurenti Oct 14, 2022
31b409b
Fix test_beta
niclaurenti Oct 14, 2022
96cfeb7
Add factor CA to gamma_{qg,phg,gg} at O(as1aem1)
niclaurenti Oct 17, 2022
32e29bb
Put nl to 0
niclaurenti Oct 17, 2022
6c7fb8b
Revert "Put nl to 0"
niclaurenti Oct 18, 2022
530ad27
Modify CA -> NC in gamma_{qg,phg,gg} at O(as1aem1)
niclaurenti Oct 18, 2022
b71da07
Merge branch 'develop' into feature/qed-solution
niclaurenti Oct 19, 2022
9133790
Init decoupled couplings evolution
niclaurenti Oct 19, 2022
c775395
Implement qed exponentiated scale variations
niclaurenti Oct 20, 2022
1768f9b
Implement QED scale var for fixed alphaem
niclaurenti Oct 20, 2022
93e6eb9
Add documentation for fixed_alphaem_exact running_alphaem_exact
niclaurenti Oct 20, 2022
7f537e1
Implement expanded scale variations for QED
niclaurenti Oct 20, 2022
1dd28e1
Correct typo in exponentiated.py
niclaurenti Oct 20, 2022
e65f023
Implement benchmark_sv in apfel-bench
niclaurenti Oct 20, 2022
631ec11
Merge branch 'feature/qed-solution' of https://github.com/N3PDF/eko i…
niclaurenti Oct 20, 2022
b5a7c9e
Test sv exponentiated for qed
niclaurenti Oct 21, 2022
834431f
Test dispatcher for expanded sv qed
niclaurenti Oct 21, 2022
d4d3dd1
Test also fixed alphaem
niclaurenti Oct 21, 2022
1c3a2c9
Test all kernel/QEDns
niclaurenti Oct 21, 2022
3123bba
Rename exp_singlet -> exp_matrix_2D and call it in QEDvalence
niclaurenti Oct 24, 2022
8870230
Fix test_kernels_QEDvalence.py
niclaurenti Oct 24, 2022
c662303
Compute ad only once when construct matrices
niclaurenti Oct 26, 2022
7a8cf0c
Merge branch 'develop' into feature/qed-solution
niclaurenti Oct 26, 2022
adcbc8b
Compute pure QCD gammas only once when construct matrices
niclaurenti Oct 26, 2022
cb65ed3
Remove np.complex from beta function in kernels
niclaurenti Oct 26, 2022
d4818ef
Move alphaem_running and aem_list in init
niclaurenti Oct 26, 2022
7a313ab
Move computation of a in init
niclaurenti Oct 26, 2022
9dc116c
Fix test_ev_operator.py
niclaurenti Oct 26, 2022
4432bfd
Revert "Move computation of a in init"
niclaurenti Oct 26, 2022
a8b97c3
Move computation of a in init
niclaurenti Oct 26, 2022
5a1bec3
Speed up QED non singlet running alphaem
niclaurenti Oct 28, 2022
e798b96
Fix bug in last commit
niclaurenti Oct 28, 2022
dde7f55
Move computation of harmonic sums to cache
niclaurenti Oct 28, 2022
795e048
Remove enumerate from QEDsinglet and QEDvalence
niclaurenti Oct 29, 2022
858f606
Fix typo in last commit
niclaurenti Oct 29, 2022
683126b
Simplify exp_matrix
niclaurenti Oct 31, 2022
b342447
Rename QEDsinglet -> singlet_qed and same for non_singlet and valence
niclaurenti Nov 4, 2022
13c31c3
Remove commented function
niclaurenti Nov 4, 2022
aea2002
Rename lo_aem1_exact -> as1_aem1_exact and same for the others
niclaurenti Nov 4, 2022
9b61d4d
Change docstring in exp_matrix_2D
niclaurenti Nov 4, 2022
12a5888
remove else from choose_ns_ad_aem1
niclaurenti Nov 4, 2022
f7a3893
Rename as1_aem1_exact -> as1aem1_exact and same for the others
niclaurenti Nov 4, 2022
64b0de1
Further simplify exp_matrix
niclaurenti Nov 4, 2022
1092f99
Revert "Further simplify exp_matrix"
niclaurenti Nov 5, 2022
d3281df
Fix typo in extras/qed_matching/matching_and_rotation.tex
niclaurenti Nov 14, 2022
285d65a
Add alphaem_running to runcard
niclaurenti Nov 14, 2022
8dc594d
Merge branch 'develop' into feature/qed-solution
niclaurenti Nov 15, 2022
476211e
Fix typos
niclaurenti Nov 28, 2022
f166988
Refactor expanded scale variations for QED
niclaurenti Nov 28, 2022
a864772
Refactor exponentiated QED scale var
niclaurenti Nov 28, 2022
ad48509
Change raise in singlet_qed and valence_qed
niclaurenti Nov 28, 2022
9cf11e6
Remove if condition
niclaurenti Nov 29, 2022
672be8c
Remove unnecessary if
niclaurenti Nov 29, 2022
726793f
Change docstring in the QED gammas
niclaurenti Nov 29, 2022
67aa5d3
Split evolution integrals for qed
niclaurenti Nov 29, 2022
7bd5a63
Rename gamma_QEDsinglet -> gamma_singlet_qed
niclaurenti Nov 29, 2022
d8e2dca
Refactor calls to quad_ker
niclaurenti Nov 29, 2022
2ca09f9
Fix docstrings in anomalous dimensions
niclaurenti Nov 29, 2022
c825451
Rename qed scale variations
niclaurenti Nov 29, 2022
6c0062d
Enforce numpy docstring stile in anomalous_dimentsions
niclaurenti Dec 1, 2022
edd9fc1
Enforce numpy docstring stile in evolution operator
niclaurenti Dec 1, 2022
33569de
Enforce numpy docstring stile in kernels
niclaurenti Dec 1, 2022
dd59784
Enforce numpy docstring stile in constants
niclaurenti Dec 1, 2022
6b377af
Change raise error in coupling
niclaurenti Dec 1, 2022
14477f9
Fix test_couplings
niclaurenti Dec 1, 2022
88e7284
Remove TODO
niclaurenti Dec 6, 2022
197f323
Add TODO in the as2 anomalous dimensions
niclaurenti Dec 6, 2022
378d5ff
Improve flavors doc
felixhekhorn Dec 6, 2022
94048a4
Add explicit flav tests
felixhekhorn Dec 6, 2022
b1a4dfb
Add documentation on qed matching and basis rotation
niclaurenti Dec 7, 2022
99772ee
Merge branch 'feature/qed-solution' of github.com:NNPDF/eko into feat…
niclaurenti Dec 7, 2022
1e56cbf
Remove unnecessary if statements
niclaurenti Dec 11, 2022
d153d18
Merge branch 'develop' into feature/qed-solution
niclaurenti Jan 9, 2023
25970c7
Rename Qedref QrefQED
niclaurenti Jan 9, 2023
6a125d7
Fix typo in betaQCD in kernels
niclaurenti Jan 10, 2023
9965955
Make beta dimension depend on order
niclaurenti Jan 10, 2023
3ee4fee
Fix tests
niclaurenti Jan 10, 2023
20fa8ed
Collect charge factors in one function
niclaurenti Jan 11, 2023
e04bce3
Reorganize evolution integrals
niclaurenti Jan 11, 2023
f5d9d8e
Add e2delta to charge_combinations
niclaurenti Jan 11, 2023
50f8698
Add documentation for unified_evol_basis_pids
niclaurenti Jan 11, 2023
c043cca
Raise error symmetricaly
felixhekhorn Jan 12, 2023
b98f932
Improve docstrings of evoluton_integrals
niclaurenti Jan 17, 2023
d63e2e5
Fix docstrings
niclaurenti Jan 17, 2023
55b495a
Change definitions of evolution_integrals
niclaurenti Jan 17, 2023
c30c7ac
Fix docstrings
niclaurenti Jan 17, 2023
781a16f
Fix again docstrings
niclaurenti Jan 17, 2023
610976a
Upgrade notation in docstrings
niclaurenti Jan 17, 2023
7eeaafc
Add math: ecc
niclaurenti Jan 17, 2023
adf9059
Refactor tests in evvolution_operator/test_init
niclaurenti Jan 30, 2023
8d42996
Change integration in QED sector for ns
niclaurenti Feb 2, 2023
8fc68ec
Add missing arguments
niclaurenti Feb 2, 2023
fdbe3ef
Refactor ns_qed kernels
niclaurenti Feb 7, 2023
6a5adba
Make vec_alphaem complex
niclaurenti Feb 7, 2023
1d1c1f3
Add dtype
niclaurenti Feb 7, 2023
bfef43c
Merge branch 'master' into feature/qed-solution
niclaurenti Feb 16, 2023
3e09e60
Fixing tests
niclaurenti Feb 18, 2023
e2ca2bd
Fix tests
niclaurenti Feb 19, 2023
a2b3b1e
Fix tests again
niclaurenti Feb 19, 2023
e097178
Add case dim=2 to exp_matrix
niclaurenti Feb 22, 2023
d5523e9
Fix test ekore/anomalous_dimensions/unpolarized/space_like/test_init.py
niclaurenti Feb 22, 2023
8d5a1eb
Simplify non_singlet_qed running alpha
niclaurenti Feb 23, 2023
dc5a2fb
Change test for 2D matrix
niclaurenti Feb 23, 2023
7cf0c07
Merge branch 'master' into feature/qed-solution
niclaurenti Feb 23, 2023
25e97d4
Restructure function compute_aem_list
niclaurenti Feb 23, 2023
429b243
Fix FakeCoupling
niclaurenti Feb 23, 2023
01af00e
Clean couplings.py
niclaurenti Feb 23, 2023
66cce52
Restore expanded scale variations for qed
niclaurenti Feb 23, 2023
e21fbaf
Fix typo
niclaurenti Feb 23, 2023
57f3356
Update docstrings in non_singlet
niclaurenti Feb 24, 2023
bd9ef19
Update docstrings in 'singlet' sectors
niclaurenti Feb 24, 2023
aa532e3
Update docstring in couplings
niclaurenti Feb 24, 2023
e998a08
Update docstrings in evolution_operator/__init__
niclaurenti Feb 24, 2023
b41102d
Remove useless import
niclaurenti Feb 27, 2023
8de99a2
Update documentation
niclaurenti Feb 28, 2023
9599f07
move evolution_integral-qed into extras
niclaurenti Mar 2, 2023
ba63d10
Fix bug in alphaem running
niclaurenti Mar 2, 2023
314d769
Put a_half to zero for QCD evol
niclaurenti Mar 2, 2023
96ef6fd
Fix last commit
niclaurenti Mar 2, 2023
c62e6a2
Fix test
niclaurenti Mar 2, 2023
166b036
Fix bug in kernels/non_sing_qed
niclaurenti Mar 3, 2023
47d46ce
Merge branch 'feature/qed-solution' of github.com:NNPDF/eko into feat…
niclaurenti Mar 3, 2023
01a103f
Remove call to exp_matrix_2D in exp_matrix
niclaurenti Mar 9, 2023
83e553b
Add brief docstring to compute_aem_list
niclaurenti Mar 9, 2023
e53f7b4
Fix broken test
niclaurenti Mar 9, 2023
e18b644
Add QrefQED to benchmarks
niclaurenti Mar 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion benchmarks/CT18_bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,29 @@ def benchmark_nnlo(self, Q0=1.295, Q2grid=(1e4,)):
]
self.run([theory_card], [operator_card], ["CT18NNLO"])

def benchmark_nnlo_qed(self, Q0=1.295, Q2grid=(1e4,)):
theory_card = base_theory.copy()
theory_card.update(
{
"alphas": 0.118000,
"alphaqed": 0.007496,
"PTO": 2,
"QED": 1,
"Q0": Q0,
"MaxNfPdf": 5,
"MaxNfAs": 5,
"alphaem_running": True,
}
)
operator_card = {"Q2grid": list(Q2grid)}
self.skip_pdfs = lambda _theory: [
-6,
6,
"Tu8",
"Vu8",
]
self.run([theory_card], [operator_card], ["CT18qed"])

def benchmark_znnlo(self, Q0=1.3, Q2grid=(1e4,)):
theory_card = base_theory.copy()
theory_card.update(
Expand Down Expand Up @@ -81,4 +104,4 @@ def benchmark_znnlo(self, Q0=1.3, Q2grid=(1e4,)):

if __name__ == "__main__":
b = BenchmarkCT18()
b.benchmark_nnlo()
b.benchmark_nnlo_qed()
35 changes: 33 additions & 2 deletions benchmarks/NNPDF_bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,35 @@ def benchmark_nlo(self, Q0=1.65, Q2grid=(100,)):
self.run([theory_card], [operator_card], ["NNPDF31_nlo_as_0118"])


class BenchmarkNNPDF31_luxqed(BenchmarkNNPDF):
"""Benchmark NNPDF3.1_luxqed"""

def benchmark_nnlo(self, Q0=1.65, Q2grid=(100,)):
theory_card = {
**base_theory,
"PTO": 2,
"QED": 2,
"Q0": Q0,
}
theory_card.update(
{"ModEv": "iterate-exact", "FNS": "VFNS", "alphaem_running": True}
)

self.skip_pdfs = lambda _theory: [
-6,
6,
"Tu8",
"Vu8",
]

operator_card = {
**base_operator,
"Q2grid": list(Q2grid),
"ev_op_iterations": 10,
}
self.run([theory_card], [operator_card], ["NNPDF31_nnlo_as_0118_luxqed"])


class BenchmarkNNPDF40(BenchmarkNNPDF):
"""Benchmark NNPDF4.0"""

Expand Down Expand Up @@ -98,6 +127,8 @@ def benchmark_nnlo(self, Q0=1.65, Q2grid=(100,)):
# nn31.benchmark_nlo(Q0=np.sqrt(low2), Q2grid=[10])
# # test backward
# #nn31.benchmark_nlo(Q0=np.sqrt(high2), Q2grid=[low2])
nn40 = BenchmarkNNPDF40()
nn31qed = BenchmarkNNPDF31_luxqed()
nn31qed.benchmark_nnlo()
# nn40 = BenchmarkNNPDF40()
# nn40.benchmark_nnlo(Q2grid=[100])
nn40.benchmark_nnlo(Q0=np.sqrt(high2), Q2grid=[low2])
# nn40.benchmark_nnlo(Q0=np.sqrt(high2), Q2grid=[low2])
129 changes: 127 additions & 2 deletions benchmarks/apfel_bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,12 +187,137 @@ def benchmark_sv(self, pto, svmode):
self.run(ts, operators.build(operators.apfel_config), ["ToyLH"])


class BenchmarkFFNS_qed(ApfelBenchmark):
"""Benckmark FFNS"""

ffns_theory = {
"Qref": 91.1870,
"mc": 1.3,
"mb": 4.75,
"mt": 172.0,
"FNS": "FFNS",
"ModEv": [
"EXA",
# "EXP",
# "TRN",
],
"NfFF": 5,
"kcThr": 0.0,
"kbThr": 0.0,
"ktThr": np.inf,
"Q0": 5.0,
"alphas": 0.118000,
"alphaqed": 0.007496,
"alphaem_running": True,
}
ffns_theory = tolist(ffns_theory)

def benchmark_plain(self, pto, qed):
"""Plain configuration"""

th = self.ffns_theory.copy()
th.update({"PTO": [pto], "QED": [qed]})
self.skip_pdfs = lambda _theory: [
-6,
6,
"Tu8",
"Vu8",
]
self.run(
cartesian_product(th),
operators.build(operators.apfel_config),
["NNPDF31_nnlo_as_0118_luxqed"],
)

def benchmark_sv(self, pto, qed, svmode):
"""Scale Variation"""

ts = []
th = self.ffns_theory.copy()
th.update(
{
"PTO": [pto],
"QED": [qed],
"XIR": [np.sqrt(0.5)],
"fact_to_ren_scale_ratio": [np.sqrt(2.0)],
"ModSV": [svmode],
"EScaleVar": [0],
}
)
ts.extend(cartesian_product(th))
th = self.ffns_theory.copy()
th.update(
{
"PTO": [pto],
"QED": [qed],
"XIR": [np.sqrt(2.0)],
"fact_to_ren_scale_ratio": [np.sqrt(0.5)],
"ModSV": [svmode],
"EScaleVar": [0],
}
)
ts.extend(cartesian_product(th))
self.skip_pdfs = lambda _theory: [
-6,
6,
"Tu8",
"Vu8",
]
self.run(ts, operators.build(operators.apfel_config), ["ToyLH"])


class BenchmarkVFNS_qed(ApfelBenchmark):
"""Benckmark FFNS"""

vfns_theory = {
"Qref": 91.1870,
"mc": 1.3,
"mb": 4.75,
"mt": 172.0,
"FNS": "VFNS",
"ModEv": [
"EXA",
# "EXP",
# "TRN",
],
"kcThr": 1.0,
"kbThr": 1.0,
"ktThr": 1.0,
"Q0": 1.25,
"alphas": 0.118000,
"alphaqed": 0.007496,
"alphaem_running": True,
}
vfns_theory = tolist(vfns_theory)

def benchmark_plain(self, pto, qed):
"""Plain configuration"""

th = self.vfns_theory.copy()
th.update({"PTO": [pto], "QED": [qed]})
self.skip_pdfs = lambda _theory: [
-6,
6,
"Tu8",
"Vu8",
]
self.run(
cartesian_product(th),
operators.build(operators.apfel_config),
["NNPDF31_nnlo_as_0118_luxqed"],
)


if __name__ == "__main__":

obj = BenchmarkVFNS()
# obj = BenchmarkVFNS()
# obj = BenchmarkFFNS()

# obj.benchmark_plain(2)
obj.benchmark_sv(2, "exponentiated")
# obj.benchmark_sv(2, "exponentiated")
# obj.benchmark_kthr(2)
# obj.benchmark_msbar(2)

# obj = BenchmarkFFNS_qed()
obj = BenchmarkVFNS_qed()
obj.benchmark_plain(2, 2)
2 changes: 1 addition & 1 deletion doc/source/theory/DGLAP.rst
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ Here the strategies are:
- for ``method in ['iterate-exact', 'iterate-expanded']`` we use a discretized path-ordering :cite:`Bonvini:2012sh`:

.. math::
\ESk{1}{a_s}{a_s^0} = \prod\limits_{k=n}^{0} \ESk{1}{a_s^{k+1}}{a_s^{k}}\quad \text{with} a_s^{n+1} = a_s
\ESk{1}{a_s}{a_s^0} = \prod\limits_{k=n}^{0} \ESk{1}{a_s^{k+1}}{a_s^{k}}\quad \text{with}\quad a_s^{n+1} = a_s

where the order of the product is such that later |EKO| are to the left and

Expand Down
9 changes: 9 additions & 0 deletions extras/qed_matching/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
all: matching_and_rotation.pdf

%.pdf: %.tex
pdflatex $<

clean:
rm -f *.aux
rm -f *.log
rm -f *.pdf
141 changes: 141 additions & 0 deletions extras/qed_matching/matching_and_rotation.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
\documentclass[a4paper,oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}

%\usepackage[a4paper,top=3cm,bottom=3cm,left=3cm,right=3cm]{geometry}
\usepackage[a4paper,top=1.5cm,bottom=1.5cm,left=1.5cm,right=1.5cm]{geometry}


\title{Matching and Basis Rotation for the Intrinsic Unified Evolution Basis}
\author{Niccolò Laurenti}

\date{}

\begin{document}

\maketitle

In this document we will explain how the matching and the basis rotation are performed in the Intrinsic Unified Evolution Basis.

\section{Matching}
Fist of all, we have to perform the matching between the basis vectors in the two different flavor schemes, i.e.\ the $n_f$ and the $n_f+1$ flavor schemes. The matching of the gluon, light quark and heavy quark PDFs are the followings:
\begin{align*}
g^{(n_f+1)}&=A^S_{gg}g^{(n_f)}+A^S_{gq}\Sigma^{(n_f)}_{(n_f)}+A^S_{gH}h^{(n_f)} \\
l^{(n_f+1)} &= A^{ns}_{qq} l^{(n_f)} + {1\over2n_f} A^S_{qg}g^{(n_f)} \quad \text{and the same for $\bar{l}$}\\
h^{(n_f+1)} &= {1\over2} A^{S}_{Hg} g^{(n_f)}_{(n_f)}+ {1\over2} A^{ps}_{Hq} \Sigma^{(n_f)}_{(n_f)} + A_{HH}h^{(n_f)} \quad \text{and the same for $\bar{h}$}
\end{align*}
From the second relation we get that
\begin{align*}
l^{(n_f+1)}_+ &= A^{ns}_{qq} l^{(n_f)}_+ + {1\over n_f} A^S_{qg}g^{(n_f)} \\
l^{(n_f+1)}_- &= A^{ns}_{qq} l^{(n_f)}_- \\
\Sigma^{(n_f+1)}_{(n_f)}&=A^S_{qg}g^{(n_f)}+A^{ns}_{qq}\Sigma^{(n_f)}_{(n_f)} \\
V^{(n_f+1)}_{(n_f)}&=A^{ns}_{qq}V^{(n_f)}_{(n_f)}
\end{align*}
while from the third relation we get that
\begin{align*}
h^{(n_f+1)}_+ &= A^{S}_{Hg} g^{(n_f)}_{(n_f)}+A^{ps}_{Hq} \Sigma^{(n_f)}_{(n_f)} + A_{HH}h^{(n_f)}_+ \\
h^{(n_f+1)}_- &= A_{HH}h^{(n_f)}_-
\end{align*}
The matching of the components $\Sigma_{\Delta(n_f)}$, $V_{\Delta(n_f)}$, $T_i$, $V_i$ are diagonal. For the $V$s this is trivial since they are composed by $l_-$. For $\Sigma_{\Delta(n_f)}$ instead: being it defined as
\begin{align*}
\Sigma^{(n_f+1)}_{\Delta(n_f)} & = \frac{n_d(n_f)}{n_u(n_f)} \sum_{i=1}^{n_u} u_{+\,i}^{(n_f+1)} - \sum_{i=1}^{n_d} d_{+\,i}^{(n_f+1)}
\end{align*}
the gluon contribution cancels, giving the relation
\begin{equation*}
\Sigma^{(n_f+1)}_{\Delta(n_f)}=A^{ns}_{qq}\Sigma^{(n_f)}_{\Delta(n_f)}
\end{equation*}
The same holds for the $T_i$ components.

Observe that this holds up to NNLO, since that at N$^3$LO we have to consider also the pure singlet components of the light quark matching (I think that we have to add $\frac{1}{2n_f}A^{ps}_{qq}\Sigma^{nf}_{(nf)}$ to the matching of $l^{(n_f+1)}$, but I'm not 100\% sure. In this way the matching of $l_-$ remains diagonal, as it should be, and the same hold for $\Sigma_{\Delta(n_f)}$ and $T_i$).

Up to second order the perturbative expansion of the matching terms is given by
\begin{align*}
A^S_{gg} & = 1+ a_s A^{S(1)}_{gg} + a_s^2 A^{S(2)}_{gg} \\
A^S_{gq} & = 1+ a_s^2 A^{S(2)}_{gq} \\
A^S_{gH} & = 1+ a_s A^{S(1)}_{gH} \\
A^S_{qg} & = 1 \\
A^{ns}_{qq} &= 1+ a_s^2 A^{ns(1)}_{qq} \\
A^S_{Hg} & = 1+ a_s A^{S(1)}_{Hg} + a_s^2 A^{S(2)}_{Hg} \\
A^{ps}_{Hq} & = 1+ a_s^2 A^{ps(2)}_{Hq} \\
A_{HH} & = 1+ a_s A^{(2)}_{HH}
\end{align*}

\section{Basis Rotation}

After the matching we have to perform the basis rotation from the basis with $\Sigma_{(n_f)}^{(n_f+1)}$, $\Sigma_{\Delta(n_f)}^{(n_f+1)}$, $h_+^{(n_f+1)}$ to the basis with $\Sigma_{(n_f+1)}^{(n_f+1)}$, $\Sigma_{\Delta(n_f+1)}^{(n_f+1)}$, $T_i^{(n_f+1)}$ (all the considerations that we will do for this basis rotation apply identically to the components $V$, $V_\Delta$, $h_-$, $V_i$). Being all the PDFs in the $n_f+1$ flavor scheme, from now on we will drop the superscript $(n_f+1)$.

\subsection{$\Sigma$}
For the $\Sigma$ component the basis rotation is very simple, being
\begin{equation*}
\Sigma_{(n_f+1)}=\Sigma_{(n_f)}+h_+
\end{equation*}
\subsection{$\Sigma_{\Delta}$}
This component requires a bit more work: starting from
\begin{equation*}
\begin{cases}
\Sigma &= \Sigma_u+\Sigma_d \\
\Sigma_{\Delta} &= \frac{n_d}{n_u}\Sigma_u-\Sigma_d
\end{cases}
\end{equation*}
we obtain that
\begin{equation*}
\begin{cases}
\Sigma_u &= \frac{n_u}{n_f}\Bigl(\Sigma+\Sigma_{\Delta} \Bigr)\\
\Sigma_d &= \frac{n_d}{n_f}\Sigma-\frac{n_u}{n_f}\Sigma_{\Delta}
\end{cases}
\end{equation*}

Therefore, we find
\begin{align*}
\Sigma_{\Delta(n_f+1)} &= \frac{n_d(n_f+1)}{n_u(n_f+1)}\Sigma_{u(n_f)} - \Sigma_{d(n_f)} + k(n_f) h_+
\end{align*}
where
\begin{equation*}
k(n_f) =
\begin{cases}
\frac{n_d(n_f+1)}{n_u(n_f+1)} \quad \text{if h=up-like}\\
-1 \quad \text{if h=down-like}
\end{cases}
\end{equation*}

In the end we find that
\begin{align*}
\Sigma_{\Delta(n_f+1)} &= \frac{1}{n_f}\Bigl(\frac{n_d(n_f+1)}{n_u(n_f+1)}n_u(n_f)-n_d(n_f)\Bigr)\Sigma_{(n_f)} + \frac{n_f+1}{n_u(n_f+1)}\frac{n_u(n_f)}{n_f}\Sigma_{\Delta(n_f)} + k(n_f) h_+
\end{align*}

\subsection{$T_i$}
In the end, we have to find the rotation for the $T_i$ component: being
\begin{align*}
T_3^d &=d^+ - s^+ = \Sigma_{d(n_f)} - h_+\quad \text{for $n_f=3$}\\
T_3^u &=u^+ - c^+ =\Sigma_{u(n_f)} - h_+\quad \text{for $n_f=4$}\\
T_8^d &=d^+ + s^+ - 2b^+ =\Sigma_{d(n_f)} - 2h_+\quad \text{for $n_f=5$}\\
T_8^u &=u^+ + c^+ - 2t^+ =\Sigma_{u(n_f)} - 2h_+\quad \text{for $n_f=6$}
\end{align*}

Using the expressions of $\Sigma_u$ and $\Sigma_d$ as a function of $\Sigma$ and $\Sigma_\Delta$, we can write that
\begin{equation*}
T_i = f_1(n_f) \Sigma_{(n_f)} + f_2(n_f)\Sigma_{\Delta(n_f)} + f_3(n_f)h_+
\end{equation*}
with
\begin{align*}
f_1(n_f) &=
\begin{cases}
&\frac{n_u(n_f)}{n_f} \quad \text{if $h$ is up-like ($n_f$=3,5)} \\
&\frac{n_d(n_f)}{n_f} \quad \text{if $h$ is down-like ($n_f$=2,4)}
\end{cases} \\
f_2(n_f) &=
\begin{cases}
&\frac{n_u(n_f)}{n_f} \quad \text{if $h$ is up-like} \\
&-\frac{n_u(n_f)}{n_f} \quad \text{if $h$ is down-like}
\end{cases} \\
f_3(n_f) &=
\begin{cases}
&-1\quad \text{if $h$ is $s$, $c$ ($n_f$=2,3)} \\
&-2 \quad \text{if $h$ is $b$, $t$ ($n_f$=4,5)}
\end{cases}
\end{align*}

\end{document}
Loading