class ColorfulWalker(NLOWalker): f_collinear_map = mappings.FinalRescalingOneMapping() i_collinear_map = mappings.InitialLorentzOneMapping() soft_map = mappings.SoftVsFinalPureRescalingMapping() f_soft_collinear_map = mappings.SoftCollinearVsFinalMapping( soft_map, f_collinear_map) i_soft_collinear_map = mappings.SoftCollinearVsFinalMapping( soft_map, i_collinear_map) # The integrated counterterms are only correct when recoiling against *all* final states # Take care that the soft mapping only works for massless particles instead only_colored_recoilers = False
class FinalRescalingNLOWalker(FinalNLOWalker): collinear_map = mappings.FinalRescalingOneMapping() soft_map = mappings.SoftVsFinalPureRescalingMapping() soft_collinear_map = mappings.SoftCollinearVsFinalMapping( soft_map, collinear_map) only_colored_recoilers = True
class SoftBeamsRecoilNLOWalker(NLOWalker): """ Set of mappings designed to work for the NLO topology pp > X(color-singlet) + at most one jet. The collinear mapping is left untouched compared to LorentzNLOWalker, but the soft one is not the original Colorful mapping where recoilers are individually rescaled but instead it is a mapping that rescales both initial states without boosting the c.o.m frame. This is well-suited for integrating 'p p > X (+j)' where X is a color-singlet. """ f_collinear_map = mappings.FinalLorentzOneMapping() i_collinear_map = mappings.InitialLorentzOneMapping() # The two lines below yield the difference w.r.t LorentzNLOWalker soft_map = mappings.SoftVsInitialMapping() only_colored_recoilers = False f_soft_collinear_map = mappings.SoftCollinearVsFinalMapping( soft_map, f_collinear_map) i_soft_collinear_map = mappings.SoftCollinearVsFinalMapping( soft_map, i_collinear_map)
class FinalLorentzNLOWalker(FinalNLOWalker): collinear_map = mappings.FinalLorentzOneMapping() soft_map = mappings.SoftVsFinalPureRescalingMapping() soft_collinear_map = mappings.SoftCollinearVsFinalMapping( soft_map, collinear_map) # Beware that integrated counterterms are only correct # when recoiling against *all* final states only_colored_recoilers = True
leg['number'] not in excluded ]) ]) #========================================================================================= # Variables, mappings, jacobians, factors and cuts #========================================================================================= # Note that variables, factors and cuts will be class members by design # so they can easily be overridden by subclasses. # They will be taken from the following variables # so we can quickly switch them coherently across the entire subtraction scheme. variables = currents.Q_final_coll_variables coll_mapping = mappings.FinalRescalingOneMapping soft_mapping = mappings.SoftVsFinalPureRescalingMapping soft_coll_mapping = mappings.SoftCollinearVsFinalMapping( soft_mapping=soft_mapping, collinear_mapping=coll_mapping) divide_by_jacobian = True factor_coll = factors_and_cuts.factor_coll factor_soft = factors_and_cuts.factor_soft is_cut_coll = factors_and_cuts.cut_coll is_cut_soft = factors_and_cuts.cut_soft #========================================================================================= # NLO final-collinear currents #========================================================================================= class QCD_final_collinear_0_XX(currents.QCDLocalCollinearCurrent): """Two-collinear tree-level current.""" squared_orders = {'QCD': 2} n_loops = 0
divide_by_jacobian = False get_recoilers = get_all_final_recoilers # Initial collinear configuration initial_coll_variables = currents.Q_initial_coll_variables initial_coll_factor = factors_and_cuts.no_factor initial_coll_cut = factors_and_cuts.cut_initial_coll initial_coll_mapping = mappings.InitialLorentzOneMapping # Soft configuration soft_factor = factors_and_cuts.no_factor soft_cut = factors_and_cuts.no_cut soft_mapping = mappings.SoftVsInitialMapping # Final collinear configuration # WARNING: This is *not* the same final-collinear mapping as in colorful, where one has 'FinalRescalingOneMapping' instead. # The __init__.py of colorful_pp will make sure to overwrite this mapping choice for the final collinear imported from # coloful. Notice then that the final_coll quantity specified here apply only then to the *NNLO* final collinear. # For the NLO ones, as explained above, these properties will be overwritten appropriately irrespectively of what is below. final_coll_mapping = mappings.FinalLorentzOneMapping final_coll_factor = factors_and_cuts.no_factor final_coll_cut = factors_and_cuts.cut_coll # Final soft-collinear configuration final_soft_coll_variables = currents.compute_energy_fractions final_soft_coll_mapping = mappings.SoftCollinearVsFinalMapping( soft_mapping=soft_mapping, collinear_mapping=final_coll_mapping) initial_soft_coll_mapping = mappings.SoftCollinearVsFinalMapping( soft_mapping=soft_mapping, collinear_mapping=initial_coll_mapping)