next up previous
Next: About this document ...

Event Reconstruction Summary Tables


for the Summer 1999 STAR Engineering Run


STAR DST


August 20, 1999



*** Please note that the table idl files are now frozen. This means that we will stop changing these tables in order to let the DST filler codes, Makers and StEvent development catch up.

The STAR DST tables used in MDC1 and MDC2 need to be revised for the Summer 1999 STAR Engineering run and the following initial physics data run. The changes mainly involve clean up of unnecessary variables, addition of some important quantities, consolidation of tables where this seems more optimal, and separation of tables into detector specific structures in the case of the software monitor table. You will notice that each idl file now includes an expanded set of comments at the beginning which should clarify the tables use and provide documentation with the data. In this document each affected table will be listed, preceded by a brief itemized list of what was changed and why. Following this a brief status report of any remaining DST level tables not explicitly discussed will be given.

This now includes the most recent changes which were made since the Tuesday, June 29 5pm EDT deadline. The changes include: (1) dropping "dst" from the dst_run_header and dst_event_header table names, (2) moving the beam polarization averages and luminosity average to the dst_run_summary table, (3) removing the n_event and bfc_run_id foreign keys from the software monitor tables, (4) implementing Helen Caines' dst_monitor_soft_svt table, (5) clarifying the track length parameter (now fixed in egr), (6) optimization of the word sizes in dst_pixel, (7) changes in the way we will relate space points and tracks using a new dst_point_track_index table.

I think it is time to freeze these tables so that Thomas can move ahead with the changes in StEvent and the changes in the global modules can begin.



run_header:

The BFC production run summary tables were omitted prior to MDC2. It is still important to store the BFC production run summary information with the other DST data. Therefore we are reinstating the run summary tables. The changes in this new version compared to that used in MDC1 are:

/*  run_header.idl           */    
/*  Table: run_header        */  

/*  This table contains minimal information to identify and briefly
 *  characterize each offline reconstruction production run using the
 *  BFC or similar production chain.  The information for one BFC
 *  production run is put into one row of this table.  This table is
 *  intended for both simulation runs and experimental data reconstruction
 *  runs.
 *
 *  A fundamental requirement is that the event type (e.g. A+A collision,
 *  p+p collision, A+A peripheral, TPC event, EMC only event, calibrations,
 *  etc.) and trigger be the same for all events in the production run.
 *  Average beam polarization magnitudes and average beam-beam collision 
 *  luminosity are included for the experimental run period corresponding
 *  to the events in the production run.  Quantitative values for the 
 *  specific run time and bunch crossing must be obtained from the Conditions 
 *  Data Base.  The magnetic field values used by each tracking detector
 *  in the track fitting procedure is stored here also, where this implies
 *  that only one magnet field map is allowed per BFC production run.
 */

 struct run_header  {
  char   event_type[40];  /* Event type: collision, cosmic, lasers...   */
  long   bfc_run_id;      /* Unique BFC production run ID number        */
  long   exp_run_id;      /* Reference to the experiment run ID number  */
  long   trig_mask;       /* Trigger mask for events in BFC prod. run   */
  long   east_a;          /* A of east moving ion                       */
  long   east_z;          /* Z of east moving ion                       */
  long   west_a;          /* A of west moving ion                       */
  long   west_z;          /* Z of west moving ion                       */
  float  sqrt_s;          /* CM total energy per NN pair (GeV)          */
  float  mag_field[4];    /* Magnetic field used by TPC, SVT-SSD,       */
                          /* FTPC-East and FTPC-West, respect. in Tesla */
 } ;
/*  Last mod. for run_header:   $Date: 1999/06/22 10:33:41 $ */



dst_run_summary:

Please read the comments at the beginning of this idl file which explain what it is intended for. The changes are:

/*  dst_run_summary.idl         */  
/*  Table: dst_run_summary      */  

/*  This table contains crude, overall event reconstruction summary
 *  information about a given BFC production run.  The information for
 *  one BFC production run is put into one row of this table.  This table is
 *  intended for both simulation runs and experimental data reconstruction
 *  runs.
 *
 *  Note that the production software version, run control parameters,
 *  calibrations constants, magnetic field map, etc. are to be accessed
 *  through the STAR Data Base, not here.
 *
 *  The mean and standard deviation multiplicities (or energy deposition
 *  in the case of the EMC) for each detector subsystem for all events
 *  successfully processed in the BFC production run are stored in the
 *  variables mean_mult and rms_mult where the array index used
 *  for each detector is determined by the detector ID assignment defined
 *  in StDetectorDefinitions.h .
 */

 struct dst_run_summary  {
  long   bfc_run_id;      /* Unique BFC run ID, F.key to run_header          */
  long   n_events_tot;    /* Total number of events in the BFC prod. run     */
  long   n_events_good;   /* Total number events successfully processed      */
  long   date[2];         /* Start/stop date for processing                  */
  long   time[2];         /* Start/stop time of day (sec)                    */
  float  cpu_total;       /* Total cpu sec for production run                */
  float  east_pol_L;      /* Avg magnitude of east beam Longitudinal Pol     */
  float  east_pol_T;      /* Avg magnitude of east beam Transverse Pol       */
  float  west_pol_L;      /* Avg magnitude of west beam Longitudinal Pol     */
  float  west_pol_T;      /* Avg magnitude of west beam Transverse Pol       */
  float  luminosity;      /* Avg luminosity during experiment for events     */
                          /* in production run, 1.0/[cm^2 sec]               */
  float  eta[2];          /* Mean and std.dev. of <eta> for all events */
  float  pt[2];           /* Mean and std.dev. of <pt> for all events  */
  float  num_vert[2];     /* Mean and std.dev. of total # vertices           */
  float  mean_mult[30];   /* Mean multiplicity (energy) per detector for run */ 
  float  rms_mult[30];    /* RMS multiplicity (energy) per detector for run  */
 } ;
/*  Last mod. for dst_run_summary:   $Date: 1999/06/22 14:44:13 $ */



dst_summary_param:

