#LyX 2.2 created this file. For more info see http://www.lyx.org/ \lyxformat 508 \begin_document \begin_header \save_transient_properties true \origin unavailable \textclass article \begin_preamble % Added by lyx2lyx \@ifundefined{rangeHsb}{\usepackage{xcolor}}{} \end_preamble \use_default_options true \maintain_unincluded_children false \language english \language_package default \inputencoding auto \fontencoding global \font_roman "default" "default" \font_sans "default" "default" \font_typewriter "default" "default" \font_math "auto" "auto" \font_default_family default \use_non_tex_fonts false \font_sc false \font_osf false \font_sf_scale 100 100 \font_tt_scale 100 100 \graphics default \default_output_format default \output_sync 0 \bibtex_command default \index_command default \float_placement h \paperfontsize default \spacing single \use_hyperref false \papersize default \use_geometry true \use_package amsmath 1 \use_package amssymb 1 \use_package cancel 1 \use_package esint 1 \use_package mathdots 1 \use_package mathtools 1 \use_package mhchem 1 \use_package stackrel 1 \use_package stmaryrd 1 \use_package undertilde 1 \cite_engine basic \cite_engine_type default \biblio_style plain \use_bibtopic false \use_indices false \paperorientation portrait \suppress_date false \justification true \use_refstyle 1 \index Index \shortcut idx \color #008000 \end_index \leftmargin 2cm \topmargin 2cm \rightmargin 2cm \bottommargin 2cm \secnumdepth 3 \tocdepth 3 \paragraph_separation skip \defskip medskip \quotes_language english \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false \html_math_output 0 \html_css_as_file 0 \html_be_strict false \end_header \begin_body \begin_layout Title The (GRIM)REEPER \end_layout \begin_layout Author Ken Livingston \end_layout \begin_layout Standard \noindent \align center \size normal ( \series bold \size default \color purple G \series default \size normal \color inherit RIM \series bold \size default \color purple R \series default \size normal \color inherit EEPER \series bold \size default \color purple I \series default \size normal \color inherit mplements \series bold \size default \color purple M \series default \size normal \color inherit acros to) \series bold \size default \color purple R \series default \size normal \color inherit ead \series bold \size default \color purple E \series default \size normal \color inherit PICS \series bold \size default \color purple E \series default \size normal \color inherit vents and \series bold \size default \color purple P \series default \size normal \color inherit lot \series bold \size default \color purple E \series default \size normal \color inherit verything in \series bold \size default \color purple R \series default \size normal \color inherit OOT \end_layout \begin_layout Standard \noindent \align center \begin_inset Float figure wide false sideways false status open \begin_layout Plain Layout \noindent \align center \begin_inset Graphics filename allthings.png width 80page% \end_inset \begin_inset Caption Standard \begin_layout Plain Layout \begin_inset CommandInset label LatexCommand label name "fig:GrimReeper-windows" \end_inset REEPER windows \end_layout \end_inset \end_layout \end_inset \end_layout \begin_layout Section Overview \end_layout \begin_layout Standard (GRIM)REEPER, is a package for plotting EPICS PVs (Process Variables) in ROOT. At its simplest it can be used as a strip chart, and, at its most complex, as a general tool for modifying one or more EPICS PVs in a scan, reading back many PVs and analysing the result. Here are some of the features easily accessible from the command line: \end_layout \begin_layout Itemize Simple default behavior \begin_inset Newline newline \end_inset \family typewriter >reeper colliX Fcup PMT1 \family default \begin_inset Newline newline \end_inset will plot graphs of \family typewriter colliX \family default , \family typewriter PMT1 \family default , \family typewriter Fcup \family default vs \family typewriter Time \family default , incrementing in \begin_inset Formula $\sim$ \end_inset 2s intervals \begin_inset Foot status collapsed \begin_layout Plain Layout The time interval between steps is implmented by a setting delay of an integer number of seconds. The actual time is greater than this, depending on how much is done in each step, but the readback Time (PV0) is accurate, since it takes the value from the system clock. To make an accurate rate, use a dummy calcPV to divide by the Time interval in seconds. Eg. [3]/[0-]. \end_layout \end_inset . \end_layout \begin_layout Itemize Simple control of a variable \begin_inset Newline newline \end_inset \family typewriter >reeper -w \series bold \size footnotesize -4,4,0.1 \size default \series default colliX Fcup PMT1 \family default \begin_inset Newline newline \end_inset will scan in \family typewriter colliX \family default from -4 to 4 in steps of 0.1(with \family typewriter caput \family default commands) and plot graphs of \family typewriter Fcup, PMT1 vs colliX \end_layout \begin_layout Itemize Specify fit functions \begin_inset Newline newline \end_inset \family typewriter >reeper -w \series bold \size footnotesize -4,4,0.1 \size default \series default colliX Fcup PMT1##gaus,-4,4 \begin_inset Newline newline \end_inset \family default will scan above and fit a gaussian in the range -4,4 \end_layout \begin_layout Itemize Do PV arithmetic using indices \begin_inset Newline newline \end_inset \family typewriter >reeper -w \series bold \size footnotesize -4,4,0.1 \size default \series default colliX Fcup PMT1 "[3]/[2]" \begin_inset Newline newline \end_inset \family default makes a new PV of \family typewriter PMT1/Fcup \family default and adds it to the list of plotted PVs. (Any \family typewriter ROOT TF1 \family default formula is allowed) \end_layout \begin_layout Itemize Put all these above features together: \family typewriter \begin_inset Newline newline \end_inset >reeper -w \series bold \size footnotesize -4,4,0.1 \size default \series default colliX Fcup-- PMT1-- "[3]/[2]##gaus,-4,4" \begin_inset Newline newline \end_inset \family default scans colliX, plots and fits \family typewriter PMT1/Fcup \family default vs \family typewriter colliX \family default (the \family typewriter "--" \family default suppresses unnecessary plotting of the separate graphs of \family typewriter PMT1 \family default and \family typewriter Fcup) \end_layout \begin_layout Standard The display (Figure \begin_inset CommandInset ref LatexCommand ref reference "fig:GrimReeper-windows" \end_inset ) consists of one or more of the following: \end_layout \begin_layout Standard \series bold Status and control window \series default (left). This is optional. \series bold \begin_inset Newline newline \end_inset Graphs \series default (middle). One or more canvases, each with a graph of a PV vs Time, or PVy vs PVx. \series bold \begin_inset Newline newline \end_inset MultiGraphs \series default (Right). Showing one or more graphs on the same canvas. \end_layout \begin_layout Standard The command line utility has 2 modes: \family typewriter \end_layout \begin_layout Standard \family typewriter \size footnotesize reeper [OPTION]... [PV1] [PV2] ... \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash mode1 \color inherit \begin_inset Newline newline \end_inset reeper [ROOT OPTIONS]...[file1.C] ... [fileN.C] \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash mode2 \color inherit \begin_inset Newline newline \end_inset \size default \end_layout \begin_layout Standard \series bold mode1 \series default is for specification of PVs, scan parameters, fit fuctions etc to set up periodic reading of PVs and plotting of graphs and multiGraphs. The use of the \family typewriter \size footnotesize -w \family default \size default option writes an updated value to PV1 before each time period (with \family typewriter \size footnotesize caput \family default \size default commands). \end_layout \begin_layout Standard \series bold mode2 \series default is for customization using \family typewriter \size footnotesize ROOT \family default \size default macros to call the \family typewriter \size footnotesize REEPER \family default \size default functions directly. \end_layout \begin_layout Standard Examples are given in Section \begin_inset CommandInset ref LatexCommand ref reference "sec:Quickstart" \end_inset and full documentation in section \begin_inset CommandInset ref LatexCommand ref reference "sec:Detailed-documentation" \end_inset . \end_layout \begin_layout Section \begin_inset CommandInset label LatexCommand label name "sec:Quickstart" \end_inset Quickstart \end_layout \begin_layout Subsection* Prequisites \end_layout \begin_layout Standard \noindent You must be running on a system with a working ROOT installation, EPICS channel access and \family typewriter \size footnotesize caget, caput \family default \size default in your path \color black (and \family typewriter \size footnotesize softIOC \family default \size default , if you want to try the simulated examples) \end_layout \begin_layout Subsection* Setup \end_layout \begin_layout Standard Source the relevant setup in your \family typewriter \size footnotesize \color black .cshrc or .bashrc: \begin_inset Newline newline \end_inset source /thisreeper.csh or /thisreeper.sh \end_layout \begin_layout Standard This sets the environment variable \family typewriter \size footnotesize $REEPER \family default \size default to point to the installation directory, and adds it to the \family typewriter \size footnotesize $PATH \end_layout \begin_layout Subsection* Examples 1 - specifying PVs on the command line. \end_layout \begin_layout Standard \series bold Note: \series default These examples use simulation mode ( \family typewriter \size footnotesize -s \family default \size default flag) which runs a softIOC. \begin_inset Newline newline \end_inset The \family typewriter \size footnotesize Exit \family default \size default button on the control panel will kill the \family typewriter \size footnotesize softIOC \family default \size default process before quitting ROOT, otherwise it may need to be killed manually, later. The status and control window is not shown, since it is common to all, and is documented in more detail below.The examples get progressively more fancy. \end_layout \begin_layout Itemize Several different examples of specifying a single PV for (Figure \begin_inset CommandInset ref LatexCommand ref reference "fig:Five-different-ways" \end_inset ) \family typewriter \begin_inset Newline newline \end_inset \size footnotesize >reeper -s colliX \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status open \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //plot colliX vs Time \begin_inset ERT status open \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s colliX::L \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status open \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //plot colliX vs time, join with line \begin_inset ERT status open \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s colliX::C \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status open \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //plot colliX vs time, join with curve \begin_inset ERT status open \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s colliX::pol3 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status open \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //plot colliX vs time, fit with pol3 \begin_inset ERT status open \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s colliX::pol3,10,20 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status open \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //plot colliX vs time, fit with pol3 in range 10-20 \begin_inset ERT status open \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s colliX-- \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status open \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //read but don't plot (for use in Formulae) \begin_inset ERT status open \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset \family default \size default \begin_inset Newline newline \end_inset \begin_inset Float figure wide false sideways false status open \begin_layout Plain Layout \noindent \align center \begin_inset Graphics filename fiveways.png width 80page% \end_inset \begin_inset Caption Standard \begin_layout Plain Layout \begin_inset CommandInset label LatexCommand label name "fig:Five-different-ways" \end_inset Several ways of plotting the graph of a PV using the command line tool \end_layout \end_inset \end_layout \end_inset \end_layout \begin_layout Itemize Multiple PVs can be specified on the command line with various plotting options: \family typewriter \size footnotesize \begin_inset Newline newline \end_inset >reeper -s colliX Fcup PMT1 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status collapsed \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //PVs vs Time (default is Time on X-axis) \begin_inset ERT status open \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s -x colliX Fcup PMT1 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status collapsed \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //Fcup, PMT1 vs colliX (-x means use 1st PV as X-axis) \begin_inset ERT status collapsed \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s -w -4,4,0.5 colliX Fcup PMT1 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status collapsed \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //as above, but scanning in colliX with caputs \begin_inset ERT status collapsed \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s -w -4,4,0.5 colliX Fcup PMT1 "[3]/[2]" \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status collapsed \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //As above, with extra graph of PMT1/Fcup \begin_inset ERT status collapsed \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s -w -4,4,0.5 colliX Fcup##C PMT1##gaus,-4,4 "[3]/[2]##gaus,-4,4" \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status collapsed \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //As above with fits on each \begin_inset ERT status collapsed \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper -s -w -4,4,0.5 colliX Fcup-- PMT1-- "[3]/[2]##gaus,-4,4" \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status collapsed \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //As above, but suppress plotting of Fcup and PMT1 graphs. \begin_inset ERT status collapsed \begin_layout Plain Layout } \end_layout \end_inset \end_layout \begin_layout Standard The canvases resulting from the last pair of examples are shown in figure \begin_inset CommandInset ref LatexCommand ref reference "fig:CanvasExamples" \end_inset . \family typewriter \begin_inset Newline newline \end_inset \family default \begin_inset Float figure wide false sideways false status open \begin_layout Plain Layout \noindent \align center \begin_inset Box Frameless position "t" hor_pos "c" has_inner_box 1 inner_pos "t" use_parbox 0 use_makebox 0 width "45text%" special "none" height "1in" height_special "totalheight" thickness "0.4pt" separation "3pt" shadowsize "4pt" framecolor "black" backgroundcolor "none" status open \begin_layout Plain Layout \begin_inset space \hfill{} \end_inset \begin_inset Graphics filename fits_single_canvas width 80text% \end_inset \end_layout \end_inset \begin_inset Box Frameless position "t" hor_pos "c" has_inner_box 1 inner_pos "t" use_parbox 0 use_makebox 0 width "45text%" special "none" height "1in" height_special "totalheight" thickness "0.4pt" separation "3pt" shadowsize "4pt" framecolor "black" backgroundcolor "none" status open \begin_layout Plain Layout \begin_inset space \hfill{} \end_inset \begin_inset Graphics filename fits_suppressedPV.png width 80text% \end_inset \end_layout \end_inset \begin_inset Caption Standard \begin_layout Plain Layout \begin_inset CommandInset label LatexCommand label name "fig:CanvasExamples" \end_inset Canvases resulting from the two examples above. In the latter example, the PVs used to calculate the result in the FoumulaPV are not plotted, but supressed with the "--" suffix. \begin_inset Newline newline \end_inset \end_layout \end_inset \end_layout \end_inset \end_layout \begin_layout Subsection* Examples 2 - specifying PVs in a ROOT macro \end_layout \begin_layout Itemize The inclusion of one or more \family typewriter \size footnotesize .C \family default \size default files on the command line opens ROOT with the REEPER library loaded and processes arguments in the standard ROOT way. For example: \begin_inset Newline newline \end_inset \family typewriter \size footnotesize >reeper grBasic.C \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status collapsed \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //Sets up a simple scan and plots one PV against another \begin_inset ERT status open \begin_layout Plain Layout } \end_layout \end_inset \begin_inset Newline newline \end_inset >reeper grScanFancy.C \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset ERT status collapsed \begin_layout Plain Layout \backslash textcolor{purple}{ \end_layout \end_inset //Shows how to do a 2d scan, fill 2d histograms and read waveforms \begin_inset ERT status collapsed \begin_layout Plain Layout } \end_layout \end_inset \family default \size default \begin_inset Newline newline \end_inset \begin_inset Newline newline \end_inset The files \family typewriter \size footnotesize grBasic.C \family default \size default and \family typewriter \size footnotesize grScanFancy.C \family default \size default are included in the \family typewriter \size footnotesize $REEPER \family default \size default directory. The run using the built in simulation, and are well commented. They should be used as templates to help write macros to deal with real PVs. \end_layout \begin_layout Standard The ROOT prompt is always available and the global variable (GrimReeper*)GR be used to access the class members functions and data,This is all described in section \begin_inset CommandInset ref LatexCommand ref reference "sec:Detailed-documentation" \end_inset . \end_layout \begin_layout Section \begin_inset CommandInset label LatexCommand label name "sec:Detailed-documentation" \end_inset Detailed documentation \end_layout \begin_layout Standard A brief description with options, arguments and usage, is given by running \family typewriter \size footnotesize >reeper -h \family default \size default (see \begin_inset CommandInset ref LatexCommand ref reference "subsec:reeper--h" \end_inset ). Some more detail is given here. \end_layout \begin_layout Standard REEPER is a collection of functions and variables to do EPICS read/write, and plot the results. All the functions can be accessed from the ROOT prompt, or by using a ROOT macro. The command line utility \family typewriter \size footnotesize reeper \family default \size default calls a specific set of these commands, then offers the ROOT prompt, where a knowledgeable user could type commands to generate more graphs, save canvases etc. Access to some commands is provided via the status / control panel, which is created by default when \family typewriter \size footnotesize reeper \family default \size default is called, (or can be brought up by calling \family typewriter \size footnotesize makeControlGUI() \family default \size default from the ROOT prompt). \end_layout \begin_layout Standard The documentation below describes aspects of the functionality in an \emph on inverse need to know \emph default order (the more obscure and specialised information comes towards the end). \end_layout \begin_layout Subsection Control / Status Panel and context menu options \end_layout \begin_layout Standard \begin_inset Float figure wide false sideways false status open \begin_layout Plain Layout \noindent \align center \begin_inset Graphics filename allguis.png width 90page% BoundingBox 0bp 0bp 1667bp 770bp \end_inset \begin_inset Caption Standard \begin_layout Plain Layout \begin_inset CommandInset label LatexCommand label name "fig:Control-panel-and" \end_inset Control panel and context menus for panel and graphs / multiGraph canvases \end_layout \end_inset \end_layout \end_inset \end_layout \begin_layout Standard The control panel is shown in Figure \begin_inset CommandInset ref LatexCommand ref reference "fig:Control-panel-and" \end_inset (left): \end_layout \begin_layout Itemize \series bold Stop, Start, Pause/Resume, Exit. \series default Do the obvious. \end_layout \begin_layout Itemize \series bold Save. \series default Saves the data in several ways: \end_layout \begin_deeper \begin_layout Itemize PVs are written a text file with columns. Eg. \begin_inset Newline newline \end_inset \family typewriter \size footnotesize # PV0 = Time \begin_inset Newline newline \end_inset # PV1 = colliX \begin_inset Newline newline \end_inset # PV2 = PMT1 \begin_inset Newline newline \end_inset # PV3 = Fcup \begin_inset Newline newline \end_inset #step PV0 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset PV1 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset PV2 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset PV3 \begin_inset Newline newline \end_inset 0 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 0.0000 -2.7656 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 69.3981 243.0320 \begin_inset Newline newline \end_inset 1 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 1.0000 -2.0289 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 631.3830 423.8440 \begin_inset Newline newline \end_inset 2 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 2.0000 -2.2597 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 335.1750 357.4400 \begin_inset Newline newline \end_inset 3 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 3.0000 -0.0776 15897.6000 953.7850 \begin_inset Newline newline \end_inset 4 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 4.0000 \begin_inset space ~ \end_inset 2.2213 \begin_inset space ~ \end_inset 5373.3400 722.6930 \begin_inset Newline newline \end_inset 5 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 5.0000 -0.8775 \begin_inset space ~ \end_inset 6714.0500 768.8300 \begin_inset Newline newline \end_inset 6 \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset 6.0000 \begin_inset space ~ \end_inset 2.8360 \begin_inset space ~ \end_inset 1642.0800 534.1220 \family default \size default \begin_inset Newline newline \end_inset .... \begin_inset Newline newline \end_inset .... \begin_inset Newline newline \end_inset These can then be easily read back into ROOT as graphs (eg. for PV2, PV3): \family typewriter \begin_inset Newline newline \end_inset \size footnotesize g = new TGraph("file","%*s%*s%*s%lg%lg") \end_layout \begin_layout Itemize Graphs are written as \family typewriter \size footnotesize .root, .pdf, .gif \family default \size default and \family typewriter \size footnotesize .C \family default \size default files \end_layout \begin_layout Itemize By default they are written with timestamps like this into directory \family typewriter epics_gr \family default , like this: \family typewriter \begin_inset Newline newline \end_inset \size footnotesize epics_gr/gr_save_15_05_17-11_07.txt, \begin_inset Newline newline \end_inset epics_gr/Graph2_Fcup_v_Time_15_05_17-11_07.gif ... etc. \end_layout \begin_layout Itemize The output directory can be changed that root prompt: \begin_inset Newline newline \end_inset \family typewriter \size footnotesize GR->setSaveDir("mydir") \end_layout \begin_layout Itemize The list of formats can also be changed: eg. \begin_inset Newline newline \end_inset \family typewriter \size footnotesize char *mySaveFormats[] = {"C","pdf",NULL} \begin_inset Newline newline \end_inset GR->setSaveFormats(mySaveFormats) \end_layout \begin_layout Itemize If the \family typewriter \size footnotesize -l \family default \size default option was selected, the logscript will be run to send some information to the logbook (or can be misused to do whatever you like after a save). \end_layout \end_deeper \begin_layout Itemize \series bold nPoints \series default . Number of read events in the scan. \end_layout \begin_layout Itemize \series bold Period \series default . Time (s) between read. Can be changed with the arrows in increments of 1s. \end_layout \begin_layout Itemize \series bold Scanning \series default . If a PV is being controlled with caput commands, start,stop,step and current value are shown. \end_layout \begin_layout Itemize \series bold Read / Write func \series default . Details of user defined read/write functions. \end_layout \begin_layout Itemize \series bold Details \series default . This buttons toggles the visibility of the bottom half of the GUI, which shows the current lists of PVs, graphs and mulitGraphs. \end_layout \begin_layout Subsubsection* Context Menus \end_layout \begin_layout Standard Some useful REEPER functions are available via ROOT context menus (Figure \begin_inset CommandInset ref LatexCommand ref reference "fig:Control-panel-and" \end_inset (right)). Context menus are brought up by clicking the right mouse button over an item; the options depend on the context (ie the entity over which the mouse was hovering when clicked). \end_layout \begin_layout Itemize \series bold Control panel context menu \series default . This is the \family typewriter GrimReeper::TPave \family default menu, shown on top right of the green zone in Figure \begin_inset CommandInset ref LatexCommand ref reference "fig:Control-panel-and" \end_inset (left). The 3 options each pop up a different input dialog box (also shown in the figure). They are simply calling functions that are part of REEPER, and could also be typed at the ROOT prompt: \end_layout \begin_deeper \begin_layout Itemize \series bold addPV \series default : Add a new PV. If this is mid scan, points relating to earlier time steps are set to zero for this PV. The new PV now becomes available for making graphs. \end_layout \begin_layout Itemize \series bold makeGraph \series default : Create a graph from any 2 PVs specified by index. PV0 is always Time. There is the option to include a fit and range as illustrated in Section \begin_inset CommandInset ref LatexCommand ref reference "sec:Quickstart" \end_inset . \end_layout \begin_layout Itemize \series bold makeMultiGraph \series default : Create a multiGraph from several graphs, specified by index. The x axis will be taken from the 1st graph. \end_layout \end_deeper \begin_layout Itemize \series bold Graph Canvas context menu \series default . This is the standard Graph canvas with an added option at the top: \end_layout \begin_deeper \begin_layout Itemize \series bold toggle autoscale \series default . This toggles the autoscaling on/off for the relevant graph or multiGraph. When autoscaling is on it will be applied every time the graph is redrawn with new data. The status of autoscaling can be seen in the bottom part of the control GUI. \end_layout \end_deeper \begin_layout Subsection Concepts, coding approach etc \end_layout \begin_layout Standard In a counting house, EPICS experts might do quick PV scans using a combination of unix shell tools (sh, awk etc), piping the output to text files and opening ROOT to make any required graphs and fit the data. The grimReeper is an attempt to make that easier - particularly for users with limited ROOT and unix experience. The main design features are: \end_layout \begin_layout Itemize \series bold PV0 = Time \series default : The fundamental PV for the grimReeper is Time. PV0 is always Time(s), and scanning is done in time steps. \end_layout \begin_layout Itemize \series bold Command line use \series default : Basic behaviour is accessible with a simple shell command in the standard unix style. \begin_inset Newline newline \end_inset \family typewriter reeper \family default is a shell(sh) script which parses args and opts and opens ROOT as required. \end_layout \begin_layout Itemize \series bold ROOT \series default : Once ROOT is opened, all standard functionality is available at the ROOT prompt; the global variable \family typewriter \size footnotesize grimReeper *GR \family default \size default , allows control of scanning, visuals, etc and gives access to the raw PV data. GUI features are an \emph on add-on \emph default . \end_layout \begin_layout Itemize \series bold GUI \series default : Fancy ROOT GUIs are too complicated to produce and need lots of code. The simple GUI functionality here is using \family typewriter \size footnotesize TButton \family default \size default and customization of \family typewriter \size footnotesize TContextMenu \family default \size default items. \end_layout \begin_layout Itemize \series bold Compilation \series default : This is done \emph on on the fly \emph default , using ROOT's ACLiC features. No makefiles. The details can be seen in \family typewriter \size footnotesize reeper \family default \size default and \family typewriter \size footnotesize grLoad.C \family default \size default . Debugging can be done with gdb if required \begin_inset Newline newline \end_inset For example, see \begin_inset CommandInset href LatexCommand href name "https://wiki.physik.uni-muenchen.de/etp/index.php/Debugging_root_with_gdb" target "https://wiki.physik.uni-muenchen.de/etp/index.php/Debugging_root_with_gdb" \end_inset . \end_layout \begin_layout Subsection \family typewriter Class grimReeper \end_layout \begin_layout Standard The grimReeper class definition is in \family typewriter \size footnotesize gr.C \family default \size default , which also defines a global variable \family typewriter \size footnotesize grimReeper *GR \family default \size default pointing to the (single) grimReeper object. This allows the member functions to be accessed from the commend line and from \family typewriter \size footnotesize \color black TButtons \family default \size default \color inherit . For details look into the code. Everything is public, so lots of opportunity to mess things up! Some functions are worth a special mention, since they are useful for macros: \end_layout \begin_layout Standard \family typewriter \size footnotesize void setMAXPV(int maxpv) \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash set max no of PVs that can be added (default = 50) \color inherit \begin_inset Newline newline \end_inset void setMAXDATA(int data) \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash set max no of read points per PV (default = 10000) \color inherit \begin_inset Newline newline \end_inset Note: The above functions must be called before init() \begin_inset Newline newline \end_inset void intit(); \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash set up initial params, arrays etc. This is called implicitly ny addPV() \color inherit \begin_inset Newline newline \end_inset void addPV(const char *pvstring); \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash add PV to the list being read (each call adds 8*MAXDATA bytes to memory used) \color inherit \begin_inset Newline newline \end_inset void makeGraph(int yPV, int xPV, ...); \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash add new graph (each will require memory dynamically up to 16*MAXDATA bytes) \color inherit \begin_inset Newline newline \end_inset int getPoints() \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash number of PV scan points read so far \color inherit \begin_inset Newline newline \end_inset double **getPVData() \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash 2d array of PV data: array[PVindex][point] \color inherit \begin_inset Newline newline \end_inset void setUserWrite(const char *write) \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash user function to be called to write PVs for a step \color inherit \begin_inset Newline newline \end_inset void setUserRead(const char *read) \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash user function to be called after scan step period elapsed \color inherit \begin_inset Newline newline \end_inset void waveToArray(const char *pv, ...); \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash read waveform into arrray \color inherit \begin_inset Newline newline \end_inset void waveToTH1D(const char *pv,...); \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash read waveform into 1D histogram bins 1D \color inherit \begin_inset Newline newline \end_inset void waveToTH2DRow(const char *pv,...); \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash read waveform into a row of a 2D histogram \color inherit \begin_inset Newline newline \end_inset ...........and mode not documented yet; \begin_inset space ~ \end_inset \begin_inset space ~ \end_inset \color purple \backslash \backslash hello \end_layout \begin_layout Standard Their use is illustrated in the example macros included with the package. \end_layout \begin_layout Subsection \family typewriter \begin_inset CommandInset label LatexCommand label name "subsec:reeper--h" \end_inset Usage \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize NAME reeper - Read EPICS Events and Plot Everything in ROOT \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize SYNOPSIS \begin_inset Newline newline \end_inset \begin_inset Newline newline \end_inset reeper [OPTION]... [PV]...[formula].... \backslash \backslash mode 1 \begin_inset Newline newline \end_inset reeper [ROOT OPTIONS]...[file1.C ... fileN.C] \backslash \backslash mode 2 \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize DESCRIPTION \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize reeper [OPTION]... [PV]... \backslash \backslash mode 1 \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize In this mode, make ROOT graphs by reading EPICS values periodically and plots graphs of all PVs against time. If -x or -w option is specified, additional graphs of all PVs against the 1st PV in the list are made If more that one graph exists for any given x-axis, then a multigraph with all graphs using that x-axis is also created See EXAMPLES 1, below. \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -t period \begin_inset Newline newline \end_inset set the period (ie time(s)) between reads. Default = 2s \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -x \begin_inset Newline newline \end_inset make graphs of all PVs against the 1st in the list \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -w start,stop,step \begin_inset Newline newline \end_inset As -x, but additionally, write to the 1st of the listed PVs to do a scan. Must be 3 comma separated values. After each time period the next value will be written to the PV \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -W start,stop,step \begin_inset Newline newline \end_inset As above, but doesn't show the GUI and automatically saves the data and exits \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -T \begin_inset Newline newline \end_inset Force creation of additional Time Graphs when option -x or -w is chosen. \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -n points \begin_inset Newline newline \end_inset Set no of points in the scan (not valid if -w or -W option is slected) \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -N points \begin_inset Newline newline \end_inset As above, but doesn't show the GUI and automatically saves all the data and exits \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -g 0/1 \begin_inset Newline newline \end_inset Don't show, or show the GUI - this flag needs to come after -W or -n points. Default = 1 \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -m \begin_inset Newline newline \end_inset Draw multigraphs in addition to basic graphs (ie superimposed on a single graph) \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -d outdir \begin_inset Newline newline \end_inset Select a directory for any output files. Default is ./epics_gr \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -l logscript logargs \begin_inset Newline newline \end_inset Use a script with arguments to send saved data to the logbook \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -s \begin_inset Newline newline \end_inset simulation mode. Runs a softIOC For testing The following PVs are available PV23004,colliX,PMT1, Fcup,Xsetting,Ysetting,BigScaler,BigScaler,AMO_SCALERS These are updated automatically in simulation mode \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -h \begin_inset Newline newline \end_inset print this help message \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize -c maxcanv \begin_inset Newline newline \end_inset maximum number of graphs on a single canvas. Use maxcanv=1 for separate canvases. \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize [PV] \begin_inset Newline newline \end_inset EPICS PV which must be accessible with caget \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize [PV--] \begin_inset Newline newline \end_inset As above, and the -- supresses automatic creation of graphs, and makes it available for formulae (see below). \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize [PV::params] [PV##params] \begin_inset Newline newline \end_inset As above, with a fit and fit range(optional). For example: MyScalerRate::pol4 will fit 4th deg poly MyScalerRate##pol4,1.2,10.4 will fit 4th deg poly in the x-axis range 1.2 - 10.4 If both PV0(Time) and PV1 graphs exist, use :: for PV0(Time) and ## for PV1 Choosing a fit of L or C (no range needed) will join the points with a line(L) or curve(C) \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize [formula] \begin_inset Newline newline \end_inset This is a ROOT TF1 expression, in quotes, where the numbers in the brackets refer to PV indices. eg "[1]/[2]" "TMath::Cos([1]/[2])" \begin_inset Newline newline \end_inset \begin_inset Newline newline \end_inset \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize reeper [ROOT OPTIONS]...[file1.C ... fileN.C] \backslash \backslash mode 2 \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize In this mode call root with the reeper library loaded then set up customised behaviour in .C macros. See EXAMPLES 2, below. \begin_inset Newline newline \end_inset \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize EXAMPLES 1 \begin_inset Newline newline \end_inset Note. These examples use the -s flag, for simulated data. Try them \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize reeper -s colliX PMT1 Fcup \backslash \backslash graphs of PVs vs Time(PV0) \begin_inset Newline newline \end_inset reeper -s -x colliX PMT1 Fcup \backslash \backslash graphs of PVs vs colliX(PV1) \begin_inset Newline newline \end_inset reeper -s -T -x colliX PMT1 Fcup \backslash \backslash both sets of graphs (Time and colliX) \begin_inset Newline newline \end_inset reeper -s -T -w -2.0,2.0,0.1 colliX PMT1 Fcup \backslash \backslash as above, and scans colliX: -2.0->2.0 step=0.1 \begin_inset Newline newline \end_inset reeper -s -w -2.0,2.0,0.1 colliX PMT1::gaus \backslash \backslash as above, and fits gaus to both PMT1 \begin_inset Newline newline \end_inset reeper -s -w -2.0,2.0,0.1 colliX PMT1::gaus,-1.0,1.0 \backslash \backslash as above with restricted fit range \begin_inset Newline newline \end_inset reeper -s -x colliX PMT1-- Fcup-- "[2]/[3]" \backslash \backslash exclude PMT,Fcup from graphs, but make graph of ratio \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize EXAMPLES 2 \begin_inset Newline newline \end_inset Note. These examples use root macros to do EPICS PV plotting. All use simulated PVs in a softIOC. The macros are templates to show how to use the GrimReeper features. Copy and hack. \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize reeper -l /home/kl/Dropbox/epics/reeper/grBasic.C \backslash \backslash Sets up a simple scan and plots one PV against another \begin_inset Newline newline \end_inset reeper -l /home/kl/Dropbox/epics/reeper/grScanFancy.C \backslash \backslash Shows how to do a 2d scan, fill 2d histograms and read waveforms. \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize AUTHOR \begin_inset Newline newline \end_inset Written by Ken Livingston \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize SEE ALSO \begin_inset Newline newline \end_inset reeper is part of the (GRIM)REEPER package. (GRIM)REEPER Implements Macros to Read EPICS Events and Plot Everything in ROOT Full documentation at \end_layout \begin_layout Standard \noindent \family typewriter \size footnotesize June 2017 \end_layout \end_body \end_document