Esempio n. 1
0
    def evaluate_kernel(self, zs, kTs, parent):

        # Retrieve the collinear variables
        z = zs[0]
        kT = kTs[0]
        # Instantiate the structure of the result
        evaluation = utils.SubtractionCurrentEvaluation({
            'spin_correlations': [
                None,
                ((parent, (kT, )), ),
            ],
            'color_correlations': [None],
            'values': {
                (0, 0): {
                    'finite': None
                },
                (1, 0): {
                    'finite': None
                },
            }
        })
        # The line below implements the g_{\mu\nu} part of the splitting kernel.
        # Notice that the extra longitudinal terms included in the spin-correlation 'None'
        # from the relation:
        #    \sum_\lambda \epsilon_\lambda^\mu \epsilon_\lambda^{\star\nu}
        #    = g^{\mu\nu} + longitudinal terms
        # are irrelevant because Ward identities evaluate them to zero anyway.
        # WARNING multiplied by two because of flavor factors
        evaluation['values'][(0, 0)]['finite'] = 2. * self.TR
        evaluation['values'][(
            1, 0)]['finite'] = 2. * 4. * self.TR * z * (1. - z) / kT.square()
        return evaluation
Esempio n. 2
0
    def evaluate_kernel(self, xs, kTs, parent):

        # Retrieve the collinear variable x
        x = xs[0]

        # Instantiate the structure of the result
        evaluation = utils.SubtractionCurrentEvaluation({
            'spin_correlations': [None],
            'color_correlations': [None],
            'values': {
                (0, 0): {
                    'finite': None
                }
            }
        })

        # The factor 'x' that should be part of the initial_state_crossing_factor cancels
        # against the extra prefactor 1/x in the collinear factorisation formula
        # (see Eq. (8) of NNLO compatible NLO scheme publication arXiv:0903.1218v2)
        initial_state_crossing_factor = 1.
        # Correct for the ratio of color-averaging factor between the real ME
        # initial state flavor (gluon) and the one of the reduced Born ME (quark)
        initial_state_crossing_factor *= (self.NC / float(self.NC**2 - 1))

        z = 1. / x

        norm = initial_state_crossing_factor * self.CF
        # We re-use here the Altarelli-Parisi Kernel of the P_gq final state kernel without
        # the soft-subtractio term 2./z since the gluon is here in the initial state
        evaluation['values'][(0, 0)]['finite'] = norm * (1. + (1. - z)**2) / z

        return evaluation
Esempio n. 3
0
    def evaluate_kernel(self, xs, kTs, parent):

        # Retrieve the collinear variable x
        x = xs[0]
        kT = kTs[0]

        # Instantiate the structure of the result
        evaluation = utils.SubtractionCurrentEvaluation({
            'spin_correlations': [
                None,
                ((parent, (kT, )), ),
            ],
            'color_correlations': [None],
            'values': {
                (0, 0): {
                    'finite': None
                },
                (1, 0): {
                    'finite': None
                },
            }
        })

        # The factor 'x' that should be part of the initial_state_crossing_factor cancels
        # against the extra prefactor 1/x in the collinear factorisation formula
        # (see Eq. (8) of NNLO compatible NLO scheme publication arXiv:0903.1218v2)
        initial_state_crossing_factor = 1.
        # Correct for the ratio of color-averaging factor between the real ME
        # initial state flavor (gluon) and the one of the reduced Born ME (gluon)
        initial_state_crossing_factor *= 1.

        z = 1. / x

        # The line below implements the g_{\mu\nu} part of the splitting kernel.
        # Notice that the extra longitudinal terms included in the spin-correlation 'None'
        # from the relation:
        #    \sum_\lambda \epsilon_\lambda^\mu \epsilon_\lambda^{\star\nu}
        #    = g^{\mu\nu} + longitudinal terms
        # are irrelevant because Ward identities evaluate them to zero anyway.

        # We re-use here the Altarelli-Parisi Kernel of the P_qg final state kernel, including
        # its soft subtraction
        # We must subtract the soft-collinear (CxS *not* SxC) from this contribution:
        # P_gg           = 2.*self.CA * ( (z/(1.-z)) + ((1.-z)/z) )
        # CxS(P_gg)      = 2.*self.CA * ( (z/(1.-z)) )
        # P_gg-CxS(P_gg) = 2.*self.CA * ((1.-z)/z)

        norm = initial_state_crossing_factor * 2. * self.CA
        evaluation['values'][(0, 0)]['finite'] = norm * ((1. - z) / z)
        evaluation['values'][(
            1, 0)]['finite'] = -norm * 2. * z * (1. - z) / kT.square()
        return evaluation