After a lengthy discussion at BNL we concluded that ROOT generated histograms for the event summary information could not be easily stored with the DSTs and we went back to the idea of using modules and tables for this. Then the plan to use a variable dimension for the number of bins was opposed since this would create incompatibilities among different DST data files. So the simplest solution, suggested by Kathy, is adopted here. The number of bins is increased from 5 to 10, allowing the BFC production manager to use up to this amount or fewer by simply setting the appropriate bin ranges in this table in the BFC Maker. The BFC run number ID was added and the azimuthal bins can now be variable.

/*  dst_summary_param.idl         */  
/*  Table: dst_summary_param      */  

/*  This table contains the bin domain parameters used in the event summary tabl
e
 *  for all events processed in the BFC production run.  The information
 *  for one BFC production run is put into one row of this table.  This
 *  table is intended for both simulation runs and experimental data
 *  reconstruction runs.
 *
 *  Up to 10 bins in pt, eta and phi are allowed.  The following define
 *  the domains of the bins; the numerical values must be listed in
 *  monotonically increasing order.  If fewer than 10 bins are needed
 *  the user may simply set the last several parameters to the same value.
 *
 *  Bin domains are defined as follows:
 *
 *  For pt and eta:
 * ----------------
 *
 *          Bin #           Domain
 *            1           <= bin[0]
 *            2            > bin[0] && <= bin[1]
 *           ...             ...
 *            n            > bin[n-2]
 *
 *  For phi (azimuthal angle):
 *  --------------------------
 *
 *          Bin #           Domain
 *            1            > bin[0] && <= bin[1]
 *            2            > bin[1] && <= bin[2]
 *           ...             ...
 *            n            > bin[n-1] && <= bin[0]
 */

 struct dst_summary_param  {
  long   bfc_run_id;      /* Unique BFC run ID, F.key to run_header        */
  float  eta_bins[9];     /* Pseudorapidity bin domain limits              */
  float  pt_bins[9];      /* Transverse momentum bin domain limits (GeV/c) */
  float  phi_bins[10];    /* Azimuthal angle bin domain limits (deg)       */ 
 } ;
/*  Last mod. for dst_summary_param:   $Date: 1999/06/22 15:36:46 $ */



event_header:

/*  event_header.idl        */
/*  Table: event_header     */

/*  This table contains minimal information to uniquely identify an
 *  event.  The information in this table does not depend on results
 *  of any offline analysis and is fixed for all time.  It is filled
 *  with information for one event per table row.  This table is intended
 *  for both simulations and experimental data.
 */

 struct event_header  {
  char   event_type[40];    /* Event type: collision, cosmic, lasers...    */
  long   n_event[2];        /* Unique 64 bit event ID number               */
  long   exp_run_id;        /* Reference to the experiment run ID number  */
  long   time;              /* Unique time stamp for event                 */
  long   trig_mask;         /* Trigger mask                                */
  long   bunch_cross;       /* Beam-Beam bunch crossing number             */
 } ;
/*  Last mod. for event_header:   $Date: 1999/06/22 11:44:16 $ */



dst_event_summary:

This table has a lot in common with the Physics Working Group StEvent tags which are also going to be filled during reconstruction. The following table was modified to avoid duplication as much as possible and to mainly emphasize the overall characteristics of the event as determined by the tracking software. The intent is that these quantities be used as TagDB data from the reconstruction phase of the analysis. I had some discussion with Mike Lisa and Raimond Snellings about the reaction plane. I decided not to include any reaction plane information here but to rely on the StFlowMaker to take care of this. Please read the introductory comments in the idl file.

/*  dst_event_summary.idl       */
/*  Table: dst_event_summary    */

/*  This table contains event reconstruction summary information obtained
 *  during BFC production runs.  It is filled with information for one event
 *  per table row.  This table is intended for both simulations and 
 *  experimental data.  The data contained here are, for the most part,
 *  complementary to that filled by the Physics Working Group Makers into
 *  the PWG Tags in StEvent, also during event reconstruction.
 *
 *  NOTE:  The following should not be construed in any way as representing 
 *         "Physics Quantities"
 *
 *  Other details:
 *        The global track count uses the first instance of the 
 *        dst_track table only, i.e. the one using only the 
 *        hits in the tracking detectors and not the primary vertex.
 */

 struct dst_event_summary  {
  long   n_event[2];        /* Unique 64 bit event ID number, F.key to     */
                            /*    event_header                             */
  long   bfc_run_id;        /* Unique BFC run ID, F.key to run_header      */
  long   glb_trk_tot;       /* Total number of global tracks               */
  long   glb_trk_good;      /* Total number of good global tracks          */
  long   glb_trk_prim;      /* Total number of good, primary global track  */
                            /*    candidates as determined in evr.         */
  long   glb_trk_plus;      /* Total number of good global (+) tracks      */
  long   glb_trk_minus;     /* Total number of good global (-) tracks      */
  long   glb_trk_exotic;    /* Total number of good global exotic trk cand.*/
  long   n_vert_total;      /* Total number of vertices, loose cuts        */
  long   n_vert_type[5];    /* Total number of vertices, loose cuts for    */
                            /*    the five vertex types defined in         */
                            /*    StVertexDefinitions.h                    */
  long   n_vert_pileup;     /* Number of suspected pileup vertices         */
  long   mult_eta[10];      /* # good glb chrg trk, all pt for eta bins    */
  long   mult_pt[10];       /* # good glb chrg trk, all eta for pt bins    */
  long   mult_phi[10];      /* # good glb chrg trk, all pt,eta for phi bins*/
  float  mean_pt;           /* Mean pt(GeV/c) for all good glb chrg tracks */
  float  mean_pt2;          /* Mean pt^2(GeV/c)^2 for all good glb chrg trk*/
  float  mean_eta;          /* Mean pseudorap. for all good glb chrg trks  */
  float  rms_eta;           /* RMS pseudorap. for all good glb chrg trks   */
  float  energy_emc_eta[10]; /* EMC energy (or raw ADC sum) for eta bins   */
  float  energy_emc_phi[10]; /* EMC energy (or raw ADC sum) for phi bins   */
  float  prim_vrtx[3];      /* Primary vrtx x,y,z-position -SCS(cm)        */
  float  mag_field[4];      /* Magnetic field used by TPC, SVT-SSD,        */
                            /* FTPC-East and FTPC-West, respect. in Tesla  */
 } ;
