void write_pstOnIds_ideal()
{
    gSystem->Setenv("DB_ACCESS_MODE", "write");
    // Load all required libraries
    gROOT->Macro("LoadLogger.C");
    gSystem->Load("St_base.so");
    gSystem->Load("libStDb_Tables.so");
    gSystem->Load("StDbLib.so");
    
    // Initialize db manager
    StDbManager* mgr = StDbManager::Instance();
    StDbConfigNode* node = mgr->initConfig("Geometry_ist");
    StDbTable* dbtable = node->addDbTable("pstOnIds");
    TString storeTime = "2013-12-15 00:00:00"; // beginTime timestamp in MySQL format: "YYYY-MM-DD HH:mm:ss"
    mgr->setStoreTime(storeTime.Data());
    
    // Create your c-struct
    Survey_st table = {1, 1,0,0, 0,1,0, 0,0,1, 0,0,0,.0001,.0001,.0001,.0001,.0001,.0001,"ideal geometry"};
    
    // Store data to the StDbTable
    dbtable->SetTable((char*)&table, 1);
    
    // uncomment next line to set "sim" flavor. "ofl" flavor is set by default, no need to set it.
    dbtable->setFlavor("sim");
    
    // Store table to database
    mgr->storeDbTable(dbtable);
}
示例#2
0
void storetofGeomAlign()
//int main(int argc, char *argv[])

