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. }}} [[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