File indexing completed on 2024-04-06 12:02:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include "CondTools/DT/test/validate/DTHVStatusValidateHandler.h"
0014
0015
0016
0017
0018 #include "CondFormats/DTObjects/interface/DTHVStatus.h"
0019
0020
0021
0022
0023 #include <iostream>
0024 #include <fstream>
0025 #include <sstream>
0026
0027
0028
0029
0030
0031
0032
0033
0034 DTHVStatusValidateHandler::DTHVStatusValidateHandler(const edm::ParameterSet& ps)
0035 : firstRun(ps.getParameter<unsigned int>("firstRun")),
0036 lastRun(ps.getParameter<unsigned int>("lastRun")),
0037 dataVersion(ps.getParameter<std::string>("version")),
0038 dataFileName(ps.getParameter<std::string>("outFile")),
0039 elogFileName(ps.getParameter<std::string>("logFile")) {
0040 std::ofstream logFile(elogFileName.c_str());
0041 }
0042
0043
0044
0045
0046 DTHVStatusValidateHandler::~DTHVStatusValidateHandler() {}
0047
0048
0049
0050
0051 void DTHVStatusValidateHandler::getNewObjects() {
0052 int runNumber = firstRun;
0053 while (runNumber <= lastRun)
0054 addNewObject(runNumber++);
0055 return;
0056 }
0057
0058 void DTHVStatusValidateHandler::addNewObject(int runNumber) {
0059 DTHVStatus* hv = new DTHVStatus(dataVersion);
0060
0061 std::stringstream run_fn;
0062 run_fn << "run" << runNumber << dataFileName;
0063
0064 int status = 0;
0065 std::ofstream outFile(run_fn.str().c_str());
0066 std::ofstream logFile(elogFileName.c_str(), std::ios_base::app);
0067 int whe;
0068 int sta;
0069 int sec;
0070 int qua;
0071 int lay;
0072 int l_p;
0073 int fCell;
0074 int lCell;
0075 int flagA;
0076 int flagC;
0077 int flagS;
0078 int ckfCell;
0079 int cklCell;
0080 int ckflagA;
0081 int ckflagC;
0082 int ckflagS;
0083
0084 whe = 3;
0085 while (--whe >= -2) {
0086 sta = 5;
0087 while (--sta) {
0088 if (sta == 4)
0089 sec = 15;
0090 else
0091 sec = 13;
0092 while (--sec) {
0093 qua = 4;
0094 while (--qua) {
0095 lay = 5;
0096 while (--lay) {
0097 fCell = 1;
0098 lCell = 99;
0099 if ((sta == 4) && (qua == 2))
0100 continue;
0101 if (qua == 2) {
0102 lCell = 56;
0103 } else {
0104 if (sta == 1)
0105 lCell = 48;
0106 if (sta == 2)
0107 lCell = 60;
0108 if (sta == 3)
0109 lCell = 72;
0110 if (sta == 4) {
0111 if ((sec >= 1) && (sec <= 3))
0112 lCell = 96;
0113 if ((sec == 4) || (sec == 13))
0114 lCell = 72;
0115 if ((sec >= 5) && (sec <= 7))
0116 lCell = 96;
0117 if ((sec == 8) || (sec == 12))
0118 lCell = 92;
0119 if ((sec == 9) || (sec == 11))
0120 lCell = 48;
0121 if ((sec == 10) || (sec == 14))
0122 lCell = 60;
0123 }
0124 }
0125 fCell = lCell / 2;
0126 l_p = 2;
0127 while (l_p--) {
0128 if (l_p == 0) {
0129 lCell = fCell - 1;
0130 fCell = (lay == 4 ? 2 : 1);
0131 }
0132 flagA = random() & 0x0000000f;
0133 flagC = random() & 0x0000000f;
0134 flagS = random() & 0x0000000f;
0135 if ((flagA == 3) || (flagA >= 7))
0136 flagA = 0;
0137 if ((flagC == 3) || (flagC >= 7))
0138 flagC = 0;
0139 if ((flagS == 3) || (flagS >= 7))
0140 flagS = 0;
0141 if (flagA || flagC || flagS)
0142 status = hv->set(whe, sta, sec, qua, lay, l_p, fCell, lCell, flagA, flagC, flagS);
0143 else
0144 status = 0;
0145 outFile << whe << " " << sta << " " << sec << " " << qua << " " << lay << " " << l_p << " " << fCell
0146 << " " << lCell << " " << flagA << " " << flagC << " " << flagS << std::endl;
0147 if (status)
0148 logFile << "ERROR while setting HV status" << whe << " " << sta << " " << sec << " " << qua << " "
0149 << lay << " " << l_p << " , status = " << status << std::endl;
0150 ckfCell = fCell;
0151 cklCell = lCell;
0152 ckflagA = ckflagC = ckflagS = 0;
0153 if (flagA || flagC || flagS)
0154 status = hv->get(whe, sta, sec, qua, lay, l_p, ckfCell, cklCell, ckflagA, ckflagC, ckflagS);
0155 else
0156 status = 0;
0157 if (status)
0158 logFile << "ERROR while checking HV status " << whe << " " << sta << " " << sec << " " << qua << " "
0159 << lay << " " << l_p << " , status = " << status << std::endl;
0160 if ((ckfCell != fCell) || (cklCell != lCell) || (ckflagA != flagA) || (ckflagC != flagC) ||
0161 (ckflagS != flagS))
0162 logFile << "MISMATCH WHEN WRITING HV status " << whe << " " << sta << " " << sec << " " << qua << " "
0163 << lay << " " << l_p << " : " << fCell << " " << lCell << " " << flagA << " " << flagC << " "
0164 << flagS << " -> " << ckfCell << " " << cklCell << " " << ckflagA << " " << ckflagC << " "
0165 << ckflagS << std::endl;
0166 }
0167 }
0168 }
0169 }
0170 }
0171 }
0172
0173 cond::Time_t snc = runNumber;
0174 m_to_transfer.push_back(std::make_pair(hv, snc));
0175
0176 return;
0177 }
0178
0179 std::string DTHVStatusValidateHandler::id() const { return dataVersion; }