Package madgraph :: Package loop :: Module loop_helas_objects :: Class LoopHelasMatrixElement
[hide private]
[frames] | no frames]

Class LoopHelasMatrixElement

source code

                   object --+            
                            |            
                         dict --+        
                                |        
  core.base_objects.PhysicsObject --+    
                                    |    
core.helas_objects.HelasMatrixElement --+
                                        |
                                       LoopHelasMatrixElement

LoopHelasMatrixElement: list of processes with identical Helas calls, and the list of LoopHelasDiagrams associated with the processes. It works as for the HelasMatrixElement except for the loop-related features which are defined here.

Nested Classes [hide private]

Inherited from core.base_objects.PhysicsObject: PhysicsObjectError

Instance Methods [hide private]
 
default_setup(self)
Default values for all properties
source code
 
filter(self, name, value)
Filter for valid diagram property values.
source code
D[k] if k in D, else d
get(self, name)
Overload in order to return the loop_color_basis when simply asked for color_basis.
source code
 
identify_loop_groups(self)
Identify what are the loops sharing the same denominators and put them together in the 'loop_groups' attribute of this object.
source code
 
reuse_outdated_wavefunctions(self, helas_diagrams)
Make sure never to use this optimization in the loop context.
source code
 
update_loop_group_ids(self)
Make sure that the attribute 'loop_group_id' of all loop amplitudes in the 'loop_groups' list is correct given the order of 'loop_groups'
source code
 
process_color(self)
Perform the simple color processing from a single matrix element (without optimization then).
source code
 
get_sorted_keys(self)
Return particle property names as a nicely sorted list.
source code
new empty dictionary

__init__(self, amplitude=None, optimization=1, decay_ids=[], gen_color=True, optimized_output=False)
Constructor for the LoopHelasMatrixElement.
source code
 
__eq__(self, other)
Comparison between different loop matrix elements, to allow check for identical processes.
source code
 
__ne__(self, other)
Overloading the nonequality operator, to make comparison easy
source code
 
generate_helas_diagrams(self, amplitude, optimization=1, decay_ids=[])
Starting from a list of LoopDiagrams from the diagram generation, generate the corresponding LoopHelasDiagrams, i.e., the wave functions and amplitudes (for the loops and their R2 and UV counterterms).
source code
 
get_split_orders_mapping(self)
This function returns a list and a dictionary: squared_orders, amps_orders === The squared_orders lists all contributing squared_orders as tuple whose elements are the power at which are elevated the couplings orderered as in the 'split_orders'.
source code
 
get_squared_order_contribs(self)
Return the squared_order contributions as returned by the function get_split_orders_mapping.
source code
 
find_max_loop_coupling(self)
Find the maximum number of loop couplings appearing in any of the LoopHelasAmplitude in this LoopHelasMatrixElement
source code
 
get_max_loop_vertex_rank(self)
Returns the maximum power of loop momentum brought by a loop interaction.
source code
 
get_max_loop_rank(self)
Returns the rank of the contributing loop with maximum rank
source code
 
get_max_spin_connected_to_loop(self)
Returns the maximum spin that any particle either connected to a loop or running in it has, among all the loops contributing to this ME
source code
 
get_max_loop_particle_spin(self)
Returns the spin of the loop particle with maximum spin among all the loop contributing to this ME
source code
 
relabel_loop_amplitudes(self)
Give a unique number to each non-equivalent (at the level of the output) LoopHelasAmplitude
source code
 
relabel_loop_amplitudes_optimized(self)
Give a unique number to each LoopHelasAmplitude.
source code
 
relabel_loop_wfs_and_amps(self, wfnumber)
Give the correct number for the default output to the wavefunctions and amplitudes building the loops
source code
 
relabel_loop_wfs_and_amps_optimized(self, wfnumber)
Give the correct number for the optimized output to the wavefunctions and amplitudes building the loops
source code
 
relabel_helas_objects(self)
After the generation of the helas objects, we can give up on having a unique number identifying the helas wavefunction and amplitudes and instead use a labeling which is optimal for the output of the loop process.
source code
 
get_number_of_wavefunctions(self)
Gives the total number of wavefunctions for this ME, including the loop ones
source code
 
get_number_of_loop_wavefunctions(self)
Gives the total number of loop wavefunctions for this ME.
source code
 
get_number_of_external_wavefunctions(self)
Gives the total number of wavefunctions for this ME, excluding the loop ones.
source code
 
get_all_wavefunctions(self)
Gives a list of all wavefunctions for this ME
source code
 
get_all_loop_wavefunctions(self)
Gives a list of all the loop wavefunctions for this ME
source code
 
