diff options
author | Karl Berry <karl@freefriends.org> | 2015-02-24 23:12:22 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-02-24 23:12:22 +0000 |
commit | 6393e0fa1c1b3ab125e43ddbeecbdca740f7d6ac (patch) | |
tree | 90fba8c6dfe27fdf2da8a732c92a9bfc1202f60f /Master/texmf-dist/doc/latex/tikz-palattice | |
parent | 1c213966cd11f3051008400dd35517dc22c1e600 (diff) |
tikz-palattice (24feb15)
git-svn-id: svn://tug.org/texlive/trunk@36373 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/tikz-palattice')
9 files changed, 2032 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/Makefile b/Master/texmf-dist/doc/latex/tikz-palattice/Makefile new file mode 100644 index 00000000000..b985a3967a1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/Makefile @@ -0,0 +1,40 @@ +latex = pdflatex +packagename = tikz-palattice +INSTALL_PATH = /usr/local/share/texmf/tex/latex +e1 = example1_linear +e2 = example2_circular +e3 = example3_coordinates +e4 = example4_labels +e5 = elsa +doc = tikz-palattice_documentation + +all: doc allexamples +doc: $(doc).pdf +allexamples: $(e1).pdf $(e2).pdf $(e3).pdf $(e4).pdf $(e5).pdf + + +$(e1).pdf: $(e1).tex + $(latex) $< + +$(e2).pdf: $(e2).tex + $(latex) $< + +$(e3).pdf: $(e3).tex + $(latex) $< + +$(e4).pdf: $(e4).tex + $(latex) $< + +$(e5).pdf: $(e5).tex + $(latex) $< + +$(doc).pdf: $(doc).tex $(e1).pdf $(e5).pdf + $(latex) $< + + +install: + install -m 644 -p -D -v tikz-palattice.sty $(INSTALL_PATH)/$(packagename)/$(packagename).sty + mktexlsr + +clean: + rm $(e1).pdf $(e2).pdf $(e3).pdf $(e4).pdf $(e5).pdf diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/README b/Master/texmf-dist/doc/latex/tikz-palattice/README new file mode 100644 index 00000000000..cefce969a9e --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/README @@ -0,0 +1,13 @@ +Package Name: tikz-palattice + +Author Name: Jan Schmidt + +License: LaTeX Project Public License 1.3 + +Description: The tikz-palattice package allows for drawing a map of a particle accelerator just by +giving a list of elements - similar to lattice files for simulation software. The +package includes 12 common element types like dipoles, quadrupoles, cavities or screens, +as well as automatic labels with element names, a legend, a rule and an environment to +fade out parts of the accelerator. The coordinate of any element can be saved and used +for custom tikz drawings or annotations. Thereby, lattices can be connected to draw +injection/extraction or even a complete accelerator facility.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/elsa.tex b/Master/texmf-dist/doc/latex/tikz-palattice/elsa.tex new file mode 100644 index 00000000000..fa71259bdcb --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/elsa.tex @@ -0,0 +1,735 @@ +%% elsa.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + + +\documentclass[tikz]{standalone} +%\usepackage[ngerman]{babel} +\usepackage[english]{babel} +\usepackage[utf8]{inputenc} +\usepackage{iflang} +\usepackage{tikz-palattice} + +\sisetup{range-units=single, range-phrase=\,-\,, detect-weight=true, detect-family=true} +\addto\extrasngerman{\sisetup{locale = DE}} +\addto\extrasenglish{\sisetup{locale = US}} + +\def\scale{0.5} + +\tikzset{biggestlabel/.style={font=\bfseries\Huge,scale=2.5, align=center}} +\tikzset{biglabel/.style={font=\bfseries\Huge,scale=2, align=center}} +\tikzset{mediumlabel/.style={font=\huge,scale=2, align=center}} +\tikzset{smalllabel/.style={font=\Large,scale=2, align=center}} + + + +% --------------------------------------------------------------------- +% The lattice data given in this file is designated for drawing a map +% and should not be used for any calculations or simulation! +% --------------------------------------------------------------------- + +\begin{document} +\begin{lattice}[\scale] +\def\quadl{0.2} +\setelementcolor{dipole}{blue!55!cyan!90}[blue!55!cyan!90] +\setelementcolor{solenoid}{cyan} +\setlinecolor{drift}{red!70!black} +\def\photonbeam{black} +% "switch labels off": +%\setlabelcolor{white} + +\drawrule{(58,-7)}[5][2][0.2] +\setangle{180} +\start{(0,0)} + +%----------------------------------- +%LINAC2 +%----------------------------------- +\turnlabels +\source{\IfLanguageName{ngerman}{Quelle}{Source} pol. $e^-$}{1} +\drift{2.5} +\drift{0.5} % wand +\source{}{0.2} +\drift{0.8} +\savecoordinate{L2label} +\cavity{}{3.85} +\drift{0.35} +\quadrupole{Q1}{\quadl} +\drift{0.5} +\quadrupole{Q2}{\quadl} +\drift{0.35} +\quadrupole{Q3}{\quadl} +\drift{0.3} +\dipole{M90}{0.5}{-90} +\drift{0.3} +\quadrupole{Q4}{\quadl} +\drift{0.75} +\quadrupole{Q5}{\quadl} +\drift{1.9} +\quadrupole{Q6}{\quadl} +\drift{3.55} +\quadrupole{Q7}{\quadl} +\drift{2.1} +\corrector{KD}{\quadl} +\drift{2.1} +\dipole{}{0.4}{0}[r][0.3] % M3 +\savecoordinate{M3}[center] +\drift{0.4} +\quadrupole{Q8}{\quadl} +\drift{3} +\savecoordinate{BoosterInj} +% \begin{fade}[0] +% \drift{30} +% \end{fade} +%text +\node[mediumlabel, anchor=north, yshift=-1cm] at (L2label) +{LINAC 2\\{\Large \SI{26}{\MeV}}}; + + +%----------------------------------- +%LINAC1 +%lattice backwards to set start at M3 +%----------------------------------- +\goto{M3} +\setangle{-180} +\drift{0.44} +\quadrupole{Q7}{\quadl} +\drift{0.2} +%\turnlabels +\quadrupole{Q6}{\quadl} +%\turnlabels +\drift{0.35} +\dipole{M2}{0.3}{45} +\drift{1.1} +\dipole{M1}{0.3}{45} +\savecoordinate{M1}[center] +\turnlabels +\drift{0.58} +\quadrupole{Q5}{\quadl} +\drift{0.36} +\quadrupole{Q4}{\quadl} +\drift{0.58} +\quadrupole{Q3}{\quadl} +\drift{0.38} +\cavity{}{0.67}[0.3] %EKS +\drift{0.1} +\dipole{EKS}{0.2}{0} +\rotate{60} +\drift{0.15} +\rotate{-60} +\dipole{}{0.2}{0} +\rotate{-60} +\drift{0.15} +\rotate{60} +\dipole{}{0.2}{0} +\drift{0.07} +\quadrupole{Q2}{\quadl} +\drift{0.13} +\quadrupole{Q1}{\quadl} +\drift{0.16} +\savecoordinate{L1label} +\cavity{}{2.73} +\drift{0.35} +\dipole{}{0.35}{0} +\drift{0.17} +\drift{1.3} +\rotate{180} +\source{}{0.5} +%text +\node[mediumlabel, xshift=-1cm, anchor=east] at (L1label) +{LINAC 1\\{\Large \SI{20}{\MeV}}}; + + +%----------------------------- +%LINAC1-Bestrahlungsplatz +%----------------------------- +\goto{M1} +\setangle{90} +\turnlabels +\drift{0.25} +\drift{0.37} +\quadrupole{QT1}{\quadl} +\drift{0.2} +\quadrupole{QT2}{\quadl} +\drift{0.7} +\turnlabels +\savecoordinate{bestrahlung} +\def\bestrl{0.25} +\drift{\bestrl} +\draw [fill=none] (bestrahlung) +(-\bestrl,-\bestrl) rectangle +(\bestrl,\bestrl); +%text +\node[smalllabel, yshift=5mm, anchor=east, text width=3cm] at (bestrahlung) +{\IfLanguageName{ngerman}{Bestrahlungs\-platz}{irradiation area}}; + + +%----------------------------- +%Booster +%----------------------------- +\begin{scope} +\setelementcolor{dipole}{green!55!black}[green!55!black] +\goto{BoosterInj} +%\marker{Start}[0.5] +\setlabeldistance{0.5} +\kicker{INJSEPT}{0.88} +\savecoordinate{links} +\drift{0.44725} +\dipole{M1}{4.0056}{-30}[s][0.6] +\drift{1.7945} +\dipole{M2}{4.0056}{-30}[s][0.6] +\drift{0.35975} +\kicker{B1}{0.3875} +\drift{0.3} +\kicker{K1}{0.3875} +\drift{0.35975} +\dipole{M3}{4.0056}{-30}[s][0.6] +\drift{0.35975} +\kicker{B2}{0.3875} +\drift{0.3} +\kicker{S1}{0.3875} +\drift{0.35975} +\dipole{M4}{4.0056}{-30}[s][0.6] +\drift{0.4295} +\corrector{VC1}{0.13} +\drift{0.245} +\kicker{S2}{0.63} +\drift{0.36} +\dipole{M5}{4.0056}{-30}[s][0.6] +\drift{0.34225} +\kicker{S3}{1.08} +\savecoordinate{Booster_extract}[center] +\drift{0.37225} +\dipole{M6}{4.0056}{-30}[s][0.6] +\drift{0.38725} +\corrector{VC2}{0.13} +\drift{0.315} +\kicker{B3}{0.6} +\savecoordinate{rechts} +\drift{0.36225} +\dipole{M7}{4.0056}{-30}[s][0.6] +\drift{0.49225} +\corrector{VC3}{0.13} +\drift{0.295} +\kicker{K2}{0.45} +\drift{0.42725} +\dipole{M8}{4.0056}{-30}[s][0.6] +\drift{0.86225} +\kicker{K3}{0.45} +\drift{0.48225} +\dipole{M9}{4.0056}{-30}[s][0.6] +\drift{0.44725} +\cavity{DORIS}{0.9} +\drift{0.44725} +\dipole{M10}{4.0056}{-30}[s][0.6] +\drift{1.7945} +\dipole{M11}{4.0056}{-30}[s][0.6] +\drift{1.7945} +\dipole{M12}{4.0056}{-30}[s][0.6] +\drift{0.46725} +\end{scope} +%title +\path (links) -- (rechts) node[midway,biggestlabel, text width=6cm] {Booster- Synchrotron\\{\SIrange{0.5}{1.2}{\GeV}}}; + + + +%----------------------------- +% Transferkanal Booster->ELSA +%----------------------------- +\goto{Booster_extract} +\setangle{-47} +\drift{2} +\turnlabels +\corrector{KV1}{0.25} +\drift{0.16} +\quadrupole{QA}{0.48} +\drift{0.16} +\corrector{KV2}{0.25} +\turnlabels +\drift{1.4} +\corrector{KV3}{0.25} +\drift{0.16} +\quadrupole{QB}{0.48} +\drift{3.67} +\quadrupole{QC}{0.48} +\drift{0.16} +\corrector{}{0.25} +\drift{1.9} +\savecoordinate{ELSA_inject} + + + +%----------------------------- +% Stretcherring +%----------------------------- +\goto{ELSA_inject} +\setangle{-55} +\setlabeldistance{0.5} +\turnlabels + +% "end" put at beginning to start at injection +\quadrupole{QD31}{0.4997} +\drift{0.30115} +\dipole{M31}{2.875}{15} +\drift{0.307} +\corrector{KV31}{0.1} +\drift{1.05465} +\quadrupole{QF32}{0.4997} +\drift{0.13665} +\sextupole{SX32}{0.287} +\drift{0.2069} +\quadrupole{LQ32}{0.45}[0.2] +\drift{0.5031} +\corrector{KV32}{0.1} +\drift{0.41025} +\quadrupole{SQ32}{0.45} +\drift{1.382} +\quadrupole{TJQ32}{0.5515}[0.2] +\drift{0.12625} + +% usual start +%\marker{start}[0.5] +\drift{0.03415} +\quadrupole{QD1}{0.4997} +\drift{0.19515} +\corrector{KV01}{0.1} +\drift{1.79875} +\quadrupole{SQ1}{0.45}[0.2] +\drift{1.01375} +\quadrupole{LQ1}{0.45}[0.2] +\drift{0.2065} +\sextupole{SX1}{0.287} +\drift{0.13665} +\quadrupole{QF2}{0.4997} +\drift{1.05365} +\corrector{KV02}{0.1} +\drift{0.3077} +\dipole{M2}{2.875}{15} +\drift{0.30145} +\quadrupole{QD3}{0.4997} +\drift{0.13665} +\sextupole{SD3}{0.287} +\drift{0.4305} +\corrector{KV03}{0.1} +\drift{1.84183} +\drift{1.84183} + +\rotatelabels{60}[west] +\quadrupole{QF4}{0.4997} +\drift{0.13665} +\sextupole{SF4}{0.287} +\drift{0.214} +\corrector{KV04}{0.1} +\drift{0.7237} +\rotatelabels{0} + +\dipole{M4}{2.875}{15} +\drift{0.30145} + +\rotatelabels{77}[west] +\quadrupole{QD5}{0.4997} +\drift{0.09715} +\corrector{KV05}{0.1} +\rotatelabels{0} + +\drift{1.2642} +\dipole{M5}{2.875}{15} +\drift{0.30145} +\quadrupole{QF6}{0.4997} +\drift{0.94465} +\corrector{KV06}{0.1} +\drift{0.4167} +\dipole{M6}{2.875}{15} +\drift{0.30145} + +\rotatelabels{-72}[east] +\quadrupole{QD7}{0.4997} +\drift{0.41215} +\kicker{MSE23}{0.90027}%{-4.86172} +\savecoordinate{ELSA_extract_neu} +\drift{0.04893} +\rotatelabels{0} + +% deleted due to "neue Extraktion" +%\drift{0.19415} +%\corrector{KV07}{0.1} +%\drift{1.1672} + +\dipole{M7}{2.875}{15} +\savecoordinate{sylibeamline}[center] +\drift{0.30145} +\quadrupole{QF8}{0.4997} +\drift{1.02365} +\corrector{KV08}{0.1} +\drift{0.3377} +\dipole{M8}{2.875}{15} +\drift{0.30145} +\quadrupole{QD9}{0.4997} +\drift{0.30135} +\dipole{M9}{2.875}{15} +\drift{0.3208} +\corrector{KV09}{0.1} +\drift{1.04065} +\quadrupole{QF10}{0.4997} +\drift{0.30135} +\dipole{M10}{2.875}{15} +\drift{0.7203} +\corrector{KV10}{0.1} +\drift{0.2175} +\sextupole{SD10}{0.287} +\drift{0.13665} +\quadrupole{QD11}{0.4997} +\drift{0.30135} +\dipole{M11}{2.875}{15} +\drift{0.7208} +\corrector{KV11}{0.1} +\drift{0.217} +\sextupole{SF11}{0.287} +\drift{0.13665} +\quadrupole{QF12}{0.4997} +\drift{0.30135} +\dipole{M12}{2.875}{15} +\drift{1.1743} +\corrector{KV12}{0.1} +\drift{0.18715} +\quadrupole{QD13}{0.4997} +\drift{0.30135} +\dipole{M13}{2.875}{15} +\drift{0.7398} +\corrector{KV13}{0.1} +\drift{0.62165} +\quadrupole{QF14}{0.4997} +\savecoordinate{rechts} +\drift{1.86133} +\drift{1.86133} +\corrector{KV14}{0.1} +\drift{0.81515} +\quadrupole{QD15}{0.4997} +\drift{0.30135} +\dipole{M15}{2.875}{15} +\drift{0.9368} +\corrector{KV15}{0.1} +\drift{0.42465} +\quadrupole{QF16}{0.4997} +\drift{0.13665} +\sextupole{SX16}{0.287} +\drift{0.2065} +\quadrupole{LQ16}{0.45}[0.2] +\drift{0.3075} +\cavity{PETRA1}{1.6} +\drift{0.93725} +\quadrupole{TJQD16}{0.5515}[0.2] +\drift{0.1614} +\quadrupole{QD17}{0.4997} +\drift{0.10615} +\corrector{KV17}{0.1} +\drift{0.244} +\cavity{PETRA2}{1.6} +\drift{1.43175} +\drift{0.07575} +\quadrupole{LQ17}{0.45}[0.2] +\drift{0.2065} +\sextupole{SX17}{0.287} +\drift{0.13665} +\quadrupole{QF18}{0.4997} +\drift{0.41665} +\corrector{KV18}{0.1} +\drift{0.9447} +\dipole{M18}{2.875}{15} +\drift{0.30145} + +%labels rotated (anchor automatic) +\rotatelabels{61}[east] +\quadrupole{QD19}{0.4997} +\drift{0.13665} +\sextupole{SD19}{0.287} +\drift{0.1965} +\corrector{KV19}{0.1} +\drift{1.747} +\drift{1.747} +\sextupole{SF19}{0.287} +\drift{0.13665} +\quadrupole{QF20}{0.4997} +\drift{0.22565} +\corrector{KV20}{0.1} +\rotatelabels{0} + +\drift{1.1357} +\dipole{M20}{2.875}{15} +\drift{0.30145} + +\rotatelabels{76}[east] +\quadrupole{QD21}{0.4997} +\drift{0.21015} +\corrector{KV21}{0.1} +\rotatelabels{0} + +\drift{1.151} +\dipole{M21}{2.875}{15} +\drift{0.30165} +\quadrupole{QF22}{0.4997} +\drift{0.99865} +\corrector{KV22}{0.1} +\drift{0.363} +\dipole{M22}{2.875}{15} +\drift{0.30115} +\quadrupole{QD23}{0.4997} + +\drift{0.21} +\kicker{MSE23}{0.9}%{-5.00994} +\savecoordinate{ELSA_extract} +\drift{0.3} + +\dipole{M23}{2.875}{15} +\drift{0.30165} +\quadrupole{QF24}{0.4997} +\drift{0.99265} +\corrector{KV24}{0.1} +\drift{0.369} +\dipole{M24}{2.875}{15} +\drift{0.30115} +\quadrupole{QD25}{0.4997} +\savecoordinate{compton}[center] +\drift{0.30115} +\dipole{M25}{2.875}{15} +\drift{0.716} +\corrector{KV25}{0.1} +\drift{0.64565} +\quadrupole{QF26}{0.4997} +\drift{0.30165} +\dipole{M26}{2.875}{15} +\drift{0.723} +\corrector{KV26}{0.1} +\drift{0.214} +\sextupole{SD26}{0.287} +\drift{0.13715} +\quadrupole{QD27}{0.4997} +\drift{0.30115} +\dipole{M27}{2.875}{15} +\drift{0.728} +\corrector{KV27}{0.1} +\drift{0.21} +\sextupole{SF27}{0.287} +\drift{0.13665} +\quadrupole{QF28}{0.4997} +\drift{0.30165} +\dipole{M28}{2.875}{15} +\drift{1.168} +\corrector{KV28}{0.1} +\drift{0.19315} +\quadrupole{QD29}{0.4997} +\drift{0.30115} +\dipole{M29}{2.875}{15} +\savecoordinate{links} +\drift{0.318} +\corrector{KV29}{0.1} +\drift{1.04365} +\quadrupole{QF30}{0.4997} +\drift{1.56882} +\drift{1.56882} +\corrector{KV30}{0.1} +\drift{1.0} +\drift{0.40015} +\resetlabeldistance + +%title - aligned between M29 and QF14 via \savecoordinate +\draw[draw=none] (links) -- (rechts) node[midway, biggestlabel] +{ELSA Stretcherring\\{\SIrange{0.5}{3.2}{\GeV}}}; + + +%----------------------- +% Compton-Polarimeter +%----------------------- +\begin{scope} + \setlinecolor{drift}{\photonbeam} + \goto{compton} + \drift{13.7} + \savecoordinate{comptonlabel} + \beamdump{}{1.6}[0.7] + \goto{compton} + \rotate{180} + \drift{3.9} + \beamdump{}{0.25}[0.25] +\end{scope} +%label +\node[smalllabel, anchor=east, text width=4cm] at (comptonlabel) +{Compton-\\{Polarimeter}}; +%------------------------------ +% Syli-Beamline (Streak-Kamera) +%------------------------------ +\begin{scope} + \setlinecolor{drift}{\photonbeam} + \goto{sylibeamline} + \rotate{-11.5} + \drift{12.5} + \savecoordinate{sylilabel} + \beamdump{}{1.25}[0.5] +\end{scope} +% label +\node[smalllabel, anchor=west, yshift=1cm, text width=4cm] at (sylilabel) +{\IfLanguageName{ngerman}{Synchrotronlicht}{synchrotron light}\\\IfLanguageName{ngerman}{Diagnoseplatz}{diagnostic area}}; + + +%----------------------- +%Extraktion + CB +%----------------------- +\goto{ELSA_extract} +\turnlabels +%\setangle{195-5.00994} +\rotate{-8} +\drift{0.2} +%---- +%\dipole{M23}{0.9}{1.60428} +\drift{0.9} +\rotate{1.60428} +%---- +\drift{1.08} +\rotatelabels{90}[west] +\corrector{SSV1}{0.34} +\drift{0.1} +\corrector{SSH1}{0.34} +\drift{0.36} +\quadrupole{QF1}{0.4749} +\drift{0.39} +\solenoid{}{2} +\drift{0.38} +\quadrupole{QD1}{0.4749} +\drift{0.25} +\corrector{SSH2}{0.34} +\drift{0.1} +\corrector{SSV2}{0.34} +\drift{0.6} +\rotatelabels{0} +\turnlabels +\dipole{MB1}{1.08}{10.7716}[r][0.6] +\savecoordinate{MB1}[center] +\drift{0.41} +\quadrupole{QN1}{0.3}[0.2] +\drift{0.93} +\quadrupole{QN2}{0.3}[0.2] +\drift{0.33} +\dipole{MB3}{1.08012}{2.92208}[r][0.6] +\drift{0.42} +\corrector{SSH3}{0.34} +\drift{1.61} +\quadrupole{QF2}{0.4749} +\drift{2.218} +\rotatelabels{0}[west] +\corrector{SSV3}{0.2} +\rotatelabels{0} +\drift{0.242} +\quadrupole{QD2}{0.4749} +\drift{1.6515} +\savecoordinate{CBphotons} +\begin{labeldistance}{1} + \dipole{Tagger}{1.26}{8.99544}[r][1.2] + \drift{1.34} + \dipole{M5}{1.26}{6.1994}[r][1.2] +\end{labeldistance} +\drift{5.7} +\savecoordinate{CBlabel} +\drift{5.7} +\beamdump{}{1}[1] + +%Photon-Beamline +\goto{CBphotons} +\begin{scope} +\setlinecolor{drift}{\photonbeam} +\drift{16} +\beamdump{\IfLanguageName{ngerman}{Photonenkamera}{photon camera}}{0.4}[0.2] +\end{scope} + +%title +\node[mediumlabel, anchor=east, yshift=1.5cm] at (CBlabel) {Crystal Barrel}; +\node[biglabel, yshift=3.8cm,xshift=-3cm, text width=7cm] at (CBlabel) +{\IfLanguageName{ngerman}{Hadronenphysik- Experimente}{hadron physics experiments}}; + + +%------------------- +%BGO-OD +%------------------- + \goto{MB1} + %\setangle{175} + \rotate{-10.8-11} + \turnlabels + \drift{1.03} + \dipole{MB2}{1.08166}{-11}[r][0.6] + \drift{1.06} + \quadrupole{QF2}{0.45} + \drift{1.32} + \rotatelabels{90}[west] + \corrector{SSH3}{0.34} + \drift{0.1} + \corrector{SSV3}{0.34} + \rotatelabels{0} + \drift{1.76} + \quadrupole{QD2}{0.45} + \drift{0.95} + \begin{scope} + \setlabeldistance{0.7} + \dipole{Tagger}{1.34}{0}[r][1] + \end{scope} + + % photon beamline + \begin{scope} + \setlinecolor{drift}{\photonbeam} + \drift{6.95} + \dipole{}{1.61}{0}[r][3.64] %spektrometer + \savecoordinate{BGOlabel} + \drift{3.13} + \beamdump{\IfLanguageName{ngerman}{Photonenkamera}{photon camera}}{0.4}[0.2] + \end{scope} + + % label + \node[mediumlabel, anchor=east, yshift=-0.7cm, xshift=-0.3cm] at (BGOlabel) {BGO-OD}; + + +%----------------------------- +%neue externe Strahlführung +%----------------------------- +\goto{ELSA_extract_neu} +\rotate{-4} +\drift{1.578} +\drift{1.578} +\quadrupole{QF1}{0.5}[0.3] +\drift{2.06505} +\drift{2.06505} +\drift{2.06505} +\quadrupole{QD1}{0.4997}[0.3] +\drift{0.89515} +\begin{labeldistance}{1.2} + \dipole{MB}{1.50274}{-12}[r][2] +\end{labeldistance} +\drift{0.89415} +\quadrupole{QF2}{0.4997}[0.3] +\drift{2.1063} +\quadrupole{QD2}{0.4997}[0.3] +\drift{2.77607} +\savecoordinate{NEWSFlabel} +\drift{2.77607} +\beamdump{}{0.4} + % title + \node[smalllabel, anchor=north, yshift=-5mm, text width=4.5cm] at (NEWSFlabel) + {\IfLanguageName{ngerman}{Messplatz für}{area + for}\\\IfLanguageName{ngerman}{Detektortests}{detector + tests}\\\IfLanguageName{ngerman}{(im Aufbau)}{(under construction)}}; + +%--------------------------- +% legend shows all element types occuring before this commmand +\legend{(67,46)}[2] +\end{lattice} +\end{document} diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/example1_linear.tex b/Master/texmf-dist/doc/latex/tikz-palattice/example1_linear.tex new file mode 100644 index 00000000000..8dfdaafba0e --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/example1_linear.tex @@ -0,0 +1,53 @@ +%% example1_linear.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[]{standalone} +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +\usepackage{tikz-palattice} + + +\begin{document} + +\begin{lattice} + \source{MySource}{0.4} + \drift{0.167} + \quadrupole{Q1}{0.4} + \drift{0.1} + \kicker{VC1}{0.1} + \drift{0.29} + \drift{0.2} + \screen{S1} + \drift{0.2} + \quadrupole{Q2}{0.4} + \drift{0.3} + \marker{marker 1}[1.2] + \drift{1.16}[Space left!] + \marker{marker 2}[1.2] + \drift{0.15} + \cavity{Acceleration?}{2} + \drift{0.63} + \dipole{M1}{0.5}{90}[r] + \drift{0.3} + \quadrupole{Q42}{0.4} + \drift{0.3} +\end{lattice} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/example2_circular.tex b/Master/texmf-dist/doc/latex/tikz-palattice/example2_circular.tex new file mode 100644 index 00000000000..3bf446797f3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/example2_circular.tex @@ -0,0 +1,60 @@ +%% example2_circular.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[]{standalone} +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +\usepackage{tikz-palattice} + + +\begin{document} + +\begin{lattice} + \setlinecolor{drift}{red} + + \drift{1} + \dipole{M1}{2}{45} + \drift{1} + \dipole{M2}{2}{45} + \drift{1} + \setelementcolor{dipole}{green!50!black} % change color of all following dipoles + \dipole{M3}{2}{45} + \drift{1} + \dipole{M4}{2}{45} + \drift{1} + \begin{scope} % color change only applied within scope + \setelementcolor{dipole}{red}[red] % optional 3rd argument sets top color -> no (visible) color gradient + \dipole{M5}{2}{45} + \end{scope} + \drift{1} + \dipole{M6}{2}{45} + \drift{1} + \resetelementcolor{dipole} % reset color of following dipoles to default + \dipole{M7}{2}{45}[r] % rectangle dipole type + \drift{1} + \dipole{M8}{2}{45}[br] % bend rectangle dipole type + + \drawrule{(1,-0.5)} +\end{lattice} + +\end{document} + + + diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/example3_coordinates.tex b/Master/texmf-dist/doc/latex/tikz-palattice/example3_coordinates.tex new file mode 100644 index 00000000000..a7f34469b18 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/example3_coordinates.tex @@ -0,0 +1,242 @@ +%% example3_coordinates.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[a4paper]{scrartcl} +\usepackage[english]{babel} +\usepackage[utf8]{inputenc} +\usepackage{subcaption} +\usepackage{verbatim} +\usepackage{tikz-palattice} + + +% compile twice to connect lattices! + + +\title{Two more lattices} +\subtitle{scaling lattices and accessing coordinates} +\date{} + +\begin{document} +\maketitle + +\begin{figure}[h] +\centering +\begin{subfigure}{.45\textwidth} + \centering + % this is the ring from example 2, but plotted smaller (30%). + % the element sizes (in meter) are the same - as the rule indicates. + \begin{lattice}[0.3] + \setlabelfont{\tiny} + \begin{labeldistance}{0.3} + \drift{1} + \dipole{M1}{2}{45} + \drift{1} + \turnlabels + \dipole{M2}{2}{45} + \turnlabels + \drift{1} + \dipole{M3}{2}{45} + \drift{1} + \savecoordinate{myCoord1}[center] + \dipole{M4}{2}{45} + \drift{1} + \dipole{M5}{2}{45} + \drift{1} + \dipole{M6}{2}{45} + \drift{1} + \savecoordinate{myCoord2}[center] + \dipole{M7}{2}{45} + \drift{1} + \dipole{M8}{2}{45} + \drawrule{(-2.5,-1)}[2] + \end{labeldistance} + % custom drawing using saved coordinates (to center of drifts) + \draw[->, thick] (myCoord2) -- (myCoord1) node[midway,fill=white,rotate=20] {signal}; + \end{lattice} +\end{subfigure} +% +% +% +\begin{subfigure}{.45\textwidth} + \centering + \begin{lattice} + \setangle{70} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + + % now go back to saved coordinate and continue with another beamline + \goto{Septum} + \rotate{-20} + \turnlabels %labels to the right + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + + \drawrule{(-0.75,-0.2)}[0.8] + \end{lattice} +\end{subfigure} +\caption{A figure with two lattices} +\label{fig:lattices} +\end{figure} + + + + + + +\clearpage +\begin{figure} +\centering +\begin{subfigure}[b]{.45\textwidth} +\centering + \begin{lattice} + \rotate{90} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + \end{lattice} + % + %now draw second lattice and connect them using the saved coordinate + \begin{lattice}[1][overlay] + \start{(Septum)} + \rotate{70} + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + \legend{(-1,6.5)} + \end{lattice} + \caption{two lattice environments and start} +\end{subfigure} +% +\begin{subfigure}[b]{.45\textwidth} + \centering + \begin{lattice} + \rotate{90} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + + % now go back to saved coordinate and continue with another beamline + \goto{Septum} + \rotate{-20} + \turnlabels %labels to the right + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + \legend{(0,6.5)} + \end{lattice} + \caption{one lattice environment and goto} +\end{subfigure} +\caption{Two ways to connect lattices} +\label{fig:twoways} +\end{figure} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/example4_labels.tex b/Master/texmf-dist/doc/latex/tikz-palattice/example4_labels.tex new file mode 100644 index 00000000000..cb698a2ce31 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/example4_labels.tex @@ -0,0 +1,308 @@ +%% example4_labels.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[]{standalone} +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +\usepackage{tikz-palattice} + + +\begin{document} +\begin{lattice}[0.5] +\drawrule{(-9,-11)}[5][3][0.2] + +\turnlabels +\setlabeldistance{0.5} +\rotate{-35} +\marker{start}[0.5] + +\drift{0.03415} +\quadrupole{QD1}{0.4997} +\drift{0.19515} +\kicker{KV01}{0.1} +\drift{1.79875} +\quadrupole{SQ1}{0.45}[0.2] +\drift{1.01375} +\quadrupole{LQ1}{0.45}[0.2] +\drift{0.2065} +\sextupole{SX1}{0.287} +\drift{0.13665} +\quadrupole{QF2}{0.4997} +\drift{1.05365} +\kicker{KV02}{0.1} +\drift{0.3077} +\dipole{M2}{2.875}{15} +\drift{0.30145} +\quadrupole{QD3}{0.4997} +\drift{0.13665} +\sextupole{SD3}{0.287} +\drift{0.4305} +\kicker{KV03}{0.1} +\drift{1.84183} +\drift{1.84183} + +% labels rotated (with manually set anchor) +\rotatelabels{65}[west] +\quadrupole{QF4}{0.4997} +\drift{0.13665} +\sextupole{SF4}{0.287} +\drift{0.214} +\kicker{KV04}{0.1} +\drift{0.7237} +\rotatelabels{0} + +\dipole{M4}{2.875}{15} +\drift{0.30145} +\quadrupole{QD5}{0.4997} +\drift{0.09715} + +% labels with changed fontsize +\setlabelfont{\tiny} +\kicker{KV05}{0.1} +\setlabelfont{\normalsize} + +\drift{1.2642} +\dipole{M5}{2.875}{15} +\drift{0.30145} +\quadrupole{QF6}{0.4997} +\drift{0.94465} +\kicker{KV06}{0.1} +\drift{0.4167} +\dipole{M6}{2.875}{15} +\drift{0.30145} + +%labels rotated (with manually set anchor) within scope (forget changes after scope) +\begin{scope} +\rotatelabels{-65}[east] +\quadrupole{QD7}{0.4997} +\drift{0.19415} +\kicker{KV07}{0.1} +\end{scope} + + +\drift{1.1672} +\dipole{M7}{2.875}{15} +\drift{0.30145} +\quadrupole{QF8}{0.4997} +\drift{1.02365} +\kicker{KV08}{0.1} +\drift{0.3377} +\dipole{M8}{2.875}{15} +\drift{0.30145} +\quadrupole{QD9}{0.4997} +\drift{0.30135} +\dipole{M9}{2.875}{15} +\drift{0.3208} +\kicker{KV09}{0.1} +\drift{1.04065} +\quadrupole{QF10}{0.4997} +\drift{0.30135} +\dipole{M10}{2.875}{15} +\drift{0.7203} +\kicker{KV10}{0.1} +\drift{0.2175} +\sextupole{SD10}{0.287} +\drift{0.13665} +\quadrupole{QD11}{0.4997} +\drift{0.30135} +\dipole{M11}{2.875}{15} +\drift{0.7208} +\kicker{KV11}{0.1} +\drift{0.217} +\sextupole{SF11}{0.287} +\drift{0.13665} +\quadrupole{QF12}{0.4997} +\drift{0.30135} +\dipole{M12}{2.875}{15} +\drift{1.1743} +\kicker{KV12}{0.1} +\drift{0.18715} +\quadrupole{QD13}{0.4997} +\drift{0.30135} +\dipole{M13}{2.875}{15} +\drift{0.7398} +\kicker{KV13}{0.1} +\drift{0.62165} +\quadrupole{QF14}{0.4997} +\savecoordinate{rechts} +\drift{1.86133} +\drift{1.86133} +\kicker{KV14}{0.1} +\drift{0.81515} +\quadrupole{QD15}{0.4997} +\drift{0.30135} +\dipole{M15}{2.875}{15} +\drift{0.9368} +\kicker{KV15}{0.1} +\drift{0.42465} +\quadrupole{QF16}{0.4997} +\drift{0.13665} +\sextupole{SX16}{0.287} +\drift{0.2065} +\quadrupole{LQ16}{0.45}[0.2] +\drift{0.3075} +\cavity{PETRA1}{1.6} +\drift{0.93725} +\quadrupole{TJQD16}{0.5515}[0.2] +\drift{0.1614} + +% turn labels to other side +\turnlabels +\quadrupole{QD17}{0.4997} +\turnlabels + +\drift{0.10615} +\kicker{KV17}{0.1} +\drift{0.244} +\cavity{PETRA2}{1.6} +\drift{1.43175} +\drift{0.07575} +\quadrupole{LQ17}{0.45}[0.2] +\drift{0.2065} +\sextupole{SX17}{0.287} +\drift{0.13665} +\quadrupole{QF18}{0.4997} +\drift{0.41665} +\kicker{KV18}{0.1} +\drift{0.9447} +\dipole{M18}{2.875}{15} +\drift{0.30145} + +%labels rotated (with manually set anchor) within scope (forget changes after scope) +\begin{scope} +\rotatelabels{65}[east] +\quadrupole{QD19}{0.4997} +\drift{0.13665} +\sextupole{SD19}{0.287} +\drift{0.1965} +\kicker{KV19}{0.1} +\end{scope} + +\drift{1.747} +\drift{1.747} +\sextupole{SF19}{0.287} +\drift{0.13665} + +% turn labels to other side within scope (no second \turnlabels needed) +\begin{scope} +\turnlabels +\quadrupole{QF20}{0.4997} +\end{scope} + +\drift{0.22565} +\kicker{KV20}{0.1} + +\drift{1.1357} +\dipole{M20}{2.875}{15} +\drift{0.30145} + +%labels in other distance to elements +\begin{labeldistance}{0.8} + \quadrupole{QD21}{0.4997} +\end{labeldistance} %back to previous label distance (same as \setlabeldistance within scope) + +\drift{0.21015} +\kicker{KV21}{0.1} +\drift{1.151} +\dipole{M21}{2.875}{15} +\drift{0.30165} +\quadrupole{QF22}{0.4997} +\drift{0.99865} +\kicker{KV22}{0.1} +\drift{0.363} +\dipole{M22}{2.875}{15} +\drift{0.30115} +\quadrupole{QD23}{0.4997} +\drift{1.46115} +\dipole{M23}{2.875}{15} +\drift{0.30165} +\quadrupole{QF24}{0.4997} +\drift{0.99265} +\kicker{KV24}{0.1} +\drift{0.369} +\dipole{M24}{2.875}{15} +\drift{0.30115} +\quadrupole{QD25}{0.4997} +\drift{0.30115} +\dipole{M25}{2.875}{15} +\drift{0.716} +\kicker{KV25}{0.1} +\drift{0.64565} +\quadrupole{QF26}{0.4997} +\drift{0.30165} +\dipole{M26}{2.875}{15} +\drift{0.723} +\kicker{KV26}{0.1} +\drift{0.214} +\sextupole{SD26}{0.287} +\drift{0.13715} +\quadrupole{QD27}{0.4997} +\drift{0.30115} +\dipole{M27}{2.875}{15} +\drift{0.728} +\kicker{KV27}{0.1} +\drift{0.21} +\sextupole{SF27}{0.287} +\drift{0.13665} +\quadrupole{QF28}{0.4997} +\drift{0.30165} +\dipole{M28}{2.875}{15} +\drift{1.168} +\kicker{KV28}{0.1} +\drift{0.19315} +\quadrupole{QD29}{0.4997} +\drift{0.30115} +\dipole{M29}{2.875}{15} +\savecoordinate{links} +\drift{0.318} +\kicker{KV29}{0.1} +\drift{1.04365} +\quadrupole{QF30}{0.4997} +\drift{1.56882} +\drift{1.56882} +\kicker{KV30}{0.1} +\drift{1.40015} +\quadrupole{QD31}{0.4997} +\drift{0.30115} +\dipole{M31}{2.875}{15} +\drift{0.307} +\kicker{KV31}{0.1} +\drift{1.05465} +\quadrupole{QF32}{0.4997} +\drift{0.13665} +\sextupole{SX32}{0.287} +\drift{0.2069} +\quadrupole{LQ32}{0.45}[0.2] +\drift{0.5031} +\kicker{KV32}{0.1} +\drift{0.41025} +\quadrupole{SQ32}{0.45} +\drift{1.382} +\quadrupole{TJQ32}{0.5515}[0.2] +\drift{0.12625} + +% legend shows all element types occuring before this commmand +\legend{(35,38)}[2] + +%title - aligned between M29 and QF14 via \savecoordinate +\draw[draw=none] (links) -- (rechts) node[midway, font=\bfseries\Huge,scale=2, align=center] +{ELSA Stretcherring\\{\SIrange[range-units=single,detect-weight=true]{0.5}{3.2}{\GeV}}}; +\end{lattice} +\end{document} diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.pdf b/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.pdf Binary files differnew file mode 100644 index 00000000000..aec4f712bfc --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.pdf diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.tex b/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.tex new file mode 100644 index 00000000000..a88c4f61161 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.tex @@ -0,0 +1,581 @@ +%% tikz-palattice_documentation.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[a4paper]{scrartcl} +\usepackage[english]{babel} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{fixltx2e} +\usepackage{graphicx} +\usepackage{subcaption} +\usepackage[normalem]{ulem} +\usepackage{amsmath} +\usepackage{textcomp} +\usepackage{marvosym} +\usepackage{amssymb} +\usepackage[colorlinks]{hyperref} +\usepackage{siunitx} +\usepackage{listings} +\usepackage{xcolor} +\usepackage{tikz-palattice} + +\newcommand{\option}[1]{{\color{blue}$\langle$\textit{#1}$\rangle$}} +\newcommand{\optiondef}[2]{{\color{green!50!black}$\langle$\textit{#1=#2}$\rangle$}} +\newcommand{\tikzlabel}{Ti\textit{k}Z} + +\author{Jan Schmidt <schmidt@physik.uni-bonn.de>} +\date{v2.1 (February 23, 2015)} +\title{tikz-palattice - draw particle accelerator lattices with \tikzlabel} +\begin{document} + +\definecolor{keycolor}{RGB}{172, 42, 42} +\lstset{ +basicstyle=\small\sffamily, +backgroundcolor=\color{gray!20}, +%numbers=left, +numberstyle=\tiny, +breaklines=true, +%frame=l, +xleftmargin=\parindent, +columns=fullflexible, +showstringspaces=false, +keywordstyle=\bfseries\color{keycolor}, +commentstyle=\color{black!50}, +identifierstyle=,%\color{blue}, +stringstyle=, +escapeinside={(*}{*)} +} + +\maketitle + +\begin{abstract} + The tikz-palattice package allows for drawing a map of a particle accelerator just by + giving a list of elements - similar to lattice files for simulation software. The + package includes 12 common element types like dipoles, quadrupoles, cavities or screens, + as well as automatic labels with element names, a legend, a rule and an environment to + fade out parts of the accelerator. The coordinate of any element can be saved and used + for custom tikz drawings or annotations. Thereby, lattices can be connected to draw + injection/extraction or even a complete accelerator facility. +\end{abstract} + + +\begin{figure}[h] + \centering + \includegraphics[width=\textwidth]{elsa.pdf} + \caption{The Electron Stretcher Facility ELSA at Bonn University, drawn with + tikz-palattice} +\label{fig:elsa} +\end{figure} + + +\clearpage +\parindent=0pt +Copyright 2015 Jan Schmidt + +\medskip +Permission is granted to distribute and/or modify both the documentation and the code +under the conditions of the LaTeX Project Public License, either version 1.3 of this +license or (at your option) any later version. The latest version of this license is in +http://www.latex-project.org/lppl.txt + +\tableofcontents + +\section{Installation} +\label{sec-1} +\subsection{Copy tikz-palattice.sty} +\label{sec-1-1} +You just need to copy the lattice.sty file to a place where your \LaTeX{} installation can recognize it. +This can be +\begin{itemize} +\item the same folder as your .tex document or +\item in the \LaTeX{} system or user tree. +\end{itemize} +E.g. to add it to the system tree for texlive under ubuntu: +\begin{lstlisting} +sudo mkdir -p /usr/local/share/texmf/tex/latex/lattice/ +sudo cp lattice.sty /usr/local/share/texmf/tex/latex/lattice/ +sudo mktexlsr +\end{lstlisting} +For this path there is also a Makefile prepared, so just enter +\begin{lstlisting} +sudo make install +\end{lstlisting} +Otherwise read the documentation of your \LaTeX{} distribution. + +\subsection{Required packages} +\label{sec-1-2} +\begin{itemize} +\item tikz +\item siunitx +\item ifthen +\item xargs +\item etoolbox +\end{itemize} + +\lstset{language=[LaTeX]TeX} + +\section{Basic Usage} +\label{sec:remarks} + +Basically, an accelerator lattice is drawn by writing element commands one after the +other. White spaces and newlines are ignored. Usually you will use one \lstinline+drift+ +and one other element alternately: + +\begin{minipage}[c]{0.5\textwidth} +\begin{lstlisting} + \begin{lattice} + \source{Gun}{0.4} + \drift{0.267} + \quadrupole{Q1}{0.4} + \drift{0.29} + \dipole{M1}{0.8}{30} + \drift{0.29} + \kicker{VC1}{0.1} + \drift{0.2} + \end{lattice} +\end{lstlisting} +\end{minipage} +% +\begin{minipage}[c]{0.5\textwidth} + \begin{center} + \begin{lattice} + \source{Gun}{0.4} + \drift{0.267} + \quadrupole{Q1}{0.4} + \drift{0.29} + \dipole{M1}{0.8}{30} + \drift{0.29} + \kicker{VC1}{0.1} + \drift{0.2} + \end{lattice} + \end{center} +\end{minipage} + + +Descriptions of the commands are given in section \ref{sec-5}. There are 5 examples coming +with this package. Some of the drawings are shown in this document. Please look at the +separate tex-files for the source code. + +\paragraph{Some general remarks:} +\begin{itemize} +\item it is recommended to draw lattices using \lstinline+\documentclass{standalone}+ + especially for larger beamlines. +\item lengths are set in meter, so you write \{1.32\} for \SI{1.32}{\m}. +\item beamline with angle \SI{0}{\degree} goes to the right, positive angles bend counter clockwise. +\item settings (colors, font, rotatelabel,\ldots{}) changed within a \verb+scope+ environment are set back to the previous values outside of \verb+scope+ +\item picture scale: for lattice scale=1 an element of 1m length is plotted with \SI{2}{\cm} length +\end{itemize} + +Below, the arguments of commands are given in angle brackets. The values after an equal +sign are default values of optional arguments. E.g. \optiondef{scale}{1} indicates that +the default value of "scale" is 1. + + + +\section{The lattice Environment} +\label{sec-4} + +To draw a lattice just add +\begin{lstlisting} +\usepackage{lattice} +\end{lstlisting} +to your preambel and use the lattice environment with +\begin{lstlisting} + \begin{lattice}[(*\optiondef{scale}{1}*)][(*\optiondef{tikz options}{}*)] + ... + \end{lattice} +\end{lstlisting} +The \lstinline+lattice+ environment contains a \lstinline+tikzpicture+ environment in +which the lattice is drawn using usual tikz commands. The \lstinline+lattice+ environment +has 2 optional arguments: +\begin{enumerate} +\item \optiondef{scale}{1} scales whole picture (default is 1). +\item \optiondef{tikz options}{} gives any options for the \lstinline+tikzpicture+ (e.g. + overlay, default is none). +\end{enumerate} + + +\section{Within lattice Environment} +\label{sec-5} + +\subsection{Elements} +\label{sec-5-1} + + Here is a list of all implemented element types. The element names are self-explanatory: +\begin{lstlisting} + \drift{(*\option{length/m}*)}[(*\optiondef{name}{}*)] + \dipole{(*\option{name}*)}{(*\option{arc length/m}*)}{(*\option{bending angle/deg}*)}[(*\optiondef{type}{s}*)][(*\optiondef{thickness/m}{0.6}*)] + \quadrupole{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.5}*)] + \sextupole{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.3}*)] + \corrector{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.25}*)] + \kicker{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.25}*)] + \cavity{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.45}*)] + \solenoid{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.2}*)] + \beamdump{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.5}*)] + \source{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.5}*)] + \screen{(*\option{name}*)}[(*\optiondef{length/m}{0.2}*)] + \valve{(*\option{name}*)} + \marker{(*\option{name}*)}[(*\optiondef{length/m}{0.35}*)] % a line perpendicular to the beamline, see Fig. (*\ref{fig:example1}*) +\end{lstlisting} + +The \lstinline+dipole+ option \optiondef{type}{s} allows to select different dipole +shapes. It is shown in example~2. Possible values are: +\begin{itemize} +\item s for a sector magnet (entrance/exit surface 90 degree to beampipe) +\item br for a bend rectangle magnet (parallel entrance/exit surfaces) +\item r for a rectangle magnet +\end{itemize} +If you use any other letters, also the default (s) is used. + + +\begin{figure}[h] + \centering + \includegraphics[width=10cm]{example1_linear} + \caption{Example 1} + \label{fig:example1} +\end{figure} + + +\subsection{Orientation of the lattice} +\label{sec-5-2} + +\begin{lstlisting} + \start{(*\option{coordinate/m}*)} +\end{lstlisting} +sets starting point of the lattice. Use it before the first element. \option{coordinate/m} +is of form (x,y) or any tikz label, e.g. (mylabel.east) You can use this with +\lstinline+\savecoordinate+ (section \ref{sec:coords}) to connect lattices, but it is +recommended to do this via \lstinline+\goto+ (see below). Both are shown in example 3. + +\begin{lstlisting} + \rotate{(*\option{angle/deg}*)} +\end{lstlisting} +bends the beamline by the given angle. + +\begin{lstlisting} + \setangle{(*\option{angle/deg}*)} +\end{lstlisting} +sets the beamline angle to the given angle. The next element is drawn with beam axis in +this direction. + +\begin{lstlisting} + \goto{(*\option{coordinate name}*)} +\end{lstlisting} +sets current position and angle to values saved +with \lstinline+\savecoordinate+ (section \ref{sec:coords}). +Use this to connect lattices and draw injection, extraction or even a complete accelerator +facility. This is shown in example 3. + + + +\subsection{Rule and Legend} +\label{sec:rule-legend} + +\begin{lstlisting} + \drawrule{(*\option{position/m}*)}[(*\optiondef{tick distance/m}{1}*)][(*\optiondef{scale}{1}*)][(*\optiondef{height/m}{0.1}*)] +\end{lstlisting} +draws a rule to visualize the size of the lattice. Coordinate is of form (x,y) or any tikz +label, e.g. (mylabel.east) + +\begin{lstlisting} + \legend{(*\option{position/m}*)}[(*\optiondef{scale}{1}*)] +\end{lstlisting} +draws a legend with all element types that occur in the lattice before this command. +The given \option{position/m} is north west (upper left corner) of the legend box. +The scale option scales the whole box including the text, which has the usual label +textsize if scale=1. + +\begin{lstlisting} + \completelegend{(*\option{position/m}*)}[(*\optiondef{scale}{1}*)] +\end{lstlisting} +is similar to \lstinline+\legend+, but shows all element types. + + +\clearpage +\begin{figure}[h] + \centering + % this is the ring from example 2, but plotted smaller (30%). + % the element sizes (in meter) are the same - as the rule indicates. + \begin{lattice}[0.3] + \setlabelfont{\tiny} + \begin{labeldistance}{0.3} + \drift{1} + \dipole{M1}{2}{45} + \drift{1} + \turnlabels + \dipole{M2}{2}{45} + \turnlabels + \drift{1} + \dipole{M3}{2}{45} + \drift{1} + \savecoordinate{myCoord1}[center] + \dipole{M4}{2}{45} + \drift{1} + \dipole{M5}{2}{45} + \drift{1} + \dipole{M6}{2}{45} + \drift{1} + \savecoordinate{myCoord2}[center] + \dipole{M7}{2}{45} + \drift{1} + \dipole{M8}{2}{45} + \drawrule{(-2.5,-1)}[2] + \end{labeldistance} + % custom drawing using saved coordinates (to center of drifts) + \draw[->, thick] (myCoord2) -- (myCoord1) node[midway,fill=white,rotate=20] {signal}; + \end{lattice} +\caption{From example 3} +\label{fig:fromexample3} +\end{figure} + + +\subsection{Labels} +\label{sec:labels} +Every element has a text label showing the given element name. The position and +orientation of the label is set automatically according to the current angle of the +beamline. Several commands to modify the labels manually are described below. If you want +to disable labels, leave the element names blank or set the label color (section \ref{sec:colors}) to your background color. + +\begin{lstlisting} + \turnlabels +\end{lstlisting} +moves labels to other side of elements (swap with marker labels) + +\begin{lstlisting} + \rotatelabels{(*\option{angle/deg}*)}[(*\optiondef{anchor}{}*)] +\end{lstlisting} +allows rotation of element labels. +The \optiondef{anchor}{} sets the center of rotation (north, center, south west, +\ldots{}). West corresponds to the labels first character. By default the anchor is set +automatically depending on the current angle of the beamline. + +\begin{lstlisting} + \begin{labeldistance}{(*\option{distance/m}*)} + ... + \end{labeldistance} +\end{lstlisting} +sets the distance of text labels to the element center for all elements within this +environment. Default is 0.35. + +\begin{lstlisting} + \setlabeldistance{(*\option{distance/m}*)} + \resetlabeldistance +\end{lstlisting} +sets the distance of text labels to the element center for all following elements. the +reset command sets the default value. Default is 0.35. + +\begin{lstlisting} + \setlabelfont{(*\option{fontsize}*)} +\end{lstlisting} +sets the text label font size. Default is \lstinline+\normalsize+. + + + +\subsubsection{Colors} +\label{sec:colors} +The colors can be changed at any point of the lattice. A setting is valid until the next +color command. The reset commands set the according default color. Use a \lstinline+scope+ +environment to change a color for a section of a lattice. + +\begin{lstlisting} + \setlinecolor{(*\option{type}*)}{(*\option{color}*)} + \resetlinecolor{(*\option{type}*)} +\end{lstlisting} +for \option{type} drift and marker. + +\begin{lstlisting} + \setelementcolor{(*\option{type}*)}{(*\option{color}*)}[(*\optiondef{gradient color}{white}*)] + \resetelementcolor{(*\option{type}*)} +\end{lstlisting} +for all element types. Set \optiondef{gradient color}{white} equal to \option{color} to +"disable" the gradient. + +\begin{lstlisting} + \setlabelcolor{(*\option{color}*)} +\end{lstlisting} +for textlabels. Set to background color to hide text labels. + + +\begin{lstlisting} + \begin{fade}[(*\optiondef{opacity}{0.25}*)] + ... + \end{fade} +\end{lstlisting} + reduces the opacity of all elements within the environment and sets all colors to gray. + So you can fade out regions of the lattice - e.g. for presentations. + This can also be used to completely hide regions by setting \optiondef{opacity}{0.25} to zero. + + + + +\subsection{Access lattice Coordinates} +\label{sec:coords} +You can use element coordinates to draw anything you want using pgf/tikz. + +\begin{lstlisting} + \savecoordinate{(*\option{name}*)}[(*\optiondef{position}{east}*)] +\end{lstlisting} + saves the coordinate of the previous element to access it later. Position specifies the exact place of the element. East and center are available. East is always downstream. + +\begin{itemize} +\item you can use all tikz/pgf commands within the lattice environment to draw anything. +\item You can use this to connect multiple beamlines \textbf{within a lattice environment} with + \lstinline+\goto{name}+ (recommended, Figure \ref{fig:twoways} (b)). +\item You can use this to connect \textbf{multiple lattice environments} with + \lstinline+\start{name}+. Use the tikz overlay option. (Figure \ref{fig:twoways} (a)) +\end{itemize} + + + + +\begin{figure} +\centering +\begin{subfigure}[b]{.45\textwidth} +\centering + \begin{lattice} + \rotate{90} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + \end{lattice} + % + %now draw second lattice and connect them using the saved coordinate + \begin{lattice}[1][overlay] + \start{(Septum)} + \rotate{70} + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + \legend{(-1,6.5)} + \end{lattice} + \caption{two lattice environments and start} +\end{subfigure} +% +\begin{subfigure}[b]{.45\textwidth} + \centering + \begin{lattice} + \rotate{90} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + + % now go back to saved coordinate and continue with another beamline + \goto{Septum} + \rotate{-20} + \turnlabels %labels to the right + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + \legend{(0,6.5)} + \end{lattice} + \caption{one lattice environment and goto} +\end{subfigure} +\caption{From example 3: Two ways to connect lattices} +\label{fig:twoways} +\end{figure} + + +\clearpage +\section{TODO} +\label{sec:todo} + +\paragraph{What is missing?} +\begin{itemize} +\item manually adding and editing legend entries +\item The look of the elements can be improved +\item More element types can be added +\item \ldots{} +\end{itemize} + +I am not an \TeX{} programmer. I basically used the \tikzlabel{} commands and wrote a +bunch of macros. So there is: +\begin{itemize} +\item no error handling implemented +\item no dedicated scoping of internal macros (use of lattice with documentclass standalone recommended) +\end{itemize} + +\paragraph{Known issues:} +\begin{itemize} +\item Legend entry alignment is buggy for some legend scales that differ significantly + from~1 +\item Please report bugs! +\end{itemize} + +\end{document}
\ No newline at end of file |