27 {
28 void CoolMdt::initialize() {m_fist_folder = true;}
29
30 cool::IDatabasePtr
31 CoolMdt::
32 coolDbInstance(const std::string& dbStr, bool readOnly) {
33 try {
34
35 cool::IDatabaseSvc&
dbSvc = this->databaseService();
36
37 return dbSvc.openDatabase(dbStr.c_str(), readOnly);
38 }
39 catch (cool::DatabaseDoesNotExist&) {
40 std::cerr << "Error! Database does not exist!" << std::endl;
41 throw;
42 }
43 }
44
45 cool::IFolderPtr
46 CoolMdt::
47 coolFolderInstance(const std::string& folderStr) {
48 try {
49 cool::IFolderPtr
folder = m_coolDb->getFolder(folderStr.c_str());
50
52 }
53 catch (cool::FolderNotFound&) {
54 std::cerr << "Error! Folder '" << folderStr << "' does not exist!" << std::endl;
55 throw;
56 }
57 }
58
59 void
60 CoolMdt::coolDbFolder(const std::string& dbStr, const std::string& folderStr) {
61 m_coolDb = this->coolDbInstance(dbStr, false);
62 m_coolFolder = this->coolFolderInstance(folderStr);
63 }
64
65 void
66 CoolMdt::
67 setSince(cool::Int64
run, cool::Int64 lumi) {
69 }
70
71 void
72 CoolMdt::
73 setUntil(cool::Int64
run, cool::Int64 lumi) {
75 }
76
77 void
78 CoolMdt::
79 setIOV(cool::Int64 runS, cool::Int64 lumiS, cool::Int64 runU, cool::Int64 lumiU) {
80 this->setSince(runS, lumiS);
81 this->setUntil(runU, lumiU);
82 this->printIOV();
83 }
84
85 void
86 CoolMdt::
87 setIOV(cool::Int64
run) {
88 this->setSince(
run, 0);
89 this->setUntil(
run, 4294967295U);
90 this->printIOV();
91 }
92
93 void
94 CoolMdt::
95 printIOV() {
96 cool::Int64 runS = m_since >> 32;
97 cool::Int64 lumiS = m_since - (runS << 32);
98 cool::Int64 runU = m_until >> 32;
99 cool::Int64 lumiU = m_until - (runU << 32);
100 std::cout << "Using IOVrange [(" << runS << "," << lumiS << "),(" << runU << "," << lumiU << ")] " << "[" <<
101 m_since << "," << m_until << "]" << std::endl;
102 }
103
104 void
105 CoolMdt::
106 CoolOpen(const std::string& dbStr) {
107 m_coolDb = this->coolDbInstance(dbStr, false);
108 }
109
110 CoolMdt::
111 ~CoolMdt () {
112 m_coolFolder->flushStorageBuffer();
113 m_coolDb->closeDatabase();
114
115 }
116
117 cool::RecordSpecification
118 CoolMdt::
119 createSpecDataDead() {
120
121 cool::RecordSpecification
spec;
122 spec.extend(
"Chamber_Name", cool::StorageType::String255);
123 spec.extend(
"Dead_multilayer", cool::StorageType::String255);
124 spec.extend(
"Dead_layer", cool::StorageType::String255);
125 spec.extend(
"Dead_mezz", cool::StorageType::String255);
126 spec.extend(
"Dead_asd", cool::StorageType::String255);
127 spec.extend(
"Dead_tube", cool::StorageType::String4k);
128
129 if (m_fist_folder) {
130 m_coolFolder = this->coolFolderInstance("/OFFLINE/DQMFOFFLINE/DQMFOFFLINE_DEAD");
131 m_coolFolder->setupStorageBuffer();
132
133 m_fist_folder = false;
134 }
135 if (!(spec == m_coolFolder->payloadSpecification())) {
136 std::cerr << "ERROR Source and destination folder specifications differ." << std::endl;
137 }
138
140 }
141
142 coral::AttributeList
143 CoolMdt::
144 createPayloadDataDead(const std::string& ChamberName,
145 const std::string& DeadMultilayer,
146 const std::string& DeadLayer,
147 const std::string& DeadMezz,
148 const std::string& DeadAsd,
149 const std::string& DeadTube,
150 const cool::RecordSpecification& spec) {
151
152
153 coral::AttributeList
payload = cool::Record(spec).attributeList();
154
155 payload[
"Chamber_Name"].data<cool::String255>() = ChamberName;
156 payload[
"Dead_multilayer"].data<cool::String255>() = DeadMultilayer;
157 payload[
"Dead_layer"].data<cool::String255>() = DeadLayer;
158 payload[
"Dead_mezz"].data<cool::String255>() = DeadMezz;
159 payload[
"Dead_asd"].data<cool::String255>() = DeadAsd;
160 payload[
"Dead_tube"].data<cool::String4k>() = DeadTube;
161
163 }
164
165
166
167 cool::RecordSpecification
168 CoolMdt::
169 createSpecDataNoisy() {
170
171 cool::RecordSpecification
spec;
172 spec.extend(
"Chamber_Name", cool::StorageType::String255);
173 spec.extend(
"Noisy_multilayer", cool::StorageType::String255);
174 spec.extend(
"Noisy_layer", cool::StorageType::String255);
175 spec.extend(
"Noisy_mezz", cool::StorageType::String255);
176 spec.extend(
"Noisy_asd", cool::StorageType::String255);
177 spec.extend(
"Noisy_tube", cool::StorageType::String4k);
178
179 if (m_fist_folder) {
180 m_coolFolder = this->coolFolderInstance("/OFFLINE/DQMFOFFLINE/DQMFOFFLINE_NOISY");
181 m_coolFolder->setupStorageBuffer();
182
183 m_fist_folder = false;
184 }
185 if (!(spec == m_coolFolder->payloadSpecification())) {
186 std::cerr << "ERROR Source and destination folder specifications differ." << std::endl;
187 }
188
190 }
191
192 coral::AttributeList
193 CoolMdt::
194 createPayloadDataNoisy(const std::string& ChamberName,
195 const std::string& NoisyMultilayer,
196 const std::string& NoisyLayer,
197 const std::string& NoisyMezz,
198 const std::string& NoisyAsd,
199 const std::string& NoisyTube,
200 const cool::RecordSpecification& spec) {
201
202
203 coral::AttributeList
payload = cool::Record(spec).attributeList();
204
205 payload[
"Chamber_Name"].data<cool::String255>() = ChamberName;
206 payload[
"Noisy_multilayer"].data<cool::String255>() = NoisyMultilayer;
207 payload[
"Noisy_layer"].data<cool::String255>() = NoisyLayer;
208 payload[
"Noisy_mezz"].data<cool::String255>() = NoisyMezz;
209 payload[
"Noisy_asd"].data<cool::String255>() = NoisyAsd;
210 payload[
"Noisy_tube"].data<cool::String4k>() = NoisyTube;
211
213 }
214
215
216
217
218 void
219 CoolMdt::
221 try {
222 cool::IObjectIteratorPtr
objects = m_coolFolder->browseObjects(m_since, m_until,
selection,
"");
224 const cool::IObject& element =
objects->currentRef();
225 std::cout << element << std::endl;
226 }
227 }
228 catch (cool::Exception& e) {
229 std::cout <<
"Unknown exception caught!" <<
e.what() << std::endl;
230 std::cout << " dentro create payload" << std::endl;
231 }
232 }
233
234 std::string
235 CoolMdt::
236 dumpField(cool::ChannelId channelId, std::string field) {
238 try {
239 cool::ChannelSelection
selection = cool::ChannelSelection(channelId);
240 cool::IObjectIteratorPtr
objects = m_coolFolder->browseObjects(m_since, m_until,
selection,
"");
242 const cool::IObject& element =
objects->currentRef();
243 result = element.payloadValue(field);
244 }
245 }
246 catch (cool::Exception& e) {
247 std::cout <<
"Unknown exception caught!" <<
e.what() << std::endl;
248 }
250 }
251
252 int
253 CoolMdt::
254 dumpCode(const std::string& channelName) {
255 std::string
result = this->dumpField(this->getCoolFolder()->
channelId(channelName.c_str()),
"Code");
257 }
258
259 void
260 CoolMdt::
261 dumpall() {
262 this->
dump(cool::ChannelSelection::all());
263 }
264
265 void
266 CoolMdt::
267 insertDeadFlag_withTag(cool::Int64
run,
268 cool::ChannelId channelId,
269 const std::string& ChamberName,
270 const std::string& DeadMultilayer,
271 const std::string& DeadLayer,
272 const std::string& DeadMezz,
273 const std::string& DeadAsd,
274 const std::string& DeadTube,
275 const std::string& cool_tag) {
276 try {
277 cool::RecordSpecification
spec = this->createSpecDataDead();
278 coral::AttributeList
payload = this->createPayloadDataDead(ChamberName, DeadMultilayer, DeadLayer, DeadMezz,
279 DeadAsd, DeadTube, spec);
280 cool::ValidityKey since_u = (
run << 32);
281 cool::ValidityKey until_u = (
run + 1) << 32;
282 m_coolFolder->storeObject(since_u, until_u, cool::Record(
283 m_coolFolder->payloadSpecification(), payload), channelId, cool_tag);
284
285 }
286 catch (cool::Exception& e) {
287 std::cerr << " dentro create insert" << std::endl;
288 std::cerr <<
"Unknown exception caught!" <<
e.what() << std::endl;
289 }
290 }
291
292 void
293 CoolMdt::
294 insertDeadFlag(cool::Int64
run,
295 cool::ChannelId channelId,
296 const std::string& ChamberName,
297 const std::string& DeadMultilayer,
298 const std::string& DeadLayer,
299 const std::string& DeadMezz,
300 const std::string& DeadAsd,
301 const std::string& DeadTube) {
302 std::cout << "Trying to store payload [channel " << std::endl;
303 try {
304 cool::RecordSpecification
spec = this->createSpecDataDead();
305 coral::AttributeList
payload = this->createPayloadDataDead(ChamberName, DeadMultilayer, DeadLayer, DeadMezz,
306 DeadAsd, DeadTube, spec);
307 cool::ValidityKey since_u = (
run << 32);
308 cool::ValidityKey until_u = (
run + 1) << 32;
309 m_coolFolder->storeObject(since_u, until_u, cool::Record(m_coolFolder->payloadSpecification(), payload),
310 channelId);
311
312 }
313 catch (cool::Exception& e) {
314 std::cerr << " dentro create insert" << std::endl;
315 std::cerr <<
"Unknown exception caught!" <<
e.what() << std::endl;
316 }
317 }
318
319
320
321
322
323 void
324 CoolMdt::
325 insertNoisyFlag_withTag(cool::Int64
run,
326 cool::ChannelId channelId,
327 const std::string& ChamberName,
328 const std::string& NoisyMultilayer,
329 const std::string& NoisyLayer,
330 const std::string& NoisyMezz,
331 const std::string& NoisyAsd,
332 const std::string& NoisyTube,
333 const std::string& cool_tag) {
334 try {
335 cool::RecordSpecification
spec = this->createSpecDataNoisy();
336 coral::AttributeList
payload = this->createPayloadDataNoisy(ChamberName, NoisyMultilayer, NoisyLayer, NoisyMezz,
337 NoisyAsd, NoisyTube, spec);
338 cool::ValidityKey since_u = (
run << 32);
339 cool::ValidityKey until_u = (
run + 1) << 32;
340 m_coolFolder->storeObject(since_u, until_u, cool::Record(
341 m_coolFolder->payloadSpecification(), payload), channelId, cool_tag);
342
343 }
344 catch (cool::Exception& e) {
345 std::cerr << " dentro create insert" << std::endl;
346 std::cerr <<
"Unknown exception caught!" <<
e.what() << std::endl;
347 }
348 }
349
350 void
351 CoolMdt::
352 insertNoisyFlag(cool::Int64
run,
353 cool::ChannelId channelId,
354 const std::string& ChamberName,
355 const std::string& NoisyMultilayer,
356 const std::string& NoisyLayer,
357 const std::string& NoisyMezz,
358 const std::string& NoisyAsd,
359 const std::string& NoisyTube) {
360 std::cout << "Trying to store payload [channel " << std::endl;
361 try {
362 cool::RecordSpecification
spec = this->createSpecDataNoisy();
363 coral::AttributeList
payload = this->createPayloadDataNoisy(ChamberName, NoisyMultilayer, NoisyLayer, NoisyMezz,
364 NoisyAsd, NoisyTube, spec);
365 cool::ValidityKey since_u = (
run << 32);
366 cool::ValidityKey until_u = (
run + 1) << 32;
367 m_coolFolder->storeObject(since_u, until_u, cool::Record(m_coolFolder->payloadSpecification(), payload),
368 channelId);
369
370 }
371 catch (cool::Exception& e) {
372 std::cerr << " dentro create insert" << std::endl;
373 std::cerr <<
"Unknown exception caught!" <<
e.what() << std::endl;
374 }
375 }
376
377 cool::IFolderPtr
378 CoolMdt::
379 getCoolFolder() {
380 return this->m_coolFolder;
381 }
382
383 cool::IDatabasePtr
384 CoolMdt::
385 getCoolDb() {
386 return this->m_coolDb;
387 }
388}
const std::string selection
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...