get_nexternal_ninitial(self)
Gives (number or external particles, number of incoming particles)
source code
 
get_number_of_amplitudes(self)
Gives the total number of amplitudes for this ME, including the loop ones.
source code
 
get_number_of_CT_amplitudes(self)
Gives the total number of CT amplitudes for this ME.
source code
 
get_number_of_external_amplitudes(self)
Gives the total number of amplitudes for this ME, excluding those inside the loop amplitudes.
source code
 
get_number_of_loop_amplitudes(self)
Gives the total number of helas amplitudes for the loop diagrams of this ME, excluding those inside the loop amplitudes, but including the CT-terms.
source code
 
get_number_of_born_amplitudes(self)
Gives the total number of amplitudes for the born diagrams of this ME
source code
 
get_all_amplitudes(self)
Gives a list of all amplitudes for this ME
source code
 
get_born_diagrams(self)
Gives a list of the born diagrams for this ME
source code
 
get_loop_diagrams(self)
Gives a list of the loop diagrams for this ME
source code
 
get_loop_UVCT_diagrams(self)
Gives a list of the loop UVCT diagrams for this ME
source code
 
compute_all_analytic_information(self, alohaModel=None)
Make sure that all analytic pieces of information about all loop wavefunctions and loop amplitudes building this loop helas matrix element are computed so that they can be recycled later, typically without the need of specifying an alohaModel.
source code
 
get_used_lorentz(self)
Return a list of (lorentz_name, tags, outgoing) with all lorentz structures used by this LoopHelasMatrixElement.
source code
 
get_used_helas_loop_amps(self)
Returns the list of the helas loop amplitude of type CALL LOOP_I_J(_K)(...) used for this matrix element
source code
 
get_used_wl_updates(self)
Returns a list of the necessary updates of the loop wavefunction polynomials
source code
 
get_used_couplings(self)
Return a list with all couplings used by this HelasMatrixElement.
source code
 
get_color_amplitudes(self)
Just to forbid the usage of this generic function in a LoopHelasMatrixElement
source code
 
get_born_color_amplitudes(self)
Return a list of (coefficient, amplitude number) lists, corresponding to the JAMPs for this born color basis and the born diagrams of this LoopMatrixElement.
source code
 
get_loop_color_amplitudes(self)
Return a list of (coefficient, amplitude number) lists, corresponding to the JAMPs for this loop color basis and the loop diagrams of this LoopMatrixElement.
source code
 
get_helas_amplitudes_loop_diagrams(self)
When creating the base_objects.Diagram in get_base_amplitudes(), each LoopHelasDiagram will lead to one loop_base_objects.LoopDiagram for its LoopHelasAmplitude and one other for each of its counter-term (with different interaction id).
source code
 
get_base_amplitude(self)
Generate a loop_diagram_generation.LoopAmplitude from a LoopHelasMatrixElement.
source code

Inherited from core.helas_objects.HelasMatrixElement: calculate_fermionfactors, calculate_identical_particle_factor, generate_color_amplitudes, get_beams_hel_avg_factor, get_denominator_factor, get_external_masses, get_external_wavefunctions, get_hel_avg_factor, get_helicity_combinations, get_helicity_matrix, get_mirror_processes, get_num_configs, get_split_orders_mapping_for_diagram_list, getmothers, identical_decay_chain_factor, insert_decay, insert_decay_chains, replace_single_wavefunction, replace_wavefunctions, restore_original_wavefunctions, sort_split_orders, update_later_mothers

Inherited from core.base_objects.PhysicsObject: __getitem__, __repr__, __str__, is_valid_prop, set

Inherited from dict: __cmp__, __contains__, __delitem__, __ge__, __getattribute__, __gt__, __iter__, __le__, __len__, __lt__, __new__, __setitem__, __sizeof__, clear, copy, fromkeys, has_key, items, iteritems, iterkeys, itervalues, keys, pop, popitem, setdefault, update, values, viewitems, viewkeys, viewvalues

Inherited from object: __delattr__, __format__, __reduce__, __reduce_ex__, __setattr__, __subclasshook__

Static Methods [hide private]

Inherited from core.helas_objects.HelasMatrixElement: check_equal_decay_processes, check_equal_wavefunctions, sorted_mothers

Class Variables [hide private]

Inherited from dict: __hash__

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

default_setup(self)

source code 

Default values for all properties

Overrides: core.base_objects.PhysicsObject.default_setup

filter(self, name, value)

source code 

Filter for valid diagram property values.

Overrides: core.base_objects.PhysicsObject.filter

get(self, name)

source code 

