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 |
| 2 | This text file will instruct you about what to do[[br]] |
| 3 | step 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 | |
| 10 | What 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]] |
| 32 | To do things properly, make your own usermod directory to let the[[br]] |
| 33 | original 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 |