lgdmond

Introduction

The primary tool for monitoring the state of the LGD is lgdmond. This program checks the BOS and EOS events, and logs any problems it finds. In addition, in the case of major failures, it will send alarms to the alarm server.

Getting Data

In order to be assured of getting data, lgdmond runs off of DAQ shared memory. This guarantees that it will see enough data, regardless of what analyzers are running, etc. This also means that it must run on mpsdaq. It is normally started as part of the standard DAQ startup.

Entire spills are grabbed from shared memory (queue = BUF_EB_LGD3), and the BOS and EOS events are examined. An area of shared memory is also set up that holds data so other programs can access it (this is not fully implemented), and also for commands to be sent to lgdmond.

So as not to take up too much CPU, lgdmond is configured to skip some spills, and not process them. Normally, it only processes every third spill.

Processing Data

When lgdmond gets a spill, it does the following:

Reporting Problems

At the end of each run, a list of problems is created, and saved to $E852_LOGDIR/LGD/RunXXXX.log. This uses the averages that have been accumulated during the run. This data will only be dumped if at least 50 spills have been seen by lgdmond. The list contains:

The values of the pedestals are also saved to the map (lgd3053.Map) along with thresholds. These thresholds determine when a channel is determined to have a hit. The thresholds are given by : average + 3*sigma.

Controlling lgdmond

The primary means of controlling lgdmond is through a perl script, ctl.lgdmond. This takes one of three arguments :

You can also send two commands directly to lgdmond with the program mondCommand. It communicates with lgdmond through shared memory, and thus must also be run on mpsdaq. After every spill, lgdmond checks to see if there is a command for it. AT this time, mondCommand takes on of two arguments :

** 1/18/94 R.L.