File indexing completed on 2024-04-06 12:23:15
0001 #include <iostream>
0002 #include <string>
0003 #include <vector>
0004 #include <time.h>
0005 #include <cstdlib>
0006 #include "OnlineDB/EcalCondDB/interface/EcalCondDBInterface.h"
0007 #include "OnlineDB/EcalCondDB/interface/RunTag.h"
0008 #include "OnlineDB/EcalCondDB/interface/RunIOV.h"
0009 #include "OnlineDB/EcalCondDB/interface/MonRunTag.h"
0010 #include "OnlineDB/EcalCondDB/interface/MonRunIOV.h"
0011 #include "OnlineDB/EcalCondDB/interface/MonPedestalsDat.h"
0012
0013
0014 using namespace std;
0015
0016 class CondDBApp {
0017 public:
0018
0019
0020
0021
0022 CondDBApp(string host, string sid, string user, string pass)
0023 {
0024 try {
0025 cout << "Making connection..." << flush;
0026 if (host != "?") {
0027 econn = new EcalCondDBInterface(host, sid, user, pass );
0028 } else {
0029 econn = new EcalCondDBInterface( sid, user, pass );
0030 }
0031 cout << "Done." << endl;
0032 } catch (runtime_error &e) {
0033 cerr << e.what() << endl;
0034 exit(-1);
0035 }
0036 }
0037
0038
0039
0040
0041
0042
0043 ~CondDBApp()
0044 {
0045 delete econn;
0046 }
0047
0048
0049
0050
0051
0052
0053
0054 void testWrite(int startrun, int numruns)
0055 {
0056
0057 run_t run = startrun;
0058
0059 cout << "Writing MonPedestalsDat Objects to database..." << endl;
0060
0061 LocationDef locdef;
0062 RunTypeDef rundef;
0063 RunTag runtag;
0064 RunIOV runiov;
0065
0066 MonVersionDef monverdef;
0067 MonRunTag montag;
0068 MonRunIOV moniov;
0069
0070 Tm startTm;
0071 Tm endTm;
0072 uint64_t oneMin = 1 * 60 * 1000000;
0073 uint64_t twentyMin = 20 * 60 * 1000000;
0074
0075
0076 startTm.setToString("2007-01-01 00:00:00");
0077 uint64_t microseconds = startTm.microsTime();
0078 microseconds += (startrun-1)*twentyMin;
0079
0080
0081
0082
0083 EcalLogicID ecid;
0084 map<EcalLogicID, MonPedestalsDat> dataset;
0085
0086
0087
0088 locdef.setLocation("H4");
0089 rundef.setRunType("PEDESTAL");
0090
0091 runtag.setLocationDef(locdef);
0092 runtag.setRunTypeDef(rundef);
0093
0094 runiov.setRunTag(runtag);
0095
0096 monverdef.setMonitoringVersion("test01");
0097 montag.setMonVersionDef(monverdef);
0098
0099 moniov.setMonRunTag(montag);
0100
0101
0102
0103
0104
0105 cout << "Getting EB channel set..." << flush;
0106 vector<EcalLogicID> channels_barrel;
0107 channels_barrel = econn->getEcalLogicIDSet("EB_crystal_number",
0108 1, 36,
0109 1, 1700
0110 ,EcalLogicID::NULLID, EcalLogicID::NULLID, "EB_crystal_number");
0111 cout << "Done size is:"<< channels_barrel.size() << endl;
0112
0113
0114
0115
0116 cout << "Getting EE channel set..." << flush;
0117 vector<EcalLogicID> channels;
0118 channels = econn->getEcalLogicIDSet("EE_crystal_number",
0119 -1, 1,
0120 -110, 100,
0121 -110 ,100, "EE_crystal_number");
0122 cout << "Done." << endl;
0123
0124
0125 cout << "Getting ECAL channel..." << flush;
0126 EcalLogicID channel_ecal;
0127 channel_ecal = econn->getEcalLogicID("ECAL");
0128 cout << "Done." << endl;
0129
0130
0131 cout << "Writing " << numruns << " sets of pedestals..." << endl;
0132 for (int i=1; i<=numruns; i++) {
0133
0134 startTm.setToMicrosTime(microseconds);
0135 endTm.setToMicrosTime(microseconds + oneMin);
0136 runiov.setRunNumber(run);
0137 runiov.setRunStart(startTm);
0138 runiov.setRunEnd(endTm);
0139
0140
0141 econn->insertRunIOV(&runiov);
0142
0143 map<EcalLogicID, RunTPGConfigDat> dataset_tpg;
0144 RunTPGConfigDat rtpg;
0145 rtpg.setConfigTag("TPGTrivial_config");
0146 dataset_tpg[channel_ecal]=rtpg;
0147
0148 cout << "Writing IOV " << i << " of " << numruns
0149 << " (run " << run << ")..." << flush;
0150 econn->insertDataSet(&dataset_tpg, &runiov );
0151 cout << "Done." << endl;
0152
0153
0154
0155 moniov.setRunIOV(runiov);
0156 moniov.setSubRunNumber(0);
0157 moniov.setSubRunStart(startTm);
0158 moniov.setSubRunEnd(endTm);
0159
0160
0161
0162 for (int j=0; j<(int)channels.size(); j++) {
0163
0164 MonPedestalsDat ped;
0165
0166
0167 float val = 1 + rand();
0168 ped.setPedMeanG1(val);
0169 ped.setPedMeanG6(val);
0170 ped.setPedMeanG12(val);
0171 ped.setPedRMSG1(val);
0172 ped.setPedRMSG6(val);
0173 ped.setPedRMSG12(val);
0174 ped.setTaskStatus(1);
0175
0176
0177 dataset[channels[j]] = ped;
0178 }
0179
0180
0181 cout << "Writing IOV " << i << " of " << numruns
0182 << " (run " << run << ")..." << flush;
0183 econn->insertDataArraySet(&dataset, &moniov );
0184 cout << "Done." << endl;
0185
0186 map<EcalLogicID, MonPedestalsDat> dataset_bar;
0187
0188 for (int j=0; j<(int)channels_barrel.size(); j++) {
0189
0190
0191 MonPedestalsDat ped;
0192 float val = 1 + rand();
0193 ped.setPedMeanG1(val);
0194 ped.setPedMeanG6(val);
0195 ped.setPedMeanG12(val);
0196 ped.setPedRMSG1(val);
0197 ped.setPedRMSG6(val);
0198 ped.setPedRMSG12(val);
0199 ped.setTaskStatus(1);
0200
0201
0202 dataset_bar[channels_barrel[j]] = ped;
0203 }
0204
0205
0206 cout << "Writing IOV " << i << " of " << numruns
0207 << " (run " << run << ")..." << flush;
0208 econn->insertDataArraySet(&dataset_bar, &moniov );
0209 cout << "Done." << endl;
0210
0211
0212 run++;
0213 microseconds += twentyMin;
0214 }
0215 cout << "Done." << endl << endl;
0216 }
0217
0218
0219
0220 private:
0221 CondDBApp();
0222 EcalCondDBInterface* econn;
0223 };
0224
0225
0226
0227 int main (int argc, char* argv[])
0228 {
0229 string host;
0230 string sid;
0231 string user;
0232 string pass;
0233 int startrun;
0234 int numruns;
0235
0236 if (argc != 7) {
0237 cout << "Usage:" << endl;
0238 cout << " " << argv[0] << " <host> <SID> <user> <pass> <start run> <num runs>" << endl;
0239 exit(-1);
0240 }
0241
0242 host = argv[1];
0243 sid = argv[2];
0244 user = argv[3];
0245 pass = argv[4];
0246 startrun = atoi(argv[5]);
0247 numruns = atoi(argv[6]);
0248
0249 try {
0250 cout << "Host: " << host << endl;
0251 cout << "SID: " << sid << endl;
0252 cout << "User: " << user << endl;
0253
0254 CondDBApp app(host, sid, user, pass);
0255
0256 app.testWrite(startrun, numruns);
0257 } catch (runtime_error &e) {
0258 cout << "ERROR: " << e.what() << endl;
0259 } catch (...) {
0260 cout << "Unknown error caught" << endl;
0261 }
0262
0263 cout << "All Done." << endl;
0264
0265 return 0;
0266 }