/*  Last mod. for dst_event_summary:   $Date: 1999/06/22 17:31:07 $ */



Software Production Monitor Tables:

The big change here is to separate the former table, dst_monitor_soft into different tables for each detector plus one for global reconstruction quantities. So far all I have done is move the variables in the previous table to the new tables. The TPC and Global tables should be fairly complete. The rest need some work from the detector representatives. The SVT and FTPC tables are perhaps okay now and we can go with this but Helen and Janet ought to review them. The EMC, CTB-TOF and RICH tables are just place-holders and should not go in the production chain until something reasonable is put in.

/*  dst_monitor_soft_tpc.idl           */
/*  Table: dst_monitor_soft_tpc        */

/*  This table contains TPC event reconstruction monitoring quantities
 *  which are used to determine the general quality of the event
 *  reconstruction production chain (BFC).  It is filled with information
 *  for one event per table row.  This table is intended for both
 *  simulations and experimental data.
 */

 struct dst_monitor_soft_tpc  {
  long   n_clus_tpc_tot;     /* Total number clusters in TPC         */
  long   n_clus_tpc_in[24];  /* Tot. # clus in TPC, inner sectors    */
  long   n_clus_tpc_out[24]; /* Tot. # clus in TPC, outer sectors    */
  long   n_pts_tpc_tot;      /* Tot. # space pts in TPC              */
  long   n_pts_tpc_in[24];   /* Tot. # space pts in TPC, inner sect. */
  long   n_pts_tpc_out[24];  /* Tot. # space pts in TPC, outer sect. */
  long   n_trk_tpc[2];       /* Total # tracks in TPC; tanl<0,=>0    */
  float  chrg_tpc_drift[10]; /* Charge deposited in TPC in along z   */
  float  chrg_tpc_tot;       /* Tot. charge deposition in TPC        */
  float  chrg_tpc_in[24];    /* Tot. charge dep. in TPC, inner sect. */
  float  chrg_tpc_out[24];   /* Tot. charge dep. in TPC, outer sect. */
  float  hit_frac_tpc[2];    /* Frac. hits used in TPC, tanl<0,=>0   */
  float  avg_trkL_tpc[2];    /* Avg. track length (cm) TPC,          */
                             /* -OR- Avg. # pts assigned,  tanl<0,=>0*/
  float  res_pad_tpc[2];     /* Avg. resid, pad direct, TPC          */
                             /* -OR- Avg. chisq(1) of fit,tanl<0,=>0 */
  float  res_drf_tpc[2];     /* Avg. resid, drift dir,  TPC          */
                             /* -OR- Avg. chisq(2) of fit,tanl<0,=>0 */
 } ;
/*  Last mod. for dst_monitor_soft_tpc:   $Date: 1999/06/22 18:43:34 $ */




/*  dst_monitor_soft_svt.idl           */
/*  Table: dst_monitor_soft_svt        */

/*  This table contains SVT-SSD event reconstruction monitoring quantities
 *  which are used to determine the general quality of the event
 *  reconstruction production chain (BFC).  It is filled with information
 *  for one event per table row.  This table is intended for both
 *  simulations and experimental data.
 */

 struct dst_monitor_soft_svt  {
  long   n_clus_svt[4];      /* Total number clusters in each SVT layer   */
  long   n_pts_svt[4];       /* Tot. # space pts in each SVT layer        */
  long   n_trk_svt;          /* Total # tracks in SVT                     */
  float  chrg_svt_tot[4];    /* Tot. charge deposition in each SVT layer  */
  float  hit_frac_svt[4];    /* Frac. hits used in each SVT layer         */
  float  avg_trkL_svt;       /* Avg. track length (cm) SVT                */
                             /* -OR- Avg. # pts assigned                  */ 
  float  res_pad_svt;        /* Avg. residual, pad direction, SVT         */
                             /* -OR- Avg. chisq(1) of fit,                */
  float  res_drf_svt;        /* Avg. resid., drift direction, SVT         */
                             /* -OR- Avg. chisq(2) of fit,                */
 } ;
/*  Last mod. for dst_monitor_soft_svt:   $Date: 1999/06/22 18:52:27 $ */




/*  dst_monitor_soft_ftpc.idl           */
/*  Table: dst_monitor_soft_ftpc        */

/*  This table contains FTPC event reconstruction monitoring quantities
 *  which are used to determine the general quality of the event
 *  reconstruction production chain (BFC).  It is filled with information
 *  for one event per table row.  This table is intended for both
 *  simulations and experimental data.
 */

 struct dst_monitor_soft_ftpc  {
  long   n_clus_ftpc[2];     /* Tot. # clus in FTPC, east/west       */
  long   n_pts_ftpc[2];      /* Tot. # space pts in FTPC, east/west  */
  long   n_trk_ftpc[2];      /* Total # tracks in FTPC east/west     */
  float  chrg_ftpc_tot[2];   /* Tot. charge dep. in FTPC, east/west  */
  float  hit_frac_ftpc[2];   /* Frac. hits used in FTPC, east/west   */
  float  avg_trkL_ftpc[2];   /* Avg. track length (cm) FTPC,east/west*/
                             /* -OR- Avg. # pts assigned             */ 
  float  res_pad_ftpc[2];    /* Avg. residual, pad direction,FTPC E/W*/
  float  res_drf_ftpc[2];    /* Avg. resid., drift direction,FTPC E/W*/
 } ;
/*  Last mod. for dst_monitor_soft_ftpc:   $Date: 1999/06/22 18:53:31 $ */




/*  dst_monitor_soft_emc.idl           */
/*  Table: dst_monitor_soft_emc        */

/*  This table contains EMC event reconstruction monitoring quantities
 *  which are used to determine the general quality of the event
 *  reconstruction production chain (BFC).  It is filled with information
 *  for one event per table row.  This table is intended for both
 *  simulations and experimental data.
 */

 struct dst_monitor_soft_emc  {
  float  energy_emc;         /* Total energy (or ADC sum) in EMC     */
 } ;
/*  Last mod. for dst_monitor_soft_emc:   $Date: 1999/06/22 18:56:47 $ */




/*  dst_monitor_soft_ctb-tof.idl           */
/*  Table: dst_monitor_soft_ctb-tof        */