Overload in order to return the loop_color_basis when simply asked for color_basis. The setter is not updated to avoid side effects.

Returns: D[k] if k in D, else d
Overrides: dict.get

reuse_outdated_wavefunctions(self, helas_diagrams)

source code 

Make sure never to use this optimization in the loop context.

Overrides: core.helas_objects.HelasMatrixElement.reuse_outdated_wavefunctions

process_color(self)

source code 

Perform the simple color processing from a single matrix element (without optimization then). This is called from the initialization and overloaded here in order to have the correct treatment

Overrides: core.helas_objects.HelasMatrixElement.process_color

get_sorted_keys(self)

source code 

Return particle property names as a nicely sorted list.

Overrides: core.base_objects.PhysicsObject.get_sorted_keys

__init__(self, amplitude=None, optimization=1, decay_ids=[], gen_color=True, optimized_output=False)
(Constructor)

source code 

Constructor for the LoopHelasMatrixElement. For now, it works exactly as for the HelasMatrixElement one.

Returns:
new empty dictionary

Overrides: object.__init__

__eq__(self, other)
(Equality operator)

source code 

Comparison between different loop matrix elements, to allow check for identical processes.

Overrides: dict.__eq__

__ne__(self, other)

source code 

Overloading the nonequality operator, to make comparison easy

Overrides: dict.__ne__

generate_helas_diagrams(self, amplitude, optimization=1, decay_ids=[])

source code 

Starting from a list of LoopDiagrams from the diagram generation, generate the corresponding LoopHelasDiagrams, i.e., the wave functions and amplitudes (for the loops and their R2 and UV counterterms). Choose between default optimization (= 1, maximum recycling of wavefunctions) or no optimization (= 0, no recycling of wavefunctions, useful for GPU calculations with very restricted memory).

Note that we need special treatment for decay chains, since the end product then is a wavefunction, not an amplitude.

Overrides: core.helas_objects.HelasMatrixElement.generate_helas_diagrams

get_split_orders_mapping(self)

source code 
This function returns a list and a dictionary:
                squared_orders, amps_orders
===
The squared_orders lists all contributing squared_orders as tuple whose
elements are the power at which are elevated the couplings orderered as
in the 'split_orders'.

squared_orders : All possible contributing squared orders among those
    specified in the process['split_orders'] argument. The elements of
    the list are tuples of the format
     ((OrderValue1,OrderValue2,...),
      (max_contrib_ct_amp_number,
      max_contrib_uvct_amp_number,
      max_contrib_loop_amp_number,
      max_contrib_group_id))
    with OrderValue<i> correspond to the value of the <i>th order in
    process['split_orders'] (the others are summed over and therefore 
    left unspecified).
    Ex for dijet with process['split_orders']=['QCD','QED']: 
        => [((4,0),(8,2,3)),((2,2),(10,3,3)),((0,4),(20,5,4))]
   
'max_contrib_loop_amp_number': For optimization purposes, it is good to
know what is the maximum loop amplitude number contributing to any given 
squared order. The fortran output is structured so that if the user 
is interested in a given squared order contribution only, then
all the open loop coefficients for the amplitudes with a number above
this value can be skipped.

'max_contrib_(uv)ct_amp_number': Same as above but for the 
(uv)ctamplitude number.

'max_contrib_group_id': The same as above, except this time
it is for the loop group id used for the loop reduction.
===
The amps_orders is a *dictionary* with keys 
  'born_amp_orders',
  'loop_amp_orders'
with values being the tuples described below.

If process['split_orders'] is empty, all these tuples are set empty.

'born_amp_orders' : Exactly as for squared order except that this list specifies
    the contributing order values for the amplitude (i.e. not 'squared').
    Also, the tuple describing the amplitude order is nested with a 
    second one listing all amplitude numbers contributing to this order.
    Ex for dijet with process['split_orders']=['QCD','QED']: 
        => [((2, 0), (2,)), ((0, 2), (1, 3, 4))]
    The function returns () if the process has no borns.

'loop_amp_orders' : The same as for born_amp_orders but for the loop
    type of amplitudes only.

Keep in mind that the orders of the elements of the outter most list is
important as it dictates the order for the corresponding "order indices" 
in the fortran code output by the exporters.

Overrides: core.helas_objects.HelasMatrixElement.get_split_orders_mapping

get_squared_order_contribs(self)

source code 

Return the squared_order contributions as returned by the function get_split_orders_mapping. It uses the cached value self.squared_orders if it was already defined during a previous call to get_split_orders_mapping.

get_max_loop_vertex_rank(self)

source code 

