File indexing completed on 2024-10-12 04:20:55
0001 #include "OnlineDB/CSCCondDB/interface/CSCMap1.h"
0002 #include <cstdlib>
0003 #include <cassert>
0004
0005
0006
0007
0008 cscmap1::cscmap1() noexcept(false) {
0009 std::string db_user;
0010 std::string db_pass;
0011 env = oracle::occi::Environment::createEnvironment(oracle::occi::Environment::DEFAULT);
0012 char *c_user = std::getenv("CSCMAP_AUTH_USER");
0013 char *c_pass = std::getenv("CSCMAP_AUTH_PASSWORD");
0014 assert(c_user);
0015 assert(c_pass);
0016 db_user = std::string(c_user);
0017 db_pass = std::string(c_pass);
0018 con = env->createConnection(db_user, db_pass, "cms_orcoff_prod");
0019 std::cout << "Connection to mapping DB is done." << std::endl;
0020 }
0021
0022
0023
0024
0025 cscmap1::~cscmap1() noexcept(false) {
0026 env->terminateConnection(con);
0027 oracle::occi::Environment::terminateEnvironment(env);
0028 }
0029
0030 void cscmap1::chamber(int chamberid, CSCMapItem::MapItem *item) {
0031 oracle::occi::Statement *stmt = con->createStatement();
0032
0033 stmt->setSQL(
0034 "begin cms_emu_cern.cscmap.chamberid_crate(:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, "
0035 ":16, :17, :18, :19, :20); end;");
0036
0037 stmt->setInt(1, chamberid);
0038 stmt->registerOutParam(2, oracle::occi::OCCISTRING, 10);
0039 stmt->registerOutParam(3, oracle::occi::OCCIINT);
0040 stmt->registerOutParam(4, oracle::occi::OCCIINT);
0041 stmt->registerOutParam(5, oracle::occi::OCCIINT);
0042 stmt->registerOutParam(6, oracle::occi::OCCIINT);
0043 stmt->registerOutParam(7, oracle::occi::OCCIINT);
0044 stmt->registerOutParam(8, oracle::occi::OCCIINT);
0045 stmt->registerOutParam(9, oracle::occi::OCCIINT);
0046 stmt->registerOutParam(10, oracle::occi::OCCISTRING, 10);
0047 stmt->registerOutParam(11, oracle::occi::OCCIINT);
0048 stmt->registerOutParam(12, oracle::occi::OCCIINT);
0049 stmt->registerOutParam(13, oracle::occi::OCCIINT);
0050 stmt->registerOutParam(14, oracle::occi::OCCIINT);
0051 stmt->registerOutParam(15, oracle::occi::OCCIINT);
0052 stmt->registerOutParam(16, oracle::occi::OCCIINT);
0053 stmt->registerOutParam(17, oracle::occi::OCCIINT);
0054 stmt->registerOutParam(18, oracle::occi::OCCIINT);
0055 stmt->registerOutParam(19, oracle::occi::OCCIINT);
0056 stmt->registerOutParam(20, oracle::occi::OCCIINT);
0057
0058 stmt->execute();
0059
0060 item->chamberLabel = stmt->getString(10);
0061 item->chamberId = chamberid;
0062 int chamber = chamberid / 10 % 100;
0063 int rest = (chamberid - chamber * 10) / 1000;
0064 int ring = rest % 10;
0065 rest = (rest - ring) / 10;
0066 int station = rest % 10;
0067 int endcap = (rest - station) / 10;
0068 item->endcap = endcap;
0069 item->station = station;
0070 item->ring = ring;
0071 item->chamber = chamber;
0072 item->cscIndex = stmt->getInt(13);
0073 item->layerIndex = stmt->getInt(14);
0074 item->stripIndex = stmt->getInt(15);
0075 item->anodeIndex = stmt->getInt(16);
0076 item->strips = stmt->getInt(11);
0077 item->anodes = stmt->getInt(12);
0078 item->crateLabel = stmt->getString(2);
0079 item->crateid = stmt->getInt(3);
0080 item->sector = stmt->getInt(8);
0081 item->trig_sector = stmt->getInt(9);
0082 item->dmb = stmt->getInt(5);
0083 item->cscid = stmt->getInt(7);
0084
0085 stmt->setSQL(
0086 "begin cms_emu_cern.ddumap.chamberid_ddu(:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, "
0087 ":17, :18, :19); end;");
0088
0089 stmt->setInt(1, chamberid);
0090 stmt->registerOutParam(2, oracle::occi::OCCIINT);
0091 stmt->registerOutParam(3, oracle::occi::OCCIINT);
0092 stmt->registerOutParam(4, oracle::occi::OCCIINT);
0093 stmt->registerOutParam(5, oracle::occi::OCCIINT);
0094 stmt->registerOutParam(6, oracle::occi::OCCISTRING, 10);
0095 stmt->registerOutParam(7, oracle::occi::OCCIINT);
0096 stmt->registerOutParam(8, oracle::occi::OCCIINT);
0097 stmt->registerOutParam(9, oracle::occi::OCCIINT);
0098 stmt->registerOutParam(10, oracle::occi::OCCISTRING, 10);
0099 stmt->registerOutParam(11, oracle::occi::OCCIINT);
0100 stmt->registerOutParam(12, oracle::occi::OCCISTRING, 10);
0101 stmt->registerOutParam(13, oracle::occi::OCCIINT);
0102 stmt->registerOutParam(14, oracle::occi::OCCISTRING, 10);
0103 stmt->registerOutParam(15, oracle::occi::OCCIINT);
0104 stmt->registerOutParam(16, oracle::occi::OCCIINT);
0105 stmt->registerOutParam(17, oracle::occi::OCCIINT);
0106 stmt->registerOutParam(18, oracle::occi::OCCIINT);
0107 stmt->registerOutParam(19, oracle::occi::OCCIINT);
0108
0109 stmt->execute();
0110
0111 item->ddu = stmt->getInt(2);
0112 item->ddu_input = stmt->getInt(5);
0113 item->slink = stmt->getInt(7);
0114
0115 item->fed_crate = stmt->getInt(3);
0116 item->ddu_slot = stmt->getInt(4);
0117 item->dcc_fifo = stmt->getString(6);
0118 item->fiber_crate = stmt->getInt(8);
0119 item->fiber_pos = stmt->getInt(9);
0120 item->fiber_socket = stmt->getString(10);
0121
0122 con->terminateStatement(stmt);
0123 }
0124
0125 void cscmap1::cratedmb(int crate, int dmb, CSCMapItem::MapItem *item) {
0126 oracle::occi::Statement *stmt = con->createStatement();
0127
0128 stmt->setSQL(
0129 "begin cms_emu_cern.cscmap.crateid_chamber(:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, "
0130 ":16, :17); end;");
0131
0132 stmt->setInt(1, crate);
0133 stmt->setInt(2, dmb);
0134 stmt->registerOutParam(3, oracle::occi::OCCISTRING, 10);
0135 stmt->registerOutParam(4, oracle::occi::OCCIINT);
0136 stmt->registerOutParam(5, oracle::occi::OCCIINT);
0137 stmt->registerOutParam(6, oracle::occi::OCCIINT);
0138 stmt->registerOutParam(7, oracle::occi::OCCIINT);
0139 stmt->registerOutParam(8, oracle::occi::OCCIINT);
0140 stmt->registerOutParam(9, oracle::occi::OCCIINT);
0141 stmt->registerOutParam(10, oracle::occi::OCCIINT);
0142 stmt->registerOutParam(11, oracle::occi::OCCISTRING, 10);
0143 stmt->registerOutParam(12, oracle::occi::OCCIINT);
0144 stmt->registerOutParam(13, oracle::occi::OCCIINT);
0145 stmt->registerOutParam(14, oracle::occi::OCCIINT);
0146 stmt->registerOutParam(15, oracle::occi::OCCIINT);
0147 stmt->registerOutParam(16, oracle::occi::OCCIINT);
0148 stmt->registerOutParam(17, oracle::occi::OCCIINT);
0149
0150 stmt->execute();
0151
0152 item->chamberLabel = stmt->getString(3);
0153 item->chamberId = stmt->getInt(4);
0154 int chamberid = item->chamberId;
0155 int chamber = chamberid / 10 % 100;
0156 int rest = (chamberid - chamber * 10) / 1000;
0157 int ring = rest % 10;
0158 rest = (rest - ring) / 10;
0159 int station = rest % 10;
0160 int endcap = (rest - station) / 10;
0161 item->endcap = endcap;
0162 item->station = station;
0163 item->ring = ring;
0164 item->chamber = chamber;
0165 item->cscIndex = stmt->getInt(14);
0166 item->layerIndex = stmt->getInt(15);
0167 item->stripIndex = stmt->getInt(16);
0168 item->anodeIndex = stmt->getInt(17);
0169 item->strips = stmt->getInt(12);
0170 item->anodes = stmt->getInt(13);
0171 item->crateLabel = stmt->getString(11);
0172 item->crateid = stmt->getInt(9);
0173 item->sector = stmt->getInt(7);
0174 item->trig_sector = stmt->getInt(8);
0175 item->dmb = dmb;
0176 item->cscid = stmt->getInt(5);
0177
0178 stmt->setSQL(
0179 "begin cms_emu_cern.ddumap.chamberid_ddu(:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, "
0180 ":17, :18, :19); end;");
0181
0182 stmt->setInt(1, chamberid);
0183 stmt->registerOutParam(2, oracle::occi::OCCIINT);
0184 stmt->registerOutParam(3, oracle::occi::OCCIINT);
0185 stmt->registerOutParam(4, oracle::occi::OCCIINT);
0186 stmt->registerOutParam(5, oracle::occi::OCCIINT);
0187 stmt->registerOutParam(6, oracle::occi::OCCISTRING, 10);
0188 stmt->registerOutParam(7, oracle::occi::OCCIINT);
0189 stmt->registerOutParam(8, oracle::occi::OCCIINT);
0190 stmt->registerOutParam(9, oracle::occi::OCCIINT);
0191 stmt->registerOutParam(10, oracle::occi::OCCISTRING, 10);
0192 stmt->registerOutParam(11, oracle::occi::OCCIINT);
0193 stmt->registerOutParam(12, oracle::occi::OCCISTRING, 10);
0194 stmt->registerOutParam(13, oracle::occi::OCCIINT);
0195 stmt->registerOutParam(14, oracle::occi::OCCISTRING, 10);
0196 stmt->registerOutParam(15, oracle::occi::OCCIINT);
0197 stmt->registerOutParam(16, oracle::occi::OCCIINT);
0198 stmt->registerOutParam(17, oracle::occi::OCCIINT);
0199 stmt->registerOutParam(18, oracle::occi::OCCIINT);
0200 stmt->registerOutParam(19, oracle::occi::OCCIINT);
0201
0202 stmt->execute();
0203
0204 item->ddu = stmt->getInt(2);
0205 item->ddu_input = stmt->getInt(5);
0206 item->slink = stmt->getInt(7);
0207
0208 item->fed_crate = stmt->getInt(3);
0209 item->ddu_slot = stmt->getInt(4);
0210 item->dcc_fifo = stmt->getString(6);
0211 item->fiber_crate = stmt->getInt(8);
0212 item->fiber_pos = stmt->getInt(9);
0213 item->fiber_socket = stmt->getString(10);
0214
0215 con->terminateStatement(stmt);
0216 }
0217
0218 void cscmap1::ruiddu(int rui, int ddu_input, CSCMapItem::MapItem *item) {
0219 oracle::occi::Statement *stmt = con->createStatement();
0220
0221 stmt->setSQL(
0222 "begin cms_emu_cern.ddumap.ddu_chamber(:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, "
0223 ":17, :18, :19); end;");
0224
0225 stmt->setInt(1, rui);
0226 stmt->setInt(2, ddu_input);
0227 stmt->registerOutParam(3, oracle::occi::OCCIINT);
0228 stmt->registerOutParam(4, oracle::occi::OCCIINT);
0229 stmt->registerOutParam(5, oracle::occi::OCCISTRING, 10);
0230 stmt->registerOutParam(6, oracle::occi::OCCIINT);
0231 stmt->registerOutParam(7, oracle::occi::OCCIINT);
0232 stmt->registerOutParam(8, oracle::occi::OCCIINT);
0233 stmt->registerOutParam(9, oracle::occi::OCCISTRING, 10);
0234 stmt->registerOutParam(10, oracle::occi::OCCIINT);
0235 stmt->registerOutParam(11, oracle::occi::OCCISTRING, 10);
0236 stmt->registerOutParam(12, oracle::occi::OCCIINT);
0237 stmt->registerOutParam(13, oracle::occi::OCCISTRING, 10);
0238 stmt->registerOutParam(14, oracle::occi::OCCIINT);
0239 stmt->registerOutParam(15, oracle::occi::OCCIINT);
0240 stmt->registerOutParam(16, oracle::occi::OCCIINT);
0241 stmt->registerOutParam(17, oracle::occi::OCCIINT);
0242 stmt->registerOutParam(18, oracle::occi::OCCIINT);
0243 stmt->registerOutParam(19, oracle::occi::OCCIINT);
0244
0245 stmt->execute();
0246
0247 item->ddu = rui;
0248 item->ddu_input = ddu_input;
0249 item->slink = stmt->getInt(6);
0250
0251 item->fed_crate = stmt->getInt(3);
0252 item->ddu_slot = stmt->getInt(4);
0253 item->dcc_fifo = stmt->getString(5);
0254 item->fiber_crate = stmt->getInt(7);
0255 item->fiber_pos = stmt->getInt(8);
0256 item->fiber_socket = stmt->getString(9);
0257 int chamberid = stmt->getInt(14);
0258
0259 stmt->setSQL(
0260 "begin cms_emu_cern.cscmap.chamberid_crate(:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, "
0261 ":16, :17, :18, :19, :20); end;");
0262
0263 stmt->setInt(1, chamberid);
0264 stmt->registerOutParam(2, oracle::occi::OCCISTRING, 10);
0265 stmt->registerOutParam(3, oracle::occi::OCCIINT);
0266 stmt->registerOutParam(4, oracle::occi::OCCIINT);
0267 stmt->registerOutParam(5, oracle::occi::OCCIINT);
0268 stmt->registerOutParam(6, oracle::occi::OCCIINT);
0269 stmt->registerOutParam(7, oracle::occi::OCCIINT);
0270 stmt->registerOutParam(8, oracle::occi::OCCIINT);
0271 stmt->registerOutParam(9, oracle::occi::OCCIINT);
0272 stmt->registerOutParam(10, oracle::occi::OCCISTRING, 10);
0273 stmt->registerOutParam(11, oracle::occi::OCCIINT);
0274 stmt->registerOutParam(12, oracle::occi::OCCIINT);
0275 stmt->registerOutParam(13, oracle::occi::OCCIINT);
0276 stmt->registerOutParam(14, oracle::occi::OCCIINT);
0277 stmt->registerOutParam(15, oracle::occi::OCCIINT);
0278 stmt->registerOutParam(16, oracle::occi::OCCIINT);
0279 stmt->registerOutParam(17, oracle::occi::OCCIINT);
0280 stmt->registerOutParam(18, oracle::occi::OCCIINT);
0281 stmt->registerOutParam(19, oracle::occi::OCCIINT);
0282 stmt->registerOutParam(20, oracle::occi::OCCIINT);
0283
0284 stmt->execute();
0285
0286 item->chamberLabel = stmt->getString(10);
0287 item->chamberId = chamberid;
0288 int chamber = chamberid / 10 % 100;
0289 int rest = (chamberid - chamber * 10) / 1000;
0290 int ring = rest % 10;
0291 rest = (rest - ring) / 10;
0292 int station = rest % 10;
0293 int endcap = (rest - station) / 10;
0294 item->endcap = endcap;
0295 item->station = station;
0296 item->ring = ring;
0297 item->chamber = chamber;
0298 item->cscIndex = stmt->getInt(13);
0299 item->layerIndex = stmt->getInt(14);
0300 item->stripIndex = stmt->getInt(15);
0301 item->anodeIndex = stmt->getInt(16);
0302 item->strips = stmt->getInt(11);
0303 item->anodes = stmt->getInt(12);
0304 item->crateLabel = stmt->getString(2);
0305 item->crateid = stmt->getInt(3);
0306 item->sector = stmt->getInt(8);
0307 item->trig_sector = stmt->getInt(9);
0308 item->dmb = stmt->getInt(5);
0309 item->cscid = stmt->getInt(7);
0310
0311 stmt->execute();
0312
0313 con->terminateStatement(stmt);
0314 }