=== Caution of Warning. This page describe how a user can define a model following the MadGraph4 convention. Such type of model even if still working in 2017 are not supported anymore and do not support most of the most recent capabilities of MG5aMC. We also plan to fully remove the support of such model in future version of the code. We strongly suggest to implement model following the UFO format. === UserModel v4 This text file will instruct you about what to do[[br]] step by step in order to use the "user mode" of madgraph. [[br]] [[br]] All you need is in Model/usrmod directory.[[br]] What you can see here is [[br]] [[br]] 1. Three ".dat" files you'll have to edit to enter[[br]]your own model...[[br]] [[br]] 2. A directory wich contains part of files that will be used to create[[br]] ".f" and ".inc" files needed by madgraph; this directory[[br]] is called Header_and_footer... you don't need to care about this[[br]] [[br]] 3. ConversionScript.pl:[[br]] The perl script wich mix information from Header_and_footer[[br]] files and from .dat files...[[br]] [[br]] 4. testprog.f[[br]] a little code that permti to check directly if all values[[br]] printed are the ones defined in param_card.dat.[[br]] [[br]] 5. couplingsvalue.f[[br]] Slightly the same role than testprog.f vut produce a text file[[br]] containing in a table the list of couplings and their values[[br]] [[br]] To do things properly, make your own usermod directory to let the[[br]] original one intact, let' say you call it "z_prime"[[br]] 1. Editing the .dat files.[[br]] [[br]] a. particles.dat[[br]] [[br]] This file lists all particles of the model.[[br]] The basis used here is Standard Model particles.[[br]] [[br]] There are two very important tags you have to take into account:[[br]] MODEL EXTENSION and END.[[br]] Any new particle you want to use has to be described between those ones.[[br]] [[br]] For example if you need a Z' you may write like the following:[[br]] [[br]] #MODEL EXTENSION[[br]] zp zp V W ZPMASS ZPWIDTH S ZP 32[[br]] # END[[br]] [[br]] [[br]] ATTENTION: use space instead of TAB between chars...[[br]] [[br]] The two first columns indicate particle and anti-particle names[[br]] The third is about particles type (Vector, Fermion or Scalar)[[br]] The fourth say how madgraph has to represent it on Feynman diagrams.[[br]] The fifth gives the variable name for the mass (max. 7 char.)[[br]] The sixth gives the variable name for the width (max.7 char.)[[br]] The seventh say if particles color type is singlet (S), triplet (T), or octet (O).[[br]] The eigth gives the label name in Feynman diagrams.[[br]] and finally the last one is the PDGCode of the particle.[[br]] [[br]] [[br]] {{{ ABOUT PDGCODE: For new kind of particle that do not possess PDG Code you can enter the number you want, just ensure it is not yet used. Note that some code use a 7 digit convention for generic particle: ​http://pdg.lbl.gov/2017/reviews/rpp2017-rev-monte-carlo-numbering.pdf​ So avoid using 7 digit number as well if you do not plan to follow such convention. }}} [[br]] [[br]] Now once the new particles are entered, we have to deal with interactions.[[br]] So let's move on to interaction.dat file[[br]] [[br]] b. interaction.dat[[br]] [[br]] As you can see, all Standard Model vertices are listed by type.[[br]] At the end of the file you can find the USRVertex part wich is the one[[br]] you have to edit.[[br]] [[br]] You can do like te following:[[br]] [[br]] # USRVertex[[br]] zp zp z GNNZ QED[[br]] [[br]] wich gives the vertex name (you choose the one you want - madgraph is[[br]] full of freedom!) and type (QED) for Z'Z'Z interaction.[[br]] [[br]] {{{ ABOUT INTERACTION NAME: Pay attention to the fact that interactions f' f s and f f' s are different...and therefore need two differents names! like for example: gfpfs and gffps... }}} [[br]] Ok this is fine but you still have to give the name of all parameters[[br]] that will have to be used in all vertices definitions.[[br]] [[br]] c. VariableName.dat[[br]] [[br]] Suppose you need an exotic coupling like:[[br]] [[br]] GNNZ= param1/(param2*'''2)'''sqrt(param3)[[br]] [[br]] The way to declare you paramaters is very simple: do it like the following:[[br]] [[br]] write this:[[br]] [[br]] param1 #comment for the first param[[br]] param2 #comment for second param[[br]] param3 #comment for third param[[br]] [[br]] in VariableName.dat... that's all. This will permit to declare[[br]] parameters in input.inc file, and write comments in param_card.dat[[br]] automatically.[[br]] [[br]] Obviously, you cannot declare parameter that are already existing in[[br]] particle.dat like masses and width, nor ones declared in[[br]] Header_and_Footer/coupl_header file...[[br]] [[br]] [[br]] 2. Run the shell script ./ConversionScript.pl[[br]] [[br]] CAUTION: it will ask you wether you want to keep old couplings.f and[[br]] param_card.dat that you maybe changed in a previous run. The goam[[br]] here is to avoid to loose all changes you would have done before, in[[br]] other words: save you time and energy. In the case you answer by[[br]] "yes", old files are stored in the OldFiles directory, with an[[br]] incrementation.[[br]] [[br]] [[br]] 3. Look the results...[[br]] What did the perl script do?[[br]] [[br]] It simply looked to what you entered in particles.dat,[[br]] interactions.dat and VariableName.dat and send those informations to[[br]] coupl.inc, couplings.f, input.inc, printout.f, ident_card.dat,[[br]] lha_reading.f and param_card.dat.[[br]] [[br]] What you still need to do now is to edit two files:[[br]] couplings.f and param_card.dat.[[br]] [[br]] Let's see what we find in couplings.f:[[br]] [[br]] Near the end of the file you see something like:[[br]] [[br]] c UserMode couplings[[br]] [[br]] [[br]] GNNZ=1d0[[br]] [[br]] [[br]] Instead of 1d0 wich is obviously the default value you have to edit[[br]] the true couplings value you want...this is the hard work part for[[br]] you![[br]] If the coupling is of the form VVV then it is declared as double[[br]] precision (All declarations are made in coupl.inc)[[br]] If the coupling is of the form VVSS, VVS, SSS, SSSS, VSS, VVV it is[[br]] declared as double complex and if the type is FFS or FFV, it is the[[br]] same thing BUT there is the separation between Vector and Axial part[[br]] [[br]] Example:[[br]] a VVV interaction is written: gwwz = ee*cw/sw[[br]] [[br]] a VVS interaction is written: gzzh = dcmplx( ee2/sc2*Half*v, Zero )[[br]] where the first term in parenthesis indicates the real part and the[[br]] second the imaginary.[[br]] [[br]] a FFS interaction is written: ghtop(1) = dcmplx( -mtMS/v, Zero )[[br]] ghtop(2) = dcmplx( -mtMS/v, Zero )[[br]] [[br]] [[br]] To be sure to how to enter differents kind of vertices, check out the HELAS manual:[[br]] HELAS: HELicity Amplitude Subroutines for Feynman Diagram Evaluation[[br]] (Murayama,Watanabe,Hagiwara,Jan. 1992)[[br]] [[br]] 4. Adapt param_card.dat to your business[[br]] [[br]] Your masses and widths variables are automatically inserted in[[br]] param_card.dat. By default they are set at 100 and 1 GeV respectively.[[br]] Then you just have to change those ones for you convinience...[[br]] 5. Run the following to make a testprogram and check that everything[[br]] compiles and that the masses, widths and couplings are set as they[[br]] should:[[br]] [[br]] make testprog[[br]] ./testprog[[br]] [[br]] or[[br]] [[br]] make couplings[[br]] ./couplingsvalue[[br]] [[br]] It will show you wether good values are assigned to good variables...[[br]] [[br]] 6. Change the proc_card.dat to do the process you wish:[[br]] for example:[[br]] [[br]] pp>zpzp #First Process[[br]] 99 #Max QCD couplings[[br]] 99 #Max QED couplings[[br]] With the model called z_prime[[br]] [[br]] Now you're ready to generate the smatrix. [[br]] [[br]] 7. Do ./bin/newprocess[[br]] 8. Now you can generate some events: ./bin/generate_events Under construction -- Main.JohanAlwall - 01 Aug 2007