#include <BCkovCalibTable.h>
Public Member Functions | |
| ~BCkovCalibTable () | |
| bool | Init (int run) |
| float | Ped (int chan) const |
| float | Width (int chan) const |
| float | TOffset (int chan) const |
| float | Gain (int chan) const |
| void | SetPed (int chan, float ped, float width) |
| void | SetTOffset (int chan, float t) |
| void | SetGain (int chan, float gain) |
| void | SetRunRange (int minrun, int maxrun) |
| void | WriteToXML (const char *fname) |
| void | WriteToDB () |
Static Public Member Functions | |
| static BCkovCalibTable & | Instance () |
Private Member Functions | |
| BCkovCalibTable () | |
Private Attributes | |
| int | fMinRun |
| int | fMaxRun |
| float | fPed [BCkov::kNChan] |
| Pedestal (ADC). | |
| float | fWidth [BCkov::kNChan] |
| Pedestal width (ADC). | |
| float | fTOffset [BCkov::kNChan] |
| Time offset wrt T0 (in ns). | |
| float | fGain [BCkov::kNChan] |
| Gain: ADC of 1pe? (placeholder). | |
Static Private Attributes | |
| static BCkovCalibTable * | fInstance = 0 |
Definition at line 16 of file BCkovCalibTable.h.
| BCkovCalibTable::~BCkovCalibTable | ( | ) | [inline] |
| BCkovCalibTable::BCkovCalibTable | ( | ) | [private] |
| float BCkovCalibTable::Gain | ( | int | chan | ) | const |
Definition at line 118 of file BCkovCalibTable.cxx.
References fGain, BCkov::kNChan, and BCkov::kUI.
| bool BCkovCalibTable::Init | ( | int | run | ) |
Definition at line 46 of file BCkovCalibTable.cxx.
References fGain, fMaxRun, fMinRun, fPed, fTOffset, fWidth, GET_INT, GET_VEC, MdbTableDict::GetTableRSR(), MdbTableDict::Instance(), BCkov::kNChan, MdbAbsRelDBTable::NumberOfCachedRows(), MXML::ReadFile(), and MdbTableRunSubRun::Select().
Referenced by BCkovReco::NewRun().
00047 { 00048 if (fMinRun <= run && fMaxRun >= run) return true; 00049 00050 MXML::ReadFile("BCkovCalibTable.xml"); 00051 MdbTableRunSubRun* table = 00052 MdbTableDict::Instance()->GetTableRSR("BCkovCalib"); 00053 if(!table) { 00054 cout << "Couldn't find BCkovCalib table!" << endl; 00055 return false; 00056 } 00057 00058 fMinRun = run; 00059 fMaxRun = run; 00060 memset(fPed, 0, sizeof(fPed)); 00061 memset(fWidth, 0, sizeof(fWidth)); 00062 00063 vector<string> cols; 00064 MdbAbsRelDBTable* query = table->Select(cols, run); 00065 int nRows = query->NumberOfCachedRows(); 00066 if (nRows == 0) { 00067 cout << "BCkovCalibTable: found no rows for run " << run 00068 << endl; 00069 return false; 00070 } 00071 00072 if (nRows != 1) { 00073 cout << "BCkovCalibTable: found " << nRows << " rows for run " << run 00074 << "; only the first row will be used" << endl; 00075 } 00076 #define GET_INT(name) query->getCachedTableDataPtr(string(name), 0)->valInt()[0] 00077 #define GET_VEC(name) query->getCachedTableDataPtr(string(name), 0)->valFloat() 00078 00079 fMinRun = GET_INT("runNumMin"); 00080 fMaxRun = GET_INT("runNumMax"); 00081 for (int i = 0; i < kNChan; ++i) { 00082 fPed[i] = GET_VEC("ped")[i]; 00083 fWidth[i] = GET_VEC("width")[i]; 00084 fTOffset[i] = GET_VEC("toffset")[i]; 00085 fGain[i] = GET_VEC("gain")[i]; 00086 } 00087 00088 #undef GET_VEC 00089 return true; 00090 }
| BCkovCalibTable & BCkovCalibTable::Instance | ( | ) | [static] |
Definition at line 38 of file BCkovCalibTable.cxx.
References fInstance.
Referenced by DoPeds().
00039 { 00040 if (!fInstance) fInstance = new BCkovCalibTable; 00041 return *fInstance; 00042 }
| float BCkovCalibTable::Ped | ( | int | chan | ) | const |
Definition at line 94 of file BCkovCalibTable.cxx.
References fPed, BCkov::kNChan, and BCkov::kUI.
Referenced by BCkovReco::EndRun(), and BCkovReco::MakeHit().
| void BCkovCalibTable::SetGain | ( | int | chan, | |
| float | gain | |||
| ) |
Definition at line 144 of file BCkovCalibTable.cxx.
References fGain, BCkov::kNChan, and BCkov::kUI.
| void BCkovCalibTable::SetPed | ( | int | chan, | |
| float | ped, | |||
| float | width | |||
| ) |
Definition at line 126 of file BCkovCalibTable.cxx.
References fPed, fWidth, BCkov::kNChan, and BCkov::kUI.
Referenced by DoPeds().
00127 { 00128 assert((chan >= kUI) && (chan < kNChan)); 00129 fPed[chan] = ped; 00130 fWidth[chan] = width; 00131 }
| void BCkovCalibTable::SetRunRange | ( | int | minrun, | |
| int | maxrun | |||
| ) | [inline] |
| void BCkovCalibTable::SetTOffset | ( | int | chan, | |
| float | t | |||
| ) |
Definition at line 135 of file BCkovCalibTable.cxx.
References fTOffset, BCkov::kNChan, and BCkov::kUI.
| float BCkovCalibTable::TOffset | ( | int | chan | ) | const |
Definition at line 110 of file BCkovCalibTable.cxx.
References fTOffset, BCkov::kNChan, and BCkov::kUI.
Referenced by BCkovReco::MakeHit().
| float BCkovCalibTable::Width | ( | int | chan | ) | const |
Definition at line 102 of file BCkovCalibTable.cxx.
References fWidth, BCkov::kNChan, and BCkov::kUI.
| void BCkovCalibTable::WriteToDB | ( | ) |
Definition at line 183 of file BCkovCalibTable.cxx.
References MdbDatabase::dbVar(), fGain, fMaxRun, fMinRun, fPed, fTOffset, fWidth, MdbTableDict::GetTableRSR(), MdbTableRunSubRun::InsertRow(), MdbDatabase::Instance(), MdbTableDict::Instance(), BCkov::kNChan, ped, MXML::ReadFile(), t0, and width.
00184 { 00185 if (strcmp(getenv("PGUSER"), "mippdbwrite") != 0) { 00186 cout << "BCkovCalibTable: asked to write to DB, but PGUSER=" 00187 << getenv("PGUSER") << ". Cannot perform task." 00188 << endl; 00189 return; 00190 } 00191 00192 MXML::ReadFile("BCkovCalibTable.xml"); 00193 MdbTableRunSubRun* table = 00194 MdbTableDict::Instance()->GetTableRSR("BCkovCalib"); 00195 if (!table) return; 00196 00197 MdbDatabase* dbFact = MdbDatabase::Instance(); 00198 std::vector<MdbAbsRelDBVar*> vars; 00199 00200 std::vector<float> ped(0); 00201 std::vector<float> width(0); 00202 std::vector<float> t0(0); 00203 std::vector<float> gain(0); 00204 for (int i = 0; i < kNChan; ++i) { 00205 ped.push_back(fPed[i]); 00206 width.push_back(fWidth[i]); 00207 t0.push_back(fTOffset[i]); 00208 gain.push_back(fGain[i]); 00209 } 00210 00211 vars.push_back(dbFact->dbVar(ped)); 00212 vars.push_back(dbFact->dbVar(width)); 00213 vars.push_back(dbFact->dbVar(t0)); 00214 vars.push_back(dbFact->dbVar(gain)); 00215 00216 table->InsertRow(vars, fMinRun, 0, fMaxRun, 9999, 1); 00217 }
| void BCkovCalibTable::WriteToXML | ( | const char * | fname | ) |
Definition at line 153 of file BCkovCalibTable.cxx.
References fGain, fMaxRun, fMinRun, fPed, fTOffset, fWidth, and BCkov::kNChan.
00154 { 00155 ofstream ofile(fname, ios::out); 00156 if (!ofile.is_open()) { 00157 cout << "Couldn't open " << fname << " for writing" << endl; 00158 return; 00159 } 00160 00161 ofile << "<dbTableEntry TableName=\"bckovcalib\"\n" 00162 << " TableType=\"RunSubRun\"\n" 00163 << " runNumMin=\"" << fMinRun << "\"\n" 00164 << " runNumMax=\"" << fMaxRun << "\"\n" 00165 << " creator=\"" << getenv("USER") << "\"\n\n"; 00166 00167 ofile << " <dbRow>\n "; 00168 for (int i = 0; i < kNChan; ++i) ofile << " " <<fPed[i]; 00169 ofile << ",\n "; 00170 for (int i = 0; i < kNChan; ++i) ofile << " " << fWidth[i]; 00171 ofile << ",\n "; 00172 for (int i = 0; i < kNChan; ++i) ofile << " " << fTOffset[i]; 00173 ofile << ",\n "; 00174 for (int i = 0; i < kNChan; ++i) ofile << " " << fGain[i]; 00175 ofile << "\n </dbRow>\n" 00176 << "</dbTableEntry>"; 00177 00178 ofile.close(); 00179 }
float BCkovCalibTable::fGain[BCkov::kNChan] [private] |
Gain: ADC of 1pe? (placeholder).
Definition at line 50 of file BCkovCalibTable.h.
Referenced by Gain(), Init(), SetGain(), WriteToDB(), and WriteToXML().
BCkovCalibTable * BCkovCalibTable::fInstance = 0 [static, private] |
int BCkovCalibTable::fMaxRun [private] |
Definition at line 45 of file BCkovCalibTable.h.
Referenced by Init(), SetRunRange(), WriteToDB(), and WriteToXML().
int BCkovCalibTable::fMinRun [private] |
Definition at line 44 of file BCkovCalibTable.h.
Referenced by Init(), SetRunRange(), WriteToDB(), and WriteToXML().
float BCkovCalibTable::fPed[BCkov::kNChan] [private] |
Pedestal (ADC).
Definition at line 47 of file BCkovCalibTable.h.
Referenced by BCkovCalibTable(), Init(), Ped(), SetPed(), WriteToDB(), and WriteToXML().
float BCkovCalibTable::fTOffset[BCkov::kNChan] [private] |
Time offset wrt T0 (in ns).
Definition at line 49 of file BCkovCalibTable.h.
Referenced by Init(), SetTOffset(), TOffset(), WriteToDB(), and WriteToXML().
float BCkovCalibTable::fWidth[BCkov::kNChan] [private] |
Pedestal width (ADC).
Definition at line 48 of file BCkovCalibTable.h.
Referenced by BCkovCalibTable(), Init(), SetPed(), Width(), WriteToDB(), and WriteToXML().
1.4.7