From e852soft-l@bnl.gov  Thu Feb 24 23:21:11 1994
Received: from bnl.gov by lemond.phy.bnl.gov via SMTP (920330.SGI/920502.SGI)
         id AA03905; Thu, 24 Feb 94 23:21:11 -0500
Received: by bnl.gov (5.57/Ultrix3.0-C)
        id AA26908; Thu, 24 Feb 94 23:21:12 -0500
Date: Thu, 24 Feb 94 23:21:12 -0500
Message-Id: <9402250419.AA11877@weygand.phy.bnl.gov>
Comment: e852 software information
Originator: e852soft-l@bnl.gov
Errors-To: meehan@weygand
Reply-To: 
Sender: e852soft-l@bnl.gov
Version: 5.5 -- Copyright (c) 1991/92, Anastasios Kotsikonas
From: olchansk@weygand (Konstantin Olchanski)
To: Multiple recipients of list 
Subject: LGD calibrations + map manager = friends


I took upon my humble self the hard task of squeezing the LGD calibrations
into the map manager.

In the program, the lgd calibrations are stored in the 'lgd_calibration' array
of lgd_calibration_t structures:

typedef struct
{
  int channel;
  int threshold;         /* no hits with adc less than 'thershold' will be used */
  float adc0;            /* adc to energy conversion is: energy = energy0 + slope * (adc - adc0); */
  float energy0;
  float slope;

} lgd_calibration_t;

Here-

    channel- is the logical block channel (as defined by the lgdGeom package)
    threshold- adc threshold- hits below this threshold are ignored.
    adc0, energy0, slope-  define the adc to energy conversion in the most
                           general way-
                       
                energy = energy0 + slope * (adc - adc0);
    
    slope- is the slope,
    adc0-  is the average adc value
    energy0- is energy corresponding to adc = adc0.

    A straight line could have been defined by only two numbers,
    intercept and slope,
    however these two parameters are correlated (when slope changes,
    the intercept also has to change).

    The three proposed parameters are independant.


------------------------------------------------------

In the map manager-

because we have a number of different LGD's with different number of blocks,
the simplest thing I could think about to handle it is to have a separate
map manager file for each one (i.e. P3 9x9 and full LGD).

The map file name is: $E852_CONFIG/maps/lgdNNNN.map, where NNNN is the number of channels.
The subsystem is 'calibration'
The items are-
  'channel' - array os channel values in the lgd_calibration_t structure,
  'threshold' - array of thresholds
  'energy0', 'adc0' and 'slope' store adc0, energy0 and slope for each channel.


-------------------------------------------------------

The code implementing stuff described above is already written and is beign
tested. Those interested can find it in SCCS: subsystem 'libanalyzer',
file 'lgdglue.c'.

I would like very much to hear opinions of everybody concerned
before I will start to fill the map files with data and starting to use
this code in the production version of our 'a1' analyzer.

Const Olchanski

end file