[Please note that the tools documented here are being phased out. A new Online QA is available.]
The STAR online monitoring system consists of two applications currently running on a quad-CPU Intel-i386 Linux machine.
The first application is the evpServer. During data taking, its main functionality is to constantly read the most recent event from the event pool and fill user defined histograms which are written into a memory mapped file.
The second application is called the QEvpClient. Its purpose is to read the histograms provided by the evpServer from the memory mapped file and display them. While in the whole of STAR only one evpServer is running, multiple instances of QEvpClient are typically running.
The histogramming is done via the ROOT analysis package (http://root.cern.ch) which I have installed as version 5.08/00b. The letter Q signifies the use of Trolltech’s Qt (http://www.trolltech.com/) in the QEvpClient's gui. Qt is extended via the qtRoot (http://www.trolltech.com/) package provided by Valeri Fine.
See also:
Online Histogram Procedures
Comparing to what you may have been accustom to from previous years (before 2009), the sources have moved and are currently located in cvs under OnlTools/OnlinePlots/.
For development, you should be in the 'dev' environment to build the online plots (run stardev).
You may also need to edit some of the variables in the .rootrc file CompileOnlinePlots.csh generates (the default values may work). For detailed information about the arguments in EvpPlotServer.C, see Expert Modes.
For normal testing against an old run, in EvpPlotServer.C just edit the line after the "-path" option in argsS[] to specify either a run number in /a/ (when on the evp.starp machine) or a daq file (commonly found under /star/data03 on RCAS). Then uncomment the evpServerMain::main line.
You may want to make a copy of this file for running the presenter (a common practice is to make one copy named server.C, and one copy named presenter.C). Just make sure that evpServerMain::main is commented out and evpMainPresenter::main is in.
Starting the server should be done with
root4starN -b -q EvpPlotServer.C
If developing code, recompilation is achieved simply by using cons.
Know what you are doing.
Especially, if you use the evpops account on the evp.starp machine. You might disturb experiment operations.
After successful installation, all scripts are located in the ~operator/pplots/ directory. The following expert-only options exist:
The evpServer can be started with the following options by editing EvpPlotServer.C:
-nogui | no graphical user interface will be opened |
-disabled | if GUI is present, user interaction is disabled |
-live | immediately switch to live mode after start-up |
-start | start requesting data immediately after start-up |
-end | launch end-of-run-action, when end of run is detected (prints all active panels into a pdf file and saves to data base) |
-path <pathname> | switch off live mode and read data from <pathname> |
-map <mapfilename> | do not write to default memory mapped file, write to <mapfilename> |
-nocheck | do not check for other running instances of evpServer |
-nevents <number> | process only <number> events for each run |
-quit | quit at the end of the run |
-h | print list off command line options |
When the Presenter is started without any additional arguments, the live mode will read from the default memory mapped file.
Edit EvpPlotServer.C (and uncomment the presenter option) and specify a pathname to the memory map file, e.g. test.map, which will be used instead of the default memory mapped file name.
Example: If you are developing code and want to run the Server and Presenter without interfering with the experiment monitoring, you would specify a map file for the server and have the presenter read that map file.
A histogram group, as specified in the base class HistogramGroup, consists off a set of histogram that usually will be printed onto one canvas.
A class of type HistogramGroup is responsible for creating, deleting, filling, resetting, and drawing of its histograms. It also holds information about the detector groups and event groups for which the group should be active two unsigned int (Jeff L ).
When processing event from the event pool, the online monitoring is examining every histogram group whether its detector and event group match current event’s respective groups. Only if a match if found, the HistogramGroup is filled. The fill function is passed pointers to the evpReader and the to data: virtual bool fill(evpReader*, char* datap)
With every new run, a HistogramGroups reset() function is called.
HistogramGroup.h:#ifndef HistogramGroup_h
#define HistogramGroup_h
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "TCanvas.h"
#include "TString.h"
class evpReader;
class TMapFile;
#include <map>
#include <set>
#include <list>
#include <vector>
#include <string>
using namespace std;
#include "Rtypes.h"
class HistogramGroup : public TObject {
public:
HistogramGroup(const char* group, const char* subGroup, const char* trigger="any", const char* detector="any");
// HistogramGroup(const HistogramGroup&);
virtual ~HistogramGroup() { }
virtual bool fill(evpReader* evp, char* datap) { return true; }
virtual void draw(TCanvas* cc);
virtual void reset() {}
public:
const char* groupName() const { return mGroupName.Data(); }
const char* subGroupName() const { return mSubGroupName.Data(); }
const char* triggerName() const { return mTriggerName.Data(); }
const char* detectorName() const { return mDetectorName.Data(); }
const char* id() const { return mId.Data(); }
bool operator<(const HistogramGroup& hg) const;
protected:
TString mGroupName;
TString mSubGroupName;
TString mTriggerName;
TString mDetectorName;
TString mId;
public:
bool testBits(unsigned int trigger, unsigned int detector);
void setActive(bool b) { mActive = b; }
bool active() { return mActive; }
protected:
char* pre(const char* a);
void pre(vector<TH1*>& );
unsigned int mTriggerBits;
unsigned int mDetectorBits;
bool mActive;
ClassDef(HistogramGroup,1) ;
};
#endif
Some interest has been expressed to obtain increased statistics for at least some quantities shown in the Online QA plots. We will first review what is currently available, and then discuss approaches for change.
2 x 2.4GHz Xeons with Hyperthreading
2GB of memory (perhaps PC2400)
~1+ TB of disk (6x250GB disks in a RAID 5 array)
4 NICs, 2 presently in use (Gb/sec from DAQ, 100MB/sec over "starp")
The Online Plots are run from evp.starp.bnl.gov, typically under the 'evpops' account. In the Control Room, the computer named rts01 is the "standard" location to have them displayed. The standard scripts should be stored in ~evpops/pplots/ and ~evpops.
First check The OnlinePlots icon on rts01 in the Control Room looks like this: (if you ave a better png image for this purpose, send it to Wayne Betts). It launches a small script to start the Presenter (you will need the evpops account password).
Using the icon effectively does the following steps for you (which you can do manually from any node):
Or simply run the LaunchPresenter.csh script in ~evpops. Due to an as-yet unsolved bug, it may take several tries to get the presenter running.
If the server fails to start it may be necessary to recompile it and make sure a new memory map file gets used:
Then try the above steps again.
For more details about the available options, see Expert Modes