% GLUONLINKS.TEX (FEB. 5, 1989) % CALLED BY FEYNMAN(34).TEX. % % Routines for drawing GLUON LINKS and GLUON CAPS used by FEYNMAN.TEX. % Formerly in separate files (GLUONLINKS & GLUONCAPS). % This file is read in when \gluonlink, \gluoncap, defined in GLUONSETUP(21+), % and related commands (in \drawvetex) are used. % % GLUON LINKS are used to link \CENTRAL-type gluon lines together % (eg: \REG & \FLIPPED gluons drawn diagonally). % Syntax: \drawline\gluon[\W\CENTRAL](x,y)[number of loops]\gluonlink % \drawline\gluon[\W\CENTRAL](\pbackx,\pbacky)[number of loops] % % GLUON CAPS are used on vertical and horizontal gluons to make the % terminus of the gluon line end along the gluon axis. It then draws % a stem of length \stemlength (as though the command \BACKSTEMMED had % been issued). Principal use is when \drawvertex is used. % Syntax: \drawline\gluon[\W\FLAT](x,y)[number of loops]\gluoncap % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % GLUON LINKS % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ROUTINE FOR LINKING \CENTRAL AND \FLIPPEDCENTRAL GLUONS % \gdef\gluonlink{ \global\stemlengthx=401 \SETDIR \setadjxy \divide\adjx by -2 \divide\adjy by -2 \ifcase\LDIR \linksetupB \ifodd\LCONFIG\LINKPUT[l] \else\LINKPUT[r] \fi %\Ngluon \or \ifodd\LCONFIG \linksetupBx \LINKPUT[tr]\LINKPUT[l] %\NEgluon \else \linksetupBy \LINKPUT[tr]\LINKPUT[b] \fi \or \linksetupB \ifodd\LCONFIG\LINKPUT[t] \else\LINKPUT[b] \fi %\Egluon \or \ifodd\LCONFIG \linksetupBy \LINKPUT[br]\LINKPUT[t] %\SEgluon \else \linksetupBx \LINKPUT[br]\LINKPUT[l] \fi \or \linksetupB \ifodd\LCONFIG\LINKPUT[r] \else\LINKPUT[l] \fi %\Sgluon \or \ifodd\LCONFIG \linksetupBx \LINKPUT[bl]\LINKPUT[r] %\SWgluon \else \linksetupBy \LINKPUT[bl]\LINKPUT[t] \fi \or \linksetupB \ifodd\LCONFIG\LINKPUT[b] \else\LINKPUT[t] \fi %\Wgluon \or \ifodd\LCONFIG \linksetupBy \LINKPUT[tl]\LINKPUT[b] %\NWgluon \else \linksetupBx \LINKPUT[tl]\LINKPUT[r] \fi \else \UNIMPERROR \fi \ifodd\LDIR\relax \else \global\advance\pbackx by \adjx \global\advance\pbacky by \adjy \fi \linksetupC } % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % GLUONCAPS % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ROUTINE FOR CENTRALIZING/CAPPING GLUONS % \gdef\gluoncap{ % For centralizing gluons \global\stemlengthx=0 \ifodd\LDIR\message{NOTE: Diagonal Gluons are not Capped}\relax \else \ifcase\LCONFIG \global\stemlengthx=1000 %\REG case for NSEW \or \global\stemlengthx=1000 %\FLIPPED case (NSEW) \or \global\stemlengthx=825 %\CURLY case (NSEW) \or \global\stemlengthx=825 %\FLIPPEDCURLY case (NSEW) \or \global\stemlengthx=1030 %\FLAT case (NSEW) \or \global\stemlengthx=1030 %\FLIPPEDFLAT case (NSEW) \or \global\stemlengthx=0 %\CENTRAL case (NSEW) \or \global\stemlengthx=0 %\FLIPPEDCENTRAL case (NSEW) \or \global\stemlengthx=800 %\SQUASHED case (NSEW) \else\UNIMPERROR \fi % end \ifcase\LCONFIG \ifnum\stemlengthx>400 \global\advance\LDIR by 2 \moduloeight\LDIR \SETDIR \global\advance\LDIR by 6 \moduloeight\LDIR \setadjxy \ifodd\LCONFIG \multiply \adjx by -1 \multiply \adjy by -1 \fi \divide\adjx by 2 \divide\adjy by 2 \linksetupB \ifcase\LDIR \ifodd\LCONFIG\LINKPUT[tr] \else\LINKPUT[tl] \fi %\NGLUON \or \relax % \NEGLUON \or \ifodd\LCONFIG\LINKPUT[br] \else\LINKPUT[tr] \fi %\Egluon \or \relax % \SEgluon \or \ifodd\LCONFIG\LINKPUT[bl] \else\LINKPUT[br] \fi %\Sgluon \or \relax % \SWgluon \or \ifodd\LCONFIG\LINKPUT[tl] \else\LINKPUT[bl] \fi %\Wgluon \or \relax % \NWgluon \else \UNIMPERROR \fi \linksetupD \else\message{* NOTE: Attempt to use gluoncap of less that 401 centipoints *} \fi % End of \ifnum\stemlengthx \fi % end \ifodd } % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % AUXILIARY ROUTINES USED BY BOTH \gluonlink and \gluoncap % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \gdef\setadjxy{ \adjx=\stemlengthx \adjy=\stemlengthx % Yes, it's `x', not `y'. \multiply \adjx by \XDIR% \multiply \adjy by \YDIR% } \gdef\advancegluonlength{ \global\advance\particlelengthx by \adjx \global\advance\particlelengthy by\adjy \global\advance\gluonlengthx by \adjx \global\advance\gluonlengthy by \adjy % The new adjusted gluon lengths. } \gdef\LINKPUT[#1]{\ifnum\phantomswitch=0\put(\gluonbackx,\gluonbacky) {\oval(\stemlengthx,\stemlengthx)[#1]}\fi} \gdef\linksetupBx{\global\advance\gluonbackx by \adjx} \gdef\linksetupBy{\global\advance\gluonbacky by \adjy} \gdef\linksetupB{\linksetupBx\linksetupBy} \gdef\linksetupC{ \global\advance\pbackx by \adjx \global\advance\pbacky by \adjy \global\gluonbackx=\pbackx \global\gluonbacky=\pbacky % Take negative particle lengths into account. \BOXLENGTHX,Y remain as before. \ifnum\plengthx<0 \multiply\adjx by -1 \fi \ifnum\plengthy<0 \multiply\adjy by -1 \fi \advancegluonlength } \gdef\linksetupD{ \linksetupC \SETDIR \setadjxy \divide\adjx by 2 \divide\adjy by 2 \linksetupB \global\pbackx=\gluonbackx \global\pbacky=\gluonbacky \advancegluonlength \ifnum\phantomswitch=0\put(\pbackx,\pbacky){\line(\XDIR,\YDIR){\stemlength}}\fi \stemlengthx=\stemlength %TESTING \setadjxy \global\advance\pbackx by \adjx \global\advance\pbacky by \adjy \global\gluonbackx=\pbackx \global\gluonbacky=\pbacky \advancegluonlength % The new adjusted gluon lengths and rear positions }