00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <iostream>
00016 #include <fstream>
00017 #include <string>
00018 #include <iomanip>
00019 using namespace std;
00020
00021
00022 void storetofTDIGOnTray()
00023
00024
00025 {
00026
00027 const Int_t NBOARD = 8;
00028
00029
00030
00031 const Int_t NTRAY = 94;
00032 const Int_t NVPDTRAY = 2;
00033 const Int_t NMAX = 120;
00034
00035
00036 gSystem->Load("St_base");
00037 gSystem->Load("StChain");
00038 gSystem->Load("StUtilities");
00039 gSystem->Load("St_Tables.so");
00040
00041 gSystem->Load("StDbLib.so");
00042 gSystem->Load("libStDb_Tables.so");
00043
00044
00045 StDbManager* dbManager = StDbManager::Instance();
00046
00047
00048 StDbConfigNode* configNode = dbManager->initConfig("Calibrations_tof");
00049
00050
00051
00052 TString ZStoreTime = "2008-11-01 00:00:00";
00053
00054
00055 StDbTable* tofTDIGOnTray = configNode->addDbTable("tofTDIGOnTray");
00056
00057
00058 tofTDIGOnTray_st *tdig = new tofTDIGOnTray_st[NMAX+NVPDTRAY];
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 Short_t validtrayId[NTRAY+NVPDTRAY] =
00075 { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
00076 11, 12, 15, 16, 17, 18, 19, 20,
00077 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
00078 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
00079 41, 44, 45, 46, 47, 48, 49, 50,
00080 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
00081 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
00082 71, 72, 75, 76, 77, 78,
00083
00084 97, 98, 99, 100,
00085 101, 104, 105, 106, 107, 108, 109, 110,
00086 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
00087 121, 122};
00088 Short_t trayId[NMAX] = { 68, 58, 63, 6, 71, 67, 61, 50, 57, 60,
00089 47, 46, 0, 0, 64, 72, 62, 42, 14, 11,
00090 28, 7, 25, 33, 19, 17, 37, 21, 30, 35,
00091 8, 20, 31, 27, 12, 9, 10, 29, 34, 13,
00092 16, 0, 0, 36, 39, 23, 32, 15, 24, 18,
00093 59, 66, 70, 38, 41, 45, 52, 54, 53, 55,
00094 84, 75, 94, 91, 95, 48, 65, 22, 40, 49,
00095 5, 2, 0, 0, 1, 4, 3, 51, 0, 0,
00096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00097 0, 0, 0, 0, 0, 0, 77, 89, 87, 90,
00098 93, 0, 0, 73, 76, 83, 69, 80, 82, 74,
00099 123, 79, 43, 86, 85,122, 81, 92, 96, 78};
00100
00101
00102 Short_t tdigId[NMAX][NBOARD];
00103 Short_t tdigId_Vpd[NVPDTRAY][NBOARD] = { 89, 91, 1102, 0, 885, 82, 0, 0,
00104 85, 79, 1101, 0, 80, 83, 0, 0};
00105
00106 ifstream infile("TDIGMap");
00107 Short_t tId[NTRAY], boardId[NTRAY][NBOARD];
00108 for(int i=0;i<NTRAY;i++) {
00109 for(int j=0;j<NBOARD;j++) {
00110 int trayNum, iboard, boardNum;
00111 infile >> trayNum >> iboard >> boardNum;
00112 cout << trayNum << " " << boardNum << endl;
00113 tId[i] = (Short_t)trayNum;
00114 boardId[i][iboard-1] = (Short_t)boardNum;
00115 }
00116 }
00117 infile.close();
00118
00119 for(int i=0;i<NMAX;i++) {
00120 for(int j=0;j<NBOARD;j++) {
00121 tdigId[i][j] = 0;
00122 }
00123
00124 Short_t thisTray = trayId[i];
00125 int index = -1;
00126 for(int j=0;j<NTRAY;j++) {
00127 if(thisTray==tId[j]) {
00128 index = j;
00129 break;
00130 }
00131 }
00132
00133 cout << "tray = " << thisTray << " index = " << index << endl;
00134 if(index<0||index>=NTRAY) continue;
00135 for(int j=0;j<NBOARD;j++) {
00136 tdigId[i][j] = boardId[index][j];
00137 }
00138 }
00139
00140
00141
00142
00143
00144
00145
00146
00147 for(int i=0;i<NMAX+NVPDTRAY;i++) {
00148 tdig[i].trayId = i+1;
00149 for(int j=0;j<NBOARD;j++) {
00150 if(i<NMAX) {
00151 tdig[i].tdigId[j] = tdigId[i][j];
00152 } else {
00153 tdig[i].tdigId[j] = tdigId_Vpd[i-NMAX][j];
00154 }
00155 }
00156 }
00157
00158 ofstream outData("testTDIGMap.dat");
00159 for(int i=0;i<NMAX+NVPDTRAY;i++) {
00160 for(int j=0;j<NBOARD;j++) {
00161 outData << setw(5) << tdig[i].tdigId[j];
00162 }
00163 outData << endl;
00164 }
00165 outData.close();
00166
00167
00168 tofTDIGOnTray->SetTable((char*)tdig, NMAX+NVPDTRAY);
00169
00170 dbManager->setStoreTime(ZStoreTime.Data());
00171
00172 cout<<" here "<<endl;
00173 dbManager->storeDbTable(tofTDIGOnTray);
00174 cout<<"uploaded"<<endl;
00175
00176 }
00177