Rhic Monitor System Description
The RHIC monitor system consists of a server application, the RHIC
CDEV database and its servers,
and the Objectivity database. The purpose of the system is to retrieve
the RHIC monitored machine
parameters, make them available to PHENIX applications, and to archive
them for latter access.
RHIC machine parameters are stored in the RHIC CDEV database. The PHENIX
rhic monitor server
runs on phoncs0. This server retrieves the monitored data from
the CDEV server where it caches the
data locally and stores it in the PHENIX Objectivity database.
The PHENIX server provides access
functions so that applications can read the data directly from the
server. Additional functions are
available to recall the data from the Objectivity database.
phoncs0> psit
[29917: New Connection (phoncs0.phenix.bnl.gov,IT_daemon,*,phoncs,pid=4430,optimised)
]
Active servers at node phoncs0.phenix.bnl.gov are :
Name
Marker Code Comms Port
Launch PerClient? OS-pid
------------------------------------------------------------------------------
phoncs/RhicMonitor* cdr
tcp 2623 manual ---
18454
Data which is updated asynchronously from the RHIC CDEV server is done
so through a callback mechanism.
With this update mechanism the CDEV database server updates
the PHENIX rhic monitor server when a
change in value of a monitored parameter in the CDEV database.
Currently, the bunchcurrent and beam current
parmeters are updated with this mechanism. All of the other RHIC parameters
are updated synchronously.
The data that is updated synchronously reads data from
the RHIC CDEV database every 30 seconds.
The bunch current and beam current data is currently being updated
by the CDEV database every 4 seconds.
The rhic server archives the monitored data to the Objectivity database
every 10 minutes. The data is also
currently being stored in an ascii file.
CDEV Object | IDL description |
ringSpec | RhicRingSpec IDL |
irSpec | irSpec IDL |
DvmControl | DvmControl IDL |
WcmControl | WcmControl IDL |
SisScaler | SisScaler IDL |
Polarimeter | Polarimeter IDL |
rhicStructs | rhicStructs IDL |
In order to simplify client application access to the RHIC server
and its parameters a number of helper
classes have been written. These helper classes provide functions
to connect to the rhic server, to
retreive the data from it, and to display the returned data.
The helper classes hide from the user all
CORBA specific information. A description of the helper classes
and sample code can be found here
There are currently 6different object types that are being read from
the CDEV database. These
are the ringSpec, irSpec, WcmControl, DvmControl, SisScaler, and Polarimeter
objects. The names of each
of the objects for each object type that is being read from the CDEV
database is described in
table CDEV Object
Names . These are the names which are used by a client application
to
gain access to the object in the rhic server which runs on phoncs0.
The names of the attributes, their data types and the number of values
of each attribute is described
in the following tables:
Object Type | Table |
ringSpec | ringSpecDescription |
irSpec | irSpec Description |
DvmControl | DvmControl Description |
WcmControl | WcmControl Description |
SisScaler | SisScaler Description |
Polarimeter | Polarimeter Description |
All data read from the RHIC CDEV database is stored in the Objectivity
database. Currently it is stored
every 10 minutes.
For each CDEV data object there is a corresponding object in which that
objects data is stored into the Objectivity database. Accordingly,
the following table defines the objects that are currently stored in the
Objectivity database:
CDEV Object | Objectivity Object |
ringSpec | RhicRingEntry |
irSpec | RhicIrEntry |
dvmControl | DvmControlEntry |
wcmControl | WcmControlEntry |
sisScaler | SisScalerEntry |
Polarimeter | PolarimeterEntry |
There is one object of each type for each object that is read from the
CDEV database. Each object is
given an identical name as it is accessed from the CDEV database.
The names of these objects are
in cdev Object
Names .
int searchContainer(char * objectname,char * month, char *date, char *yr);
int getWcmControlData(char * objectName, char *Mon, char *day, char * yr,wcmControlStruct & data);
int getRingData(char * objectName, char *Mon, char *day, char * yr,rhicRingStruct & data);
int getScalerData(char * objectName, char *month, char *day, char * yr,SisScalerStruct & data);
int getDvmControlData(char * objectName, char *month, char *day, char * yr,DvmControlStruct & data);
int getIrData(char * objectName, char *month, char *day, char * yr,rhicIrStruct
int getPolarimeterData( char * objectName, char *month, char *day, char * yr, PolarimeterData & data);
/**
* Gets a list of objects that match the name for the specified
date
*/
int getObjectEntryList(char * objectName, char *month, char
*day, char * yr, rhicObjectEntryInfo * entrylist);
A new ascii file is created every day at midnight and the subsequent
days data is written to the file. The file is
located in $ONLINE_LOG. The files are named rhicdata.MonDayYear.dat.
An example is the
file rhicdata.Oct232001.dat. The ascii file was originally written
until the Objectivity interface was completed.
This operation will be discontinued if it is no longer needed.
Ascii File format
The format of the data in the ascii file is the name of the object from
which the data is read followed by the
date, the parameter name and the data. For example the beam current
data for the blue ring which was
read out on Nov 6 is stored as follows:
yi2-wcm3,Tue Nov 6 23:52:07 2001,wcmBeam,16.4228