File indexing completed on 2024-04-06 11:58:14
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "CalibFormats/SiPixelObjects/interface/PixelDelay25Calib.h"
0010 #include "CalibFormats/SiPixelObjects/interface/PixelTimeFormatter.h"
0011 #include <iostream>
0012 #include <cassert>
0013 #include <map>
0014 #include <sstream>
0015
0016 using namespace pos;
0017
0018 using namespace std;
0019
0020 PixelDelay25Calib::PixelDelay25Calib(vector<vector<string> > &tableMat)
0021 : PixelCalibBase(), PixelConfigBase("", "", "") {
0022 std::string mthn = "[PixelDelay25Calib::PixelDelay25Calib()]\t\t\t ";
0023 std::map<std::string, int> colM;
0024 std::vector<std::string> colNames;
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 colNames.push_back("CONFIG_KEY");
0040 colNames.push_back("KEY_TYPE");
0041 colNames.push_back("KEY_ALIAS");
0042 colNames.push_back("VERSION");
0043 colNames.push_back("KIND_OF_COND");
0044 colNames.push_back("CALIB_TYPE");
0045 colNames.push_back("CALIB_OBJ_DATA_FILE");
0046 colNames.push_back("CALIB_OBJ_DATA_CLOB");
0047
0048 for (unsigned int c = 0; c < tableMat[0].size(); c++) {
0049 for (unsigned int n = 0; n < colNames.size(); n++) {
0050 if (tableMat[0][c] == colNames[n]) {
0051 colM[colNames[n]] = c;
0052 break;
0053 }
0054 }
0055 }
0056 for (unsigned int n = 0; n < colNames.size(); n++) {
0057 if (colM.find(colNames[n]) == colM.end()) {
0058 std::cerr << "[[PixelDelay25Calib::PixelDelay25Calib()]\tCouldn't find in the database the column with name "
0059 << colNames[n] << std::endl;
0060 assert(0);
0061 }
0062 }
0063
0064 std::istringstream in;
0065 in.str(tableMat[1][colM["CALIB_OBJ_DATA_CLOB"]]);
0066
0067
0068
0069
0070 std::string tmp;
0071
0072 in >> tmp;
0073
0074 assert(tmp == "Mode:");
0075 in >> mode_;
0076
0077 in >> tmp;
0078
0079 assert(tmp == "Portcards:");
0080 in >> tmp;
0081 if (tmp == "All") {
0082 allPortcards_ = true;
0083 } else {
0084 allPortcards_ = false;
0085 }
0086 while (tmp != "AllModules:") {
0087 portcardNames_.insert(tmp);
0088 in >> tmp;
0089 }
0090
0091 assert(tmp == "AllModules:");
0092 in >> allModules_;
0093
0094 in >> tmp;
0095
0096 assert(tmp == "OrigSDa:");
0097 in >> origSDa_;
0098
0099 in >> tmp;
0100
0101 assert(tmp == "OrigRDa:");
0102 in >> origRDa_;
0103
0104 in >> tmp;
0105
0106 assert(tmp == "Range:");
0107 in >> range_;
0108
0109 in >> tmp;
0110
0111 assert(tmp == "GridSize:");
0112 in >> gridSize_;
0113
0114 in >> tmp;
0115 assert(tmp == "Tests:");
0116 in >> numTests_;
0117
0118 in >> tmp;
0119 if (tmp == "Commands:") {
0120 in >> commands_;
0121 } else {
0122 commands_ = 0;
0123 }
0124
0125
0126 gridSteps_ = range_ / gridSize_;
0127
0128
0129 calibFileContent_ = in.str();
0130
0131
0132 }
0133
0134 PixelDelay25Calib::PixelDelay25Calib(std::string filename) : PixelCalibBase(), PixelConfigBase("", "", "") {
0135 std::string mthn = "[PixelDelay25Calib::PixelDelay25Calib()]\t\t\t ";
0136
0137 std::ifstream in(filename.c_str());
0138
0139 if (!in.good()) {
0140 std::cout << __LINE__ << "]\t" << mthn << "Could not open: " << filename << std::endl;
0141 assert(0);
0142 } else {
0143 std::cout << __LINE__ << "]\t" << mthn << "Opened: " << filename << std::endl;
0144 }
0145
0146
0147
0148
0149 std::string tmp;
0150
0151 in >> tmp;
0152
0153 assert(tmp == "Mode:");
0154 in >> mode_;
0155
0156
0157
0158 in >> tmp;
0159
0160 assert(tmp == "Portcards:");
0161 in >> tmp;
0162 if (tmp == "All") {
0163 allPortcards_ = true;
0164 } else {
0165 allPortcards_ = false;
0166 }
0167 while (tmp != "AllModules:") {
0168 portcardNames_.insert(tmp);
0169 in >> tmp;
0170 }
0171
0172 assert(tmp == "AllModules:");
0173 in >> allModules_;
0174
0175 in >> tmp;
0176
0177 assert(tmp == "OrigSDa:");
0178 in >> origSDa_;
0179
0180 in >> tmp;
0181
0182 assert(tmp == "OrigRDa:");
0183 in >> origRDa_;
0184
0185 in >> tmp;
0186
0187 assert(tmp == "Range:");
0188 in >> range_;
0189
0190 in >> tmp;
0191
0192 assert(tmp == "GridSize:");
0193 in >> gridSize_;
0194
0195 in >> tmp;
0196 assert(tmp == "Tests:");
0197 in >> numTests_;
0198
0199 in >> tmp;
0200 if (tmp == "Commands:") {
0201 in >> commands_;
0202 } else {
0203 commands_ = 0;
0204 }
0205
0206 in.close();
0207
0208
0209 gridSteps_ = range_ / gridSize_;
0210
0211
0212 std::ifstream inTmp(filename.c_str());
0213 calibFileContent_ = "";
0214 while (!inTmp.eof()) {
0215 std::string tmpString;
0216 getline(inTmp, tmpString);
0217 calibFileContent_ += tmpString + "\n";
0218
0219 }
0220 inTmp.close();
0221
0222 }
0223
0224 PixelDelay25Calib::~PixelDelay25Calib() {}
0225
0226 void PixelDelay25Calib::openFiles(std::string portcardName, std::string moduleName, std::string path) {
0227 if (!path.empty())
0228 path += "/";
0229 graph_ = path + "graph_" + portcardName + "_" + moduleName + ".dat";
0230 graphout_.open(graph_.c_str());
0231 return;
0232 }
0233
0234 void PixelDelay25Calib::writeSettings(std::string portcardName, std::string moduleName) {
0235 graphout_ << "Portcard: " << portcardName << endl;
0236 graphout_ << "Module: " << moduleName << endl;
0237 graphout_ << "SDaOrigin: " << origSDa_ << endl;
0238 graphout_ << "RDaOrigin: " << origRDa_ << endl;
0239 graphout_ << "SDaRange: " << range_ << endl;
0240 graphout_ << "RDaRange: " << range_ << endl;
0241 graphout_ << "GridSize: " << gridSize_ << endl;
0242 graphout_ << "Tests: " << numTests_ << endl;
0243 return;
0244 }
0245
0246 void PixelDelay25Calib::writeFiles(std::string tmp) {
0247 graphout_ << tmp << endl;
0248 return;
0249 }
0250
0251 void PixelDelay25Calib::writeFiles(int currentSDa, int currentRDa, int number) {
0252 graphout_ << currentSDa << " " << currentRDa << " " << number << endl;
0253 return;
0254 }
0255
0256 void PixelDelay25Calib::closeFiles() {
0257 graphout_.close();
0258 return;
0259 }
0260
0261 void PixelDelay25Calib::writeASCII(std::string dir) const {
0262
0263
0264 if (!dir.empty())
0265 dir += "/";
0266 std::string filename = dir + "delay25.dat";
0267 std::ofstream out(filename.c_str());
0268
0269 out << "Mode: " << mode_ << endl;
0270
0271 out << "Portcards:" << endl;
0272
0273 std::set<std::string>::const_iterator i = portcardNames_.begin();
0274 while (i != portcardNames_.end()) {
0275 out << *i << endl;
0276 ++i;
0277 }
0278
0279 out << "AllModules:" << endl;
0280 if (allModules_) {
0281 out << "1" << endl;
0282 } else {
0283 out << "0" << endl;
0284 }
0285
0286 out << "OrigSDa:" << endl;
0287 out << origSDa_ << endl;
0288
0289 out << "OrigRDa:" << endl;
0290 out << origRDa_ << endl;
0291
0292 out << "Range:" << endl;
0293 out << range_ << endl;
0294
0295 out << "GridSize:" << endl;
0296 out << gridSize_ << endl;
0297
0298 out << "Tests:" << endl;
0299 out << numTests_ << endl;
0300
0301 out << "Commands:" << endl;
0302 out << commands_ << endl;
0303
0304 out.close();
0305 }
0306
0307
0308 void PixelDelay25Calib::writeXMLHeader(pos::PixelConfigKey key,
0309 int version,
0310 std::string path,
0311 std::ofstream *outstream,
0312 std::ofstream *out1stream,
0313 std::ofstream *out2stream) const {
0314 std::string mthn = "[PixelDelay25Calib::writeXMLHeader()]\t\t\t ";
0315 std::stringstream maskFullPath;
0316
0317 writeASCII(path);
0318
0319 maskFullPath << path << "/PixelCalib_Test_" << PixelTimeFormatter::getmSecTime() << ".xml";
0320 std::cout << __LINE__ << "]\t" << mthn << "Writing to: " << maskFullPath.str() << std::endl;
0321
0322 outstream->open(maskFullPath.str().c_str());
0323
0324 *outstream << "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" << std::endl;
0325 *outstream << "<ROOT xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" << std::endl;
0326 *outstream << "" << std::endl;
0327 *outstream << " <!-- " << mthn << "-->" << std::endl;
0328 *outstream << "" << std::endl;
0329 *outstream << " <HEADER>" << std::endl;
0330 *outstream << " <TYPE>" << std::endl;
0331 *outstream << " <EXTENSION_TABLE_NAME>PIXEL_CALIB_CLOB</EXTENSION_TABLE_NAME>" << std::endl;
0332 *outstream << " <NAME>Calibration Object Clob</NAME>" << std::endl;
0333 *outstream << " </TYPE>" << std::endl;
0334 *outstream << " <RUN>" << std::endl;
0335 *outstream << " <RUN_TYPE>delay25</RUN_TYPE>" << std::endl;
0336 *outstream << " <RUN_NUMBER>1</RUN_NUMBER>" << std::endl;
0337 *outstream << " <RUN_BEGIN_TIMESTAMP>" << PixelTimeFormatter::getTime() << "</RUN_BEGIN_TIMESTAMP>" << std::endl;
0338 *outstream << " <LOCATION>CERN P5</LOCATION>" << std::endl;
0339 *outstream << " </RUN>" << std::endl;
0340 *outstream << " </HEADER>" << std::endl;
0341 *outstream << "" << std::endl;
0342 *outstream << " <DATA_SET>" << std::endl;
0343 *outstream << "" << std::endl;
0344 *outstream << " <VERSION>" << version << "</VERSION>" << std::endl;
0345 *outstream << " <COMMENT_DESCRIPTION>" << getComment() << "</COMMENT_DESCRIPTION>" << std::endl;
0346 *outstream << " <CREATED_BY_USER>" << getAuthor() << "</CREATED_BY_USER>" << std::endl;
0347 *outstream << "" << std::endl;
0348 *outstream << " <PART>" << std::endl;
0349 *outstream << " <NAME_LABEL>CMS-PIXEL-ROOT</NAME_LABEL>" << std::endl;
0350 *outstream << " <KIND_OF_PART>Detector ROOT</KIND_OF_PART>" << std::endl;
0351 *outstream << " </PART>" << std::endl;
0352 }
0353
0354
0355 void PixelDelay25Calib::writeXML(std::ofstream *outstream, std::ofstream *out1stream, std::ofstream *out2stream) const {
0356 std::string mthn = "[PixelDelay25Calib::writeXML()]\t\t\t ";
0357
0358 std::cout << __LINE__ << "]\t" << mthn << "Writing.." << std::endl;
0359
0360 *outstream << " " << std::endl;
0361 *outstream << " <DATA>" << std::endl;
0362 *outstream << " <CALIB_OBJ_DATA_FILE>./delay25.dat</CALIB_OBJ_DATA_FILE>" << std::endl;
0363 *outstream << " <CALIB_TYPE>delay25</CALIB_TYPE>" << std::endl;
0364 *outstream << " </DATA>" << std::endl;
0365 *outstream << " " << std::endl;
0366 }
0367
0368
0369 void PixelDelay25Calib::writeXMLTrailer(std::ofstream *outstream,
0370 std::ofstream *out1stream,
0371 std::ofstream *out2stream) const {
0372 std::string mthn = "[PixelDelay25Calib::writeXMLTrailer()]\t\t\t ";
0373
0374 *outstream << " </DATA_SET>" << std::endl;
0375 *outstream << "</ROOT>" << std::endl;
0376
0377 outstream->close();
0378 std::cout << __LINE__ << "]\t" << mthn << "Data written " << std::endl;
0379 }