Error #00100

You are trying to access reverved area without authorization

If you have reached this page using an external link or a bookmark remember to login.

Go to the home page

The KLOE Offline Data Structure
Kloe Note 94-137

19 Sep 2000


The KLOE Offline Data Structure


A. Andryakov, A. Antonelli, C. Bloise, A. Calcaterra, G. Capon, G. Cataldi, G.Chiefari, S. Di Falco, F. Donno, E.Drago, A. Farilla, E. Gorini, F. Grancagnolo, W. Kim, J. Lee-Franzini, S. Miscetti, F. Pelucchi, M. Primavera, S. Wöllfle


  1. Introduction
  2. Data structure: software considerations for YBOS banks
  3. General rules for bank creation
  4. Logical record
  5. Monte Carlo banks
  6. Detector banks - Raw and Element Format
  7. Segment banks
  8. Object banks
  9. Database
  10. Appendix A

Introduction


The aim of this document is to introduce users and code writers to the KLOE event data structure, describing the hierarchical scheme which represents different stages of the reconstruction process and the banks containing the information. The idea is to have a coherent way of storing events which is the same at each stage of the software, from Monte Carlo and simulation analysis to "real" data. At each level of the analysis, we find a logical progression of YBOS banks from the most elementary level of the data structure to the sequentially more highly refined levels. The first and most elementary level in the topological hierarchy is the Raw Data Bank, a YBOS Bank which contains detector information as it comes out from the data acquisition system. Immediately above this is the element level. An Element Bank is a construct of the raw data which retains most of the granularity of the detector information which it represents, but uses the calibration database to correct the digitised information into real numbers corresponding to physics quantities. Elements are organised by detector reflecting that calibration is invariably done on a detector by detector basis. Above this level is the segment level. Segments are the combination of the information from one or more detector. As an example, segments may be helices in a tracking chamber or energy clusters in a calorimeter. Objects are the lowest level in this hierarchy. Objects are the items which are used by physicists for analysis and should have transparent interpretations in terms of the physics of the event. However, they are conceptually different from segments in that they are associated with a physics interpretation of the event and have physics dependent assumptions regarding their kinematic attributes. At each stage of this chain a mechanism to go back to the parent bank is available. Before a detailed discussion of this data structure, general considerations about the YBOS banks will follow. 

Data Structure: software considerations for YBOS banks


In order to better organise the information in the YBOS banks and get the most out of the code we cannot avoid some software considerations:

Optimisation of CPU and Disk Space Usage
On machines with 64 bits data registers like the ones based on the Alpha chip it pays to avoid using a Fortran INTEGER*2 and C short data types. The Alpha chip issues LDx_U instructions and some bit masking instructions to get at the data, rather than a single LDL instruction for the 32 bit data type. Also data within structures (YBOS common blocks) should be aligned to at least 64 bit boundaries. The considerations above facilitate a better use of the CPU but penalise a lot the use of the available mass storage. In fact, data occupy double the space that they would if stored in INTEGER*4 longwords. We should decide what is most critical for KLOE. For the Cosmic Ray Stand and Test Beam 1994 the use of Alpha based and 64 bits HP machines will be limited: data coming from the DAQ and RAW data banks will be stored in INTEGER*2 words to save disk space.

Integer Conversions
It is also important to avoid divisions between integers and, in general, integer to floating point conversions. Integer division is achieved by converting the integer to a float and dividing and converting back to an integer. Whenever possible, integers should be recoded to a floating point data type to avoid the conversion. In fact the current Alpha CPU chip has no direct connection between its floating point unit and its integer unit, which means such conversions require a load/store operation and are thus less efficient. Information will not be compressed when dealing with Element Banks but real numbers are used where necessary.

Multidimensional Arrays
Multidimensional arrays should be stored following the FORTRAN 'natural' order so that they can be traversed avoiding trashing the CPU's cache. Columns in an array should be scanned first.

Bit Encoding
Few conventions need to be established for bit encoding. Bit encoding of 32 bit words (longwords) shall be described according the VAX representation of 32 bit integers. The lower half word is the less significant 16 bits of an integer and the upper half word is the more significant 16 bits of an integer. The least significant bit is called bit 0, while the most significant bit is called bit 31. Since all data structures employ YBOS for their representation, the interpretation of such bit encoded meanings is machine independent, regardless of the precise internal machine representation of the integer. 


General rules for bank creation


In this section general rules for creating banks are given. Such rules should be strictly respected to grant coherence among banks and avoid collisions.

Naming conventions
Banks should be named using the following rules:

  1. The first letter describes the detector part:
  2. Letter Detector 
    Anti-coincidence 
    Calorimeter 
    Drift Chamber 
    Inner (Vertex) chamber 
    Quadrupole Instrumentation
    Trigger 
  3. The last letter classifies the type of the bank:
  4. Letter Bank type 
    Raw 
    Element 
    Segment 
    Object 
  5. Squeezed banks made using some specific algorithm to save space in the output file should have the same name as the originating bank but in LOWER CASE. The convention explained in point 2 should be respected. Raw banks will be squeezed and their name does not follow this rule.
Structure of data inside a bank
A YBOS bank is made by a YBOS header that the user can just read but not modify, and a user data block. In KLOE the user data block of a bank is logically broken in two pieces, a user header and a data body. The user header contains information about the bank itself: the size of the header MUST be the first word; the bank version number described later follows the header size; optionally the number of information stored inside the bank; other optional information. Storing the size of the header inside the bank allows users to increase the words in the header so that new code is backward compatible through the use of the bank version number. Header size and version number are integer numbers that can be eventually packed in one YBOS longword. The header block and the data body of a bank MUST be aligned to 32 bits.

Backward compatibility
All YBOS banks shall be numbered starting with 1 and each bank is given its own, independent version number. This version number is stored inside the bank, thereby allowing that programs capable of decoding older as well as newer banks may be written, without requiring any re-compilation(s) in the older environment(s). Every time one changes the structure of a KLOE bank by changing some values of parameters in the Include File and/or introducing new parameters, one must also increment the parameter for the version number.

   CODING SUGGESTION for routines reading data from a specific bank:

