ATLAS Offline Software
openCoraCool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 
7 #include <vector>
8 #include <string>
9 #include <array>
10 #include <iostream>
11 
12 #include "CoolKernel/DatabaseId.h"
13 #include "CoolKernel/Exception.h"
14 #include "CoolKernel/IDatabaseSvc.h"
15 #include "CoolKernel/IDatabase.h"
16 #include "CoolApplication/Application.h"
17 #include "CoolKernel/IFolder.h"
18 #include "CoolKernel/FolderSpecification.h"
19 #include "CoolKernel/RecordSpecification.h"
20 #include "CoolKernel/Record.h"
21 #include "CoolKernel/FieldSpecification.h"
22 #include "CoolKernel/IObject.h"
23 #include "CoolKernel/IObjectIterator.h"
24 #include "CoolKernel/IRecordIterator.h"
25 #include "CoolKernel/StorageType.h"
26 
31 #include "RelationalAccess/ConnectionService.h"
32 
33 struct MyKey{
34  cool::ValidityKey first;
35  cool::ValidityKey second;
36  cool::ChannelId channelId;
37 
38  MyKey():first(0),second(0),channelId(0){}
39  MyKey(const cool::ValidityKey & f,const cool::ValidityKey & s, const cool::ChannelId & c):first(f),second(s),channelId(c){}
40  bool operator<(const MyKey & rhs) const{
41  if (channelId > rhs.channelId) return true;
42  if ((channelId == rhs.channelId) and (first<rhs.first)) return true;
43  if ((channelId == rhs.channelId) and (first==rhs.first) and (second<rhs.second)) return true;
44  return false;
45  }
46 };
47 
48 //typedef std::pair<cool::ValidityKey, cool::ValidityKey> IovKey_t;
49 typedef MyKey IovKey_t;
50 
51 typedef std::map<IovKey_t, CoraCoolObject::AttrListVec> CCIovVectorMap_t;
52 
56 //conversion between types is going to be very manual
57 namespace Run1{
58  namespace Chip{
59  typedef cool::Int16 chip_t;
60  typedef cool::Int16 active_t;
61  typedef cool::Int16 address_t;
62  typedef cool::Int16 config_t;
63  typedef cool::Int32 mask_t;
64  typedef cool::Int16 settings_t;
65  typedef cool::Int16 rc_t;
66  typedef cool::String255 rcArgs_t;
67  typedef cool::Float c_t;
68  typedef cool::Float target_t;
69  typedef cool::String255 trim_t;
70  }
71  // NOTE: Order of variables changed Run1/Run2 for Geog
72  namespace Geog{
73  typedef cool::Int32 super_t;
74  typedef cool::Int32 medium_t;
75  typedef cool::Int32 position_t;
76  typedef cool::Int32 MUR_t; //<! last in run 1
77 
78  }
79  namespace MUR{
80  typedef cool::Int32 MUR_t;
81  typedef cool::Int32 module_t;
82  typedef cool::Int64 moduleId_t;
83  typedef cool::Int32 xxFibre_t;
84  }
85  namespace Module{
86  typedef cool::Int64 id_t;
87  typedef cool::Int16 group_t;
88  typedef cool::Int16 active_t;
89  typedef cool::Int16 select_t;
90  }
91  namespace PowerMUR{
92  typedef cool::Int32 MUR_t;
93  typedef cool::Int16 module_t;
94  typedef cool::Int16 crate_t;
95  typedef cool::Int16 channel_t;
96  }
97  namespace Channel{
98  typedef cool::Int32 crate_t;
99  typedef cool::Int32 rod_t;
100  typedef cool::Int32 channel_t;
101  typedef cool::Int16 opCurrent_t;
102  typedef cool::Int16 opDelay_t;
103  typedef cool::Int16 opMarkSpace_t;
104  typedef cool::Int16 threshold_t;
105  typedef cool::Int16 delay_t;
106  typedef cool::Int32 errMask_t;
107  }
108  namespace ROD{
109  typedef cool::Int32 crate_t;
110  typedef cool::Int16 slot_t;
111  typedef cool::Int32 ROB_t;
112  typedef cool::Int32 SRC_t;
113  typedef cool::Int16 bcid_t;
114  typedef cool::Int32 slave_t;
115  }
116  namespace RODMUR{
117  typedef cool::Int32 crate_t;
118  typedef cool::Int32 rod_t;
119  typedef cool::Int32 position_t;
120  typedef cool::Int32 MUR_t;
121  }
122  namespace Slave{
123  typedef cool::Int32 id_t;
124  typedef cool::String255 file_t;
125  }
126  namespace TIM {
127  typedef cool::Int32 crate_t;
128  typedef cool::Float freq_t;
129  typedef cool::Int32 trigType_t;
130  typedef cool::Int32 bcidOffset_t;
131  typedef cool::Int32 trigEnable_t;
132  typedef cool::Int16 runMode_t;
133  typedef cool::Int16 delay_t;
134  }
135 }
136 
137 namespace Run2{
138  namespace Chip{
139  typedef cool::UChar chip_t;
140  typedef cool::Bool active_t;
141  typedef cool::UChar address_t;
142  typedef cool::UInt16 config_t;
143  typedef cool::UInt32 mask_t;
144  typedef cool::UChar settings_t;
145  typedef cool::UChar rc_t;
146  typedef cool::String255 rcArgs_t;
147  typedef cool::Float c_t;
148  typedef cool::Float target_t;
149  typedef cool::String255 trim_t;
150  }
151  // NOTE: Order of variables changed Run1/Run2 for Geog
152  namespace Geog{
153  typedef cool::UInt32 MUR_t; //<! first in run 2
154  typedef cool::Int16 super_t;
155  typedef cool::UChar medium_t;
156  typedef cool::Int16 position_t;
157  }
158 
159  namespace MUR{
160  typedef cool::UInt32 MUR_t;
161  typedef cool::UChar module_t;
162  typedef cool::Int64 moduleId_t;
163  typedef cool::UChar xxFibre_t;
164  }
165  namespace Module{
166  typedef cool::Int64 id_t;
167  typedef cool::Int16 group_t;
168  typedef cool::Bool active_t;
169  typedef cool::Bool select_t;
170  typedef cool::UInt16 chipStatus_t;
171  }
172  namespace PowerMUR{
173  typedef cool::UInt32 MUR_t;
174  typedef cool::UChar module_t;
175  typedef cool::UChar crate_t;
176  typedef cool::UChar channel_t;
177  }
178  namespace Channel{
179  typedef cool::UChar crate_t;
180  typedef cool::UChar rod_t;
181  typedef cool::UChar channel_t;
182  typedef cool::UChar opCurrent_t;
183  typedef cool::UInt16 opDelay_t;
184  typedef cool::UChar opMarkSpace_t;
185  typedef cool::UChar threshold_t;
186  typedef cool::UChar delay_t;
187  typedef cool::UInt32 errMask_t;
188  }
189  namespace ROD{
190  typedef cool::UChar crate_t;
191  typedef cool::UChar slot_t;
192  typedef cool::Int32 ROB_t;
193  typedef cool::Int32 SRC_t;
194  typedef cool::Int16 bcid_t;
195  typedef cool::Int32 slave_t;
196  }
197  namespace RODMUR{
198  typedef cool::UChar crate_t;
199  typedef cool::UChar rod_t;
200  typedef cool::UChar position_t;
201  typedef cool::UInt32 MUR_t;
202  }
203  namespace Slave{
204  typedef cool::Int32 id_t;
205  typedef cool::String255 file_t;
206  }
207  namespace TIM {
208  typedef cool::UChar crate_t;
209  typedef cool::Float freq_t;
210  typedef cool::UInt32 trigType_t;
211  typedef cool::UInt16 bcidOffset_t;
212  typedef cool::UInt32 trigEnable_t;
213  typedef cool::UChar runMode_t;
214  typedef cool::UInt16 delay_t;
215  }
216 }
217 //http://acode-browser.usatlas.bnl.gov/lxr/source/atlas/Simulation/RunDependentSim/RunDependentSimComps/python/RunDMCFlags.py
258 typedef std::pair<cool::ValidityKey, cool::ValidityKey> IovPeriod_t;
259 IovKey_t
260 makeRunInterval(const cool::ValidityKey runstart, const cool::ValidityKey runend,const cool::ChannelId channelId ){
261  cool::ValidityKey s =runstart<<32LL;
262  if (runend==cool::ValidityKeyMax) return IovKey_t(s, cool::ValidityKeyMax,channelId);
263  cool::ValidityKey e =(runend+1LL)<<32LL;
264  return IovKey_t(s, e,channelId);
265 }
266 
267 bool inInterval(const cool::ValidityKey n, const cool::ValidityKey from, const cool::ValidityKey to){
268  return ((n>from) and (n<=to));
269 }
270 cool::ValidityKey
271 convertUntil(const cool::ValidityKey & until){
272  if (until ==0) return 140000;
273  if (until==1230768000000000000) return 139999;
274  if (until==1262304000000000000) return 149999;
275  if (until==1288569600000000000) return 167999;
276  if (until==1290686400000000000) return 169799;
277  if (until==1293840000000000000) return 170999;
278 
279  if (until==1333588404000000000) return 200804;
280  if (until==1333612447000000000) return 200805;
281 
282  if (until==1356998400000000000) return 216999;
283  return cool::ValidityKeyMax;
284 }
285 
286 cool::ValidityKey
287 convertSince(const cool::ValidityKey & since){
288  if (since==0) return 0;
289  if (since==1230768000000000000) return 140000;
290  if (since==1262304000000000000) return 150000;
291  if (since==1288569600000000000) return 168000;
292  if (since==1290686400000000000) return 169800;
293  if (since==1293840000000000000) return 171000;
294 
295  if (since==1333588404000000000) return 200805;
296 
297  if (since==1333612447000000000) return 200806;
298  return 217000;
299 }
300 
301 
302 IovKey_t
304  const auto since=iov.first;
305  const auto until=iov.second;
306  const auto channelId = iov.channelId;
307 
309 }
310 
311 //function to check the input arguments to main()
312 bool
313 argumentsOK(const int numArgs, const char **){
314  bool result(true);
315  result = (numArgs>1) and (numArgs<4);
316  return result;
317 }
318 
319 
320 // translate simple connection string (no slash) to mycool.db with given
321 // instance name, all others are left alone
322 std::string
323 transConn(const std::string& inconn) {
324  std::string result(inconn);
325  if (inconn.find('/')==std::string::npos) {
326  result= "sqlite://X;schema=/tmp/sroe/mycool.db;dbname="+inconn;
327  }
328  return result;
329 }
330 
331 //RAII context carrying the database connection
332 class DbConnection{
333 public:
334  DbConnection(const std::string & sourceDb,const bool isCoraCool=false);
336  bool isOpen() const;
337  cool::IDatabasePtr dbPtr() const;
339 
340 private:
341  coral::ConnectionService m_coralsvc;
342  cool::Application m_coolapp;
343  const cool::IDatabaseSvc & m_dbSvc;
344  cool::IDatabasePtr m_sourceDbPtr;
346  bool m_isOpen;
347 };
348 
349 //is the descriptor that of a CoraCool-style folder?
350 bool
351 isCoraCoolDescriptor(const std::string & descriptor){
352  return (descriptor.find("<coracool") != std::string::npos);
353 }
354 
355 //make db connection upon construction
356 DbConnection::DbConnection(const std::string & sourceDb, const bool isCoraCool):
357  m_coralsvc{},
358  m_coolapp(&m_coralsvc),
359  m_dbSvc(m_coolapp.databaseService()),
360  m_sourceDbPtr(nullptr),
361  m_sourceCoraPtr(nullptr),
362  m_isOpen(false){
363  bool readOnly(true);
364  const std::string dbConnectionString=transConn(sourceDb);
365  readOnly= (dbConnectionString.find ("sqlite")==std::string::npos);
366  try {
367  m_sourceDbPtr=m_dbSvc.openDatabase(dbConnectionString,readOnly);
368  if (isCoraCool) m_sourceCoraPtr=CoraCoolDatabasePtr(new CoraCoolDatabase(sourceDb,
369  m_sourceDbPtr,m_coralsvc,readOnly));
370  }
371  catch (std::exception& e) {
372  std::cout << "Cool exception caught: " << e.what() << std::endl;
373  if (not readOnly){
374  try {
375  std::cout<<"creating "<<dbConnectionString<<std::endl;
376  m_sourceDbPtr=m_dbSvc.createDatabase(dbConnectionString);
377  } catch (std::exception& e){
378  std::cout << "Cool exception caught: " << e.what() << std::endl;
379  }
380  }
381  }
382  m_isOpen=(m_sourceDbPtr!=nullptr);
383 }
384 
385 //break db connection on destruction
387  if (isOpen()){
388  m_sourceDbPtr->closeDatabase();
389  }
390 }
391 
392 //return bare db pointer
393 cool::IDatabasePtr
394 DbConnection::dbPtr() const{
395  return m_sourceDbPtr;
396 }
397 
398 //return coracool style db pointer
401  return m_sourceCoraPtr;
402 }
403 
404 bool
405 DbConnection::isOpen() const{
406  return m_isOpen;
407 }
408 
409 
410 std::string
411 convertTagToRun2(const std::string & run1Tag){
412  std::string tag=run1Tag;
413  tag.erase(12,7);
414  return tag;
415 }
416 
417 
418 
419 //specification to identify a given folder from full name and tag
420 struct FolderSpec{
421  const std::string name;
422  const std::string tag;
423  FolderSpec(const std::string & thename, const std::string & thetag):name(thename),tag(thetag){};
425 };
426 
427 
428 //Folder interface class
429 class Folder{
430 public:
431  Folder(const DbConnection & theConnection, const FolderSpec & theFolder);
432  bool isValid() const;
433  std::string description() const;
435  cool::RecordSpecification foreignKeySpec();
436  cool::RecordSpecification payloadSpec() const;
437  bool isSingleVersion() const;
438  std::string tag() const;
439  const CoraCoolFolderPtr & ccPtr() const;
440  const cool::IFolderPtr & ptr() const;
441 private:
442  const DbConnection & m_connection;
443  const FolderSpec m_folderSpec;
444  cool::IFolderPtr m_folderPtr;
447  bool checkWhetherCoraCool() const;
448 };
449 
450 Folder::Folder(const DbConnection & theConnection, const FolderSpec & theFolder)
451  :m_connection(theConnection),m_folderSpec(theFolder),m_folderPtr{},
452  m_sourceflc{},m_isCoraCool(false){
453  try{
454  m_folderPtr=m_connection.dbPtr()->getFolder(theFolder.name);
455  m_isCoraCool=checkWhetherCoraCool();
456  if (m_isCoraCool) m_sourceflc=m_connection.coraCoolPtr()->getFolder(theFolder.name);
457  } catch (cool::Exception & e){
458  std::cout<<" Could not get folder "<<theFolder.name<<std::endl;
459  }
460 }
461 
463 Folder::folderSpec() const{
464  return m_folderSpec;
465 }
466 
467 const cool::IFolderPtr &
468 Folder::ptr() const{
469  return m_folderPtr;
470 }
471 
472 //assume the coracool folder is valid if the pointer to it is valid
473 bool
474 Folder::isValid() const{
475  bool result = (m_folderPtr != nullptr);
476  if (m_isCoraCool) result &=(m_sourceflc != nullptr);
477  return result;
478 }
479 
480 bool
482  return (cool::FolderVersioning::SINGLE_VERSION == m_folderPtr->versioningMode());
483 }
484 
485 std::string
486 Folder::description() const{
487  return (m_folderPtr->description());
488 }
489 
490 bool
493 }
494 
495 cool::RecordSpecification
497  if (m_sourceflc==nullptr) return cool::RecordSpecification();
498  return m_sourceflc->fkSpecification();
499 }
500 
501 cool::RecordSpecification
502 Folder::payloadSpec() const{
503  if (m_isCoraCool){
504  return m_sourceflc->payloadSpecification();
505  }
506  return m_folderPtr->payloadSpecification();
507 }
508 
509 std::string
510 Folder::tag() const{
511  return m_folderSpec.tag;
512 }
513 
514 const CoraCoolFolderPtr &
516  return m_sourceflc;
517 }
518 
519 //Criterion for selecting a particular set of data vectors in the folder
521  SelectionCriterion(const cool::ChannelSelection & c, const cool::ValidityKey & s, const cool::ValidityKey & u):
522  channels(c), since(s),until(u){
524  }
525  const cool::ChannelSelection channels;
526  const cool::ValidityKey since;
527  const cool::ValidityKey until;
528 };
529 
530 //Read one vector of attribute lists
533  if (ccPtr->size()>0){
534  CoraCoolObject::const_iterator i(ccPtr->begin());
535  CoraCoolObject::const_iterator end(ccPtr->end());
537  return result;
538  }
539  CoraCoolObject::AttrListVec emptyArray;
540  return emptyArray;
541 }
542 
543 
544 
545 //read a selection of vectors of attribute lists in the given folder
547 readCC(const Folder & theFolder, const SelectionCriterion & choice, const unsigned int limit=10){
548  theFolder.ccPtr()->setPrefetchAll(true);
549  CoraCoolObjectIterPtr sourceitr;
550  if (theFolder.isSingleVersion()) {
551  sourceitr=theFolder.ccPtr()->browseObjects(choice.since, choice.until, choice.channels);
552  } else {
553  sourceitr=theFolder.ccPtr()->browseObjects(choice.since, choice.until, choice.channels, theFolder.tag());
554  }
555  unsigned int counter(0);
556  std::map<IovKey_t, CoraCoolObject::AttrListVec> mapOfVectorsByIov;
557  while (sourceitr->hasNext() and (counter<limit)) {
558  CoraCoolObjectPtr obj=sourceitr->next();
559  IovKey_t iov(obj->since(),obj->until(),obj->channelId());
560  mapOfVectorsByIov[iov]=readOneDatum(obj);
561  ++counter;
562  }
563  return mapOfVectorsByIov;
564 }
565 
566 typedef std::map<IovKey_t, cool::IRecordVector> IovVectorMap_t;
567 
569 read(const Folder & theFolder, const SelectionCriterion & choice, const unsigned int limit=10){
570  theFolder.ptr()->setPrefetchAll(false);
571  cool::IObjectIteratorPtr sourceitr;
572  if (theFolder.isSingleVersion()) {
573  sourceitr=theFolder.ptr()->browseObjects(choice.since, choice.until, choice.channels);
574  } else {
575  sourceitr=theFolder.ptr()->browseObjects(choice.since, choice.until, choice.channels, theFolder.tag());
576  }
577  unsigned int counter(0);
578  std::map<IovKey_t, cool::IRecordVector> mapOfVectorsByIov;
579  while (sourceitr->goToNext() and counter<limit) {
580  const cool::IObject& sobj=sourceitr->currentRef();
581  cool::IRecordIterator& spitr=sobj.payloadIterator();
582  const cool::IRecordVectorPtr svptr=spitr.fetchAllAsVector();
583  cool::IRecordVector::const_iterator svitr=svptr->begin();
584  cool::IRecordVector::const_iterator svend=svptr->end();
585  IovKey_t iov(sobj.since(),sobj.until(),sobj.channelId());
586  mapOfVectorsByIov[iov]=*svptr;
587  ++counter;
588  }
589  return mapOfVectorsByIov;
590 }
600 template<class R2, class R1>
601 void
602 setRecord(cool::Record & r, const coral::AttributeList & a, const std::string & itemName, const std::string &targetName){
603  static bool warning(true);
604  try{
605  if (not a[itemName].isNull()){
606  const R1 attribute =a[itemName].data<R1>();
607  const R2 field = static_cast<R2>(attribute);
608  if (attribute != static_cast<R1>(field)) std::cout<<"Cast value mismatch, attr.="<<attribute<<", field="<<field<<std::endl;
609  r[targetName].setValue<R2>(attribute);
610  } else {
611  r[targetName].setNull();
612  }
613  } catch (coral::AttributeException & e) {
614  if (warning) std::cout<<itemName<<" gives exception"<<std::endl;
615  warning=true;
616  }
617 }
618 
619 template<class R2, class R1>
620 void
621 setRecord(cool::Record & r, const coral::AttributeList & a, const std::string & itemName){
622  setRecord<R2,R1>(r,a,itemName,itemName);
623 }
624 
625 
626 void
627 writeChip(const CCIovVectorMap_t & data, const Folder & destination,const std::string &tag){
628  //assumed monte carlo, translate IOVs
629  std::cout<<"data size "<<data.size()<<std::endl;
630  for (const auto &iov: data){
631  const IovKey_t & runLumi = time2RunLumi(iov.first);
632  const CoraCoolObject::AttrListVec & thisVectorPayload = iov.second;
633  //its going to be a Cool Vector Payload
634  cool::RecordSpecification rSpec = destination.payloadSpec();
635  cool::IRecordVector cvp;
636  for (auto const & attrList:thisVectorPayload){
637  cool::Record r(rSpec);
638  setRecord<Run2::Chip::chip_t, Run1::Chip::chip_t>(r,attrList, "chip");
639  setRecord<Run2::Chip::active_t, Run1::Chip::active_t>(r,attrList, "active");
640  setRecord<Run2::Chip::address_t, Run1::Chip::address_t>(r,attrList, "address");
641  setRecord<Run2::Chip::config_t, Run1::Chip::config_t>(r,attrList, "config");
642  setRecord<Run2::Chip::mask_t, Run1::Chip::mask_t>(r,attrList, "mask0");
643  setRecord<Run2::Chip::mask_t, Run1::Chip::mask_t>(r,attrList, "mask1");
644  setRecord<Run2::Chip::mask_t, Run1::Chip::mask_t>(r,attrList, "mask2");
645  setRecord<Run2::Chip::mask_t, Run1::Chip::mask_t>(r,attrList, "mask3");
646  setRecord<Run2::Chip::settings_t, Run1::Chip::settings_t>(r,attrList, "vthr");
647  setRecord<Run2::Chip::settings_t, Run1::Chip::settings_t>(r,attrList, "vcal");
648  setRecord<Run2::Chip::settings_t, Run1::Chip::settings_t>(r,attrList, "delay");
649  setRecord<Run2::Chip::settings_t, Run1::Chip::settings_t>(r,attrList, "preamp");
650  setRecord<Run2::Chip::settings_t, Run1::Chip::settings_t>(r,attrList, "shaper");
651  setRecord<Run2::Chip::rc_t, Run1::Chip::rc_t>(r,attrList, "rc_function");
652  setRecord<Run2::Chip::rcArgs_t, Run1::Chip::rcArgs_t>(r, attrList,"rc_args");
653  setRecord<Run2::Chip::c_t, Run1::Chip::c_t>(r, attrList,"c_factor");
654  setRecord<Run2::Chip::target_t, Run1::Chip::target_t>(r,attrList,"target");
655  setRecord<Run2::Chip::trim_t, Run1::Chip::trim_t>(r,attrList,"trim");
656 
657  const auto pRec=std::make_shared<cool::Record>(r);
658  cvp.push_back(pRec);
659  }
660  //std::cout<<iov.first.first<<"-"<<iov.first.second<<" : "<<iov.first.channelId<<std::endl;
661  // std::cout<<">"<<runLumi.first<<"-"<<runLumi.second<<" : "<<runLumi.channelId<<std::endl;
662 
663  destination.ptr()->storeObject(runLumi.first,runLumi.second,cvp,(runLumi.channelId-1),tag );
664  }
665 }
666 void
667 writeGeog(const CCIovVectorMap_t & data, const Folder & destination,const std::string &tag){
668  //assumed monte carlo, translate IOVs
669  std::cout<<"data size "<<data.size()<<std::endl;
670  for (const auto &iov: data){
671  const IovKey_t & runLumi = time2RunLumi(iov.first);
672  const CoraCoolObject::AttrListVec & thisVectorPayload = iov.second;
673  //its going to be a Cool Vector Payload
674  cool::RecordSpecification rSpec = destination.payloadSpec();
675  cool::IRecordVector cvp;
676  for (auto const & attrList:thisVectorPayload){
677  cool::Record r(rSpec);
678  setRecord<Run2::Geog::MUR_t, Run1::Geog::MUR_t>(r,attrList,"MUR");
679  setRecord<Run2::Geog::super_t, Run1::Geog::super_t>(r,attrList,"super");
680  setRecord<Run2::Geog::medium_t, Run1::Geog::medium_t>(r,attrList,"medium");
681  setRecord<Run2::Geog::position_t, Run1::Geog::position_t>(r,attrList,"position");
682 
683  const auto pRec=std::make_shared<cool::Record>(r);
684  cvp.push_back(pRec);
685  }
686  std::cout<<iov.first.first<<"-"<<iov.first.second<<" : "<<iov.first.channelId<<std::endl;
687  std::cout<<">"<<runLumi.first<<"-"<<runLumi.second<<" : "<<runLumi.channelId<<std::endl;
688  destination.ptr()->storeObject(runLumi.first,runLumi.second,cvp,runLumi.channelId,tag );
689  }
690 }
691 void
692 writeMUR(const CCIovVectorMap_t & data, const Folder & destination,const std::string &tag){
693  //assumed monte carlo, translate IOVs
694  std::cout<<"data size "<<data.size()<<std::endl;
695  for (const auto &iov: data){
696  const IovKey_t & runLumi = time2RunLumi(iov.first);
697  const CoraCoolObject::AttrListVec & thisVectorPayload = iov.second;
698  //its going to be a Cool Vector Payload
699  cool::RecordSpecification rSpec = destination.payloadSpec();
700  cool::IRecordVector cvp;
701  for (auto const & attrList:thisVectorPayload){
702  cool::Record r(rSpec);
703  setRecord<Run2::MUR::MUR_t, Run1::MUR::MUR_t>(r,attrList,"MUR");
704  setRecord<Run2::MUR::module_t, Run1::MUR::module_t>(r,attrList,"module");
705  setRecord<Run2::MUR::moduleId_t, Run1::MUR::moduleId_t>(r,attrList,"moduleID");
706  setRecord<Run2::MUR::moduleId_t, Run1::MUR::moduleId_t>(r,attrList,"rmoduleID");
707  setRecord<Run2::MUR::xxFibre_t, Run1::MUR::xxFibre_t>(r,attrList,"rx0Fibre");
708  setRecord<Run2::MUR::xxFibre_t, Run1::MUR::xxFibre_t>(r,attrList,"rx1Fibre");
709  setRecord<Run2::MUR::xxFibre_t, Run1::MUR::xxFibre_t>(r,attrList,"txFibre");
710  const auto pRec=std::make_shared<cool::Record>(r);
711  cvp.push_back(pRec);
712  }
713  std::cout<<iov.first.first<<"-"<<iov.first.second<<" : "<<iov.first.channelId<<std::endl;
714  std::cout<<">"<<runLumi.first<<"-"<<runLumi.second<<" : "<<runLumi.channelId<<std::endl;
715 
716  destination.ptr()->storeObject(runLumi.first,runLumi.second,cvp,runLumi.channelId,tag );
717  }
718 }
719 void
720 writeModule(const CCIovVectorMap_t & data, const Folder & destination,const std::string &tag){
721  //assumed monte carlo, translate IOVs
722  std::cout<<"data size "<<data.size()<<std::endl;
723  for (const auto &iov: data){
724  const IovKey_t & runLumi = time2RunLumi(iov.first);
725  const CoraCoolObject::AttrListVec & thisVectorPayload = iov.second;
726  //its going to be a Cool Vector Payload
727  cool::RecordSpecification rSpec = destination.payloadSpec();
728  cool::IRecordVector cvp;
729  for (auto const & attrList:thisVectorPayload){
730  cool::Record r(rSpec);
731  setRecord<Run2::Module::id_t, Run1::Module::id_t>(r,attrList,"id");
732  setRecord<Run2::Module::group_t, Run1::Module::group_t>(r,attrList,"group","slaveGroup");
733  setRecord<Run2::Module::active_t, Run1::Module::active_t>(r,attrList,"active");
734  setRecord<Run2::Module::select_t, Run1::Module::select_t>(r,attrList,"select","clockSelect");
735  //the chipStatus is only in run 2
736  r["chipStatus"].setValue<Run2::Module::chipStatus_t>(static_cast<Run2::Module::chipStatus_t>(0x0FFF));
737  const auto pRec=std::make_shared<cool::Record>(r);
738  cvp.push_back(pRec);
739  }
740  //std::cout<<iov.first.first<<"-"<<iov.first.second<<" : "<<iov.first.channelId<<std::endl;
741  // std::cout<<">"<<runLumi.first<<"-"<<runLumi.second<<" : "<<runLumi.channelId<<std::endl;
742 
743  destination.ptr()->storeObject(runLumi.first,runLumi.second,cvp,(runLumi.channelId-1),tag );
744  }
745 }
746 
747 void
748 writeChannel(const CCIovVectorMap_t & data, const Folder & destination, const std::string &tag){
749  //assumed monte carlo, translate IOVs
750  std::cout<<"data size "<<data.size()<<std::endl;
751  for (const auto &iov: data){
752  const IovKey_t & runLumi = time2RunLumi(iov.first);
753  const CoraCoolObject::AttrListVec & thisVectorPayload = iov.second;
754  //its going to be a Cool Vector Payload
755  cool::RecordSpecification rSpec = destination.payloadSpec();
756  cool::IRecordVector cvp;
757  for (auto const & attrList:thisVectorPayload){
758  cool::Record r(rSpec);
759  setRecord<Run2::Channel::crate_t, Run1::Channel::crate_t>(r,attrList,"crate");
760  setRecord<Run2::Channel::rod_t, Run1::Channel::rod_t>(r,attrList,"rod");
761  setRecord<Run2::Channel::channel_t, Run1::Channel::channel_t>(r,attrList,"channel");
762  setRecord<Run2::Channel::opCurrent_t, Run1::Channel::opCurrent_t>(r,attrList,"outputCurrent");
763  setRecord<Run2::Channel::opDelay_t, Run1::Channel::opDelay_t>(r,attrList,"outputDelay");
764  setRecord<Run2::Channel::opMarkSpace_t, Run1::Channel::opMarkSpace_t>(r,attrList,"outputMarkSpace");
765  setRecord<Run2::Channel::threshold_t, Run1::Channel::threshold_t>(r,attrList,"stream0Threshold");
766  setRecord<Run2::Channel::delay_t, Run1::Channel::delay_t>(r,attrList,"stream0Delay");
767  setRecord<Run2::Channel::errMask_t, Run1::Channel::errMask_t>(r,attrList,"stream0ErrMask");
768  setRecord<Run2::Channel::threshold_t, Run1::Channel::threshold_t>(r,attrList,"stream1Threshold");
769  setRecord<Run2::Channel::delay_t, Run1::Channel::delay_t>(r,attrList,"stream1Delay");
770  setRecord<Run2::Channel::errMask_t, Run1::Channel::errMask_t>(r,attrList,"stream1ErrMask");
771  const auto pRec=std::make_shared<cool::Record>(r);
772  cvp.push_back(pRec);
773  }
774  //std::cout<<iov.first.first<<"-"<<iov.first.second<<" : "<<iov.first.channelId<<std::endl;
775  // std::cout<<">"<<runLumi.first<<"-"<<runLumi.second<<" : "<<runLumi.channelId<<std::endl;
776 
777  destination.ptr()->storeObject(runLumi.first,runLumi.second,cvp,runLumi.channelId,tag );
778  }
779 }
780 void
781 writeRod(const CCIovVectorMap_t & data, const Folder & destination,const std::string &tag){
782  //assumed monte carlo, translate IOVs
783  std::cout<<"data size "<<data.size()<<std::endl;
784  for (const auto &iov: data){
785  const IovKey_t & runLumi = time2RunLumi(iov.first);
786  const CoraCoolObject::AttrListVec & thisVectorPayload = iov.second;
787  //its going to be a Cool Vector Payload
788  cool::RecordSpecification rSpec = destination.payloadSpec();
789  cool::IRecordVector cvp;
790  for (auto const & attrList:thisVectorPayload){
791  cool::Record r(rSpec);
792  setRecord<Run2::ROD::crate_t, Run1::ROD::crate_t>(r,attrList,"crate");
793  setRecord<Run2::ROD::slot_t, Run1::ROD::slot_t>(r,attrList,"slot");
794  setRecord<Run2::ROD::ROB_t, Run1::ROD::ROB_t>(r,attrList,"ROB");
795  setRecord<Run2::ROD::SRC_t, Run1::ROD::SRC_t>(r,attrList,"SRCid");
796  setRecord<Run2::ROD::bcid_t, Run1::ROD::bcid_t>(r,attrList,"BCIDOffset");
797  setRecord<Run2::ROD::slave_t, Run1::ROD::slave_t>(r,attrList,"slave0");
798  setRecord<Run2::ROD::slave_t, Run1::ROD::slave_t>(r,attrList,"slave1");
799  setRecord<Run2::ROD::slave_t, Run1::ROD::slave_t>(r,attrList,"slave2");
800  setRecord<Run2::ROD::slave_t, Run1::ROD::slave_t>(r,attrList,"slave3");
801  const auto pRec=std::make_shared<cool::Record>(r);
802  cvp.push_back(pRec);
803  }
804  std::cout<<iov.first.first<<"-"<<iov.first.second<<" : "<<iov.first.channelId<<std::endl;
805  std::cout<<">"<<runLumi.first<<"-"<<runLumi.second<<" : "<<runLumi.channelId<<std::endl;
806 
807  destination.ptr()->storeObject(runLumi.first,runLumi.second,cvp,runLumi.channelId,tag );
808  }
809 }
810 
811 void
812 writeRodmur(const CCIovVectorMap_t & data, const Folder & destination,const std::string &tag){
813  //assumed monte carlo, translate IOVs
814  std::cout<<"data size "<<data.size()<<std::endl;
815  for (const auto &iov: data){
816  const IovKey_t & runLumi = time2RunLumi(iov.first);
817  const CoraCoolObject::AttrListVec & thisVectorPayload = iov.second;
818  //its going to be a Cool Vector Payload
819  cool::RecordSpecification rSpec = destination.payloadSpec();
820  cool::IRecordVector cvp;
821  for (auto const & attrList:thisVectorPayload){
822  cool::Record r(rSpec);
823  setRecord<Run2::RODMUR::crate_t, Run1::RODMUR::crate_t>(r,attrList,"crate");
824  setRecord<Run2::RODMUR::rod_t, Run1::RODMUR::rod_t>(r,attrList,"rod");
825  setRecord<Run2::RODMUR::position_t, Run1::RODMUR::position_t>(r,attrList,"position");
826  setRecord<Run2::RODMUR::MUR_t, Run1::RODMUR::MUR_t>(r,attrList,"MUR");
827  const auto pRec=std::make_shared<cool::Record>(r);
828  cvp.push_back(pRec);
829  }
830  std::cout<<iov.first.first<<"-"<<iov.first.second<<" : "<<iov.first.channelId<<std::endl;
831  std::cout<<">"<<runLumi.first<<"-"<<runLumi.second<<" : "<<runLumi.channelId<<std::endl;
832 
833  destination.ptr()->storeObject(runLumi.first,runLumi.second,cvp,runLumi.channelId,tag );
834  }
835 }
836 //print specification for a cool record as TWiki table markup
837 void
838 printRecordSpec(const cool::RecordSpecification & spec){
839  const std::string s("|");//TWiki table separator
840  std::cout<<"|*Payload Name*|*COOL Type*|"<<std::endl;
841  for (unsigned int i(0);i!=spec.size();++i){
842  const cool::IFieldSpecification& f=spec[i];
843  std::cout<<s<<f.name()<<s<<f.storageType().name()<<s<<std::endl;
844  }
845 }
846 
847 
848 const coral::AttributeList &
849 getAttributes(const coral::AttributeList & vectorEntry){
850  return vectorEntry;
851 }
852 const coral::AttributeList &
853 getAttributes(const cool::IRecordPtr & vectorEntry){
854  return vectorEntry->attributeList();
855 }
856 
857 
858 template <class T>
859 void
860 showResult(const T & theResult, const unsigned int maxShown=5){
861  for (const auto & i:theResult){
862  const IovKey_t &iov=i.first;
863  typename T::mapped_type dataVector=i.second;
864  std::cout<<"IOV: "<<iov.first<<","<<iov.second<<std::endl;
865  std::cout<<"Data: "<<std::endl;
866  const unsigned int numEntries=dataVector.size();
867  const unsigned int numberToShow=std::min(numEntries,maxShown);
868  for(unsigned int j(0);j!=numberToShow;++j){
869  const coral::AttributeList & thisEntry=getAttributes(dataVector[j]);
870  thisEntry.toOutputStream(std::cout);
871  std::cout<<std::endl;
872  }
873  }
874 }
875 
876 
903 std::string
904 defaultFolderPath(const bool itsCoraCool){
905  const std::string result = itsCoraCool?("/SCT/DAQ/Configuration/"):("/SCT/DAQ/Config/");
906  return result;
907 }
908 
909 bool
910  replaceTimestamp(std::string & metadata){
911  std::string::size_type p1,p2;
912  p1=metadata.find("<timeStamp>")+11;
913  p2=metadata.find("</timeStamp>");
914  const bool valid= ((p1<p2) and (p2!=std::string::npos));
915  if (valid) metadata.replace(p1,p2-11,"time");
916  return valid;
917 }
918 
919 cool::IFolderPtr
920 createLocalCopyStructure(const Folder & sourceFolder, const DbConnection & writeDb, const bool forceTimestamp=false){
921  std::string description=sourceFolder.description();
922 
923  bool replacementMade(false);
924  if (forceTimestamp){
925  replacementMade=replaceTimestamp(description);
926  }
927  if (replacementMade) std::cout<<"timestamp replacement made\n"<<description<<std::endl;
928 
929  const std::string destFolder=sourceFolder.folderSpec().name;
930  cool::IFolderPtr pSourceFolder=sourceFolder.ptr();
931  const cool::FolderVersioning::Mode dvermode=cool::FolderVersioning::MULTI_VERSION;
932  const cool::PayloadMode::Mode payMode=pSourceFolder->folderSpecification().payloadMode();
933  const cool::FolderSpecification coolFolderSpec(dvermode,pSourceFolder->payloadSpecification(),payMode);
934  cool::IFolderPtr destfl=writeDb.dbPtr()->createFolder(destFolder,coolFolderSpec,description,true);
935  std::cout<<"Folder "<<destFolder<<" created."<<std::endl;
936  //copy channels
937  const std::map<cool::ChannelId,std::string> & chanmap=pSourceFolder->listChannelsWithNames();
938  for (const auto & chan:chanmap){
939  std::cout<<".";
940  const std::string & sourcedesc=pSourceFolder->channelDescription(chan.first);
941  const std::string& sourcename=chan.second;
942  destfl->createChannel(chan.first,sourcename,sourcedesc);
943  }
944  std::cout<<std::endl;
945  return destfl;
946 }
947 
948 std::vector<std::string> &
949 split(const std::string &s, char delim, std::vector<std::string> &elems) {
950  std::stringstream ss(s);
951  std::string item;
952  while (std::getline(ss, item, delim)) {
953  elems.push_back(item);
954  }
955  return elems;
956 }
957 std::vector<std::string>
958 split(const std::string &s, char delim) {
959  std::vector<std::string> elems;
960  split(s, delim, elems);
961  return elems;
962 }
963 
964 int main(int argc, const char * argv[]) {
965  int retcode=0;
966  //http://coolcherrypy.cern.ch:8080/cooldb/ATLAS_COOLPROD/ATLAS_COOLOFL_SCT/OFLP200/SCT/DAQ/Configuration/Chip/tags
967  //http://coolcherrypy.cern.ch:8080/cooldb/ATLAS_COOLPROD/ATLAS_COOLOFL_SCT/OFLP200/SCT/DAQ/Config/Chip/tags
994  std::array<std::string,2> chipTagNames={"SctDaqConfigChip-Run2-10July2015","SctDaqConfigurationChip-MC-06"};
995  //xmllint --format 'http://coolcherrypy.cern.ch:8080/cooldb/ATLAS_COOLPROD/ATLAS_COOLOFL_SCT/OFLP200/SCT/DAQ/Configuration/Geog/tags'
1019  std::array<std::string,2> geogTagNames={"SctDaqConfigGeog-Run2-10July2015","SctDaqConfigurationGeog-MC-06"};
1020  //xmllint --format 'http://coolcherrypy.cern.ch:8080/cooldb/ATLAS_COOLPROD/ATLAS_COOLOFL_SCT/OFLP200/SCT/DAQ/Configuration/MUR/tags'
1044  std::array<std::string,2> murTagNames={"SctDaqConfigMur-Run2-10July2015","SctDaqConfigurationMur-MC-06"};
1045  //xmllint --format 'http://coolcherrypy.cern.ch:8080/cooldb/ATLAS_COOLPROD/ATLAS_COOLOFL_SCT/OFLP200/SCT/DAQ/Configuration/Module/tags'
1070  std::array<std::string,2> moduleTagNames={"SctDaqConfigModule-Run2-10July2015","SctDaqConfigurationModule-MC-06"};
1071  //xmllint --format 'http://coolcherrypy.cern.ch:8080/cooldb/ATLAS_COOLPROD/ATLAS_COOLOFL_SCT/OFLP200/SCT/DAQ/Configuration/PowerMUR/tags'
1072  //std::array<std::string,2> powerMurTagNames={"SctDaqConfigPowermMur-Run2-10July2015","SctDaqConfigurationPowerMur-MC-06"};
1082  std::array<std::string,2> channelTagNames={"SctDaqConfigChannel-Run2-10July2015","SctDaqConfigurationChannel-MC-06"};
1107  std::array<std::string,2> rodTagNames={"SctDaqConfigRod-Run2-10July2015","SctDaqConfigurationRod-MC-06"};
1132  std::array<std::string,2> rodmurTagNames={"SctDaqConfigRodmur-Run2-10July2015","SctDaqConfigurationRodmur-MC-06"};
1133 
1134  //
1135  std::array<std::string,6> folderNames={"Chip","Geog","MUR","Module","ROD","RODMUR"};
1136  std::string dbName("");
1137  const std::string defaultDbName="COOLOFL_SCT/OFLP200";
1138  std::string iovString=argv[1];
1139  if (argc!=2){
1140  std::cout<<"No arguments? "<<std::endl;
1141  std::cout<<argc<<std::endl;
1142  iovString="1333588404000000000-1333588404000000001";
1143  std::cout<<"running with default argument "<<iovString<<std::endl;
1144  }
1145 
1146  std::vector<std::string> splitString=split(iovString,'-');
1147  if (splitString.size()!=2) exit(-1);
1148  std::cout<<"From "<<splitString[0]<<" to "<<splitString[1]<<std::endl;
1149  const cool::ValidityKey since = std::stoll(splitString[0]);
1150  cool::ValidityKey until = std::stoll(splitString[1]);
1151  dbName=defaultDbName;
1152 
1153  //bool itsCoraCool =(dbName.find("COMP200") != std::string::npos);
1154  //DbConnection connection(dbName, itsCoraCool);
1155  //const std::string folderPath = defaultFolderPath(itsCoraCool);
1156  std::array<std::string,2> folderPaths={"/SCT/DAQ/Config/","/SCT/DAQ/Configuration/"};
1157  const unsigned int nFolders=folderNames.size();
1158  DbConnection writeDb("LOCAL");
1159  if (!writeDb.isOpen()) {
1160  std::cout<<"problem"<<std::endl;
1161  return -1;
1162  }
1163  unsigned int index(0);
1164  for (const auto & folderPath:folderPaths){
1165  bool itsCoraCool =(folderPath.find("Configuration") != std::string::npos);
1166  const std::string chipTagName=chipTagNames[index];
1167  const std::string geogTagName=geogTagNames[index];
1168  const std::string murTagName=murTagNames[index];
1169  const std::string moduleTagName=moduleTagNames[index];
1170  const std::string channelTagName=channelTagNames[index];
1171  const std::string rodTagName=rodTagNames[index];
1172  const std::string rodmurTagName=rodmurTagNames[index++];
1173 
1174  DbConnection connection(dbName, itsCoraCool);
1175  const unsigned int nData(1000000);
1176  for (unsigned int i(0);i!=nFolders;++i){
1177  std::string tagName;
1178  if (folderNames[i]=="Chip") tagName=chipTagName;
1179  if (folderNames[i]=="Geog") tagName=geogTagName;
1180  if (folderNames[i]=="MUR") tagName=murTagName;
1181  if (folderNames[i]=="Module") tagName=moduleTagName;
1182  if (folderNames[i]=="Channel") tagName=channelTagName;
1183  if (folderNames[i]=="ROD") tagName=rodTagName;
1184  if (folderNames[i]=="RODMUR") tagName=rodmurTagName;
1185 
1186  std::string folderName=folderPath+folderNames[i];
1187  const FolderSpec theFolder(folderName,tagName);
1188  Folder folder(connection, theFolder);
1189  //std::cout<<folder.description()<<std::endl;
1190  std::cout<<"---++++"<<folderName<<std::endl;
1191  printRecordSpec(folder.payloadSpec());
1205 
1206  if (!itsCoraCool){
1207  createLocalCopyStructure(folder, writeDb);
1208  //showResult(result);
1209  } else {
1210  std::string run1Tag = folder.folderSpec().tag;
1211  const std::string destTag = convertTagToRun2(run1Tag);
1212  std::cout<<"Destination tag "<<destTag<<std::endl;
1213 
1214  if (folderNames[i]=="Chip"){
1215  const CCIovVectorMap_t &result = readCC(folder,selection,nData);
1216  const FolderSpec destFolder("/SCT/DAQ/Config/Chip",tagName);
1217  Folder target(writeDb,destFolder);
1218  writeChip(result,target,destTag);
1219  }
1220  if (folderNames[i]=="Geog"){
1221  const CCIovVectorMap_t &result = readCC(folder,selection,nData);
1222  const FolderSpec destFolder("/SCT/DAQ/Config/Geog",tagName);
1223  Folder target(writeDb,destFolder);
1224  writeGeog(result,target,destTag);
1225  }
1226  if (folderNames[i]=="MUR"){
1227  const CCIovVectorMap_t &result = readCC(folder,selection,nData);
1228  const FolderSpec destFolder("/SCT/DAQ/Config/MUR",tagName);
1229  Folder target(writeDb,destFolder);
1230  writeMUR(result,target,destTag);
1231  }
1232  if (folderNames[i]=="Module"){
1233  const CCIovVectorMap_t &result = readCC(folder,selection,nData);
1234  const FolderSpec destFolder("/SCT/DAQ/Config/Module",tagName);
1235  Folder target(writeDb,destFolder);
1236  writeModule(result,target,destTag);
1237  }
1238  if (folderNames[i]=="Channel"){
1239  const CCIovVectorMap_t &result = readCC(folder,selection,nData);
1240  const FolderSpec destFolder("/SCT/DAQ/Config/Channel",tagName);
1241  Folder target(writeDb,destFolder);
1242  writeChannel(result,target,destTag);
1243  }
1244  if (folderNames[i]=="ROD"){
1245  const CCIovVectorMap_t &result = readCC(folder,selection,nData);
1246  const FolderSpec destFolder("/SCT/DAQ/Config/ROD",tagName);
1247  Folder target(writeDb,destFolder);
1248  writeRod(result,target,destTag);
1249  }
1250  if (folderNames[i]=="RODMUR"){
1251  const CCIovVectorMap_t &result = readCC(folder,selection,nData);
1252  const FolderSpec destFolder("/SCT/DAQ/Config/RODMUR",tagName);
1253  Folder target(writeDb,destFolder);
1254  writeRodmur(result,target,destTag);
1255  }
1256  //const IovVectorMap_t &result = read(folder,selection,5);
1257  //showResult(result);
1258  }
1259  }
1260  }
1261 
1262 
1263 
1264  return retcode;
1265 }
Folder::Folder
Folder(const DbConnection &theConnection, const FolderSpec &theFolder)
Folder::folderSpec
FolderSpec folderSpec() const
Run1
USAGE: openCoraCool.exe "COOLONL_SCT/COMP200".
Definition: openCoraCool.cxx:57
read
IovVectorMap_t read(const Folder &theFolder, const SelectionCriterion &choice, const unsigned int limit=10)
Definition: openCoraCool.cxx:569
beamspotman.r
def r
Definition: beamspotman.py:676
Run2::Module::active_t
cool::Bool active_t
Definition: openCoraCool.cxx:168
Run2::MUR::module_t
cool::UChar module_t
Definition: openCoraCool.cxx:161
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
Folder::m_connection
const DbConnection & m_connection
Definition: MakeReferenceFile.cxx:134
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
Run2::ROD::ROB_t
cool::Int32 ROB_t
Definition: openCoraCool.cxx:192
Folder::tag
std::string tag() const
main
int main(int argc, const char *argv[])
Definition: openCoraCool.cxx:964
Run1::Channel::rod_t
cool::Int32 rod_t
Definition: openCoraCool.cxx:99
Run1::ROD::slot_t
cool::Int16 slot_t
Definition: openCoraCool.cxx:110
Run1::Chip::address_t
cool::Int16 address_t
Definition: openCoraCool.cxx:61
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
Run1::Module::group_t
cool::Int16 group_t
Definition: openCoraCool.cxx:87
splitString
std::vector< std::string > splitString(const std::string &in, const std::string &delim)
Definition: LArQuickHistMerge.cxx:426
get_generator_info.result
result
Definition: get_generator_info.py:21
dqt_zlumi_alleff_HIST.iov
iov
Definition: dqt_zlumi_alleff_HIST.py:119
writeRod
void writeRod(const CCIovVectorMap_t &data, const Folder &destination, const std::string &tag)
Definition: openCoraCool.cxx:781
Folder::description
std::string description() const
FolderSpec
Definition: MakeReferenceFile.cxx:109
Run1::Module::select_t
cool::Int16 select_t
Definition: openCoraCool.cxx:89
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
Run2::Module::id_t
cool::Int64 id_t
Definition: openCoraCool.cxx:166
Run1::ROD::bcid_t
cool::Int16 bcid_t
Definition: openCoraCool.cxx:113
convertTagToRun2
std::string convertTagToRun2(const std::string &run1Tag)
Definition: openCoraCool.cxx:411
CoraCoolDatabase
Definition: CoraCoolDatabase.h:24
LArBadChanBlobUtils::Channel
Identifier32::value_type Channel
Definition: LArBadChanBlobUtils.h:24
Run2::Slave::id_t
cool::Int32 id_t
Definition: openCoraCool.cxx:204
Run2::TIM::bcidOffset_t
cool::UInt16 bcidOffset_t
Definition: openCoraCool.cxx:211
readOneDatum
CoraCoolObject::AttrListVec readOneDatum(const CoraCoolObjectPtr &ccPtr)
Definition: openCoraCool.cxx:532
MyKey::first
cool::ValidityKey first
Definition: openCoraCool.cxx:34
CaloCondBlobAlgs_fillNoiseFromASCII.spec
spec
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:47
index
Definition: index.py:1
inInterval
bool inInterval(const cool::ValidityKey n, const cool::ValidityKey from, const cool::ValidityKey to)
Definition: openCoraCool.cxx:267
writeMUR
void writeMUR(const CCIovVectorMap_t &data, const Folder &destination, const std::string &tag)
Definition: openCoraCool.cxx:692
MyKey::channelId
cool::ChannelId channelId
Definition: openCoraCool.cxx:36
Run2::Chip::target_t
cool::Float target_t
Definition: openCoraCool.cxx:148
Run2::TIM::delay_t
cool::UInt16 delay_t
Definition: openCoraCool.cxx:214
MyKey
Definition: openCoraCool.cxx:33
DbConnection
Definition: MakeReferenceFile.cxx:42
DbConnection::m_dbSvc
const cool::IDatabaseSvc & m_dbSvc
Definition: MakeReferenceFile.cxx:52
MyKey::operator<
bool operator<(const MyKey &rhs) const
Definition: openCoraCool.cxx:40
Run1::ROD::ROB_t
cool::Int32 ROB_t
Definition: openCoraCool.cxx:111
transConn
std::string transConn(const std::string &inconn)
Definition: openCoraCool.cxx:323
Run2::Channel::crate_t
cool::UChar crate_t
Definition: openCoraCool.cxx:179
Run2
Definition: openCoraCool.cxx:137
isCoraCoolDescriptor
bool isCoraCoolDescriptor(const std::string &descriptor)
Definition: openCoraCool.cxx:351
Run2::Channel::opMarkSpace_t
cool::UChar opMarkSpace_t
Definition: openCoraCool.cxx:184
Folder::checkWhetherCoraCool
bool checkWhetherCoraCool() const
Definition: openCoraCool.cxx:491
showResult
void showResult(const T &theResult, const unsigned int maxShown=5)
Definition: openCoraCool.cxx:860
DbConnection::m_isOpen
bool m_isOpen
Definition: MakeReferenceFile.cxx:54
Run1::RODMUR::position_t
cool::Int32 position_t
Definition: openCoraCool.cxx:119
Run1::Geog::MUR_t
cool::Int32 MUR_t
Definition: openCoraCool.cxx:76
Run2::Chip::config_t
cool::UInt16 config_t
Definition: openCoraCool.cxx:142
IovKey_t
MyKey IovKey_t
Definition: openCoraCool.cxx:49
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
LArCellConditions.argv
argv
Definition: LArCellConditions.py:112
writeChip
void writeChip(const CCIovVectorMap_t &data, const Folder &destination, const std::string &tag)
Definition: openCoraCool.cxx:627
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
Run2::Module::select_t
cool::Bool select_t
Definition: openCoraCool.cxx:169
DbConnection::~DbConnection
~DbConnection()
Run1::TIM::trigEnable_t
cool::Int32 trigEnable_t
Definition: openCoraCool.cxx:131
DbConnection::DbConnection
DbConnection(const std::string &sourceDb)
Definition: MakeReferenceFile.cxx:58
CaloCondBlobAlgs_fillNoiseFromASCII.folderPath
string folderPath
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:51
Run2::Chip::chip_t
cool::UChar chip_t
Definition: openCoraCool.cxx:139
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
Folder::m_sourceflc
CoraCoolFolderPtr m_sourceflc
Definition: openCoraCool.cxx:445
Run1::TIM::delay_t
cool::Int16 delay_t
Definition: openCoraCool.cxx:133
Run1::Chip::c_t
cool::Float c_t
Definition: openCoraCool.cxx:67
CoraCoolObject.h
Run2::Chip::address_t
cool::UChar address_t
Definition: openCoraCool.cxx:141
FolderSpec::tag
const std::string tag
Definition: MakeReferenceFile.cxx:111
setRecord
void setRecord(cool::Record &r, const coral::AttributeList &a, const std::string &itemName, const std::string &targetName)
IovKey_t runLumiFromTimeStamp(const IovKey_t & timeStamp){ return timeStamp; }.
Definition: openCoraCool.cxx:602
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
MyKey::MyKey
MyKey(const cool::ValidityKey &f, const cool::ValidityKey &s, const cool::ChannelId &c)
Definition: openCoraCool.cxx:39
Run2::ROD::SRC_t
cool::Int32 SRC_t
Definition: openCoraCool.cxx:193
Run2::Geog::position_t
cool::Int16 position_t
Definition: openCoraCool.cxx:156
FolderSpec::name
const std::string name
Definition: MakeReferenceFile.cxx:110
dq_defect_copy_defect_database.since
def since
Definition: dq_defect_copy_defect_database.py:54
Run2::Chip::rc_t
cool::UChar rc_t
Definition: openCoraCool.cxx:145
CCIovVectorMap_t
std::map< IovKey_t, CoraCoolObject::AttrListVec > CCIovVectorMap_t
Definition: openCoraCool.cxx:51
time2RunLumi
IovKey_t time2RunLumi(const IovKey_t &iov)
Definition: openCoraCool.cxx:303
python.checkMetadata.metadata
metadata
Definition: checkMetadata.py:175
Folder::foreignKeySpec
cool::RecordSpecification foreignKeySpec()
Run2::Channel::channel_t
cool::UChar channel_t
Definition: openCoraCool.cxx:181
Run1::ROD::crate_t
cool::Int32 crate_t
Definition: openCoraCool.cxx:109
Run2::PowerMUR::module_t
cool::UChar module_t
Definition: openCoraCool.cxx:174
dq_defect_copy_defect_database.until
def until
Definition: dq_defect_copy_defect_database.py:55
printRecordSpec
void printRecordSpec(const cool::RecordSpecification &spec)
Definition: openCoraCool.cxx:838
Run1::Channel::threshold_t
cool::Int16 threshold_t
Definition: openCoraCool.cxx:104
Run1::Chip::mask_t
cool::Int32 mask_t
Definition: openCoraCool.cxx:63
PyPoolBrowser.item
item
Definition: PyPoolBrowser.py:129
Run1::Slave::id_t
cool::Int32 id_t
Definition: openCoraCool.cxx:123
calibdata.valid
list valid
Definition: calibdata.py:45
Run1::MUR::moduleId_t
cool::Int64 moduleId_t
Definition: openCoraCool.cxx:82
CoraCoolObject::const_iterator
AttrListVec::const_iterator const_iterator
Definition: CoraCoolObject.h:23
Run1::TIM::runMode_t
cool::Int16 runMode_t
Definition: openCoraCool.cxx:132
Run2::RODMUR::rod_t
cool::UChar rod_t
Definition: openCoraCool.cxx:199
getAttributes
const coral::AttributeList & getAttributes(const coral::AttributeList &vectorEntry)
Definition: openCoraCool.cxx:849
Folder::m_isCoraCool
bool m_isCoraCool
Definition: openCoraCool.cxx:446
Run1::ROD::slave_t
cool::Int32 slave_t
Definition: openCoraCool.cxx:114
defaultFolderPath
std::string defaultFolderPath(const bool itsCoraCool)
cool::StorageType::TypeId coral2CoolType(const std::string & coralTypeName){ std::vector<std::string>...
Definition: openCoraCool.cxx:904
createLocalCopyStructure
cool::IFolderPtr createLocalCopyStructure(const Folder &sourceFolder, const DbConnection &writeDb, const bool forceTimestamp=false)
Definition: openCoraCool.cxx:920
Run1::PowerMUR::module_t
cool::Int16 module_t
Definition: openCoraCool.cxx:93
Run2::Module::chipStatus_t
cool::UInt16 chipStatus_t
Definition: openCoraCool.cxx:170
Folder::isValid
bool isValid() const
lumiFormat.i
int i
Definition: lumiFormat.py:92
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
Run1::Chip::rcArgs_t
cool::String255 rcArgs_t
Definition: openCoraCool.cxx:66
DbConnection::m_sourceDbPtr
cool::IDatabasePtr m_sourceDbPtr
Definition: MakeReferenceFile.cxx:53
beamspotman.n
n
Definition: beamspotman.py:731
Run2::PowerMUR::channel_t
cool::UChar channel_t
Definition: openCoraCool.cxx:176
Run2::TIM::trigEnable_t
cool::UInt32 trigEnable_t
Definition: openCoraCool.cxx:212
Run2::Chip::settings_t
cool::UChar settings_t
Definition: openCoraCool.cxx:144
PixelModuleFeMask_create_db.dbName
string dbName
Definition: PixelModuleFeMask_create_db.py:21
Run1::MUR::module_t
cool::Int32 module_t
Definition: openCoraCool.cxx:81
MyKey::second
cool::ValidityKey second
Definition: openCoraCool.cxx:35
DbConnection::isOpen
bool isOpen() const
calibdata.exception
exception
Definition: calibdata.py:496
Run2::Module::group_t
cool::Int16 group_t
Definition: openCoraCool.cxx:167
MyKey::MyKey
MyKey()
Definition: openCoraCool.cxx:38
Run1::RODMUR::MUR_t
cool::Int32 MUR_t
Definition: openCoraCool.cxx:120
Run1::Geog::super_t
cool::Int32 super_t
Definition: openCoraCool.cxx:73
Run1::Channel::crate_t
cool::Int32 crate_t
Definition: openCoraCool.cxx:98
readCC
CCIovVectorMap_t readCC(const Folder &theFolder, const SelectionCriterion &choice, const unsigned int limit=10)
Definition: openCoraCool.cxx:547
Run2::TIM::runMode_t
cool::UChar runMode_t
Definition: openCoraCool.cxx:213
Run2::TIM::crate_t
cool::UChar crate_t
Definition: openCoraCool.cxx:208
Folder::payloadSpec
cool::RecordSpecification payloadSpec() const
specification of the payload entries
split
std::vector< std::string > & split(const std::string &s, char delim, std::vector< std::string > &elems)
Definition: openCoraCool.cxx:949
DQHistogramMergeRegExp.argc
argc
Definition: DQHistogramMergeRegExp.py:20
Run2::RODMUR::MUR_t
cool::UInt32 MUR_t
Definition: openCoraCool.cxx:201
Run2::Slave::file_t
cool::String255 file_t
Definition: openCoraCool.cxx:205
Run1::RODMUR::rod_t
cool::Int32 rod_t
Definition: openCoraCool.cxx:118
Run2::RODMUR::position_t
cool::UChar position_t
Definition: openCoraCool.cxx:200
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:122
Run2::Chip::rcArgs_t
cool::String255 rcArgs_t
Definition: openCoraCool.cxx:146
selection
std::string selection
Definition: fbtTestBasics.cxx:73
Run1::TIM::trigType_t
cool::Int32 trigType_t
Definition: openCoraCool.cxx:129
calibdata.exit
exit
Definition: calibdata.py:236
IovPeriod_t
std::pair< cool::ValidityKey, cool::ValidityKey > IovPeriod_t
https://twiki.cern.ch/twiki/bin/viewauth/AtlasComputing/ConditionsRun1RunNumbers 152777:1270866809,...
Definition: openCoraCool.cxx:258
Run2::ROD::bcid_t
cool::Int16 bcid_t
Definition: openCoraCool.cxx:194
Folder
Definition: MakeReferenceFile.cxx:118
CoraCoolFolderPtr
boost::shared_ptr< CoraCoolFolder > CoraCoolFolderPtr
Definition: CoraCoolTypes.h:15
Folder::m_folderSpec
const FolderSpec m_folderSpec
Definition: MakeReferenceFile.cxx:135
Run2::Chip::active_t
cool::Bool active_t
Definition: openCoraCool.cxx:140
Run2::MUR::moduleId_t
cool::Int64 moduleId_t
Definition: openCoraCool.cxx:162
Run1::Chip::trim_t
cool::String255 trim_t
Definition: openCoraCool.cxx:69
min
#define min(a, b)
Definition: cfImp.cxx:40
SelectionCriterion::channels
const cool::ChannelSelection channels
Definition: openCoraCool.cxx:525
Run1::Module::id_t
cool::Int64 id_t
Definition: openCoraCool.cxx:86
SelectionCriterion::since
const cool::ValidityKey since
Definition: openCoraCool.cxx:526
CoraCoolDatabasePtr
boost::shared_ptr< CoraCoolDatabase > CoraCoolDatabasePtr
Definition: CoraCoolTypes.h:12
CoraCoolFolder.h
convertSince
cool::ValidityKey convertSince(const cool::ValidityKey &since)
Definition: openCoraCool.cxx:287
Run1::Chip::settings_t
cool::Int16 settings_t
Definition: openCoraCool.cxx:64
Run2::Channel::threshold_t
cool::UChar threshold_t
Definition: openCoraCool.cxx:185
Run1::Chip::active_t
cool::Int16 active_t
Definition: openCoraCool.cxx:60
Run1::Channel::errMask_t
cool::Int32 errMask_t
Definition: openCoraCool.cxx:106
argumentsOK
bool argumentsOK(const int numArgs, const char **)
Definition: openCoraCool.cxx:313
Run1::RODMUR::crate_t
cool::Int32 crate_t
Definition: openCoraCool.cxx:117
replaceTimestamp
bool replaceTimestamp(std::string &metadata)
Definition: openCoraCool.cxx:910
Run1::Module::active_t
cool::Int16 active_t
Definition: openCoraCool.cxx:88
Run2::PowerMUR::crate_t
cool::UChar crate_t
Definition: openCoraCool.cxx:175
Run1::Chip::rc_t
cool::Int16 rc_t
Definition: openCoraCool.cxx:65
Folder::ccPtr
const CoraCoolFolderPtr & ccPtr() const
Definition: openCoraCool.cxx:515
CaloCellTimeCorrFiller.folderName
string folderName
Definition: CaloCellTimeCorrFiller.py:20
Run2::Channel::opDelay_t
cool::UInt16 opDelay_t
Definition: openCoraCool.cxx:183
Run2::TIM::trigType_t
cool::UInt32 trigType_t
Definition: openCoraCool.cxx:210
IovVectorMap_t
std::map< IovKey_t, cool::IRecordVector > IovVectorMap_t
Definition: openCoraCool.cxx:566
Run2::Channel::errMask_t
cool::UInt32 errMask_t
Definition: openCoraCool.cxx:187
Run1::Channel::delay_t
cool::Int16 delay_t
Definition: openCoraCool.cxx:105
CoraCoolObject::AttrListVec
std::vector< coral::AttributeList > AttrListVec
Definition: CoraCoolObject.h:22
SelectionCriterion::SelectionCriterion
SelectionCriterion(const cool::ChannelSelection &c, const cool::ValidityKey &s, const cool::ValidityKey &u)
Definition: openCoraCool.cxx:521
EventContainers::Mode
Mode
Definition: IdentifiableContainerBase.h:13
Folder::m_folderPtr
cool::IFolderPtr m_folderPtr
Definition: MakeReferenceFile.cxx:136
writeModule
void writeModule(const CCIovVectorMap_t &data, const Folder &destination, const std::string &tag)
Definition: openCoraCool.cxx:720
Run1::Channel::opCurrent_t
cool::Int16 opCurrent_t
Definition: openCoraCool.cxx:101
Folder::ptr
const cool::IFolderPtr & ptr() const
Definition: MakeReferenceFile.cxx:159
item
Definition: ItemListSvc.h:43
FolderSpec::FolderSpec
FolderSpec(const std::string &thename, const std::string &thetag)
Definition: openCoraCool.cxx:423
Run1::Chip::config_t
cool::Int16 config_t
Definition: openCoraCool.cxx:62
CxxUtils::to
CONT to(RANGE &&r)
Definition: ranges.h:32
Run2::Channel::delay_t
cool::UChar delay_t
Definition: openCoraCool.cxx:186
Run1::ROD::SRC_t
cool::Int32 SRC_t
Definition: openCoraCool.cxx:112
Cut::all
@ all
Definition: SUSYToolsAlg.cxx:64
Run1::Geog::medium_t
cool::Int32 medium_t
Definition: openCoraCool.cxx:74
Folder::isSingleVersion
bool isSingleVersion() const
Run2::PowerMUR::MUR_t
cool::UInt32 MUR_t
Definition: openCoraCool.cxx:173
writeRodmur
void writeRodmur(const CCIovVectorMap_t &data, const Folder &destination, const std::string &tag)
Definition: openCoraCool.cxx:812
Run1::Channel::opMarkSpace_t
cool::Int16 opMarkSpace_t
Definition: openCoraCool.cxx:103
DeMoScan.index
string index
Definition: DeMoScan.py:362
Run1::Geog::position_t
cool::Int32 position_t
Definition: openCoraCool.cxx:75
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
CoraCoolObjectIterPtr
boost::shared_ptr< CoraCoolObjectIter > CoraCoolObjectIterPtr
Definition: CoraCoolTypes.h:21
Run2::Chip::mask_t
cool::UInt32 mask_t
Definition: openCoraCool.cxx:143
Run2::MUR::xxFibre_t
cool::UChar xxFibre_t
Definition: openCoraCool.cxx:163
DbConnection::m_coralsvc
coral::ConnectionService m_coralsvc
Definition: MakeReferenceFile.cxx:50
Run1::PowerMUR::channel_t
cool::Int16 channel_t
Definition: openCoraCool.cxx:95
Run1::TIM::freq_t
cool::Float freq_t
Definition: openCoraCool.cxx:128
Run1::TIM::crate_t
cool::Int32 crate_t
Definition: openCoraCool.cxx:127
Run1::Chip::chip_t
cool::Int16 chip_t
Definition: openCoraCool.cxx:59
CoraCoolObjectPtr
boost::shared_ptr< CoraCoolObject > CoraCoolObjectPtr
Definition: CoraCoolTypes.h:18
Run2::RODMUR::crate_t
cool::UChar crate_t
Definition: openCoraCool.cxx:198
Run2::ROD::slot_t
cool::UChar slot_t
Definition: openCoraCool.cxx:191
DbConnection::m_coolapp
cool::Application m_coolapp
Definition: MakeReferenceFile.cxx:51
python.AtlRunQueryAMI.choice
int choice
Definition: AtlRunQueryAMI.py:210
CoraCoolDatabase.h
CaloCondBlobAlgs_fillNoiseFromASCII.folder
folder
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:56
DbConnection::m_sourceCoraPtr
CoraCoolDatabasePtr m_sourceCoraPtr
Definition: openCoraCool.cxx:345
convertUntil
cool::ValidityKey convertUntil(const cool::ValidityKey &until)
Definition: openCoraCool.cxx:271
CoraCoolObjectIter.h
Folder::ptr
const cool::IFolderPtr & ptr() const
Run1::Slave::file_t
cool::String255 file_t
Definition: openCoraCool.cxx:124
writeChannel
void writeChannel(const CCIovVectorMap_t &data, const Folder &destination, const std::string &tag)
Definition: openCoraCool.cxx:748
COOLRates.target
target
Definition: COOLRates.py:1106
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
DbConnection::dbPtr
cool::IDatabasePtr dbPtr() const
Run1::MUR::MUR_t
cool::Int32 MUR_t
Definition: openCoraCool.cxx:80
SelectionCriterion::until
const cool::ValidityKey until
Definition: openCoraCool.cxx:527
Run2::Channel::rod_t
cool::UChar rod_t
Definition: openCoraCool.cxx:180
Run2::Chip::c_t
cool::Float c_t
Definition: openCoraCool.cxx:147
Run2::Chip::trim_t
cool::String255 trim_t
Definition: openCoraCool.cxx:149
Run1::Channel::opDelay_t
cool::Int16 opDelay_t
Definition: openCoraCool.cxx:102
Run2::TIM::freq_t
cool::Float freq_t
Definition: openCoraCool.cxx:209
Run1::Channel::channel_t
cool::Int32 channel_t
Definition: openCoraCool.cxx:100
test_pyathena.counter
counter
Definition: test_pyathena.py:15
Run1::PowerMUR::crate_t
cool::Int16 crate_t
Definition: openCoraCool.cxx:94
python.PyAthena.obj
obj
Definition: PyAthena.py:135
writeGeog
void writeGeog(const CCIovVectorMap_t &data, const Folder &destination, const std::string &tag)
Definition: openCoraCool.cxx:667
Run2::Channel::opCurrent_t
cool::UChar opCurrent_t
Definition: openCoraCool.cxx:182
Run2::MUR::MUR_t
cool::UInt32 MUR_t
Definition: openCoraCool.cxx:160
python.compressB64.c
def c
Definition: compressB64.py:93
updateCoolNtuple.limit
int limit
Definition: updateCoolNtuple.py:45
DbConnection::coraCoolPtr
CoraCoolDatabasePtr coraCoolPtr() const
Definition: openCoraCool.cxx:400
Run2::Geog::MUR_t
cool::UInt32 MUR_t
Definition: openCoraCool.cxx:153
makeRunInterval
IovKey_t makeRunInterval(const cool::ValidityKey runstart, const cool::ValidityKey runend, const cool::ChannelId channelId)
Definition: openCoraCool.cxx:260
Run2::ROD::crate_t
cool::UChar crate_t
Definition: openCoraCool.cxx:190
Run2::ROD::slave_t
cool::Int32 slave_t
Definition: openCoraCool.cxx:195
SelectionCriterion
Definition: openCoraCool.cxx:520
Run1::PowerMUR::MUR_t
cool::Int32 MUR_t
Definition: openCoraCool.cxx:92
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
Run2::Geog::medium_t
cool::UChar medium_t
Definition: openCoraCool.cxx:155
Run1::MUR::xxFibre_t
cool::Int32 xxFibre_t
Definition: openCoraCool.cxx:83
description
std::string description
glabal timer - how long have I taken so far?
Definition: hcg.cxx:88
Run2::Geog::super_t
cool::Int16 super_t
Definition: openCoraCool.cxx:154
Run1::Chip::target_t
cool::Float target_t
Definition: openCoraCool.cxx:68
Run1::TIM::bcidOffset_t
cool::Int32 bcidOffset_t
Definition: openCoraCool.cxx:130