******************************************************************************* * FEYN.KUMAC, PAW macro for drawing Feynman diagrams. Version 4.2 * * Derek Lane, lane@iastate.edu http://www.public.iastate.edu/~lane * * Ames HEP Group, Iowa State University http://www.public.iastate.edu/~alhep * * Member of DELPHI collaboration at CERN http://wwwcn1.cern.ch/~lane * ******************************************************************************* macro feyn message '---------------------------------------------------------------------' message '|FEYN.KUMAC -- A set of PAW macros for drawing Feynman diagrams by |' message '| using the mouse to point-and-click on "buttons" that |' message '| appear along the sides of the graphics window. |' message '| Commands can be recorded in the file feynrec.kumac |' message '| (essentially a kumac file) which can then be editted |' message '| and replayed. |' message '| |' message '| More help available by clicking on the HELP "button" |' message '| or by typing EXEC FEYN#HELP |' message '| |' message '---------------------------------------------------------------------' if ($vexist(feyninitted) = 0) then shell echo " " > feynrec.kumac exec init message graphical in feyn text 10.0 19.00 'FEYN.KUMAC' 0.6 0 C | FEYN#LABEL text 10.0 18.35 'Version 4.2' 0.4 0 C | FEYN#LABEL exec graphicalhelp endif exec buttons return ****************************************************************************** macro help message '---------------------------------------------------------------------' message '|FEYN.KUMAC -- A set of PAW macros for drawing Feynman diagrams by |' message '| using the mouse to point-and-click on "buttons" that |' message '| appear on along the sides of the graphics window. |' message '| Commands can be recorded in the file feynrec.kumac |' message '| (essentially a kumac file) which can then be editted |' message '| and replayed. |' message '| |' message '|Invocation: From within a PAW session, simply type EXEC FEYN |' message '| (assuming the file feyn.kumac is available to be |' message '| executed). |' message '| |' message '|Commands: Below are the available commands (i.e. macros) in |' message '| this package. They can be invoked at the PAW prompt |' message '| but the whole idea of the point-and-click method is |' message '| not to have to type in commands. The only exception |' message '| is FEYN#COMMAND which allows the user to type in a |' message '| PAW command and have it saved in the recording file. |' message '| |' message '| FEYN#HELP -- Give you the message your looking at now. |' message '| FEYN#INIT -- Clears screen. Options: A=no axis, B=no box. |' message '| FEYN#FERMION -- Draw a fermion line (with arrow). |' message '| FEYN#SEGMENT -- Draw a solid line segment. |' message '| FEYN#HIGGS -- Draw a dashed line segment. |' message '| FEYN#PHOTON -- Draw a photon. |' message '| FEYN#GLUON -- Draw a gluon. |' message '| FEYN#ARCPHOTON -- Draw a curved photon. |' message '| FEYN#ARCGLUON -- Draw a curved gluon. |' message '| FEYN#ARCSEGMENT -- Draw a curved solid line segment. |' message '| FEYN#ARCHIGGS -- Draw a curved dashed line segment. |' message '| FEYN#VERTEX -- Draw an interaction vertex. |' message '| FEYN#LABEL -- Draw text at specified point. |' message '| FEYN#BUTTONS -- Activate "buttons" in graphics window. |' message '| FEYN#ON -- Same as FEYN#BUTTONS. |' message '| FEYN#SINGLEARROW-- Draws an arrow with one arrowhead on it. |' message '| FEYN#DOUBLEARROW-- Draws an arrow with two arrowheads on it. |' message '| FEYN#SETCOLOR -- Set color. Option: color number [0..7] |' message '| FEYN#COMMAND -- Execute a PAW command and save in record file.|' message '| FEYN#BOX -- Draws a box. |' message '| FEYN#CIRCLE -- Draws a circle. |' message '| FEYN#RECON -- Turns on recording to a file. |' message '| FEYN#RECOFF -- Turns off recording to a file. |' message '| FEYN#REPLAY -- Executes the commands in the record file. |' message '| |' message '|How to use the mouse: |' message '| |' message '|To use the "buttons" in the graphics window, exec FEYN . |' message '|Select a "button" with MB1 followed by MB3 (which is annoying to |' message '|get accustomed to, but that is the way it works). To stop using |' message '|"buttons" and get the PAW> prompt back, select the OFF "button". |' message '|If you select anything other than a "button" when feyn.kumac is |' message '|expecting one, the "buttons" will be redrawn. |' message '| |' message '|How to specify points in the drawing area: |' message '| |' message '|Many buttons, once selected, need to have points specified in the |' message '|drawing area (i.e. where the line/vertex/label/etc. gets drawn). |' message '|Points are specified by clicking MB1 (MouseButton1) in the graphics|' message '|window, followed MB3 to finish entering points. (MB3 does *not* |' message '|count as a point. It simply signals paw that graphics input is |' message '|finished.) For particles, at least two points must be given (a |' message '|beginning and an end) with additional points allowing the particle |' message '|to change direction. For vertices and labels only one point is |' message '|needed (more than that causes it to appear more than once). |' message '| |' message '|Entering text for labels: |' message '| |' message '|A label is made by selecting one of the label buttons and then |' message '|specifying where on the plot the text is to go. (Note that R/C/L |' message '|stands for Right/Center/Left justification relative to the point |' message '|specified in the drawing window). The default is to prompt the |' message '|user for the text of the label. However, the user can build a |' message '|by first clicking on the characters at the bottom of the PAW window|' message '|with MB1 before clicking on a label button (with MB1 followed by |' message '|MB3, i.e. the usual way). This is supposed to be an easy way to |' message '|enter particle names and other special symbols without having to |' message '|bother with a convoluted, messy, and confusing expression detailing|' message '|fonts and character sets (for which most people will have to look |' message '|in the PAW manual) when all one wants to draw is a pi+ or Sigma0. |' message '|For example, clicking with MB1 on nu..bar..sub..e..L LABEL and |' message '|then MB3 lets the user draw the symbol for an electron-neutrino. |' message '|Another example, B..sup..0..reg.. -> ..D..sub..s..reg..sup..*..+.. |' message '|reg..rho..sup..- produces something like B0 -> Ds*+ rho- (spaces |' message '|added here for clarity). This sounds complicated but it is much |' message '|easier to do than to read how to do. |' message '| |' message '|If you choose to enter text from the keyboard, some popular |' message '|characters you may want to use might be: |' message '| electron: e^-! positron: e^+! neutral D: D^0! |' message '| neutrino: [n] gamma: [g] Bs: B?s! |' message '| electron neutrino: [n]?e! muon neutrino: [n]?[m]! |' message '|For antiparticles, use FEYN#SEGMENT to draw a bar on top or try |' message '|something like this => antiproton: p&^"-#! or p&^>- 0) then shell echo '======================================================================= Date' $DATE ' Time' $TIME >> feynrec.kumac shell echo null [lmar] [rmar] [bmar] [tmar] [1] '\| FEYN#INIT' >> feynrec.kumac shell echo igset lwid 6.0 '\;' igset plci 1 '\;' igset fais 1 '\;' igset faci 1 '\;' igset txci 1 '\| FEYN#INIT' >> feynrec.kumac endif if ($vexist(feyninitted) = 0) then vec/create feyninitted i endif if ($vexist(feynbuttonsdrawn) <> 0) then vec/delete feynbuttonsdrawn endif return ****************************************************************************** macro drawbuttons1 lmar = 2.0 rmar = 18.0 bmar = 2.0 tmar = 18.0 selnt 1 igset plci 1 igset txci 1 igset ltyp 1 igset fais 0 igset faci 1 xbox1 = [rmar] + 0.2 xbox2 = [rmar] + 1.8 * HELP button ybox1=17.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'HELP' 0.25 0 C * INIT button ybox1=16.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'INIT' 0.25 0 C * FERMION button ybox1=15.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset fais 1 arline [xbox1]+0.1 [ybox1]+0.5 [xbox2]-0.1 [ybox1]+0.5 0.3 igset fais 0 * SEGMENT button ybox1=14.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 line [xbox1]+0.1 [ybox1]+0.5 [xbox2]-0.1 [ybox1]+0.5 * HIGGS button ybox1=13.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset ltyp 2 line [xbox1]+0.1 [ybox1]+0.5 [xbox2]-0.1 [ybox1]+0.5 igset ltyp 1 * PHOTON button ybox1=12.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset plci 4 helix [xbox1]+0.1 [ybox1]+0.6 [xbox2]-0.1 [ybox1]+0.6 0.1 4.0 0 igset plci 1 * GLUON button ybox1=11.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset plci 2 helix [xbox1]+0.1 [ybox1]+0.8 [xbox2]-0.1 [ybox1]+0.8 0.29 3.0 50 igset plci 1 * ARCPHOTON button ybox1=10.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset plci 4 archelix [xbox1]+0.1 [ybox1]+0.2 [xbox2]-0.1 [ybox1]+0.2 0.10 5.0 0 0.65 igset plci 1 * ARCGLUON button ybox1=9.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset plci 2 archelix [xbox1]+0.1 [ybox1]+0.2 [xbox2]-0.1 [ybox1]+0.2 0.25 4.0 80 0.65 igset plci 1 * ARCSEGMENT button ybox1=8.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 archelix [xbox1]+0.1 [ybox1]+0.2 [xbox2]-0.1 [ybox1]+0.2 0.08 1.0 0 0.65 * ARCHIGGS button ybox1=7.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset ltyp 2 archelix [xbox1]+0.1 [ybox1]+0.2 [xbox2]-0.1 [ybox1]+0.2 0.08 1.0 0 0.65 igset ltyp 1 * VERTEX button ybox1=6.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset fais 1 fpoint [xbox1]+([xbox2]-[xbox1])/2.0 [ybox1]+0.5 0.1 igset fais 0 * SINGLEARROW button ybox1=5.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 arrow [xbox1]+0.1 [xbox2]-0.1 [ybox1]+0.5 [ybox1]+0.5 0.3 igset plci 1 * DOUBLEARROW button ybox1=4.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 arrow [xbox1]+0.1 [xbox2]-0.1 [ybox1]+0.5 [ybox1]+0.5 -0.3 igset plci 1 * PAWCMD button ybox1=3.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'PAWCMD' 0.25 0 C * OFF button ybox1=2.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'OFF' 0.25 0 C if ($vexist(feyncolor) = 0) then vec/create feyncolor i 1 endif selnt 10 igset plci $eval(feyncolor) igset txci $eval(feyncolor) igset faci $eval(feyncolor) igset fais 1 if ($vexist(feynbuttonsdrawn) = 0) then vec/create feynbuttonsdrawn i endif return ****************************************************************************** macro drawbuttons2 lmar = 2.0 rmar = 18.0 bmar = 2.0 tmar = 18.0 selnt 1 igset plci 1 igset txci 1 igset ltyp 1 igset fais 0 igset faci 1 xbox1=[lmar]-1.8 xbox2=[lmar]-0.2 * WHITE button ybox1=17.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.37 'WHITE' 0.25 0 C * BLACK button ybox1=16.0 igset faci 1; igset fais 1 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset faci 1; igset fais 0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset txci 0 text [xbox1]+0.8 [ybox1]+0.37 'BLACK' 0.25 0 C igset txci 1 * RED button ybox1=15.0 igset faci 2; igset fais 1 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset faci 1; igset fais 0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset txci 0 text [xbox1]+0.8 [ybox1]+0.37 'RED' 0.25 0 C igset txci 1 * GREEN button ybox1=14.0 igset faci 3; igset fais 1 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset faci 1; igset fais 0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset txci 0 text [xbox1]+0.8 [ybox1]+0.37 'GREEN' 0.25 0 C igset txci 1 * BLUE button ybox1=13.0 igset faci 4; igset fais 1 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset faci 1; igset fais 0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset txci 0 text [xbox1]+0.8 [ybox1]+0.37 'BLUE' 0.25 0 C igset txci 1 * YELLOW button ybox1=12.0 igset faci 5; igset fais 1 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset faci 1; igset fais 0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset txci 0 text [xbox1]+0.8 [ybox1]+0.37 'YELLOW' 0.25 0 C igset txci 1 * PURPLE button ybox1=11.0 igset faci 6; igset fais 1 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset faci 1; igset fais 0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset txci 0 text [xbox1]+0.8 [ybox1]+0.37 'PURPLE' 0.25 0 C igset txci 1 * AQUA button ybox1=10.0 igset faci 7; igset fais 1 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset faci 1; igset fais 0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 igset txci 0 text [xbox1]+0.8 [ybox1]+0.37 'AQUA' 0.25 0 C igset txci 1 * BOX button ybox1=9.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'BOX' 0.25 0 C * CIRCLE button ybox1=8.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'CIRCLE' 0.25 0 C * NULL 1 button ybox1=7.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'NULL 1' 0.25 0 C * NULL 2 button ybox1=6.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'NULL 2' 0.25 0 C * GRID button ybox1=5.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'GRID' 0.25 0 C * REC ON button ybox1=4.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'REC ON' 0.25 0 C * REC OFF button ybox1=3.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'REC OFF' 0.25 0 C * REPLAY button ybox1=2.0 box [xbox1] [xbox2] [ybox1] [ybox1]+1 text [xbox1]+0.8 [ybox1]+0.35 'REPLAY' 0.25 0 C selnt 10 igset plci $eval(feyncolor) igset txci $eval(feyncolor) igset faci $eval(feyncolor) igset fais 1 if ($vexist(feynbuttonsdrawn) = 0) then vec/create feynbuttonsdrawn i endif return ****************************************************************************** macro drawbuttons3 lmar = 2.0 rmar = 18.0 bmar = 2.0 tmar = 18.0 selnt 1 igset plci 1 igset txci 1 igset ltyp 1 igset fais 0 igset faci 1 *Draw fundamental fermion buttons ybox1 = [bmar] - 0.6 xbox1 = [rmar] - 8.0 - 0.4 * NEUTRINO button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[n]' 0.25 0 C * LEPTON button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'l' 0.25 0 C * GENERIC FERMION button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'f' 0.25 0 C * GENERIC QUARK button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'q' 0.25 0 C * ELECTRON button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'e' 0.25 0 C * MUON button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[m]' 0.25 0 C * TAU button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[t]' 0.25 0 C * DOWN-QUARK button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'd' 0.25 0 C * UP-QUARK button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'u' 0.25 0 C * STRANGE-QUARK button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 's' 0.25 0 C * CHARM-QUARK button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'c' 0.25 0 C * BOTTOM-QUARK button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'b' 0.25 0 C * TOP-QUARK button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 't' 0.25 0 C *Draw fundamental interaction buttons ybox1 = [bmar] - 1.0 xbox1 = [rmar] - 8.0 - 0.4 * GAMMA button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[g]' 0.25 0 C * Z button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'Z' 0.25 0 C * W button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'W' 0.25 0 C * g button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'g' 0.25 0 C * H button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'H' 0.25 0 C * Axial button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'A' 0.25 0 C * Vector button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'V' 0.25 0 C *Draw meson buttons ybox1 = [bmar] - 1.4 xbox1 = [rmar] - 8.0 - 0.4 * PI button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[p]' 0.25 0 C * ETA button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[c]' 0.25 0 C * RHO button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[r]' 0.25 0 C * OMEGA button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[w]' 0.25 0 C * K button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'K' 0.25 0 C * D button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'D' 0.25 0 C * B button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'B' 0.25 0 C * PHI button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[F]' 0.25 0 C * PSI button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[y]' 0.25 0 C * UPSILON button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[U]' 0.25 0 C *Draw baryon buttons ybox1 = [bmar] - 1.8 xbox1 = [rmar] - 8.0 - 0.4 * p button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'p' 0.25 0 C * n button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'n' 0.25 0 C * N button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'N' 0.25 0 C * DELTA button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[D]' 0.25 0 C * LAMBDA button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[L]' 0.25 0 C * SIGMA button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[S]' 0.25 0 C * CHI button (CASCADE) xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[X]' 0.25 0 C * OMEGA button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '[W]' 0.25 0 C * X button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'X' 0.25 0 C * h button xbox1 = [xbox1] + 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 'h' 0.25 0 C *Draw special function buttons ybox1 = [bmar] - 0.6 + 0.4 xbox1 = [rmar] - 2.0 * BAR button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+1.2 [ybox1] [ybox1]+0.4 text [xbox1]+0.6 [ybox1]+0.075 'bar' 0.25 0 C * SUPerscript button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+1.2 [ybox1] [ybox1]+0.4 text [xbox1]+0.6 [ybox1]+0.075 'sup' 0.25 0 C * SUBscript button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+1.2 [ybox1] [ybox1]+0.4 text [xbox1]+0.6 [ybox1]+0.075 'sub' 0.25 0 C * REGularscript button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+1.2 [ybox1] [ybox1]+0.4 text [xbox1]+0.6 [ybox1]+0.075 'reg' 0.25 0 C *Draw charge buttons ybox1 = [bmar] - 0.6 + 0.4 xbox1 = [rmar] - 0.8 * PLUS button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '+' 0.25 0 C * MINUS button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '-' 0.25 0 C * ZERO button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '0' 0.25 0 C * STAR button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '*' 0.25 0 C *Draw special character buttons ybox1 = [bmar] - 0.6 + 0.4 xbox1 = [rmar] - 0.4 * LEFT-PARENTHESIS button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '(' 0.25 0 C * RIGHT-PARENTHESIS button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 ')' 0.25 0 C * GOES-TO button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 '"5#' 0.25 0 C * SPACE button ybox1 = [ybox1] - 0.4 box [xbox1] [xbox1]+0.4 [ybox1] [ybox1]+0.4 text [xbox1]+0.2 [ybox1]+0.075 ' ' 0.25 0 C *Draw L/C/R LABEL buttons ybox1 = [bmar] - 0.7333333 + 0.5333333 xbox1 = [rmar] + 0.2 * L LABEL button ybox1 = [ybox1] - 0.5333333 box [xbox1] [xbox1]+1.6 [ybox1] [ybox1]+0.5333333 text [xbox1]+0.8 [ybox1]+0.1166666 'L LABEL' 0.25 0 C * C LABEL button ybox1 = [ybox1] - 0.5333333 box [xbox1] [xbox1]+1.6 [ybox1] [ybox1]+0.5333333 text [xbox1]+0.8 [ybox1]+0.1166666 'C LABEL' 0.25 0 C * R LABEL button ybox1 = [ybox1] - 0.5333333 box [xbox1] [xbox1]+1.6 [ybox1] [ybox1]+0.5333333 text [xbox1]+0.8 [ybox1]+0.1166666 'R LABEL' 0.25 0 C selnt 10 igset plci $eval(feyncolor) igset txci $eval(feyncolor) igset faci $eval(feyncolor) igset fais 1 if ($vexist(feynbuttonsdrawn) = 0) then vec/create feynbuttonsdrawn i endif return ****************************************************************************** macro on exec buttons return ****************************************************************************** macro buttons 1=A lmar = 2.0 rmar = 18.0 bmar = 2.0 tmar = 18.0 if ($vexist(feyninitted) = 0) then shell cat > feynrec.kumac exec init message graphical in buttons exec graphicalhelp endif exec drawbuttons1 exec drawbuttons2 exec drawbuttons3 buttonloop: message '---------------------------------------------------------------------' if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: selnt 1 vlocate xpts ypts '+' selnt 10 numpts = $vlen(xpts,1) if ([numpts] < 1) goto nobutton xpt1=xpts([numpts]) ypt1=ypts([numpts]) if ([xpt1] > [rmar]).and.([ypt1] > [bmar]).and.([ypt1] < [tmar]) goto buttoncheck1 if ([xpt1] < [lmar]).and.([ypt1] > [bmar]).and.([ypt1] < [tmar]) goto buttoncheck2 if ([ypt1] < [bmar]) goto buttoncheck3 goto nobutton buttoncheck1: xbox1=[rmar]+0.2 xbox2=[rmar]+1.8 if ([ypt1] > 17.0).and.([ypt1] < 18.0) then exec help ; goto buttonloop endif if ([ypt1] > 16.0).and.([ypt1] < 17.0) then exec init ; exec drawbuttons1; exec drawbuttons2; exec drawbuttons3; goto buttonloop endif if ([ypt1] > 15.0).and.([ypt1] < 16.0) then exec fermion ; goto buttonloop endif if ([ypt1] > 14.0).and.([ypt1] < 15.0) then exec segment ; goto buttonloop endif if ([ypt1] > 13.0).and.([ypt1] < 14.0) then exec higgs ; goto buttonloop endif if ([ypt1] > 12.0).and.([ypt1] < 13.0) then exec photon ; goto buttonloop endif if ([ypt1] > 11.0).and.([ypt1] < 12.0) then exec gluon ; goto buttonloop endif if ([ypt1] > 10.0).and.([ypt1] < 11.0) then exec arcphoton ; goto buttonloop endif if ([ypt1] > 9.0).and.([ypt1] < 10.0) then exec arcgluon ; goto buttonloop endif if ([ypt1] > 8.0).and.([ypt1] < 9.0) then exec arcsegment ; goto buttonloop endif if ([ypt1] > 7.0).and.([ypt1] < 8.0) then exec archiggs ; goto buttonloop endif if ([ypt1] > 6.0).and.([ypt1] < 7.0) then exec vertex ; goto buttonloop endif if ([ypt1] > 5.0).and.([ypt1] < 6.0) then exec singlearrow ; goto buttonloop endif if ([ypt1] > 4.0).and.([ypt1] < 5.0) then exec doublearrow ; goto buttonloop endif if ([ypt1] > 3.0).and.([ypt1] < 4.0) then exec command ; goto buttonloop endif if ([ypt1] > 2.0).and.([ypt1] < 3.0) then goto finish endif goto nobutton buttoncheck2: xbox1=[lmar]-1.8 xbox2=[lmar]-0.2 if ([ypt1] > 17.0).and.([ypt1] < 18.0) then exec setcolor 0 ; goto buttonloop endif if ([ypt1] > 16.0).and.([ypt1] < 17.0) then exec setcolor 1 ; goto buttonloop endif if ([ypt1] > 15.0).and.([ypt1] < 16.0) then exec setcolor 2 ; goto buttonloop endif if ([ypt1] > 14.0).and.([ypt1] < 15.0) then exec setcolor 3 ; goto buttonloop endif if ([ypt1] > 13.0).and.([ypt1] < 14.0) then exec setcolor 4 ; goto buttonloop endif if ([ypt1] > 12.0).and.([ypt1] < 13.0) then exec setcolor 5 ; goto buttonloop endif if ([ypt1] > 11.0).and.([ypt1] < 12.0) then exec setcolor 6 ; goto buttonloop endif if ([ypt1] > 10.0).and.([ypt1] < 11.0) then exec setcolor 7 ; goto buttonloop endif if ([ypt1] > 9.0).and.([ypt1] < 10.0) then exec box ; goto buttonloop endif if ([ypt1] > 8.0).and.([ypt1] < 9.0) then exec circle ; goto buttonloop endif if ([ypt1] > 7.0).and.([ypt1] < 8.0) then *exec label L ; goto buttonloop message NULL 1 is not defined. endif if ([ypt1] > 6.0).and.([ypt1] < 7.0) then *exec label C ; goto buttonloop message NULL 2 is not defined. endif if ([ypt1] > 5.0).and.([ypt1] < 6.0) then *exec label R ; goto buttonloop exec gridit ; goto buttonloop endif if ([ypt1] > 4.0).and.([ypt1] < 5.0) then exec recon ; goto buttonloop endif if ([ypt1] > 3.0).and.([ypt1] < 4.0) then exec recoff ; goto buttonloop endif if ([ypt1] > 2.0).and.([ypt1] < 3.0) then exec replay ; goto buttonloop endif goto nobutton buttoncheck3: ybox1 = [bmar] - 0.7333333 + 0.5333333 xbox1 = [rmar] + 0.2 ybox1 = [ybox1] - 0.5333333 if ([ypt1] > [ybox1]).and.([ypt1] < [ybox1]+0.5333333).and.([xpt1] > [xbox1]).and.([xpt1] < [xbox1]+1.6) then exec label L ; goto buttonloop endif ybox1 = [ybox1] - 0.5333333 if ([ypt1] > [ybox1]).and.([ypt1] < [ybox1]+0.5333333).and.([xpt1] > [xbox1]).and.([xpt1] < [xbox1]+1.6) then exec label C ; goto buttonloop endif ybox1 = [ybox1] - 0.5333333 if ([ypt1] > [ybox1]).and.([ypt1] < [ybox1]+0.5333333).and.([xpt1] > [xbox1]).and.([xpt1] < [xbox1]+1.6) then exec label R ; goto buttonloop endif goto nobutton nobutton: exec drawbuttons1 exec drawbuttons2 exec drawbuttons3 goto buttonloop finish: return ****************************************************************************** macro setcolor 1=1 if ( [1] = 0 ) then message setting color to [1] = WHITE elseif ( [1] = 1 ) then message setting color to [1] = BLACK elseif ( [1] = 2 ) then message setting color to [1] = RED elseif ( [1] = 3 ) then message setting color to [1] = GREEN elseif ( [1] = 4 ) then message setting color to [1] = BLUE elseif ( [1] = 5 ) then message setting color to [1] = YELLOW elseif ( [1] = 6 ) then message setting color to [1] = PURPLE elseif ( [1] = 7 ) then message setting color to [1] = AQUA endif igset plci [1] ; igset txci [1] ; igset faci [1] message igset plci [1] ';' igset txci [1] ';' igset faci [1] '\| FEYN#SETCOLOR' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo igset plci [1] '\;' igset txci [1] '\;' igset faci [1] '\| FEYN#SETCOLOR' >> feynrec.kumac endif if ($vexist(feyncolor) = 0) then vec/create feyncolor i [1] else vec/input feyncolor [1] endif return ****************************************************************************** macro fermion *igset plci 1 *message 'igset plci 1' '| FEYN#FERMION' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 1' '\| FEYN#FERMION' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts '-' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#FERMION: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) igset fais 1 arline [xpt1] [ypt1] [xpt2] [ypt2] 0.3 message igset fais 1 '| FEYN#FERMION' message arline [xpt1] [ypt1] [xpt2] [ypt2] 0.3 '| FEYN#FERMION' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo igset fais 1 '\| FEYN#FERMION' >> feynrec.kumac shell echo arline [xpt1] [ypt1] [xpt2] [ypt2] 0.3 '\| FEYN#FERMION' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro segment *igset plci 1 *message 'igset plci 1' '| FEYN#SEGMENT' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 1' '\| FEYN#SEGMENT' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts '-' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#SEGMENT: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) *line [xpt1] [ypt1] [xpt2] [ypt2] message line [xpt1] [ypt1] [xpt2] [ypt2] '| FEYN#SEGMENT' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo line [xpt1] [ypt1] [xpt2] [ypt2] '\| FEYN#SEGMENT' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro higgs *igset plci 1 igset ltyp 2 *message 'igset plci 1' '| FEYN#HIGGS' message 'igset ltyp 2' '| FEYN#HIGGS' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 1' '\| FEYN#HIGGS' >> feynrec.kumac shell echo 'igset ltyp 2' '\| FEYN#HIGGS' >> feynrec.kumac endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts '-' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#HIGGS: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) *line [xpt1] [ypt1] [xpt2] [ypt2] message line [xpt1] [ypt1] [xpt2] [ypt2] '| FEYN#HIGGS' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo line [xpt1] [ypt1] [xpt2] [ypt2] '\| FEYN#HIGGS' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: igset ltyp 1 message 'igset ltyp 1' '| FEYN#HIGGS' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo 'igset ltyp 1' '\| FEYN#HIGGS' >> feynrec.kumac endif return ****************************************************************************** macro photon *igset plci 4 *message 'igset plci 4' '| FEYN#PHOTON' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 4' '\| FEYN#PHOTON' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#PHOTON: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) diffx=[xpt1]-[xpt2] diffy=[ypt1]-[ypt2] distance=$sigma(sqrt(([diffx])**2.0+([diffy])**2.0)) numturns=[distance]*2 helix [xpt1] [ypt1] [xpt2] [ypt2] 0.1 [numturns] 0 message helix [xpt1] [ypt1] [xpt2] [ypt2] 0.1 [numturns] 0 '| FEYN#PHOTON' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo helix [xpt1] [ypt1] [xpt2] [ypt2] 0.1 [numturns] 0 '\| FEYN#PHOTON' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro gluon *igset plci 2 *message 'igset plci 2' '| FEYN#GLUON' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 2' '\| FEYN#GLUON' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#GLUON: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) diffx=[xpt1]-[xpt2] diffy=[ypt1]-[ypt2] distance=$sigma(sqrt(([diffx])**2.0+([diffy])**2.0)) numturns=[distance]*2 helix [xpt1] [ypt1] [xpt2] [ypt2] 0.3 [numturns] 30 message helix [xpt1] [ypt1] [xpt2] [ypt2] 0.3 [numturns] 30 '| FEYN#GLUON' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo helix [xpt1] [ypt1] [xpt2] [ypt2] 0.3 [numturns] 30 '\| FEYN#GLUON' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro arcphoton *igset plci 4 *message 'igset plci 4' '| FEYN#ARCPHOTON' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 4' '\| FEYN#ARCPHOTON' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#ARCPHOTON: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) diffx=[xpt1]-[xpt2] diffy=[ypt1]-[ypt2] distance=$sigma(sqrt(([diffx])**2.0+([diffy])**2.0)) numturns=[distance]*2 radius=[distance]/1.9 archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.15 [numturns] 0 [radius] message archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.15 [numturns] 0 [radius] '| FEYN#ARCPHOTON' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.15 [numturns] 0 [radius] '\| FEYN#ARCPHOTON' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro arcgluon *igset plci 2 *message 'igset plci 2' '| FEYN#ARCGLUON' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 2' '\| FEYN#ARCGLUON' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#ARCGLUON: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) diffx=[xpt1]-[xpt2] diffy=[ypt1]-[ypt2] distance=$sigma(sqrt(([diffx])**2.0+([diffy])**2.0)) numturns=[distance]*2 radius=[distance]/1.9 archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.5 [numturns] 30 [radius] message archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.5 [numturns] 30 [radius] '| FEYN#ARCGLUON' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.5 [numturns] 30 [radius] '\| FEYN#ARCGLUON' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro arcsegment *igset plci 1 *message 'igset plci 1' '| FEYN#SEGMENT' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 1' '\| FEYN#SEGMENT' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#ARCSEGMENT: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) diffx=[xpt1]-[xpt2] diffy=[ypt1]-[ypt2] distance=$sigma(sqrt(([diffx])**2.0+([diffy])**2.0)) radius=[distance]/1.9 archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.03 1 0 [radius] message archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.08 1 0 [radius] '| FEYN#ARCSEGMENT' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.08 1 0 [radius] '\| FEYN#ARCSEGMENT' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro archiggs *igset plci 1 igset ltyp 2 *message 'igset plci 1' '| FEYN#ARCHIGGS' message 'igset ltyp 2' '| FEYN#ARCHIGGS' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 1' '\| FEYN#ARCHIGGS' >> feynrec.kumac shell echo 'igset ltyp 2' '\| FEYN#ARCHIGGS' >> feynrec.kumac endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#ARCHIGGS: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) diffx=[xpt1]-[xpt2] diffy=[ypt1]-[ypt2] distance=$sigma(sqrt(([diffx])**2.0+([diffy])**2.0)) radius=[distance]/1.9 archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.08 1 0 [radius] message archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.08 1 0 [radius] '| FEYN#ARCHIGGS' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo archelix [xpt1] [ypt1] [xpt2] [ypt2] 0.08 1 0 [radius] '\| FEYN#ARCHIGGS' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: igset ltyp 1 message 'igset ltyp 1' '| FEYN#ARCHIGGS' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo 'igset ltyp 1' '\| FEYN#ARCHIGGS' >> feynrec.kumac endif return ****************************************************************************** macro vertex if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 1) then message 'Error in FEYN#VERTEX: no points given. Will draw nothing.' goto finish endif ind1=1 loop1: xpt1=xpts([ind1]) ypt1=ypts([ind1]) fpoint [xpt1] [ypt1] 0.1 message fpoint [xpt1] [ypt1] 0.1 '| FEYN#VERTEX' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo fpoint [xpt1] [ypt1] 0.1 '\| FEYN#VERTEX' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] <= [numpts]) goto loop1 finish: return ****************************************************************************** macro singlearrow *igset plci 1 *message 'igset plci 1' '| FEYN#SINGLEARROW' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 1' '\| FEYN#SINGLEARROW' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts '-' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#SINGLEARROW: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) arrow [xpt1] [xpt2] [ypt1] [ypt2] 0.3 message arrow [xpt1] [xpt2] [ypt1] [ypt2] 0.3 '| FEYN#SINGLEARROW' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo arrow [xpt1] [xpt2] [ypt1] [ypt2] 0.3 '\| FEYN#SINGLEARROW' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro doublearrow *igset plci 1 *message 'igset plci 1' '| FEYN#DOUBLEARROW' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 1' '\| FEYN#DOUBLEARROW' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts '-' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#DOUBLEARROW: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) arrow [xpt1] [xpt2] [ypt1] [ypt2] -0.3 message arrow [xpt1] [xpt2] [ypt1] [ypt2] -0.3 '| FEYN#DOUBLEARROW' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo arrow [xpt1] [xpt2] [ypt1] [ypt2] -0.3 '\| FEYN#DOUBLEARROW' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro recon vec/create feynrecord i |flag for recording to a file if ($os='UNIX') then |on UNIX systems message 'Turning ON recording to a file' else message 'Recording is not implemented for ' $os endif return ****************************************************************************** macro recoff vec/delete feynrecord |remove flag for recording into a file if ($os='UNIX') then |on UNIX systems message 'Turning OFF recording to a file' else message 'Recording is not implemented for ' $os endif return ****************************************************************************** macro replay if ($os='UNIX') then |on UNIX systems message 'Replaying commands from record file.' else message 'Recording is not implemented for ' $os ' but will try replaying anyway.' endif exec feynrec.kumac exec drawbuttons1 exec drawbuttons2 exec drawbuttons3 return ****************************************************************************** macro nullbutton message 'This button is not defined (NULL).' return ****************************************************************************** ****************************************************************************** macro label 1='C' lmar = 2.0 rmar = 18.0 bmar = 2.0 tmar = 18.0 labeltext='' numpts = $vlen(xpts,1) if ([numpts] > 1) then do ipt=1,[numpts]-1 xpt=xpts([ipt]) ypt=ypts([ipt]) *Check fundamental fermion buttons ybox1 = [bmar] - 0.6 xbox1 = [rmar] - 8.0 - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then * NEUTRINO button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[n]' goto endlabelloop endif * LEPTON button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'l' goto endlabelloop endif * GENERIC FERMION button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'f' goto endlabelloop endif * GENERIC QUARK button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'q' goto endlabelloop endif * ELECTRON button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'e' goto endlabelloop endif * MUON button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[m]' goto endlabelloop endif * TAU button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[t]' goto endlabelloop endif * DOWN-QUARK button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'d' goto endlabelloop endif * UP-QUARK button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'u' goto endlabelloop endif * STRANGE-QUARK button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'s' goto endlabelloop endif * CHARM-QUARK button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'c' goto endlabelloop endif * BOTTOM-QUARK button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'b' goto endlabelloop endif * TOP-QUARK button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'t' goto endlabelloop endif endif |fermions *Check fundamental interaction buttons ybox1 = [bmar] - 1.0 xbox1 = [rmar] - 8.0 - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then * GAMMA button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[g]' goto endlabelloop endif * Z button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'Z' goto endlabelloop endif * W button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'W' goto endlabelloop endif * g button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'g' goto endlabelloop endif * H button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'H' goto endlabelloop endif * Axial button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'A' goto endlabelloop endif * Vector button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'V' goto endlabelloop endif endif |interactions *Check meson buttons ybox1 = [bmar] - 1.4 xbox1 = [rmar] - 8.0 - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then * PI button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[p]' goto endlabelloop endif * ETA button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[c]' goto endlabelloop endif * RHO button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[r]' goto endlabelloop endif * OMEGA button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[w]' goto endlabelloop endif * K button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'K' goto endlabelloop endif * D button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'D' goto endlabelloop endif * B button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'B' goto endlabelloop endif * PHI button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[F]' goto endlabelloop endif * PSI button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[y]' goto endlabelloop endif * UPSILON button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[U]' goto endlabelloop endif endif |mesons *Check fundamental fermion buttons ybox1 = [bmar] - 1.8 xbox1 = [rmar] - 8.0 - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then * p button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'p' goto endlabelloop endif * n button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'n' goto endlabelloop endif * NUCLEON button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'N' goto endlabelloop endif * DELTA button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[D]' goto endlabelloop endif * LAMBDA button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[L]' goto endlabelloop endif * SIGMA button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[S]' goto endlabelloop endif * CHI button (CASCADE) xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[X]' goto endlabelloop endif * OMEGA button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'[W]' goto endlabelloop endif * X button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'X' goto endlabelloop endif * h button xbox1 = [xbox1] + 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then labeltext = [labeltext]//'h' goto endlabelloop endif endif |baryons *Check special function buttons ybox1 = [bmar] - 0.6 + 0.4 xbox1 = [rmar] - 2.0 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+1.2) then * BAR button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'&^"-#!' goto endlabelloop endif * SUPerscript button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'^' goto endlabelloop endif * SUBscript button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'?' goto endlabelloop endif * REGularscript button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'!' goto endlabelloop endif endif |special functions *Check charge buttons ybox1 = [bmar] - 0.6 + 0.4 xbox1 = [rmar] - 0.8 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then * PLUS button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'+' goto endlabelloop endif * MINUS button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'-' goto endlabelloop endif * ZERO button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'0' goto endlabelloop endif * STAR button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'*' goto endlabelloop endif endif |charge *Check special character buttons ybox1 = [bmar] - 0.6 + 0.4 xbox1 = [rmar] - 0.4 if ([xpt] > [xbox1]).and.([xpt] < [xbox1]+0.4) then * LEFT-PARENTHESIS button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'(' goto endlabelloop endif * RIGHT-PARENTHESIS button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//')' goto endlabelloop endif * GOES-TO button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//'"5#' goto endlabelloop endif * SPACE button ybox1 = [ybox1] - 0.4 if ([ypt] > [ybox1]).and.([ypt] < [ybox1]+0.4) then labeltext = [labeltext]//' ' goto endlabelloop endif endif |special characters endlabelloop: enddo endif start: if ([labeltext] = '') then message 'Enter text:' read labeltext goto start endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 1) then message 'Error in FEYN#LABEL: zero points given. Will draw nothing.' goto finish endif *igset chhe 0.35 *message 'igset chhe 0.35' '| FEYN#LABEL' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset chhe 0.35' '\| FEYN#LABEL' >> feynrec.kumac *endif ind1=1 loop1: xpt1=xpts([ind1]) ypt1=ypts([ind1]) TEXT [xpt1] [ypt1] [labeltext] 0.3 0 [1] message text [xpt1] [ypt1] [labeltext] 0.3 0 [1] '| FEYN#LABEL' sss = '\''' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo text [xpt1] [ypt1] \'' [labeltext] \'' 0.3 0 [1] '\| FEYN#LABEL' >> feynrec.kumac shell (echo text [xpt1] [ypt1] \'tmptmptmp\' 0.3 0 [1] '\| FEYN#LABEL |' sed "s/tmptmptmp/$unquote([labeltext])/g") >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] <= [numpts]) goto loop1 finish: return ****************************************************************************** macro box *igset plci 1 *message 'igset plci 1' '| FEYN#BOX' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 1' '\| FEYN#BOX' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#BOX: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) igset fais 0 box [xpt1] [xpt2] [ypt1] [ypt2] igset fais 1 message igset fais 0 '| FEYN#BOX' message box [xpt1] [xpt2] [ypt1] [ypt2] '| FEYN#BOX' message igset fais 1 '| FEYN#BOX' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo igset fais 0 '\| FEYN#BOX' >> feynrec.kumac shell echo box [xpt1] [xpt2] [ypt1] [ypt2] '\| FEYN#BOX' >> feynrec.kumac shell echo igset fais 1 '\| FEYN#BOX' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro circle *igset plci 1 *message 'igset plci 1' '| FEYN#CIRCLE' *if ($os='UNIX').and.($vexist(feynrecord) <> 0) then * shell echo 'igset plci 1' '\| FEYN#CIRCLE' >> feynrec.kumac *endif if ($vlen(xpts,1) = 0) goto dontexist vec/del xpts vec/del ypts dontexist: vlocate xpts ypts ' ' numpts = $vlen(xpts,1) if ([numpts] < 2) then message 'Error in FEYN#CIRCLE: less than 2 points given. Will draw nothing.' goto finish endif ind1=1 loop1: ind2=[ind1]+1 xpt1=xpts([ind1]) ypt1=ypts([ind1]) xpt2=xpts([ind2]) ypt2=ypts([ind2]) r=$sigma(sqrt(([xpt1]-[xpt2])**2+([ypt1]-[ypt2])**2)) message [r] igset fais 0 arc [xpt1] [ypt1] [r] message igset fais 0 '| FEYN#CIRCLE' message arc [xpt1] [ypt1] [r] '| FEYN#CIRCLE' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo igset fais 0 '\| FEYN#CIRCLE' >> feynrec.kumac shell echo arc [xpt1] [ypt1] [r] '\| FEYN#CIRCLE' >> feynrec.kumac endif ind1=[ind1]+1 if ([ind1] < [numpts]) goto loop1 finish: return ****************************************************************************** macro command commandtext = '' start: if ([commandtext] = '') then message 'Enter command text:' read commandtext goto start endif $unquote([commandtext]) message [commandtext] '| FEYN#COMMAND' if ($os='UNIX').and.($vexist(feynrecord) <> 0) then shell echo [commandtext] '\| FEYN#COMMAND' >> feynrec.kumac endif finish: return ****************************************************************************** macro gridit lmar = 2.0 rmar = 18.0 bmar = 2.0 tmar = 18.0 x1 = [lmar] + 1 loop1: line [x1] [bmar] [x1] [tmar] x1 = [x1] + 1 if ([x1] < [rmar]) goto loop1 y1 = [bmar] + 1 loop2: line [lmar] [y1] [rmar] [y1] y1 = [y1] + 1 if ([y1] < [tmar]) goto loop2 return ****************************************************************************** macro graphicalhelp text 16.3 17.35 'Help on how to use this package' 0.3 0 R | FEYN#LABEL text 16.3 16.35 'Initialize/clear the drawing area' 0.3 0 R | FEYN#LABEL text 16.3 15.35 'Draw a fermion' 0.3 0 R | FEYN#LABEL text 16.3 14.35 'Draw a line' 0.3 0 R | FEYN#LABEL text 16.3 13.35 'Draw a Higgs' 0.3 0 R | FEYN#LABEL text 16.3 12.35 'Draw a Photon/W/Z' 0.3 0 R | FEYN#LABEL text 16.3 11.35 'Draw a gluon' 0.3 0 R | FEYN#LABEL text 16.3 10.35 'Arc-photon' 0.3 0 R | FEYN#LABEL text 16.3 9.35 'Arc-gluon' 0.3 0 R | FEYN#LABEL text 16.3 8.35 'Arc-line' 0.3 0 R | FEYN#LABEL text 16.3 7.35 'Arc-Higgs' 0.3 0 R | FEYN#LABEL text 16.3 6.35 'Vertex' 0.3 0 R | FEYN#LABEL text 16.3 5.35 'Arrow' 0.3 0 R | FEYN#LABEL text 16.3 4.35 'Double Arrow' 0.3 0 R | FEYN#LABEL text 16.3 3.35 'Execute a PAW command' 0.3 0 R | FEYN#LABEL text 16.3 2.35 'Turn off buttons' 0.3 0 R | FEYN#LABEL arrow 16.5 17.7 17.5 17.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 16.5 16.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 15.5 15.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 14.5 14.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 13.5 13.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 12.5 12.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 11.5 11.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 10.5 10.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 9.5 9.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 8.5 8.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 7.5 7.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 6.5 6.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 5.5 5.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 4.5 4.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 3.5 3.5 0.3 | FEYN#SINGLEARROW arrow 16.5 17.7 2.5 2.5 0.3 | FEYN#SINGLEARROW text 3.87312 4.34057 'Turn on recording to a file' 0.3 0 L | FEYN#LABEL text 3.83973 3.77295 'Turn off recording to a file' 0.3 0 L | FEYN#LABEL text 3.83973 3.20534 'Replay recording file' 0.3 0 L | FEYN#LABEL arrow 3.77295 2.27045 4.47412 4.47412 0.3 | FEYN#SINGLEARROW arrow 3.73957 2.20367 3.90651 3.57262 0.3 | FEYN#SINGLEARROW arrow 3.73957 2.20367 3.30551 2.57095 0.3 | FEYN#SINGLEARROW text 3.83973 7.04507 'Currently Undefined' 0.3 0 L | FEYN#LABEL text 3.80634 6.31052 'Currently Undefined' 0.3 0 L | FEYN#LABEL text 3.80634 5.57596 'Turn on grid' 0.3 0 L | FEYN#LABEL arrow 3.73957 2.07012 7.14524 7.47913 0.3 | FEYN#SINGLEARROW arrow 3.73957 2.10351 5.77629 5.60935 0.3 | FEYN#SINGLEARROW arrow 3.73957 2.13689 6.44407 6.44407 0.3 | FEYN#SINGLEARROW text 3.80634 8.31386 'Draw a circle' 0.3 0 L | FEYN#LABEL text 3.77295 9.34891 'Draw a box' 0.3 0 L | FEYN#LABEL arrow 3.67279 2.17028 9.51586 9.51586 0.3 | FEYN#SINGLEARROW arrow 3.70618 2.17028 8.4808 8.4808 0.3 | FEYN#SINGLEARROW text 3.77295 14.9917 'Change drawing color' 0.3 0 L | FEYN#LABEL arrow 3.6394 2.10351 15.1586 17.2955 0.3 | FEYN#SINGLEARROW arrow 3.60601 2.20367 15.192 16.2604 0.3 | FEYN#SINGLEARROW arrow 3.60601 2.23706 15.192 15.4591 0.3 | FEYN#SINGLEARROW arrow 3.60601 2.23706 15.1586 14.6244 0.3 | FEYN#SINGLEARROW arrow 3.57262 2.20367 15.2254 13.7896 0.3 | FEYN#SINGLEARROW arrow 3.60601 2.13689 15.2254 12.8548 0.3 | FEYN#SINGLEARROW arrow 3.57262 2.10351 15.2254 11.6194 0.3 | FEYN#SINGLEARROW arrow 3.60601 2.10351 15.2254 10.7513 0.3 | FEYN#SINGLEARROW return ******************************************************************************