/*  This table contains CTB-TOF event reconstruction monitoring quantities
 *  which are used to determine the general quality of the event
 *  reconstruction production chain (BFC).  It is filled with information
 *  for one event per table row.  This table is intended for both
 *  simulations and experimental data.
 */

 struct dst_monitor_soft_ctb-tof  {
  long   mult_ctb_tot;       /* Total mult. (or ADC sum) in CTB      */ 
 } ;
/*  Last mod. for dst_monitor_soft_ctb-tof:   $Date: 1999/06/22 18:58:57 $ */




/*  dst_monitor_soft_rich.idl           */
/*  Table: dst_monitor_soft_rich        */

/*  This table contains RICH event reconstruction monitoring quantities
 *  which are used to determine the general quality of the event
 *  reconstruction production chain (BFC).  It is filled with information
 *  for one event per table row.  This table is intended for both
 *  simulations and experimental data.
 */

 struct dst_monitor_soft_rich  {
  long   mult_rich_tot;      /* Total mult. (or ADC sum) in RICH      */ 
 } ;
/*  Last mod. for dst_monitor_soft_rich:   $Date: 1999/06/22 19:00:15 $ */




/*  dst_monitor_soft_global.idl           */
/*  Table: dst_monitor_soft_global        */

/*  This table contains Global event reconstruction monitoring quantities
 *  which are used to determine the general quality of the event
 *  reconstruction production chain (BFC).  It is filled with information
 *  for one event per table row.  This table is intended for both
 *  simulations and experimental data.
 */

 struct dst_monitor_soft_global  {
  long   n_trk_match[2];     /* Total # SVT-TPC tracks matched,tanl<0,=>0 */
  long   prim_vrtx_ntrk;     /* # tracks used in primary vertex fit       */
  float  prim_vrtx_cov[6];   /* Primary vrtx covariance matrix            */
  float  prim_vrtx_chisq;    /* Primary vertex chi-square of fit          */
 } ;
/*  Last mod. for dst_monitor_soft_global:   $Date: 1999/06/22 19:08:09 $ */



dst_pixel:

This is a new DST table to hold ADC data associated with rare particle candidates. A requirement for this table's existence is that it not be allowed to swell to enormous volume. It contains two packed data words which contain the detector ID, sector number, pad row, pad, time bucket and ADC values. If hits in other detectors contribute this has to be similarly packed.

With respect to the fractional charge search proposed by Jay Marx and David Hardtke the rare particle track count can be saved in dst_event_summary.glb_trk_exotic. The dE/dx values for candidate tracks can be saved in dst_dedx and can be identified as such using the dst_dedx.iflag variable. This will provide a record of the rare track candidates via the foreign key, dst_dedx.id_track which refers to the particles in dst_track.

/*  dst_pixel.idl         */
/*  Table: dst_pixel      */

/*  This table contains event reconstruction pixel information.
 *  This might include, for example, the raw ADCs associated with
 *  some rare track candidates from a search algorithm such as that
 *  proposed to look for fractionally charged particles.  It is filled
 *  with information for one event with one pixel per table row.  No
 *  keys to clusters, space points or tracks are included in this table.
 *  Data packing is used for each variable as follows:
 *
 *  secrow    packs the detector ID number using the definitions in
 *            StDetectorDefinitions (4 bits), the sector number 1 to
 *            24 (5 bits), and the pad row number 1 to 45 (6 bits)
 *            into a 'short' integer word.
 *
 *  padtimeadc packs the pad number (maximum of 182) (8 bits), time
 *             bucket number (0-511, 9 bits) and ADC value (10 bits)
 *             into a 'long' integer word.
 *
 *             Similar packing schemes must be used for other detectors.
 *
 */

 struct dst_pixel  {
  short secrow;       /* Packed det ID, sec., row. numbers       */
  long  padtimeadc;   /* Packed pad#, time bucket and ADC        */
 } ;
/*  Last mod. for dst_pixel::   $Date: 1999/06/23 17:46:26 $ */



dst_point:

It turns out that there are no changes to make in this table. However, the use of the key variable id_track is, or can be, different. The comments in the idl file emphasize that all space points are stored. If we only save one track fit instance or only save instances for which the same set of space points are assigned to the tracks, then the variable id_track acts as a foreign key to the dst_track table which is the way we have been using this so far. If we save several track instances that may each have a different set of assigned space points, for example the helix fitter, Kalman fitting with pion mass assumption, Kalman fitting with proton mass assumption, etc., then id_track is used as a primary key for this table. Hence it must be a 'long' word in order to handle of order 200K space points. Finally, Torre advised that as long as we are saving xdf files the packing algorithm should be maintained. Any ROOT data compression is irrelevant for xdf data storage.

The hw_position variable has been changed to 'unsigned long' and the packing algorithm has been changed and is, in general, going to be different for each tracking detector. The first 4 bits are reserved for the 'det_id'; the remainder varies in usage. The packing algorithms as they are presently defined are contained in the comments for the table idl file.

The packing algorithms for the other variables, position[2], pos_err[2] and charge will be included in the comments later after review and update of the dst_point filler module.

/*  dst_point.idl                 */
/*  Table: dst_point              */

