Version 3 (modified by md987, 8 years ago) (diff)


MadWeight Analyzer Class



!! variable
pidintaskedpid number
MGintaskedMadGraph intern number
massfloat0mass of the particle
motherParticle0mother of the particle
neutrinoint01 if this particle is a neutrino
externalintautomatic1 if this is an external particle
twinParticle0Particle comming from the same propagator

Optional variable:

all_motherlist of Particlelist of all mother of the particle
levelintnumber a propa before himself (with himself include)
!! routine
add_motherParticleNonedefine particle as the mother of this particle
def_all_motherNonelistdefine the list of all the mother of teh particle (and store the info)
def_massDict_cardNonedefine the mass of the particle
detect_neut_in_decayNoneParticle,intdetect the nearest neutrino in the decay branch. return this neutrino and its level compare to this particle


!! variable
channelstrinputsay if it is a S or T channel
widthfloat0width of the propagator
!! routine
def_desintegation2 Particle Nonedefine this two particle like child and define in this two who are the mother


!! variable
neutrinointautomatic1 if this particle is a neutrino
externalint11 if this is an external particle
widthint-1width of the particle (-1 if external particle)
Optional variable
tf_levelintError0-1 particle cann't enter in change of variable,
2 can and 3 must (for invisible particle)
!! routine
is_invisibleNoneNonedetect if the external particle is visible in the detector or not
unaligned_propaParticle+(int)int or 3 intcompute the number of propa in common. Return the total number of propagator before the two particle (default) in addtion it can give the number of uncorelated propagator for the two particle (put total=0)



!! variable
contentdictvoidlink from MG number to the particle object associated
prop_contentlistof Propagatorvoidlist of all propagator in th diagram
ext_contentlist of Ext_particlevoidlist of all external particle in the diagram
neut_contentlist of Ext_particlevoidlist of all neutrino in the diagram
num_propaint0number of propa in the diagram
ext_partint0number of external particle in the diagram
num_neutint0number of neutrino in the diagram
configintinputnumber of the feynman diagram consider
!! routine
add_contentMG_id(int),ParticleNoneadd particle with MG number in the diagram
contains_particleParticlelogicchek if the particle belongs to this diagram
define_levelNoneNonedefine for all the content the level: number a propa before himself (with himself include)
define_neut_contentNoneNonedefine neutrino content of the diagram
order_in_levelNoneNonereordering the ext_content in level order


!! variable
ECS_sollist of ECSvoidlist of possible ECS
blob_contentlist of BLobvoidlist of blob present in (at least) one ECS sector
num_initint2number of initial particle
directorystrdirectory in which we read the Feynman diagram
!! routine
charge diagram
import_processdir_file(str),config(int)Nonecharge the information coming from and
define_neutrino_stuffNoneNoneput uptodate all neutrino dependent variable
define_parameterparam_card(str)Nonedefine mass-width for all Particle (from param card)
define_tf_widthfile(str)Noneassociate the TF-level at each particle
detect_invisible_propaNoneNonedetect propagator decaying in fully invisible particle and treat this case
creation of ECS
define_Constraint_sectorNoneNonedefine the constraint sector and the different blob (directing routine)
select_ECSECS_list,(define_solution=1)Noneselect the best(s) ECS in the list (minimizing unfactorized propagator) and define solution if define==1
define_ECS_as_solutionECS_listNONEdefine ECS for a new (or a list) of new solution(s) for the ECS change of variable
find_ECS_0neut(force=0)ECS_list find ECS containing no neutrino. force authorizes some level 1 to be choose
find_ECS_1neutNoneECS_listfind the lowest(s) neutrino and define ECS
find_ECS_2neutNoneECS_listreturn best 2 neutrino ECS
creation of blob
solve_blob_sectorNoneNoneresolve the change of variable for blob (scheduler)
* write Solution*
create_fortran_codeNoneNonecreate the code(sceduler)
create_MadWeight_dataobject,i(int)Nonecreate the data_$ for solution
create_MadWeight_mainobject,i(int)Nonecreate the main_code_$ for solution
create_pmass2object,i(int)Nonecreate the pmass2_$ for solution
already_generated_in_decayparticle,generated_propagenerated_propagive (recurently) all the first particle already generated in the branchs of desintegration
check_invisible_decayNonetextcheck if one of the invisible particle decay in 2 invisible particle.
return 0 if not
return a text with the call of the equivalent subroutine
collect_generated_propaECS,blob_sol_listpropa_listreturn all the propagator that must be generated following BW distibution
return_propa_generationlist,posline(str)return the line for the definition of how to generate the mass
* Other function*
find_lowest_particle(3 options)Particle_listfind the one/two lowest (lower level) neutrino/particle, if the are ambiguity return more than two
find_num_neut_decayNoneNonefind the number of neutrino in the decay of each particle
set_optioninfo(str,dict,void)Nonestore the different option linked to the generation of this MG_diagram


ECS sector have multiple heritage. See in The Level_generation heritage class to find all this specific caracteristic


!! variable
mainParticledefinegives the Particle wich generates all the blob
sollistvoidlist of the different solution of this blob
!! routine
find_solutionsNoneNonefind a first solution to resolve the blob.
The idea is to take the more local possibility in all case
this is perhaps not the best solution but it's only the beginning of the resolution
generate_contentNoneNoneimport all the information for the blog
put_in_ecsECSNoneput this blob in the blob content of ECS
supress_identical_solutionNoneNonesupress identical solution



