= !FeynRules and MG5 = == Strategy == The idea is to use a general python-based output by !FeynRules to write out the model files for MG5 including the corresponding set of HELAS routines. == People/tasks == Responsabilities for the various parts are taken in pairs: * Will/Claude : !FeynRules Python output (model.py) written by function in Mathematica. * Will/Priscila : Python Module (!HelasProduction) to take the info in model.py and produce the corresponding HELAS library. * Will/Michel : Integration of !HelasProduction into MG5 with possible selection of the relevant subroutines in a given process == Python Strategy == This will define a full strategy for the HelasRoutine. * Feynrules should output a dictionary indicating which vertex uses which (set) of HelasRoutine * a Python-Helas Routine should looks like as (output from Mathematica) obj = Gamma(1,1,2) * P(1,4) * P(2,5) + Gamma(1,1,3) * Sigma(1,2,3,2) #High Level structure[[BR]] particles_types = ['F','F','S'] * then we should be able to combine those structure obj3 = obj1 * obj2[[BR]] obj3.simplify() * we should be able to write code in a file low_level_object = obj3.expand() # use a specific representation of the representation [[BR]] low_level_object.write_in_XXXX(output_file,particles_types) So We Need different Class Object * A LorentzObject: basic High-Level object (everything shoud derive from it). All children (Gamma,P, ...) should define multiplication/simplification between High-Level object and a representation (in the spin basis) * Variable for the concrete representation of High-Level Object, we will need an object describing (complex) variable. When this will be expanded we will need to have defined the Sum (AddVariable) and the multiplication of variable (MultVariable). Those variable should then be associate to a file description in the relevant output format. * The second basic object should be a low level variable in order to represent the basic rules extracted from the concrete representation of the HelasRoutine.