Changes between Initial Version and Version 1 of LoopInducedTimesTree


Ignore:
Timestamp:
Aug 30, 2016, 3:21:48 AM (8 years ago)
Author:
Valentin Hirschi
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • LoopInducedTimesTree

    v1 v1  
     1This page describes the technical modifications necessary to compute Loop-Induced processes times tree-level diagrams with MadEvent and the Loop-Induced module of MG5aMC.
     2Notice that there is no official support for such computation in MG5aMC as of now, so that the procedure below must be performed with care and should be cross-checks in some limits before as we cannot guarantee the same level of reliability as with other MG5aMC functionalities.
     3It was however already successfully used and tested for g g > h > t t~ g.
     4
     5You can try to adapt this recipe to the latest version of MG5aMC or use directly v2.3.3 for which you should have a one-to-one correspondance with my intstructions.
     6
     7-----
     8
     9a) First download the latest version of MG5_aMC, either using the tarball link:
     10
     11    https://launchpad.net/mg5amcnlo/2.0/2.3.0/+download/MG5_aMC_v2.3.3.tar.gz
     12
     13b) Untar the 'special_loop_sm' UFO loop model file attached to this email and place it in the 'model' directory of your MG distribution. Notice that this model is a simple copy of the default 'loop_sm' model but contains modifications in the file 'CT_vertices' which now contains special 'UVtree' counterterms, which are precisely those which will emulate the QCD background you are interfering against.
     14Have a look at them; they are placed under the comment:
     15
     16{{{
     17#########################################################################
     18# Fake UVCT vertices for loop-induced and tree interference computation #
     19#########################################################################
     20}}}
     21
     22Depending on the tree-level diagrams you will want to interfere against you might need to place additional copies of the regular tree-level vertices here, with the type UVTree and involving couplings defined in 'CT_couplings.py' with the coupling_order type 'BKGQCD'. You would for example need to add copies of the electroweak vertices for example if they played a role in your tree-level background.
     23In your case however, the tree-level diags are g g > t t~, so this model should be fine.
     24
     25c) Bring the following changes to the MG5_aMC python source code:
     26
     27>c.1) Anywhere in the class 'LoopUVCTDiagram' of the file  '<MG_root_path>/madgraph/loop/loop_base_objects.py', add the following two functions:
     28{{{
     29    def get_contracted_loop_diagram(self, model, struct_rep=None):
     30        return copy.copy(self)   
     31    def get_contracted_loop_diagram_without_tag(self, struct_rep=None):
     32        return copy.copy(self)
     33}}}
     34
     35>c.2) In the file '<MG_root_path>/madgraph/loop/loop_diagram_generation.py' change the folllowing:
     36>> c.2.i) Around line 740, change:
     37{{{
     38        if self['process']['has_born']:
     39            self.set_Born_CT()
     40}}}
     41into
     42{{{
     43        if True:
     44            self.set_Born_CT()
     45}}}
     46>> c.2.ii) Around line 1190, change
     47{{{
     48        UVCTsuccessful, UVCTdiagrams = \
     49          super(LoopAmplitude, self).generate_diagrams(True)
     50}}}
     51into
     52{{{
     53        # Back up of the original process characteristics
     54        bu = copy.copy(self['process']['required_s_channels'])
     55        bu_orders = copy.copy(self['process']['orders'])
     56        self['process']['required_s_channels'] = []
     57        for order in self['process']['model'].get_coupling_orders():
     58            self['process']['orders'][order] = 0
     59        self['process']['orders']['UVCT_SPECIAL'] = 999
     60        # Specify here the coupling orders desired for the background. By default, all.
     61        self['process']['orders']['BKGQCD'] = 999
     62        UVCTsuccessful, UVCTdiagrams = \
     63          super(LoopAmplitude, self).generate_diagrams(True)
     64        # Restore backed up properties
     65        self['process']['required_s_channels'] = copy.copy(bu)       
     66        for order, value in bu_orders.items():
     67            self['process']['orders'][order] = value
     68}}}
     69(Note that you can add above further modifications of self['process']['orders']  and self['process']['required_s_channels'] to have a finer selection of your tree-level interfering diagrams, but for your purposes that shouldn't be needed.
     70Notice that thanks to the line
     71self['process']['required_s_channels'] = []
     72the '> h >' constraint on the original process definition will not apply to the interfering tree-level diagrams.)
     73
     74>> c.2.iii) Around line 1212, change
     75{{{
     76            if UVCTdiag.get_order('UVCT_SPECIAL')==1:
     77}}}
     78into
     79{{{
     80            if True:
     81}}}
     82>c.3) Around line 1900 of the file '<MG_root_path>/madgraph/loop/loop_helas_objects.py' change:
     83{{{
     84            ref_orders = [lao[0] for lao in loop_orders+ct_amp_orders]
     85}}}
     86into
     87{{{
     88            ref_orders = [lao[0] for lao in loop_orders+ct_amp_orders+uvct_amp_orders]
     89}}}
     90
     91d) Now that all the necessary modifications have been performed, you should be able to run the code for simulation of the loop-induced vs tree interference as follows:
     92> d.1) First start the interface by running the script './bin/mg5' from within the directory <MG_root_path>
     93> d.2) Whenever you plan on running event generation (i.e. not necessary when doing MadLoop standalone), make sure that the grouping of subprocess is disabled, with
     94{{{
     95    MG5_aMC>set group_subprocesses False
     96}}}
     97> d.3) then load the model with
     98{{{
     99    MG5_aMC>import model special_loop_sm
     100}}}
     101This loads the special model for this sort of computation (with the fake 'background' UVCT vertices).
     102(Here I show an example for the process g g > h > t t~ g, so that it is clear that it is more general that what you wanted to do in the first place, namely g g > h > t t~)
     103> d.4) Generate the process in one of the two following ways (feel free to change the process definition at will):
     104If you want to run MadLoop in standalone to evaluate this interference for local phase-space points for cross-checks, run:
     105{{{
     106    MG5_aMC>generate g g > h > t t~ g [virt=QCD BKGQCD]
     107}}}
     108(You will automatically be able to see the individual contribution of the signal squared, interference term and background squared)
     109Instead, for the generation of the process which will be output with MadEvent to generate events, use:
     110{{{
     111    MG5_aMC>generate g g > h > t t~ g [noborn=QCD BKGQCD] BKGQCD^2==3
     112}}}
     113for the generation of the process which will be output with MadEvent to generate events for this interference only.
     114
     115Notice that in the second syntax, you can substitute the initial state gluons with 'p' and the final-state ones with 'j' to include the quark channels as well. This works.
     116
     117>d.5) You can now output the process to a directory of a chosen name 'MyOutputDirName'
     118{{{
     119MG5_aMC>output MyOutputDirName
     120}}}
     121>d.6) And finally launch it with
     122{{{
     123MG5_aMC>launch
     124}}}
     125or alternatively, you can specify the directory name if you are returning to the interface and want to launch an existing output:
     126{{{
     127MG5_aMC>launch MyOutputDirName
     128}}}
     129>d.7) MadGraph5_aMC@NLO will then ask you questions related to the details of either the MadLoop standalone run you are doing or the event generation run.