Version 2 (modified by trac, 8 years ago) (diff)


MadWeight Analyzer Class



!! variable
pidintasked pid number
MGintasked MadGraph intern number
massfloat0 mass of the particle
motherParticle0 mother of the particle
neutrinoint0 1 if this particle is a neutrino
externalintautomatic 1 if this is an external particle
twinParticle0 Particle comming from the same propagator

Optional variable:

all_motherlist of Particlelist of all mother of the particle
levelint number a propa before himself (with himself include)
!! routine
add_motherParticleNone define particle as the mother of this particle
def_all_motherNonelist define 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
channelstrinput say if it is a S or T channel
widthfloat0 width of the propagator
!! routine
def_desintegation 2 Particle None define this two particle like child and define in this two who are the mother


!! variable
neutrinointautomatic 1 if this particle is a neutrino
externalint1 1 if this is an external particle
widthint-1 width of the particle (-1 if external particle)
Optional variable
tf_levelintError 0-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),ParticleNone add particle with MG number in the diagram
contains_particleParticlelogicchek if the particle belongs to this diagram
define_levelNoneNone define for all the content the level: number a propa before himself (with himself include)
define_neut_contentNoneNone define neutrino content of the diagram
order_in_levelNoneNone reordering 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)None associate 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)None select 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_codeNoneNone create 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
main Particledefinegives 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_ecsECSNone put this blob in the blob content of ECS
supress_identical_solutionNoneNone supress identical solution



!! variable
num_fuseint0 number of fuse particle in the solution
sol_tagstrdef type 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_neutintauto number of neutrion in the ECS
intrinsecintauto number of fondamental particle in ECS
!! routine
define_blobMG_diagNone define 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_blockNonenone order 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_sectordef to 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_solutionsblobNone complete 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)
this solutions try to be an intermediate solution between the two
find_beta_solutionblobNone find 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_blockblockNone if 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_varnone put 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_inNoneNone delete blok '1' but only if the particle is an external one||


define:store information on a Block.


!! variable
sol_secsolution_sectordef this blob is linked to one solution
chgt_varstrdef which 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_contentNoneNone define (in the corect order) the particle used in fuse sector (routine overwirtted in other case)
give_stop_reasonlogNonestore log end message


!! routine


def_order_contentNoneNone define (in the corect order) the particle used in ECS


!! routine
change_chgt_varnewNone change the changement of variable associated
def_order_contentNoneNone define (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