Esempio n. 1
0
#!/usr/bin/env python3
import pySecDec as psd

if __name__ == "__main__":

    li = psd.LoopIntegralFromGraph(internal_lines=[[0, [1, 2]], [0, [2, 5]],
                                                   [0, [1, 6]], ['mt', [3, 5]],
                                                   ['mt', [3, 6]],
                                                   ['mt', [4, 5]],
                                                   ['mt', [4, 6]]],
                                   external_lines=[['p1', 1], ['p2', 2],
                                                   ['p3', 3], ['p4', 4]],
                                   replacement_rules=[
                                       ('p1*p1', 0), ('p2*p2', 0),
                                       ('p3*p3', 'mH2'), ('p4*p4', 'mZ2'),
                                       ('mt*mt', 'mt2'), ('p1*p2', 's12/2'),
                                       ('p2*p3', '(s23-mH2)/2'),
                                       ('p1*p3', '(-s12-s23+mZ2)/2'),
                                       ('p3*p4', '(s12-mH2-mZ2)/2'),
                                       ('p1*p4', '(s23-mZ2)/2'),
                                       ('p2*p4', '(-s12-s23+mH2)/2')
                                   ])

    Mandelstam_symbols = ['s12', 's23']
    mass_symbols = ['mt2', 'mH2', 'mZ2']

    psd.loop_package(
        name='hz2L_nonplanar',
        loop_integral=li,
        real_parameters=Mandelstam_symbols + mass_symbols,
Esempio n. 2
0
#!/usr/bin/env python3

import pySecDec as psd

if __name__ == "__main__":

    # Example 6 of Bernd Jantzen (arXiv:1111.2589)

    # replace Qsq by one and add the Qsq prefactor later to factorize Qsq out
    li = psd.LoopIntegralFromGraph(internal_lines=[['0', [1,
                                                          3]], ['0', [2, 3]],
                                                   ['m', [1, 2]]],
                                   external_lines=[['p1', 1], ['p2', 2],
                                                   ['p3', 3]],
                                   replacement_rules=[
                                       ('p1*p1', '0'),
                                       ('p2*p2', '0'),
                                       ('p3*p3', '-Qsq'),
                                       ('m**2', 't*Qsq'),
                                       ('Qsq', '1'),
                                   ])

    # find the regions
    generators_args = psd.loop_regions(
        name='formfactor1L_massive_ebr',
        loop_integral=li,
        smallness_parameter='t',
        expansion_by_regions_order=0,
        decomposition_method='geometric',
        additional_prefactor=f"Qsq**({li.exponent_F})",
        add_monomial_regulator_power="n",
Esempio n. 3
0
#!/usr/bin/env python3

import pySecDec as psd

if __name__ == "__main__":

    # this object represents the Feynman graph
    li = psd.LoopIntegralFromGraph(internal_lines=[['m', [1, 2]],
                                                   ['m', [2, 1]]],
                                   external_lines=[['p', 1], ['p', 2]],
                                   replacement_rules=[('p*p', 's'),
                                                      ('m*m', 'msq')])

    # find the regions and expand the integrals using expansion by regions
    regions_generator_args = psd.loop_regions(name='bubble1L_ebr_small_mass',
                                              loop_integral=li,
                                              smallness_parameter='msq',
                                              expansion_by_regions_order=2)

    # generate code that will calculate the sum of all regions and all orders in
    # the smallness parameter
    psd.sum_package('bubble1L_ebr_small_mass',
                    regions_generator_args,
                    regulators=['eps'],
                    requested_orders=[0],
                    real_parameters=['s', 'msq'],
                    complex_parameters=[])
Esempio n. 4
0
#!/usr/bin/env python3
import pySecDec as psd

if __name__ == "__main__":

    li = psd.LoopIntegralFromGraph(
    internal_lines = [ [0,[1,2]], [0,[1,4]], [0,[1,5]], [0,[2,4]], [0,[2,5]], [0,[3,4]], [0,[3,5]] ],
    external_lines = [['p1',1],['p2',2],['p3',3]],
    powerlist=[1,1,1,1,1,1,1],

    replacement_rules = [
                            ('p1*p1',0),
                            ('p2*p2',0),
                            ('p3*p3','s'),
                            ('p1*p2','s/2'),
                            ('p2*p3','-s/2'),
                            ('p1*p3','-s/2'),
                ('s',-1)
                        ]
    )


    Mandelstam_symbols = []
    mass_symbols = []


    psd.loop_package(

    name = 'triangle3L',

    loop_integral = li,
Esempio n. 5
0
#!/usr/bin/env python3

import pySecDec as psd

if __name__ == "__main__":

    # Section 3.1 (Method of Regions for the Sudakov form factor) of Thomas Becher (arXiv:1803.04310)
    # use relative dimensionless parameters Psqr and Lsqr, which should be roughly of order one
    # replace Qsq with one and add the Qsq prefactor later to factorize Qsq out
    li = psd.LoopIntegralFromGraph(
        internal_lines = [['0',[1,3]],['0',[2,3]],['0',[1,2]]],
        external_lines = [['p1',1],['p2',2],['p3',3]],
        replacement_rules = [
                            ('p3*p3', '-Qsq'),
                            ('p1*p1', '-t*Psqr*Qsq'),
                            ('p2*p2', '-t*Lsqr*Qsq'),
                            ("Qsq", 1),
                            ],
    )

    # find the regions
    generators_args = psd.loop_regions(
        name = 'formfactor1L_massless_ebr',
        loop_integral=li,
        smallness_parameter = 't',
        expansion_by_regions_order=0,
        additional_prefactor=f"Qsq**({li.exponent_F})",
        )

    # write the code to sum up the regions
    psd.sum_package('formfactor1L_massless_ebr',
Esempio n. 6
0
if __name__ == "__main__":

    li = psd.LoopIntegralFromGraph(internal_lines=[[0, [1, 2]], [0, [2, 6]],
                                                   [0, [6, 3]], [0, [3, 4]],
                                                   [0, [4, 5]], [0, [5, 7]],
                                                   [0, [7, 1]], [0, [7, 6]]],
                                   external_lines=[['p1', 1], ['p2', 2],
                                                   ['p3', 3], ['p4', 4],
                                                   ['p5', 5]],
                                   dimensionality='6-2*eps',
                                   replacement_rules=[
                                       ('p1*p1', 0),
                                       ('p2*p2', 0),
                                       ('p3*p3', 0),
                                       ('p4*p4', 0),
                                       ('p5*p5', 0),
                                       ('p1*p2', 's12/2'),
                                       ('p1*p3', '(s45-s12-s23)/2'),
                                       ('p1*p4', '(s23-s51-s45)/2'),
                                       ('p1*p5', 's51/2'),
                                       ('p2*p3', 's23/2'),
                                       ('p2*p4', '(-s23-s34+s51)/2'),
                                       ('p2*p5', '(s34-s12-s51)/2'),
                                       ('p3*p4', 's34/2'),
                                       ('p3*p5', '(s12-s34-s45)/2'),
                                       ('p4*p5', 's45/2'),
                                   ])

    Mandelstam_symbols = ['s12', 's23', 's34', 's45', 's51']
    mass_symbols = []
Esempio n. 7
0
#!/usr/bin/env python3
import pySecDec as psd

if __name__ == "__main__":

    li = psd.LoopIntegralFromGraph(
    internal_lines = [['m',[1,2]],[0,[2,3]],[0,[3,4]],[0,[4,1]]],
    external_lines = [['p1',1],['p2',2],['p3',3],['p4',4]],

    replacement_rules = [
                            ('p1*p1', 's1'),
                            ('p2*p2', 0),
                            ('p3*p3', 0),
                            ('p4*p4', 0),
                            ('p3*p2', 't/2'),
                            ('p1*p2', 's/2-s1/2'),
                            ('p1*p4', 't/2-s1/2'),
                            ('p2*p4', 's1/2-t/2-s/2'),
                            ('p3*p4', 's/2'),
                            ('m**2', 'msq')
                        ]
    )

    Mandelstam_symbols = ['s','t','s1']
    mass_symbols = ['msq']

    psd.loop_package(

    name = 'box1L',

    loop_integral = li,
Esempio n. 8
0
#!/usr/bin/env python3
import sympy as sp
import pySecDec as psd

if __name__ == "__main__":

    li = psd.LoopIntegralFromGraph(
    internal_lines = [[0,[1,4]],[0,[4,2]],[0,[2,5]],[0,[5,6]],[0,[6,7]],[0,[7,3]],[0,[3,8]],[0,[8,4]],[0,[1,9]],[0,[9,7]],[0,[9,5]],[0,[6,8]]],
    external_lines = [['p1',1],['p2',2],['p3',3]],
    powerlist=[2,1,1,1,1,1,1,1,1,2,1,1],
    dimensionality='6-2*eps',
    replacement_rules = [
                            ('p1*p1',-1),
                            ('p2*p2',0),
                            ('p3*p3','0'),
                            ('p1*p2','1/2'),
                            ('p2*p3','-1/2'),
                            ('p1*p3','1/2')
                        ]
    )


    Mandelstam_symbols = []
    mass_symbols = []


    psd.loop_package(

    name = 'formfactor4L',

    loop_integral = li,
Esempio n. 9
0
#!/usr/bin/env python3
import pySecDec as psd

if __name__ == "__main__":

    li = psd.LoopIntegralFromGraph(internal_lines=[[0, [1, 2]], [0, [1, 3]],
                                                   [0, [2, 3]], [0, [2, 5]],
                                                   [0, [5, 6]], [0, [6, 3]],
                                                   [0, [6, 7]], [0, [5, 7]],
                                                   [0, [7, 4]], [0, [4, 7]],
                                                   [0, [4, 3]], [0, [4, 1]]],
                                   external_lines=[['p', 1], ['p', 2]],
                                   replacement_rules=[('p*p', '-1')])

    psd.loop_package(
        name='bubble6L',
        loop_integral=li,

        # the highest order of the final epsilon expansion --> change this value to whatever you think is appropriate
        requested_orders=[0],

        # the optimization level to use in FORM (can be 0, 1, 2, 3, 4)
        form_optimization_level=4,

        # the WorkSpace parameter for FORM
        form_work_space='2G',

        # the method to be used for the sector decomposition
        # valid values are ``iterative`` or ``geometric`` or ``geometric_ku``
        decomposition_method='geometric',
        # if you choose ``geometric[_ku]`` and 'normaliz' is not in your
Esempio n. 10
0
                continue
            if index == len(smallness_parameters) - 1:
                print(bcolors.ENDC)
            expand_integrals(generators_args,
                             smallness_parameters,
                             index + 1,
                             common_args=common_args)


if __name__ == "__main__":

    # Formfactor1L
    name = 'formfactor1L_massless_ebr'
    smallness_parameters = ['t']
    internal_lines = [['0', [1, 3]], ['0', [2, 3]], ['0', [1, 2]]]
    external_lines = [['p1', 1], ['p2', 2], ['p3', 3]]
    li = psd.LoopIntegralFromGraph(
        internal_lines=internal_lines,
        external_lines=external_lines,
        replacement_rules=[
            ('p3*p3', '-Qsq'),
            ('p1*p1', '-t*P1sqr*Qsq'),
            ('p2*p2', '-t*P2sqr*Qsq'),
            ('Qsq', 1),
        ],
    )
    # (Optional) Draw diagrams
    # psd.loop_integral.draw.plot_diagram(internal_lines,external_lines,name)

    expand_integral(li, smallness_parameters)