/*  This table contains event reconstruction information about the
 *  space points generated by each tracking detector; TPC, SVT, SSD,
 *  and the FTPC-East, West.  It is filled with information for one event
 *  with one space point per table row.  All space points are loaded
 *  into this table.  Data packing is used for each variable except
 *  id_track which must be fit into a 'long' word length.  Refer to
 *  the dst_point_filler.F module for the data packing algorithm.
 *  The space points can be unpacked using module dst_point_unpack.F
 *  or StEvent.
 *
 *  If one track instance is saved or if all track instances use the
 *  same point-to-track assignments, then 'id_track' acts as a foreign
 *  key to 'dst_track.'  If several track instances are saved where
 *  different space point assignments may occur (this includes different
 *  track fitting methods applied to the same set of 'seed' tracks in
 *  which different space points have been removed by outlier cuts),
 *  then 'id_track' serves as a primary key, uniquely identifying each
 *  space point.  In the latter case the relationship between space
 *  points and tracks is determined by the index table dst_point_track_index.
 *  If a space point is not assigned to any track when only one track
 *  instance is saved, then for this point 'id_track' is set to zero.
 *
 *  hw_position packing algorithms:
 *  ------------------------------
 *       TPC:   bits 0-3   detector ID numbers from StDetectorDefinitions.h
 *              bits 4-8   sector number (1-24)
 *              bits 9-14  pad row number (1-45)
 *              bits 15-21 number of pads contributing to cluster (1-127 max)
 *              bits 22-31 total number of pixels contributing to cluster
 *                         from 1-1023 max.
 *
 *       SVT:   (THE FOLLOWING IS TEMPORARY AND MAY CHANGE)
 *       SVT:   bits 0-3   detector ID numbers from StDetectorDefinitions.h
 *              bits 4-11  wafer ID number from 1-216
 *              bit  12    wafer drift half ("top"=0, "bottom"=1)
 *              bits 13-21 Time bucket quarter containing hit centroid
 *                         from 0-511 in quarter time bins; 128 time bins total
 *              bits 22-31 Anode quarter containing hit centroid from 1-960;
 *                         240 anodes total.
 *
 *       FTPC:  bits 0-3   detector ID numbers from StDetectorDefinitions.h
 *              bits 4-10   FTPC pad plane (1-20)                    
 *              bits 11-20  Sector number within pad-plane (1-6)      
 *              bits 21-24  number of pads in cluster                
 *              bits 25-31  number of consecutive timebins in cluster 
 *
 *       SSD:   bits 0-3   detector ID numbers from StDetectorDefinitions.h
 *              bits 4-13  central strip of the n-side cluster (1-768)
 *              bits 14-15 n-side cluster size (1-4)
 *              bits 16-25 central strip of the p-side cluster (1-768)
 *              bits 26-27 p-side cluster size (1-4)
 *              bits 28-31 p-side to n-side cluster matching quality factor
 *
 *  position[2] packing algorithm:  (to be completed after code revision)
 *  -----------------------------
 *
 *  pos_err[2] packing algorithm:  (to be completed after code revision)
 *  ----------------------------
 *
 *  charge packing algorithm:  (to be completed after code revision)
 *  ------------------------
 * 
 *  
 */

 struct dst_point  {
  long      id_track;        /* F.key to dst_track table for one        */
                             /* track instance; primary key ID for      */
                             /* multiple track instances                */
  unsigned long hw_position; /* det id, hardware position, other ...    */
                             /* see preceeding comments                 */
  long      position[2];     /* compressed x,y,z of space-point         */
  long      pos_err[2];      /* compressed x,y,z space-point error      */
  long      charge;          /* total charge and max_adc                */
 } ;
/*  Last mod. for dst_point:   $Date: 1999/08/05 12:17:21 $ */



dst_point_track_index:

This is a new DST table. It is a space point to track relationship index table which is to be used whenever we save multiple track instances that may have different space point assignments. This table is filled with one row being used for each space point - track assignment. A new instantiation is written for each track table instance that uses different point-track assignments.

/*  dst_point_track_index.idl                 */
/*  Table: dst_point_track_index              */

/*  This table contains event reconstruction information about the
 *  space point to track relationships.  This is filled whenever
 *  multiple track instances are saved in the DST which may have
 *  different space point assignments.  This table is filled with
 *  one row for each space point - track assignment.  A new 
 *  instantiation is written for each track table instance that uses
 *  different point-track assignments.  This includes different
 *  track fitting methods applied to the same set of 'seed' tracks in
 *  which different space points have been removed by outlier cuts.
 */

 struct dst_point_track_index  {
  short     id_track;      /* F.key to dst_track table       */ 
  long      id_point;      /* F.key to dst_point table       */
 } ;
/*  Last mod. for dst_point_track_index: $Date: 1999/07/02 14:17:58 $ */



dst_track:

/*  dst_track.idl              */
/*  Table: dst_track           */

