Changes between Version 2 and Version 3 of UserModel


Ignore:
Timestamp:
Apr 29, 2012, 7:10:20 PM (13 years ago)
Author:
Olivier Mattelaer
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UserModel

    v2 v3  
    11
    2 
    3 <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 = 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]][[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>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
     2This text file will instruct you about what to do[[br]]
     3step by step in order to use the "user mode" of madgraph.
     4[[br]]
     5 [[br]]
     6 
     7 All you need is in Model/usrmod directory.[[br]]
     8 
     9 
     10What you can see here is [[br]]
     11 [[br]]
     12 
     13   1. Three ".dat" files you'll have to edit to enter[[br]]your own model...[[br]]
     14 [[br]]
     15 
     16   2. A directory wich contains part of files that will be used to create[[br]]
     17 ".f" and ".inc" files needed by madgraph; this directory[[br]]
     18 is called Header_and_footer... you don't need to care about this[[br]]
     19 [[br]]
     20   3. ConversionScript.pl:[[br]]
     21  The perl script wich mix information from Header_and_footer[[br]]
     22  files and from .dat files...[[br]]
     23 [[br]]
     24   4. testprog.f[[br]]
     25  a little code that permti to check directly if all values[[br]]
     26  printed are the ones defined in param_card.dat.[[br]]
     27 [[br]]
     28   5. couplingsvalue.f[[br]]
     29  Slightly the same role than testprog.f vut produce a text file[[br]]
     30  containing in a table the list of couplings and their values[[br]]
     31 [[br]]
     32To do things properly, make your own usermod directory to let the[[br]]
     33original one intact, let' say you call it "z_prime"[[br]]
     34 
     35   1. Editing the .dat files.[[br]]
     36 [[br]]
     37      a. particles.dat[[br]]
     38 [[br]]
     39 This file lists all particles of the model.[[br]]
     40 The basis used here is Standard Model particles.[[br]]
     41 [[br]]
     42 There are two very important tags you have to take into account:[[br]]
     43 MODEL EXTENSION and END.[[br]]
     44 Any new particle you want to use has to be described between those ones.[[br]]
     45 [[br]]
     46 For example if you need a Z' you may write like the following:[[br]]
     47 [[br]]
     48 #MODEL EXTENSION[[br]]
     49 zp zp V W ZPMASS ZPWIDTH S ZP 32[[br]]
     50 # END[[br]]
     51 [[br]]
     52 [[br]]
     53 ATTENTION: use space instead of TAB between chars...[[br]]
     54 [[br]]
     55 The two first columns indicate particle and anti-particle names[[br]]
     56 The third is about particles type (Vector, Fermion or Scalar)[[br]]
     57 The fourth say how madgraph has to represent it on Feynman diagrams.[[br]]
     58 The fifth gives the variable name for the mass (max. 7 char.)[[br]]
     59 The sixth gives the variable name for the width (max.7 char.)[[br]]
     60 The seventh say if particles color type is singlet (S), triplet (T), or octet (O).[[br]]
     61 The eigth gives the label name in Feynman diagrams.[[br]]
     62 and finally the last one is the PDGCode of the particle.[[br]]
     63 [[br]]
     64[[br]]
     65{{{
     66 ABOUT PDGCODE:
     67 For new kind of particle that do not possess PDG Code you can enter the number you want, just
     68 ensure it is not yet used.
     69}}}
     70[[br]]
     71 [[br]]
     72 Now once the new particles are entered, we have to deal with interactions.[[br]]
     73 So let's move on to interaction.dat file[[br]]
     74 [[br]]
     75      b. interaction.dat[[br]]
     76 [[br]]
     77 As you can see, all Standard Model vertices are listed by type.[[br]]
     78 At the end of the file you can find the USRVertex part wich is the one[[br]]
     79 you have to edit.[[br]]
     80 [[br]]
     81 You can do like te following:[[br]]
     82 [[br]]
     83 # USRVertex[[br]]
     84 zp zp z GNNZ QED[[br]]
     85 [[br]]
     86 wich gives the vertex name (you choose the one you want - madgraph is[[br]]
     87 full of freedom!) and type (QED) for Z'Z'Z interaction.[[br]]
     88 [[br]]
     89{{{
     90 ABOUT INTERACTION NAME:
     91 Pay attention to the fact that interactions
     92 f' f s and f f' s are different...and therefore need two differents
     93 names! like for example: gfpfs and gffps...
     94}}}
     95
     96 [[br]]
     97 Ok this is fine but you still have to give the name of all parameters[[br]]
     98 that will have to be used in all vertices definitions.[[br]]
     99 [[br]]
     100      c. VariableName.dat[[br]]
     101 [[br]]
     102 Suppose you need an exotic coupling like:[[br]]
     103 [[br]]
     104 GNNZ= param1/(param2*'''2)'''sqrt(param3)[[br]]
     105 [[br]]
     106 The way to declare you paramaters is very simple: do it like the following:[[br]]
     107 [[br]]
     108 write this:[[br]]
     109 [[br]]
     110 param1 #comment for the first param[[br]]
     111 param2 #comment for second param[[br]]
     112 param3 #comment for third param[[br]]
     113 [[br]]
     114 in VariableName.dat... that's all. This will permit to declare[[br]]
     115 parameters in input.inc file, and write comments in param_card.dat[[br]]
     116 automatically.[[br]]
     117 [[br]]
     118 Obviously, you cannot declare parameter that are already existing in[[br]]
     119 particle.dat like masses and width, nor ones declared in[[br]]
     120 Header_and_Footer/coupl_header file...[[br]]
     121 [[br]]
     122 [[br]]
     123   2. Run the shell script ./ConversionScript.pl[[br]]
     124 [[br]]
     125 CAUTION: it will ask you wether you want to keep old couplings.f and[[br]]
     126  param_card.dat that you maybe changed in a previous run. The goam[[br]]
     127  here is to avoid to loose all changes you would have done before, in[[br]]
     128  other words: save you time and energy. In the case you answer by[[br]]
     129  "yes", old files are stored in the OldFiles directory, with an[[br]]
     130  incrementation.[[br]]
     131 [[br]]
     132[[br]]
     133   3. Look the results...[[br]]
     134 What did the perl script do?[[br]]
     135 [[br]]
     136 It simply looked to what you entered in particles.dat,[[br]]
     137 interactions.dat and VariableName.dat and send those informations to[[br]]
     138 coupl.inc, couplings.f, input.inc, printout.f, ident_card.dat,[[br]]
     139 lha_reading.f and param_card.dat.[[br]]
     140 [[br]]
     141 What you still need to do now is to edit two files:[[br]]
     142 couplings.f and param_card.dat.[[br]]
     143 [[br]]
     144 Let's see what we find in couplings.f:[[br]]
     145 [[br]]
     146 Near the end of the file you see something like:[[br]]
     147 [[br]]
     148 c UserMode couplings[[br]]
     149 [[br]]
     150 [[br]]
     151  GNNZ=1d0[[br]]
     152 [[br]]
     153 [[br]]
     154 Instead of 1d0 wich is obviously the default value you have to edit[[br]]
     155 the true couplings value you want...this is the hard work part for[[br]]
     156 you![[br]]
     157 If the coupling is of the form VVV then it is declared as double[[br]]
     158 precision (All declarations are made in coupl.inc)[[br]]
     159 If the coupling is of the form VVSS, VVS, SSS, SSSS, VSS, VVV it is[[br]]
     160 declared as double complex and if the type is FFS or FFV, it is the[[br]]
     161 same thing BUT there is the separation between Vector and Axial part[[br]]
     162 [[br]]
     163 Example:[[br]]
     164 a VVV interaction is written: gwwz = ee*cw/sw[[br]]
     165 [[br]]
     166 a VVS interaction is written: gzzh = dcmplx( ee2/sc2*Half*v, Zero )[[br]]
     167 where the first term in parenthesis indicates the real part and the[[br]]
     168 second the imaginary.[[br]]
     169 [[br]]
     170 a FFS interaction is written: ghtop(1) = dcmplx( -mtMS/v, Zero )[[br]]
     171  ghtop(2) = dcmplx( -mtMS/v, Zero )[[br]]
     172 [[br]]
     173 [[br]]
     174 To be sure to how to enter differents kind of vertices, check out the HELAS manual:[[br]]
     175 HELAS: HELicity Amplitude Subroutines for Feynman Diagram Evaluation[[br]]
     176 (Murayama,Watanabe,Hagiwara,Jan. 1992)[[br]]
     177 [[br]]
     178 
     179   4. Adapt param_card.dat to your business[[br]]
     180 [[br]]
     181 Your masses and widths variables are automatically inserted in[[br]]
     182 param_card.dat. By default they are set at 100 and 1 GeV respectively.[[br]]
     183 Then you just have to change those ones for you convinience...[[br]]
     184 
     185   5. Run the following to make a testprogram and check that everything[[br]]
     186 compiles and that the masses, widths and couplings are set as they[[br]]
     187 should:[[br]]
     188 [[br]]
     189  make testprog[[br]]
     190  ./testprog[[br]]
     191 [[br]]
     192  or[[br]]
     193 [[br]]
     194  make couplings[[br]]
     195  ./couplingsvalue[[br]]
     196 [[br]]
     197 It will show you wether good values are assigned to good variables...[[br]]
     198 [[br]]
     199
     200   6. Change the proc_card.dat to do the process you wish:[[br]]
     201 for example:[[br]]
     202 [[br]]
     203 pp>zpzp #First Process[[br]]
     204 99 #Max QCD couplings[[br]]
     205 99 #Max QED couplings[[br]]
     206 With the model called z_prime[[br]]
     207 [[br]]
     208 Now you're ready to generate the smatrix. [[br]]
     209 [[br]]
     210
     211   7. Do ./bin/newprocess[[br]]
     212   8. Now you can generate some events: ./bin/generate_events
    4213
    5214Under construction
     
    7216-- Main.JohanAlwall - 01 Aug 2007
    8217
     218
     219