!! variable
num_fuseint0number of fuse particle in the solution
sol_tagstrdeftype of solution description
steplist_Blockvoidlist of the block to use for the generation (must be most of the time in the correct order)
!! routine
define_fuse_regionfuse_listfuse_Particledefine a fuse part(Block '2' but with new particle) for the particle in the list
order_blockBlockNone(re)ordrer so that the new order follow the generation order


May Attention this object have multi heritage-> from Diagram (number 1) and secondly from Level_generation

!! variable
MG_secMG_diagramdeflink to the Feynam object
chgt_varstrdefa letter (lowercase) describe a change of variable in the ECS, and a 2 describe a fuse
main_contentlist_Particledefcentral particle of the ECS
unalignedintdefnumber of propagator in the black box plus the number of neutrinos quantity generated.
num_neutintautonumber of neutrion in the ECS
intrinsecintautonumber of fondamental particle in ECS
!! routine
define_blobMG_diagNonedefine the blob associated to this Enlarged constraint sector( in MG_diag and in ECS)
equivalent_ECSNoneNone1) define completly the change of variable for the enlarged ECS
-find which propagator aligned,...
2) define equivalent solution if any (B->C)
infoNonestrreturn some information about the ECS and the associated blob for write in output
order_blockNonenoneorder the block of step
update_unaligned_with_blobNoneNonetake care of the position of the other neutrino in order to have a more
serious definition of the number of un-aligned variable
this routine is designed for update the 1 neutrino case


!! variable
blob_secBlob_sectordefto with blob this solution is linked
how_gendictspecialParticle-> linked block for generation (if not ): initial value is "" for all particle in the blob
!! routine
copy_solutionBlob_solNoneduplicate solution (no alias use) in order to modify it later
debugNoneNoneprint information
Find Solution
find_all_solutionsblobNonecomplete blob.sol => find tree solutions:
1. this solutions maximize the number of propagator generated following BW
2. this solutions maximize the number of external particle generated following tf (i.e. all execpt neutrino)
3. this solutions try to be an intermediate solution between the two
find_beta_solutionblobNonefind a first solution to resolve the blob
The idea is to take the more local possibility in all case.
this is perhaps not the best solution but it's only the beginning of the resolution.
Secondly we will not defined 'final' block but some more generic one (like E*: restriction at one level of E)
resolve_pieceBlob,ParticleNonefind the 'first' solution for the blok taht will be linked to Particle
treat_conflicting_blockblockNoneif a 'C' block is block by a 'A' block it's sometimes more powerful to degrade the 'A' in 'B'
if the 'C' can be upgrated to 'A'
Modify Solution
pass_in_solutiontagNonetag -> upgrate solution in order to fullfill taged criteria
upgrate 'beta' solution following some criteria(tagged with tag)
extend_blockchgt_varnoneput the A/D/E propagator in place to minize problem with thin transfer function
convert_DE_in_1NoneNoneconvert all 'E*' and all 'd' in '1' block
convert_E_in_DNoneNoneconvert all 'E*' in 'd'
del_ext1_inNoneNonedelete blok '1' but only if the particle is an external one||


define:store information on a Block.


!! variable
sol_secsolution_sectordefthis blob is linked to one solution
chgt_varstrdefwhich type of chgt_var
in_partlist_Particledefparticle that must be define before-in the same time that the block
out_partlist_ParticledefParticle which can be generated by the block
neut_contentlist_Particleautoneutrino particle
num_neutintautonumber of neutrino
stopstrvoidreason why we don't choose an other block
order_contentlist_Blockautoorganize particle in order to have the correct ordrer in F77 program
!! routine
def_order_contentNoneNonedefine (in the corect order) the particle used in fuse sector (routine overwirtted in other case)
give_stop_reasonlogNonestore log end message


!! routine


def_order_contentNoneNonedefine (in the corect order) the particle used in ECS


!! routine
change_chgt_varnewNonechange the changement of variable associated
def_order_contentNoneNonedefine (in the corect order) the particle used in this blob
del_from_solNoneNonesupress corectly the block of the solutions
put_B_sol_uptodateSol_secNoneput the solution status uptodate with this block definition
redefine_blockInit_entryNoneredifine block


!! Mod_file

Sort of Template in order to write correctly output file

!! Option

Store all the option for the Program MadAnalyzer file:

Block_name TAG * default value* utility
MW_Gen 1. 1 In ECS, choice which propagator to allign 1: thiner 2: nearest of the neutrino
MW_Gen 2. 1 In Blob, choice which propagator to allign 1: thiner 2: nearest
MW_Gen 3. 4 Maximal number of ECS consider
MW_Gen 4. T Use type 1 solution for blob
MW_Gen 5. T Use type 2 solution for blob
MW_Gen 6. T Use type 3 solution for blob
MW_Gen 11. T Authorize ECS type A
MW_Gen 12. T Authorize ECS type B
MW_Gen 13. T Authorize ECS type C
MW_Gen 14. T Authorize ECS type D
MW_Gen 15. T Authorize ECS type E
MW_Gen 16. T Authorize ECS type F
MW_Run 3. T control the efficiency of each block

!! Multi_list

Special list with two level of list.

-- Main.OlivierMattelaer - 07 Feb 2008