wiki:UserModel

Version 1 (modified by trac, 6 years ago) (diff)

--

<br />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 canc 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 /><br /><br />1/ Editing the .dat files.<br /><br />a/ particles.dat<br />----------------<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:<br />For new kind of particle that do not possess PDG Code you can enter the number you want, just<br />ensure it is not yet used.<br />*<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 /><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 /><br />ABOUT INTERACTION NAME:<br />Pay attention to the fact that interactions<br /><br />f' f s and f f' s are different...and therefore need two differents<br />names! like for example: gfpfs and gffps...<br />*<br /><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 /><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 = eecw/sw<br /><br />a VVS interaction is written: gzzh = dcmplx( ee2/sc2Halfv, 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 /><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 /><br /><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 />*<br />6/ Change the proc_card.dat to do the process you wish:<br />for example:<br /><br />pp&gt;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 />*<br />7/ Do ./bin/newprocess<br />*<br />8/ Now you can generate some events: ./bin/generate_events

Under construction

-- Main.JohanAlwall - 01 Aug 2007