| 1 | | === Plugin idea |
| 2 | | |
| 3 | | === init file: |
| | 1 | === Structure |
| | 2 | |
| | 3 | The idea of the plugin idea is to allow some modification of the code behavior without the need to modify the internal code. |
| | 4 | Allowing an easy support of many modification in the future release of MG5aMC. |
| | 5 | So far three type of modification are supported by this module: |
| | 6 | 1. New output type (for LO processes) |
| | 7 | 2. New cluster type |
| | 8 | 3. Modification of the interface (new command/modification of the command) |
| | 9 | |
| | 10 | The plugin is a directory to placed inside the PLUGIN directory of MG5aMC. |
| | 11 | It should at least have one file named "!__init!__.py" which should contains some minimal information (see below). |
| | 12 | This file should link to other python file if needed. |
| | 13 | |
| | 14 | |
| | 15 | === !__init!__.py file: |
| | 16 | |
| | 17 | The minimal information that need to be present in that file is: |
| 51 | | |
| 52 | | import helloworld as helloworld |
| 53 | | |
| 54 | | |
| 55 | | ## Does it define a new interface (will be avaible with ./bin/mg5_aMC --mode=maddm |
| | 65 | # example: import maddm_interface as maddm_interface # local file |
| | 66 | # import madgraph.various.cluster as cluster #MG5 distribution file |
| | 67 | # Three types of functionality are allowed in a plugin |
| | 68 | # 1. new output mode |
| | 69 | # 2. new cluster support |
| | 70 | # 3. new interface |
| | 71 | |
| | 72 | # 1. Define new output mode |
| | 73 | # example: new_output = {'myformat': MYCLASS} |
| | 74 | # madgraph will then allow the command "output myformat PATH" |
| | 75 | # MYCLASS should inherated of the class madgraph.iolibs.export_v4.VirtualExporter |
| | 76 | new_output = {} |
| | 77 | |
| | 78 | # 2. Define new way to handle the cluster. |
| | 79 | # example new_cluster = {'mycluster': MYCLUSTERCLASS} |
| | 80 | # allow "set cluster_type mycluster" in madgraph |
| | 81 | # MYCLUSTERCLASS should inherated from madgraph.various.cluster.Cluster |
| | 82 | new_cluster = {} |
| | 83 | |
| | 84 | |
| | 85 | # 3. Define a new interface (allow to add/modify MG5 command) |
| | 86 | # This can be activated via ./bin/mg5_aMC --mode=PLUGINNAME |
| 58 | | |
| 59 | | ## Does it define a new output mode. Need to be define |
| 60 | | new_output = {} |
| 61 | | |
| 62 | | ## The test/code have been validated up to this version |
| 63 | | latest_validated_version = '2.3.4' |
| | 90 | |
| | 91 | |
| | 92 | ########################## CONTROL VARIABLE #################################### |
| | 93 | __author__ = 'Mattelaer Olivier' |
| | 94 | __email__ = 'o.p.c.mattelaer@durham.ac.uk' |
| | 95 | __version__ = (1,0,0) |
| | 96 | minimal_mg5amcnlo_version = (2,5,0) |
| | 97 | maximal_mg5amcnlo_version = (1000,1000,1000) |
| | 98 | latest_validated_version = (2,5,0) |