/*  This table contains event reconstruction information about the
 *  charged particle trajectories (tracks) generated by each tracking detector;
 *  TPC, SVT, SSD, and the FTPC-East, West, which have been assigned the
 *  status of global tracks by global tracking analysis.  It is filled with 
 *  information for one event with one track per table row.  Track
 *  parameters are given in the global STAR coordinate system at various
 *  positions depending on the instantiation of this table.
 *
 *  Multiple instances of this table may be saved in the DST output.
 *  This may, for example, include different track finding methods,
 *  different track fitting methods, fits with or without the primary
 *  vertex constraint, etc.  Refer to the 'method' variable described
 *  below.  Also see the implementation plan for DST production at the URL: 
 *  http://www.star.bnl.gov/??? (remains to be defined).
 *  
 *  Description of selected variables:
 *  ----------------------------------
 *       id              Primary key; unique identification for each
 *                       collection of hits from tracking detectors (TPC,
 *                       SVT, SSD, FTPC East and West) which constitutes
 *                       a global track for a given track finding method.
 *                       Different table instances corresponding to
 *                       different track fitting methods (e.g. with or
 *                       without primary vertex constraint, 2-step helix
 *                       fit, full 3D helix fit, Kalman, etc.) must always
 *                       use the exact same primary key values for each track.
 * 
 *                       Primary key values may be assigned independently 
 *                       for track table instances corresponding to alternate
 *                       track finding methods (see below) which may have
 *                       different hit-to-track assignments.
 * 
 *       iflag           See WWW document at:  STAR Home Page -> Groups ->
 *                       All -> "Translation of dst_track.iflag declarations"
 *                       or explicitly at the URL:  www.star.bnl.gov/STAR/
 *                       html/all_l/html/dst_track_flags.html
 *       
 *       det_id          Indicates which detector(s) contributed space
 *                       points to the track using the detector ID and
 *                       global track definitions in
 *                       $STAR/pams/global/inc/StDetectorDefinitions.h
 *
 *       method          Track finding and track fitting methods in a
 *                       packed format (to be defined).  This will be used
 *                       to indicate the track finding methods, track finding
 *                       pass numbers, and track fitting methods used to 
 *                       generate the global tracks:
 *                       Track finding methods (examples):
 *                            (1) SVT - grouper
 *                            (2) SVT-SSD - stk, "follow your nose"
 *                            (3) SVT-SSD - other low pt method
 *                            (4) TPC - standard tpt
 *                            (5) TPC - template matching or others
 *                            (6) SVT-SSD-TPC - vector-vector matcher (svm)
 *                            (7) SVT-SSD-TPC - TPC track->SVT-SSD point (est)
 *                            (8) FTPC - standard ftp
 *                       Track finding quality measures (examples):
 *                            (1) SVT stk pass number
 *                            (2) SVT-SSD-TPC - svm pass number
 *                            (3) SVT-SSD-TPC - est pass number
 *                       Track fitting methods for global tracks (examples):
 *                            (1) Two-step helix fit
 *                            (2) Full 3D helix fit
 *                            (3) Kalman fit (local helix)
 *                            (4) Analytic energy loss model fit
 *                            (5) Break point fit
 *                            (6) Straight line fits
 *                            (7) Primary and/or secondary vertex constraints
 *
 *       pid             Geant particle ID number for mass hypothesis
 *                       used in the tracking.  This is included for the
 *                       Kalman filter/fitter method.  The Geant PID code
 *                       is used here, rather than the Particle Data
 *                       Group's code, in order to include deuterons,
 *                       tritons, alphas.
 *
 *    id_start_vertex    This is always initialized to zero by global and by
 *                       FTPC tracking and FTPC DST filler modules.  It is
 *                       only filled by the primary vertex finder, evr, to
 *                       indicate the following:
 *                          (1) whether the track was used in the final
 *                              iteration of the primary vertex fit
 *                          (2) whether the track passes the final 3D DCA
 *                              to primary vertex cut, based on the parameter
 *                              evrpar(1).vcut; such tracks are considered
 *                              first pass primary track candidates.
 *                       This variable is packed according to:
 *                          = {0, if trk not used in final primary vertex fit;
 *                             1, if trk was used in final primary vertex fit}
 *                           +{10*dst_vertex(final prim vrtx row).id, if track
 *                             passes final 3D DCA primary vertex cut}
 *
 *       map[2]          Packed 64-bits used to indicate either the
 *                       continuity or gaps in tracks as they cross different
 *                       active elements of the SVT, SSD, TPC and FTPC.  Also
 *                       indicates if track extrapolates to other detectors
 *                       (MWC, CTB, TOF, RICH, EMC barrel, EMC end cap) and
 *                       if a vertex constraint was used or not.
 *
 *              Bit assignments for tracking detector 
 *              elements for SVT, SSD, TPC and FTPCs:
 *              -------------------------------------
 *
 *                   The use of the bit map depends on the particular
 *                   instantiation of this table.  Setting a bit to 1
 *                   for a tracking detector element could indicate:
 *                        (1) one or more hits on this detector element
 *                            were assigned to the track by the track finding
 *                            method, or
 *                        (2) one or more hits on this detector element
 *                            were used by the track fitting method, i.e.
 *                            these hits passed any outlier removal cuts.
 *                   Setting a bit value to 0 indicates that either no hit
 *                   from this detector element was assigned to this track,
 *                   or no hit from this detector element was used in the fit.
 *
 *                   An example of the first case would be the initial helix
 *                   fit to global tracks currently instantiated in table
 *                   'globtrk' in the DST production chain.  An example of
 *                   the second case would be the tracks fitted with the
 *                   primary vertex constraint which is instantiated in
 *                   table 'primtrk'.
 *
 *              SVT and/or SSD and/or TPC Tracks
 *              --------------------------------
 *              map[0]   Bit number  Quantity
 *              ------   ----------  --------
 *                           0       Primary Vertex used(1) or not(0);
 *                                   also used to indicate that a secondary
 *                                   vertex constraint was used for special
 *                                   track fitting methods for decay vertices
 *                                   (see method variable).
 *                          1-6      SVT 3 superlayers, inner/outer
 *                           7       SSD 4th layer
 *                          8-31     TPC, first 24 padrows
 *
 *              map[1]   Bit number  Quantity
 *              ------   ----------  --------
 *                          0-20     TPC, remaining 21 padrows
 *                          21       Track extrapolates to MWC (no=0, yes=1)
 *                          22       Track extrapolates to CTB (no=0, yes=1)
 *                          23       Track extrapolates to TOF (no=0, yes=1)
 *                          24       Track extrapolates to RCH (no=0, yes=1)
 *                          25       Track extrapolates to EMCB (no=0, yes=1)
 *                          26       Track extrapolates to EMCEC (no=0, yes=1)
 *                         27-29     reserved for future use
 *                          30       Turn around flag, some elements used >1
 *                          31       Format interpreter; (SVT/SSD/TPC=0,FTPC=1)
 *
 *              FTPC Tracks
 *              -----------
 *              map[0]   Bit number  Quantity
 *              ------   ----------  --------
 *                           0       Primary Vertex used or not
 *                          1-10     FTPC East pad rows, increasing away from
 *                                   STAR coord. sys. origin at (0,0,0)
 *                          11-20    FTPC West pad rows, increasing away from
 *                                   STAR coord. sys. origin at (0,0,0)
 *                          21-31    not used; for future use
 *
 *              map[1]   Bit number  Quantity
 *              ------   ----------  --------
 *                          0-26     not used; for future use
 *                         27-29     reserved for future use
 *                          30       Turn around flag, some elements used >1
 *                          31       Format interpreter; (SVT/SSD/TPC=0,FTPC=1)
 *
 *       curvature       In general the track curvature for STAR is redundant
 *                       with Bz and charge*invpt.  However, for No B field
 *                       tracking the curvature is what the track fitter best
 *                       determines; Bz, invpt and charge are not determined.
 *                       For B field on and high pT tracking the curvature is
 *                       again a useful quantity.
 *
 *       covar[15]       Track fitting covariance matrix.  Kalman filter
 *                       code definition adopted here, where:
 *
 *                                                 Units
 *                       ______|________________|____________
 *                       phi*R |  1  2  3  4  5 |  deg*cm
 *                        z0   |  2  6  7  8  9 |    cm
 *                       tanl  |  3  7 10 11 12 |    1         covar(i)
 *                        psi  |  4  8 11 13 14 |   deg
 *                       q/pt  |  5  9 12 14 15 | e*1/(GeV/c)
 *                       -----------------------------------
 *
 *                       and where phi  = atan2(y0,x0)*(180 deg/pi)
 *                                 R    = sqrt(x0*x0 + y0*y0)
 *                                 q/pt = icharge*invpt; (This is what the 
 *                                        radius of curvature actually
 *                                        determines)
 *
 *       chisq[2]        chi-square per degree of freedom where the
 *                       deg of freedom = (# pts used - # track params fit).
 *                       This may be the chi-square for the x-y circle fit
 *                       and the path-z linear fit.  Or this may be the full
 *                       3D fit chi-square and the probability of chi-square. 
 */

 struct dst_track  {
  short      id;               /* Primary key (see comments)             */
  short      iflag;            /* bitmask quality info. (see comments)   */
  octet      det_id;           /* Detector id information                */
  short      method;           /* Track finding/fitting method, packed   */
  octet      pid;              /* Geant particle ID for assumed mass     */
  short      n_point;          /* number of points assigned to track,    */
                               /* SVT, TPC, FTPC component #s are packed */
  short      n_max_point;      /* maximum number of points possible,     */
                               /* SVT, TPC, FTPC component #s are packed */
  short      n_fit_point;      /* number of points used in fit,          */
                               /* SVT, TPC, FTPC component #s are packed */
  short      icharge;          /* Particle charge in units of |e|        */
  long       id_start_vertex;  /* Packed variable for primary vertex     */
                               /* final fit and primary track candidates */
  unsigned long map[2];        /* Packed track/detector occupancy map and*/
                               /* extrap. info. (see preceeding comments)*/
  float      x0;               /* x-coord. at start (cm)                 */
  float      y0;               /* y-coord. at start (cm)                 */
  float      z0;               /* z-coord. at start (cm)                 */
  float      psi;              /* azimuthal angle of pT vector (deg)     */
  float      tanl;             /* tan(dip) =pz/pt at start               */
  float      invpt;            /* 1/pt at start (GeV/c)^(-1)             */
  float      curvature;        /* Track curvature (1/cm)                 */
  float      covar[15];        /* full covariance matrix                 */
  float      chisq[2];         /* Chi-square per degree of freedom       */
  float      x_first[3];       /* coord. of first measured point (cm)    */
  float      x_last[3];        /* coord. of last measured point (cm)     */
  float      length;           /* Path length of particle trajectory     */
                               /* from first to last point (cm)          */
  float      impact;           /* impact parameter based on 3D DCA from  */
                               /* primary vertex (cm)                    */
 } ;
