00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 std::string DBTIME;
00024 bool checkDbTable(char* fileSource, char* MAXENTRY = "2030-01-01 00:00:00",char* flavor = "ofl")
00025 {
00026 bool equal=true;
00027 TFile* tableFile=new TFile(fileSource);
00028
00029 TString tempString = fileSource;
00030 char slash = '/';
00031 int index = tempString.Last(slash);
00032 TString fileName = tempString(index+1,tempString.Length()-index);
00033
00034 int index2 = fileName.Index(".");
00035
00036 TString tableName = fileName(0,index2);
00037 TString date = fileName(index2+1,4) + "-" +
00038 fileName(index2+5,2) + "-" +
00039 fileName(index2+7,2);
00040
00041 TString time = fileName(index2+10,2) + ":" +
00042 fileName(index2+12,2) + ":" +
00043 fileName(index2+14,2);
00044
00045 TString timeStamp = date + " " + time;
00046
00047 StEmcDbHandler* dbHandler = new StEmcDbHandler();
00048 cout << "Requesting table name=" << tableName << ", timestamp=" << timeStamp << " flavor=" << flavor << " maxentry=" << MAXENTRY << endl;
00049 dbHandler->setTableName(tableName.Data());
00050 dbHandler->setTimeStamp(timeStamp.Data());
00051 dbHandler->setMaxEntryTime(MAXENTRY);
00052 dbHandler->setFlavor(flavor);
00053
00054 StDbTable *table = dbHandler->getDbTable();
00055 DBTIME = dbHandler->timeToSqlTime(table->getBeginDateTime());
00056 if (tableName=="bemcCalib" || tableName=="bprsCalib" )
00057 {
00058 emcCalib_st* tableInFile = (emcCalib_st*) ((St_emcCalib*)tableFile->Get(tableName.Data()))->GetTable();
00059 emcCalib_st* tableInDb = (emcCalib_st*) table->GetTable();
00060 equal=compare(tableInFile,tableInDb);
00061 }
00062
00063 if (tableName=="bsmdeCalib" || tableName=="bsmdpCalib" )
00064 {
00065 smdCalib_st* tableInFile = (smdCalib_st*) ((St_smdCalib*)tableFile->Get(tableName.Data()))->GetTable();
00066 smdCalib_st* tableInDb = (smdCalib_st*) table->GetTable();
00067 equal=compare(tableInFile,tableInDb);
00068 }
00069
00070 if (tableName=="bemcGain" || tableName=="bprsGain" )
00071 {
00072 emcGain_st* tableInFile = (emcGain_st*) ((St_emcGain*)tableFile->Get(tableName.Data()))->GetTable();
00073 emcGain_st* tableInDb = (emcGain_st*) table->GetTable();
00074 equal=compare(tableInFile,tableInDb);
00075 }
00076
00077 if (tableName=="bsmdeGain" || tableName=="bsmdpGain" )
00078 {
00079 smdGain_st* tableInFile = (smdGain_st*) ((St_smdGain*)tableFile->Get(tableName.Data()))->GetTable();
00080 smdGain_st* tableInDb = (smdGain_st*) table->GetTable();
00081 equal=compare(tableInFile,tableInDb);
00082 }
00083
00084 if (tableName=="bemcPed" || tableName=="bprsPed" )
00085 {
00086 emcPed_st* tableInFile = (emcPed_st*) ((St_emcPed*)tableFile->Get(tableName.Data()))->GetTable();
00087 emcPed_st* tableInDb = (emcPed_st*) table->GetTable();
00088 equal=compare(tableInFile,tableInDb);
00089 }
00090
00091 if (tableName=="bsmdePed" || tableName=="bsmdpPed" )
00092 {
00093 smdPed_st* tableInFile = (smdPed_st*) ((St_smdPed*)tableFile->Get(tableName.Data()))->GetTable();
00094 smdPed_st* tableInDb = (smdPed_st*) table->GetTable();
00095 equal=compare(tableInFile,tableInDb);
00096 }
00097
00098 if (tableName=="bemcStatus" || tableName=="bprsStatus" )
00099 {
00100 emcStatus_st* tableInFile = (emcStatus_st*) ((St_emcStatus*)tableFile->Get(tableName.Data()))->GetTable();
00101 emcStatus_st* tableInDb = (emcStatus_st*) table->GetTable();
00102 equal=compare(tableInFile,tableInDb);
00103 }
00104
00105 if (tableName=="bsmdeStatus" || tableName=="bsmdpStatus" )
00106 {
00107 smdStatus_st* tableInFile = (smdStatus_st*) ((St_smdStatus*)tableFile->Get(tableName.Data()))->GetTable();
00108 smdStatus_st* tableInDb = (smdStatus_st*) table->GetTable();
00109 equal=compare(tableInFile,tableInDb);
00110 }
00111
00112 if (tableName=="emcTriggerPed")
00113 {
00114 emcTriggerPed_st* tableInFile = (emcTriggerPed_st*) ((St_emcTriggerPed*)tableFile->Get(tableName.Data()))->GetTable();
00115 emcTriggerPed_st* tableInDb = (emcTriggerPed_st*) table->GetTable();
00116 equal=compare(tableInFile,tableInDb);
00117 }
00118
00119 if (tableName=="emcTriggerStatus")
00120 {
00121 emcTriggerStatus_st* tableInFile = (emcTriggerStatus_st*) ((St_emcTriggerStatus*)tableFile->Get(tableName.Data()))->GetTable();
00122 emcTriggerStatus_st* tableInDb = (emcTriggerStatus_st*) table->GetTable();
00123 equal=compare(tableInFile,tableInDb);
00124 }
00125
00126 if (tableName=="emcTriggerLUT")
00127 {
00128 emcTriggerLUT_st* tableInFile = (emcTriggerLUT_st*) ((St_emcTRiggerLUT*)tableFile->Get(tableName.Data()))->GetTable();
00129 emcTriggerLUT_st* tableInDb = (emcTriggerLUT_st*) table->GetTable();
00130 equal=compare(tableInFile,tableInDb);
00131 }
00132 tableFile->Close();
00133 delete tableFile;
00134 delete dbHandler;
00135 cout << (equal ? "EQUAL" : "NOT EQUAL") << endl;
00136 return equal;
00137
00138 }
00139
00140
00141
00142 bool compare(emcCalib_st* t1, emcCalib_st* t2)
00143 {
00144 bool equal = true;
00145 for(int i = 0; i<4800;i++)
00146 {
00147 for(int j=0;j<5;j++)
00148 if(t1->AdcToE[i][j]!=t2->AdcToE[i][j]) equal = false;
00149 if(t1->Status[i]!=t2->Status[i]) equal = false;
00150 }
00151 return equal;
00152 }
00153
00154 bool compare(smdCalib_st* t1, smdCalib_st* t2)
00155 {
00156 bool equal = true;
00157 for(int i = 0; i<18000;i++)
00158 {
00159 for(int j=0;j<5;j++)
00160 if(t1->AdcToE[i][j]!=t2->AdcToE[i][j]) equal = false;
00161 if(t1->Status[i]!=t2->Status[i]) equal = false;
00162 }
00163 return equal;
00164 }
00165
00166 bool compare(emcStatus_st* t1, emcStatus_st* t2)
00167 {
00168 bool equal = true;
00169 for(int i = 0; i<4800;i++)
00170 {
00171 if(t1->Status[i]!=t2->Status[i])
00172 {
00173 equal = false;
00174
00175 }
00176 }
00177 return equal;
00178 }
00179
00180 bool compare(smdStatus_st* t1, smdStatus_st* t2)
00181 {
00182 bool equal = true;
00183 for(int i = 0; i<18000;i++)
00184 {
00185 if(t1->Status[i]!=t2->Status[i]) equal = false;
00186 }
00187 return equal;
00188 }
00189
00190 bool compare(emcGain_st* t1, emcGain_st* t2)
00191 {
00192 bool equal = true;
00193 for(int i = 0; i<4800;i++)
00194 {
00195 if(t1->Gain[i]!=t2->Gain[i]) equal = false;
00196 }
00197 return equal;
00198 }
00199
00200 bool compare(smdGain_st* t1, smdGain_st* t2)
00201 {
00202 bool equal = true;
00203 for(int i = 0; i<18000;i++)
00204 {
00205 if(t1->Gain[i]!=t2->Gain[i]) equal = false;
00206 }
00207 return equal;
00208 }
00209
00210 bool compare(emcPed_st* t1, emcPed_st* t2)
00211 {
00212 bool equal = true;
00213 for(int i = 0; i<4800;i++)
00214 {
00215 if(t1->AdcPedestal[i]!=t2->AdcPedestal[i]) equal = false;
00216 if(t1->AdcPedestalRMS[i]!=t2->AdcPedestalRMS[i]) equal = false;
00217 if(t1->Status[i]!=t2->Status[i]) equal = false;
00218 }
00219 return equal;
00220 }
00221
00222 bool compare(smdPed_st* t1, smdPed_st* t2)
00223 {
00224 bool equal = true;
00225 for(int i = 0; i<18000;i++)
00226 {
00227 if(t1->AdcPedestal[i][0]!=t2->AdcPedestal[i][0]) equal = false;
00228 if(t1->AdcPedestal[i][1]!=t2->AdcPedestal[i][1]) equal = false;
00229 if(t1->AdcPedestal[i][2]!=t2->AdcPedestal[i][2]) equal = false;
00230 if(t1->AdcPedestalRMS[i]!=t2->AdcPedestalRMS[i]) equal = false;
00231 if(t1->Status[i]!=t2->Status[i]) equal = false;
00232 }
00233 return equal;
00234 }
00235
00236 bool compare(emcTriggerPed_st* t1, emcTriggerPed_st* t2)
00237 {
00238 bool equal = true;
00239 for(int i = 0; i<4800;i++)
00240 {
00241 if(t1->PedShift!=t2->PedShift) equal = false;
00242 for(int c=0;c<30;c++)
00243 {
00244 for(int p=0;p<10;p++)
00245 if(t1->BitConversionMode[c][p]!=t2->BitConversionMode[c][p]) equal = false;
00246 for(int p=0;p<160;p++)
00247 if(t1->Ped[c][p]!=t2->Ped[c][p]) equal = false;
00248 }
00249 }
00250 return equal;
00251 }
00252
00253 bool compare(emcTriggerStatus_st* t1, emcTriggerStatus_st* t2)
00254 {
00255 bool equal = true;
00256 for(int i = 0; i<4800;i++)
00257 {
00258 if(t1->PedShift!=t2->PedShift) equal = false;
00259 for(int c=0;c<30;c++)
00260 {
00261 for(int p=0;p<10;p++)
00262 {
00263 if(t1->PatchStatus[c][p]!=t2->PatchStaus[c][p]) equal = false;
00264 if(t1->HighTowerStatus[c][p]!=t2->HighTowerStaus[c][p]) equal = false;
00265 }
00266 for(int p=0;p<160;p++)
00267 if(t1->TowerStatus[c][p]!=t2->TowerStatus[c][p]) equal = false;
00268 }
00269 }
00270 return equal;
00271 }
00272
00273 bool compare(emcTriggerLUT_st* t1, emcTriggerLUT_st* t2)
00274 {
00275 if(notLoaded) loadLibrariesCompare();
00276 bool equal = true;
00277 for(int c=0;c<30;c++)
00278 {
00279 for(int p=0;p<10;p++)
00280 {
00281 if(t1->FormulaTag[c][p]!=t2->FormulaTag[c][p]) equal = false;
00282 if(t1->FormulaParameter0[c][p]!=t2->FormulaParameter0[c][p]) equal = false;
00283 if(t1->FormulaParameter1[c][p]!=t2->FormulaParameter1[c][p]) equal = false;
00284 if(t1->FormulaParameter2[c][p]!=t2->FormulaParameter2[c][p]) equal = false;
00285 if(t1->FormulaParameter3[c][p]!=t2->FormulaParameter3[c][p]) equal = false;
00286 if(t1->FormulaParameter4[c][p]!=t2->FormulaParameter4[c][p]) equal = false;
00287 if(t1->FormulaParameter5[c][p]!=t2->FormulaParameter5[c][p]) equal = false;
00288 }
00289 }
00290 return equal;
00291 }
00292