Esempio n. 4
0
    def evaluate_kernel(self, xs, kTs, parent):

        # Retrieve the collinear variable x
        x = xs[0]
        kT = kTs[0]

        evaluation = utils.SubtractionCurrentEvaluation({
            'spin_correlations': [
                None,
                ((parent, (kT, )), ),
            ],
            'color_correlations': [None],
            'values': {
                (0, 0): {
                    'finite': None
                },
                (1, 0): {
                    'finite': None
                },
            }
        })

        # The factor 'x' that should be part of the initial_state_crossing_factor cancels
        # against the extra prefactor 1/x in the collinear factorisation formula
        # (see Eq. (8) of NNLO compatible NLO scheme publication arXiv:0903.1218v2)
        initial_state_crossing_factor = -1.
        # Correct for the ratio of color-averaging factor between the real ME
        # initial state flavor (quark) and the one of the reduced Born ME (gluon)
        initial_state_crossing_factor *= ((self.NC**2 - 1) / float(self.NC))

        z = 1. / x

        # We re-use here the Altarelli-Parisi Kernel of the P_q\bar{q} final state kernel

        # The line below implements the g_{\mu\nu} part of the splitting kernel.
        # Notice that the extra longitudinal terms included in the spin-correlation 'None'
        # from the relation:
        #    \sum_\lambda \epsilon_\lambda^\mu \epsilon_\lambda^{\star\nu}
        #    = g^{\mu\nu} + longitudinal terms
        # are irrelevant because Ward identities evaluate them to zero anyway.

        norm = initial_state_crossing_factor * self.TR
        evaluation['values'][(0, 0)]['finite'] = norm
        evaluation['values'][(
            1, 0)]['finite'] = norm * 4. * z * (1. - z) / kT.square()

        return evaluation
Esempio n. 5
0
    def evaluate_kernel(self, zs, kTs, parent):

        # Retrieve the collinear variables
        z = zs[0]
        kT = kTs[0]
        # Instantiate the structure of the result
        evaluation = utils.SubtractionCurrentEvaluation({
            'spin_correlations': [
                None,
                ((parent, (kT, )), ),
            ],
            'color_correlations': [None],
            'values': {
                (0, 0): {
                    'finite': None
                },
                (1, 0): {
                    'finite': None
                },
            }
        })
        # The line below implements the g_{\mu\nu} part of the splitting kernel.
        # Notice that the extra longitudinal terms included in the spin-correlation 'None'
        # from the relation:
        #    \sum_\lambda \epsilon_\lambda^\mu \epsilon_\lambda^{\star\nu}
        #    = g^{\mu\nu} + longitudinal terms
        # are irrelevant because Ward identities evaluate them to zero anyway.

        # We must subtract the soft-collinear (CxS *not* SxC) from this contribution:
        # P_gg           = 2.*self.CA * ( (1.-z) / z + z / (1.- z) )
        # CxS(P_gg)      = 2.*self.CA * ( (1.-z) / z + z / (1.- z) )
        # SxC(P_gg)      = 2.*self.CA * ( 1 / z + 1 / (1.- z) )
        # P_gg-CxS(P_gg) = 0
        # P_gg-SxC(P_gg) = -4.*self.CA

        evaluation['values'][(0, 0)]['finite'] = -4. * self.CA
        evaluation['values'][(
            1, 0)]['finite'] = -2. * self.CA * 2. * z * (1. - z) / kT.square()
        return evaluation
Esempio n. 6
0
    def evaluate_kernel(self, zs, kTs, parent):

        # Retrieve the collinear variables
        z = zs[0]
        # Instantiate the structure of the result
        evaluation = utils.SubtractionCurrentEvaluation({
            'spin_correlations': [None],
            'color_correlations': [None],
            'values': {
                (0, 0): {
                    'finite': None
                }
            }
        })
        # We must subtract the soft-collinear (CxS *not* SxC) from this contribution:
        # P_gq           = self.CF * ((1.-z)**2 + 1.)/z
        # CxS(P_gq)      = self.CF * 2.*(1.-z) / z
        # SxC(P_gq)      = self.CF * 2. / z
        # P_gq-CxS(P_gq) = self.CF * z
        # P_gq-SxC(P_gq) = self.CF * ((1.-z)**2 - 1.)/z
        evaluation['values'][(0, 0)]['finite'] = self.CF * z
        return evaluation
Esempio n. 7
0
    def evaluate_kernel(self, xs, kTs, parent):

        # Retrieve the collinear variable x
        x = xs[0]

        # Instantiate the structure of the result
        evaluation = utils.SubtractionCurrentEvaluation({
            'spin_correlations': [None],
            'color_correlations': [None],
            'values': {
                (0, 0): {
                    'finite': None
                }
            }
        })

        # The factor 'x' that should be part of the initial_state_crossing_factor cancels
        # against the extra prefactor 1/x in the collinear factorisation formula
        # (see Eq. (8) of NNLO compatible NLO scheme publication arXiv:0903.1218v2)
        initial_state_crossing_factor = 1.
        # Correct for the ratio of color-averaging factor between the real ME
        # initial state flavor (quark) and the one of the reduced Born ME (quark)
        initial_state_crossing_factor *= 1.

        z = 1. / x

        # We re-use here the Altarelli-Parisi Kernel of the P_qg final state kernel, including
        # its soft subtraction
        # We must subtract the soft-collinear (CxS *not* SxC) from this contribution:
        # P_qg           = self.CF * ( (1.+z**2)/(1.-z) )
        # CxS(P_qg)      = self.CF * ( 2 / (x - 1) ) = self.CF * ( 2 z / (1 - z) )
        # P_qg-CxS(P_qg) = self.CF * (1 + z**2 - 2*z) / (1 - z) = self.CF * ( 1 - z)

        norm = initial_state_crossing_factor * self.CF
        evaluation['values'][(0, 0)]['finite'] = norm * (1 - z)

        return evaluation