ssdChipCorrect table

1) new table format should be in StDb/idl
2) compile StDb
3) a new entry of the table should be placed in the local StarDb/Calibrations/ssd
4) the table is included offline (in any maker) with :

#include "tables/St_ssdChipCorrect_Table.h" 

5) the size of the ssdChipCorrect is 20*16*6*2 = 3840 rows
I have changed the format of the table to include 'side' field

/*ssdChipCorrect.idl
*
* Table: ssdChipCorrect
*
* Describtion: ssd chip correction factor.once per run
*/
struct ssdChipCorrect
{
octet nLadder;             //0 to 19
octet nWafer;              //0 to 15
octet nChip;               //0 to 96 
octet side;                //0,1
unsigned short nCorrect;   //375 to 1024
};


As an exmaple, the first 6 rows coded in the table  (for the 6 chips side P of ladder 1 wafer 1) look like :

TDataSet *CreateTable() { 
//
if (!gROOT->GetClass("St_ssdChipCorrect")) return 0;
ssdChipCorrect_st row[3840]={
{0,0,0,0,400},
{0,0,1,0,400},
{0,0,2,0,400},
{0,0,3,0,400},
{0,0,4,0,400},
{0,0,5,0,400}

6) the table is retrieved as shown below :

mCorrect          = (St_ssdChipCorrect*)GetDataBase("Calibrations/ssd/ssdChipCorrect"); 
if(mCorrect){ 
ssdChipCorrect_st *g  = mCorrect->GetTable() ;
Int_t size = mCorrect->GetNRows();
LOG_INFO<<Form("Size of gain table = %d",mCorrect->GetNRows())<<endm;
for(Int_t i=0; i<size;i++){
LOG_DEBUG<<Form(" Print entry %d : ladder=%d chip=%d side=%d correction=%f",i,g[i].nLadder,,g[i].nWafer,g[i].nChip,g[i].side,g[i].nCorrect)<<endm;
 }
}

7) there is a macro at :

/star/institutions/ksu/bouchet/4Long/macros/writeCalibFile.C

that writes a table entry with only default value of noise = 400

8) The table is read in :

StRoot/StSsdPointMaker::FillChipNoiseTable()

The part of the offline code looks for any table ssdChipCorrect in the local directory StarDb/Calibrations/ssd

For now I just read all the entries but we have to implement how to use the values later in the offline reconstruction

Code location : /star/institutions/ksu/bouchet/4Long

StRoot has :

  • StSsdPointMaker slightly modified to include StSstDbMaker
  • StBFChain modified with option sstCalDb (which calls sstDb) and sst_daq (to use StSstDaqMaker)
  • StSstDaqMaker is taken from /offline/hft/StRoot/StSstDaqMaker
StarDb/Calibrations/ssd has a default table : ssdChipCorrection.20140501.000001.C

There are also 2 scripts to run the BFC chain for the SSD reconstruction only (no tracking, PXL, etc ...)