{

// year8
//  const Int_t NTRAY = 5;
// year9
  const Int_t NTRAY = 94;
  const Int_t NVPDTRAY = 2;
  const Int_t NMAX = 120;

  //-- load dBase and Table definition libraries
  gSystem->Load("St_base");
  gSystem->Load("StChain");
  gSystem->Load("StUtilities");
  gSystem->Load("St_Tables.so");

  gSystem->Load("StDbLib.so");
  gSystem->Load("libStDb_Tables.so");

  //-- get the singleton manager
  StDbManager* dbManager = StDbManager::Instance();

  //-- connect to the db & get an empty container
  StDbConfigNode* configNode = dbManager->initConfig("Calibrations_tof");

  //----------------------------------------
  TString ZStoreTime = "2007-11-01 00:00:00";
//  TString ZStoreTime = "2008-11-01 00:00:00";

  //-- add table to the container with descriptor given by Database
  StDbTable* tofGeomAlign = configNode->addDbTable("tofGeomAlign");

  //-- fill structures & store times
  tofGeomAlign_st *tofAlign = new tofGeomAlign_st[NMAX];

// year8
  for(int i=0;i<NMAX;i++) {
    int trayId = i+1;
    tofAlign[i].x0 = 0.;
    tofAlign[i].phi0 = 0.;
    tofAlign[i].z0 = 0.;
    tofAlign[i].angle0 = 0.;
    if(trayId<76||trayId>80) continue;
    tofAlign[i].z0 = -0.5;
  }

// year9

  tofGeomAlign->SetTable((char*)tofAlign, NMAX);
  //- set store time
  dbManager->setStoreTime(ZStoreTime.Data());
  //- store table in dBase
  cout<<" here "<<endl;
  dbManager->storeDbTable(tofGeomAlign);
  cout<<"uploaded"<<endl;
      //    return 0;
}
示例#3
0
void insertDriftVelocity(char* unixTime = 0, Bool_t write = kFALSE)
{
  // DB-specific libs
  gSystem->Load("libStDb_Tables.so");
  gSystem->Load("StDbLib");
  gSystem->Load("StDbBroker"); 
      
  ifstream file("driftVeloc_01_23_04.txt");
  ofstream fileout("outTest.txt");

  float veloc, time, sum;
  int index, i=0;
  // define IDs
  int* rowIDs=new int[NUMBER_OF_HYBRIDS];
  // define new table to be stored
  svtDriftVelAvg_st *driftVelocity = new svtDriftVelAvg_st[NUMBER_OF_HYBRIDS];    

  while (kTRUE) {

    // read drift velocity file
    file >> index >> veloc >> time;

    if (file.eof()) break;

    fileout  << index << "  " <<  veloc << "  " <<  time << endl;
 
    if ((veloc > MEAN_VELOC*1.50) || (veloc < MEAN_VELOC*0.50)) {
      cout << "Bad drift velocity : " << veloc << endl;
      veloc = MEAN_VELOC;
    }
    else {
      sum += veloc;
      i++;
    }
    rowIDs[index]=index;
    driftVelocity[index].averageDriftVelocity = veloc;
   
  }

  /*
  for (int i=0;i<432;i++) {
    rowIDs[i]=i;
    driftVelocity[i].averageDriftVelocity = 675000;
  }
  */

  cout << "Mean drift velocity : " << sum/i << endl;

  if (write) {
    StDbManager* mgr=StDbManager::Instance();
    StDbConfigNode* svtCalibNode = mgr->initConfig(dbCalibrations,dbSvt);           StDbTable* svtCalibTable = svtCalibNode->addDbTable("svtDriftVelAvg");    
    svtCalibTable->SetTable((char*)driftVelocity,NUMBER_OF_HYBRIDS,rowIDs);
    mgr->setStoreTime(unixTime);
    cout<<" Will attempt store with timestamp="<<mgr->getDateStoreTime()<<endl;    mgr->storeDbTable(svtCalibTable);
    delete [] driftVelocity;
  }

}
示例#4
0
write_fgtSimuParams()
{
    gSystem->Setenv("DB_ACCESS_MODE", "write"); //jb add
    // Load all required libraries
    gROOT->Macro("LoadLogger.C");
    gSystem->Load("St_base.so");
    gSystem->Load("libStDb_Tables.so");
    gSystem->Load("StDbLib.so");

    // Initialize db manager
    StDbManager* mgr = StDbManager::Instance();
    StDbConfigNode* node = mgr->initConfig("Calibrations_fgt");
    StDbTable* dbtable = node->addDbTable("fgtSimuParams");
    TString storeTime = "2011-11-11 11:11:12"; // beginTime timestamp in MySQL format: "YYYY-MM-DD HH:mm:ss"
    mgr->setStoreTime(storeTime.Data());

    // Create your c-struct
    fgtSimuParams_st table;
    memset(table.param,0, sizeof(table.param));

    // Fill structure with data

    /* description of the parameters */
    strncpy(table.comment," reasonable fgt-slow-simu parametrization, ver=102, by Jan",192);

    table.param[0] =102;// fgt-simu-setup version #

    // analog signal propagation
    table.param[1] = 9992; // meLossTab[9993-10000]=5.0E+03 to 6.0E+06 (too high) are cut off. They are replaced by meLossTab[9992]=4.78E+03 in simulation.
    table.param[2] = 40. ; //( ions/cm) # of primary pairs produced per cm of path
    table.param[3] = 80.e-9; //  (seconds) track ignored by FGT slow sim
    table.param[4] = 0.035 ; // cm, for 2D gauss smearing, default=0.035 for FNAL
    table.param[5] = 0.005; // (GeV) track ignored by FGT slow sim
    table.param[6] = 0.017; //  (cm per 1 cm of path)
    table.param[7] = 6; // # of bins in 2D distribution to store 2D gauss
    table.param[8] = -1008; // not used
    table.param[9] = -1009; // not used

    // digitalization
    table.param[10] = 5.0;  //  drop strips below it
    table.param[11] = 1000; // in a.u. used in simu
    table.param[12] = 2.0;  // a factor making simulated ADCs comparable to 2012 pp510 data
    table.param[13] = 0.45; // divide charge between P/R plane

    table.param[14] =  -1014; // not used
    table.param[15] =  -1015; // not used


    // Store data to the StDbTable
    dbtable->SetTable((char*)&table, 1);

    // uncomment next line to set "sim" flavor. "ofl" flavor is set by default, no need to set it.
    // dbtable->setFlavor("sim");

    // Store table to database
    mgr->storeDbTable(dbtable);
}
void write_ladderOnIst_survey()
{
    // Load all required libraries
    gROOT->Macro("LoadLogger.C");
    gSystem->Load("St_base.so");
    gSystem->Load("libStDb_Tables.so");
    gSystem->Load("StDbLib.so");
    
    // Initialize db manager
    StDbManager* mgr = StDbManager::Instance();
    StDbConfigNode* node = mgr->initConfig("Geometry_ist");
    StDbTable* dbtable = node->addDbTable("istLadderOnIst");
    TString storeTime = "2013-06-03 00:00:01"; // beginTime timestamp in MySQL format: "YYYY-MM-DD HH:mm:ss"
    mgr->setStoreTime(storeTime.Data());
    
    // Create your c-struct
    const Int_t MAX_DB_INDEX = 24;
    Survey_st table[MAX_DB_INDEX] = {
{    1,  -0.9386546,-0.3448588, 0.0000009,   0.3448588,-0.9386545,-0.0003118,   0.0001084,-0.0002923, 1.0000000,     1.83780,  13.83121,  -0.01799,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{    2,  -0.8170987,-0.5764977,-0.0001980,   0.5764978,-0.8170987,-0.0003131,   0.0000188,-0.0003700, 0.9999999,     5.36082,  12.88690,  -0.01596,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{    3,  -0.6372711,-0.7706397,-0.0002151,   0.7706397,-0.6372710,-0.0002916,   0.0000877,-0.0003515, 0.9999999,     8.54139,  11.07079,  -0.01330,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{    4,  -0.4170311,-0.9088921,-0.0004269,   0.9088922,-0.4170310,-0.0002802,   0.0000767,-0.0005048, 0.9999999,    11.11433,   8.48280,  -0.02203,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{    5,  -0.1689406,-0.9856262,-0.0002718,   0.9856262,-0.1689406,-0.0001018,   0.0000544,-0.0002851, 1.0000000,    12.91422,   5.35331,  -0.01499,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{    6,   0.0914116,-0.9958132,-0.0000459,   0.9958132, 0.0914116,-0.0001400,   0.0001436,-0.0000329, 1.0000000,    13.86773,   1.78726,  -0.03505,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{    7,   0.3452967,-0.9384935,-0.0003753,   0.9384936, 0.3452967, 0.0000412,   0.0000909,-0.0003665, 0.9999999,    13.89027,  -1.82003,   0.01606,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{    8,   0.5746139,-0.8184245,-0.0003054,   0.8184246, 0.5746140,-0.0000066,   0.0001809,-0.0002462, 1.0000000,    12.92665,  -5.37841,  -0.01333,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{    9,   0.7675071,-0.6410404,-0.0002264,   0.6410404, 0.7675071, 0.0002353,   0.0000229,-0.0003257, 0.9999999,    11.10859,  -8.56426,  -0.01598,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   10,   0.9063875,-0.4224469,-0.0005581,   0.4224470, 0.9063876, 0.0001256,   0.0004528,-0.0003496, 0.9999998,     8.55075, -11.14552,  -0.00835,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   11,   0.9859601,-0.1669812,-0.0001645,   0.1669812, 0.9859601,-0.0000114,   0.0001641,-0.0000162, 1.0000000,     5.37389, -12.96024,  -0.02056,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   12,   0.9957131, 0.0924956,-0.0000016,  -0.0924956, 0.9957131, 0.0001454,   0.0000151,-0.0001447, 1.0000000,     1.83205, -13.89920,  -0.02511,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   13,   0.9385940, 0.3450235, 0.0000198,  -0.3450235, 0.9385940, 0.0000047,  -0.0000170,-0.0000112, 1.0000000,    -1.85094, -13.90029,  -0.04640,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   14,   0.8180840, 0.5750986, 0.0002226,  -0.5750986, 0.8180841,-0.0000189,  -0.0001929,-0.0001125, 1.0000000,    -5.34669, -12.95588,  -0.01968,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   15,   0.6409497, 0.7675829, 0.0001197,  -0.7675829, 0.6409497, 0.0000099,  -0.0000692,-0.0000982, 1.0000000,    -8.49320, -11.14405,  -0.03080,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   16,   0.4206865, 0.9072061, 0.0001822,  -0.9072060, 0.4206866,-0.0002080,  -0.0002653,-0.0000777, 1.0000000,   -11.11106,  -8.54055,  -0.02871,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   17,   0.1731180, 0.9849011, 0.0000271,  -0.9849010, 0.1731180,-0.0003385,  -0.0003381, 0.0000319, 0.9999999,   -12.92415,  -5.39332,  -0.02656,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   18,  -0.0897271, 0.9959664, 0.0001105,  -0.9959664,-0.0897271,-0.0002499,  -0.0002389,-0.0001325, 1.0000000,   -13.89895,  -1.84630,  -0.03826,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   19,  -0.3455522, 0.9383995, 0.0001560,  -0.9383995,-0.3455520,-0.0004925,  -0.0004083,-0.0003166, 0.9999999,   -13.87018,   1.79885,  -0.01763,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   20,  -0.5773508, 0.8164962, 0.0000804,  -0.8164961,-0.5773508,-0.0003765,  -0.0002610,-0.0002831, 0.9999999,   -12.96108,   5.28454,  -0.02804,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   21,  -0.7690576, 0.6391795,-0.0000004,  -0.6391795,-0.7690575,-0.0004490,  -0.0002873,-0.0003451, 0.9999999,   -11.10397,   8.50236,  -0.04087,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   22,  -0.9079711, 0.4190329,-0.0001319,  -0.4190328,-0.9079710,-0.0003280,  -0.0002572,-0.0002425, 0.9999999,    -8.56630,  11.06194,  -0.02271,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   23,  -0.9855546, 0.1693579, 0.0001766,  -0.1693579,-0.9855546,-0.0001757,   0.0001443,-0.0002031, 1.0000000,    -5.36303,  12.89607,  -0.01069,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000},
{   24,  -0.9958436,-0.0910796,-0.0000773,   0.0910796,-0.9958436,-0.0002430,  -0.0000549,-0.0002491, 1.0000000,    -1.81861,  13.85204,  -0.01834,     0.10000,   0.10000,   0.10000,   0.10000,   0.10000,   0.10000}
    };
    
    // Store data to the StDbTable
    dbtable->SetTable((char*)&table, MAX_DB_INDEX);
    
    // uncomment next line to set "sim" flavor. "ofl" flavor is set by default, no need to set it.
    dbtable->setFlavor("ofl");
    
    // Store table to database
    mgr->storeDbTable(dbtable);
}
示例#6
0
int 
printTree(FILE *out, StDbConfigNode *node , int level=0)
{
  static int items=0; // to count if we have found anything
  if(node==NULL) return items;
  for(int i=0;i<level;i++) fprintf(out,"\t");
  // level 0 == database name, so skip it
  if(level>0) fprintf(out,"%s/\n",node->printName());  
  if( node->hasData() ) {
    StDbTableIter *ti = node->getStDbTableIter();
    StDbTable     *t  = NULL;
    while( ( t = ti->next() ) ) { 
      for(int i=0;i<=level;i++) fprintf(out,"\t");
      fprintf(out,"%s",t->printName());
      fprintf(out,":%s",t->getCstructName()); 
      fprintf(out,"\n");
      items++;
    }
  }
  (void) printTree(out,node->getFirstChildNode(),level+1);
  (void) printTree(out,node->getNextNode()      ,level  );
  return items;
}
示例#7
0
void fms_db_ChannelGeometry(char* opt="readdb", int year = 15) {

  TString option(opt);
  std::cout << "Opt =" << opt << "\n";
  std::cout << "readdb = " << option.Contains("readdb")    << "\n";
  std::cout << "writedb = " << option.Contains("writedb")   << "\n";
  std::cout << "\n";  

  TString storeTime; // storetime is begin time for validity range for WRITING DB
  int date,time;     // time for READING DB
  std::cout << "year = " << year << "\n";
  if(year==8){
    storeTime="2007-11-09 00:00:02";
    date = 20080301;
    time = 0;
  }else if(year==9){
    storeTime="2008-11-09 00:00:01";
    date = 20090301;
    time = 0;
  }else if(year=15){
    storeTime="2014-12-20 00:00:00";
    date = 20141220;
//    date = 20140222;
    time = 0;
  }
  else{
    std::cout << "Please specify year\n";
    exit;
  }
  std::cout << "storetime =" << storeTime << "\n";
  std::cout << "date,time =" << date <<" "<< time << "\n";
  
  gROOT->Macro("LoadLogger.C");
  gSystem->Load("St_base.so");
  gSystem->Load("libStDb_Tables.so");
  gSystem->Load("StDbLib.so");

  // max index dimensions
  const Int_t MAXINDEX = 12;
  int n=0;

  // structure to fill up
  fmsChannelGeometry_st g[MAXINDEX];
  memset(g,0,sizeof(g));

  gSystem->Load("StChain");
  gSystem->Load("StBFChain");
  gSystem->Load("StUtilities");
  gSystem->Load("StIOMaker");
  gSystem->Load("StarClassLibrary");
  gSystem->Load("St_Tables");
  gSystem->Load("StDbLib");
  gSystem->Load("StDbBroker");
  gSystem->Load("St_db_Maker");
  
  St_db_Maker *dbMk=new St_db_Maker("db", "MySQL:StarDb", "$STAR/StarDb");
  dbMk->SetDebug();
  dbMk->SetDateTime(date,time);
  dbMk->SetFlavor("ofl"); // for offline calibrations/mapping
  // dbMk->SetFlavor("simu"); // for simulations
  dbMk->Init();
  dbMk->Make();
  
  // this is done inside ::Make method
  TDataSet *DB = 0;
  // "dbMk->" will NOT be needed. 
  //  if done inside your FmsDbMaker. Simply use DB = GetInputDb("Geometry/fms")
  DB = dbMk->GetInputDB("Geometry/fms/");
  if (!DB) { std::cout << "ERROR: no db maker?" << std::endl; }
  
  if(option.Contains("readdb")){
    gSystem->Unsetenv("DB_ACCESS_MODE");
    gSystem->Unsetenv("DB_SERVER_LOCAL_CONFIG");
    St_fmsChannelGeometry *db = 0;
    db = (St_fmsChannelGeometry*) DB->Find("fmsChannelGeometry");
    // fetch data and place it to appropriate structure
    if (db) {
      std::cout << "Reading fmsMap table\n";
      fmsChannelGeometry_st *table = db->GetTable();
      n = db->GetNRows();
      memcpy(g,table,sizeof(fmsChannelGeometry_st)*n);
    } else {
      std::cout << "WARNING: No data in fmsChannelGeometry table (wrong timestamp?). Nothing to return, then.\n";
    }
  }
 
 if(option.Contains("writedb")) {
    gSystem->Setenv("DB_ACCESS_MODE","write");
    cout << "DB_ACCESS_MODE="<<gSystem->Getenv("DB_ACCESS_MODE")<<endl;
    StDbManager* mgr = StDbManager::Instance();
    StDbConfigNode* node = mgr->initConfig("Geometry_fms");
    StDbTable* wtable = node->addDbTable("fmsChannelGeometry");	  
    mgr->setStoreTime(storeTime.Data());

    // input data
    /* Detector Name   detectorId  ew  ns  type   nX   nY  */
    /* FPD-North            0       0   0   0      7    7  */
    /* FPD-South            1       0   1   0      7    7  */
    /* FPD-North-Pres       2       0   0   1      7    1  */
    /* FPD-South-Pres       3       0   1   1      7    1  */
    /* FPD-North-SMDV       4       0   0   2     48    1  */
    /* FPD-South-SMDV       5       0   1   2     48    1  */
    /* FPD-North-SMDH       6       0   0   3      1   48  */
    /* FPD-South-SMDH       7       0   1   3      1   48  */
    /* FMS-North-Large      8       1   0   4     17   34  */
    /* FMS-South-Large      9       1   1   4     17   34  */
    /* FMS-North-Small     10       1   0   0     12   24  */
    /* FMS-South-Small     11       1   1   0     12   24  */
    /* FHC-North           12       1   0   5      9   12  */
    /* FHC-South           13       1   1   5      9   12  */

    int n=0;
    g[n].detectorId = 0; g[n].type=0; g[n].ew=0; g[n].ns=0; g[n].nX= 7; g[n].nY= 7;    n++;
    g[n].detectorId = 1; g[n].type=0; g[n].ew=0; g[n].ns=1; g[n].nX= 7; g[n].nY= 7;    n++;
    g[n].detectorId = 2; g[n].type=1; g[n].ew=0; g[n].ns=0; g[n].nX= 7; g[n].nY= 1;    n++;
    g[n].detectorId = 3; g[n].type=1; g[n].ew=0; g[n].ns=1; g[n].nX= 7; g[n].nY= 1;    n++;
    if(year>=9){								       	   
      g[n].detectorId = 4; g[n].type=2; g[n].ew=0; g[n].ns=0; g[n].nX=48; g[n].nY= 1;  n++;
      g[n].detectorId = 5; g[n].type=2; g[n].ew=0; g[n].ns=1; g[n].nX=48; g[n].nY= 1;  n++;
      g[n].detectorId = 6; g[n].type=3; g[n].ew=0; g[n].ns=0; g[n].nX= 1; g[n].nY=48;  n++;
      g[n].detectorId = 7; g[n].type=3; g[n].ew=0; g[n].ns=1; g[n].nX= 1; g[n].nY=48;  n++;
    }										       	   
    g[n].detectorId = 8; g[n].type=4; g[n].ew=1; g[n].ns=0; g[n].nX=17; g[n].nY=34;    n++;
    g[n].detectorId = 9; g[n].type=4; g[n].ew=1; g[n].ns=1; g[n].nX=17; g[n].nY=34;    n++;
    g[n].detectorId =10; g[n].type=0; g[n].ew=1; g[n].ns=0; g[n].nX=12; g[n].nY=24;    n++;
    g[n].detectorId =11; g[n].type=0; g[n].ew=1; g[n].ns=1; g[n].nX=12; g[n].nY=24;    n++;
    
    // store data in the table
    wtable->SetTable((char*)&g,n);
    // store table in dBase
    mgr->storeDbTable(wtable); 
    gSystem->Unsetenv("DB_ACCESS_MODE");
    std::cout << "Done with database upload \n";
 }
 
 printf("n = %d\n",n);
 printf(" Id Typ  ew  ns  nX  nY\n");
 for(int i=0; i<n; i++){
   printf("%3d %3d %3d %3d %3d %3d\n",g[i].detectorId,g[i].type,g[i].ew,g[i].ns,g[i].nX,g[i].nY);
 }
}
示例#8
0
//---------------------------------------------------------------------
//---------------------------------------------------------------------
//---------------------------------------------------------------------
int 
main(int argc, char *argv[]) 
{
  extern char *optarg;
  int    optInd   = 0;
  char   optChar  = 0;  

  static struct option optLong[] = {
    { "database"   , 1 , 0           , 'D' },
    { "path"       , 1 , 0           , 'p' },
    { "time"       , 1 , 0           , 't' },
    { "expiration" , 1 , 0           , 'x' },
    { "flavor"     , 1 , 0           , 'F' },
    { "file"       , 1 , 0           , 'f' },
    { "get"        , 0 , (int *)&action ,  GetDB  },
    { "read"       , 0 , (int *)&action ,  GetDB  },
    { "set"        , 0 , (int *)&action ,  SetDB  },
    { "write"      , 0 , (int *)&action ,  SetDB  },
    { "tree"       , 0 , (int *)&action ,  PrintTree },
    { "history"    , 0 , (int *)&action ,  PrintHistory },
    { "config"     , 0 , (int *)&action ,  PrintConfig },
    { "comment"    , 1 , 0              , 'c' },
    { "verbose"    , 0 , &verboseMode   , true},
    { "quiet"      , 0 , &verboseMode   , false},
    { "dataonly"   , 0 , &dataOnlyMode  , true},
    { "debug"      , 0 , &debugMode     , true},
    { "help"       , 0 , 0              , 'h' },
    { 0, 0, 0, 0}
  };


  //   cout << indexFromString("05TB01" )  << endl;
  //   cout << indexFromString("P05TB01")  << endl;
  //   cout << indexFromString("05P1" ,kEEmcMaxSect*kEEmcMaxBox)  << endl;
  //   cout << indexFromString("E05TB",kEEmcMaxSect*kEEmcMaxBox)  << endl;
  //   cout << indexFromString("12TB13" )  << endl;
  //   cout << indexFromString("V12TB13")  << endl;
  //   cout << indexFromString("13TG"  ,kEEmcMaxSect*kEEmcMaxBox) << endl;
  //   cout << indexFromString("A13TG" ,kEEmcMaxSect*kEEmcMaxBox) << endl;
  //   exit(0);

  // arguments and init
  argv0 = strrchr(argv[0],'/');
  argv0 = ( argv0 == NULL )  ? argv[0] : ++argv0 ;

  while((optChar = getopt_long(argc,argv,"D:p:t:x:F:f:c:grswTHCdvqh",optLong,&optInd)) != EOF) {
    switch(optChar) {
    case  0  : break;
    case 'D' : dbName      = optarg;       break;
    case 'p' : dbPath      = optarg;       break;
    case 't' : dbTime      = optarg;       break;
    case 'x' : dbExpTime   = optarg;       break;
    case 'F' : dbFlavor    = optarg;       break; 
    case 'f' : dbFile      = optarg;       break; 
    case 'r' : // same as g
    case 'g' : action      = GetDB;        break;
    case 'w' : // same as s
    case 's' : action      = SetDB;        break;
    case 'T' : action      = PrintTree;    break;
    case 'H' : action      = PrintHistory; break;
    case 'C' : action      = PrintConfig;  break;
    case 'c' : dbComment   = optarg;       break;  
    case 'd' : dataOnlyMode= true;         break;
    case 'v' : verboseMode = true;         break;
    case 'q' : quietMode   = true;         break;
    case 'h' : usage(); return(0);         break;
    default  : usage("unknown option");    break;
    };
  }
  if(!dbPath  && action!=PrintConfig ) usage("database path missing");


  // 
  StDbManager    *mgr    = StDbManager::Instance();
  StDbConfigNode *dbNode = NULL;
  StDbTable      *dbTab  = NULL;
  char           *node   = NULL;
  FILE           *file   = NULL;

  mgr->setVerbose(verboseMode);
  mgr->setQuiet(quietMode);

  // sanity check 
  if( ! mgr->findDefaultServer() ) {
    fprintf(stderr,"cannot find the default DB server\n");
    return(-1);
  }

  if(dbFile) { 
    file = fopen(dbFile,(action==SetDB) ? "r" : "w");
    if(!file) { 
      fprintf(stderr,"%s: fopen '%s' failed, %s\n",argv0,dbFile,strerror(errno)); 
      return(-1); 
    }
  } else {
    file = (action==SetDB) ? stdin : stdout;
  }

  switch(action) {
  case PrintTree:
    node   = node=strsep(&dbPath,"/");
    if(node) { 
      dbNode = mgr->initConfig(dbName,node);
      if(dbNode) { 
	if(verboseMode || !quietMode) 
	  fprintf  (file,"DATABASE TREE:\n");
	fprintf  (file,"%s/\n",node);
	if(printTree(file,dbNode)<=0) {
	  fprintf  (stderr,"config %s is empty\n",node);
	}
      }
    }
    return 0;
    break;
  case PrintConfig:
    if(verboseMode || !quietMode) 
     fprintf(file,"DATABASE VERSIONS:\n");
    printConfig(file,mgr);
    return 0;
  default:
    break;
  }


  // parse database path 
  char *preNode="";
  while( (node=strsep(&dbPath,"/")) != NULL ) {
    StDbConfigNode *tn = (dbNode==NULL) ? 
      mgr->initConfig(dbName,node) : dbNode->findConfigNode(node);
    if(!tn) break; // assume the last token is a db table
    dbNode = tn;
    printf("found database node: %s\n",node);
    preNode=node;
  }

  if(!node) usage("invalid path");

  dbTab = dbNode->findTable(node);
  if(!dbTab) { fprintf(stderr,"%s: table %s not found\n",argv0,node); return (-1); }

  dprintf("found table: %s\n",node);

  int nrows=dbTab->GetNRows();
  int ndata=0;
  
  EEmcDbIOBase *dbIO = getDbIO(preNode,node,nrows);
  if(dbIO==NULL) return(-1);

  char keyLine[EEmcDbMaxDbPathLen];
  //char keyFile[EEmcDbMaxKeyLength];
  char keyBase[EEmcDbMaxKeyLength];
  time_t tUnix    =                     getTimeStamp(dbTimeFormat,dbTime);
  time_t tExpUnix = (dbExpTime!=NULL) ? getTimeStamp(dbTimeFormat,dbExpTime) : 0;

  dbTab->setFlavor(dbFlavor);
  switch(action) {
  case PrintHistory:
    printHistory(file,mgr,dbTab,dbIO); 
    return 0; 
    break;
  case SetDB:
    fgets (keyLine,EEmcDbMaxDbPathLen-1,file);
    sprintf(keyBase,EEmcDbKeyFormat,dbNode->printName(),node);
    printf("AAA=%s=\n",keyBase);
    if(strstr(keyLine,keyBase)==0 &&  strcmp(keyLine,keyToEverything) ) {
      fprintf(stderr,"signature mismatch: data file key '%s', required '%s'\n",
	      keyLine,keyBase);
      return (-1);
    }

    dbIO->setComment(dbComment);

    ndata = dbIO->read(file);
    if(ndata<=0) {
      fprintf(stderr,"%s: reading file %s failed\n",argv0,dbFile);
      return(-1);
    }
    if(nrows>1) { 
      dbTab->SetTable(dbIO->getData(),ndata, dbIO->getIndices());
    } else {
      dbTab->SetTable(dbIO->getData(),ndata);
    }
    if(tExpUnix>0) { 
      dbTab->setEndStoreTime(tExpUnix);
      fprintf(stderr,"%s: setting end time %ld\n",argv0,tExpUnix);
    }

    //mgr->setStoreTime(getTimeStamp(dbTimeFormat,dbTime));
    mgr->setStoreTime(tUnix);
    if(! mgr->storeDbTable(dbTab) ) {
      fprintf(stderr,"%s: storing table %s failed\n",argv0,node);
      return(-1);
    }
  
    break;
  case GetDB:
    mgr  ->setRequestTime(tUnix);
    if( ! mgr->fetchDbTable(dbTab) ) {
      fprintf(stderr,"%s: problem with fetch for time stamp %ld / %s",argv0,tUnix,ctime(&tUnix));
      fprintf(stderr," There is no record for this table over the time period :\n");
      fprintf(stderr," BeginDate     = %s\t",dbTab->getBeginDateTime());
      fprintf(stderr,"   EndDate     = %s\n",dbTab->getEndDateTime());
      fprintf(stderr," BeginTimeUnix = %d\t",dbTab->getBeginTime());
      fprintf(stderr,"   EndTimeUnix = %d\n",dbTab->getEndTime());
      return(-1);
    }
    if(! dbTab->GetTable() ) {
      fprintf(stderr,"no data found in table %s\n",node);
      return(-1);
    } 
    dbIO->setData(dbTab->GetTable());

    if(verboseMode || !quietMode)
    fprintf(stderr,"BNL Time Stamp Range  from: %s   to:    %s \n",
	    fmtSqlTime(dbTab->getBeginDateTime()),fmtSqlTime(dbTab->getEndDateTime()));
    if(!dataOnlyMode) {
      fprintf(file,EEmcDbKeyFormat,dbNode->printName(),node);
      fprintf(file,"\n");
    }
    ndata     = dbIO->write(file);
    dbComment = dbIO->getComment();
    if(verboseMode || !quietMode)
      fprintf(stderr,"COMMENT: %s\n",dbComment);
    break;
  default:
    break;
  } 

  if(ndata>0) {  
    dprintf("database access successful %d\n",ndata);
  } else { 
    fprintf(stderr,"%s: table %s access failed\n",argv0,node); 
  }
    

  fclose(file);
  return 0; 
} 
示例#9
0
void fpsGain_db(char* opt="", char* year="15sim") {
  TString option(opt), yr(year);  
  TString storeTime; // storetime is begin time for validity range for WRITING DB
  int date,time;     // time for READING DB
  std::cout << "year = " << year << "\n";
  if(yr.Contains("15ofl")){
    storeTime="2014-12-20 00:00:01";
    date = 20141225; time = 0;
  }else if(yr.Contains("15sim")){
    storeTime="2014-12-10 00:00:02";
    date = 20141215; time = 0;
  }else{
    std::cout << "Please specify valid year tag\n"; exit;
  }
  std::cout << "Opt =" << opt << "\n";
  std::cout << "write = " << option.Contains("writedb")   << "\n";
  std::cout << "storetime =" << storeTime << "\n";
  std::cout << "date,time =" << date <<" "<< time << "\n";
  
  gROOT->Macro("loadlib.C");
  
  const Int_t MAX_DB_INDEX = 252;
  fpsGain_st table[MAX_DB_INDEX];

  if(option.Contains("writedb")) {
    gSystem->Setenv("DB_ACCESS_MODE","write");
    StDbManager* mgr = StDbManager::Instance();
    StDbConfigNode* node = mgr->initConfig("Calibrations_fps");
    StDbTable* dbtable = node->addDbTable("fpsGain");
    mgr->setStoreTime(storeTime.Data());
    
    int id=0;
    for (Int_t q = 1; q <= 4; q++) {
      for (Int_t l = 1; l <= 3; l++) {
	for (Int_t s = 1; s <= 21; s++) {
	  table[id].slatid = id; 
	  int flag=0;
	  if(q==2 || q==4){
	    if(s>=20) flag=1;
	  }	    
	  float mip=100.0;
	  if(l==3) mip=50.0;
	  if(flag==0){table[id].slatid = id; table[id].MIP=mip;} 
	  else       {table[id].slatid = id; table[id].MIP=0;} 
	  printf("id=%3d Q%1dL%1dS%2d mip=%f\n",id,q,l,s,table[id].MIP);
	  id++;
	}
      }
    }

    dbtable->SetTable((char*)&table, MAX_DB_INDEX);
    if(yr.Contains("sim")) dbtable->setFlavor("sim");
    mgr->storeDbTable(dbtable);    
    std::cout << "INFO: table saved to database" << std::endl;
  }

  std::cout << "INFO: Reading database" << std::endl;  
  gSystem->Unsetenv("DB_ACCESS_MODE");
  //gSystem->Unsetenv("DB_SERVER_LOCAL_CONFIG");
  St_db_Maker *dbMk=new St_db_Maker("db", "MySQL:StarDb", "$STAR/StarDb");
  dbMk->SetDebug();
  dbMk->SetDateTime(date,time); // event or run start time, set to your liking
  if(yr.Contains("ofl"))      {dbMk->SetFlavor("ofl");}
  else if(yr.Contains("sim")) {dbMk->SetFlavor("sim");}
  dbMk->Init();
  dbMk->Make();
  TDataSet *DB = 0;
  DB = dbMk->GetDataBase("Calibrations/fps/fpsGain");
  if (!DB) std::cout << "ERROR: no table found in db, or malformed local db config" << std::endl;
  St_fpsGain *dataset = 0;
  dataset = (St_fpsGain*) DB->Find("fpsGain");
  if (!dataset) {
    td::cout << "ERROR: dataset does not contain requested table" << std::endl;
    return;
  }
  Int_t rows = dataset->GetNRows();
  if (rows > 1) {
    std::cout << "INFO: found INDEXED table with " << rows << " rows" << std::endl;
  }
  TDatime val[2];
  dbMk->GetValidity((TTable*)dataset,val);
  std::cout << "Dataset validity range: [ " << val[0].GetDate() << "." << val[0].GetTime() << " - " 
	    << val[1].GetDate() << "." << val[1].GetTime() << " ] "
	    << std::endl;    
  fpsGain_st *tbl = dataset->GetTable();
  for (Int_t i = 0; i < rows; i++) {
    std::cout << Form("Row=%4d slatid=%3d MIP=%8.4f\n",i,
		      tbl[i].slatid,tbl[i].MIP);
  }
}
示例#10
0
void fPostStatus_db(
		const char* opt   = "",
		const char* year  = "17sim",
		const char* input = "fPostStatus.txt",
		int readdate = 0,
		int readtime = 0)
{
    // storeTime is beginning time for validity range in case of WRITING DB
    TString option(opt), yr(year), storeTime;
    int date, time; // time for READING DB
    
    std::cout <<"year = " <<year <<std::endl;
    if (yr.Contains("17sim"))
	{
	    storeTime = "2016-12-10 00:00:00";
	    date = 20161210;
	    time = 0;
	}
    else if (yr.Contains("17ofl"))
	{
	    storeTime = "2016-12-20 00:00:00";
	    date = 20161220;
	    time = 0;
	}
    else { std::cout << "Please specify valid year tag\n"; exit; }

	if (readdate > 0) date = readdate;
	if (readtime > 0) time = readtime;

    std::cout << "Opt ="         << opt << "\n";
    std::cout << "write = "      << option.Contains("writedb") << "\n";
    std::cout << "storetime = "  << storeTime << "\n";
    std::cout << "date, time = " << date <<" "<< time << "\n";
    
    gROOT->Macro("./loadlib.C");
    
    //-------------------------------------------
    
    const Int_t MAX_DB_INDEX = 241;
    fpostStatus_st in[MAX_DB_INDEX];
    
    FILE *FP = fopen(input, "r");
    if (!FP) { printf("Could not open %s\n", input); exit; }
    printf("\nReading %s\n", input);
    
    char line[1000];
    int n = 0;
    while (fgets(line, 1000, FP) != NULL)
    {	
        sscanf(line,"%hu %hu", &in[n].slatid, &in[n].status);
        printf("slatId=%3d status=%1d\n", in[n].slatid, in[n].status);
        n++;
    }
    printf("Found %d entries\n", n);
    fclose(FP);
    printf("File Closed\n", n);
    
    //-------------------------------------------
    
	#if 1
    if (option.Contains("writedb"))
	{
	    gSystem->Setenv("DB_ACCESS_MODE", "write");
	    StDbManager*    mgr     = StDbManager::Instance();
	    StDbConfigNode* node    = mgr->initConfig("Calibrations_fps");
	    StDbTable*      dbtable = node->addDbTable("fpostStatus");
	    mgr->setStoreTime(storeTime.Data());
	    dbtable->SetTable((char*)&in, MAX_DB_INDEX);
	    if (yr.Contains("sim")) dbtable->setFlavor("sim");
	    mgr->storeDbTable(dbtable);
	    std::cout << "INFO: table saved to database" << std::endl;
	}

	//-------------------------------------------

    if (option.Contains("readdb"))
	{
	    std::cout << "INFO: Reading database" << std::endl;
	    gSystem->Unsetenv("DB_ACCESS_MODE");
	    //gSystem->Unsetenv("DB_SERVER_LOCAL_CONFIG");
	    
	    St_db_Maker* dbMk = new St_db_Maker("db", "MySQL:StarDb", "$STAR/StarDb");
	    dbMk->SetDebug();
	    dbMk->SetDateTime(date, time); // event or run start time, set to your liking
	    if      (yr.Contains("ofl")) { dbMk->SetFlavor("ofl"); }
	    else if (yr.Contains("sim")) { dbMk->SetFlavor("sim"); }
	    dbMk->Init();
	    dbMk->Make();
	    
	    TDataSet *DB = 0;
	    DB = dbMk->GetDataBase("Calibrations/fps/fpostStatus");
	    if (!DB) std::cout << "ERROR: no table found in db, or malformed local db config" << std::endl;
	    
	    St_fpostStatus *dataset = 0;
	    dataset = (St_fpostStatus*) DB->Find("fpostStatus");
	    if (!dataset) { std::cout << "ERROR: dataset does not contain requested table" << std::endl; return; }
	    Int_t rows = dataset->GetNRows();
	    if (rows > 1) std::cout << "INFO: found INDEXED table with " << rows << " rows" << std::endl;
	    
	    TDatime val[2];
	    dbMk->GetValidity((TTable*)dataset, val);
	    std::cout << "Dataset validity range: [ " << val[0].GetDate() << "." << val[0].GetTime() << " - "
		      << val[1].GetDate() << "." << val[1].GetTime() << " ] " << std::endl;
	    
	    fpostStatus_st *table = (fpostStatus_st*)dataset->GetTable();
	    for (Int_t i = 0; i < rows; i++)
		{
		    std::cout << Form("Row=%3d slatid=%3d status=%1d\n", i, table[i].slatid, table[i].status);
		}
	}
	#endif

    return;
}//Main
示例#11
0
void fpsMap_db(char* opt="", char* year="15sim", char* input="fpsmap.txt") {
  TString option(opt), yr(year);  
  TString storeTime; // storetime is begin time for validity range for WRITING DB
  int date,time;     // time for READING DB
  std::cout << "year = " << year << "\n";
  if(yr.Contains("15ofl")){
    storeTime="2014-12-20 00:00:3";
    date = 20141221; time = 0;
  }else if(yr.Contains("15sim")){
    storeTime="2014-12-10 00:00:01";
    date = 20141210; time = 1;
  }else if(yr.Contains("17ofl")){
      storeTime="2016-12-20 00:00:00";
      date = 20161220; time = 0;
  }else if(yr.Contains("17sim")){
      storeTime="2016-12-10 00:00:00";
      date = 20161210; time = 0;
  }else{
    std::cout << "Please specify valid year tag\n"; exit;
  }
  std::cout << "Opt =" << opt << "\n";
  std::cout << "write = " << option.Contains("writedb")   << "\n";
  std::cout << "storetime =" << storeTime << "\n";
  std::cout << "date,time =" << date <<" "<< time << "\n";
  
  gROOT->Macro("./loadlib.C");
  
  const Int_t MAX_DB_INDEX = 252;
  fpsMap_st in[MAX_DB_INDEX];
  for(int i=0; i<MAX_DB_INDEX; i++){
    in[i].slatid=i;
    in[i].QTaddr=-1;
    in[i].QTch=-1;
  }
  
  FILE *FP = fopen(input,"r");
  if(!FP) { printf("Could not open %s\n",input); exit;}
  printf("Reading %s\n",input);
  char line[1000], nw[10], dc[10], posi[10];
  int id,q,l,s,sipm,sipmbd,feebd,tbox,tgrp,qtaddr,qtch,cbl;
  int n=0;
  while(fgets(line,1000,FP)!=NULL){
    sscanf(line,"%d %d %d %d %d %s %d %d %d %d",
	   &id,&q,&l,&s,
	   &sipm,nw,
	   &tbox,&tgrp,
	   &qtaddr,&qtch);
    //printf("Id=%3d Q=%3d L=%3d S=%3d QTaddr=%1d QTch=%2d\n",id,q,l,s,qtaddr,qtch);
    in[id].QTaddr=qtaddr;
    in[id].QTch=qtch;
    n++;
  }    
  for(int i=0; i<MAX_DB_INDEX; i++){
    printf("Id=%3d QTaddr=%1d QTch=%2d\n",in[i].slatid,in[i].QTaddr,in[i].QTch);
  }
  printf("Found %d entries\n",n);
  
  if(option.Contains("writedb")) {
    gSystem->Setenv("DB_ACCESS_MODE","write");
    StDbManager* mgr = StDbManager::Instance();
    StDbConfigNode* node = mgr->initConfig("Geometry_fps");
    StDbTable* dbtable = node->addDbTable("fpsMap");
    mgr->setStoreTime(storeTime.Data());    
    dbtable->SetTable((char*)&in, MAX_DB_INDEX);
    if(yr.Contains("sim")) dbtable->setFlavor("sim");
    mgr->storeDbTable(dbtable);    
    std::cout << "INFO: table saved to database" << std::endl;
  }
  
  std::cout << "INFO: Reading database" << std::endl;  
  gSystem->Unsetenv("DB_ACCESS_MODE");
  //gSystem->Unsetenv("DB_SERVER_LOCAL_CONFIG");
  St_db_Maker *dbMk=new St_db_Maker("db", "MySQL:StarDb", "$STAR/StarDb");
  dbMk->SetDebug();
  dbMk->SetDateTime(date,time); // event or run start time, set to your liking
  if(yr.Contains("ofl"))      {dbMk->SetFlavor("ofl");}
  else if(yr.Contains("sim")) {dbMk->SetFlavor("sim");}
  dbMk->Init();
  dbMk->Make();
  TDataSet *DB = 0;
  DB = dbMk->GetDataBase("Geometry/fps/fpsMap");
  if (!DB) std::cout << "ERROR: no table found in db, or malformed local db config" << std::endl;
  St_fpsMap *dataset = 0;
  dataset = (St_fpsMap*) DB->Find("fpsMap");
  if (!dataset) {
    td::cout << "ERROR: dataset does not contain requested table" << std::endl;
    return;
  }
  Int_t rows = dataset->GetNRows();
  if (rows > 1) {
    std::cout << "INFO: found INDEXED table with " << rows << " rows" << std::endl;
  }
  TDatime val[2];
  dbMk->GetValidity((TTable*)dataset,val);
  std::cout << "Dataset validity range: [ " << val[0].GetDate() << "." << val[0].GetTime() << " - " 
	    << val[1].GetDate() << "." << val[1].GetTime() << " ] "
	    << std::endl;    
  fpsMap_st *table = dataset->GetTable();
  for (Int_t i = 0; i < rows; i++) {
    std::cout << Form("Row=%4d slatid=%3d QTaddr=%2d QTch=%2d\n",i,
		      table[i].slatid,
		      table[i].QTaddr,table[i].QTch);
  }
}
示例#12
0
void readtofTrgWindow(const char* time = "2011-01-01 00:00:00") {

  const Int_t NTRAY = 120;
  const Int_t NVPDTRAY = 2;
  const Int_t NMAX = 120;
  const Int_t NMTD = 2;

  //-- load dBase and Table definition libraries
  gSystem->Load("St_base");
  gSystem->Load("StChain");
  gSystem->Load("StUtilities");
  gSystem->Load("St_Tables.so");

  gSystem->Load("StDbLib.so");
  gSystem->Load("libStDb_Tables.so");

  //-- get the singleton manager
  StDbManager* dbManager = StDbManager::Instance();

  //-- connect to the db & get an empty container
  StDbConfigNode* configNode = dbManager->initConfig("Calibrations_tof");

  string ZReadTime = time;
  dbManager->setRequestTime(ZReadTime.c_str());

  //-- add table to the container with descriptor given by Database
  StDbTable* tofTrgWindow = configNode->addDbTable("tofTrgWindow");

  dbManager->fetchDbTable(tofTrgWindow);

  cout << "version : " << tofTrgWindow->getVersion() <<endl;
  //cout << tofTrgWindow->getTableName()<<endl;
  cout << "begin data/time : "<< tofTrgWindow->getBeginDateTime() <<endl;
  cout << "end  data/time : " << tofTrgWindow->getEndDateTime() <<endl;


  tofTrgWindow_st* trg = static_cast<tofTrgWindow_st*>(tofTrgWindow->GetTable());

  if (!trg) {
    cout << " Oops ... no pointer to table. Exiting" << endl;
    erturn;
  }


  Int_t nRows = tofTrgWindow->GetNRows();
  cout << " NRows = " << nRows << endl;
  if(nRows!=(NTRAY+NVPDTRAY+NMTD)) {
    cout << " NRows doesn't match !!! " << endl;
  }

  //unsigned short cutlow[NTRAY+NVPDTRAY];
  //unsigned short cuthi[NTRAY+NVPDTRAY];
  //for (int i=0;i<NTRAY+NVPDTRAY){
  //  cutlo[i]=0;
  //  cuthi[i]=0;
  //}

  cout << "read out from database ..." << endl;
  ofstream outData;
  outData.open("TrgWindow_read.dat");
  for (int i=0;i<NTRAY+NVPDTRAY+NMTD;i++){
    cout << i << " " << trg[i].trgWindow_Min << " "<< trg[i].trgWindow_Max << endl;
    outData << i << " " << trg[i].trgWindow_Min << " "<< trg[i].trgWindow_Max << endl;
  }
 outData.close();


}
void write_ist_pednoise() {
	gSystem->Setenv("DB_ACCESS_MODE", "write");
  	gROOT->Macro("LoadLogger.C");
  	gSystem->Load("St_base.so");
  	gSystem->Load("libStDb_Tables.so");
  	gSystem->Load("StDbLib.so");

	std::ifstream fPDlist("/star/u/ypwang/disk01/offline_hft/DB/pedNoiseTable4DB/pedNoiseFiles_Corr/pedRunList_Corr.txt");
        if(!fPDlist.is_open())
        {
                std::cout << " There is no corrected pedRunList file! " << endl;
                exit(0);
        }

        while(!fPDlist.eof()) {
                TString  sPDfile;
                fPDlist >> sPDfile;

                int found = sPDfile.Last('_');
                if(found >= 0)
                        sPDfile.Replace(0, found + 1, "");

                found = sPDfile.Last('.');
                if(found >= 0)
                        sPDfile.Replace(found, sPDfile.Length(), "");

                int runnumb = sPDfile.Atoi();
                if(runnumb)
                        pedRunNumVec.push_back(runnumb);
        }
        fPDlist.close();
	const int nPedRuns = pedRunNumVec.size();
	cout << nPedRuns << " good pedestal runs recorded! " << endl;
        if(debug) {
                for(int i=0; i<nPedRuns; i++)
                        cout << i << "th pedestal run: " << pedRunNumVec[i] << endl;
        }


  	std::ifstream fCosmicRunList("/star/u/ypwang/disk01/offline_hft/DB/pedNoiseTable4DB/cmNoise_cosmic/cosmicRunlist.txt");
        if(!fCosmicRunList.is_open())
        {
                std::cout << " There is no cosmicRunList file! " << endl;
                exit(0);
        }

        while(!fCosmicRunList.eof()) {
                TString  sCMNfile;
                fCosmicRunList >> sCMNfile;

                int found = sCMNfile.First('.');
                if(found >= 0)
                        sCMNfile.Replace(found, sCMNfile.Length(), "");

                int runnumb = sCMNfile.Atoi();
                if(runnumb)
                        cosmicRunNumVec.push_back(runnumb);
        }
        fCosmicRunList.close();
	const int nCosmicRuns = cosmicRunNumVec.size();
	cout << nCosmicRuns << " good cosmic runs recorded! " << endl;
        if(debug) {
                for(int i=0; i<nCosmicRuns; i++)
                        cout << i << "th cosmic run: " << cosmicRunNumVec[i] << endl;
        }

	Int_t   isBadChannel[110592];
        Int_t   isBadChip[864];
	//loop pedestal runs
	for(int iRun=0; iRun<nPedRuns; iRun++)
        {
                int runNumber = pedRunNumVec[iRun];
		//below only for testing
		//if(runNumber<15065020) continue;

                int TbinPD = PDTBin(runNumber);
		cout << "Reading pedestal run " << runNumber << " with " << TbinPD << " time bins! " << endl;
		
		//retrieve time stamp information
		char cmd[256];
            	sprintf(cmd, "/usr/bin/mysql -h dbbak.starp.bnl.gov --port=3413 -e \"SELECT FROM_UNIXTIME(startRunTime) as beginTime_human FROM RunLog.runDescriptor WHERE runNumber = %d\" >timeStamp_tmp", runNumber);
            	system(cmd);

            	TString mTimeStamp;
            	FILE *inR = fopen("timeStamp_tmp","r");
            	while(!feof(inR)) {
                	char buff[64];
                	if(fgets(buff,sizeof(buff),inR) == 0) continue ;
                	switch(buff[0]) {
                    		case 'b' : //beginTime_human
                        		continue ;
                	}
                	mTimeStamp = Form(buff);
            	}
            	fclose(inR);

            	sprintf(cmd, "/bin/rm timeStamp_tmp");
            	system(cmd);

		int found = 19;
            	mTimeStamp.Replace(found, mTimeStamp.Length(), "");
            	cout << iRun << ": \t" << runNumber << "\t" << mTimeStamp << endl;
	
		//find the closest cosmic run to match, and using its common-mode noise
		int diffRun = 15000000, miniDiffRun = 15000000;
		int matchedCosmicRunNumber = 15032029;
		for(int iCosmic=0; iCosmic<nCosmicRuns; iCosmic++) {
			diffRun = cosmicRunNumVec[iCosmic] - runNumber;
			if(diffRun < miniDiffRun && diffRun > 0) { //corresponding cosmic run should come after the pedestal run
				miniDiffRun = diffRun;
				matchedCosmicRunNumber = cosmicRunNumVec[iCosmic];
			}
		}
		if(runNumber>=15158006) matchedCosmicRunNumber = 15157002; //if no later cosmic runs found, then use the last one
		int TbinCMN = CMTBin(matchedCosmicRunNumber);
		cout << "Matched cosmic run " << matchedCosmicRunNumber << " with " << TbinCMN << " time bins! " << endl;
		
		StDbManager* mgr = StDbManager::Instance();
  		StDbConfigNode* node = mgr->initConfig("Calibrations_ist");
  		StDbTable* dbtable = node->addDbTable("istPedNoise");
  		mgr->setStoreTime(mTimeStamp.Data());
		
		//open matched CMN DB file
		std::ifstream inCMN(Form("/star/u/ypwang/disk01/offline_hft/DB/pedNoiseTable4DB/cmNoise_cosmic/%d.istCmNoise.dat", matchedCosmicRunNumber));
    		if (!inCMN.is_open()) {
    			std::cout << " There is no CMN DB file  " << end ;
    			exit(0);
    		}

		//open corrected pedestal/RMS DB file
		std::ifstream inPD(Form("/star/u/ypwang/disk01/offline_hft/DB/pedNoiseTable4DB/pedNoiseFiles_Corr/IST_pedestals_%d.txt", runNumber));
    		if (!inPD.is_open()) {
    			std::cout << " There is no PED/RMS DB file  " << end ;
    			exit(0);
    		}
	
		//retreive online masking chip/channel and offline channel masking
		for(int i=0; i<110592; i++) {
                    isBadChannel[i] = 0;
                }

		for(int i=0; i<864; i++) {
                    isBadChip[i] = 0;
                }
		
		//online masking-out chips
		int tem_Run, tem_Rdo, tem_Arm, tem_Group, tem_Apv, tem_Status, ChipEID;
		int deadChipsInRun14 = 31, deadChipCounter=0;
                if(runNumber<15181030) {
                    std::ifstream deadChipList("/star/u/ypwang/disk01/offline_hft/DB/pedNoiseTable4DB/ist_apv_dead.txt");
                }
                else {
                    std::ifstream deadChipList("/star/u/ypwang/disk01/offline_hft/DB/pedNoiseTable4DB/ist_apv_dead_AuHe3.txt");
                    deadChipsInRun14 = 29; //since run 15174075 (June 23, 2014), two chips (566/567) were taken out of online mask-out chip list
                }
		if(!deadChipList.is_open()) 
		{
                        cout << "ist_apv_dead file was NOT found " << endl;
                        exit(0);
                }

		int deadChipId = -1;
                while(!deadChipList.eof() && deadChipCounter<deadChipsInRun14) {
                    deadChipList >> tem_Rdo >> tem_Arm >> tem_Apv;
                    deadChipId = (tem_Rdo-1)*6*24 + tem_Arm*24 + tem_Apv; //electronics ID
                    if(deadChipId<0 || deadChipId>=864) continue;

		    int deadChipGeomIdx = elecIdToGeomId(deadChipId);
                    isBadChip[deadChipGeomIdx-1] = 1; //dead chip
                    deadChipCounter++;
                }
                deadChipList.close();
		cout << "Number of online masking-out chips: " << deadChipCounter << endl;

		//mis-configured chips
                std::ifstream misConfigChiplist("/star/u/ypwang/disk01/offline_hft/DB/pedNoiseTable4DB/ist_apv_bad.txt");
                if(!misConfigChiplist.is_open())
                {
                        cout << "ist_apv_bad file was NOT found " << endl;
                        exit(0);
                }
		
		int badChipCounter = 0;
		while(!misConfigChiplist.eof()) //mis-configured chips recorded since 15065020
                {
                        misConfigChiplist >> tem_Run >> tem_Rdo >> tem_Arm >> tem_Group >> tem_Apv >> tem_Status;
                        if(tem_Run == matchedCosmicRunNumber)
                        {
                                ChipEID = (tem_Rdo - 1) * 6 * 24 + tem_Arm * 24 + tem_Group * 12 + tem_Apv;
                                if(ChipEID<0 || ChipEID>=864) continue;

				int badChipGeomIdx = elecIdToGeomId(ChipEID);
                                isBadChip[badChipGeomIdx-1] = 2; //mis-configured chip
                                badChipCounter++;
                        }
                }
                misConfigChiplist.close();
		cout << "Number of offine masking-out chips: " << badChipCounter << endl;

		//online masking-out channel list
		Int_t   rdoIndex = -1, armIndex = -1, apvIndex = -1, chanIndex = -1;
                Int_t   channelId = -1;

		std::ifstream badChannelListOnline("/star/u/ypwang/disk01/offline_hft/DB/pedNoiseTable4DB/channelMaskingList_ist_online.txt"); //179 bad channels masked out online
		if(!badChannelListOnline.is_open()) 
		{
                        cout << "channelMaskingList_ist_online file was NOT found " << endl;
                        exit(0);
                }

		int deadChannelCounter = 0;
                while(!badChannelListOnline.eof()) {
                        badChannelListOnline >> rdoIndex >> armIndex >> apvIndex >> chanIndex;
                        channelId = (rdoIndex-1)*6*24 + armIndex*24 + apvIndex*128 + chanIndex;
                        isBadChannel[channelId] = 1;
			deadChannelCounter++;
                }
                badChannelListOnline.close();
		cout << "Number of online masking-out channels: " << deadChannelCounter << endl;

		//offline masking-out channel list
                std::ifstream badChannelListOfflineB("/star/u/ypwang/disk01/offline_hft/DB/pedNoiseTable4DB/ChannelMaskList.20140601.txt"); //336 bad channels masked out offline
		if(!badChannelListOfflineB.is_open())
		{
			cout << "ChannelMaskList.20140601 file was NOT found " << endl;
                        exit(0);
		}

		int badChannelCounter = 0;
                while(!badChannelListOfflineB.eof()) {
                        badChannelListOfflineB >> channelId;
                        isBadChannel[channelId] = 2;
			badChannelCounter++;
                }
                badChannelListOfflineB.close();
		cout << "Number of offline masking-out channels: " << badChannelCounter << endl;

		istPedNoise_st table;
		for (int i = 0; i < 110592; i++) {
    			table.pedestal[i] = 0;
    			table.rmsNoise[i] = 0;
  		}

  		for (int i = 0; i < 864; i++) {
    			table.cmNoise[i] = 0;
  		}

		//Pedestal and RMS Noise
		Float_t pedestalT, rmsT;
		Float_t averagePed = 0., averageRms = 0.;
		Int_t timebin = -1;
		channelId = -1;
		for (int counter=0; counter<110592*TbinPD; counter++){
			inPD >> rdoIndex >> armIndex >> apvIndex >> chanIndex >> timebin >> pedestalT >> rmsT;
			channelId = (rdoIndex - 1) * 6 * 24 * 128 + armIndex * 24 * 128 + apvIndex * 128 + chanIndex;
			if(channelId<0 || channelId>=110592) continue;
    			averagePed += pedestalT/TbinPD;
    			averageRms += rmsT/TbinPD;

    			if(((timebin+1)/TbinPD) && ((counter+1)/TbinPD)) {
        			//cout << counter/TbinPD << ": channelId = " << channelId<<"\t pedestal = "<<averagePed<<"\t rms = "<<averageRms<<endl;

        			table.pedestal[channelId] = (int)averagePed;
        			table.rmsNoise[channelId] = (int)(averageRms*100);
				//masking-out online/offline bad channels
				if(isBadChannel[channelId]) 
					table.rmsNoise[channelId] = 10000;
				if(debug)
					cout << counter/TbinPD << ": channelId = " << channelId << "\t pedestal = " << table.pedestal[channelId] << "\t rms = " << table.rmsNoise[channelId] <<endl;
        			averagePed = 0.;
        			averageRms = 0.;
    			}
  		}
  		inPD.close();

		//Common Mode Noise
		Float_t cmNoiseT;
		Float_t averageCmNoise = 0.;
		Int_t chipId;
		Int_t numTimeBins = 9; //IST CMN DB files output 9 time bins format in default
		for(int counter=0; counter<864*numTimeBins; counter++){
    			inCMN >> chipId >> timebin >> cmNoiseT;
    			averageCmNoise += cmNoiseT/TbinCMN;

    			if(((timebin+1)/numTimeBins) && ((counter+1)/numTimeBins)) {
        			//cout << counter/numTimeBins << ": chipId = " << chipId << " cmNoiseT = " << averageCmNoise << endl;
        			table.cmNoise[chipId] = (int)(averageCmNoise*100);
				//masking-out online/offline bad chips
				if(isBadChip[chipId])
					table.cmNoise[chipId] = 10000;
				if(debug)
					cout << counter/numTimeBins << ": chipId = " << chipId << " cmNoiseT = " << table.cmNoise[chipId] << endl;
        			averageCmNoise = 0.;
    			}
  		}
  		inCMN.close();

		// Please comment out below lines if you do testing, or it will write the DB!!!!
		// Store data to the StDbTable
		dbtable->SetTable((char*)&table, 1);

		// Store table to database
		mgr->storeDbTable(dbtable);

		//exit(0); //only for testing
	}
};
示例#14
0
void fpsChannelGeometry_db(char* opt="", char* year="15sim") {
  TString option(opt), yr(year);  
  TString storeTime; // storetime is begin time for validity range for WRITING DB
  int date,time;     // time for READING DB
  std::cout << "year = " << year << "\n";
  if(yr.Contains("15ofl")){
    storeTime="2014-12-20 00:00:01";
    date = 20141220; time = 1;
  }else if(yr.Contains("15sim")){
    storeTime="2014-12-10 00:00:01";
    date = 20141210; time = 1;
  }else if (yr.Contains("17ofl")){      
      storeTime="2016-12-20 00:00:00";
      date = 20161220; time = 0;
  }else if(yr.Contains("17sim")){
      storeTime="2016-12-10 00:00:00";
      date = 20161210; time = 0;      
  }else{
    std::cout << "Please specify valid year tag\n"; exit;
  }
  std::cout << "Opt =" << opt << "\n";
  std::cout << "write = " << option.Contains("writedb")   << "\n";
  std::cout << "storetime =" << storeTime << "\n";
  std::cout << "date,time =" << date <<" "<< time << "\n";
  
  gROOT->Macro("loadlib.C");
  
  const Int_t MAX_DB_INDEX = 12;
  fpsChannelGeometry_st table[MAX_DB_INDEX];

  if(option.Contains("writedb")) {
    gSystem->Setenv("DB_ACCESS_MODE","write");
    StDbManager* mgr = StDbManager::Instance();
    StDbConfigNode* node = mgr->initConfig("Geometry_fps");
    StDbTable* dbtable = node->addDbTable("fpsChannelGeometry");
    mgr->setStoreTime(storeTime.Data());

    table[ 0].quad = 1; table[ 0].layer = 1; table[ 0].nslat = 21; 
    table[ 1].quad = 1; table[ 1].layer = 2; table[ 1].nslat = 21; 
    table[ 2].quad = 1; table[ 2].layer = 3; table[ 2].nslat = 21; 
    table[ 3].quad = 2; table[ 3].layer = 1; table[ 3].nslat = 19; 
    table[ 4].quad = 2; table[ 4].layer = 2; table[ 4].nslat = 19; 
    table[ 5].quad = 2; table[ 5].layer = 3; table[ 5].nslat = 19; 
    table[ 6].quad = 3; table[ 6].layer = 1; table[ 6].nslat = 21; 
    table[ 7].quad = 3; table[ 7].layer = 2; table[ 7].nslat = 21; 
    table[ 8].quad = 3; table[ 8].layer = 3; table[ 8].nslat = 21; 
    table[ 9].quad = 4; table[ 9].layer = 1; table[ 9].nslat = 19; 
    table[10].quad = 4; table[10].layer = 2; table[10].nslat = 19; 
    table[11].quad = 4; table[11].layer = 3; table[11].nslat = 19; 

    dbtable->SetTable((char*)&table, MAX_DB_INDEX);
    if(yr.Contains("sim")) dbtable->setFlavor("sim");
    mgr->storeDbTable(dbtable);    
    std::cout << "INFO: table saved to database" << std::endl;
  }

  std::cout << "INFO: Reading database" << std::endl;  
  gSystem->Unsetenv("DB_ACCESS_MODE");
  //gSystem->Unsetenv("DB_SERVER_LOCAL_CONFIG");
  St_db_Maker *dbMk=new St_db_Maker("db", "MySQL:StarDb", "$STAR/StarDb");
  dbMk->SetDebug();
  dbMk->SetDateTime(date,time); // event or run start time, set to your liking
  if(yr.Contains("ofl"))      {dbMk->SetFlavor("ofl");}
  else if(yr.Contains("sim")) {dbMk->SetFlavor("sim");}
  dbMk->Init();
  dbMk->Make();
  TDataSet *DB = 0;
  DB = dbMk->GetDataBase("Geometry/fps/fpsChannelGeometry");
  if (!DB) std::cout << "ERROR: no table found in db, or malformed local db config" << std::endl;
  St_fpsChannelGeometry *dataset = 0;
  dataset = (St_fpsChannelGeometry*) DB->Find("fpsChannelGeometry");
  if (!dataset) {
    td::cout << "ERROR: dataset does not contain requested table" << std::endl;
    return;
  }
  Int_t rows = dataset->GetNRows();
  if (rows > 1) {
    std::cout << "INFO: found INDEXED table with " << rows << " rows" << std::endl;
  }
  TDatime val[2];
  dbMk->GetValidity((TTable*)dataset,val);
  std::cout << "Dataset validity range: [ " << val[0].GetDate() << "." << val[0].GetTime() << " - " 
	    << val[1].GetDate() << "." << val[1].GetTime() << " ] "
	    << std::endl;    
  fpsChannelGeometry_st *tbl = dataset->GetTable();
  for (Int_t i = 0; i < rows; i++) {
    std::cout << Form("Row=%4d quad=%1d layer=%1d nslat=%2d\n",i,
		      tbl[i].quad,tbl[i].layer,tbl[i].nslat);
  }
}
示例#15
0
void storetofTDIGOnTray() {
  const Bool_t Debug = kFALSE;
  const Int_t NBOARD = 8;
//-- year8
  // const Int_t NTRAY = 5;
//-- year9
  //  const Int_t NTRAY = 94;
  //  const Int_t NVPDTRAY = 2;
  //  const Int_t NMAX = 120;
//-- year10/year11
  const Int_t NTRAY = 120;
  const Int_t NVPDTRAY = 2;
  const Int_t NMAX = 300; //123;

//-- load dBase and Table definition libraries
  gSystem->Load("St_base");
  gSystem->Load("StChain");
  gSystem->Load("StUtilities");
  gSystem->Load("St_Tables.so");

  gSystem->Load("StDbLib.so");
  gSystem->Load("libStDb_Tables.so");

//-- get the singleton manager
  StDbManager* dbManager = StDbManager::Instance();

//-- connect to the db & get an empty container
  StDbConfigNode* configNode = dbManager->initConfig("Calibrations_tof");

//----------------------------------------
  //  TString ZStoreTime = "2007-11-01 00:00:03";
  //  TString ZStoreTime = "2008-11-01 00:00:00";
  //  TString ZStoreTime = "2009-11-01 00:00:00";
  //  TString ZStoreTime = "2010-12-20 00:00:01";
  //  TString ZStoreTime = "2011-04-20 00:00:00";
  //  TString ZStoreTime = "2011-12-20 00:00:00";
  TString ZStoreTime = "2012-12-20 00:00:00";

//-- add table to the container with descriptor given by Database
  StDbTable* tofTDIGOnTray = configNode->addDbTable("tofTDIGOnTray");

//-- fill structures & store times
  tofTDIGOnTray_st *tdig = new tofTDIGOnTray_st[NMAX+NVPDTRAY];

//-- year8
  //  Short_t trayId[NTRAY+NVPDTRAY] = {76, 77, 78, 79, 80, 121, 122};
  //  Short_t tdigId[NTRAY+NVPDTRAY][NBOARD] = {
  //    36, 26, 27, 29, 25, 23, 22, 21,
  //    30, 31, 33, 35, 28, 32, 34, 37,
  //    74, 63, 49, 72, 64, 53, 59, 52,
  //    70, 51, 75, 65, 66, 50, 71, 68,
  //    46, 62, 72, 69, 61, 58, 42, 43,
  //    89, 91,  0,  0, 84, 82,  0,  0,
  //    85, 79,  0,  0, 80, 83,  0,  0
  //  };
// ------------------------------
//-- year10
  //  Short_t trayId[NMAX] = { 68, 58, 63,  6,106, 67, 61, 50, 57, 60,
  //                           47, 46, 87,133, 64, 72, 62, 42, 14, 11,
  //                           28,  7, 25, 33, 19, 17, 37, 21, 30, 35,
  //                            8, 20, 31, 27, 12,  9, 10, 29, 34, 13,
  //                           16, 77, 89, 36, 39, 23, 32, 15, 24, 18,
  //                           59, 66, 70, 38, 41, 45, 52, 54, 53, 55,
  //                           84,105, 94, 91, 95, 48, 44, 22, 26, 49,
  //                            5,  2, 75, 40,117,  4,121, 99,120,122,
  //                          111,116,118,119,109,101,100,107, 98, 56,
  //                           88,115,102,108,112,110,113,114,123, 90,
  //                           93, 65, 51, 73, 76, 83, 69, 80, 82, 74,
  //                           97, 79, 43, 86, 85,132,104, 92, 96,103};
  //                              // B-132;  C-133  renamed
// ------------------------------
//-- year11
  // ifstream infile("data/run11/INL/tdigs_01122011.txt");
// VPD boards until April 2011
  //  Short_t tdigId_Vpd[NVPDTRAY][NBOARD] = { 89, 91, 1102, 0, 885, 82, 0, 0,
  //                                           85, 79, 1101, 0,  80, 83, 0, 0};
  //  
  //  Short_t trayId[NMAX] = { 68, 58, 63,  6,106, 67, 61, 50, 57, 71,
  //                           47, 46, 87,133, 64, 72, 62, 42, 14, 11,
  //                           28,  7, 25, 33, 19, 17, 37, 21, 30, 35,
  //                            8, 20, 31, 27, 12,  9, 10, 29, 34, 13,
  //                           16, 77, 89, 36, 39, 23, 32, 15, 24, 18,
  //                           59, 66, 70, 38, 41, 45, 52, 54, 53, 55,
  //                           84,105, 94, 91, 95, 48, 44, 22, 26, 49,
  //                            5,  2, 75, 40,117,  4,121, 99,120,122,
  //                          111,116,118,119,109,101,100,107, 98, 56,
  //                           88,115,102,108,112,110,113,114,123, 90,
  //                           93, 65, 51, 73, 76, 83, 69, 80, 82, 74,
  //                           97, 79, 43, 86, 85,132,104, 92, 96,103};
  //                              // B-132;  C-133  renamed
// ------------------------------
//-- year12
//  changed trays at W8, W23, E93
//  ifstream infile("data/run12/INL/tdigs_120106.txt");
//  Short_t trayId[NTRAY] = { 68, 58, 63,  6,106, 67, 61, 81, 57, 71,
//			    47, 46, 87,133, 64, 72, 62, 42, 14, 11,
//			    28,  7,  3, 33, 19, 17, 37, 21, 30, 35,
//			     8, 20, 31, 27, 12,  9, 10, 29, 34, 13,
//			    16, 77, 89, 36, 39, 23, 32, 15, 24, 18,
//			    59, 66, 70, 38, 41, 45, 52, 54, 53, 55,
//			    84,105, 94, 91, 95, 48, 44, 22, 26, 49,
//			     5,  2, 75, 40,117,  4,121, 99,120,122,
//			   111,116,118,119,109,101,100,107, 98, 56,
//			    88,115, 78,108,112,110,113,114,123, 90,
//			    93, 65, 51, 73, 76, 83, 69, 60, 82, 74,
//			    97, 79, 43, 86, 85,132,104, 92, 96,103};
//                            // B-132;  C-133  renamed
// ------------------------------
//-- year13
//  changed trays at W8, W23, W38, E93, E95, E109
// see http://www.star.bnl.gov/HyperNews-star/protected/get/startof/2675.html
  ifstream infile("data/run13/INL/tdigs_20130115.txt");
  Short_t trayId[NTRAY] = { 68, 58, 63,  6,106, 67, 61, 50, 57, 71,
			    47, 46, 87,133, 64, 72, 62, 42, 14, 11,
			    28,  7, 25, 33, 19, 17, 37, 21, 30, 35,
			     8, 20, 31, 27, 12,  9, 10,  3, 34, 13,
			    16, 77, 89, 36, 39, 23, 32, 15, 24, 18,
			    59, 66, 70, 38, 41, 45, 52, 54, 53, 55,
			    84,105, 94, 91, 95, 48, 44, 22, 26, 49,
			     5,  2, 75, 40,117,  4,121, 99,120,122,
			   111,116,118,119,109,101,100,107, 98, 56,
			    88,115,102,108, 81,110,113,114,123, 90,
			    93, 65, 51, 73, 76, 83, 69, 80, 82, 74,
			    97, 79, 43, 86, 85,132,104, 92, 96,103};
                            // B-132;  C-133  renamed
// ------------------------------
  Short_t tdigId[NTRAY][NBOARD];

//-- run 11 AuAu@18GeV, run 12, run 13
  Short_t tdigId_Vpd[NVPDTRAY][NBOARD] = { 89, 91,  495, 0, 885, 82, 0, 0,
                                           85, 79, 1101, 0,  80, 83, 0, 0};

  Short_t tId[NMAX], boardId[NMAX][NBOARD];  // two additional trays
  int i(0),j(0);  // clear counters
  int trayNum, oldTrayNum, iboard, boardNum;

  cout << "Reading UT-Austin database info ... "  << endl;
  if (infile) {
    // read first entry
    infile >> trayNum >> iboard >> boardNum;
    tId[i] = (Short_t)trayNum;
    boardId[i][iboard-1] = (Short_t)boardNum;      
    oldTrayNum = trayNum;
    // increment general counter (total# of TDIGs, only for debugging) and dump data
    if (Debug) cout << j++ << " " << i << "  " << trayNum << " "<< iboard << "  " << boardNum << endl;

    // loop in the remaining entries
    while ( infile >> trayNum >> iboard >> boardNum ) {
      // increment i only when trayNum incrememts ...
      if (trayNum != oldTrayNum) {
	tId[++i] = (Short_t)trayNum;
	oldTrayNum = trayNum;
      }
      // increment general counter (total# of TDIGs, only for debugging) and dump data
      if (Debug) cout << j++ << " " << i << "  " << trayNum << " "<< iboard << "  " << boardNum << endl;

      boardId[i][iboard-1] = (Short_t)boardNum;
    }
  }
  infile.close();
  cout << "... done reading database info" << endl;

  for(int i=0;i<NTRAY;i++) {
    for(int j=0;j<NBOARD;j++) { tdigId[i][j] = 0; }

    Short_t thisTray = trayId[i];
    int index = -1;
    for(int j=0;j<NMAX;j++) {
      if(thisTray==tId[j]) {
        index = j;
        break;
      }
    }
    if (Debug) cout << "pos = " << i+1 << " tray = " << thisTray << " index = " << index << " : ";
    if(index<0||index>=NMAX) { cout<< "ERROR: unexpected index "<< index << endl; continue;}
    for(int j=0;j<NBOARD;j++) {
      tdigId[i][j] = boardId[index][j];
      if (Debug) cout << tdigId[i][j] << " ";
    }
    if (Debug) cout << endl;
  }

/*
  {
    89, 91,  0,  0, 84, 82,  0,  0,
    85, 79,  0,  0, 80, 83,  0,  0
  };
*/
//-- include the VPD TDIG mapping 
  for(int i=0;i<NTRAY+NVPDTRAY;i++) {
    tdig[i].trayId = i+1;
    for(int j=0;j<NBOARD;j++) {
      if(i<NTRAY) {
        tdig[i].tdigId[j] = tdigId[i][j];
      } else {
        tdig[i].tdigId[j] = tdigId_Vpd[i-NTRAY][j];
      }
    }
  }

//-- create output file for test/verification purposes
  ofstream outData("testTDIGMap.dat");
  for(int i=0;i<NTRAY+NVPDTRAY;i++) {
    for(int j=0;j<NBOARD;j++) {
      outData << setw(5) << tdig[i].tdigId[j];
    }
    outData << endl;
  }
  outData.close();

//-- store data in table
  tofTDIGOnTray->SetTable((char*)tdig, NTRAY+NVPDTRAY);
//- set store time
  dbManager->setStoreTime(ZStoreTime.Data());
//- store table in dBase
  cout<<"Preparing to upload ... "<<endl;
  dbManager->storeDbTable(tofTDIGOnTray);
  cout << "... done" << endl;
}
void write_ist_mapping() {
 
  gSystem->Setenv("DB_ACCESS_MODE", "write");
  gROOT->Macro("LoadLogger.C");
  gSystem->Load("St_base.so");
  gSystem->Load("libStDb_Tables.so");
  gSystem->Load("StDbLib.so");

  TString storeTime = "2014-01-29 00:00:01";
  cout <<"The RTS Start date and time is " << storeTime<<endl;  

  StDbManager* mgr = StDbManager::Instance();
  StDbConfigNode* node = mgr->initConfig("Calibrations_ist");
  StDbTable* dbtable = node->addDbTable("istMapping");
  mgr->setStoreTime(storeTime.Data());
 
  Int_t elecId=-1, ladder=-1, sensor=-1, column=-1, row=-1;
  istMapping_st table;
 
  for (int i = 0; i < 110592; i++) {
    table.mapping[i] = i+1;
  }
 
  for(int rdo=1; rdo<=6; rdo++) {
        for(int arm=0; arm<6; arm++) {
            for(int apv=0; apv<24; apv++) {
                for(int chan=0; chan<128; chan++) {
                    elecId = (rdo-1)*6*24*128+arm*24*128+apv*128+chan;

		    // the following mapping refered from IST readout channel datasheet
                    if(elecId<101376)
                        ladder = 22 - elecId/4608;
                    else
                        ladder = 46 - elecId/4608;

		    //sections B and C swapped on ladder 13
		    if(elecId>=43008 && elecId<44544) //section C
                        sensor = 4 - (elecId%4608)/768;
                    else if(elecId>=44544 && elecId<46080) //section B
                        sensor = 8 - (elecId%4608)/768;
                    else
                    	sensor = 6 - (elecId%4608)/768;

                    Int_t pad = (elecId%4608)%768;
                    column = 12 - pad/64;
                    if(column%2)
                        row = 64 - pad%64;
                    else
                        row = 1 + pad%64;

                    table.mapping[elecId] = (ladder-1)*4608 + (sensor-1)*768 + (column-1)*64 + row;
                }
            }
        }
  } 
   
  // Store data to the StDbTable
  dbtable->SetTable((char*)&table, 1);
  
  // Store table to database
  mgr->storeDbTable(dbtable);
  

};
示例#17
0
void storetofINLSCorr()
//int main(int argc, char *argv[])

{

  const Int_t NMAX = 1200;
  const Int_t NTDC = 3;  // # of tdcs per board
  const Int_t NCHAN = 8;  // # of channels per tdc

  //-- load dBase and Table definition libraries
  gSystem->Load("St_base");
  gSystem->Load("StChain");
  gSystem->Load("StUtilities");
  gSystem->Load("St_Tables.so");

  gSystem->Load("StDbLib.so");
  gSystem->Load("libStDb_Tables.so");

  //-- get the singleton manager
  StDbManager* dbManager = StDbManager::Instance();

  //-- connect to the db & get an empty container
  StDbConfigNode* configNode = dbManager->initConfig("Calibrations_tof");

  //----------------------------------------
  TString ZStoreTime = "2008-11-01 00:00:00";

  //-- add table to the container with descriptor given by Database
  StDbTable* tofINLSCorr = configNode->addDbTable("tofINLSCorr");

  //-- fill structures & store times
  tofINLSCorr_st *inlcorr= new tofINLSCorr_st[NMAX*NTDC*NCHAN];

  Int_t NFILL = 0;
  Int_t NBOARD = 0;
  // read in inltable file by file.

  TH1S *hINLSCorr[NMAX][NTDC][NCHAN];
  Bool_t *hFlag[NMAX];
  for(int i=0;i<NMAX;i++) hFlag[i] = false;

  TFile *f = new TFile("INL_test.root");

  for(int iboard=0;iboard<NMAX;iboard++) {    
    if(iboard%100==0) cout << " Processing board Id = " << iboard << endl;

    for(int itdc=0;itdc<NTDC;itdc++){
      for(int ichan=0;ichan<NCHAN;ichan++) {

	char hisname[512];
	sprintf(hisname,"b_%d_tdc_%d_chan_%d",iboard,itdc,ichan);

        hINLSCorr[iboard][itdc][ichan] = (TH1S *)f->Get(hisname);

        if(!hINLSCorr[iboard][itdc][ichan]) {
//          cout << " Histogram board " << iboard << " itdc " << itdc << " ichan " << ichan << " doesn't exist!" << endl;
          continue;
        }

	inlcorr[NFILL].tdigId = (Short_t)iboard;
	inlcorr[NFILL].tdcChanId = (Short_t)(itdc*NCHAN+ichan);	
	
	for(int j=0;j<1024;j++) {
	  inlcorr[NFILL].INLCorr[j]=(Short_t)(hINLSCorr[iboard][itdc][ichan]->GetBinContent(j+1));
	}
      

	NFILL++;
      } // end of loop channel
    }  // end of loop TDC

    NBOARD++;
    hFlag[iboard] = true;

  } // end of loop board
  cout<<" prepare to upload data to DB NFILL="<<NFILL<<" NBOARD="<<NBOARD<<endl;

/*
  char rootname[100];
  sprintf(rootname,"INL_test.root");
  TFile *fout = new TFile(rootname,"recreate");
  int index = 0;
  for(int iboard=0;iboard<NMAX;iboard++) {
    if(!hFlag[iboard]) continue;

    for(int itdc=0;itdc<NTDC;itdc++){
      for(int ichan=0;ichan<NCHAN;ichan++) {
	if(!hINLSCorr[iboard][itdc][ichan]) continue;
	hINLSCorr[iboard][itdc][ichan]->Write();

	cout << " Ids = " << iboard << " " << itdc << " " << ichan << endl;
	cout << " IN Ids = " << inlcorr[index].tdigId << " " << inlcorr[index].tdcChanId << endl;
	for(int j=0;j<1024;j++) {
	  if(j%100==0)
	    cout << " INL j = " << j << " " << inlcorr[index].INLCorr[j] << endl;
	}
	index++;
      }
    }    
  }
  fout->Close();
*/

  //- store data in table
  tofINLSCorr->SetTable((char*)inlcorr, NFILL);
  //- set store time
  dbManager->setStoreTime(ZStoreTime.Data());
  //- store table in dBase
  cout<<" here "<<endl;
  dbManager->storeDbTable(tofINLSCorr);
  cout<<"uploaded"<<endl;
      //    return 0;
}
示例#18
0
bool checkDbTable(char* fileSource, char* MAXENTRY = "2030-01-01 00:00:00",char* flavor = "ofl")
{  
  bool equal=true;  
  TFile* tableFile=new TFile(fileSource);    
  
  TString tempString = fileSource;
  char slash = "/";
  int index = tempString.Last(slash);
  TString fileName = tempString(index+1,tempString.Length()-index);
  
  int index2 = fileName.Index(".");
  
  TString tableName = fileName(0,index2);
  TString date = fileName(index2+1,4) + "-" +
                 fileName(index2+5,2) + "-" +
                 fileName(index2+7,2);

  TString time = fileName(index2+10,2) + ":" +
                 fileName(index2+12,2) + ":" +
                 fileName(index2+14,2);

  TString timeStamp = date + " " + time;  

  StEmcDbHandler* dbHandler = new StEmcDbHandler();
  dbHandler->setTableName(tableName.Data());
  dbHandler->setTimeStamp(timeStamp.Data());
  dbHandler->setMaxEntryTime(MAXENTRY);    
  dbHandler->setFlavor(flavor);    

  StDbTable *table =  dbHandler->getDbTable();  
  DBTIME = dbHandler->timeToSqlTime(table->getBeginDateTime());
  if (tableName=="bemcCalib" || tableName=="bprsCalib" )
  {
    emcCalib_st* tableInFile = (emcCalib_st*) ((St_emcCalib*)tableFile->Get(tableName.Data()))->GetTable();
    emcCalib_st* tableInDb   = (emcCalib_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }
  
  if (tableName=="bsmdeCalib" || tableName=="bsmdpCalib" )
  {
    smdCalib_st* tableInFile = (smdCalib_st*) ((St_smdCalib*)tableFile->Get(tableName.Data()))->GetTable();
    smdCalib_st* tableInDb   = (smdCalib_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }
  
  if (tableName=="bemcGain" || tableName=="bprsGain" )
  {
    emcGain_st* tableInFile = (emcGain_st*) ((St_emcGain*)tableFile->Get(tableName.Data()))->GetTable();
    emcGain_st* tableInDb   = (emcGain_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }
  
  if (tableName=="bsmdeGain" || tableName=="bsmdpGain" )
  {
    smdGain_st* tableInFile = (smdGain_st*) ((St_smdGain*)tableFile->Get(tableName.Data()))->GetTable();
    smdGain_st* tableInDb   = (smdGain_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  } 
  
  if (tableName=="bemcPed" || tableName=="bprsPed" )
  {
    emcPed_st* tableInFile = (emcPed_st*) ((St_emcPed*)tableFile->Get(tableName.Data()))->GetTable();
    emcPed_st* tableInDb   = (emcPed_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }
 
  if (tableName=="bsmdePed" || tableName=="bsmdpPed" )
  {
    smdPed_st* tableInFile = (smdPed_st*) ((St_smdPed*)tableFile->Get(tableName.Data()))->GetTable();
    smdPed_st* tableInDb   = (smdPed_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }

  if (tableName=="bemcStatus" || tableName=="bprsStatus" )
  {
    emcStatus_st* tableInFile = (emcStatus_st*) ((St_emcStatus*)tableFile->Get(tableName.Data()))->GetTable();
    emcStatus_st* tableInDb   = (emcStatus_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }

  if (tableName=="bsmdeStatus" || tableName=="bsmdpStatus" )
  {
    smdStatus_st* tableInFile = (smdStatus_st*) ((St_smdStatus*)tableFile->Get(tableName.Data()))->GetTable();
    smdStatus_st* tableInDb   = (smdStatus_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }
  
  if (tableName=="emcTriggerPed")
  {
    emcTriggerPed_st* tableInFile = (emcTriggerPed_st*) ((St_emcTriggerPed*)tableFile->Get(tableName.Data()))->GetTable();
    emcTriggerPed_st* tableInDb   = (emcTriggerPed_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }
      
  if (tableName=="emcTriggerStatus")
  {
    emcTriggerStatus_st* tableInFile = (emcTriggerStatus_st*) ((St_emcTriggerStatus*)tableFile->Get(tableName.Data()))->GetTable();
    emcTriggerStatus_st* tableInDb   = (emcTriggerStatus_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }

  if (tableName=="emcTriggerLUT")
  {
    emcTriggerLUT_st* tableInFile = (emcTriggerLUT_st*) ((St_emcTRiggerLUT*)tableFile->Get(tableName.Data()))->GetTable();
    emcTriggerLUT_st* tableInDb   = (emcTriggerLUT_st*) table->GetTable();
    equal=compare(tableInFile,tableInDb);
  }
  tableFile->Close();
  delete tableInFile;
  delete dbHandler;
  return equal;

}
示例#19
0
void storetofTrgWindow() {

// year8
//  const Int_t NTRAY = 5;
// year9
//  const Int_t NTRAY = 94;
// year10+
  const Int_t NTRAY = 120;
  const Int_t NVPDTRAY = 2;
  const Int_t NMAX = 120;
  const Int_t NMTD = 2; //there is only one MTD, but it has ID=124 (and is only used in Run 10)

  //-- load dBase and Table definition libraries
  gSystem->Load("St_base");
  gSystem->Load("StChain");
  gSystem->Load("StUtilities");
  gSystem->Load("St_Tables.so");
  gSystem->Load("StDbLib.so");
  gSystem->Load("libStDb_Tables.so");

  //-- get the singleton manager
  StDbManager* dbManager = StDbManager::Instance();

  //-- connect to the db & get an empty container
  StDbConfigNode* configNode = dbManager->initConfig("Calibrations_tof");

//----------------------------------------
// History of time stamps (in GMT)
//----------------------------------------
//  TString ZStoreTime = "2007-11-01 00:00:01";
//  TString ZStoreTime = "2009-02-01 00:00:00";  // y9 1st version very loose
//  TString ZStoreTime = "2009-02-01 00:00:01";  // y9 2st version  
//  TString ZStoreTime = "2009-03-26 00:00:00";  // y9 500GeV day 85-92
//  TString ZStoreTime = "2009-04-23 21:00:00";  // 10113066-10146091
//  TString ZStoreTime = "2009-05-27 00:00:00";  // 10147124-10149036
//  TString ZStoreTime = "2009-05-29 14:00:00";  // 10149077-10150023
//  TString ZStoreTime = "2009-05-30 15:30:00";  // 10150024-10152010
//  TString ZStoreTime = "2009-06-03 16:00:00";  // 10154045-...
//
//  TString ZStoreTime = "2009-11-01 00:00:00"; // run 10 preliminary
//  TString ZStoreTime = "2009-11-01 00:01:00"; // updated version, includes MTD
//  TString ZStoreTime = "2009-11-01 00:01:01"; // updated version, (2nd attempt)includes MTD
//  TString ZStoreTime = "2010-12-10 00:00:00"; // run 11 new timing (TOCK)
//  TString ZStoreTime = "2011-12-20 00:00:01"; // run 12 new timing
//  TString ZStoreTime = "2012-03-21 19:50:00"; // run 12 new VPD timing (effective from run 13081013)
//  TString ZStoreTime = "2012-03-21 19:50:01"; // run 12 new VPD timing (corrected, effective from run 13081013)
//  TString ZStoreTime = "2012-12-20 00:00:01"; // run 13 new timing
//  TString ZStoreTime = "2013-12-20 00:00:01"; // run 14 new timing ([email protected])
  TString ZStoreTime = "2014-03-14 00:00:00"; // run 14 new timing (Au+Au@200GeV)


  //-- add table to the container with descriptor given by Database
  StDbTable* tofTrgWindow = configNode->addDbTable("tofTrgWindow");

  //-- fill structures & store times
  tofTrgWindow_st *trg = new tofTrgWindow_st[NMAX+NVPDTRAY+NMTD];

// year 10
// unsigned short cutlow[124]={
// 2828,2825,2826,2826,2832,2831,2835,2831,2836,2832,2832,2829,2833,2830,2833,
// 2831,2824,2826,2825,2824,2827,2836,2833,2830,2829,2831,2838,2833,2837,2838,
// 2836,2838,2850,2841,2847,2845,2845,2846,2843,2838,2837,2836,2835,2835,2829,
// 2824,2830,2829,2828,2827,2806,2807,2807,2814,2815,2818,2813,2821,2826,2828,
// 2891,2901,2891,2894,2891,2897,2894,2900,2899,2899,2898,2904,2905,2904,2898,
// 2904,2907,2912,2916,2916,2908,2914,2908,2914,2903,2902,2907,2901,2901,2898,
// 2895,2894,2897,2896,2896,2906,2903,2908,2907,2914,2911,2698,2913,2915,2915,
// 2916,2914,2913,2913,2912,2914,2909,2905,2908,2902,2898,2902,2895,2899,2899,
// 2857,2921,0,2900};
// unsigned short cuthi[124]={
// 2903,2900,2901,2901,2907,2906,2910,2906,2911,2907,2907,2904,2908,2905,2908,
// 2906,2899,2901,2900,2899,2902,2911,2908,2905,2904,2906,2913,2908,2912,2913,
// 2911,2913,2925,2916,2922,2920,2920,2921,2918,2913,2912,2911,2910,2910,2904,
// 2899,2905,2904,2903,2902,2881,2882,2882,2889,2890,2893,2888,2896,2901,2903,
// 2966,2976,2966,2969,2966,2972,2969,2975,2974,2974,2973,2979,2980,2979,2973,
// 2979,2982,2987,2991,2991,2983,2989,2983,2989,2978,2977,2982,2976,2976,2973,
// 2970,2969,2972,2971,2971,2981,2978,2983,2982,2989,2986,2773,2988,2990,2990,
// 2991,2989,2988,2988,2987,2989,2984,2980,2983,2977,2973,2977,2970,2974,2974,
// 2932,2996,0,2975};

// year 11
//unsigned short cutlow[124]={
//2816,2817,2813,2817,2820,2822,2820,2823,2823,2813,2820,2824,2820,2817,2825,
//2824,2815,2813,2810,2816,2824,2824,2823,2825,2698,2820,2831,2832,2828,2829,
//2830,2837,2839,2835,2840,2837,2840,2838,2840,2834,2836,2824,2826,2830,2822,
//2808,2822,2823,2824,2823,2799,2800,2799,2798,2809,2811,2810,2793,2803,2816,
//2890,2892,2886,2885,2879,2889,2886,2887,2891,2892,2883,2892,2895,2883,2897,
//2884,2904,2904,2902,2889,2901,2904,2904,2902,2884,2897,2895,2892,2895,2889,
//2885,2881,2887,2890,2886,2898,2900,2901,2902,2908,2910,2698,2907,2909,2910,
//2907,2908,2907,2906,2901,2909,2898,2901,2898,2895,2899,2900,2887,2888,2887,
//2850,2913, 0,0};
//unsigned short cuthi[124]={
//2901,2902,2898,2902,2905,2907,2905,2908,2908,2898,2905,2909,2905,2902,2910,
//2909,2900,2898,2895,2901,2909,2909,2908,2910,2783,2905,2916,2917,2913,2914,
//2915,2922,2924,2920,2925,2922,2925,2923,2925,2919,2921,2909,2911,2915,2907,
//2893,2907,2908,2909,2908,2884,2885,2884,2883,2894,2896,2895,2878,2888,2901,
//2975,2977,2971,2970,2964,2974,2971,2972,2976,2977,2968,2977,2980,2968,2982,
//2969,2989,2989,2987,2974,2986,2989,2989,2987,2969,2982,2980,2977,2980,2974,
//2970,2966,2972,2975,2971,2983,2985,2986,2987,2993,2995,2783,2992,2994,2995,
//2992,2993,2992,2991,2986,2994,2983,2986,2983,2980,2984,2985,2972,2973,2972,
//2935,2998,0,0};

// year 12
// unsigned short cutlow[124]={
// 2881,2873,2873,2873,2893,2876,2882,2878,2888,2881,2885,2878,2884,2876,2887,
// 2886,2877,2876,2880,2865,2804,2802,2799,2802,2798,2800,2810,2811,2807,2813,
// 2817,2812,2796,2806,2815,2812,2808,2809,2815,2807,2805,2811,2805,2803,2799,
// 2790,2801,2801,2804,2807,2860,2862,2862,2868,2871,2865,2870,2867,2872,2871,
// 2872,2864,2866,2864,2863,2868,2865,2871,2871,2862,2861,2867,2875,2871,2873,
// 2871,2878,2880,2888,2883,2883,2872,2884,2882,2874,2873,2874,2871,2867,2860,
// 2861,2866,2863,2863,2698,2876,2880,2879,2881,2878,2877,2698,2891,2890,2887,
// 2880,2891,2892,2881,2887,2885,2874,2877,2878,2874,2877,2888,2876,2874,2865,
// 2826,2889,0,0};
// unsigned short cuthi[124]={
// 2966,2958,2958,2958,2978,2961,2967,2963,2973,2966,2970,2963,2969,2961,2972,
// 2971,2962,2961,2965,2950,2889,2887,2884,2887,2883,2885,2895,2896,2892,2898,
// 2902,2897,2881,2891,2900,2897,2893,2894,2900,2892,2890,2896,2890,2888,2884,
// 2875,2886,2886,2889,2892,2945,2947,2947,2953,2956,2950,2955,2952,2957,2956,
// 2957,2949,2951,2949,2948,2953,2950,2956,2956,2947,2946,2952,2960,2956,2958,
// 2956,2963,2965,2973,2968,2968,2957,2969,2967,2959,2958,2959,2956,2952,2945,
// 2946,2951,2948,2948,2783,2961,2965,2964,2966,2963,2962,2783,2976,2975,2972,
// 2965,2976,2977,2966,2972,2970,2959,2962,2963,2959,2962,2973,2961,2959,2950,
// 2911,2974,0,0};
// 
// // year 12 - updated VPD window to lower TOF deadtime (pp500 -- March 22, 2012)
// //  cutlow[120]= 230 ; cuthi[120]= 290;  // VPD West
// //  cutlow[121]= 245 ; cuthi[121]= 305;  // VPD East
// // year 12 - correct updated VPD window to lower TOF deadtime (pp500 -- March 22, 2012, [5/1'12])
//   cutlow[120]= 2834 ; cuthi[120]= 2919;  // VPD West
//   cutlow[121]= 2896 ; cuthi[121]= 2981;  // VPD East


// year 13
// notes: trays 46, 102, and 106 are interpolated values (trays are dead)
// double cutlow[122]={
// 2815,2814,2815,2815,2822,2821,2824,2823,2821,2824,2822,2821,2821,2820,2823,
// 2822,2814,2816,2815,2814,2740,2741,2742,2740,2739,2741,2746,2749,2746,2746,
// 2745,2754,2755,2754,2756,2754,2756,2753,2755,2750,2750,2748,2749,2745,2738,
// 2738,2739,2739,2741,2738,2796,2801,2795,2804,2806,2807,2807,2807,2814,2814,
// 2808,2808,2801,2803,2802,2806,2803,2806,2804,2806,2806,2811,2814,2810,2814,
// 2810,2819,2820,2822,2820,2820,2819,2818,2820,2810,2812,2810,2811,2810,2804,
// 2804,2804,2804,2804,2805,2817,2816,2817,2817,2825,2826,2825,2825,2825,2825,
// 2825,2826,2826,2825,2824,2825,2816,2818,2817,2816,2818,2816,2807,2808,2808,
// 2764,2827};
// double cuthi[122]={
// 2900,2899,2900,2900,2907,2906,2909,2908,2906,2909,2907,2906,2906,2905,2908,
// 2907,2899,2901,2900,2899,2825,2826,2827,2825,2824,2826,2831,2834,2831,2831,
// 2830,2839,2840,2839,2841,2839,2841,2838,2840,2835,2835,2833,2834,2830,2823,
// 2823,2824,2824,2826,2823,2881,2886,2880,2889,2891,2892,2892,2892,2899,2899,
// 2893,2893,2886,2888,2887,2891,2888,2891,2889,2891,2891,2896,2899,2895,2899,
// 2895,2904,2905,2907,2905,2905,2904,2903,2905,2895,2897,2895,2896,2895,2889,
// 2889,2889,2889,2889,2890,2902,2901,2902,2902,2910,2911,2910,2910,2910,2910,
// 2910,2911,2911,2910,2909,2910,2901,2903,2902,2901,2903,2901,2892,2893,2893,
// 2849,2912};


// year 14 -- [email protected] initial
// double cutlow[122]={
// 2909,2910,2910,2911,2918,2917,2916,2917,2916,2917,2917,2916,2915,2916,2918,
// 2918,2909,2910,2910,2911,2836,2852,2837,2836,2834,2834,2842,2845,2841,2841,
// 2841,2850,2851,2850,-23,2850,2851,2849,2851,2843,2843,2844,2844,2841,2834,
// 2834,2835,2836,2837,2834,2892,2894,2892,2900,2900,2903,2903,2902,2909,2909,
// 2906,2906,2898,2898,2899,2903,2901,2902,2901,2903,2903,2908,2911,2907,2910,
// 2908,2915,2918,2918,2916,2916,2916,2916,2916,2907,2907,2907,2907,2907,2900,
// 2901,2902,2902,2901,2902,2914,2914,2914,2914,2923,2922,-23,-23,2922,2922,
// 2922,2921,2923,2922,2922,2922,2914,2916,2913,2913,2914,2913,2906,2906,2905,
// 2859,2921};
// double cuthi[122]={
// 2994,2995,2995,2996,3003,3002,3001,3002,3001,3002,3002,3001,3000,3001,3003,
// 3003,2994,2995,2995,2996,2921,2937,2922,2921,2919,2919,2927,2930,2926,2926,
// 2926,2935,2936,2935,62,2935,2936,2934,2936,2928,2928,2929,2929,2926,2919,
// 2919,2920,2921,2922,2919,2977,2979,2977,2985,2985,2988,2988,2987,2994,2994,
// 2991,2991,2983,2983,2984,2988,2986,2987,2986,2988,2988,2993,2996,2992,2995,
// 2993,3000,3003,3003,3001,3001,3001,3001,3001,2992,2992,2992,2992,2992,2985,
// 2986,2987,2987,2986,2987,2999,2999,2999,2999,3008,3007,62,62,3007,3007,
// 3007,3006,3008,3007,3007,3007,2999,3001,2998,2998,2999,2998,2991,2991,2990,
// 2944,3006};


// year 14 -- Au+Au@200GeV
double cutlow[122]={
2927,2927,2927,2927,2933,2934,2933,2934,2933,2934,2933,2934,2932,2932,2935,
2934,2927,2927,2927,-23,2853,-23,2854,2853,2852,2852,2859,2861,2858,2858,
2858,2866,2868,2866,-23,2866,2868,2866,2868,2861,2861,2861,2861,2858,2851,
2852,2853,2853,2854,2852,2908,2912,2908,2916,2917,2919,2919,2919,2927,2927,
2922,2922,2914,2914,2914,2918,2916,2918,2916,2918,2918,2924,2927,2923,2926,
2923,2931,2933,2933,2931,2931,2931,2931,2931,2923,2924,2923,2923,2923,2916,
2916,2916,2917,2916,2917,2930,2930,2930,2930,2938,2938,-23,-23,2938,2937,
2937,2937,2938,2938,2937,2937,2929,2931,2929,2929,2929,2929,2921,2921,2922,
2877,2937};
double cuthi[122]={
3012,3012,3012,3012,3018,3019,3018,3019,3018,3019,3018,3019,3017,3017,3020,
3019,3012,3012,3012,62,2938,62,2939,2938,2937,2937,2944,2946,2943,2943,
2943,2951,2953,2951,62,2951,2953,2951,2953,2946,2946,2946,2946,2943,2936,
2937,2938,2938,2939,2937,2993,2997,2993,3001,3002,3004,3004,3004,3012,3012,
3007,3007,2999,2999,2999,3003,3001,3003,3001,3003,3003,3009,3012,3008,3011,
3008,3016,3018,3018,3016,3016,3016,3016,3016,3008,3009,3008,3008,3008,3001,
3001,3001,3002,3001,3002,3015,3015,3015,3015,3023,3023,62,62,3023,3022,
3022,3022,3023,3023,3022,3022,3014,3016,3014,3014,3014,3014,3006,3006,3007,
2962,3022};



// ---------------------------------------------
//- Prepare table
  for(int i=0;i<NMAX+NVPDTRAY;i++) {
    trg[i].trgWindow_Min = cutlow[i];
    trg[i].trgWindow_Max = cuthi[i];
    cout << " tray = " << i+1 << " min = " << trg[i].trgWindow_Min << " max = " << trg[i].trgWindow_Max << endl;
  }

// Store data in table
  tofTrgWindow->SetTable((char*)trg, NMAX+NVPDTRAY);
//- set store time
  dbManager->setStoreTime(ZStoreTime.Data());
// Store table in dBase
  cout<<" here "<<endl;
  dbManager->storeDbTable(tofTrgWindow);
  cout<<"uploaded"<<endl;
}
示例#20
0
int write_trigger_thresholds(int runNumber = 13078009)
{

  // Load all required libraries
  gROOT->Macro("loadMuDst.C");
  gROOT->Macro("LoadLogger.C");
  gSystem->Load("St_base.so");
  gSystem->Load("libStDb_Tables.so");
  gSystem->Load("StDbLib.so");

  gSystem->Load("StEmcRawMaker");
  gSystem->Load("StEmcADCtoEMaker");
  gSystem->Load("StEEmcUtil");
  gSystem->Load("StEEmcDbMaker");
  gSystem->Load("StTriggerUtilities");
  //******//
  gSystem->Setenv("DB_ACCESS_MODE","write");
  //******//  
  // Initialize db manager
  ///*
  StDbManager* mgr = StDbManager::Instance();
  StDbConfigNode* node = mgr->initConfig("Calibrations_trg");
  StDbTable* dbtable = node->addDbTable("triggerThreshold");
  // beginTime timestamp in MySQL format: "YYYY-MM-DD HH:mm:ss"
  ifstream intime(Form("beginTimes/%d.beginTimes.txt", runNumber));
  if(!intime){
    cout<<"can't open beginTime file"<<endl;
    return 0;
  }
  char date[10];
  char time[8];
  intime >> date >> time;
  TString storeTime(Form("%s %s", date, time));
  //******//
  //time stamp 2012-07-30 00:00:0X for test purposes
  //TString storeTime("2012-07-30 00:00:02");
  //******//
  mgr->setStoreTime(storeTime.Data());
 // */
  // Create your c-struct
  triggerThreshold_st table;
  
  // Fill structure with data 
  // sample setup for a single channel, please add more channels!
  strcpy(table.comments, Form("run%d triggerThreshold uploaded by zchang", runNumber)); 
  cout<<"comments set to "<<table.comments<<endl;

  TObjArray objarr = readOnline(runNumber);
  TBufferFile buf(TBuffer::kWrite);
  buf << &objarr;
  objarr.Delete();

  cout<<"Buffer size: "<<buf.BufferSize()<<endl;

  memset(table.trigthr, 0, buf.BufferSize());
  memcpy(table.trigthr, buf.Buffer(), buf.BufferSize());
  table.size = buf.BufferSize();

  //******//
  // Store data to the StDbTable
  dbtable->SetTable((char*)&table, 1);
  
  // uncomment next line to set "sim" flavor. "ofl" flavor is set by default, no need to set it.
  // dbtable->setFlavor("sim");
  
  // Store table to database
  cout<<"Storing Db table: "<< mgr->storeDbTable(dbtable) << endl;
  //******//

  ofstream out(Form("buffer/%d.trigthr.buffer.out", runNumber));
  assert(out);
  out.write(buf.Buffer(),buf.BufferSize());
  out.close();

  return 1;
}