// ============================================================================= // ============================================================================= uint32_t getNFecsPerBranch(int32_t iPartition, int32_t iBranch) { int32_t retval = 0; if ( (iPartition>2) && (iPartition<5) ) retval = 10; else if ( (iPartition>0) && (iPartition<3) ) retval = 9; else if ( (iPartition==0) && (iBranch==0 ) ) retval = 8; else if ( (iPartition==0) && (iBranch==1 ) ) retval = 7; return retval; } // ============================================================================= // ============================================================================= int32_t dumptpc() { // // Get values from TPC Table for a given tag or a list of tags // string filename = "TPCTagInfo.txt"; ofstream *outFile = new ofstream(); outFile->open(filename.c_str()); try { for ( uint32_t iTag=0; iTaggetSqlSelectTpcRow(arguments.pSelectTagList.at(iTag))); Resultset rs = st.GetResultset(); while ( rs.Next() ) { *outFile << rs.Get(1) << ", " << rs.Get(5) << endl; } } } catch(exception &ex) { cout << ex.what() << endl; outFile->close(); delete outFile; } cout << "Dumped to file " << filename << endl; outFile->close(); delete outFile; return 1; } // ============================================================================= // ============================================================================= int32_t dumpcru() { // // Dump values from CRU table for list of tags // string filename = "TPCCRUdata.txt"; ofstream *outFile = new ofstream(); outFile->open(filename); for ( uint32_t iTag=0; iTaggetSqlSelectCruRow(arguments.pSelectTagList.at(iTag), arguments.pSelectSideList.at(iSide), arguments.pSelectSectorList.at(iSec), arguments.pSelectPartitionList.at(iPartition), arguments.pSelectCruList.at(iCru)); try { Statement st(con); st.Execute(query); Resultset rs = st.GetResultset(); int32_t cruNumber = arguments.pSelectSideList.at(iSide)*180 + arguments.pSelectSectorList.at(iSec)*10 + arguments.pSelectPartitionList.at(iPartition)*2 + arguments.pSelectCruList.at(iCru); while ( rs.Next() ) { *outFile << cruNumber << " " << rs.Get(31) << "," << rs.Get(41) << "," << rs.Get(40) << "," << rs.Get(34) << "," << rs.Get(42) << "," << rs.Get(39) << "," << rs.Get(43) << endl; } } catch (exception &ex) { cout << ex.what() << endl; outFile->close(); delete outFile; } } } } } } cout << "Dumped to file " << filename << endl; outFile->close(); delete outFile; return 1; } // ============================================================================= // ============================================================================= int32_t dumpfec() { // // Dump the values from the FEC table // string filename = "TPCFECdata.txt"; ofstream *outFile = new ofstream(); outFile->open(filename); for ( uint32_t iTag=0; iTaggetSqlSelectFecRow(arguments.pSelectTagList.at(iTag), arguments.pSelectSideList.at(iSide), arguments.pSelectSectorList.at(iSec), arguments.pSelectPartitionList.at(iPartition), arguments.pSelectBranchList.at(iBranch), arguments.pSelectFecList.at(iFec)); try { int32_t cruNumber = arguments.pSelectSideList.at(iSide)*180 + arguments.pSelectSectorList.at(iSec)*10 + arguments.pSelectPartitionList.at(iPartition)*2; // Only master CRUs int32_t linkNumber = arguments.pSelectBranchList.at(iBranch)*12 + arguments.pSelectFecList.at(iFec); // Statement st(con); st.Execute(query); Resultset rs = st.GetResultset(); while ( rs.Next() ) { *outFile << cruNumber << " " << linkNumber << " " << rs.Get(5) << "," << rs.Get(6) << endl; } } catch (exception& ex) { cout << ex.what() << endl; outFile->close(); delete outFile; } } } } } } } cout << "Dumped to file " << filename << endl; outFile->close(); delete outFile; return 1; } // ============================================================================= // ============================================================================= int32_t dumpUL(string tablename) { // // Get row values from one of the UL tables // string filename = ""; ofstream *outFile = new ofstream(); if ( (tablename.compare("PEDESTAL" )==0) || (tablename.compare("pedestal" )==0) ) filename = "TPCPedestals.txt"; else if ( (tablename.compare("ZSTHR" )==0) || (tablename.compare("zsthr" )==0) ) filename = "TPCThresholdMap.txt"; else if ( (tablename.compare("ON_CHANNEL")==0) || (tablename.compare("on_channel")==0) ) filename = "TPCOnChannel.txt"; else if ( (tablename.compare("CMCORR" )==0) || (tablename.compare("cmcorr" )==0) ) filename = "TPCCMkValues.txt"; else if ( (tablename.compare("ITCORR1" )==0) || (tablename.compare("itcorr1" )==0) ) filename = "TPCITfraction.txt"; else if ( (tablename.compare("ITCORR2" )==0) || (tablename.compare("itcorr2" )==0) ) filename = "TPCITexpLambda.txt"; else filename = "bla.txt"; outFile->open(filename); for ( uint32_t iTag=0; iTaggetSqlSelectUlRow(tablename, arguments.pSelectTagList.at(iTag), arguments.pSelectSideList.at(iSide), arguments.pSelectSectorList.at(iSec), arguments.pSelectPartitionList.at(iPartition), arguments.pSelectCruList.at(iCru), arguments.pSelectBranchList.at(iBranch), arguments.pSelectFecList.at(iFec)); try { int32_t cruNumber = arguments.pSelectSideList.at(iSide)*180 + arguments.pSelectSectorList.at(iSec)*10 + arguments.pSelectPartitionList.at(iPartition)*2 + arguments.pSelectCruList.at(iCru); int32_t linkNumber = arguments.pSelectBranchList.at(iBranch)*12 + arguments.pSelectFecList.at(iFec); // Statement st(con); st.Execute(query); Resultset rs = st.GetResultset(); while ( rs.Next() ) { *outFile << cruNumber << " " << linkNumber << " "; for (int32_t ii=0; ii<80; ii++) { *outFile << rs.Get(ii+4); if (ii<79) *outFile << ","; else *outFile << endl; } } } catch (exception& ex) { cout << ex.what() << endl; outFile->close(); delete outFile; } } } } } } } } cout << "Dumped to file " << filename << endl; outFile->close(); delete outFile; return 1; } // ============================================================================= // ============================================================================= int32_t dumptag() { // // Get all values from all tables or from one table for a given tag // if ( arguments.pSelectTagList.size() == 0 ) return 0; if ( arguments.pSelectTagList.size() > 1 ) { cout << "Dump implemented only for one tag, not for list of tags!" << endl; return 0; } uint32_t iTag = arguments.pSelectTagList.at(0); string filename; ofstream *outFile = new ofstream(); string query; try { Statement st(con); // // 1) TPC table => Tag file // if (arguments.pSelectTableTpc) { filename = "TPCTagInfo.txt"; outFile->open(filename); cout << "Dumping to file " << filename << " ... "; st.Execute(dbq->getSqlSelectTpcRow(iTag)); Resultset rs = st.GetResultset(); while (rs.Next()) { *outFile << iTag << "," << rs.Get(5) << endl; } cout << "Done" << endl; outFile->close(); } // // 2) CRU table // if (arguments.pSelectTableCru) { filename = "TPCCRUdata.txt"; outFile->open(filename); cout << "Dumping to file " << filename << " ... " << flush; st.Execute(dbq->getSqlSelectCruConfigData(iTag)); Resultset rs = st.GetResultset(); while (rs.Next()) { int32_t iSide = rs.Get(1); int32_t iSec = rs.Get(2); int32_t iPartition = rs.Get(3); int32_t iCru = rs.Get(4); int32_t cruNumber = iSide*180 + iSec*10 + iPartition*2 + iCru; // *outFile << cruNumber << " " << rs.Get(33) << "," << rs.Get(43) << "," << rs.Get(42) << "," << rs.Get(36) << "," << rs.Get(44) << "," << rs.Get(41) << "," << rs.Get(45) << endl; } cout << "Done" << endl; cout << "Got " << rs.GetCount() << " rows from CRU table (should be 360)." << endl; outFile->close(); } // // 3) PEDESTAL table // if (arguments.pSelectTablePedestal) { filename = "TPCPedestals.txt"; outFile->open(filename); cout << "Dumping to file " << filename << " ... " << flush; st.Execute(dbq->getSqlSelectUlConfigData("PEDESTAL", iTag)); Resultset rs = st.GetResultset(); while (rs.Next()) { int32_t iSide = rs.Get(1); int32_t iSec = rs.Get(2); int32_t iPartition = rs.Get(3); int32_t iCru = rs.Get(4); int32_t iBranch = rs.Get(5); int32_t iFec = rs.Get(6); int32_t cruNumber = iSide*180 + iSec*10 + iPartition*2 + iCru; int32_t linkNumber = iBranch*12 + iFec; // *outFile << cruNumber << " " << linkNumber << " "; for (int32_t ii=0; ii<80; ii++) { *outFile << rs.Get(ii+7); if (ii<79) *outFile << ","; else *outFile << endl; } } cout << "Done" << endl; cout << "Got " << rs.GetCount() << " rows from PEDESTAL table (should be 6552)." << endl; outFile->close(); } // // 4) ZSTHR table // if (arguments.pSelectTableZsThr) { filename = "TPCThresholdMap.txt"; outFile->open(filename); cout << "Dumping to file " << filename << " ... " << flush; st.Execute(dbq->getSqlSelectUlConfigData("ZSTHR", iTag)); Resultset rs = st.GetResultset(); while (rs.Next()) { int32_t iSide = rs.Get(1); int32_t iSec = rs.Get(2); int32_t iPartition = rs.Get(3); int32_t iCru = rs.Get(4); int32_t iBranch = rs.Get(5); int32_t iFec = rs.Get(6); int32_t cruNumber = iSide*180 + iSec*10 + iPartition*2 + iCru; int32_t linkNumber = iBranch*12 + iFec; *outFile << cruNumber << " " << linkNumber << " "; for (int32_t ii=0; ii<80; ii++) { *outFile << rs.Get(ii+7); if (ii<79) *outFile << ","; else *outFile << endl; } } cout << "Done" << endl; cout << "Got " << rs.GetCount() << " rows from ZSTHR table (should be 6552)." << endl; outFile->close(); } // // 5) ON_CHANNEL table // if (arguments.pSelectTableOnChannel) { filename = "TPCOnChannel.txt"; outFile->open(filename); cout << "Dumping to file " << filename << " ... " << flush; st.Execute(dbq->getSqlSelectUlConfigData("ON_CHANNEL", iTag)); Resultset rs = st.GetResultset(); while (rs.Next()) { int32_t iSide = rs.Get(1); int32_t iSec = rs.Get(2); int32_t iPartition = rs.Get(3); int32_t iCru = rs.Get(4); int32_t iBranch = rs.Get(5); int32_t iFec = rs.Get(6); int32_t cruNumber = iSide*180 + iSec*10 + iPartition*2 + iCru; int32_t linkNumber = iBranch*12 + iFec; *outFile << cruNumber << " " << linkNumber << " "; for (int32_t ii=0; ii<80; ii++) { *outFile << rs.Get(ii+7); if (ii<79) *outFile << ","; else *outFile << endl; } } cout << "Done" << endl; cout << "Got " << rs.GetCount() << " rows from ON_CHANNEL table (should be 6552)." << endl; outFile->close(); } // // 6) CMCORR table // if (arguments.pSelectTableCmCorr) { filename = "TPCCMkValues.txt"; outFile->open(filename); cout << "Dumping to file " << filename << " ... " << flush; st.Execute(dbq->getSqlSelectUlConfigData("CMCORR", iTag)); Resultset rs = st.GetResultset(); while (rs.Next()) { int32_t iSide = rs.Get(1); int32_t iSec = rs.Get(2); int32_t iPartition = rs.Get(3); int32_t iCru = rs.Get(4); int32_t iBranch = rs.Get(5); int32_t iFec = rs.Get(6); int32_t cruNumber = iSide*180 + iSec*10 + iPartition*2 + iCru; int32_t linkNumber = iBranch*12 + iFec; *outFile << cruNumber << " " << linkNumber << " "; for (int32_t ii=0; ii<80; ii++) { *outFile << rs.Get(ii+7); if (ii<79) *outFile << ","; else *outFile << endl; } } cout << "Done" << endl; cout << "Got " << rs.GetCount() << " rows from CMCORR table (should be 6552)." << endl; outFile->close(); } // // 7) ITCORR1 table // if (arguments.pSelectTableItCorr1) { filename = "TPCITfraction.txt"; outFile->open(filename); cout << "Dumping to file " << filename << " ... " << flush; st.Execute(dbq->getSqlSelectUlConfigData("ITCORR1", iTag)); Resultset rs = st.GetResultset(); while (rs.Next()) { int32_t iSide = rs.Get(1); int32_t iSec = rs.Get(2); int32_t iPartition = rs.Get(3); int32_t iCru = rs.Get(4); int32_t iBranch = rs.Get(5); int32_t iFec = rs.Get(6); int32_t cruNumber = iSide*180 + iSec*10 + iPartition*2 + iCru; int32_t linkNumber = iBranch*12 + iFec; *outFile << cruNumber << " " << linkNumber << " "; for (int32_t ii=0; ii<80; ii++) { *outFile << rs.Get(ii+7); if (ii<79) *outFile << ","; else *outFile << endl; } } cout << "Done" << endl; cout << "Got " << rs.GetCount() << " rows from ITCORR1 table (should be 6552)." << endl; outFile->close(); } // // 8) ITCORR2 table // if (arguments.pSelectTableItCorr2) { filename = "TPCITexpLambda.txt"; outFile->open(filename); cout << "Dumping to file " << filename << " ... " << flush; st.Execute(dbq->getSqlSelectUlConfigData("ITCORR2", iTag)); Resultset rs = st.GetResultset(); while (rs.Next()) { int32_t iSide = rs.Get(1); int32_t iSec = rs.Get(2); int32_t iPartition = rs.Get(3); int32_t iCru = rs.Get(4); int32_t iBranch = rs.Get(5); int32_t iFec = rs.Get(6); int32_t cruNumber = iSide*180 + iSec*10 + iPartition*2 + iCru; int32_t linkNumber = iBranch*12 + iFec; *outFile << cruNumber << " " << linkNumber << " "; for (int32_t ii=0; ii<80; ii++) { *outFile << rs.Get(ii+7); if (ii<79) *outFile << ","; else *outFile << endl; } } cout << "Done" << endl; cout << "Got " << rs.GetCount() << " rows from ITCORR2 table (should be 6552)." << endl; outFile->close(); } // // 9) FEC table // if (arguments.pSelectTableFec) { filename = "TPCFECdata.txt"; outFile->open(filename); cout << "Dumping to file " << filename << " ... " << flush; st.Execute(dbq->getSqlSelectFecConfigData(iTag)); Resultset rs = st.GetResultset(); while (rs.Next()) { int32_t iSide = rs.Get(1); int32_t iSec = rs.Get(2); int32_t iPartition = rs.Get(3); int32_t iBranch = rs.Get(4); int32_t iFec = rs.Get(5); int32_t cruNumber = iSide*180 + iSec*10 + iPartition*2; // Only master CRUs int32_t linkNumber = iBranch*12 + iFec; // *outFile << cruNumber << " " << linkNumber << " " << rs.Get(7) << "," << rs.Get(8) << endl; } cout << "Done" << endl; cout << "Got " << rs.GetCount() << " rows from FEC table (should be 3276)." << endl; outFile->close(); } } catch (exception &ex) { cout << ex.what() << endl; outFile->close(); delete outFile; } delete outFile; return 1; }