#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 <start, stop, step>
\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 <reeper_installation>/thisreeper.csh or <reeper_installation>/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 <logscript logargs>
\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 <http:somewhere>
\end_layout

\begin_layout Standard
\noindent

\family typewriter
\size footnotesize
June 2017 
\end_layout

\end_body
\end_document