C
C--Check if old version of bank structure:
    IF (IW(INDDAT+VRSDxx) .NE. VRSNxx) THEN
      CALL ERLOGR(Subnam,ERWARN,0,0,
   &    "Bank structure not up to date; "
   &   //"- bank (xxxx,n)")

C--Correct the base index to the data
C--if (size of KLOE header .ne. HDRSxx):

      IF (IW(INDDAT+HDRDxx) .NE. HDRSxx) THEN
       BASIND = INDDAT+IW(INDDAT+HDRDxx)-HDRSxx
      ELSE
       BASIND = INDDAT
      ENDIF
C
C--Version number of bank is up to date:

    ELSE
      BASIND = INDDAT
    END IF

Tabular Banks
Wherever blocks of information are repeated in the user data body of a bank a tabular structure is recommended. In a tabular structure information is stored by rows and columns. The number of columns is fixed, while the number of rows varies. A block of information is given by the data stored in a row. In this case, the number of rows and columns is stored in the bank header while data are stored in the data body one row (block) of information after the other. The reason for storing the number of rows and columns in the bank header is code backward compatibility: a new column can be easily added to the bank and the new code, checking the version number, can still jump between rows using the number of columns as the block information size. New variables MUST be added only at the end of header or body blocks.

Parameters and Documentation
Banks should be described by mean of include files available to FORTRAN programs and by Latex documentation files to be put in KLOE$DOC. In each bank include files parameters which give the displacement of the various words in the bank from the main YBOS INDDAT pointer are given. These parameters must be named following the convention that the first three letters of their names MUST be the same as the bank name.

Bank Aliases
At the Segment level, different physics algorithms produce banks having the same internal structure but different contents. Because users may want to save the results of several algorithms in the same output file, the banks MUST differ in the name. The concept of a bank alias has been introduced in KLOE through the usage of bank names parameters. In the include file describing the bank different parameters, each referring to a different physics algorithm, may define bank names for the segment banks. The name of the parameter variable is meaningful and identifies the algorithm used to create the bank in question. All names for the same bank MUST be defined in the same include file. It is the responsibility of each detector group leader to ensure no collisions among bank names. The naming convention rules for a bank MUST be respected also in this case.

Link Mechanisms
Links can be established between banks. This should be done using the YBOS bank name and number or via internal bank offsets. Work link banks (obtained by calls to BLINK) are only temporary and have the life of a program. 


Logical Record


This section is addressed to give a description of the Logical Run and Event Records for the Raw and Element Data. The following description of the banks within an event record uses a parameterisation of the Bank Type that is also described in the include file YBOS$LIBRARY:BNKTYP.INC. Furthermore, displacements are given relative to the Bank Data Index (INDDAT) returned by BLOCAT, rather than relative to the basic Bank Index (IND). Thus displacements are all relative to zero (in other words, the first word data word in the bank is located at offset 0).

LRID - Logical Record IDentifier Bank
The LRID Bank is the first Bank in any logical record (Run or Event) and is the bank through which ANALYSIS_CONTROL recognises the Record Type. It has the following Bank Header Characteristics:
Bank name  "LRID" 
Bank number 
Bank Data Length 
Bank Type  BNKTI4 (Integer*4) 

The Bank contains the following information:
Displacement (I*4) Word type Description
I*4  Run Number
I*4  Run Type 
I*4  Record No. 
I*4  Record No. of this type 
I*4  Record Type 
I*4  Creating Process ID 
I*4  Creation Date 
I*4  Creation Time 

  1. Run Number. Run Numbers for runs writing data to tape shall be unique within each Experiment Type and shall monotonically increase.
  2. Run Type. This word has the following fields:
  3. Bits 00-11  Run Type 
    Bits 12-15  Run Modifier 
    Bits 16-19  Spare 
    Bits 20-23  Spare 
    Bits 24-31  Experiment type 

    For KLOE the following Experiment and Run Types have been defined:
    Experiment Type
    KLOE Physics 
    Cosmic Ray Test Stand 
    Offline Simulation 
    Test beam 
    Run Type
    Undefined 
    Physics 
    Cosmic Ray 
    Calibration 

    The include file K$INC:RUNTYP.INC contains parameters with the definitions above.

  4. Record No. This field indexes each event (logical record) sequentially as it is written to tape. It is only specified for logical records written to tape and indexes records commencing at 1 within each run.
  5. Record No. of this type within Run. This field indexes each logical record of a particular record type sequentially as it is written to tape. It is only specified for logical records written to tape and indexes records commencing at 1 within each run. For fast event retrieval by the display program, in case of simulated events, the Record No. of this type has been substituted by the Event Number, e.g. a not sequential event identificator.
  6. Record Type. Identifies Logical Records as Run, Events, Calibration Records, Comments etc. This word has the following fields:
  7. Bits 00-15  Record Type 
    Bits 16-31  Spare 

    The possible record types for the KLOE experiment are defined in the include files K$INC:RECTYP.INC. A C version of the same include file is available in the same area.

  8. Creating Process ID. This identifies uniquely the process that was the creator of this logical record. It is made up of the following fields:
  9. Bits 00-15  Process ID 
    Bits 16-23  Release Number 
    Bits 24-31  Version Number 

    Thus each process that generates an event record has assigned to it a unique Identifier, being in the range 0-65535. Additionally, each process is stamped by Version and Release Numbers in the range 0-255. The Version Number should be incremented for major changes to the software, whereas the Release Number should track such things as bug fixes etc. within a Version. In case of simulated event, the Process ID is replaced by the TCP IP address of the running machine. Only the 16 less significative bits of the TCP IP Address are stored. Moreover, the 16-18 bit range is used for the GEANFI version level, the 19-21 bit range for the GEANFI version release, the 22-23 bit range for the GEANFI version, and the 24-31 bit range for the YBOS version.

  10. Creation Date. Date of creation of the record in the form:
  11.  65536*Years + 256*Months + Days
    Where the Years should be in 4 digit form (e.g. 1983). This format has the property that it monotonically increases with increasing date and therefore enables easy searches to be made.
  12. Creation Time. Time of creation to nearest second in the form:
  13.  65536*Hours + 256*Minutes + Seconds
    Where a 24 hour clock should be used. This format has the property that it monotonically increases with increasing time and therefore enables easy searches to be made.
Include files describing the parameters for LRID may be found in K$INC.

EVCL - EVent CLassification Bank
The EVCL Bank contains information from various sources that serve to classify the event. This Bank is only present in Event Logical Records and is used by Analysis_Control to classify events. The Bank has the following Bank Header Characteristics:
Bank name  "EVCL" 
Bank number 
Bank Data Length 
Bank Type  BNKTI4 (Integer*4) 

The structure of the EVCL bank is as follows:
offset
(in uints (INTEGER*4))
type name description valid from version
0 uint (INTEGER*4) trignum Trigger number
1 2 x uint (2 x INTEGER*4) trigw Trigger Descriptor (used only by Monte Carlo)
3 uint (INTEGER*4) farm_id Farm identifier
4 uint (INTEGER*4) version EVCL version number
5 uint (INTEGER*4) packed_currents DAFNE currents
upper 16 bits is e+ current, lower 16 bits is e- current
currents are in 100uA units 
0x80
6 uint (INTEGER*4) packed_luminosity trgmon luminosity in 1026 units 
-1 means unknown luminosity 
0x80
7 3 x uint (3 x INTEGER*4) packed_DC_trips Up to 9 DC trips (the lower 30 bits of each uint (3x10 bits)) 
Each 10 bits represent a HV channel. 
sector 0x3ff == empty field 
if the first sector == 0x3fe, more than 9 trips were detected 

For example: 
31-30 29-20 19-10 9-0
? 10 20 32
? 59 0x3ff 0x3ff
? 0x3ff 0x3ff 0x3ff
represents trips in HV channels 10,20,32 and 59. 
31-30 29-20 19-10 9-0
? 0x3fe 0x3fe 0x3fe
? 0x3fe 0x3fe 0x3fe
? 0x3fe 0x3fe 0x3fe
represents DB chamber tripping (more than 9 HV channels were tripping) 

0x80
10 uint (INTEGER*4) detector_status Detector status and t3filter flags: 

Detector status fields: 
bit name meaning
31 DC_LV DC LV perfect iff ==0
30 DC_HV DC HV perfect iff ==0
29 EMC_LV EMC LV perfect iff ==0
28 EMC_HV EMC HV perfect iff ==0
27 MAGNET Magnet perfect iff ==0
24-26 DAFNE Dafne status 
unknown  0
no beam  1
one beam only 
two beams  3
colliding  4
injectiong  5

t3filter flags: 
bits name meaning
4-7 T3PRESCALE log2(Prescale factor)
0-3 T3FLAG T3 flag of the event 
good physics  0
cosmic ray  1

0x80
11 uint (INTEGER*4) environment_status Environment status word 
bits name meaning
12-17 VACUUM (ln(vacuum)-ln(BRIN vacuum))*10+32
0 iff invalid 
0-11 PRESSURE DC pressure*10 - 8192 
0x80
12 2 x uint (2 x xINTEGER*4) mc Monte Carlo specific data

Beginning from GEANFI version 1.05_4, the last two words of the bank (13 and 14 in the list above), are used by the Montecarlo to indicate which kind of event has been generated and the particles produced at the main vertex or, only in case of phi decays, the secondaries produced by kaons, rho, eta, f0 outcoming from the main vertex.
Word Displacement Description
13  pile_up*1000+gen_type*100+phi_chan
14 decay_1*10000+decay_2

Pile_up = 1 means that some extra-particle has been generated together with the main chain, gen_type indicates which kind of event has been generated (1= phi decay, 2=bhabha event, 3= cosmic muons, 4= machine background, 5= mu mu photon), phi_decay is the phi decay channel (0= no phi decay, 1=charged kaons, 2= neutral kaons, 3= rho pai, 4= pai+ pai- pai0, 5=eta photon, 6=pai0 photon, 7=f0 photon - positive interference with the background, 8=f0 photon - negative interference, 9= pai0 pai0 photon, 10=pai+ pai- photon). The second word (# 14 above) contains decay_1 and decay_2 which refer to the decay products of the particles produced by the phi. Decay_1 and decay_2 are coded as itype1+itype2*10+itype3*100, where itype1,2,3 are the GEANT codes for the particles, ordered in the ascending way.

BRIN - The Famous BRIN Bank!

The BRIN bank contains part of the data that describes the run. Only data available at run start are present.

The BRIN bank can be located only in the begin of run logical record (type 2); in any other logical record should be considered as a corrupon of the data.

The structure of the BRIN bank is as follows:
offset
(in uints (INTEGER*4))
type name description
0 float (REAL*4) DC_HV_BIG Nominal value of DC HV for big cells
1 float (REAL*4) DC_HV_SMALL Nominal value of DC HV for small cells
2 float (REAL*4) DC_LV_BIG Nominal value of DC LV treshold for big cells
3 float (REAL*4) DC_LV_SMALL Nominal value of DC LV treshold for small cells
4 float (REAL*4) DC_deadtime_BIG Nominal value of DC LV trigger dead time for big cells
5 float (REAL*4) DC_deadtime_BIG Nominal value of DC LV trigger dead time for small cells
6 float (REAL*4) DC_width_BIG Nominal value of DC LV trigger width for big cells
7 float (REAL*4) DC_width_SMALL Nominal value of DC LV trigger width for small cells
8 float (REAL*4) EMC_LV Nominal value of EMC LV treshold
9 float (REAL*4) atm_pressure Atmoshperic pressure
10 float (REAL*4) DC_pressure1 DC pressure, side 1
11 float (REAL*4) DC_pressure2 DC pressure, side 2
12 float (REAL*4) temperature DC gas temperature
13 float (REAL*4) flow DC gas flow
14 float (REAL*4) iso_perc Percentage of IsoButan in the DC gas mixture
15 float (REAL*4) oxygen ppm of Oxygen in the DC gas mixture
16 float (REAL*4) water ppm of water in the DC gas mixture
17 float (REAL*4) magnet_current Current inside the KLOE magnet
18 float (REAL*4) vacuum Vacuum inside the KLOE beam pipe
19 float (REAL*4) Ip DAFNE positron current
20 float (REAL*4) Im DAFNE electron current
21 11 x float 
(11 x REAL*4)
reserved Reserved for future used, set to 0.0
32 4 x uint 
(4 x INTEGER*4)
bunch_p DAFNE bunch pattern of the positron beam
36 4 x uint 
(4 x INTEGER*4)
bunch_e DAFNE bunch pattern of the electron beam
40 uint (INTEGER*4) fill_nr DAFNE fill number (valid if version>=1)
41 uint (INTEGER*4) version BRIN version
42 uint (INTEGER*4) RAW prescale Prescale factor at farm recorder level
0 or 1 - no prescale
>1 - prescale factor 
43 21 x uint 
(21 x INTEGER*4)
reserved Reserved for future used, set to 0
64 uint (INTEGER*4) nr_crates Number of DAQ crates
65 nr_crates x uint 
(nr_crates x INTEGER*4)
packed_DAQ_temp Array of packed DAQ temperatures.
The format is: 
31-24 23-16 15-8 7-0
reserved(0) crate_nr (slow control format) reserved(0) temperature
65 + nr_crates
(valid if version>=1)
uint (INTEGER*4) nr_DC_bads Number of bad DC channels
66 + nr_crates
(valid if version>=1)
nr_DC_bads x uint 
(nr_DC_bads x INTEGER*4)
packed_DC_chan_bads Array of packed DC channels.
The format is: 
31-16 15-0
layer wire
66 + nr_crates + nr_DC_bads
(valid if version>=1)
uint (INTEGER*4) nr_EMC_bads Number of bad EMC channels
67 + nr_crates + nr_DC_bads
(valid if version>=1)
nr_EMC_bads x uint 
(nr_EMC_bads x INTEGER*4)
packed_EMC_chan_bads Array of packed EMC channels.
The format is: 
31-25 24-17 16-9 8-1 0
detector module plane column side
67 + nr_crates + nr_DC_bads + nr_EMC_bads
(valid if version>=1)
uint (INTEGER*4) nr_DC_hots Number of hot DC channels not used by the trigger
68 + nr_crates + nr_DC_bads + nr_EMC_bads
(valid if version>=1)
nr_DC_hots x uint 
(nr_DC_hots x INTEGER*4)
packed_DC_chan_hots Array of packed DC channels.
See packed_DC_chan_bads for the format. 


Monte Carlo banks


The Monte Carlo banks do not follow the definition given for true data banks.

The Monte Carlo original information can be stored together with the reconstruction banks to evaluate performances and efficiencies of different algorithms.

At present three banks, the PART, the MATE, and the TMED banks are saved in YBOS format. These banks contain the same information given by the corresponding GEANT banks. The PART bank stores all parameters used in the Monte Carlo simulation to define and to track the different particles. The MATE bank contains the list of materials, elements and molecules, that are present in the different sections of the KLOE apparatus. The TMED bank describes further characteristics of the different media, such as the presence and the kind of the magnetic field, used by the particle-tracking procedure to follow each particle in the different detector parts. In the next future a VOLU bank will complete the list of banks written by the Monte Carlo at the initialisation time. It will follow the format of the analogous GEANT bank and it will allow to keep track of the changes introduced by the user via data-cards in the detector design. This bank will be filled only when some part of the detector is modified by the user and it will not contain the information stored in the KLOE database.

We propose to store the banks concerning the kinematics and the hits of the events, together with the HEAD bank containing special Monte Carlo keys related to each event, such as the random seeds used to generate the event, and their relative weights coming from the procedure handling the effect of the Q.M. interference on the decay times of the neutral kaons in the $\pi^{+}\pi^{-}\pi^{0}\pi^{0}$ final state. For each Monte Carlo run, at the end of the generation procedure one further bank is created, namely the RUNG bank. This bank, containing the solar time related to the last event and the last random seeds, allows to compute the total time employed to generate the events and to start a new run following a correct sequence of random-seed extractions.

PART -

  YBOS Bank header: 
  -----------------
Bank Name:        PART
Bank Number:      Particle number
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
------------------------------------------------------------------
 offset      word type     description     
------------------------------------------------------------------
 PARNUM       I*4  Particle number identifier
 PARNAM       I*4  Particle name
 ...
 PARNAM+4     I*4  Particle name
 PARTRT       R*4  Tracking type 
 PARMAS       R*4  Particle mass
 PARCHR       R*4  Particle charge
 PARLTI       R*4  Particle lifetime
 PARBRT       R*4  Partial branching ratio
 .....
 PARBRT+5     R*4  Partial branching ratio
 PARDMO       R*4  Partial decay mode (daughters: coded)
 .....
 PARDMO+5     R*4  Partial decay mode (daughters: coded)
------------------------------------------------------------------
MATE -
  YBOS Bank header: 
  -----------------
Bank Name:        MATE
Bank Number:      Material number
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
------------------------------------------------------------------
 offset      word type     description     
------------------------------------------------------------------
 MATNUM       I*4  Material number identifier
 MATNAM       I*4  Material name
 ...
 MATNAM+4     I*4  Material name
 MATATN       R*4  Atomic number
 MATMAS       R*4  Mass number
 MATDEN       R*4  Density
 MATRLE       R*4  Radiation Length
 MATABL       R*4  Absorb. Length
------------------------------------------------------------------
TMED -
  YBOS Bank header: 
  -----------------
Bank Name:        TMED
Bank Number:      Tracking medium number
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
------------------------------------------------------------------
 offset      word type     description     
------------------------------------------------------------------
 TMENUM       I*4  Tracking medium number identifier
 TMENAM       I*4  Material name
 ...
 TMENAM+4     I*4  Material name
 TMEMAT       R*4  Pointer to material bank
 TMESTF       R*4  To flag sensitive tracking media
 TMEMFI       R*4  Kind of magnetic field
 TMEMFM       R*4  Max magnetic field
 TMEMAA       R*4  Max angle due to magnetic field in one step
 TMEMAS       R*4  Max step
 TMEMAE       R*4  Max energy loss/step
 TMEEPS       R*4  Boundary crossing precision
 TMEMIS       R*4  Min step
------------------------------------------------------------------
HEAD - Event Header bank
  YBOS Bank header: 
  -----------------
Bank Name:        HEAD
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
------------------------------------------------------------------
 offset      word type     description     
------------------------------------------------------------------
 HEARUN       I*4  Run number
 HEAEVT       I*4  Event number
 HEARND       I*4  Random number(1)
 HEARND+1     I*4  Random number(2)
 HEAQMI       R*4  Q.M. weight (interference)
 HEAKIN       I*4  Entries in KINE bank
 HEAVER       I*4  Entries in VERT bank
 HEAUSE       I*4  User word
 ...
 HEAUSE+2     I*4  User word
------------------------------------------------------------------
The kinematic banks have the same contents of the actual KINE and VERT bank from GEANT and all the existing software can be used to retrieve this information. The links between KINE and VERT is automatically done using GUNPAK-like software, the link between the element banks and KINE is provided by banks for each sub-detector (DTKA for drift chamber and CEKA for calorimeter).

We create one HITS bank for each subdetector, containing the information on the true hit values.

The link mechanism between HITS and the KINE bank is done by saving the particle number as the second integer word following the bank header section (see below).

KINE -
There are as many KINE banks as tracks in the event; the number of the KINE bank is the same as the track number given by GEANT. Each bank contains the following information~:

  YBOS Bank header: 
  -----------------
Bank Name:        KINE
Bank Number:      Track number
Bank Data Length:
Bank Type:        BNKTR4 ! R*4

Each word in the bank can be located through the offsets shown below.
------------------------------------------------------------------
 offset      word type     description     
------------------------------------------------------------------
 KINPPX       R*4  Particle momentum along x axis.
 KINPPY       R*4  Particle momentum along y axis.
 KINPPZ       R*4  Particle momentum along z axis.
 KINPEN       R*4  Energy of the particle.
 KINPTY       R*4  Particle type.
 KINVXO       R*4  Vertex origin number.
 KINNVX       R*4  Number of produced vertices (NVTX)
------------------------------------------------------------------
 KINVLS       R*4  First offset to vertices number list
 ....           ....
User words could be stored at the end of the vertices list, for them is not possible to define offsets as parameters because the vertices list can be different for each track. A track dependent offset can be built like this:

KINVLS+NVTX

that gives the number of user words, NUSW the remaining words in the bank are the user words obtained using the offsets:

KINVLS+NVTX+I (I=1,NUSW)

VERT -
There are as many VERT banks as vertices in the event; the number of the VERT bank is the same as the vertex number given by GEANT. Each bank contains the following information:

  YBOS Bank header: 
  -----------------
Bank Name:        VERT
Bank Number:      Vertex number
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
-------------------------------------------------------------------
 offset    word type     description     
-------------------------------------------------------------------
 VERXCO     R*4  X coordinate of the vertex.
 VERYCO     R*4  Y coordinate of the vertex.
 VERZCO     R*4  Z coordinate of the vertex.
 VERTOF     R*4  Vertex time of flight.
 VERTNO     R*4  Beam track number origin of the vertex.
 VERTAR     R*4  Target track number origin of the vertex.
 VERNTR     R*4  Number of tracks generated at vertex.
-------------------------------------------------------------------
 VERTLS     R*4  First offset to tracks number list.
 ....         ....
As for the KINE bank, user words could be stored at the end of the bank and retrieved with the same mechanism.

HITS -
There is one HITS bank per detector. The banks, described below, are DHIT, for the drift chamber, VHIT, for the vertex chamber, CHIT, for the calorimeter, AHIT, for the anti-coincidence detectors, QIHI, for the instrumentation of the quadrupoles. The quadrupole itself are treated as "detectors" and the related information are stored in the QHIT bank. For the calorimeter, besides the CHIT bank described below, a special bank has been created to store the impact-point and the conversion-point of the photons onto the calorimeter. This additional bank, called CFHI, has been thought to study the algorithms used to reconstruct, for example, the apex of the showers.

DHIT - Drift Chamber hits

  YBOS Bank header: 
  -----------------
Bank Name:        DHIT
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
-------------------------------------------------------------------
 offset    word type     description     
-------------------------------------------------------------------
 DHIHDS     I*4  Header length (words)
 DHIVRN     I*4  Version number
 DHINRO     I*4  Number of hits
 DHINCO     I*4  Number of elements/hit
-------------------------------------------------------------------
 DHIPTY     I*4  Particle type
 DHITRA     I*4  Pointer to KINE bank
 DHIADR     I*4  Cell address: wire and plane 
                   (packed: 2**9*plane+wire)
 DHIXCO     R*4  X 
 DHIYCO     R*4  Y 
 DHIZCO     R*4  Z 
 DHIPPX     R*4  Px
 DHIPPY     R*4  Py
 DHIPPZ     R*4  Pz 
 DHITOF     R*4  Time 
 DHIELO     R*4  Energy loss inside the cell
 DHILEN     R*4  Track length inside the cell
 DHITIM     R*4  Drift time (ns)  
 DHIDIS     R*4  Distance from the wire
 DHIFLA     I*4  packed flag (10*number of times the particle crosses 
                   chamber walls + number of crossed wires)
-------------------------------------------------------------------
PLEASE NOTE: The "plane" part of the cell address word (at offset DHIADR) is produced in the GEANFI convention in which sense layer n.1 is the innermost. But in the reconstruction program for charged tracks this number is changed to the ARGUS convention in which layer n.1 is the outermost.

VHIT - Vertex Chamber hits

  YBOS Bank header: 
  -----------------
Bank Name:        VHIT
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
-------------------------------------------------------------------
 offset    word type     description     
-------------------------------------------------------------------
 VHIHDS     I*4  Header length (words)
 VHIVRN     I*4  Version number
 VHINRO     I*4  Number of hits
 VHINCO     I*4  Number of elements/hit
-------------------------------------------------------------------
 VHIPTY     I*4  Particle type
 VHITRA     I*4  Pointer to KINE bank
 VHIADR     I*4  Tube number
 VHIXEN     R*4  X - entrance
 VHIYEN     R*4  Y - entrance
 VHIZEN     R*4  Z - entrance
 VHIXEX     R*4  X - exit
 VHIYEX     R*4  Y - exit
 VHIZEX     R*4  Z - exit
 VHIPMO     R*4  Particle momentum
 VHITOF     R*4  Time 
 VHIELO     R*4  Energy loss inside the tube
 VHITXC     R*4  X-position of the tube center
 VHITYC     R*4  Y-position of the tube center
-------------------------------------------------------------------
CHIT - Calorimeter hits
  YBOS Bank header: 
  -----------------
Bank Name:        CHIT
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
-------------------------------------------------------------------
 offset    word type     description     
-------------------------------------------------------------------
 CHIHDS     I*4  Header length (words)
 CHIVRN     I*4  Version number
 CHINRO     I*4  Number of hits
 CHINCO     I*4  Number of elements/hit
-------------------------------------------------------------------
 CHIPTY     I*4  Particle type
 CHITRA     I*4  Pointer to KINE bank
 CHIADR     I*4  Cell address : column,plane,wedge,cal. number
                   (packed: see CELE bank)
 CHIXCO     R*4  X (average)
 CHIYCO     R*4  Y (average)
 CHIZCO     R*4  Z (average)
 CHITOF     R*4  Time (average)
 CHIELO     R*4  Energy loss inside the cell
 CHILEN     R*4  Track length inside the cell
-------------------------------------------------------------------
CFHI - Photon impinging and conversion points
  YBOS Bank header: 
  -----------------
Bank Name:        CFHI
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
-------------------------------------------------------------------
 offset    word type     description     
-------------------------------------------------------------------
 CFHHDS     I*4  Header length (words)
 CFHVRN     I*4  Version number
 CFHNRO     I*4  Number of impact points + conversion points
 CFHNCO     I*4  Number of elements/impact point,conv.p.
-------------------------------------------------------------------
 CFHPTY     I*4  Particle type
 CFHTRA     I*4  Pointer to KINE bank
 CFHADR     I*4  Cell address : (CHIT/CELE coding)
                 +15th bit set in case of conversion point
 CFHXCO     R*4  X 
 CFHYCO     R*4  Y 
 CFHZCO     R*4  Z 
 CFHPPX     R*4  Px
 CFHPPY     R*4  Py
 CFHPPZ     R*4  Pz
 CFHTOF     R*4  Time
 CFHLEN     R*4  Total track length of the impinging particle.
-------------------------------------------------------------------
AHIT - Anti-coincidence detector hits
  YBOS Bank header: 
  -----------------
Bank Name:        AHIT
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
-------------------------------------------------------------------
 offset    word type     description     
-------------------------------------------------------------------
 AHIHDS     I*4  Header length (words)
 AHIVRN     I*4  Version number
 AHINRO     I*4  Number of hits
 AHINCO     I*4  Number of elements/hit
-------------------------------------------------------------------
 AHIPTY     I*4  Particle type
 AHITRA     I*4  Pointer to KINE bank
 AHIADR     I*4  Address : anti-coincidences numbered following z-axis
 AHIXCO     R*4  X 
 AHIYCO     R*4  Y 
 AHIZCO     R*4  Z 
 AHIPPX     R*4  Px
 AHIPPY     R*4  Py
 AHIPPZ     R*4  Pz
 AHITOF     R*4  Time
 AHIELO     R*4  Energy loss
 AHILEN     R*4  Track length inside the anticoinc.
-------------------------------------------------------------------
QHIT - Quadrupole hits
  YBOS Bank header: 
  -----------------
Bank Name:        QHIT
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
-------------------------------------------------------------------
 offset    word type     description     
-------------------------------------------------------------------
 QHIHDS     I*4  Header length (words)
 QHIVRN     I*4  Version number
 QHINRO     I*4  Number of hits
 QHINCO     I*4  Number of elements/hit
-------------------------------------------------------------------
 QHIPTY     I*4  Particle type
 QHITRA     I*4  Pointer to KINE bank
 QHIADR     I*4  Address : quadrupole numbered following z-axis
 QHIXCO     R*4  X impinging point
 QHIYCO     R*4  Y impinging point
 QHIZCO     R*4  Z impinging point
 QHIPPX     R*4  Px impinging point
 QHIPPY     R*4  Py impinging point
 QHIPPZ     R*4  Pz impinging point
 QHITOF     R*4  Time impinging point
 QHIELO     R*4  Energy loss inside the quadrupole
 QHILEN     R*4  Track length inside the quadrupole
-------------------------------------------------------------------
QIHI - Quadrupole instrumentation hits
  YBOS Bank header: 
  -----------------
Bank Name:        QIHI
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
-------------------------------------------------------------------
 offset    word type     description     
-------------------------------------------------------------------
 QIHHDS     I*4  Header length (words)
 QIHVRN     I*4  Version number
 QIHNRO     I*4  Number of hits
 QIHNCO     I*4  Number of elements/hit
-------------------------------------------------------------------
 QIHPTY     I*4  Particle type
 QIHTRA     I*4  Pointer to KINE bank
 QIHADR     I*4  Address : numbered following z-axis
 QIHXCO     R*4  X impinging point
 QIHYCO     R*4  Y impinging point
 QIHZCO     R*4  Z impinging point
 QIHPPX     R*4  Px impinging point
 QIHPPY     R*4  Py impinging point
 QIHPPZ     R*4  Pz impinging point
 QIHTOF     R*4  Time impinging point
 QIHELO     R*4  Energy loss inside the quadrupole instrumentation
 QIHLEN     R*4  Track length inside the quadrupole instrumentation
-------------------------------------------------------------------
RUNG - Run Summary bank
  YBOS Bank header: 
  -----------------
Bank Name:        RUNG
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTR4 ! R*4
Each word in the bank can be located through the offsets shown below.
------------------------------------------------------------------
 offset      word type     description     
------------------------------------------------------------------
 RUNGID       I*4  Run number
 RUNVER       R*4  Geant version
 RUNVER+1     R*4  Zebra version
 RUNRND       I*4  Last random number(1)
 RUNRND+1     I*4  Last random number(2)
 RUNEVS       I*4  Number of events
------------------------------------------------------------------

Detector banks - Raw and Element format


In this section a description of all detector banks follows for both formats, raw and element. The banks are also described by include FORTRAN files available in the general include area K$INC. For the raw banks the following is a first draft proposal. In fact, the general structure of data coming from DAQ is not yet completely defined. We would like to propose the following:
  1. It is desirable that the format of the raw data coming from the online Data Acquisition System is YBOS. We are aware that this could have a (small) impact on the speed of the DAQ and on the space occupied by the raw data, but nevertheless this option should be taken seriously.
  2. The raw data banks should be separated for each subdetector in TDC and ADC banks.
  3. The addresses for TDC and ADC should be the electronic ones, not the geometric ones, because this will make a lot easier to correct for miscabling, which is a very likely possibility, especially at the beginning of the experiment.
If the first two requests can not be met for some reasons, another stage of processing will be necessary before the ones described here.

CADR - Calorimeter ADc Raw data bank
The CADR bank stores the ADC values for the calorimeter. It has the following YBOS header characteristics:

Bank Name:        "CADR"
Bank Number:      1
Bank Data Length: HDSIZE+NADC*NVAL   (in 4 bytes words)
Bank Type:        BNKTI4        (integer*4)
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the displacement pointers shown below.
--------------------------------------------------------------------
 Offset   Word type  Description
--------------------------------------------------------------------
 CADHDS     I*4   Header size HDSIZE
 CADVRN     I*4   Bank version number
 CADNRO     I*4   Number of ADC values (NADC)     \ might be
 CADNCO     I*4   Number of values per ADC (NVAL) / packed
--------------------------------------------------------------------
 CADADR     I*4   First Packed word of electronic 
            address and ADC Pulse height  
--------------------------------------------------------------------
Notes: CTDR - Calorimeter TDc Raw data bank
The CTDR bank stores the TDC values for the calorimeter, it has the following YBOS header characteristics:
Bank Name:        "CTDR"
Bank Number:      1
Bank Data Length: HDSIZE+NTDC*NVAL   (in 4 bytes words)
Bank Type:        BNKTI4        (integer*4)
The Bank is then structured in a header block followed by a data block. Each word in the bank can be located through the displacement pointers shown below.
------------------------------------------------------------------
 Offset   Word type  Description      
------------------------------------------------------------------
 CTDHDS    I*4   Header size HDSIZE
 CTDVRN    I*4   Bank version number
 CTDNRO    I*4   Number of TDC values (NTDC)     \ might be
 CTDNCO    I*4   Number of values per TDC (NVAL) / packed
------------------------------------------------------------------
 CTDADR    I*4   First Packed word of electronic 
            address and TDC value  
------------------------------------------------------------------
Notes: CELE - Calorimeter ELEment bank
The CELE bank stores calibrated energy and time information for each element of the calorimeter. It has the following YBOS header characteristics:
Bank Name:        "CELE"
Bank Number:      1
Bank Data Length: HDSIZE+NELE*NVAL   (in 4 bytes words)
Bank Type:        MIXED        (integer*4 + real4)
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset parameters shown below.
-------------------------------------------------------------------
 Offset      Word type    Description      
-------------------------------------------------------------------
 CELHDS      I*4   Header size HDSIZE
 CELVRN      I*4   Bank version number
 CELCAL      I*4   Calibration information 
 CELNRO      I*4   Number of elements (NELE) \ might be
 CELNCO      I*4   Values per element (NVAL) / packed
-------------------------------------------------------------------
 HDSIZE+CELADR+(I-1)*NVAL I*4   Packed address \ 
 HDSIZE+CELEA +(I-1)*NVAL R*4   Energy side A   \
 HDSIZE+CELEB +(I-1)*NVAL R*4   Energy side B    - NELE Blocks
 HDSIZE+CELTA +(I-1)*NVAL R*4   Time  side A    /
 HDSIZE+CELTB +(I-1)*NVAL R*4   Time  side B   /
-------------------------------------------------------------------
Notes:
Bits range information
00-07  Pedestal version 
08-15  Energy Threshold in multiples of 0.1 MeV 
16-19  Flag for dead channel correction 
20-23  Flag for energy calibration 
24-31  Flag for time calibration 
Bits range information
00-03  Column number 
04-06  Plane number 
07-12  Wedge number 
13-14  Calorimeter number 
15  Spare 

CEKA - Calorimeter Element into MC-KINE bank
The CEKA bank links the element bank CELE to the KINE Monte Carlo banks by storing the addresses of the KINE tracks contributing to each element. The address for the track is the KINE bank number.

It has the following YBOS header characteristics:

Bank Name:        "CEKA"
Bank Number:      1
Bank Data Length: HDSIZE+NELE*NVAL   (in 4 bytes words)
Bank Type:        BNKTI4        (integer*4 )
-------------------------------------------------------------------
 Offset      Word type    Description      
-------------------------------------------------------------------
 CEKHDS       I*4  Header size HDSIZE
 CEKVRN       I*4  Bank version number
 CEKNRO       I*4  Number of elements (NELE)    
-------------------------------------------------------------------
 CEKNTR       I*4  Number of KINE tracks per element (NVAL) 
 HDSIZE+CEKADR 
 +(I-1)*NVAL     I*4  Monte Carlo Kine Bank Number
ITDR - Inner Chamber TDC raw bank
The ITDR bank contains the TDC values of the Inner Chamber
------------------------------------------------------------------
 Offset   Word type  Description
------------------------------------------------------------------
 ITDHDS     I*2   Header size ICTRHS
 ITDVRN     I*2   Bank version number
 ITDNRW     I*2   Number of TDC values (NTDCIC)     \ might be
 ITDNCL     I*2   Number of values per TDC (ICTREL) / packed
--------------------------------------------------------------------  
  Bank header: 
  ------------
Bank Name:        ITDR
Bank Number:      ? 
Next Bank:        ?
Bank Data Length: NTDCIC*ICTREL+ICTRHS
Bank Type:        BNKTI2     ! I*2
 
  Bank structure:
  ---------------
(the parameters that describe the bank are in the file ICTDCR.CIN)
----------------------------------------------------------------
     displacement     word type     description     
----------------------------------------------------------------
                                   
                                   
     _ ICTRPO+                       
    | ICTREL*(iblock-1)+1   I*2    TDC address
    |                               
NTDCIC -|                               
blocks | ICTRVA+                       
     - ICTREL*(iblock-1)+1   I*2    TDC count

where NTDCIC is the number of fired TDCs and ICTREL is the size of a block of information.

IADR - Inner Chamber ADC raw bank
The IADR bank contains the ADC values of the Inner Chamber

-----------------------------------------------------------------
 Offset   Word type  Description
-----------------------------------------------------------------
 IADHDS    I*2   Header size ICARHS
 IADVRN    I*2   Bank version number
 IADZSF    I*2   Zero suppression information
 IADNRW    I*2   Number of ADC values (NADCIC)     \ might be
 IADNCL    I*2   Number of values per ADC (ICAREL) / packed
------------------------------------------------------------------  

Bank header: ------------ Bank Name: IADR Bank Number: ? Next Bank: ? Bank Data Length: NADCIC*ICAREL+ICARHS Bank Type: BNKTI2 ! I*2 Bank structure: --------------- (the parameters that describe the bank are in the file ICADCR.CIN) ---------------------------------------------------------------- displacement word type description ---------------------------------------------------------------- _ ICARPO+ | ICAREL*(iblock-1)+1 I*2 ADC address | NADCIC -| blocks | ICARVA+ - ICAREL*(iblock-1)+1 I*2 ADC count where NADCIC is the number of fired ADCs and ICAREL is the size of a block of information. The address of a TDC or of an ADC is packed as follows:
Bit range Information
00-00  Part number 
01-05  Layer number 
06-10  Tube number 
11-11  Side number 

ITAE - Inner Chamber TDC and ADC Element bank
The ITAE bank contains the TDC and ADC values for each side of a wire of the Inner Chamber.

---------------------------------------------------------------
 Offset     Word type  Description
---------------------------------------------------------------
 IELHDS      I*2   Header size ICELHS
 IELVRN      I*2   Bank version number
 IELCAL      I*2   Calibration information
 IELNRW      I*2   Number of elements (NTAEIC) \ might be
 IELNCL      I*2   Number of values (ICTAEL)   / packed
--------------------------------------------------------------  

  Bank header: 
  ------------
Bank Name:        ITAE
Bank Number:      ? 
Next Bank:        ?
Bank Data Length: NTAEIC*ICTAEL+ICELHS 
Bank Type:        BNKTI2     ! I*2
 
  Bank structure:
  ---------------
(the parameters that describe the bank are in the file ICTAEL.CIN)
----------------------------------------------------------------
     displacement     word type     description     
----------------------------------------------------------------
                                   
                                   
     _ ICTAPO+                       
    | ICTAEL*(iblock-1)+1   I*2    wire address
    |                               
    |                               
    | ICTAVA+              propagation time 
    | ICTAEL*(iblock-1)+1   I*2    side A
    |
    |                               
NTAEIC -| ICTAVB+              propagation time 
blocks | ICTAEL*(iblock-1)+1   I*2    side B(if we will use 
    |                   TDCs on both sides)
    |
    | ICQAVA+              charge
    | ICTAEL*(iblock-1)+1   I*2    side A
    |
    |
    | ICQAVB+              charge
     - ICTAEL*(iblock-1)+1   I*2    side B 

ICEL - Inner Chamber Element bank
The ICEL bank contains some quantities related to the Inner Chamber wires.
  Bank header: 
  ------------
Bank Name:        ICEL
Bank Number:      1 
Next Bank:        0
Bank Data Length: NELBIC*ICEBEL+1 ! NELBIC from the detector map
Bank Type:        Mixed Type   
 
  Bank structure:
  ---------------
(the pointers to move inside the bank will be described in ICEL.CIN)
----------------------------------------------------------------
      displacement    word type     description      
----------------------------------------------------------------
                                      
      ICEBVN         I*4     Bank Version Number  
      -                                
     | ICEBPO+                         
     | ICEBEL*(iblock-1)+1  I*4     Wire address   
     |                                
NELBIC ---| ICEBDT+                         
     | ICEBEL*(iblock-1)+1  R*4     Drift time   
     |
     | ICEBDD+                         
     | ICEBEL*(iblock-1)+1  R*4     Drift Distance
     |
     | ICEBZC+                         
     | ICEBEL*(iblock-1)+1  R*4     z coordinate
      -

DTDR - Drift Chamber TDC raw bank
The DTDR bank contains the TDC values of the Drift Chamber as they are coming from data acquisition.

For debugging purposes, in a subset of all events, TDC values coming from DAQ will not be zero suppressed, and the zero suppression flag will indicate this case. We do not think it is necessary to add informations on the set of zero suppression constants, because it must be possible to retrieve them from the database via the run number. The same arguments apply also for ADC pedestal subtraction. The word containing the address for each sense wire and the TDC value is one 32 bit word packed as follows:
Bit range Information
00-19  Crate/slot/channel 
20-31  TDC value 

  YBOS Bank header: 
  -----------------
Bank Name:        DTDR
Bank Number:      1
Bank Data Length:
Bank Type:       BNKTI4 ! I*4
Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
---------------------------------------------------------------
 offset     word type   description     
---------------------------------------------------------------
                                   
 DTDHDS      I*4  header size (HDSIZE)
 DTDVRN      I*4  bank Version Number 
 DTDNRO      I*4  number of rows=number of fired TDC 
             (NROW)
 DTDNCO      I*4  number of data word/row (NCOL)
 DTDZES      I*4  zero suppression flag
---------------------------------------------------------------
 DTDADR      I*4  first packed word containing
             sense wire electronic address and 
             TDC value
 ....          ....

The subsequent packed word values can be obtained using the offsets
 OFFADR = HDSIZE+DTDADR+(I-1)*NCOL
(where I runs from 1 to NROW)

DADR - Drift Chamber ADC raw bank
The DADR bank contains the ADC values of the Drift Chamber The word containing the address for each sense wire and the ADC value is one 32 bit word packed as follows:
Bit range Information
00-19  Crate/slot/channel 
20-31  ADC value 

  YBOS Bank header: 
  -----------------
Bank Name:        DADR
Bank Number:      1
Bank Data Length:
Bank Type:        BNKTI2 ! I*4
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
---------------------------------------------------------------
 offset   word type     description     
---------------------------------------------------------------
                                   
 DADHDS     I*4  header size (HDSIZE)
 DADVRN     I*4  bank Version Number 
 DADNRO     I*4  number of rows=number of ADC fired (NROW)
 DADNCO     I*4  number of data word/rows (NCOL)
 DADPES     I*4  pedestal subtraction flag
---------------------------------------------------------------
 DADADR     I*4  first packed word containing
            sense wire electronic address and 
            ADC value
 ....         ....

The subsequent packed words values can be obtained using the offsets
OFFADR = HDSIZE+DADADR+(I-1)*NCOL
(where I runs from 1 to NROW)

DTCE - Drift Chamber Time and Charge element bank
The DTCE bank contains the time and the charge values of the Drift Chamber obtained with calibration from the raw ADC and TDC banks.

For now, bank DTCE number 1 is directly output from GEANFI but in a future version (to insure homogeinity between treatment of real and MC data) will be made inside the reconstruction program from the banks DADR and DTDR, obtained in turn from online or MC.

The sign of the drift time pointed to by DTCTIM is (conventionally) connected to the way in which a track crosses a wire (see ARGUS NIM paper). Time smearing of 4-5 ns in GEANFI somewhat smears this connection close to the wire. Before using this time in inversion of the st relations, an absolute value must be taken.

The drift times contained in DTCE will have to be modified later, to take into account additional delays due to signal propagation along the wires: since this can only be done when the Z coordinate of a hit is known, it is expected to have 2 banks DTCE: the original one and a "running" one, which will be updated during tracking.

The data calibration algorithm (see Fig.1 ) could take care of the following:

  1. TDC's zero suppression or ADC's pedestal subtraction for the special debugging events.
  2. Suppression of noisy channels.
  3. Unpacking of the raw data word containing the address and the TDC,ADC values.
  4. Address pairing of TDC and ADC values.
  5. Application of (RUN dependent) calibration constants from raw counts to ns and pC.
  6. Decoding of electronic address into geometric address, and possible correction for miscabling.
During any given run the conversions outlined above will be performed only once. For instance, even if it is conceivable to obtain corrections to the conversion constants from a given analysis, it is not possible to iteratively apply said corrections in the same run, because this would require either "dirty tricks" or on-the-fly modification to the KLOE database, in which the constants are kept. Both approaches seem distasteful.

The address for each sense wire is packed as follows:
Bit range Information
00-08  Sense wire numberl 
20-31  Layer number 

  YBOS Bank header: 
  -----------------
Bank Name:        DTCE
Bank Number:      1, 2 (see text)
Bank Data Length:
Bank Type:        (I4,2R4)
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
---------------------------------------------------------------
 offset     word type     description     
---------------------------------------------------------------
                                   
 DTCHDS      I*4  header size
 DTCVRN      I*4  bank Version Number 
 DTCNRO      I*4  number of rows (NROW) (DC hits - no hit duplicates)
 DTCNCO      I*4  number of data words/row (NCOL)
---------------------------------------------------------------
 DTCADR      I*4  first sense wire address  
 DTCTIM      R*4  first time value
 DTCCHA      R*4  first charge value
 ....          ....

The subsequent values can be obtained using the offsets
 OFFADR = DTCHDS+DTCADR+(I-1)*NCOL
 OFFTIM = DTCHDS+DTCTIM+(I-1)*NCOL 
 OFFCHA = DTCHDS+DTCCHA+(I-1)*NCOL
where I runs from 1 to NROW.

PLEASE NOTE: The "plane" part of the sense wire address word (at offset DTCADR) is produced in the GEANFI convention in which sense layer n.1 is the innermost. But in the reconstruction program for charged tracks this number is changed to the ARGUS convention in which layer n.1 is the outermost.

The order in which sense wire number and layer number appear is not defined, it will probably be closely related to the order in which the electronics is read-out.

DHRE - Drift Chamber Hit Radius and associate error element bank
The DHRE bank contains the values of the hit radius and relative error obtained applying an average time to space relation. This bank is an input to the pattern recognition module.

Exactly like the bank DTCE, DHRE can change during the pattern + track fit iteration, to correct the hit radius measurement once the track impact parameter and azimuth around the wire are known.

The argument made for DTCE concerning the database does not apply here: the whole set of constants (parameters of the time-space relations) will still be the same in the iteration; only, a different set of parameters will be chosen the second time around.

The track candidate number (t.c.n.) is assigned to the hit by the pattern recognition module. Its main purpose is to declare to possible iterations of the pattern recognition whether this hit is available (t.c.n.<=0) or not (t.c.n.>0). A negative t.c.n. means that the linked DPRS bank contains only hits in one view. Banks of this kind are altogether ignored by the track fit and their points are considered available to anybody.

The absolute values of drift distances in DHRRAD come either from inversion of s-t relations (starting from absolute values of times in the bank DTCE) or from gaussian smearing of the true drift distance, according to the value (resp. TRUE or FALSE:the default) of the flag RAW_ST in ATFTLK.

The sign of the drift distances instead has no connection with RAW_ST: At bank creation, if inversion of the s-t relation has been requested, it is positive. If not, it comes from some smearing of the true (signed) drift distance in DHIT.

Later on, it is reassigned either by the Pattern Recognition, if this is run, or recovered from the MC bank DHIT in the pattern bypass procedure.

  YBOS Bank header: 
  -----------------
Bank Name:        DHRE
Bank Number:     1 and 2 (see text)
Bank Data Length:
Bank Type:       mixed: (I4,XXX(2I4,2R4,I4))
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
--------------------------------------------------------------
 offset     word type     description     
--------------------------------------------------------------
                                   
 DHRHDS      I*4  header size 
 DHRVRN      I*4  bank Version Number 
 DHRNRO      I*4  number of rows (DC hits - no hit duplicates)
 DHRNCO      I*4  number of data words/row (NCOL)
--------------------------------------------------------------
 DHRSLR      I*4  first hit sense layer, ARGUS convention
 DHRWNR      I*4  first hit wire number in its layer
 DHRRAD      R*4  first hit radius
 DHRERR      R*4  first radius error
 DHRTRN      I*4  track candidate number (link)
 ....          ....

PLEASE NOTE: This bank is produced in the drift chamber reconstruction module, and the "plane" part of the sense wire address word (at offset DHRSLR) follows the ARGUS convention in which layer n.1 is the outermost.

DHPT - Drift Chamber Pointers (internal use)
This bank is not written out and is internally used to tell DFNEWW how to look for additional points. It is described here for documentation purposes.

The bank starts with a 2-word header containing the header size (2) and the bank version (1).

  YBOS Bank header: 
  -----------------
Bank Name:         DHPT
Bank Number:      1
Bank Data Length: 2+2*NLAYERS+2*NHITS
Bank Type:        BNKTI4
--------------------------------------------------------------
 offset     word type     description     
--------------------------------------------------------------
                                   
 DHPHDS       I*4  header size 
 DHPVRN       I*4  bank Version Number 
--------------------------------------------------------------
 DHPPT1       I*4  58 pointers to first hit of every layer
 DHPPTL       I*4  58 pointers to last hit of every layer
 DHPAPT       I*4  NHITS A-pointers in DHRE
 DHPATP+NHITS I*4  NHITS B-pointers in DHRE

After a section, described later, of 116 pointers (2 for every layer of the KLOE drift chamber), comes a section of NHITS A-pointers into DHRE: these tell the order in which the DHRE bank has to be scanned if one wants to pick up points according to the rule: increasing $\phi$, then increasing layer number (in the ARGUS convention, not in the GEANFI one.)

Then comes a section of B-pointers, telling where a certain hit in the DHRE ordering would be in the ARGUS one. This section, together with the previous one, allows to quickly find in DHRE the hit immediately after or before another one (in the ARGUS sense). In other words, like this:

Position in DHRE   phi-angle    A-pointers     B-pointers
        1              50            2             6
        2               0            4             1
        3              60            5             7
        4              10            7             2
        5              20            6             3
        6              40            1             5
        7              30            3             4
Here, point n.5 in DHRE (at 20 degrees), is n.3 in the ARGUS convention (4th column). The points around it are n.2 and n.4. The addresses in DHRE will then be 4 and 7 (2nd and 4th address in the 3rd column). In positions 4 and 7 of DHRE we find 10 and 30 degrees.

The 116 pointers in between are 58 pairs (first,last) telling where is the beginning and the end of every layer in the ARGUS ordering, starting from DHPAPT. This bank is made in MAKEDHPT (module DCONVR) and used in DFNEWW (module ATFMOD).

DHCL - Drift Chamber Clusters
This bank contains infomation obtained by a process of clustering adjacent hits in a same layer of the DC. This may be useful for several kinds of algorythms.

The bank starts with a 4-word header containing the header size (4), the bank version (1), the number of clusters in the DC and the number of informations stored for each cluster(3). The bank is created with room for a number of clusters equal to the number of DC hits. The number of clusters will generally be much less. I have not been able to find a way of contracting YBOS banks, so DHCL will be filled only up to the total number of clusters, stored at offset DHCNRO.

  YBOS Bank header: 
  -----------------
Bank Name:        DHCL
Bank Number:      1
Bank Data Length: 4+2*NLAYERS+2*NHITS
Bank Type:        120I4,XXXXX(R4,2I4)
--------------------------------------------------------------
 offset     word type     description     
--------------------------------------------------------------
                                   
 DHCHDS      I*4  header size 
 DHCVRN      I*4  bank Version Number 
 DHCNRO      I*4  number of rows (clusters in the DC)
 DHCNCO      I*4  number of columns (=3)             
--------------------------------------------------------------
 DHCPT1      I*4  58 pointers to first cluster of every layer
 DHCPTL      I*4  58 pointers to last  cluster of every layer
 DHCDTA      I*4  pointer to start of cluster data
--------------------------------------------------------------
 ...
 DHCAVF      R*4  Average phi for this cluster
 DHCNCL      I*4  Number of wires hit in this cluster
 DHCLNK      I*4  Link in DTCE/DHRE of the first wire in the cluster
 ...

Cluster average angles are normalized between [0,2PI). Note that the first wire in the cluster is usually also the one with the smallest phi. For the clusters spanning the x-axis that is not true: however, the first wire is always the first encountered when scanning the cluster in counterclockwise direction.

The 116 pointers in between are 58 pairs (first,last) telling where is the beginning and the end of every layer in the second part of the bank, after DHCDTA. This bank is made in MAKEDHCL (module DCONVR).

DTKA - Drift Chamber hit pointers to the KINE bank
The DTKA bank (see Fig.2 ) only exists for Monte Carlo data. After the header, for each hit in DTCE/DHRE one (variable-length) list of the indices of all KINE tracks connected to that hit is stored: the first word of a N+1-long list (N.GE.1) is the number of linked tracks, the following N words are the indices themselves.

  YBOS Bank header: 
  -----------------
Bank Name:        DTKA
Bank Number:      1 
Bank Data Length:
Bank Type:        BNKTI4
The Bank is structured in a header block followed by a data block.
--------------------------------------------------------------
 offset       word type     description     
--------------------------------------------------------------
                                   
 DTKHDS         I*4  header size
 DTKVRN         I*4  bank Version Number 
 DTKNRO         I*4  number of rows
--------------------------------------------------------------
 DTKNTR         I*4  Number of KINE tracks linked to hit n.1   
 DTKADR         I*4  First track index
  ...           I*4  Second  =  =
  ...           I*4    ....
DTHA bank - Drift Chamber hit pointers to the DHIT bank
The DTHA bank (see Fig.2 ) only exists for Monte Carlo data. It contains, for each hit in DTCE/DHRE, the index of the original DHIT hit. There may be several DHIT hits in a same DC cell, but the TDC is triggered only once, by the cluster which arrives first on the wire: only this hit is stored in DTCE/DHRE, which have less rows than DHIT. So this pointer is needed if one wants, for a given "physical" hit, to retrieve all of its MC-true information. Should one want to analyse the "obscured" hits (for obscure reasons!) one can always look for DHIT rows which are NOT represented in DTHA.
  YBOS Bank header: 
  -----------------
Bank Name:        DTHA
Bank Number:      1 
Bank Data Length:
Bank Type:        BNKTI4
The Bank is structured in a header block followed by a data block.
--------------------------------------------------------------
 offset       word type     description     
--------------------------------------------------------------
                                   
 DTHHDS         I*4  header size
 DTHVRN         I*4  bank Version Number 
 DTHNRO         I*4  number of rows (DC hits - no hit duplicates)
--------------------------------------------------------------
 DTHADR         I*4  Index (1-->n.of DC hits) into DHIT     
 ....             ....

QCAE - QCAL ELEment bank
The QCAE bank stores calibrated energy and time information for each element of the calorimeters around the quadrupoles. It has the following YBOS header characteristics:
Bank Name:        "QCAE"
Bank Number:      1
Bank Data Length: HDSIZE+NELE*NVAL   (in 4 bytes words)
Bank Type:        MIXED        (integer*4 + real*4)
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset parameters shown below.
-------------------------------------------------------------------
 Offset      Word type    Description      
-------------------------------------------------------------------
 QCAHDS      I*4   Header size HDSIZE
 QCAVRN      I*4   Bank version number
 QCANRO      I*4   Number of elements (NELE) \ might be
 QCANCO      I*4   Values per element (NVAL) / packed
-------------------------------------------------------------------
 HDSIZE+QCAADR+(I-1)*NVAL I*4   Packed address \ 
 HDSIZE+QCAADC +(I-1)*NVAL R*4   Energy         \ - NELE Blocks
 HDSIZE+QCATDC +(I-1)*NVAL R*4   Time           /
-------------------------------------------------------------------
Bits range information
00-07  Wedge number 
08-11  Calorimeter number 
12-15  Spare 

QCKA - QCAL Element into MC-KINE bank
The QCKA bank links the element bank QCAE to the KINE Monte Carlo banks by storing the addresses of the KINE tracks contributing to each element. The address for the track is the KINE bank number.

It has the following YBOS header characteristics:

Bank Name:        "QCKA"
Bank Number:      1
Bank Data Length: HDSIZE+NELE*NVAL   (in 4 bytes words)
Bank Type:        BNKTI4        (integer*4 )
-------------------------------------------------------------------
 Offset        Word type    Description      
-------------------------------------------------------------------
 QCKHDS          I*4      Header size HDSIZE
 QCKVRN          I*4      Bank version number
 QCKNRO          I*4      Number of elements (NELE)    
-------------------------------------------------------------------
 QCKNTR          I*4      Number of KINE tracks per element (NVAL) 
 HDSIZE+QCKADR 
 +(I-1)*NVAL     I*4      Monte Carlo Kine Bank Number

Segment banks


Above the element banks are the segment. Segments are the combination of the information from one or more detector. The following is a description of the banks defined for the E.M. Calorimeter and for the Drift Chamber.

Segment banks - processed data from the Calorimeters
In this section we describe the "segment" level of the data structure for the e.m. calorimeter. All the information obtained by grouping together more calorimeter elements to form the energy clusters belongs to this structure. No attempt is done in using information coming from other detectors or in assigning a particle identification.

A cluster is thought as the collection of energy deposition in the calorimeter cells which are related by spatial contiguity and time coincidence. Such a correspondence can be found with different criteria and we think that a simple pattern of adjacency of the fired cells in the r-phi plane can be used as a starting point in the clustering procedure. The result of such a pre-clustering stage will be stored separately from the final cluster especially if more than one attempt will be done in the merging of the energy clumps and in the determination of the final energy, position and direction of each particle.

From a technical point of view, various solutions for the banks' structure have been discussed and the final choice has been taken together with the other detector experts to construct a similar and integrated data structure for the whole KLOE apparatus. Essentially, we have decided to store the cluster number into the bank number and to have two different banks for each cluster (or pre-cluster). One contains the physical information of the cluster while the other one links backward the cluster to the element bank CELE.

In the following we present the details of such banks both for the pre-clustering and the merging stage.

CPPS-CPLS bank - Calorimeter pre-clustering data banks
As already mentioned, two different banks can be envisaged for each cluster, the CPPS (Pre-clustering parameter segment) and the CPLS (Pre-clustering list segment) bank.

The CPPS bank contains a fixed number of real words that are the cluster parameters. The CPLS bank consists in the list of cells belonging to the cluster. This is achieved technically by storing the IBLOCK pointer in the CELE bank.

CPPS Bank

The Bank has the following YBOS Header Characteristics:

Bank Name:        "CPPS"
Bank Number:      pre-cluster number
Bank Data Length: CPPHS+1+CPPBS    ! in 4 bytes words
Bank Type:        BNKT..       ! Real*4
The Bank is then structured in a Version Block followed by a Data Block. Each Word in the bank can be located through the displacement pointers shown below.
    Displacement     Word Type  Word Description
------------------------------------------------------------------
    Version Header Block (size = CPPHS)
------------------------------------------------------------------
 ?CPPHL        I*4     Header Block Length (=CPPHS)
  CPPVN        I*4     Version Number 
  CPPFL        I*4     Adjacency Flag
 ?CPPDL        I*4     Data Block Length (=CPPBS)
-------------------------------------------------------------------------
    Data Block
-------------------------------------------------------------------------

 CPPHS+CPPENE     R*4    EPCL = Pre-cluster Energy 

 CPPHS+CPPPOS+       
 (0:2)         R*4    XPCL,YPCL,ZPCL = Pre-cluster
                          centroid 

 CPPHS+CPPTIM     R*4    TPCL = time of the Pre-cluster
                     centroid 
 CPPHS+CPPTSI+ 
 (0:3 )        R*4    T1PCL,ST1PCL,
                 T2PCL,ST2PCL = one-side
                 time and RMS of the Pre-cluster
                 centroid
 CPPHS+CPPTFL     I*4    TFLPCL = topological flag 

CPLS Bank

The Bank has the following YBOS Header Characteristics:

Bank Name:        "CPLS"
Bank Number:      Pre-cluster number
Bank Data Length: CPLHS+1+NELEPC   ! in 2 bytes words
Bank Type:        BNKTI2       ! I*2

 Displacement     Word Type  Word Description
--------------------------------------------------------------------
    Version Header Block (size = CPLHS)
--------------------------------------------------------------------
 ?CPLHL        I*2     Header Block Size (=CPLHS)
  CPLVN        I*2     Version Number 
  CPLDL        I*2     Data Block size (=NELEPC) 
--------------------------------------------------------------------
    Data Block
--------------------------------------------------------------------
NELEPC                       
blocks: 
 CPLHS+CPLPO+
 CPLBS*(Iblock-1)   I*2     CPLPOI = pointer (iblock) 
                       to CELE bank

CLPS-CLLS - Clustering data Banks
These data sets, apart from some different parameters appearing in the CLPS bank, closely reproduce the previous structures.

CLPS Bank

The Bank has the following YBOS Header Characteristics:

Bank Name:        "CLPS"
Bank Number:      cluster number
Bank Data Length: CLPHS+1+CLPBS    ! in 4 bytes words
Bank Type:        BNKT..       ! Real*4
The Bank is then structured in a Version Block followed by a Data Block. Each Word in the bank can be located through the displacement pointers shown below.
  Displacement     Word Type  Word Description
-----------------------------------------------------------------
    Version Header Block (size = CLPHS)
-----------------------------------------------------------------
  ?CLPHL        I*4     Header Block Size (=CLPHS)
  CLPVN        I*4     Version Number 
  ?CLPDL        I*4     Data Block Size (=CLPBS)
-----------------------------------------------------------------
    Data Block
-----------------------------------------------------------------
  CLPHS+CLPENE   R*4     ECL = cluster Energy 

  CLPHS+CLPPOS+
  (0:5)      R*4     XCL,SXCL,YCL,SYCL,ZCL,SZCL = 
                 cluster centroid and RMS
  CLPHS+CLPTIM+
  (0:1)      R*4     TCL,STCL = time of the 
                 cluster and RMS 

  CLPHS+CLPTAP+ 
  (0:5)      R*4     XACL,SXACL,YACL,
                 SYACL,ZACL,SZACL = 
                 cluster apex and RMS
  CLPHS+CLPCOS+
  (0:5)      R*4     CX,SCX,CY,
                 SCY,CZ,SCZ = direction cosines 
                 of the particle and RMS
  CLPHS+CLPEFL   I*4     INEXF = Flag for fully/partially 
                     contained events.
CLLS Bank

The bank fully reproduces the structure of the CPLS bank.

The Bank has the following YBOS Header Characteristics:

Bank Name:        "CLLS"
Bank Number:      cluster number
Bank Data Length: CLLHS+1+ NELECL   ! in 2 bytes words
Bank Type:        BNKTI2       ! I*2
The Bank is then structured in a Version Block followed by a Data Block. Each Word in the bank can be located through the displacement pointers shown below.
    Displacement     Word Type  Word Description
---------------------------------------------------------------
    Version Header Block (size = CLLHS)
---------------------------------------------------------------
 ?CLLHL        I*2     Header Block Size (=CLLHS)
  CLLVN        I*2     Version Number 
  CLLDL        I*2     Data Block Size (=NELECL)
---------------------------------------------------------------
    Data Block
---------------------------------------------------------------
NELECL blocks:
 CLLHS+CLLPO+   
 CLLBS*(iblock-1)  I*2    CLPPOI = Pointer (iblock) 
                     to CELE bank 

The locations beginning with a question mark are those filled by non-variable numbers: the presence of these words, as it has been discussed, can be convenient but it is not mandatory.

DPRS - Drift Chamber track candidate banks from Pattern Recognition
The DPRS bank is an output of the pattern recognition module and an input to the track fit module. It contains:

  1. the values of the helix parameters from the raw fit
  2. the number of hits assigned to this track candidate
  3. the list of hit addresses inside the DHRE bank. Note that the banks DPRS are never "compacted", should the track fit reject some hits: rather, the rejected hit is conventionally marked, by reversing the sign of its address: this means that scans made after the track fit on the banks DPRS, concerned more with Pattern Recognition results than Track Fit results, should use the absolute value of the address.
  YBOS Bank header: 
  -----------------
Bank Name:        DPRS
Bank Number:      Track candidate number
Bank Data Length:
Bank Type:        Mixed (6R4,2I4,R4,2I4,XXX(I4,R4))
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
--------------------------------------------------------------
   offset       word type     description     
--------------------------------------------------------------
   DPRHDS         I*4  header size
   DPRVRN         I*4  bank Version Number 
--------------------------------------------------------------
  DPRXCO         R*4  X coordinate of point of closest
                 approach to the first hit (PCA).
  DPRYCO         R*4  Y coordinate of PCA 
  DPRZCO         R*4  Z coordinate of PCA              
  DPRXLS         R*4  X coordinate of the last track candidate (t.c.) point
  DPRYLS         R*4  Y coordinate of the last t.c. point
  DPRZLS         R*4  Z coordinate of the last t.c. point
  DPRCUR         R*4  track charge Q/Pt (GeV**-1)
  DPRPHI         R*4  azimuth angle at PCA
  DPRCTT         R*4  cot(theta) 
  DPRPOS         I*4  number of positive hits assigned to this 
                 track candidate
  DPRNEG         I*4  number of negative hits assigned to this 
                 track candidate
  DPRQUA         R*4  Quality flag
  DPRPOK         I*4  pattern flag : = 1,2 (only +,- view), 
                          3 (both views)
  DPRLRG         I*4  innermost and outermost layers of t.c., 
                      packed in one word and signed negatively 
                      if layer direction of movement changes
  DPRPHF         R*4  wire azimuth of the first t.c. hit 
  DPRPHL         R*4  wire azimuth of the last t.c. hit 
  DPRCEN         I*4  if =1 this candidate comes from the I.P.
 |DPRIWI         I*4  wire number (+ or -)  \ repeated 
 |DPRWTR         R*4  track length between  | DPRPOS+DPRNEG times
                  this wire and next one     /
DTFS - Drift Chamber track fit results bank
The DTFS bank contains track fit results. This bank is an output of the track fit module and an input to the vertex fit module. After a successful vertex fit, track parameters at a new space point (the vertex point) are added in the DVFS banks, see below. The DTFS bank also contains the list of hit addresses inside the DHRE bank for all the hits actually accepted by the fit (it could be shorter than the list of hits received from pattern recognition).
  YBOS Bank header: 
  -----------------
Bank Name:        DTFS
Bank Number:      Track number
Bank Data Length:
Bank Type:        Mixed
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
---------------------------------------------------------------
 offset      word type     description     
---------------------------------------------------------------
 DTFHDS       I*4     header size
 DTFVRN       I*4     bank Version Number 
---------------------------------------------------------------
 DTFCEN       I*4     if =1 this fitted track comes from the I.P.
 DTFVMT       I*4     index (not YB) of the vertex origin of this track
 DTFVDT       I*4     index (not YB) of the vertex target of this track
 DTFJMT       I*4     YB-index of the previous track in this chain   
 DTFJDT       I*4     YB-index of the next track in this chain          
 DTFDMT       I*4     YB-index of the track mother of this one    
 DTFDDT       I*4     YB-index of the track daughter to this one 
 DTFREV       I*4     if =1 this track has been probably fitted backwards
 DTFQFL       I*4     Track fit quality flag
 DTFINH       I*4     Initial number of hits from Pattern Rec.:
                  10000*pos.stereo hits + neg.stereo hits
 DTFNHF       I*4     Packed number of hits after convergence:
                  10000*pos.stereo hits + neg.stereo hits
 DTFLNG       R*4     track length
 DTFXCO       R*4     X coordinate of PCA, hit n.1
 DTFYCO       R*4     Y coordinate of PCA  =  =
 DTFZCO       R*4     Z coordinate of PCA  =  =
 DTFCUR       R*4     Track charge Q/pt (GeV**-1) 
 DTFCTT       R*4     cot(theta) | of PCA, hit n.1
 DTFPHI       R*4     azimuth  |   =   =
 DTFCVM**     R*4     covariance matrix (15 words)
 DTFCHI       R*4     chi**2 of the track fit
 DTFPCH       R*4     chi**2 probability of the fit
 DTFXLP       R*4     x- | coordinate of the PCA, last hit
 DTFYLP       R*4     y- |     =      =
 DTFZLP       R*4     z- |     =      =
 DTFCLP       R*4     curvature | at 
 DTFTLP       R*4     cot(theta) | the last
 DTFPLP       R*4     azimuth  | point
 DTFMSK       I*4     number of multiple scattering kinks
 DTFCHM       R*4     chi**2 of the multiple scattering
 DTFPVM       I*4     pointer to the primary vertex bank
 DTFPVS       I*4     pointer to the secondary vertexbank
 DTFXSW       R*4     X coordinate of PCA to beam line
 DTFYSW       R*4     Y coordinate of PCA  =  =
 DTFZSW       R*4     Z coordinate of PCA  =  =
 DTFCUS       R*4     Track charge Q/pt (GeV**-1) 
 DTFCTS       R*4     cot(theta) | of PCA to beam line
 DTFPHS       R*4     azimuth  |   =   =
 DTFFHA       I*4     first hit address
 ....               ....
At some point of the track fit iteration the parameters of the track movement can be considered to be defined with accuracy good enough to correct the T0 and to use finer time-space relations, depending on the space position of the point of closest approach to each wire. At that point new banks will be created: one is a DHRE bank with bank number 2 and new values of the hit radius and its error. This information will be updated each time a new time-space relation will be applied (in other words we propose to have only two DHRE banks: the initial one and a current one); then there are the DHSP banks.

DHSP - Drift Chamber hit space points bank
The DHSP banks, companion to DTFS, contain the space points of the hits defined during the fit procedure. They are created after a successful track fit, and contain information needed to compute a better approximation of hit radii (bank DHRE n.2).

  YBOS Bank header: 
  -----------------
Bank Name:        DHSP
Bank Number:      Track number 
Bank Data Length:
Bank Type:        Mixed (4I4,XXX(I4,6R4))
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
----------------------------------------------------------------
 offset       word type     description     
----------------------------------------------------------------
 DHSHDS         I*4  header size
 DHSVRN         I*4  bank Version Number 
 DHSNRO         I*4  number of rows (NROW)
 DHSNCO         I*4  number of data words/row (NCOL)
----------------------------------------------------------------
 DHSADR         I*4  sense wire address             \
 DHSXCO         R*4  x-coordinate                   |
 DHSYCO         R*4  y-coordinate                   |     
 DHSZCO         R*4  z-coordinate                   | for each 
 DHSCHN         R*4  fit residual                   | space hit 
 DHSBET         R*4  local beta angle of drift cell |
 DHSPHT         R*4  local phi-tilde of track/cell  |
 DHSDRD         R*4  geometric drift distance       /
 ....             ....

The subsequent values can be obtained using the offsets
 OFFADR = DHSADR+(I-1)*NCOL
 OFFXCO = DHSXCO+(I-1)*NCOL 
 OFFYCO = DHSYCO+(I-1)*NCOL 
 OFFZCO = DHSZCO+(I-1)*NCOL
 OFFCHN = DHSCHN+(I-1)*NCOL
 OFFBET = DHSBET+(I-1)*NCOL
where I runs from 1 to NROW

DVFS - Drift Chamber vertex fit result bank
The DVFS bank is an output of the vertex fit module. This bank contains vertex fit results on the space position of the vertex, the list of tracks (one incoming, possibly several originating from the vertex) and vertex ID flag from the fit.

  YBOS Bank header: 
  -----------------
Bank Name:        DVFS
Bank Number:      Vertex number
Bank Data Length:  
Bank Type:        3I4,10R4,3I4,XXX(I4,16R4,2I4)
The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
--------------------------------------------------------------------
 offset       word type     description     
--------------------------------------------------------------------
 DVFHDS         I*4     header size
 DVFVRN         I*4     bank Version Number 
--------------------------------------------------------------------
 DVFQFL         I*4     Vertex fit quality flag
 DVFXCO         R*4     X coordinate of the vertex fit
 DVFYCO         R*4     Y coordinate of the vertex fit
 DVFZCO         R*4     Z coordinate of the vertex fit
 DVFCHI         R*4     Chi**2 of the fit
 DVFCVV**       R*4     covariance matrix (6 words)
 DVFIDF         I*4     Vertex fit identification flag (for internal use)
 DVFMTR         I*4     Pointer onto the mother track bank (unused)
 DVFNTR         I*4     Number of secondary tracks connected to the vertex

The following block of 19 words is repeated as many times as in offset DVFNTR.

 DVFTRA         I*4     pointer to the 1st DTFS bank
 DVFCRV         R*4     Curvature (Q/Pt in GeV-1) at vertex
 DVFCTV         R*4     cot(theta) at vertex
 DVFPHV         R*4     azimuth at vertex 
 DVFCOV**       R*4     covariance matrix (6 words)
 DVFD0V         R*4     D0 after vertex fit
 DVFDZV         R*4     Z0 after vertex fit
 DVFC1V**       R*4     covariance matrix (3 words) of D0, DZ
 DVFCHV         R*4     Chi2 contribution of the track to the vertex fit
 DVFLNV         R*4     track length from track end (FH or LH) to vertex
 DVFPID         I*4     identifier of track end (FH vs LH) used for building the vertex
 DVFPVM         I*4     pointer to the mother vertex bank (unused)
 ....                 ....
This means: if you want to access the azimuth at the vertex for track "I", the correct coding is something like this:
   URP = RW(INDV + DVFNTR + (I-1)*19 + DVFPHV)
Notes:
  1. DVFQFL: the absolute value of the quality flag is 1 for GOLDEN vertex and 2 for SILVER vertex. The meaning of this is:
  2. The sign of the quality flag is positive for normal minimization and negative for constrained minimization.
  3. DVFPID : this flag is negative if the vertex is obtained by backward extrapolation from the track First Hit and positive in case of forward extrapolation from the track Last Hit.
  4. DVFLNF : this is the length of the extrapolation from the track First Hit or Last Hit (as specified in DVFPID) to the vertex
  5. the sign of the momentum vector, as well as the track charge, are defined by the ATFMOD fitting procedure. Therefore the momentum enters inside the vertex if the track is extrapolated from Last Hit moving outward and exits from the vertex if the track is extrapolated from the First Hit moving inward. This is, for example, the situation in a Decay In Flight. If one needs the two outgoing momenta than the one with DVFPID>0 must be inverted.

  6.  

     
     
     
     
     
     
     
     
     

    DCHD - Drift Chamber Header information

      YBOS Bank header: 
      -----------------
    Bank Name:        DCHD
    Bank Number:      1
    Bank Data Length: 7
    Bank Type:        BNKTY4
    The Bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
    --------------------------------------------------------------------
     offset       word type     description     
    --------------------------------------------------------------------
     DCHHDS         I*4     header size
     DCHVRN         I*4     bank Version Number 
    --------------------------------------------------------------------
     DCHCAN         I*4     Number of candidate tracks (P.R.)
     DCHCCN         I*4     Number of candidates from I.P.
     DCHTRK         I*4     Number of fitted tracks    
     DCHTCN         I*4     Number of fitted tracks from I.P.
     DCHVTX         I*4     Number of fitted vertices

    Object banks


    This section describes the Object banks.

    TCLO - Tracks-CLusters Object Association bank

        YBOS Bank header:
        -----------------
      Bank name:             "TCLO"
      Bank number:            1
      Bank data length:
      Bank type:             Variable 6I4,YYY(2I4,5R4)
                                          YYY=Numbers of Track
    The TCLO bank is an output of the module which associates fitted tracks (from DTFS Bank) and the reconstracted clusters in calorimeter (CLPS-CLLS bank). The TCLO bank is structured in a header block followed by a data block. Each word in the bank can be located through the offset shown below.
    ---------------------------------------------------- Header Pointers -
         offset       word type  description
    ----------------------------------------------------------------------
         TCLHDS           (I*4)  HeaDer block Size
         TCLVRN           (I*4)  bank VeRsion Number 1
         TCLNTR           (I*4)  Number of associations.
         TCLBLO           (I*4)  data BLOck size = 7
         TCLNWR           (I*4)  # of words for cluster list (=1)
         TCLNCL           (I*4)  Cluster List  (*) packed address
    ----------------------------------------------------- Data Pointers --
         TCLTRK           (I*4)  Track index #
         TCLFLH           (I*4)  Track End used for extrapolation (**)
         TCLASS           (I*4)  index # of associated Cluster
         TCLEX1           (R*4)  X | coord. of impact point on calorimeter
         TCLEX2           (R*4)  Y | internal surface (extrapolated)
         TCLEX3           (R*4)  Z |
         TCLLEN           (R*4)  extrapolation length (***)
         TCLCHI           (R*4)  Association CHI2
         TCLVXE           (R*4)  track director cosine at extrapolation X
         TCLVYE           (R*4)  track director cosine at extrapolation Y
         TCLVZE           (R*4)  track director cosine at extrapolation Z
    ----------------------------------------------------------------------
     (*) In this word bit n is set to 1 (/0) if cluster n is 
    (is not) associated
     (**) this flag is positive if the track First Hit has been extrapolated
    outward and negative if the First Hit has been extrapolated backward to
    meet the cluster. The reason is that the definition of First Hit and Last
    Hit is arbitrary and they can not to correspond to the track direction.
     (***) From the track end specified in TCLFLH to the Impact Point on calo.
    Neutral Vertex Object banks
    The neutral vertex reconstruction is performed in the analysis module NEVKLT (the previous NEVMOD interfaced with the K long tagging given by KLTAG), which also reconstruct the z-coordinate of the Phi decay point, the impact point of the photons on the calorimeter and identify the DVFS number for the candidate K long charged and/or mixed vertex.

    The result of such reconstruction is stored in the banks:

    KNVO Kinematic bank 
    VNVO Vertex bank 
    INVO Impact Point of the photons 

    The Bank Version is always 1 and corresponds to golden taggings (at the moment the silver tag is disabled as default of NEVKLT).

    It's possible to have more than one tagging but, for each tagging, only one best candidate K long vertex is given for each kind of vertices (neutral,mixed,charged).

    As new addition the neutral vertex of K long in 3 pi0 without K short informations (performed by the module KLNEUT in ECL library) is added as VNVO bank #6.

    KNVO - Kinematic bank from Neutral Vertex reconstruction
    The banks KNVO contain the momentum components of kaons, charged pions and photons. There is one KNVO bank for each particle identified. A particle could be identified by more than one algorithm, i.e. a K long decaying in charged pions near to the interaction point could be identified as tagging vertex but also as charged tagged vertex. The list of VNVO banks associated to the particle indicate the algorithms that have identified the particle. Differently from the previous versions of the bank, the bank number does not identify the particle. First you find all the kaons, then the pions and finally the photons.

        YBOS Bank header:
        -----------------
     
    Bank Name:          KNVO
    Bank Number:        Bank Number
    Bank Data Length:   
    Bank Type:          Mixed
       Displacement        Word Type Word Description
    ------------------------------------------------------------------
            Version Header Block 
    ------------------------------------------------------------------
       KNVHSZ                I*4      Header Size (HSZ)
       KNVVER                I*4      Version Number 
       KNVDSZ                I*4      Data Block Size
    -------------------------------------------------------------------------
           Data Block
    -------------------------------------------------------------------------
    
      KNVPCO+HSZ             R*4      momentum components (3 words)
      KNVERR+HSZ             R*4      covariance matrix (9 words)
      KVNTYP+HSZ             I*4      particle type (=20 if kaon)
      KNVBNK+HSZ             I*4      DVFS(kaon),DTFS(pion) or CLPS(gamma) #
      KNVLNK+HSZ             I*4      number of VNVO connected (Nvnvo)
      KNVLNK+HSZ+1,...,+Nvnvo I*4      list of VNVO connected
    The particle type for both K short and K long is set to 20 since is in general impossible to distinguish between the two.

    The list of VNVO connected contains the decay vertices (for kaons) or the production vertices (for pions).

    VNVO - Vertex bank from Neutral Vertex reconstruction
    The banks VNVO contain the vertex position for the following vertex types:

    BANK # Vertex Type 
    Phi decay vertex 
    tagging Kaon charged vertex 
    tagged Kaon neutral vertex 
    tagged Kaon mixed vertex 
    tagged Kaon charged vertex 
    KL->3pi0 without KS infos 
    ...  the same for the second tagging...

    In case of a second tagging the Phi decay vertex is in bank number 7 ... and so on.

    A "tagged charged vertex" is a charged vertex inside a cone around the K long flight direction given by the K short.

    A "mixed" vertex (KL->pi+ pi- pi0) is a "tagged charged vertex" with a missing mass close to the pi0 one and at least one photon in time.

    The neutral vertex, found using the Time Of Flight (TOF) algorithm, is written also when only one photon has been found.

        YBOS Bank header:
        -----------------
     
    Bank Name:          VNVO
    Bank Number:        Vertex Number
    Bank Data Length:   
    Bank Type:          Mixed
       Displacement         Word Type    Word Description
    ------------------------------------------------------------------
            Version Header Block 
    ------------------------------------------------------------------
       VNVHSZ               I*4          Header Size (HSZ)
       VNVVER               I*4          Version Number 
       VNVDSZ               I*4          Data Block Size
    -------------------------------------------------------------------------
           Data Block
    -------------------------------------------------------------------------
    
      VNVXYZ+HSZ            R*4       coordinates (3 words)
      VNVERR+HSZ            R*4       covariance matrix (9 words)
      VNVKOR+HSZ            I*4       KNVO bank from which the vertex 
                                      originates
      VNVDVF+HSZ            I*4       associated DVFS number when available
      VNVPGE+HSZ            I*4       number of particles generated 
                                      at that vertex (Npart)
      VNVPGE+HSZ+1,..,+Npart  I*4      list of generated particles banks(1...Npart)
    In case of neutral vertex the associated DVFS number is, if it exists, the charged vertex inside a sphere of radius 20 cm.

    In case of KL->3pi0 vertex without KS (VNVO#6) the VNVDVF word is used to store the global T0 in 100 ps as reconstructed by KLNEUT.

    The list of generated particles banks contains, in the order:

    BANK # Vertex Type Bank type
    Phi decay vertex  2 KNVO 
    tagging Kaon charged vertex  2 DTFS 
    tagged Kaon neutral vertex  Npart CLPS 
    tagged Kaon mixed vertex  2 DTFS ; Npart-2 CLPS 
    tagged Kaon charged vertex  2 DTFS 
    KL->3pi0 vertex without KS  4,5 or 6 CLPS 

    INVO - Impact Point of photons bank from Neutral Vertex reconstruction
    The banks INVO contain the x,y,z coordinates and the Time Of Flight of the photons at the impact point on the calorimeter. There is one INVO bank for each photon coming from the neutral vertex.

    For debug purposes also the clusters discarded by the 'K long photon selection' algorithm are stored as last and flagged with a negative CLPS number. They are not counted in the Npart variable in the VNVO banks.

    It's possible to have more taggings and then more groups of photons: to know the number of photons from each tagging you must look at the VNVO banks.

        YBOS Bank header:
        -----------------
     
    Bank Name:          INVO
    Bank Number:        Photon Number
    Bank Data Length:   
    Bank Type:          Mixed
    
       Displacement         Word Type    Word Description
    ------------------------------------------------------------------
       Version Header Block 
    ------------------------------------------------------------------
       INVHSZ               I*4          Header Size (HSZ)
       INVVER               I*4          Version Number 
       INVDSZ               I*4          Data Block Size
    -------------------------------------------------------------------------
           Data Block
    -------------------------------------------------------------------------
    
      INVGAM+HSZ            R*4       x,y,z,t coordinates at impact point(4 words)
      INVERR+HSZ            R*4       errors on coordinates (4 words)
      INVCLP+HSZ            I*4       CLPS cluster number
      INVLKI+HSZ            R*4       K long decay length for this photon
      INVSLK+HSZ            R*4       error on this K long decay length
    Event Classification Banks
    The Event Classification program writes 2 banks whose general structure is described in detail in Kloe Memo 175.

    ECLS - ECL Stream bank

        YBOS Bank header:
        -----------------
     
    Bank Name:          ECLS
    Bank Number:        1
    Bank Data Length:   Header + 1 word per identified stream
    Bank Type:          I*4
    
       Displacement         Word Type    Word Description
    ------------------------------------------------------------------
       Version Header Block 
    ------------------------------------------------------------------
       ECLSHSZ               I*4          Header Size   (HSZ)
       ECLSVER               I*4          Bank Version 
       ECLSDSZ               I*4          Number of fired streams (NFS)
       ECLSTRG               I*4          Trigger Word  
       ECLSFLT               I*4          Filfo Word (1)
       ECLSFLT + 1           I*4          Filfo Word (2)   starting from IW(INDDAT+ECLSVER)=2
    -------------------------------------------------------------------------
           Data Block
    -------------------------------------------------------------------------
       ECLSMSK+HSZ           I*4     Packed word for 1st fired stream
      ...
       ECLSMSK+HSZ+N-1       I*4     Packed word for N-th fired stream
    
    
    Notes:
    1. The TRIGGER word has the following bits:
    2. The first FILFO word has the following bits:
    3. The categories stored in bits 20-27 are logical combinations of the results of the logical functions that are stored in bits 0-9; however this combination can change, so it has been decided to explicitely repeat in the last bits the kind of event defined by FILFO.
    4. The second FILFO word, inserted in the version 2 of the bank, shows the reason for rejection. It has the following bits:
    5. The packed word in the data section has three fields whose length depends upon the stream, except for the first field. These fields are:
    6. The meaning of each field is described in Appendix A.
    ECLO - ECL Particle Object bank
        YBOS Bank header:
        -----------------
     
    Bank Name:          ECLO
    Bank Number:        1
    Bank Data Length:   1 word per identified particle
    Bank Type:          I*4
    
       Displacement         Word Type    Word Description
    ------------------------------------------------------------------
       Version Header Block 
    ------------------------------------------------------------------
    -------------------------------------------------------------------------
           Data Block
    -------------------------------------------------------------------------
      INDDAT + 0            I*4     Packed word for 1st patricle
      INDDAT + 1            I*4     Packed word for 2nd patricle
      ...
    
    
    Notes:
    1. The number of words contained in the bank can be obtained via a call to BDLEN
    2. Each word refers to a particle that fired one of the tagging algorithms has identified; for example the pi+ and pi- from Ks decay identified by KLTAG or the charged kaons identified by KPMTAG.
    3. The packed word contains five fields whose length and meanng is (counting starts from less significant bit = right to left):
    4. Exceptions to the above stated rules for word packing:
    5. The particle ID is the GEANT particle ID definition. Other IDs have been defined, for more specific purposes, according to the following table:
    6. Particle ID Particle type 
      21  prompt photons 
      31  pi+ or mu+ or e+ 
      32  pi- or mu- or e- 
      41  pi+- (no charge ID 
      42  mu+- (no charge ID 
      43  e+- (no charge ID 
      44  K+- (no charge ID 

    Database


    This section describes the Databases structure itself and the bank structure which can be put in these databases. More information about database can be found in the RTDB$DOC:RT_DATABASE.TEX. There are three kinds of database, one for the Run Condition, one for the Calibration and one for the Geometry. Each database is divided in directories and has its own "keys" definition to characterise an object inside the database.

    Databases directories description
    First here is the description of the directories:

    1. For the run condition database:
    2. //CDRT
         /HELP
         /DICTIONARY
         /RUN_COND
              /TRIGGER_ST
              /TRIGGER_LT
              /TRIGGER_MT
              /DRCH_LT
              /DRCH_MT
              /DRCH_ST
              /CALO_LT
              /CALO_MT
              /CALO_ST
              /BEAM_LT
              /BEAM_MT
              /BEAM_ST
    3. For the calibration database:
    4. //CDCT
         /HELP
         /DICTIONARY
         /CALIBRATION
               /DRCH_LT
               /DRCH_MT
                   /PARAM
                   /DCD_SIG
               /DRCH_ST
               /CALO_LT
               /CALO_MT
               /CALO_ST 
               /TRIG_LT
               /TRIG_MT
               /TRIG_ST
    5. For the geometry database:
    6. //CDGE
         /HELP
         /DICTIONARY
         /GEOMETRY
              /DRCH
                /DIM
                /POSITION
              /CALO
                /DIM  
                /POSITION
              /MAG_YOKE
              /INTER_ZONE
                   /QUAD
                   /BEAM_PIPE
              /VXCH
                /DIM
                /POSITION
         /MAGNET_FIELD
                /GEN_MAP
                /DRCH
                /QUAD
                /CALO
                /VXCH
         /MATERIALS
    The objects contained in the databases are ZEBRA banks. The format of these banks can be INTEGER*4 or REAL or mixed case if necessary. The name is a 4 characters string, the first letter refers to the detector (C for the Calorimeter, D for the Drift chamber, V for Vertex chamber), the three remaining letter "describes" the object. The displacements given in the following description are with respect to the pointer to the data banks.

    Database keys definitions
    The keys definitions are the following:

    1. System keys
    2. Key number Meaning Parameter
      Serial Number  IDHKSN 
      Pointer  IDHPTR 
      Flags  IDHFLG 
      Insertion Time  IDHINS 
      Reserved 
    3. Special user keys
    4. Key number Meaning Parameter
      Unique source identifier  IDHUSI 
      Software reference number  IDHSRN 
      unused 
      Run and Experiment type  DBRUNT 
      10  OFFline/ONline flag  DBOFON (only for calibration) 
    5. Validity range pair
    6. Key number Meaning Parameter
      11  Run number start of validity  DBSRTR 
      12  Run number end of validity  DBENDR 
    7. Normal user keys
    8. Key number Meaning Parameter
      13  Bank name  DBBKNA 
      14  Spare key  DBCPID 
    Most of the key are common of all the databases, only the 10th key is particular to the calibration database and the 14th key has different meaning depending to the database and also to the detector which are considered.

    Database bank description

    Run Condition database
    Calorimeter

    1. CPED is the bank containing the Pedestal values and their sigmas. It is a bank of 2*(number of channels) or 4*(number of channels) reals, depending if there are one or two sets of ADC. The directory pathname to access this bank is "//CDRT/RUN_COND/CALO_ST".

    2.  

       
       
       
       
       
       
       
       
       

      The description of the bank in the case of one set of ADC is:
      Displacement (I*4) Word type Description
      +1  R*4  Pedestal value of the first ADC
      +2  R*4  Pedestal sigma of the first ADC
      ...  R*4  ... 
      ...  R*4  ... 
      +2*(i-1)+1  R*4  Pedestal value of the ith ADC 
      +2*(i-1)+2  R*4  Pedestal sigma of the ith ADC 

      In the case of two sets of ADC :
      Displacement (I*4) Word type Description
      +1  R*4  First Pedestal value of the first ADC
      +2  R*4  First Pedestal sigma of the first ADC
      +3  R*4  Second Pedestal value of the first ADC
      +4  R*4  Second Pedestal sigma of the first ADC
      ...  R*4  ... 
      ...  R*4  ... 
      +4*(i-1)+1  R*4  First Pedestal value of the ith ADC 
      +4*(i-1)+2  R*4  First Pedestal sigma of the ith ADC 
      +4*(i-1)+1  R*4  Second Pedestal value of the ith ADC 
      +4*(i-1)+2  R*4  Second Pedestal sigma of the ith ADC 

    3. CMOF gives the corresponding offline number of an ADC described by its "hardware" pointer The directory pathname to access this bank is "//CDRT/RUN_COND/CALO_ST".
    4. Displacement (I*4) Word type Description
      +1  R*4  Offline IDentifier for ADC channel pointed by the number 1 ADC
      ...  R*4  ... 
      ...  R*4  ... 
      +65535  R*4  Offline IDentifier for ADC channel pointed by the number 65535 
    5. CMAP is the bank containing the Calorimeter Map file. It is like a integer matrix with (number of channels) rows and 11 columns.
    6. Displacement (I*4) Word type Description
      +1  R*4  Version number of the map file 
      +2  R*4  Total number of channels NC 
      +3  R*4  First DAQ Electronic Pointer "n" 
      +4  R*4  Cart type of Electronic Channel pointed by "n"
      +5  R*4  VME address of the "Electronic channel" 
      +6  R*4  Crate number of the "Electronic channel"
      +7  R*4  Slot number of the "Electronic channel"
      +8  R*4  Subaddress of the "Electronic channel"
      +9  R*4  Corresponding Detector Number of the "Electronic channel"
      +10  R*4  Corresponding side of the "Electronic channel"
      +11  R*4  Module number of the "Electronic channel"
      +12  R*4  Row corresponding to the "Electronic channel"
      +13  R*4  Column of the "Electronic channel"
      ...  R*4  ... 
      ...  R*4  ... 
      11*(i-1)+3  R*4  ith DAQ Electronic Pointer "n" 
      11*(i-1)+4  R*4  Cart type of the ith Electronic Channel
      11*(i-1)+5  R*4  VME address of the ith "Electronic channel" 
      11*(i-1)+6  R*4  Crate number of the ith "Electronic channel"
      11*(i-1)+7  R*4  Slot number of the ith "Electronic channel"
      11*(i-1)+8  R*4  Subaddress of the ith "Electronic channel"
      11*(i-1)+9  R*4  Corresponding Detector Number of the ith "Electronic channel"
      11*(i-1)+10 R*4  Corresponding side of the ith "Electronic channel"
      11*(i-1)+11 R*4  Module number of the ith "Electronic channel"
      11*(i-1)+12 R*4  Row corresponding to the ith "Electronic channel"
      11*(i-1)+13 R*4  Column of the ith "Electronic channel"
      ...  R*4  ... 
      ...  R*4  ... 

      Drift Chamber

      Trigger

      Calibration database
      Calorimeter

      1. CPMG contains the constants to compute the photo multiplier gains following the equation $gain = (constant*HV)^{\kappa}$. It is like a real matrix NC*3, where NC is the total number of PMs. The directory pathname to access this bank is "//CDCT/CALIBRATION/CALO_LT"
      2. Displacement (I*4) Word type Description
        +1  R*4  Photo multiplier number of the first PM
        +2  R*4  First constant to compute the gain of the first PM
        +3  R*4  Second constant k to compute the gain of the first PM
        ...  R*4  ... 
        ...  R*4  ... 
        +3*(i-1)+1  R*4  Photo multiplier number of the ith PM 
        +3*(i-1)+2  R*4  First constant to compute the gain of the ith PM 
        +3*(i-1)+3  R*4  Second constant k to compute the gain of the ith PM 
        ...  R*4  ... 
        ...  R*4  ... 
      3. CMIP is the bank containing the Minimum Ionizing Peaks values and their sigmas. It is a bank of 2*(number of channels) or 4*(number of channels) reals, depending if there are one or two sets of ADC. The directory pathname to access this bank is "//CDCT/CALIBRATION/CALO_ST".

      4.  

         
         
         
         
         
         
         
         
         

        The description of the bank in the case of one set of ADC is:
        Displacement (I*4) Word type Description
        +1  R*4  MIPs value of the first ADC
        +2  R*4  MIPs sigma of the first ADC
        ...  R*4  ... 
        ...  R*4  ... 
        +2*(i-1)+1  R*4  MIPs value of the ith ADC 
        +2*(i-1)+2  R*4  MIPs sigma of the ith ADC 

        In the case of two sets of ADC :
        Displacement (I*4) Word type Description
        +1  R*4  First MIPs value of the first ADC
        +2  R*4  First MIPs sigma of the first ADC
        +3  R*4  Second MIPs value of the first ADC
        +4  R*4  Second MIPs sigma of the first ADC
        ...  R*4  ... 
        ...  R*4  ... 
        +4*(i-1)+1  R*4  First MIPs value of the ith ADC 
        +4*(i-1)+2  R*4 First MIPs sigma of the ith ADC 
        +4*(i-1)+1  R*4  Second MIPs value of the ith ADC 
        +4*(i-1)+2  R*4  Second MIPs sigma of the ith ADC 

      Drift Chamber

      Trigger

      Geometry database
      Calorimeter

      1. General Dimension and Description Banks CGGI is the Calorimeter General Geometry Information
      2. Displacement (I*4) Word type Description
        CMDHDS  R*4  Header size 
        CMDNBI  R*4 Number of information for the barrel
        CMDNEI  R*4  Number of information for the end cap
        CMDTNM  R*4  Total Number of modules (barrel+end cap)
        CMDNRC  R*4  Total Number of read out cells (barrel+end cap)
        Information for the barrel 
        CMDFRD  R*4  fiber radius (or thickness) 
        CMDLDT  R*4  lead thickness
        CMDIWT  R*4  Inner wall thickness 
        CMDLWT  R*4  Lateral wall thickness
        CMDOWT  R*4  Outer wall thickness
        CMDMAC  R*4  Material number of the active material
        CMDMAB  R*4  Material number of the absorber
        CMDMAW  R*4  Material number of the walls
        Information for the endcap 
        CMDFRE  R*4  fiber radius (or thickness) 
        CMDLTE  R*4  lead thickness
        CMDIWE  R*4  Inner wall thickness 
        CMDLWE  R*4  Lateral wall thickness
        CMDOWE  R*4  Outer wall thickness
        CMDACE  R*4  Material number of the active material
        CMDABE  R*4  Material number of the absorber
        CMDMWE  R*4  Material number of the walls
        CMDXHO  R*4  X coordinate of the hole 
        CMDYHO  R*4  Y coordinate of the hole 
      3. CMDI is the Calorimeter Modules DImension bank.
      4. Displacement (I*4) Word type Description
        CMDHDS  R*4  Header size 
        CMDBMN  R*4  Barrel Modules Number
        CMDIMB  R*4  Number of information per barrel module
        CMDEMN  R*4 End cap modules number
        CMDIME  R*4  Number of information per end cap module
        1st Data blocks for the barrel 
        Loop on the number of Barrel modules 
        CMDNPB  R*4  Number of read out planes 
        CMDNCB  R*4  Number of read out columns
        CMDFPB  R*4  Number of fiber planes per readout plane 
        CMDINR  R*4  Inner radius of the barrel module
        CMDOUR  R*4  Outer radius of the barrel module
        CMDHLZ  R*4  Half length in z
        CMDHWB  R*4  Half width in x of the module bottom
        CMDHWT  R*4  Half width in x of the module top
        1st Data blocks for the endcap 
        Loop on the number of endcap modules 
        CMDNPE  R*4  Number of read out planes 
        CMDNCE  R*4  Number of read out columns
        CMDFPE  R*4  Number of fiber planes per readout plane 
        CMDIRE  R*4  Inner radius of the barrel module
        CMDOUE  R*4  Outer radius of the barrel module
        CMDZPE  R*4  z position
        CMDICU  R*4  Inner curvature
        CMDANG  R*4  Angle cut for the curved part
      5. CCDI is the Calorimeter Cell DImension bank.
      6. Displacement (I*4) Word type Description
        CCDHDS  R*4  Header size 
        CCDBCN  R*4  Barrel Cell Number
        CCDICB  R*4  Number of information per barrel Cell
        CCDECN  R*4  End cap Cell number
        CCDICE  R*4  Number of information per end cap Cell
        1st Data blocks for the barrel 
        Loop on the number of Barrel modules 
        CCDWDB  R*4  Width of the barrel cell
        CCDHGB  R*4  height of the barrel cell
        1st Data blocks for the endcap 
        Loop on the number of endcap modules 
        CCDWDE  R*4  Width of the end cap cell
        CCDHGE  R*4  height of the end cap cell

        Drift Chamber

        1. DGGI is the Drift chamber General Geometry Information. The directory pathname to access this bank is "//CDGE/GEOMETRY/DRCH/DIM".
        2. DCLD is the Drift Chamber Layer Description. The directory pathname to access this bank is "//CDGE/GEOMETRY/DRCH/DIM".
        3. Displacement (I*4) Word type Description
          DCLHDS  R*4  Header size 
          DCLNBL  R*4  Number of Layer (wires planes)
          DCLNIL  R*4  Number of information per layer
          DCLZPR  R*4  Z value where the radius is given
          Data blocks 
          Loop on the number of layers
          DCLLTY  R*4  Layer type
          DCLLRD  R*4  Layer radius
          DCLSAT  R*4  Stereo Angle Tangent
          DCLDPH  R*4  Delta $\phi$ angle between 2 wires
          DCLNWI  R*4  Number of wires
        4. DCWC is the Drift Chamber Wires Coordinates bank.

        5.  

           
           
           
           
           
           
           
           
           

          The directory pathname to access this bank is "//CDGE/GEOMETRY/DRCH/POSITION".
          Displacement (I*4) Word type Description
          DCWHDS  R*4  Header size 
          DCWZPL  R*4  Z value where the information is given
          DCWNBL  R*4  Number of layers (wires planes)
          DCWNIW  R*4  Number of wires
          Loop on the number of layers
          DCWNBW  R*4  Number of wires
          Loop on the number of wires
          DCLLRD  R*4  Wire type
          DCLSAT  R*4  Wire X position
          DCLDPH  R*4  Wire Y position
          DCLNWI  R*4  Wire stereo angle

          As the index computation is not straightforward in this case (because the number of wires is changing at each layer) here is given an example of a loop to retrieve all the information stored in the bank assuming that VALUES is the REAL array containing this bank:

              NWSUM = 0
              NGH = 0
              NHDS = INT(VALUES(DCWHDS)) ! Header Size
              NIW = INT(VALUES(DCWNIW)) ! Number of information per wire
              NBLAY = INT(VALUES(DCWNBL)) ! Number of Layers
              DO I = 1,NBLAY
               NBWIR = INT(VALUES(DCWNBW+NHDS+NGH)) ! Number of Wires for this layer
               DO J = 1,NBWIR
                 WIRE_TYPE = VALUES(DCWNBW+NHDS+NGH+DCWWTY+NIW*(J-1))
                 X_POSITION = VALUES(DCWNBW+NHDS+NGH+DCWXPO+NIW*(J-1)) 
                 Y_POSITION = VALUES(DCWNBW+NHDS+NGH+DCWYPO+NIW*(J-1))
                 STEREO_ANGLE = VALUES(DCWNBW+NHDS+NGH+DCWSAN+NIW*(J-1)) 
               ENDDO
               NWSUM = NWSUM + NBWIR
               NGH = NIW*NWSUM + I
              ENDDO
          
          
        6. Banks for the Cell Parametrisation:

        7.  

           
           
           
           
           
           
           
           
           

          There are 6 banks, one bank per cell shape, each bank containing all the 5 parameters from the parametrisation of the 36-$\phi$ sections of the cell: DPS1, DPS2, DPS3, DPS4, DPS5, DPS6.

          The directory pathname to access those banks is "//CDGE/GEOMETRY/DRCH/PARAM". These 6 banks have the same real format corresponding to a matrix 5 by 36 as follows:
          Displacement (I*4) Word type Description
          DPSHDS  R*4  Header size 
          DPS1DI  R*4  Number of parameters: NP (=5)
          DPS2DI  R*4  Number of $\phi$-section per shape (36)
          DPS2DI+1  R*4  1st Parameter for the 1st $\phi$-section
          DPS2DI+2  R*4  2nd Parameter for the 1st $\phi$-section
          DPS2DI+3  R*4  3rd Parameter for the 1st $\phi$-section
          DPS2DI+4  R*4  4th Parameter for the 1st $\phi$-section
          DPS2DI+5  R*4  5th Parameter for the 1st $\phi$-section
          ...  R*4  ... 
          ...  R*4  ... 
          DPS2DI+J+NP*(I-1)  R*4  Jth Parameter (J=1,NP) for the Ith $\phi$-section (I=1,36)
          ...  R*4  ... 
          ...  R*4  ... 

        Beam Pipe Description is done in the BPDE bank.

        The directory pathname is "//CDGE/GEOMETRY/INTER_ZONE/BEAM_PIPE".
        Displacement (I*4) Word type Description
        BPDBKS  R*4  Bank size 
        BPDIRS  R*4  Inner Radius of the sphere
        BPDORS  R*4  Outer Radius of the sphere
        BPDMNS  R*4  Material Number of the sphere and the first part of the pipe (beryllium)
        BPDBTH  R*4  Thickness of the pipe (first part in Be)
        BPDBLZ  R*4  Be pipe length (start at z=0) = z of the beginning of the transition zone
        BPDTZT  R*4  transition zone thickness
        BPDTLZ  R*4  Transition zone length
        BPDMTZ  R*4  Material Number of the rest of the pipe (Copper)
        BPD1CT  R*4  First Copper zone thickness
        BPD1CL  R*4  First Copper zone Length
        BPD2CT  R*4  Second Copper zone thickness
        BPD2CL  R*4  Second Copper zone Length
        BPD1AD  R*4  First Absober radial Distance from the beam
        BPD1AT  R*4  First Absober Thickness
        BPD1AL  R*4  First Absober Length
        BPD1AZ  R*4  First Absober z position
        BPD2AT  R*4  Second Absober Thickness
        BPD2AL  R*4  Second Absober Length
        BPD2AZ  R*4  Second Absober z position
        BPDMAB  R*4  Material number of the Absorber
        BPDNCR  R*4  Number of Corners (= number of change in the beam pipe dimension)
        BPDZCR  R*4  First z of the first corner

        Quadrupoles

        The quadrupoles description is done in the QDES bank.

        The directory pathname is "//CDGE/GEOMETRY/INTER_ZONE/QUAD".
        Displacement (I*4) Word type Description
        QDEHDS  R*4  Header size 
        QDEQNB  R*4  Number of quadrupoles
        QDENIQ  R*4  Number of information per quadrupole
        QDEARL  R*4  Aluminium Ring Length
        Data blocks
        Loop on the number of quadrupoles
        QDEZPO  R*4  Quadrupole z position
        QDELEN  R*4  Quadrupole length
        QDEARL  R*4  Quadrupole Inner Radius
        QDE1MN  R*4  First material number
        QDESMT  R*4  SmCo thickness
        QDE2MN  R*4  Second material number
        QDEALT  R*4  Aluminium thickness
        QDEGRD  R*4  Gradient of the magnetic field
        QDEROT  R*4  Rotation of the magnetic field

        Quadrupoles Instrumentation and Anti-coincidence Detector

        The quadupoles instrumentation and anti-coincidence detector description is done in the QIAD bank.

        The directory pathname is "//CDGE/GEOMETRY/INTER_ZONE/QUAD".
        Displacement (I*4) Word type Description
        QIABKS  R*4  Bank size 
        QIAAIR  R*4  Anti-coincidence Inner Radius
        QIAAOR  R*4  Anti-coincidence Outer Radius
        QIAATH  R*4  Anti-coincidence z thickness
        QIAAFZ  R*4  Anti-coincidence first z position
        QIAALZ  R*4  Anti-coincidence last z position
        QIAAMN  R*4  Anti-coincidence Material Number
        QIAQNP  R*4  Quadrupole instrumentation Number of Planes
        QIAQAM  R*4  Quad. inst. absorber material number (lead)
        QIAQLT  R*4  Quad. inst. absorber thickness
        QIAQSM  R*4  Quad. inst. scintillator material number
        QIAQST  R*4  Quad. inst. scintillator thickness


        Appendix A


        This Appendix describes the structure of the Event Mask, which is the packed word stored inside the ECLS bank. An event can be identified by more than one streaming algorithm and thus written in the corresponding output streams. Each of the streaming processes writes a 32 bits word that has this general structure:
        | EVENT TYPE | TAG | STREAM |


        An event is written in one or more streams according to the tagging algorithms. The streams are identified by a unique number which is stored in the four rightmost (less significant) bits of the ECLS word. The existing streams and the identification numbers are the following:

        1. KPM : stream 1 (0001)
        2. KLS : stream 2 (0010)
        3. RPI : stream 3 (0011)
        4. RAD : stream 4 (0100)
        5. CLB : stream 5 (0101)
        6. UFO : stream 6 (0110)
        7. BHA : stream 7 (0111)
        The content of each stream is described in more detail in Kloe Memo 175 .

        While the stream bits are uniquely defined, the meaning of the tagging bits is stream-dependent. A given stream may have more than one tagging algorithm, each one corresponding to a given bit which is set to one for a positive tagging. In this way more than one tagging bit can be set for a given event.

        Some algorithm can exit also with more specific informations; for example the KLTAG, based on the identification of the Ks decat in two charged pions, tries to identify the Kl deacy on the other side. If it is found a bit in the mask is set. Therefore the EVENT TYPE section of the ECLS word is a further specification of the event characteristics.

        The meaning of the tagging and of the Event Type bits is specified in the following paragraphs for each one of the streams.

        KLS_EVENT_MASK

        This is the most complex and the most important output stream (however it is not the most populated, that's the reason of calling it stream n.2). Several algorithms have been developed to maximize the efficiency in collecting KLKS events. This is the structure of the bit pattern (bit counting starts from 0).
        • stream: the stream pattern is 0010.
        • tag: 8 bits are reserved for this field according to the following scheme:
          • bit 4: KSTAG
          • bit 5: KLTAG
          • bit 6: KLCRASH
          • bit 7: INTERTAG
          • bit 8: KSNEUT
          • bit 9: KSEMIL
          • bit 10: KLPPP
          • bit 11: KL3P0
        • event type:
          • KSTAG - three bits reserved
            • bit 27: original tag described in KLOE MEMO 160.
            • bit 28: tag given by the ECL_KSPPP routine (Klcrash cluster found)
            • bit 29: tag given by the ECL_KSPPP routine (Kl charged vertex found)
          • KLTAG - four bits reserved
            • bit 12: golden tag
            • bit 13: neutral KL vertex (2-3 pi0s)
            • bit 14: mixed KL vertex (pi+pi-pi0)
            • bit 15: charged KL vertex (semileptonc or pi+pi- decay)
            • bit 25: Kl  into  pi0 pi0 candidate by  the KLRARE_TAG routine
            • bit 26: Kl  into gamma gamma candidate by KLRARE_TAG  routine
          • INTERTAG - six bits reserved
            • bit 16: special interference
            • bit 17: general interference
            • bit 18: category A
            • bit 19: category B
            • bit 20: category C
            • bit 21: category D
          • KSNEUT - 1 bit reserved
            • bit 22: golden algorithm (at least 4 prompt photons)
          • KLPPP - 2 bits reserved (remember we are counting right to left)
            • bit 23 AND NOT 24 (=01) : gamma-gamma tag
            • bit 24 AND NOT 23 (=10) : gamma-track tag
            • bit 23 AND 24 (=11) : track-track tag

        KPM_EVENT_MASK

        Structure of KPM_EVENT_MASK:
        • stream: the stream patter is 0001
        • tag:
        •   three bits reserved to the four algorithms described in KLOE MEMO 161.
          • bit 4: KPM identified by algorithm 1
          • bit 5: KPM identified by algorithm 2
          • bit 6: KPM identified by algorithm 3
        •   two bits reserved to the two algorithms developed in year 2002  (Memo in preparation)
          • bit 7: KPM identified by a topological search of kaons
          • bit 8: KPM identified by a serach for kaon decays
        • event type: no event type is defined for this stream

        RPI_EVENT_MASK

        Structure of RPI_EVENT_MASK:
        • stream: the stream patter is 0011
        • tag: no tag is defined
        • event type: no event type is defined

        RAD_EVENT_MASK

        Structure of RAD_EVENT_MASK:
        • stream: the stream patter is 0100
        • tag: four bits reserved
          • bit 4: charged radiative decay identified by PPFILT
          • bit 5: neutral radiative decay identified by NRFILT
          • bit 6: pi+pi-gamma selection algorithm (PPGTAG)
          • bit 7: unused
        • event type:
          • PPFILT : 7 bits reserved
            • bit 8: PI PI GAMMA decay
            • bit 9: MU MU GAMMA decay
            • bit 10: EL EL GAMMA decay
            • bit 11: etagamma, eta'gamma, a0gamma with PI+PI- in the final state
            • bit 12: eta'gamma with eta'->rhogamma
            • bit 13: QCALTAG (photon in QCAL)
            • bit 14: LIKETAG (charged pion identified by likelihood function)
          • RADFILT : 3 bits reserved
            • bit 15: 3 prompt photons with ETOT>450 MeV
            • bit 16: at least 6 prompt photons (etagam/eta'gam -> pi0pi0pi0g)
            • bit 17: total energy less than 900 MeV (mach back)

        CLB_EVENT_MASK

        Structure of CLB_EVENT_MASK:
        • stream: the stream patter is 0101
        • tag: four bits reserved
          • bit 4: PI+PI-;MU+MU-;EL+EL- identified by PPFILT
          • bit 5: bhabha events (now moved to a separate stream)
          • bit 6: cosmic events
          • bit 7: MUMUTAG events
        • event type: three bits have been reserved for PPFILT
          • bit 8: PI+PI-
          • bit 9: MU+MU-
          • bit 10: EL+EL-

        UFO_EVENT_MASK

        Structure of UFO_EVENT_MASK:
        • stream: the stream patter is 0110
        • tag: no tag is defined
        • event type: no event type is defined

        BHA_EVENT_MASK

        Structure of BHA_EVENT_MASK:
        • stream: the stream patter is 0111
        • tag: four bits reserved
          • bit 4: Large Angle Bhabhas selected by FILFO
          • bit 5: Golden BHabha selected by FILFO
          • bit 6: unused
          • bit 7: unused
        • event type: no event type is defined

        This document was *NOT* generated on 25 July 1996 using the texi2html translator version 1.49.
        Last update 19-Sep-2000