Returns the maximum power of loop momentum brought by a loop interaction. For renormalizable theories, it should be no more than one.

relabel_loop_amplitudes_optimized(self)

source code 

Give a unique number to each LoopHelasAmplitude. These will be the number used for the LOOPCOEF array in the optimized output and the grouping is done in a further stage by adding all the LOOPCOEF sharing the same denominator to a given one using the 'loop_group_id' attribute of the LoopHelasAmplitudes.

relabel_helas_objects(self)

source code 

After the generation of the helas objects, we can give up on having a unique number identifying the helas wavefunction and amplitudes and instead use a labeling which is optimal for the output of the loop process. Also we tag all the LoopHelasAmplitude which are identical with the same 'number' attribute.

get_number_of_wavefunctions(self)

source code 

Gives the total number of wavefunctions for this ME, including the loop ones

Overrides: core.helas_objects.HelasMatrixElement.get_number_of_wavefunctions

get_all_wavefunctions(self)

source code 

Gives a list of all wavefunctions for this ME

Overrides: core.helas_objects.HelasMatrixElement.get_all_wavefunctions

get_nexternal_ninitial(self)

source code 

Gives (number or external particles, number of incoming particles)

Overrides: core.helas_objects.HelasMatrixElement.get_nexternal_ninitial

get_number_of_amplitudes(self)

source code 

Gives the total number of amplitudes for this ME, including the loop ones.

Overrides: core.helas_objects.HelasMatrixElement.get_number_of_amplitudes

get_number_of_CT_amplitudes(self)

source code 

Gives the total number of CT amplitudes for this ME. (i.e the amplitudes which are not LoopHelasAmplitudes nor within them.)

get_number_of_external_amplitudes(self)

source code 

Gives the total number of amplitudes for this ME, excluding those inside the loop amplitudes. (So only one is counted per loop amplitude.)

get_number_of_loop_amplitudes(self)

source code 

Gives the total number of helas amplitudes for the loop diagrams of this ME, excluding those inside the loop amplitudes, but including the CT-terms. (So only one amplitude is counted per loop amplitude.)

get_all_amplitudes(self)

source code 

Gives a list of all amplitudes for this ME

Overrides: core.helas_objects.HelasMatrixElement.get_all_amplitudes

compute_all_analytic_information(self, alohaModel=None)

source code 

Make sure that all analytic pieces of information about all loop wavefunctions and loop amplitudes building this loop helas matrix element are computed so that they can be recycled later, typically without the need of specifying an alohaModel. Notice that for now this function is called at the end of the generat_helas_diagrams function and the alohaModel is created here. In principle, it might be better to have this function called by the exporter just after export_v4 because at this stage an alohaModel is already created and can be specified here instead of being generated. This can make a difference for very complicated models.

get_used_lorentz(self)

source code 

Return a list of (lorentz_name, tags, outgoing) with all lorentz structures used by this LoopHelasMatrixElement.

Overrides: core.helas_objects.HelasMatrixElement.get_used_lorentz

get_used_couplings(self)

source code 

Return a list with all couplings used by this HelasMatrixElement.

Overrides: core.helas_objects.HelasMatrixElement.get_used_couplings

get_color_amplitudes(self)

source code 

Just to forbid the usage of this generic function in a LoopHelasMatrixElement

Overrides: core.helas_objects.HelasMatrixElement.get_color_amplitudes

get_born_color_amplitudes(self)

source code 

Return a list of (coefficient, amplitude number) lists, corresponding to the JAMPs for this born color basis and the born diagrams of this LoopMatrixElement. The coefficients are given in the format (fermion factor, color coeff (frac), imaginary, Nc power).

get_loop_color_amplitudes(self)

source code 

Return a list of (coefficient, amplitude number) lists, corresponding to the JAMPs for this loop color basis and the loop diagrams of this LoopMatrixElement. The coefficients are given in the format (fermion factor, color coeff (frac), imaginary, Nc power).

get_helas_amplitudes_loop_diagrams(self)

source code 

When creating the base_objects.Diagram in get_base_amplitudes(), each LoopHelasDiagram will lead to one loop_base_objects.LoopDiagram for its LoopHelasAmplitude and one other for each of its counter-term (with different interaction id). This function return a list for which each element is a HelasAmplitudeList corresponding to the HelasAmplitudes related to a given loop_base_objects.LoopDiagram generated

get_base_amplitude(self)

source code 

Generate a loop_diagram_generation.LoopAmplitude from a LoopHelasMatrixElement. This is used to generate both color amplitudes and diagram drawing.

Overrides: core.helas_objects.HelasMatrixElement.get_base_amplitude