/*  Last mod. for dst_track:   $Date: 1999/08/05 15:23:10 $ */



dst_dedx:

The only changes here were to reduce the word sizes from `long' to `short.' When alternate tracking algorithms (e.g. 3D helix, Kalman, etc.) result in different assignments of space points to tracks, additional instances of this table can be filled which will accompany the additional track tables. Another change to this table was to rename the flag variable from 'iflag' to 'method' which will be used to differentiate among the various dE/dx reduction techniques.

/*  dst_dedx.idl                   */
/*  Table:  dst_dedx               */

/*  This table contains event reconstruction information about the
 *  dE/dx for charged particle trajectories (tracks) listed in the
 *  dst_track table(s).  It is filled with information for one event
 *  with one track/detector segment and/or one dE/dx averaging method entry 
 *  per table row.  It also includes the number of space points used.
 *  The following cases can be accommodated:
 *
 *    (1)  Separate contributions from SVT, SSD, FTPC and/or TPC space 
 *         points to an individual track-
 *         The separate dE/dx values are listed on separate rows which refer
 *         to the same track via 'id_track' and which are distinguished by
 *         the value of 'det_id'.
 *    (2)  Separate averages for TPC inner and outer sector hits -
 *         This is handled with 2 rows, same id_track, same det_id, but
 *         different values for 'method' (see packing algorithm below).
 *    (3)  Different dE/dx averaging procedures (e.g. truncated mean, 
 *         ensemble average, most probable value, Landau fit, etc.) for
 *         some or all tracks-
 *         This can be handled by filling additional rows and distinguishing
 *         the averaging procedures with the value of 'method'.
 *    (4)  Additional track tables based on alternate track finding/fitting
 *         algorithms (e.g. 3D helix, analytic E-loss, Kalman, etc.)-
 *         For additional space point-track assignments additional instances
 *         of the dst_dedx table can be filled.
 *
 *  The rows in dst_dedx refer to the track table instance corresponding to
 *  the fitted space points from the tracking detectors; i.e. dst_dedx does
 *  not refer to a track table instance in which the primary vertex was
 *  included in the fitting.
 *
 *  Packing algorithm for variable 'method' (this is for illustrative
 *  purposes only.  This must be fixed by the STAR Spectra PWG):
 *
 *       method = 100*{0 if no TPC points included in segment, OR
 *                     0 if both TPC inner and outer sector points included, OR
 *                     1 if only TPC inner sector points included, OR
 *                     2 if only TPC outer sector points included}
 *                + {1 if standard truncated mean is used, OR
 *                   2 if ensemble average mean is used, OR
 *                   3 if most probable value is used, OR
 *                   4 if Landau fit is used, OR
 *                     etc.....}
 *       
 *       Definition of variable dedx[2] for each method:
 *            (This must be fixed by the STAR Spectra PWG)
 *
 */

 struct dst_dedx   {
  short  id_track;   /* Foreign key to dst_track                         */
  short  det_id;     /* Det ID-SVT,TPC,FTPC, use StDetectorDefinitions.h */
  short  method;     /* dE/dx calculation method (see preceeding comm.)  */
  short  ndedx;      /* number of points used in dE/dx calcu.            */
  float  dedx[2];    /* dE/dx summary info; depends on method (see above)*/
 } ;
/*  Last mod. for dst_dedx:   $Date: 1999/08/05 16:51:26 $ */



dst_vertex:

When alternate tracking algorithms (e.g. 3D helix, Kalman, etc.) result in different assignments of space points to tracks, additional instances of this table can be filled. Or, additional rows can be added to the same instance with an additional, unique range of primary key (id) values.


/*  dst_vertex.idl           */
/*   Table: dst_vertex       */

/*  This table contains event reconstruction information about the
 *  various candidate vertices, including the primary vertex, V0,
 *  cascade, kinks and others.  It is filled with information for one
 *  event with one vertex candidate per table row. 
 *
 *  When alternate tracking algorithms (e.g. 3D helix, Kalman, etc.)
 *  result in different assignments of space points to tracks,
 *  additional instances of this table can be filled.  Or, additional
 *  rows can be added to the same instance with an additional,
 *  unique range of primary key (id) values.
 *
 *  Description of selected variables:
 *  ----------------------------------
 *       n_daughters     For the primary vertex this counts only tracks
 *                       from dst_track with SVT, and/or SSD, and/or TPC
 *                       segments (i.e. no FTPC tracks) that were used
 *                       in the fit.  The obvious values for the other
 *                       vertex types are used as expected.
 *
 *       iflag           For primary vertex this indicates the fitting
 *                       iteration and error reporting as follows (see
 *                       documentation for module evr_am.F):
 *                          = -3 for initial seed value
 *                          = -2 for first iteration
 *                          = -1 for second iteration
 *                          = 1  for third, final iteration
 *                          = -4,-5 for determinant = 0 errors in fitter
 *                       (Values for V0, cascade, kinks to be determined).
 * 
 *                         
 *       det_id          Indicates which detector(s) contributed space
 *                       points to the parent/daughter tracks using a packing
 *                       algorithm and the detector ID definitions in
 *                       StDetectorDefinitions.h
 *
 *                       Vertex Type      Meaning of 'det_id'
 *                       -----------      -------------------
 *                       Primary     Comprehensive list of detectors
 *                                   (only among SVT, SSD and TPC) which
 *                                   contributed space points to all
 *                                   tracks initially selected for
 *                                   primary vertex finding using
 *                                   StDetectorDefinitions.h
 *                       V0          100*{value of det_id for (+) daugh. trk}
 *                                   +   {value of det_id for (-) daugh. trk}
 *                       Cascade     100*{V0 det_id value as above}
 *                                   + {value of det_id for batchelor trk}
 *                       Kink        100*{value of det_id for parent trk}
 *                                   +   {value of det_id for daughter track}
 *                                             
 *
 *       covar[6]        Vertex fitting covariance matrix where:
 *                       ______|___________
 *                          x  |  1  2  4     
 *                          y  |  2  3  5       covar(i)
 *                          z  |  4  5  6    
 */

 struct dst_vertex  {
  short     vtx_id;        /* vertex type ID, use StVertexDefinitions.h    */
  short     n_daughters;   /* number of charged daughter tracks (see above)*/
  long      id;            /* Primary key                                  */
  long      iflag;         /* bitmask of e.g. quality information, content */
                           /* varies depending on vertex type (see above)  */
  long      det_id;        /* Packed daughter track info (see above)       */
  long      id_aux_ent;    /* Foreign key into auxiliary vertex table(s)   */
  float     x;             /* vertex coordinates in                        */
  float     y;             /*   STAR global                                */
  float     z;             /*   coordinate system in (cm)                  */
  float     covar[6];      /* vertex position error covariance matrix      */
  float     chisq[2];      /* Chi-square per degree of freedom and probab. */
                           /* of chisq P(chi^2,ndf) of vertex fit          */
 } ;
/*  Last mod. for dst_vertex:   $Date: 1999/08/05 17:37:58 $ */



dst_rch_pixel:

This is a new DST table to hold ADC data from the STAR RICH detector.

/*  dst_rch_pixel.idl         */
/*  Table: dst_rch_pixel      */

/*  This table contains the ADC values for the pads hit in the RICH detector;
 *  it is filled with one table row per hit for each event.  The module and 
 *  channel numbers in the RICH detector are packed into the
 *  'pad' variable via the algorithm:
 *
 *       'pad' = 2^10*module + channel
 */

 struct dst_rch_pixel  {
  short pad;   /* Packed module and channel numbers (see above)  */
  short adc;   /* ADC value for the hit                          */
 } ;
/*  Last mod. for dst_pixel::   $Date: 1999/08/05 17:51:18 $ */



Trigger Level 3 DST Tables

The Level 3 trigger group has developed 3 summary tables for the offline DST. In addition they will use the dst_point and dst_track tables defined previously in this document for their Level 3 cluster finder and tracking software output.



dst_l3_run_summary:

/*  dst_l3_run_summary.idl    */
/*  Table: dst_l3_run_summary */

/*  This table contains Level 3 run information       */

struct dst_l3_run_summary {
    long id_algorithm; /* id of the algorithm used in global l3 */
    long id_hardware;  /* id of the hardware configuration */
 };                             


dst_gl3_event_summary:

/*  dst_gl3_event_summary.idl      */
/*  Table: dst_gl3_event_summary   */

/*  This table contains global event Level 3 information    */

struct   dst_gl3_event_summary{
   long    nHits ;         /* total number of clusters in the event */
   long    nTracks;        /* total number of tracks found by the tracker */
   long    nPrimaryTracks; /* number of primary tracks found by the tracker */
   short   triggermask;    /* the result of the trigger inquiry */
  };                         


dst_sl3_event_summary:

/*  dst_sl3_event_summary.idl         */
/*  Table: dst_sl3_event_summary.idl  */

/*  This table contains TPC sector specific Level 3 information per event */

struct  dst_sl3_event_summary{
   short processorId ;   /* processor where the sector was reconstructed */
   float vertex[3];      /* xyz coordinates of the vertex used for track */
                         /* finding                                      */
   short id_param;       /* the parameter set used in the tracker */
   long  nHits ;         /* number of clusters in the sector */
   long  nTracks;        /* number of tracks found by the tracker */
   long  nPrimaryTracks ;/* number of primary tracks found by the tracker */
   float cpuTime ;       /* cpu Time used by the tracker  */
   };                                                     



Remaining DST Tables:

All other DST tables not included here were not touched. These include:

Note that the Trigger group is actively working on their DST tables. Finally, the dst_track_aux table can be deleted in any new software releases. The full track covariance matrix is now stored in the track table; the residual averages are not necessary to save. Also the dst_monitor_hard table can be deleted.

Please send comments to Lanny Ray, ray@physics.utexas.edu.



 
next up previous
Next: About this document ...
Lanny Ray
1999-06-24