ATLAS Offline Software
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
IOVDbFolder Class Reference

#include <IOVDbFolder.h>

Inheritance diagram for IOVDbFolder:
Collaboration diagram for IOVDbFolder:

Public Member Functions

 IOVDbFolder (IOVDbConn *conn, const IOVDbParser &folderprop, MsgStream &msg, IClassIDSvc *clidsvc, IIOVDbMetaDataTool *metadatatool, const bool checklock, const bool outputToFile=false, const std::string &source="COOL_DATABASE", const bool crestToFile=false, const std::string &crestServer="", const std::string &crestTag="", const bool crestCoolToFile=false)
 
 ~IOVDbFolder ()
 
const std::string & folderName () const
 
const std::string & key () const
 
IOVDbConnconn ()
 
bool multiVersion () const
 
bool timeStamp () const
 
bool tagOverride () const
 
bool retrieved () const
 
bool noOverride () const
 
IOVDbNamespace::FolderType folderType () const
 
bool readMeta () const
 
bool writeMeta () const
 
bool fromMetaDataOnly () const
 
bool extensible () const
 
bool dropped () const
 
bool iovOverridden () const
 
const std::string & joTag () const
 
const std::string & resolvedTag () const
 
const std::string & eventStore () const
 
CLID clid () const
 
unsigned long long bytesRead () const
 
float readTime () const
 
const IOVRangecurrentRange () const
 
void useFileMetaData ()
 
void setFolderDescription (const std::string &description)
 
void setTagOverride (const std::string &tag, const bool setFlag)
 
void setWriteMeta ()
 
void setIOVOverride (const unsigned int run, const unsigned int lumiblock, const unsigned int time)
 
void setDropped (const bool dropped)
 
cool::ValidityKey iovTime (const IOVTime &reftime) const
 
bool cacheValid (const cool::ValidityKey reftime) const
 
bool loadCache (const cool::ValidityKey vkey, const unsigned int cacheDiv, const std::string &globalTag, const bool ignoreMissChan)
 
void resetCache ()
 
bool getAddress (const cool::ValidityKey reftime, IAddressCreator *persSvc, const unsigned int poolSvcContext, std::unique_ptr< IOpaqueAddress > &address, IOVRange &range, bool &poolPayloadRequested)
 
void summary ()
 
std::unique_ptr< SG::TransientAddresspreLoadFolder (ITagInfoMgr *tagInfoMgr, const unsigned int cacheRun, const unsigned int cacheTime)
 
void printCache ()
 
bool loadCacheIfDbChanged (const cool::ValidityKey vkey, const std::string &globalTag, const cool::IDatabasePtr &dbPtr, const ServiceHandle< IIOVSvc > &iovSvc)
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

Private Types

using IOVHash = std::pair< IOVDbNamespace::IovStore::Iov_t, std::string >
 
using IOV2Index = std::pair< cool::ValidityKey, size_t >
 
typedef std::pair< cool::ChannelId, cool::ChannelId > ChanRange
 

Private Member Functions

void clearCache ()
 
bool resolveTag (const cool::IFolderPtr &fptr, const std::string &globalTag)
 
bool magicTag (std::string &tag)
 
bool addMetaAttrList (const coral::AttributeList &atrlist, const IOVRange &range)
 
bool addMetaAttrListColl (const CondAttrListCollection *coll)
 
void setSharedSpec (const coral::AttributeList &atrlist)
 
void addIOVtoCache (cool::ValidityKey since, cool::ValidityKey until)
 
bool overrideOptionsFromParsedDescription (const IOVDbParser &parsedDescription)
 
std::unique_ptr< SG::TransientAddresscreateTransientAddress (const std::vector< std::string > &symlinks)
 
void setCacheLength (const bool timeIs_nsOfEpoch, const unsigned int cacheRun, const unsigned int cacheTime)
 
template<class T >
unsigned int cacheUpdateImplementation (T &obj, const ServiceHandle< IIOVSvc > &iovSvc)
 
bool objectIteratorIsValid (cool::IObjectIteratorPtr &objItr)
 
bool objectIteratorIsValid (CoraCoolObjectIterPtr &objItr)
 
void specialCacheUpdate (CoraCoolObject &obj, const ServiceHandle< IIOVSvc > &iovSvc)
 
void specialCacheUpdate (const cool::IObject &obj, const ServiceHandle< IIOVSvc > &iovSvc)
 
std::vector< IOVHashfetchCrestIOVs (cool::ValidityKey since, cool::ValidityKey until)
 
std::vector< IOVDbNamespace::BasicFolderfetchCrestObjects (cool::ValidityKey since, cool::ValidityKey until, bool vectorPayloadFlag, cool::ValidityKey vkey, const std::string &nodeDesc)
 
void dumpFile (const std::string &dumpName, const cool::ValidityKey &vkey, IOVDbNamespace::Cool2Json *json, bool skipCoolIoV, IOVDbNamespace::BasicFolder *basicFolder, const std::string &crestNodeDescr, const std::string &specString) const
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

ITagInfoMgrp_tagInfoMgr {nullptr}
 
IClassIDSvc * p_clidSvc {nullptr}
 
IIOVDbMetaDataToolp_metaDataTool {nullptr}
 
IOVDbConnm_conn {nullptr}
 
std::string m_foldername
 
std::string m_key
 
std::string m_folderDescription
 
bool m_multiversion {false}
 
bool m_timestamp {false}
 
bool m_tagoverride {false}
 
bool m_notagoverride {false}
 
bool m_writemeta {false}
 
bool m_useFileMetaData {false}
 
bool m_fromMetaDataOnly {false}
 
bool m_extensible {false}
 
bool m_named {false}
 
bool m_iovoverridden {false}
 
bool m_jokey {false}
 
bool m_dropped {false}
 
bool m_autocache {true}
 
bool m_checklock {true}
 
cool::ValidityKey m_iovoverride {0}
 
IOVDbNamespace::FolderType m_foldertype
 
cool::ValidityKey m_cachelength {0}
 
int m_cachehint {0}
 
int m_cacheinc {0}
 
cool::ChannelSelection m_chansel
 
std::vector< ChanRangem_chanrange
 
std::string m_jotag
 
std::string m_tag
 
std::string m_typename
 
std::string m_eventstore
 
std::string m_cachepar
 
std::string m_addrheader
 
CLID m_clid {0}
 
unsigned int m_ndbread {0}
 
unsigned int m_ncacheread {0}
 
unsigned int m_nobjread {0}
 
unsigned long long m_nbytesread {0}
 
float m_readtime {0}
 
unsigned int m_nchan {0}
 
std::vector< cool::ChannelId > m_channums
 
std::vector< std::string > m_channames
 
bool m_retrieved {false}
 
IOVRange m_currange
 
coral::AttributeListSpecification * m_cachespec {nullptr}
 
std::vector< cool::ChannelId > m_cachechan
 
std::vector< coral::AttributeList > m_cacheattr
 
std::vector< unsigned int > m_cacheccstart
 
std::vector< unsigned int > m_cacheccend
 
IOVDbNamespace::IovStore m_iovs
 
const bool m_outputToFile {false}
 
const bool m_crestToFile {false}
 
const bool m_crestCoolToFile {false}
 
const std::string m_source
 
const std::string m_crestServer
 
const std::string m_crestTag
 
std::string m_crest_tag = ""
 
nlohmann::json m_tag_info = nullptr
 
std::optional< IOVDbNamespace::CrestFunctionsm_cfunctions
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Detailed Description

Definition at line 52 of file IOVDbFolder.h.

Member Typedef Documentation

◆ ChanRange

typedef std::pair<cool::ChannelId,cool::ChannelId> IOVDbFolder::ChanRange
private

Definition at line 291 of file IOVDbFolder.h.

◆ IOV2Index

using IOVDbFolder::IOV2Index = std::pair<cool::ValidityKey,size_t>
private

Definition at line 237 of file IOVDbFolder.h.

◆ IOVHash

using IOVDbFolder::IOVHash = std::pair<IOVDbNamespace::IovStore::Iov_t,std::string>
private

Definition at line 236 of file IOVDbFolder.h.

Constructor & Destructor Documentation

◆ IOVDbFolder()

IOVDbFolder::IOVDbFolder ( IOVDbConn conn,
const IOVDbParser folderprop,
MsgStream &  msg,
IClassIDSvc *  clidsvc,
IIOVDbMetaDataTool metadatatool,
const bool  checklock,
const bool  outputToFile = false,
const std::string &  source = "COOL_DATABASE",
const bool  crestToFile = false,
const std::string &  crestServer = "",
const std::string &  crestTag = "",
const bool  crestCoolToFile = false 
)

Definition at line 71 of file IOVDbFolder.cxx.

77  :
78  AthMessaging("IOVDbFolder"),
79  p_clidSvc(clidsvc),
80  p_metaDataTool(metadatatool),
81  m_conn(conn),
82  m_checklock(checklock),
85  m_outputToFile{outputToFile},
86  m_crestToFile{crestToFile},
87  m_crestCoolToFile{crestCoolToFile},
90  m_crestTag{crestTag}
91 {
92  // set message same message level as our parent (IOVDbSvc)
93  setLevel(msg.level());
94  // extract settings from the properties
95  // foldername from the 'unnamed' property
96  m_foldername=folderprop.folderName();
97  // SG key from 'key' property, otherwise same as foldername
98  // m_jokey is true if the 'key' property was set - need to remember this
99  // to avoid using folder description <key> if present later
100  m_key=folderprop.key();
101  m_jokey=folderprop.hasKey();
102  // tag from 'tag' property
103  m_jotag=folderprop.tag();
104  // event store from 'eventStoreName' property, default 'StoreGateSvc'
105  m_eventstore=folderprop.eventStoreName();
106  // cachelength (seconds or LB)
107  m_cachepar = folderprop.cache();
108  // check for <noover> - disables using tag override read from input file
109  m_notagoverride=folderprop.noTagOverride();
110  if (m_source == "CREST")
112  if (m_notagoverride) ATH_MSG_INFO( "Inputfile tag override disabled for " << m_foldername );
113 
114  // channel selection from 'channelSelection' property
115  // syntax is A:B,C:D,E:F
116  // :B implies zero lower limit, A: implies zero upper limit
117  std::string chanspec;
118  if (folderprop.getKey("channelSelection","",chanspec) && !chanspec.empty()) {
119  m_chanrange=IOVDbNamespace::parseChannelSpec<cool::ChannelId>(chanspec);
120  // explicit setting of channel selection
121  // push to the channel selection
122  try{
123  bool first(true);
124  for(const auto & i:m_chanrange){
125  if (first){
126  first = false;
127  m_chansel = cool::ChannelSelection(i.first,i.second);
128  } else {
129  m_chansel.addRange(i.first,i.second);
130  }
131  }
132  } catch (cool::Exception& e) {
133  ATH_MSG_ERROR("defining channel range (must be given in ascending order)");
134  throw;
135  }
136  }
137  if (folderprop.overridesIov(msg)){
138  m_iovoverridden=true;
139  m_iovoverride=folderprop.iovOverrideValue(msg);
140  if (m_timestamp){
141  ATH_MSG_INFO( "Override timestamp to " << m_iovoverride << " for folder " << m_foldername );
142  } else {
144  ATH_MSG_INFO( "Override run/LB number to [" << run << ":" << lumi << "] for folder " << m_foldername );
145  }
146  }
147 
149  if (m_fromMetaDataOnly) {
150  ATH_MSG_INFO( "Read from meta data only for folder " << m_foldername );
151  }
152 
153  m_extensible=folderprop.extensible();
154  if (m_extensible) {
155  ATH_MSG_INFO( "Extensible folder " << m_foldername );
156  }
157 
158 }

◆ ~IOVDbFolder()

IOVDbFolder::~IOVDbFolder ( )

Definition at line 160 of file IOVDbFolder.cxx.

160  {
161  if (m_cachespec!=nullptr) m_cachespec->release();
162 }

Member Function Documentation

◆ addIOVtoCache()

void IOVDbFolder::addIOVtoCache ( cool::ValidityKey  since,
cool::ValidityKey  until 
)
private

Definition at line 1151 of file IOVDbFolder.cxx.

1151  {
1152  // add IOV to the cache
1153  ATH_MSG_DEBUG("Adding IOV to cache, from "<<since<<" to "<<until);
1155 }

◆ addMetaAttrList()

bool IOVDbFolder::addMetaAttrList ( const coral::AttributeList &  atrlist,
const IOVRange range 
)
private

Definition at line 1111 of file IOVDbFolder.cxx.

1112  {
1113  // make a temporary CondAttrListCollection with channel 0xFFFF
1114  // This channel number is used to flag on readback that an
1115  // AthenaAttributeList and not a CondAttrListCollection must be created
1117  tmpColl.add(0xFFFF,atrlist);
1118  tmpColl.add(0xFFFF,range);
1119  return addMetaAttrListColl(&tmpColl);
1120 }

◆ addMetaAttrListColl()

bool IOVDbFolder::addMetaAttrListColl ( const CondAttrListCollection coll)
private

Definition at line 1123 of file IOVDbFolder.cxx.

1123  {
1124  // send given payload to folder metadata
1125  // make a new CondAttrListCollection for the payload
1126  CondAttrListCollection* flmdColl=new CondAttrListCollection(*coll);
1127  if (StatusCode::SUCCESS!=p_metaDataTool->addPayload(m_foldername,flmdColl)) {
1128  ATH_MSG_ERROR( "addMetaAttrList: Failed to write metadata for folder " << m_foldername);
1129  return false;
1130  } else {
1131  ATH_MSG_DEBUG( "addMetaAttrList: write metadata for folder " << m_foldername );
1132  return true;
1133  }
1134 }

◆ bytesRead()

unsigned long long IOVDbFolder::bytesRead ( ) const
inline

Definition at line 379 of file IOVDbFolder.h.

380 { return m_nbytesread; }

◆ cacheUpdateImplementation()

template<class T >
unsigned int IOVDbFolder::cacheUpdateImplementation ( T &  obj,
const ServiceHandle< IIOVSvc > &  iovSvc 
)
inlineprivate

Definition at line 177 of file IOVDbFolder.h.

177  {
178  const auto & objSince = obj.since();
179  const auto & objUntil = obj.until();
180  const auto & objChannel = obj.channelId();
181  ATH_MSG_DEBUG("from DB \t chID: "<<objChannel<<"\tobjstart:\t"<<objSince<<"\t objstop: \t"
182  << objUntil );
183  // The covered flag is used to check whether the
184  // requested IOV time is inside the range covered
185  // by the current cache. If not, a cache reset
186  // will be done.
187  unsigned int counter{};
188  bool covered{false};
189  //find the iterator distance into the channel array which gives the sought ChannelId
190  const auto pCacheChannel = std::find(m_cachechan.begin(), m_cachechan.end(), objChannel);
191  if (pCacheChannel != m_cachechan.end()){
192  //find corresponding iov, which we shall modify
193  const auto iovIdx = std::distance(m_cachechan.begin(), pCacheChannel);
194  const auto & iov = m_iovs.at(iovIdx);
195  if ((iov.first < objSince) and (objSince < iov.second)){
196  // obj time is larger than cache start (and less than cache stop)
197  // ==> update cache
198  ++counter;
199  ATH_MSG_DEBUG("special reload needed on THIS ONE !!!!!!!!!!!");
200  // just change existing IOVRange
201  ATH_MSG_DEBUG("changing "<<iov.second<<" to "<<objSince-1);
202  m_iovs.extendIov(iovIdx, objSince-1);
203  specialCacheUpdate(obj, iovSvc); // reset proxy, add to cache, addIOV
204  covered = true;
205  }
206  if ( (objSince>=iov.first and objSince<iov.second) or (objUntil>iov.first and objUntil<=iov.second) ) covered=true;
207  }
208  if (!covered) {
209  // cache range has not been covered, so update the cache
210  ++counter;
211  specialCacheUpdate(obj, iovSvc);
212  }
213  return counter;
214  }

◆ cacheValid()

bool IOVDbFolder::cacheValid ( const cool::ValidityKey  reftime) const
inline

Definition at line 387 of file IOVDbFolder.h.

387  {
388  const auto & [cacheStart, cacheStop]=m_iovs.getCacheBounds();
389  // cppcheck-suppress incorrectLogicOperator; cppcheck 2.6 false positive: it doesn't understand destructuring
390  return ((reftime>cacheStart) and (reftime<cacheStop));
391 }

◆ clearCache()

void IOVDbFolder::clearCache ( )
private

Definition at line 1036 of file IOVDbFolder.cxx.

1036  {
1037  // clear all the cache vectors of information
1038  m_iovs.clear();
1039  m_cachechan.clear();
1040  m_cacheattr.clear();
1041  m_cacheccstart.clear();
1042  m_cacheccend.clear();
1043 }

◆ clid()

CLID IOVDbFolder::clid ( ) const
inline

Definition at line 377 of file IOVDbFolder.h.

377 { return m_clid; }

◆ conn()

IOVDbConn * IOVDbFolder::conn ( )
inline

Definition at line 340 of file IOVDbFolder.h.

340 { return m_conn;}

◆ createTransientAddress()

std::unique_ptr< SG::TransientAddress > IOVDbFolder::createTransientAddress ( const std::vector< std::string > &  symlinks)
private

Definition at line 872 of file IOVDbFolder.cxx.

872  {
873  auto tad = std::make_unique<SG::TransientAddress>(m_clid,m_key);
874  //
875  for (const auto & linkname:symlinks){
876  if (not linkname.empty()) {
877  CLID sclid;
878  if (StatusCode::SUCCESS==p_clidSvc->getIDOfTypeName(linkname,sclid)) {
879  tad->setTransientID(sclid);
880  ATH_MSG_DEBUG( "Setup symlink " << linkname << " CLID " <<sclid << " for folder " << m_foldername );
881  } else {
882  ATH_MSG_ERROR( "Could not get clid for symlink: "<< linkname );
883  return nullptr;
884  }
885  }
886  }
887  return tad;
888 }

◆ currentRange()

const IOVRange & IOVDbFolder::currentRange ( ) const
inline

Definition at line 385 of file IOVDbFolder.h.

385 { return m_currange; }

◆ dropped()

bool IOVDbFolder::dropped ( ) const
inline

Definition at line 366 of file IOVDbFolder.h.

366 { return m_dropped; }

◆ dumpFile()

void IOVDbFolder::dumpFile ( const std::string &  dumpName,
const cool::ValidityKey &  vkey,
IOVDbNamespace::Cool2Json json,
bool  skipCoolIoV,
IOVDbNamespace::BasicFolder basicFolder,
const std::string &  crestNodeDescr,
const std::string &  specString 
) const
private

Definition at line 1207 of file IOVDbFolder.cxx.

1214 {
1215  std::ofstream myFile;
1216  std::string fMain(dumpName);
1217  const std::string sanitisedFolder=fMain+"/"+sanitiseFilename(m_foldername);
1218  const std::string fabricatedName=sanitisedFolder+delimiter+std::to_string(vkey)+fileSuffix;
1219  std::filesystem::create_directory(fMain);
1220  myFile.open(fabricatedName,std::ios::out);
1221  if (not myFile.is_open()) {
1222  std::string errorMessage{"File creation for "+fabricatedName+" failed."};
1223  ATH_MSG_FATAL(errorMessage);
1224  throw std::runtime_error(errorMessage);
1225  }
1226  else {
1227  ATH_MSG_INFO("File "<<fabricatedName<<" created.");
1228  }
1229 
1230  myFile<<s_openJson;
1231  if(json) {
1232  // Dump COOL data
1233  myFile<<json->description()<<s_delimiterJson<<std::endl;
1234  myFile<<json->payloadSpec()<<s_delimiterJson<<std::endl;
1235  if(!skipCoolIoV) {
1236  myFile<<json->iov()<<s_delimiterJson<<std::endl;
1237  }
1238  myFile<<json->payload()<<std::endl;
1239  }
1240  else {
1241  // Dump CREST data
1242  std::string newNodeDescription = std::regex_replace(crestNodeDescr, std::regex("\""), "\\\"");
1243  std::string newSpecString = std::regex_replace(specString, std::regex(":"), ": ");
1244  newSpecString = std::regex_replace(newSpecString, std::regex(","), s_delimiterJson);
1245  myFile<<"\"node_description\" : \""<<newNodeDescription<< '\"'<<s_delimiterJson<<std::endl;
1246  myFile<<"\"folder_payloadspec\": \""<<newSpecString<< '\"'<<s_delimiterJson<<std::endl;
1247  myFile<<basicFolder->jsonPayload(newNodeDescription,newSpecString)<<std::endl;
1248  }
1249  myFile<<s_closeJson;
1250 }

◆ eventStore()

const std::string & IOVDbFolder::eventStore ( ) const
inline

Definition at line 374 of file IOVDbFolder.h.

375 { return m_eventstore; }

◆ extensible()

bool IOVDbFolder::extensible ( ) const
inline

Definition at line 364 of file IOVDbFolder.h.

364 { return m_extensible; }

◆ fetchCrestIOVs()

std::vector< IOVDbFolder::IOVHash > IOVDbFolder::fetchCrestIOVs ( cool::ValidityKey  since,
cool::ValidityKey  until 
)
private

Definition at line 1172 of file IOVDbFolder.cxx.

1173 {
1174  std::vector<IOVHash> result;
1175 
1176  // Get a vector of pairs retrieved from crest
1177  auto crestIOVs = m_cfunctions.value().getIovsForTag(m_crestTag, since, until);
1178  if(crestIOVs.empty()){
1179  ATH_MSG_WARNING("Load cache failed for " << m_foldername << ". No IOVs retrieved from the DB");
1180  return result;
1181  }
1182  std::vector<IOV2Index> iov2IndexVect; // Temporary vector for sorting IOV_SINCE values
1183  iov2IndexVect.reserve(crestIOVs.size());
1184  size_t hashInd{0};
1185  for(const auto& crestIOV : crestIOVs) {
1186  iov2IndexVect.emplace_back(std::stoull(crestIOV.first),hashInd++);
1187  }
1188 
1189  size_t nIOVs = iov2IndexVect.size();
1190  result.reserve(nIOVs);
1191  if(nIOVs>0) {
1192  if(nIOVs>1) {
1193  for(size_t ind=0; ind<nIOVs-1; ++ind) {
1194  result.emplace_back(IovStore::Iov_t(iov2IndexVect[ind].first
1195  , iov2IndexVect[ind+1].first)
1196  , crestIOVs[iov2IndexVect[ind].second].second);
1197  }
1198  }
1199  result.emplace_back(IovStore::Iov_t(iov2IndexVect[nIOVs-1].first
1200  , cool::ValidityKeyMax)
1201  , crestIOVs[iov2IndexVect[nIOVs-1].second].second);
1202  }
1203 
1204  return result;
1205 }

◆ fetchCrestObjects()

std::vector< BasicFolder > IOVDbFolder::fetchCrestObjects ( cool::ValidityKey  since,
cool::ValidityKey  until,
bool  vectorPayloadFlag,
cool::ValidityKey  vkey,
const std::string &  nodeDesc 
)
private

Definition at line 1252 of file IOVDbFolder.cxx.

1257 {
1258 
1259  std::string crestPayloadType="crest-json-single-iov";
1260  nlohmann::json tagProperties = m_cfunctions.value().getTagProperties(m_crestTag);
1261  if(tagProperties!=nullptr
1262  && tagProperties.contains("payloadSpec")) {
1263  crestPayloadType=tagProperties["payloadSpec"].get<std::string>();
1264  }
1265 
1266  if(crestPayloadType.compare("crest-json-multi-iov")==0) {
1267 /*
1268  try {
1269  nlohmann::json multiPayload = nlohmann::json::parse(reply);
1270  nlohmann::json jsIovs=multiPayload["obj"];
1271  std::vector<IOV2Index> iov2IndexVect;
1272  iov2IndexVect.reserve(jsIovs.size());
1273  size_t hashInd{0};
1274  for(const auto& jsIov : jsIovs.items()) {
1275  iov2IndexVect.emplace_back(std::stoull(jsIov.key()),hashInd++);
1276  }
1277  std::sort(iov2IndexVect.begin(),iov2IndexVect.end(),
1278  [](const IOV2Index& a, const IOV2Index& b)
1279  {
1280  return a.first < b.first;
1281  });
1282  if(vkey < iov2IndexVect[0].first) {
1283  std::string errorMessage{"Load cache failed for "+m_foldername+". No valid IOV retrieved from the payload"};
1284  ATH_MSG_FATAL(errorMessage);
1285  throw std::runtime_error{errorMessage};
1286  }
1287 
1288  uint64_t iov = 0;
1289  for(const auto& iovhash : iov2IndexVect) {
1290  if(vkey >= iovhash.first) {
1291  iov=iovhash.first;
1292  continue;
1293  }
1294  else {
1295  break;
1296  }
1297  }
1298  if (indIOV>=0){
1299  iovHashVect[indIOV].first.first=iov;
1300  nlohmann::json payload={};
1301  payload["data"]=jsIovs[std::to_string(iov)];
1302  reply=payload.dump();
1303  } else {
1304  ATH_MSG_FATAL("indIOV is negative in IOVDbFolder::dumpFile");
1305  }
1306  }
1307  catch (std::exception & e) {
1308  std::string errorMessage = "Failed of parse multi iovs struct of internal iovs from payload for DCS type: " + std::string{e.what()};
1309  ATH_MSG_FATAL(errorMessage);
1310  throw std::runtime_error{errorMessage};
1311  }
1312  }
1313  ATH_MSG_DEBUG("Found IOV for " << m_foldername << " and VKEY " << vkey
1314  << " " << iovHashVect[indIOV].first);
1315 
1316  if (m_crestToFile and (indIOV>=0)) { //indIOV must be >=0, it's used as a vector index in this block
1317  unsigned long long sinceT = iovHashVect[indIOV].first.first;
1318 
1319  std::string crest_work_dir=std::filesystem::current_path();
1320  crest_work_dir += "/crest_data";
1321  bool crest_rewrite = true;
1322  Crest::CrestClient crestFSClient = Crest::CrestClient(crest_rewrite, crest_work_dir);
1323 
1324  nlohmann::json js =
1325  {
1326  {"name", m_crestTag}
1327  };
1328 
1329  try{
1330  crestFSClient.createTag(js);
1331  ATH_MSG_INFO("Tag " << m_crestTag << " saved to disk.");
1332  ATH_MSG_INFO("CREST Dump dir = " << crest_work_dir);
1333  }
1334  catch (const std::exception& e) {
1335  ATH_MSG_WARNING("Data saving for tag " << m_crestTag << " failed: " << e.what());
1336  }
1337 
1338  try{
1339  crestFSClient.storePayloadDump(m_crestTag, sinceT, reply);
1340  ATH_MSG_INFO("Data (payload and IOV) saved for tag " << m_crestTag << ".");
1341  }
1342  catch (const std::exception& e) {
1343  ATH_MSG_WARNING("Data (payload and IOV) saving for tag " << m_crestTag<<" failed; " << e.what());
1344  }
1345  }
1346 
1347  const std::string& specString = cfunctions.getTagInfoElement(m_tag_info,"payload_spec");
1348  if (specString.empty()) {
1349  std::string errorMessage = "Reading payload spec from "+m_foldername+" failed.";
1350 */
1351  // Support for this type of payload will be added later
1352  std::string errorMessage = m_foldername + ": has multi-iov payload. Folders with multi-iov payloads currently not supported!";
1353  ATH_MSG_FATAL(errorMessage);
1354  throw std::runtime_error{errorMessage};
1355  }
1356  const std::string specString = m_cfunctions.value().getTagInfoElement(m_tag_info,"payload_spec");
1357  if (specString.empty()) {
1358  std::string errorMessage = "Reading payload spec from " + m_foldername + " failed.";
1359  ATH_MSG_FATAL(errorMessage);
1360  throw std::runtime_error{errorMessage};
1361  }
1362 
1363  std::vector<BasicFolder> retVector;
1364 
1365  // Vector of non-overlapping IOVs + corresponding Hashes
1366  std::vector<IOVHash> iovHashVect = fetchCrestIOVs(since, until);
1367 
1368  if(iovHashVect.empty() || until<=iovHashVect[0].first.first) {
1369  if(iovHashVect.empty()) {
1370  ATH_MSG_INFO("NO IOVs retrieved for the folder "+ m_foldername);
1371  }
1372  else {
1373  ATH_MSG_INFO("Cache boundaries outside available IOVs for the folder "+ m_foldername);
1374  }
1375  BasicFolder basicFolder;
1376  basicFolder.setVectorPayloadFlag(vectorPayloadFlag);
1377  retVector.push_back(basicFolder);
1378  return retVector;
1379  }
1380 
1381  unsigned indIOVStart = 0;
1382  for(const auto& iovhash : iovHashVect) {
1383  if(since < iovhash.first.first) break; // 'since' is earlier that the first IOV segment. indIOVStart=0
1384  if(since < iovhash.first.second
1385  && since >= iovhash.first.first) {
1386  break;
1387  }
1388  ++indIOVStart;
1389  }
1390  unsigned indIOVEnd = indIOVStart;
1391  while(indIOVEnd < iovHashVect.size()) {
1392  if(iovHashVect[indIOVEnd].first.first < until
1393  && iovHashVect[indIOVEnd].first.second >= until) {
1394  break;
1395  }
1396  ++indIOVEnd;
1397  }
1398 
1399  for(unsigned ind = indIOVStart; ind <= indIOVEnd; ++ind) {
1400  std::string reply = m_cfunctions.value().getPayloadForHash(iovHashVect[ind].second);
1401 
1402  if (m_crestToFile) {
1403  unsigned long long sinceT = iovHashVect[ind].first.first;
1404 
1405  std::string crest_work_dir=std::filesystem::current_path();
1406  crest_work_dir += "/crest_data";
1407  bool crest_rewrite = true;
1408  Crest::CrestFsClient crestFSClient = Crest::CrestFsClient(crest_rewrite, crest_work_dir);
1409 
1410  nlohmann::json js =
1411  {
1412  {"description", "none"},
1413  {"endOfValidity", 0},
1414  {"lastValidatedTime", 0},
1415  {"name", m_crestTag},
1416  {"payloadSpec", "none"},
1417  {"synchronization", "none"},
1418  {"timeType", "time"}};
1419 
1420  TagDto dto = TagDto();
1421  dto = dto.from_json(js);
1422 
1423  try{
1424  crestFSClient.createTag(dto);
1425 
1426  ATH_MSG_INFO("Tag " << m_crestTag << " saved to disk.");
1427  ATH_MSG_INFO("CREST Dump dir = " << crest_work_dir);
1428  }
1429  catch (const std::exception& e) {
1430  ATH_MSG_WARNING("Data saving for tag " << m_crestTag << " failed: " << e.what());
1431  }
1432 
1433  uint64_t endtime = 0;
1434  nlohmann::json elem =
1435  {
1436  {"since", sinceT},
1437  {"data", reply},
1438  {"streamerInfo", "none"}
1439  };
1440 
1441  nlohmann::json jResources = json::array();
1442  jResources.push_back(elem);
1443 
1444  nlohmann::json jsStoreSet=
1445  {
1446  {"size", 1},
1447  {"datatype", "data"},
1448  {"format", "StoreSetDto"},
1449  {"resources", jResources}
1450  };
1451 
1452  StoreSetDto storeSetDto = StoreSetDto::from_json(jsStoreSet);
1453 
1454  try{
1455  crestFSClient.storeData(m_crestTag, storeSetDto, "JSON", "test", "test", "1", endtime);
1456 
1457  ATH_MSG_INFO("Data (payload and IOV) saved for tag " << m_crestTag << ".");
1458  }
1459  catch (const std::exception& e) {
1460  ATH_MSG_WARNING("Data (payload and IOV) saving for tag " << m_crestTag<<" failed; " << e.what());
1461  }
1462  }
1463 
1464  //basic folder now contains the info
1465  BasicFolder basicFolder;
1466  basicFolder.setVectorPayloadFlag(vectorPayloadFlag);
1467  std::istringstream ss(reply);
1468  Json2Cool inputJson(ss, basicFolder, specString, &(iovHashVect[ind].first));
1469  if (basicFolder.empty()){
1470  std::string errorMessage = "Reading channel data from "+m_foldername+" failed.";
1471  ATH_MSG_FATAL(errorMessage);
1472  throw std::runtime_error{errorMessage};
1473  }
1474 
1475  if(m_crestCoolToFile) {
1476  dumpFile("crest_dump",vkey,nullptr,false,&basicFolder,nodeDesc,specString);
1477  }
1478 
1479  retVector.push_back(basicFolder);
1480  }
1481  return retVector;
1482 }

◆ folderName()

const std::string & IOVDbFolder::folderName ( ) const
inline

Definition at line 337 of file IOVDbFolder.h.

337 {return m_foldername;}

◆ folderType()

IOVDbNamespace::FolderType IOVDbFolder::folderType ( ) const
inline

Definition at line 352 of file IOVDbFolder.h.

353 {return m_foldertype;}

◆ fromMetaDataOnly()

bool IOVDbFolder::fromMetaDataOnly ( ) const
inline

Definition at line 362 of file IOVDbFolder.h.

362 { return m_fromMetaDataOnly; }

◆ getAddress()

bool IOVDbFolder::getAddress ( const cool::ValidityKey  reftime,
IAddressCreator *  persSvc,
const unsigned int  poolSvcContext,
std::unique_ptr< IOpaqueAddress > &  address,
IOVRange range,
bool &  poolPayloadRequested 
)

Definition at line 632 of file IOVDbFolder.cxx.

636  {
637 
638  ++m_ncacheread;
639  // will produce strAddress and one pointer type depending on folder data
640  std::string strAddress;
641  AthenaAttributeList* attrList=nullptr;
642  CondAttrListCollection* attrListColl=nullptr;
643  CondAttrListVec* attrListVec=nullptr;
644  cool::ValidityKey naystart=0;
645  cool::ValidityKey naystop=cool::ValidityKeyMax;
646  if( m_useFileMetaData ) {
648  readFromMetaData(m_foldername, p_metaDataTool, reftime, m_timestamp);
649  if (not readFromMetaData.isValid()){
650  ATH_MSG_ERROR( "read:Could not find IOVPayloadContainer for folder "<< m_foldername );
651  return false;
652  }
653  // read from file metadata
654  m_foldertype=readFromMetaData.folderType();
655  m_nobjread+=readFromMetaData.numberOfObjects();
656  poolPayloadReq=readFromMetaData.poolPayloadRequested();
657  strAddress = readFromMetaData.stringAddress();
658  range = readFromMetaData.range();
659  attrList = readFromMetaData.attributeList();
660  attrListColl = readFromMetaData.attrListCollection();
661  ATH_MSG_DEBUG( "Read file metadata for folder " << m_foldername << " foldertype is " << m_foldertype );
662  } else {
663  // COOL/CoraCool data to be read from cache
664  // for AttrListColl or PoolRefColl, need a CondAttrListCollection ready
665  // to receive the data
667  attrListColl=new CondAttrListCollection(!m_timestamp);
668  } else if (m_foldertype==CoraCool || m_foldertype==CoolVector) {
669  // for CoraCool/CoolVector, assume we will get everything in the cache
670  attrListVec=new CondAttrListVec(!m_timestamp, m_cacheattr.size());
671  }
672  // loop over cached data
673  unsigned int nobj=0;
674  // keep track of closest neighbouring IOVs
675  std::tie(naystart, naystop) = m_iovs.getCacheBounds();
676 
677  for (unsigned int ic=0; ic!=m_iovs.size();++ic) {
678  const auto & thisIov = m_iovs.at(ic);
679  if (thisIov.first<=reftime && reftime<thisIov.second) {
680  ++nobj;
682  // retrieve of AthenaAttributeList or single PoolRef
683  if (m_foldertype==AttrList) {
684  attrList=new AthenaAttributeList(m_cacheattr[ic]);
685  strAddress="POOLContainer_AthenaAttributeList][CLID=x";
686  } else {
687  strAddress=(m_cacheattr[ic])["PoolRef"].data<std::string>();
688  }
689  range=IOVDbNamespace::makeRange(thisIov.first,thisIov.second, m_timestamp);
690  // write meta-data if required
691  if (m_writemeta)
692  if (!addMetaAttrList(m_cacheattr[ic],range)) return false;
694  // retrieve of CondAttrListCollection
695  attrListColl->addShared(m_cachechan[ic],m_cacheattr[ic]);
696  attrListColl->add(m_cachechan[ic],IOVDbNamespace::makeRange(thisIov.first,thisIov.second, m_timestamp));
697  } else if (m_foldertype==CoraCool || m_foldertype==CoolVector) {
698  // retrieval of CoraCool data
699  attrListVec->addSlice(IOVDbNamespace::makeRange(thisIov.first,thisIov.second, m_timestamp),
702  if (m_writemeta) {
703  ATH_MSG_ERROR( "Writing of CoraCool folders to file metadata not implemented");
704  return false;
705  }
706  } else {
707  ATH_MSG_ERROR( "Unhandled folder type " << m_foldertype);
708  return false;
709  }
710  } else if (thisIov.second<=reftime && thisIov.second>naystart) {
711  naystart=thisIov.second;
712  } else if (thisIov.first>reftime && thisIov.first<naystop) {
713  naystop=thisIov.first;
714  }
715  }
716  // post-loop actions
718  // set up channel names if required
719  if (m_named) {
720  std::vector<std::string>::const_iterator nitr=m_channames.begin();
721  for (std::vector<cool::ChannelId>::const_iterator chitr=m_channums.begin();
722  chitr!=m_channums.end(); ++chitr,++nitr) {
723  attrListColl->add(*chitr,*nitr);
724  }
725  }
726  // set range
727  range=attrListColl->minRange();
728  strAddress="POOLContainer_CondAttrListCollection][CLID=x";
729  } else if (m_foldertype==CoraCool || m_foldertype==CoolVector) {
730  range=attrListVec->minRange();
731  strAddress="POOLContainer_CondAttrListVec][CLID=x";
732  } else if (m_foldertype==AttrList || m_foldertype==PoolRef) {
733  // single object retrieve - should have exactly one object
734  if (nobj==0) {
735  ATH_MSG_ERROR("COOL object not found in single-channel retrieve, folder "
736  << m_foldername << " currentTime " << reftime );
737  return false;
738  } else if (nobj>1) {
739  ATH_MSG_ERROR( nobj <<
740  " valid objects found for single-channel retrieve, folder " <<
741  m_foldername << " currentTime " << reftime );
742  return false;
743  }
744  }
745  ATH_MSG_DEBUG( "Retrieved object: folder " << m_foldername
746  << " at IOV " << reftime << " channels " << nobj << " has range "
747  << range );
748  // shrink range so it does not extend into 'gap' channels or outside cache
749  IOVTime tnaystart=makeEpochOrRunLumi(naystart, m_timestamp);
750  IOVTime tnaystop=makeEpochOrRunLumi(naystop, m_timestamp);
751  IOVTime rstart=range.start();
752  IOVTime rstop=range.stop();
753  if (tnaystart > rstart || rstop > tnaystop) {
754  ATH_MSG_DEBUG( "Shrink IOV range for " << m_foldername
755  << " from [" << rstart << ":" << rstop << "] to ["
756  << tnaystart << ":" << tnaystop << "]" );
757  if (tnaystart > rstart) rstart=tnaystart;
758  if (tnaystop < rstop) rstop=tnaystop;
759  range=IOVRange(rstart,rstop);
761  attrListColl->addNewStart(rstart);
762  attrListColl->addNewStop(rstop);
763  }
764  }
765  }
766  // save the range for possible later lookup in IOVDbSvc::getKeyInfo
768  m_retrieved=true;
769  // write metadata for attrListColl if required (after range shrinking)
770  if (m_writemeta &&
772  if (!addMetaAttrListColl(attrListColl)) return false;
773  }
774 
775  // turn the data into an IOpaqueAddress
776  strAddress=m_addrheader+strAddress;
777  IOpaqueAddress* addrp = nullptr;
778  if (StatusCode::SUCCESS!=persSvc->createAddress(0,0,strAddress,addrp)) {
779  ATH_MSG_ERROR( "Could not get IOpaqueAddress from string address "<< strAddress );
780  return false;
781  }
782  address = std::unique_ptr<IOpaqueAddress>(addrp);
783  GenericAddress* gAddr=dynamic_cast<GenericAddress*>(address.get());
784  if (!gAddr) {
785  ATH_MSG_ERROR( "Could not cast IOpaqueAddress to GenericAddress");
786  return false;
787  }
788  // create a new GenericAddress to set pool context
789  if (m_foldertype==AttrListColl) {
790  auto addr = std::make_unique<CondAttrListCollAddress>(*gAddr);
791  addr->setAttrListColl(attrListColl);
792  address = std::move(addr);
793  } else if (m_foldertype==PoolRefColl || m_foldertype==PoolRef) {
794  auto addr = std::make_unique<CondAttrListCollAddress>(gAddr->svcType(),
795  gAddr->clID(),gAddr->par()[0],gAddr->par()[1],
796  poolSvcContext,gAddr->ipar()[1]);
797  if (m_foldertype==PoolRefColl) {
798  addr->setAttrListColl(attrListColl);
799  }
800  address = std::move(addr);
801  poolPayloadReq=true;
802  } else if (m_foldertype==AttrList) {
803  auto addr = std::make_unique<AthenaAttrListAddress>(*gAddr);
804  addr->setAttrList(attrList);
805  address = std::move(addr);
806  } else if (m_foldertype==CoraCool || m_foldertype==CoolVector) {
807  auto addr = std::make_unique<CondAttrListVecAddress>(*gAddr);
808  addr->setAttrListVec(attrListVec);
809  address = std::move(addr);
810  }
811  return true;
812 }

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40 {
42  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ iovOverridden()

bool IOVDbFolder::iovOverridden ( ) const
inline

Definition at line 368 of file IOVDbFolder.h.

368 { return m_iovoverridden; }

◆ iovTime()

cool::ValidityKey IOVDbFolder::iovTime ( const IOVTime reftime) const

Definition at line 215 of file IOVDbFolder.cxx.

215  {
216  if (m_iovoverridden) {
217  return m_iovoverride;
218  } else {
219  return (m_timestamp ? reftime.timestamp() : reftime.re_time());
220  }
221 }

◆ joTag()

const std::string & IOVDbFolder::joTag ( ) const
inline

Definition at line 370 of file IOVDbFolder.h.

370 { return m_jotag; }

◆ key()

const std::string & IOVDbFolder::key ( ) const
inline

Definition at line 338 of file IOVDbFolder.h.

338 { return m_key;}

◆ loadCache()

bool IOVDbFolder::loadCache ( const cool::ValidityKey  vkey,
const unsigned int  cacheDiv,
const std::string &  globalTag,
const bool  ignoreMissChan 
)

Definition at line 224 of file IOVDbFolder.cxx.

227  {
228  // load the cache for the given IOVTime, making a range around this time
229  // according to the caching policy
230  // if cacheDiv > 0, specifies number of slices of cache for query alignment
231  // if ignoreMissChan set, don't worry about missing channels outside the cache range
232  // return false if any problem
233  // timer to track amount of time in loadCache
234  TStopwatch cachetimer;
235  const auto & [cachestart, cachestop] = m_iovs.getCacheBounds();
236 
237  bool vectorPayload{};
238  std::string strCrestNodeDesc;
239  if (m_source == "CREST"){
240  ATH_MSG_INFO("Download tag would be: "<<m_crestTag);
241 
242  if (m_crest_tag != m_crestTag){
244  m_tag_info = m_cfunctions.value().getTagInfo(m_crestTag);
245  }
246  strCrestNodeDesc = m_cfunctions.value().folderDescriptionForTag(m_crestTag);
247  vectorPayload = (strCrestNodeDesc.find("CondAttrListVec") != std::string::npos);
248  }
249  else {
250  vectorPayload = (m_foldertype ==CoraCool) or (m_foldertype == CoolVector);
251  }
252 
253  ATH_MSG_DEBUG( "Load cache for folder " << m_foldername << " validitykey " << vkey);
254  // if not first time through, and limit not reached,and cache was not reset,
255  // and we are going forwards in time, double cachesize
256  if (m_ndbread>0 && m_cacheinc<3 && (cachestop!=cachestart) && vkey>cachestart && m_autocache) {
257  m_cachelength*=2;
258  ++m_cacheinc;
259  ATH_MSG_INFO( "Increase cache length (step " << m_cacheinc << ") for folder " << m_foldername << " to " << m_cachelength << " at validityKey " << vkey );
260  }
261  ++m_ndbread;
262  auto [changedCacheLo, changedCacheHi] = m_iovs.getCacheBounds();
263  if (cacheDiv>0) {
264  // quantise queries on boundaries that are sub-multiples of cache length
265  unsigned long long cacheq=m_cachelength/cacheDiv;
266  if (cacheq>0) changedCacheLo=vkey - vkey % cacheq;
267  changedCacheHi=changedCacheLo+m_cachelength;
268  } else {
269  // for run/LB indexed folders and cache of at least one run
270  // align the query to the run start
272  changedCacheLo=vkey & (0x7FFFFFFFLL << 32);
273  } else {
274  changedCacheLo=vkey;
275  }
276  changedCacheHi=vkey+m_cachelength;
277  }
278  if (changedCacheHi>cool::ValidityKeyMax) changedCacheHi=cool::ValidityKeyMax;
279  //
280  //
281  m_iovs.setCacheBounds(IovStore::Iov_t(changedCacheLo, changedCacheHi));
282  //
283  const auto & [since, until] = m_iovs.getCacheBounds();
284  ATH_MSG_DEBUG( "IOVDbFolder:loadCache limits set to [" << since << "," << until << "]" );
285 
286  if (m_cachespec==nullptr) {
287  // on first init, guess size based on channel count
288  unsigned int estsize=m_nchan;
289  if (m_cachehint > 0) {
290  estsize=estsize*m_cachehint;
291  } else if (m_timestamp) {
292  // for timestamp indexed folder (likely to be DCS), increase this
293  estsize=estsize*3;
294  }
295  // note this is only reserved size of the cache vectors
296  // actual datastorage is mainly allocated by pointer elsewhere
297  m_cachechan.reserve(estsize);
298  m_cacheattr.reserve(estsize);
299  if (vectorPayload) {
300  m_cacheccstart.reserve(estsize);
301  m_cacheccend.reserve(estsize);
302  }
303  } else {
304  // reset cache if it already contained data
305  // TBIO - could keep the attributelists and only change the data on reload
306  // avoiding some attributelist construction/destruction
307  clearCache();
308  }
309  bool retrievedone=false;
310  unsigned int nChannelsExpected = (m_chanrange.empty())? (m_nchan) : (IOVDbNamespace::countSelectedChannels(m_channums, m_chansel));
311  if (m_source == "COOL_DATABASE"){
312  // query to fill cache - request for database activates connection
313  if (not m_conn->open()) {
314  ATH_MSG_FATAL( "Conditions database connection " <<m_conn->name() << " cannot be opened - STOP" );
315  return false;
316  }
317  // access COOL inside try/catch in case of using stale connection
318  unsigned int attempts=0;
319 
320  ATH_MSG_DEBUG( "loadCache: Expecting to see " << nChannelsExpected << " channels" );
321  //
322  while (attempts<2 && !retrievedone) {
323  ++attempts;
324  try {
325  unsigned int iadd=0;
326  m_iovs.setIovSpan(IovStore::Iov_t(0,cool::ValidityKeyMax));
327  // check pointer is still valid - can go stale in AthenaMT environment
328  // according to CORAL server tests done by Andrea Valassi (23/6/09)
329  if (not m_conn->valid()) throw std::runtime_error("COOL database pointer invalidated");
330  // access COOL folder in case needed to resolve tag (even for CoraCool)
331  cool::IFolderPtr folder=m_conn->getFolderPtr(m_foldername);
332 
333  // resolve the tag for MV folders if not already done so
334  if (m_multiversion && m_tag.empty()) {
335  if (!resolveTag(folder,globalTag)) return false;
336 
337  }
338  if (m_foldertype==CoraCool) {
339  // CoraCool retrieve
341  CoraCoolFolderPtr ccfolder=ccDbPtr->getFolder(m_foldername);
342 
343  auto [since,until] = m_iovs.getCacheBounds();
344  CoraCoolObjectIterPtr itr=ccfolder->browseObjects(since, until,m_chansel,m_tag);
345  while (itr->hasNext()) {
346  CoraCoolObjectPtr obj=itr->next();
347  //should be skipping non-selected channels here?
348  addIOVtoCache(obj->since(),obj->until());
349  m_cachechan.push_back(obj->channelId());
350  // store all the attributeLists in the buffer
351  // save pointer to start
352  const unsigned int istart=m_cacheattr.size();
353  for (CoraCoolObject::const_iterator pitr=obj->begin();pitr!=obj->end(); ++pitr) {
354  // setup shared specification on first store
355  if (m_cachespec==nullptr) setSharedSpec(*pitr);
356  // use the shared specification in storing the payload
357  m_cacheattr.emplace_back(*m_cachespec,true);
358  m_cacheattr.back().fastCopyData(*pitr);
360  }
361  // save pointers to start and end
362  m_cacheccstart.push_back(istart);
363  m_cacheccend.push_back(m_cacheattr.size());
364  ++iadd;
365  }
366  itr->close();
367  retrievedone=true;
368  } else {
369  auto [since,until] = m_iovs.getCacheBounds();
370  cool::IObjectIteratorPtr itr=folder->browseObjects(since,until,m_chansel,m_tag);
373  dumpFile("cool_dump",vkey,&json,m_crestCoolToFile,nullptr,"","");
374  }
375  while (itr->goToNext()) {
376  const cool::IObject& ref=itr->currentRef();
377  addIOVtoCache(ref.since(),ref.until());
378  m_cachechan.push_back(ref.channelId());
379  if (m_foldertype==CoolVector) {
380  // store all the attributeLists in the buffer
381  // save pointer to start
382  const unsigned int istart=m_cacheattr.size();
383  // get payload iterator and vector of payload records
384  cool::IRecordIterator& pitr=ref.payloadIterator();
385  const cool::IRecordVectorPtr& pvec=pitr.fetchAllAsVector();
386  for (cool::IRecordVector::const_iterator vitr=pvec->begin();vitr!=pvec->end();++vitr) {
387  const coral::AttributeList& atrlist=(*vitr)->attributeList();
388  // setup shared specification on first store
389  if (m_cachespec==nullptr) setSharedSpec(atrlist);
390  // use the shared specification in storing the payload
391  m_cacheattr.emplace_back(*m_cachespec,true);
392  m_cacheattr.back().fastCopyData(atrlist);
394  }
395  // save pointers to start and end
396  m_cacheccstart.push_back(istart);
397  m_cacheccend.push_back(m_cacheattr.size());
398  ++iadd;
399  pitr.close();
400  } else {
401  // standard COOL retrieve
402  const coral::AttributeList& atrlist=ref.payload().attributeList();
403  // setup shared specification on first store
404  if (m_cachespec==nullptr) setSharedSpec(atrlist);
405  // use the shared specification in storing the payload
406  m_cacheattr.emplace_back(*m_cachespec,true);
407  m_cacheattr[iadd].fastCopyData(atrlist);
408  ++iadd;
410  }
411  }
412  itr->close();
413  retrievedone=true;
414  }
415  ATH_MSG_DEBUG( "Retrieved " << iadd << " objects for "<< m_nchan << " channels into cache" );
416  m_nobjread+=iadd;
417  } catch (std::exception& e) {
418  ATH_MSG_WARNING( "COOL retrieve attempt " << attempts << " failed: " << e.what() );
419  // disconnect and reconnect
420  if (not m_conn->dropAndReconnect()) ATH_MSG_ERROR("Tried to reconnect in 'loadCache' but failed");
421  }
422  }
423  } // End of COOL reading section
424  else {
425  // CREST reading section
426  auto [since,until] = m_iovs.getCacheBounds();
427  std::vector<BasicFolder> crestObjs;
428  try {
429  crestObjs = fetchCrestObjects(since,until,vectorPayload,vkey,strCrestNodeDesc);
430  }
431  catch(std::exception&) {
432  return false;
433  }
434 
435  unsigned int iadd = 0;
436 
437  if (!resolveTag(nullptr,globalTag)) return false;
438  ATH_MSG_DEBUG( "loadCache: Expecting to see " << nChannelsExpected << " channels" );
439 
440  for(BasicFolder& basicFolder : crestObjs) {
441  const auto & channelNumbers=basicFolder.channelIds();
442  ATH_MSG_DEBUG( "ChannelIds is " << channelNumbers.size() << " long" );
443  for (const auto & chan: channelNumbers){
444  addIOVtoCache(basicFolder.iov().first, basicFolder.iov().second);
445  m_cachechan.push_back(chan);
446  if (basicFolder.isVectorPayload()) {
447  const auto & vPayload = basicFolder.getVectorPayload(chan);
448  const unsigned int istart=m_cacheattr.size();
449  for (const auto & attList:vPayload){
450  if (m_cachespec==nullptr) setSharedSpec(attList);
451  m_cacheattr.emplace_back(*m_cachespec,true);// maybe needs to be cleared before
452  m_cacheattr.back().fastCopyData(attList);
454  }
455  m_cacheccstart.push_back(istart);
456  m_cacheccend.push_back(m_cacheattr.size());
457  ++iadd;
458  } else {
459  auto const & attList = basicFolder.getPayload(chan);
460  if (m_cachespec==nullptr) setSharedSpec(attList);
461  const coral::AttributeList c(*m_cachespec,true);
462  m_cacheattr.push_back(c);// maybe needs to be cleared before
463  m_cacheattr.back().fastCopyData(attList);
465  ++iadd;
466  }
467  }
468  }
469  retrievedone=true;
470  ATH_MSG_DEBUG( "Retrieved " << iadd << " objects for "<< m_nchan << " channels into cache" );
471  m_nobjread+=iadd;
472  } // End of reading from CREST
473 
474  if (!retrievedone) {
475  const auto & [since,until] = m_iovs.getCacheBounds();
476  ATH_MSG_ERROR( "Could not retrieve Cond data for folder " <<
477  m_foldername << " tag " << m_tag << " validityKeys [" << since <<
478  "," << until << "]" );
479  return false;
480  }
481  // check if cache can be stretched according to extent of IOVs crossing
482  // boundaries - this requires all channels to have been seen
483  const auto & [nChannelsLo, nChannelsHi] = m_iovs.numberOfIovsOnBoundaries();
484  const auto missing=std::pair<unsigned int, unsigned int>(nChannelsExpected-nChannelsLo, nChannelsExpected-nChannelsHi);
485  ATH_MSG_DEBUG( "Cache retrieve missing " << missing.first << " lower and " << missing.second << " upper channels" );
486  //
487  const auto & span = m_iovs.getMinimumStraddlingSpan();
488  const auto & [cacheStart, cacheStop] =m_iovs.getCacheBounds();
489  //new code
490  if ((missing.first==0 or ignoreMissChan) and m_iovs.extendCacheLo()){
491  ATH_MSG_DEBUG( "Lower cache limit extended from " << cacheStart << " to " << span.first );
492  }
493 
494  if ((missing.second==0 or ignoreMissChan) and m_iovs.extendCacheHi()){
495  ATH_MSG_DEBUG( "Upper cache limit extended from " << cacheStop << " tp " << span.second );
496  }
497  //
498  // keep track of time spent
499  const float timeinc=cachetimer.RealTime();
500  m_readtime+=timeinc;
501  ATH_MSG_DEBUG( "Cache retrieve done for " << m_foldername << " with " <<
502  m_iovs.size() << " objects stored in" << std::fixed <<
503  std::setw(8) << std::setprecision(2) << timeinc << " s" );
504  return true;
505 }

◆ loadCacheIfDbChanged()

bool IOVDbFolder::loadCacheIfDbChanged ( const cool::ValidityKey  vkey,
const std::string &  globalTag,
const cool::IDatabasePtr &  dbPtr,
const ServiceHandle< IIOVSvc > &  iovSvc 
)

Definition at line 507 of file IOVDbFolder.cxx.

510  {
511  ATH_MSG_DEBUG( "IOVDbFolder::recheck with DB for folder " << m_foldername<< " validitykey: " << vkey );
512  if (m_iovs.empty()) {
513  ATH_MSG_DEBUG( "Cache empty ! returning ..." );
514  return true;
515  }
516  ++m_ndbread;
517  // access COOL inside try/catch in case of using stale connection
518  unsigned int attempts = 0;
519  bool retrievedone = false;
520  //
521  unsigned int nChannelsExpected = (m_chanrange.empty())? (m_nchan) : (IOVDbNamespace::countSelectedChannels(m_channums, m_chansel));
522  ATH_MSG_DEBUG( "loadCacheIfDbChanged: Expecting to see " << nChannelsExpected << " channels" );
523  //
524  while (attempts<2 && !retrievedone) {
525  ++attempts;
526  try {
527  m_iovs.setIovSpan(IovStore::Iov_t(0,cool::ValidityKeyMax));
528  // access COOL folder in case needed to resolve tag (even for CoraCool)
529  cool::IFolderPtr folder=m_conn->getFolderPtr(m_foldername);
530  // resolve the tag for MV folders if not already done so
531  if (m_multiversion && m_tag.empty()) { // NEEDED OR NOT?
532  if (!resolveTag(folder,globalTag)) return false;
533  }
534  int counter=0;
535  const auto & [since,until] = m_iovs.getCacheBounds();
536  ATH_MSG_DEBUG(IOVDbNamespace::folderTypeName(m_foldertype)<<" type. cachestart:\t"<<since<<" \t cachestop:"<< until);
537  ATH_MSG_DEBUG("checking range: "<<vkey+1<<" - "<<vkey+2);
538  if (m_foldertype==CoraCool) {
539  // CoraCool retrieve initialise CoraCool connection
541  // this returns all the objects whose IOVRanges crosses this range .
542  CoraCoolObjectIterPtr itr = ccfolder->browseObjects(vkey+1, vkey+2,m_chansel,m_tag);
543  while (objectIteratorIsValid(itr)) {
544  CoraCoolObjectPtr obj = itr->next();
545  //code delegated to templated member, allowing for difference between CoraCoolObjectPtr and IObject
547  }
548  itr->close();
549  } else {
550  // this returns all the objects whose IOVRanges crosses this range .
551  cool::IObjectIteratorPtr itr=folder->browseObjects(vkey+1, vkey+2, m_chansel,m_tag);
552  while (objectIteratorIsValid(itr)) {
553  const cool::IObject& ref=itr->currentRef();
554  //code delegated to templated member, allowing for difference between CoraCoolObjectPtr and IObject
556  }
557  itr->close();
558  }
559  retrievedone=true;
560  ATH_MSG_DEBUG( "Need a special update for " << counter << " objects " );
562  }catch (std::exception& e) {
563  ATH_MSG_WARNING( "COOL retrieve attempt " << attempts << " failed: " << e.what() );
564  if (not m_conn->dropAndReconnect()) ATH_MSG_ERROR("Tried reconnecting in loadCacheIfDbChanged but failed");
565  }
566  }
567  return true;
568 }

◆ magicTag()

bool IOVDbFolder::magicTag ( std::string &  tag)
private

Definition at line 1103 of file IOVDbFolder.cxx.

1103  { //alters the argument
1105  return (not tag.empty());
1106 }

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ multiVersion()

bool IOVDbFolder::multiVersion ( ) const
inline

Definition at line 342 of file IOVDbFolder.h.

342 { return m_multiversion; }

◆ noOverride()

bool IOVDbFolder::noOverride ( ) const
inline

Definition at line 348 of file IOVDbFolder.h.

348 { return m_notagoverride; }

◆ objectIteratorIsValid() [1/2]

bool IOVDbFolder::objectIteratorIsValid ( cool::IObjectIteratorPtr &  objItr)
inlineprivate

Definition at line 218 of file IOVDbFolder.h.

218  {
219  return objItr->goToNext();
220  }

◆ objectIteratorIsValid() [2/2]

bool IOVDbFolder::objectIteratorIsValid ( CoraCoolObjectIterPtr objItr)
inlineprivate

Definition at line 223 of file IOVDbFolder.h.

223  {
224  return objItr->hasNext();
225  }

◆ overrideOptionsFromParsedDescription()

bool IOVDbFolder::overrideOptionsFromParsedDescription ( const IOVDbParser parsedDescription)
private

Definition at line 830 of file IOVDbFolder.cxx.

830  {
831  bool success{true};
832  // check for timeStamp indicating folder is timestamp indexed
833  m_timestamp=parsedDescription.timebaseIs_nsOfEpoch();
834  // check for key, giving a different key to the foldername
835  if (auto newkey=parsedDescription.key(); not newkey.empty() and not m_jokey) {
836  ATH_MSG_DEBUG( "Key for folder " << m_foldername << " set to "<< newkey << " from description string" );
837  m_key=newkey;
838  }
839  // check for 'cache' but only if not already found in joboptions
840  if (m_cachepar.empty()) m_cachepar=parsedDescription.cache();
841  // check for cachehint
842  if (int newCachehint=parsedDescription.cachehint();newCachehint!=0) m_cachehint=newCachehint;
843  // check for <named/>
844  m_named=parsedDescription.named();
845  // get addressHeader
846  if (auto newAddrHeader = parsedDescription.addressHeader();not newAddrHeader.empty()){
848  m_addrheader=newAddrHeader;
849  }
850  //get clid, if it exists (set to zero otherwise)
851  m_clid=parsedDescription.classId(msg());
852  // decode the typeName
853  if (!parsedDescription.getKey("typeName","",m_typename)) {
854  ATH_MSG_ERROR( "Primary type name is empty" );
855  return false;
856  }
857  bool gotCLID=(m_clid!=0);
858 
859  ATH_MSG_DEBUG( "Got folder typename " << m_typename );
860  if (!gotCLID)
861  if (StatusCode::SUCCESS==p_clidSvc->getIDOfTypeName(m_typename,m_clid))
862  gotCLID=true;
863  if (!gotCLID) {
864  ATH_MSG_ERROR("Could not get clid for typeName: " << m_typename);
865  return false;
866  }
867  ATH_MSG_DEBUG( "Got folder typename " << m_typename << " with CLID " << m_clid );
868  return success;
869 }

◆ preLoadFolder()

std::unique_ptr< SG::TransientAddress > IOVDbFolder::preLoadFolder ( ITagInfoMgr tagInfoMgr,
const unsigned int  cacheRun,
const unsigned int  cacheTime 
)

Definition at line 891 of file IOVDbFolder.cxx.

891  {
892  // preload Address from SG - does folder setup including COOL access
893  // also set detector store location - cannot be done in constructor
894  // as detector store does not exist yet in IOVDbSvc initialisation
895  // and sets up cache length, taking into account optional overrides
896  // returns null pointer in case of problem
897  p_tagInfoMgr = tagInfoMgr;
898  if( not m_useFileMetaData ) {
899  if(m_source=="CREST"){
900  if (m_crest_tag != m_crestTag){
902  m_tag_info = m_cfunctions.value().getTagInfo(m_crestTag);
903  }
904  m_folderDescription = m_cfunctions.value().folderDescriptionForTag(m_crestTag);
905  } else {
906  //folder desc from db
908  }
909  } else {
910  // folder description from meta-data set already earlier
911  }
912  ATH_MSG_DEBUG( "Folder description for " << m_foldername << ": " << m_folderDescription);
913  // register folder with meta-data tool if writing metadata
914  if (m_writemeta) {
915  if (StatusCode::SUCCESS!=p_metaDataTool->registerFolder(m_foldername,m_folderDescription)) {
916  ATH_MSG_ERROR( "Failed to register folder " << m_foldername<< " for meta-data write" );
917  return nullptr;
918  }
919  }
920  // parse the description string
921  IOVDbParser folderpar(m_folderDescription, msg());
922  //use the overrides in the folderdescription, return nullptr immediately if something went wrong
923  if (not overrideOptionsFromParsedDescription(folderpar)) return nullptr;
924  // setup channel list and folder type
925  if( not m_useFileMetaData ) {
926  if(m_source=="CREST"){
927  const std::string & payloadSpec = m_cfunctions.value().getTagInfoElement(m_tag_info,"payload_spec");
928  std::string chanList = m_cfunctions.value().getTagInfoElement(m_tag_info,"channel_list");
929  std::tie(m_channums, m_channames) = m_cfunctions.value().extractChannelListFromString(chanList);
930 
931  //determine foldertype from the description, the spec and the number of channels
933 
934  if (m_crestToFile){
935  int n_size = m_channums.size();
937  for (int i = 0; i < n_size; i++) {
938 
939  nlohmann::json elem;
940  std::string key = std::to_string(m_channums[i]);
941  elem[key] = m_channames[i];
942  chan_list.push_back(elem);
943  }
944 
945  char ch = ':';
946  int colsize = std::count(payloadSpec.begin(), payloadSpec.end(), ch);
947 
948  nlohmann::json tag_meta;
949  tag_meta["tagName"] = m_crestTag;
950  tag_meta["description"] = "";
951  tag_meta["chansize"] = n_size;
952  tag_meta["colsize"] = colsize;
953 
954  nlohmann::json tagInfo;
955  tagInfo["channel_list"] = chan_list;
956  tagInfo["node_description"] = m_folderDescription;
957  tagInfo["payload_spec"] = payloadSpec;
958 
959  tag_meta["tagInfo"] = tagInfo.dump();
960 
961  std::string crest_work_dir=std::filesystem::current_path();
962  crest_work_dir += "/crest_data";
963  bool crest_rewrite = true;
964 
965  Crest::CrestFsClient crestFSClient = Crest::CrestFsClient(crest_rewrite, crest_work_dir);
966 
967  try{
968  TagMetaDto dto = TagMetaDto();
969  dto = dto.from_json(tag_meta);
970  crestFSClient.createTagMeta(dto);
971 
972  ATH_MSG_INFO("Tag meta info for " << m_crestTag << " saved to disk.");
973  ATH_MSG_INFO("CREST Dump dir = " << crest_work_dir);
974  }
975  catch (const std::exception& e) {
976  ATH_MSG_WARNING("Tag meta info saving for tag " << m_crestTag << " failed: " << e.what());
977  }
978  } // m_crestToFile
979 
980  } else {
981  // data being read from COOL
982  auto fldPtr=m_conn->getFolderPtr<cool::IFolderPtr>(m_foldername);
983  // get the list of channels
985  // set folder type
987  }
988  }
989  m_nchan=m_channums.size();
990  ATH_MSG_DEBUG( "Folder identified as type " << m_foldertype );
991  // note that for folders read from metadata, folder type identification
992  // is deferred until getAddress when first data is read
993  // and channel number/name information is not read
994 
995  // change channel selection for single-object read
996  if (m_foldertype==AttrList || m_foldertype==PoolRef) m_chansel=cool::ChannelSelection(0);
997  const auto & linknameVector = folderpar.symLinks();
998  // now create TAD
999  auto tad{createTransientAddress(linknameVector)};
1000  if (not tad) {
1001  ATH_MSG_WARNING("Transient address is null in "<<__func__);
1002  return nullptr;
1003  }
1004  setCacheLength(m_timestamp, cacheRun, cacheTime);
1005  return tad;
1006 }

◆ printCache()

void IOVDbFolder::printCache ( )

Definition at line 1158 of file IOVDbFolder.cxx.

1158  {
1159  const auto & [since,until] = m_iovs.getCacheBounds();
1160  ATH_MSG_DEBUG("folder cache printout -------------------");
1161  ATH_MSG_DEBUG(m_foldername << " length: "<<m_cachelength<<"\tstart: "<<since<<"\tstop: "<<until);
1162  ATH_MSG_DEBUG("current range: "<<m_currange);
1163  const auto & iovs = m_iovs.vectorStore();
1165  for (const auto & iov:iovs){
1166  ATH_MSG_DEBUG("channelID:\t"<<(*ci++)<<"\t since: "<<iov.first<<"\t until: "<<iov.second);
1167  }
1168  ATH_MSG_DEBUG("folder cache printout -------------------");
1169 
1170 }

◆ readMeta()

bool IOVDbFolder::readMeta ( ) const
inline

Definition at line 358 of file IOVDbFolder.h.

358 { return m_useFileMetaData; }

◆ readTime()

float IOVDbFolder::readTime ( ) const
inline

Definition at line 382 of file IOVDbFolder.h.

383 { return m_readtime; }

◆ resetCache()

void IOVDbFolder::resetCache ( )

Definition at line 624 of file IOVDbFolder.cxx.

624  {
625  // reset the cache to unfilled state, used if no more data will be required
626  // from this folder
628  clearCache();
629 }

◆ resolvedTag()

const std::string & IOVDbFolder::resolvedTag ( ) const
inline

Definition at line 372 of file IOVDbFolder.h.

372 { return m_tag; }

◆ resolveTag()

bool IOVDbFolder::resolveTag ( const cool::IFolderPtr &  fptr,
const std::string &  globalTag 
)
private

Definition at line 1046 of file IOVDbFolder.cxx.

1046  {
1047  // resolve the tag
1048  // if specified in job options or already-processed override use that,
1049  // else use global tag
1050  // return false for failure
1051  std::string tag=m_jotag;
1052  if (tag=="HEAD") return true;
1053  if (tag.empty()) tag=globalTag;
1054  if (tag.empty()) {
1055  ATH_MSG_ERROR( "No IOVDbSvc.GlobalTag specified on job options or input file" );
1056  return false;
1057  }
1058  if(m_source=="CREST"){
1059 
1060  m_tag = m_crestTag;
1061 
1062  ATH_MSG_DEBUG( "resolveTag returns " << m_tag );
1063  return true;
1064  }
1065  // check for magic tags
1066  if (IOVDbNamespace::looksLikeMagicTag(tag) and not magicTag(tag)) return false;
1067  // check tag exists - if not, lookup hierarchically
1068  const std::vector<std::string>& taglist=fptr->listTags();
1069  if (find(taglist.begin(),taglist.end(),tag)!=taglist.end()) {
1070  // tag exists directly in folder
1071  ATH_MSG_DEBUG( "Using tag "<< tag << " for folder " << m_foldername );
1072  } else {
1073  // tag maybe an HVS tag
1074  try {
1075  std::string restag=fptr->resolveTag(tag);
1076  ATH_MSG_INFO( "HVS tag " << tag << " resolved to "<< restag << " for folder " << m_foldername );
1077  // HVS tag may itself be magic
1078  if (IOVDbNamespace::looksLikeMagicTag(restag) and not magicTag(restag)) return false;
1079  tag=restag;
1080  }catch (cool::Exception& e) {
1081  ATH_MSG_ERROR( "Tag " << tag <<" cannot be resolved for folder " << m_foldername );
1082  return false;
1083  }
1084  }
1085  m_tag=tag;
1086  // optionally check if tag is locked
1087  if (m_checklock) {
1088  const auto tagLock=IOVDbNamespace::checkTagLock(fptr,tag);
1089  if (not tagLock.has_value()){
1090  ATH_MSG_ERROR( "Could not check tag lock status for " << tag );
1091  return false;
1092  }
1093  if (not tagLock.value()){
1094  ATH_MSG_ERROR("Tag " << tag <<" is not locked and IOVDbSvc.CheckLock is set" );
1095  return false;
1096  }
1097  }
1098  ATH_MSG_DEBUG( "resolveTag returns " << m_tag );
1099  return true;
1100 }

◆ retrieved()

bool IOVDbFolder::retrieved ( ) const
inline

Definition at line 350 of file IOVDbFolder.h.

350 { return m_retrieved; }

◆ setCacheLength()

void IOVDbFolder::setCacheLength ( const bool  timeIs_nsOfEpoch,
const unsigned int  cacheRun,
const unsigned int  cacheTime 
)
private

Definition at line 1008 of file IOVDbFolder.cxx.

1008  {
1009  if (timeIs_nsOfEpoch){
1010  long long int clen=600; // default value of 10 minutes
1011  if (cacheTime!=0) {
1012  clen=cacheTime;
1013  m_autocache=false;
1014  } else {
1015  // for timestamp, cache parameter (if set) sets length in seconds
1016  if (not m_cachepar.empty()) clen=std::stoi(m_cachepar);
1017  }
1019  ATH_MSG_DEBUG( "Cache length set to " << clen << " seconds" );
1020  } else {
1021  // for run/event, cache parameter sets length in LB
1022  // default value is 1 whole run
1024  if (cacheRun!=0) {
1026  m_autocache=false;
1027  } else {
1028  if (not m_cachepar.empty()) m_cachelength=std::stoi(m_cachepar);
1029  }
1031  ATH_MSG_DEBUG( "Cache length set to " << run <<" runs " << lumi << " lumiblocks" );
1032  }
1033 }

◆ setDropped()

void IOVDbFolder::setDropped ( const bool  dropped)
inline

Definition at line 393 of file IOVDbFolder.h.

393 { m_dropped=dropped; }

◆ setFolderDescription()

void IOVDbFolder::setFolderDescription ( const std::string &  description)
inline

Definition at line 355 of file IOVDbFolder.h.

◆ setIOVOverride()

void IOVDbFolder::setIOVOverride ( const unsigned int  run,
const unsigned int  lumiblock,
const unsigned int  time 
)

Definition at line 190 of file IOVDbFolder.cxx.

192  {
193  // set IOV override for this folder if run!=0 or time!=0
194  // folder-specific override takes precedence if set
195  if (m_iovoverridden) return;
196  if (m_timestamp) {
197  if (time!=0) {
199  ATH_MSG_INFO( "Override timestamp to " << m_iovoverride << " for folder "<< m_foldername );
200  m_iovoverridden=true;
201  }
202  } else {
203  if (run!=0 || lumiblock!=0) {
205  ATH_MSG_INFO( "Override run/LB number to [" << run << ":" << lumiblock <<
206  "] for folder " << m_foldername );
207  m_iovoverridden=true;
208  }
209  }
210 }

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level  lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29 {
30  m_lvl = lvl;
31 }

◆ setSharedSpec()

void IOVDbFolder::setSharedSpec ( const coral::AttributeList &  atrlist)
private

Definition at line 1137 of file IOVDbFolder.cxx.

1137  {
1138  m_cachespec=new coral::AttributeListSpecification;
1139  for (const auto & attribute:atrlist){
1140  const coral::AttributeSpecification& aspec=attribute.specification();
1141  m_cachespec->extend(aspec.name(),aspec.type());
1142  if (not typeSizeIsKnown(attribute)) {
1143  ATH_MSG_WARNING( "addType: unknown type " << aspec.typeName()<<
1144  " in folder " << m_foldername << " will not be counted for bytes-read statistics" );
1145  }
1146  }
1147  ATH_MSG_DEBUG( "Setup shared AttributeListSpecification with " << m_cachespec->size() << " elements" );
1148 }

◆ setTagOverride()

void IOVDbFolder::setTagOverride ( const std::string &  tag,
const bool  setFlag 
)

Definition at line 175 of file IOVDbFolder.cxx.

175  {
176  if (m_tagoverride) {
177  ATH_MSG_WARNING( "Request to override tag for folder " <<
178  m_foldername << " to " << tag << " supercedes earlier override to " << m_jotag );
179  } else {
180  if (setFlag) m_tagoverride=true;
181  }
183 }

◆ setWriteMeta()

void IOVDbFolder::setWriteMeta ( )

Definition at line 185 of file IOVDbFolder.cxx.

185  {
186  m_writemeta=true;
187 }

◆ specialCacheUpdate() [1/2]

void IOVDbFolder::specialCacheUpdate ( const cool::IObject &  obj,
const ServiceHandle< IIOVSvc > &  iovSvc 
)
private

Definition at line 597 of file IOVDbFolder.cxx.

597  {
598 
599  // reset IOVRange in IOVSvc to trigger reset of object. Set to a
600  // time earlier than since.
601  IOVRange range = IOVDbNamespace::makeRange(ref.since()-2, ref.since()-1, m_timestamp);
602  if (StatusCode::SUCCESS != iovSvc->setRange(clid(), key(), range, eventStore())) {
603  ATH_MSG_ERROR( "IOVDbFolder::specialCacheUpdate - setRange failed for folder "
604  << folderName() );
605  return;
606  }
607  // add new object.
608  addIOVtoCache(ref.since(),ref.until());
609  m_cachechan.push_back(ref.channelId());
610  const coral::AttributeList& atrlist = ref.payload().attributeList();
611  // use the shared specification in storing the payload
612  const unsigned int istart=m_cacheattr.size();
613  m_cacheattr.emplace_back(*m_cachespec,true);// maybe needs to be cleared before
614  m_cacheattr.back().fastCopyData(atrlist);
616  if (m_foldertype==CoolVector) {
617  // save pointers to start and end
618  m_cacheccstart.push_back(istart);
619  m_cacheccend.push_back(m_cacheattr.size());
620  }
621 }

◆ specialCacheUpdate() [2/2]

void IOVDbFolder::specialCacheUpdate ( CoraCoolObject obj,
const ServiceHandle< IIOVSvc > &  iovSvc 
)
private

Definition at line 571 of file IOVDbFolder.cxx.

571  {
572 
573  // reset IOVRange in IOVSvc to trigger reset of object. Set to a
574  // time earlier than since.
575  IOVRange range = IOVDbNamespace::makeRange(obj.since()-2, obj.since()-1, m_timestamp);
576  if (StatusCode::SUCCESS != iovSvc->setRange(clid(), key(), range, eventStore())) {
577  ATH_MSG_ERROR( "IOVDbFolder::specialCacheUpdate - setRange failed for folder "
578  << folderName() );
579  return;
580  }
581  addIOVtoCache(obj.since(),obj.until());
582  m_cachechan.push_back(obj.channelId());
583  // store all the attributeLists in the buffer save pointer to start
584  const unsigned int istart=m_cacheattr.size();
585  for (CoraCoolObject::const_iterator pitr=obj.begin(); pitr!=obj.end();++pitr) {
586  // use the shared specification in storing the payload
587  m_cacheattr.emplace_back(*m_cachespec,true);
588  m_cacheattr.back().fastCopyData(*pitr);
590  }
591  // save pointers to start and end
592  m_cacheccstart.push_back(istart);
593  m_cacheccend.push_back(m_cacheattr.size());
594 }

◆ summary()

void IOVDbFolder::summary ( )

Definition at line 815 of file IOVDbFolder.cxx.

815  {
817  // summarise the read statistics for this folder
818  ATH_MSG_INFO( "Folder " << m_foldername << " ("<<folderTypeName
819  << ") db-read " << m_ndbread << "/" <<
820  m_ncacheread << " objs/chan/bytes " << m_nobjread << "/" <<
821  m_nchan << "/" << m_nbytesread << " (( " << std::fixed << std::setw(8)
822  << std::setprecision(2) << m_readtime << " ))s" );
823  // print WARNING if data for this folder was never read from Storegate
824  if (m_ncacheread==0 && m_ndbread>0) {
825  ATH_MSG_WARNING( "Folder " << m_foldername << " is requested but no data retrieved" );
826  }
827 }

◆ tagOverride()

bool IOVDbFolder::tagOverride ( ) const
inline

Definition at line 346 of file IOVDbFolder.h.

346 { return m_tagoverride; }

◆ timeStamp()

bool IOVDbFolder::timeStamp ( ) const
inline

Definition at line 344 of file IOVDbFolder.h.

344 { return m_timestamp; }

◆ useFileMetaData()

void IOVDbFolder::useFileMetaData ( )

Definition at line 164 of file IOVDbFolder.cxx.

164  {
165  // enable folder from FLMD at given connection
166  m_useFileMetaData = true;
167  // if previously connected to a real DB connection, remove association
168  if (m_conn!=nullptr) {
169  m_conn->decUsage();
170  m_conn=nullptr;
171  }
172 }

◆ writeMeta()

bool IOVDbFolder::writeMeta ( ) const
inline

Definition at line 360 of file IOVDbFolder.h.

360 { return m_writemeta; }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_addrheader

std::string IOVDbFolder::m_addrheader
private

Definition at line 300 of file IOVDbFolder.h.

◆ m_autocache

bool IOVDbFolder::m_autocache {true}
private

Definition at line 281 of file IOVDbFolder.h.

◆ m_cacheattr

std::vector<coral::AttributeList> IOVDbFolder::m_cacheattr
private

Definition at line 321 of file IOVDbFolder.h.

◆ m_cacheccend

std::vector<unsigned int> IOVDbFolder::m_cacheccend
private

Definition at line 323 of file IOVDbFolder.h.

◆ m_cacheccstart

std::vector<unsigned int> IOVDbFolder::m_cacheccstart
private

Definition at line 322 of file IOVDbFolder.h.

◆ m_cachechan

std::vector<cool::ChannelId> IOVDbFolder::m_cachechan
private

Definition at line 320 of file IOVDbFolder.h.

◆ m_cachehint

int IOVDbFolder::m_cachehint {0}
private

Definition at line 287 of file IOVDbFolder.h.

◆ m_cacheinc

int IOVDbFolder::m_cacheinc {0}
private

Definition at line 288 of file IOVDbFolder.h.

◆ m_cachelength

cool::ValidityKey IOVDbFolder::m_cachelength {0}
private

Definition at line 286 of file IOVDbFolder.h.

◆ m_cachepar

std::string IOVDbFolder::m_cachepar
private

Definition at line 299 of file IOVDbFolder.h.

◆ m_cachespec

coral::AttributeListSpecification* IOVDbFolder::m_cachespec {nullptr}
private

Definition at line 319 of file IOVDbFolder.h.

◆ m_cfunctions

std::optional<IOVDbNamespace::CrestFunctions> IOVDbFolder::m_cfunctions
private

Definition at line 334 of file IOVDbFolder.h.

◆ m_channames

std::vector<std::string> IOVDbFolder::m_channames
private

Definition at line 312 of file IOVDbFolder.h.

◆ m_channums

std::vector<cool::ChannelId> IOVDbFolder::m_channums
private

Definition at line 311 of file IOVDbFolder.h.

◆ m_chanrange

std::vector<ChanRange> IOVDbFolder::m_chanrange
private

Definition at line 292 of file IOVDbFolder.h.

◆ m_chansel

cool::ChannelSelection IOVDbFolder::m_chansel
private

Definition at line 290 of file IOVDbFolder.h.

◆ m_checklock

bool IOVDbFolder::m_checklock {true}
private

Definition at line 282 of file IOVDbFolder.h.

◆ m_clid

CLID IOVDbFolder::m_clid {0}
private

Definition at line 301 of file IOVDbFolder.h.

◆ m_conn

IOVDbConn* IOVDbFolder::m_conn {nullptr}
private

Definition at line 265 of file IOVDbFolder.h.

◆ m_crest_tag

std::string IOVDbFolder::m_crest_tag = ""
private

Definition at line 331 of file IOVDbFolder.h.

◆ m_crestCoolToFile

const bool IOVDbFolder::m_crestCoolToFile {false}
private

Definition at line 327 of file IOVDbFolder.h.

◆ m_crestServer

const std::string IOVDbFolder::m_crestServer
private

Definition at line 329 of file IOVDbFolder.h.

◆ m_crestTag

const std::string IOVDbFolder::m_crestTag
private

Definition at line 330 of file IOVDbFolder.h.

◆ m_crestToFile

const bool IOVDbFolder::m_crestToFile {false}
private

Definition at line 326 of file IOVDbFolder.h.

◆ m_currange

IOVRange IOVDbFolder::m_currange
private

Definition at line 316 of file IOVDbFolder.h.

◆ m_dropped

bool IOVDbFolder::m_dropped {false}
private

Definition at line 280 of file IOVDbFolder.h.

◆ m_eventstore

std::string IOVDbFolder::m_eventstore
private

Definition at line 298 of file IOVDbFolder.h.

◆ m_extensible

bool IOVDbFolder::m_extensible {false}
private

Definition at line 276 of file IOVDbFolder.h.

◆ m_folderDescription

std::string IOVDbFolder::m_folderDescription
private

Definition at line 268 of file IOVDbFolder.h.

◆ m_foldername

std::string IOVDbFolder::m_foldername
private

Definition at line 266 of file IOVDbFolder.h.

◆ m_foldertype

IOVDbNamespace::FolderType IOVDbFolder::m_foldertype
private

Definition at line 284 of file IOVDbFolder.h.

◆ m_fromMetaDataOnly

bool IOVDbFolder::m_fromMetaDataOnly {false}
private

Definition at line 275 of file IOVDbFolder.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_iovoverridden

bool IOVDbFolder::m_iovoverridden {false}
private

Definition at line 278 of file IOVDbFolder.h.

◆ m_iovoverride

cool::ValidityKey IOVDbFolder::m_iovoverride {0}
private

Definition at line 283 of file IOVDbFolder.h.

◆ m_iovs

IOVDbNamespace::IovStore IOVDbFolder::m_iovs
private

Definition at line 324 of file IOVDbFolder.h.

◆ m_jokey

bool IOVDbFolder::m_jokey {false}
private

Definition at line 279 of file IOVDbFolder.h.

◆ m_jotag

std::string IOVDbFolder::m_jotag
private

Definition at line 295 of file IOVDbFolder.h.

◆ m_key

std::string IOVDbFolder::m_key
private

Definition at line 267 of file IOVDbFolder.h.

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_multiversion

bool IOVDbFolder::m_multiversion {false}
private

Definition at line 269 of file IOVDbFolder.h.

◆ m_named

bool IOVDbFolder::m_named {false}
private

Definition at line 277 of file IOVDbFolder.h.

◆ m_nbytesread

unsigned long long IOVDbFolder::m_nbytesread {0}
private

Definition at line 306 of file IOVDbFolder.h.

◆ m_ncacheread

unsigned int IOVDbFolder::m_ncacheread {0}
private

Definition at line 304 of file IOVDbFolder.h.

◆ m_nchan

unsigned int IOVDbFolder::m_nchan {0}
private

Definition at line 310 of file IOVDbFolder.h.

◆ m_ndbread

unsigned int IOVDbFolder::m_ndbread {0}
private

Definition at line 303 of file IOVDbFolder.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_nobjread

unsigned int IOVDbFolder::m_nobjread {0}
private

Definition at line 305 of file IOVDbFolder.h.

◆ m_notagoverride

bool IOVDbFolder::m_notagoverride {false}
private

Definition at line 272 of file IOVDbFolder.h.

◆ m_outputToFile

const bool IOVDbFolder::m_outputToFile {false}
private

Definition at line 325 of file IOVDbFolder.h.

◆ m_readtime

float IOVDbFolder::m_readtime {0}
private

Definition at line 307 of file IOVDbFolder.h.

◆ m_retrieved

bool IOVDbFolder::m_retrieved {false}
private

Definition at line 315 of file IOVDbFolder.h.

◆ m_source

const std::string IOVDbFolder::m_source
private

Definition at line 328 of file IOVDbFolder.h.

◆ m_tag

std::string IOVDbFolder::m_tag
private

Definition at line 296 of file IOVDbFolder.h.

◆ m_tag_info

nlohmann::json IOVDbFolder::m_tag_info = nullptr
private

Definition at line 332 of file IOVDbFolder.h.

◆ m_tagoverride

bool IOVDbFolder::m_tagoverride {false}
private

Definition at line 271 of file IOVDbFolder.h.

◆ m_timestamp

bool IOVDbFolder::m_timestamp {false}
private

Definition at line 270 of file IOVDbFolder.h.

◆ m_typename

std::string IOVDbFolder::m_typename
private

Definition at line 297 of file IOVDbFolder.h.

◆ m_useFileMetaData

bool IOVDbFolder::m_useFileMetaData {false}
private

Definition at line 274 of file IOVDbFolder.h.

◆ m_writemeta

bool IOVDbFolder::m_writemeta {false}
private

Definition at line 273 of file IOVDbFolder.h.

◆ p_clidSvc

IClassIDSvc* IOVDbFolder::p_clidSvc {nullptr}
private

Definition at line 263 of file IOVDbFolder.h.

◆ p_metaDataTool

IIOVDbMetaDataTool* IOVDbFolder::p_metaDataTool {nullptr}
private

Definition at line 264 of file IOVDbFolder.h.

◆ p_tagInfoMgr

ITagInfoMgr* IOVDbFolder::p_tagInfoMgr {nullptr}
private

Definition at line 262 of file IOVDbFolder.h.


The documentation for this class was generated from the following files:
IOVDbFolder::m_dropped
bool m_dropped
Definition: IOVDbFolder.h:280
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
CondAttrListCollection::minRange
const IOVRange & minRange() const
Current minimal IOVRange.
Definition: CondAttrListCollection.h:438
IOVDbNamespace::IovStore::extendIov
void extendIov(const unsigned int idx, const cool::ValidityKey &newUntilTime)
Extend a specific iov at the index to a new 'until' time.
Definition: IovStore.cxx:77
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
IOVDbParser::noTagOverride
bool noTagOverride() const
Definition: IOVDbParser.cxx:217
IOVDbNamespace::spaceStrip
std::string spaceStrip(const std::string &input)
Trim leading and trailing spaces,return a new trimmed string.
Definition: IOVDbStringFunctions.cxx:11
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
IOVDbFolder::m_outputToFile
const bool m_outputToFile
Definition: IOVDbFolder.h:325
CxxUtils::span
span(T *ptr, std::size_t sz) -> span< T >
A couple needed deduction guides.
IOVDbFolder::m_cacheccend
std::vector< unsigned int > m_cacheccend
Definition: IOVDbFolder.h:323
IOVDbNamespace::Cool2Json
Definition: Cool2Json.h:26
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
sendEI_SPB.ch
ch
Definition: sendEI_SPB.py:35
IOVDbFolder::m_crestCoolToFile
const bool m_crestCoolToFile
Definition: IOVDbFolder.h:327
IOVDbFolder::m_useFileMetaData
bool m_useFileMetaData
Definition: IOVDbFolder.h:274
IOVDbFolder::magicTag
bool magicTag(std::string &tag)
Definition: IOVDbFolder.cxx:1103
IOVDbFolder::dropped
bool dropped() const
Definition: IOVDbFolder.h:366
get_generator_info.result
result
Definition: get_generator_info.py:21
IOVDbFolder::m_checklock
bool m_checklock
Definition: IOVDbFolder.h:282
IOVDbFolder::p_metaDataTool
IIOVDbMetaDataTool * p_metaDataTool
Definition: IOVDbFolder.h:264
dqt_zlumi_alleff_HIST.iov
iov
Definition: dqt_zlumi_alleff_HIST.py:119
IOVDbFolder::m_foldername
std::string m_foldername
Definition: IOVDbFolder.h:266
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
Crest::CrestFsClient::createTagMeta
void createTagMeta(TagMetaDto &tag) override
This method creates a tag meta info on the file storage.
Definition: CrestApiFs.cxx:379
IOVDbFolder::m_tagoverride
bool m_tagoverride
Definition: IOVDbFolder.h:271
IOVDbFolder::conn
IOVDbConn * conn()
Definition: IOVDbFolder.h:340
IOVDbFolder::m_retrieved
bool m_retrieved
Definition: IOVDbFolder.h:315
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
IOVDbFolder::m_ncacheread
unsigned int m_ncacheread
Definition: IOVDbFolder.h:304
python.MagFieldUtils.lumiblock
lumiblock
Definition: MagFieldUtils.py:188
IOVDbFolder::fetchCrestObjects
std::vector< IOVDbNamespace::BasicFolder > fetchCrestObjects(cool::ValidityKey since, cool::ValidityKey until, bool vectorPayloadFlag, cool::ValidityKey vkey, const std::string &nodeDesc)
Definition: IOVDbFolder.cxx:1252
IOVDbNamespace::IovStore::vectorStore
std::vector< Iov_t > & vectorStore()
Return the internal vector store.
Definition: IovStore.cxx:64
json
nlohmann::json json
Definition: HistogramDef.cxx:9
IOVDbFolder::m_cfunctions
std::optional< IOVDbNamespace::CrestFunctions > m_cfunctions
Definition: IOVDbFolder.h:334
IOVDbParser::cachehint
int cachehint() const
Definition: IOVDbParser.cxx:168
IOVDbFolder::m_jokey
bool m_jokey
Definition: IOVDbFolder.h:279
find_tgc_unfilled_channelids.iovs
iovs
Definition: find_tgc_unfilled_channelids.py:12
IOVDbNamespace::IovStore::getMinimumStraddlingSpan
Iov_t getMinimumStraddlingSpan() const
Get the minimum straddling span (max 'since' to min 'until')
Definition: IovStore.cxx:45
CondAttrListCollection::addNewStop
void addNewStop(const IOVTime &stop)
Add new stop time to minRange - make sure that stop is <= to new stop
Definition: CondAttrListCollection.h:518
IOVDbConn::open
bool open()
Definition: IOVDbConn.cxx:68
python.LArRawChannelBuilderCrestConfig.crestServer
crestServer
Definition: LArRawChannelBuilderCrestConfig.py:118
IOVDbFolder::m_crestTag
const std::string m_crestTag
Definition: IOVDbFolder.h:330
IOVDbFolder::m_crestServer
const std::string m_crestServer
Definition: IOVDbFolder.h:329
IOVDbNamespace::ALL_LUMI_BLOCKS
constexpr unsigned long long ALL_LUMI_BLOCKS
All the lumi blocks in one run.
Definition: IOVDbCoolFunctions.h:36
IOVDbNamespace::IovStore::numberOfIovsOnBoundaries
std::pair< unsigned int, unsigned int > numberOfIovsOnBoundaries() const
Return the current count of added Iovs which straddled cache boundaries.
Definition: IovStore.cxx:51
IOVDbFolder::m_currange
IOVRange m_currange
Definition: IOVDbFolder.h:316
IOVDbConn::name
const std::string & name() const
Definition: IOVDbConn.h:70
IOVDbFolder::m_cacheinc
int m_cacheinc
Definition: IOVDbFolder.h:288
IOVDbNamespace::IovStore::clear
void clear()
clear the store
Definition: IovStore.cxx:56
IOVDbFolder::createTransientAddress
std::unique_ptr< SG::TransientAddress > createTransientAddress(const std::vector< std::string > &symlinks)
Definition: IOVDbFolder.cxx:872
IIOVDbMetaDataTool::registerFolder
virtual StatusCode registerFolder(const std::string &folderName, const std::string &folderDescription) const =0
Register folder in the IOV Db MetaData.
IOVDbNamespace::IovStore::size
unsigned int size() const
length of store
Definition: IovStore.h:45
Cut::all
@ all
Definition: SUSYToolsAlg.cxx:67
IOVDbFolder::specialCacheUpdate
void specialCacheUpdate(CoraCoolObject &obj, const ServiceHandle< IIOVSvc > &iovSvc)
Definition: IOVDbFolder.cxx:571
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
IOVDbParser::onlyReadMetadata
bool onlyReadMetadata() const
Definition: IOVDbParser.cxx:179
run
int run(int argc, char *argv[])
Definition: ttree2hdf5.cxx:28
IOVDbFolder::m_tag_info
nlohmann::json m_tag_info
Definition: IOVDbFolder.h:332
IOVDbFolder::m_cachelength
cool::ValidityKey m_cachelength
Definition: IOVDbFolder.h:286
CheckTagAssociation.taglist
taglist
Definition: CheckTagAssociation.py:103
IOVDbNamespace::PoolRefColl
@ PoolRefColl
Definition: FolderTypes.h:31
CondAttrListCollection::addNewStart
void addNewStart(const IOVTime &start)
Add new start time to minRange - make sure that start is >= to new start.
Definition: CondAttrListCollection.h:508
IOVDbNamespace::iovTimeFromSeconds
unsigned long long iovTimeFromSeconds(const unsigned long long seconds)
Create a long long time in ns from s.
Definition: IOVDbCoolFunctions.cxx:98
IOVDbFolder::m_tag
std::string m_tag
Definition: IOVDbFolder.h:296
IOVDbFolder::eventStore
const std::string & eventStore() const
Definition: IOVDbFolder.h:374
IOVDbFolder::m_chansel
cool::ChannelSelection m_chansel
Definition: IOVDbFolder.h:290
IOVDbFolder::fetchCrestIOVs
std::vector< IOVHash > fetchCrestIOVs(cool::ValidityKey since, cool::ValidityKey until)
Definition: IOVDbFolder.cxx:1172
IOVDbNamespace::PoolRef
@ PoolRef
Definition: FolderTypes.h:30
IOVDbParser::overridesIov
bool overridesIov(MsgStream &msg) const
return true if this description overrides the timestamp or runlumi
Definition: IOVDbParser.cxx:262
TagDto::from_json
static TagDto from_json(const json &j)
Definition: CrestModel.cxx:188
IOVDbConn::valid
bool valid() const
Definition: IOVDbConn.h:60
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
IOVDbFolder::p_tagInfoMgr
ITagInfoMgr * p_tagInfoMgr
Definition: IOVDbFolder.h:262
IOVDbFolder::m_fromMetaDataOnly
bool m_fromMetaDataOnly
Definition: IOVDbFolder.h:275
IOVDbNamespace::makeEpochOrRunLumi
IOVTime makeEpochOrRunLumi(const cool::ValidityKey key, const bool timeIsEpoch)
Create an IOVTime in ns of epoch or run-lumi (determined by the bool) from a ValidityKey.
Definition: IOVDbCoolFunctions.cxx:87
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
IOVDbNamespace::IovStore::Iov_t
std::pair< cool::ValidityKey, cool::ValidityKey > Iov_t
Definition: IovStore.h:22
IOVDbFolder::setSharedSpec
void setSharedSpec(const coral::AttributeList &atrlist)
Definition: IOVDbFolder.cxx:1137
makeDTCalibBlob_pickPhase.globalTag
globalTag
Definition: makeDTCalibBlob_pickPhase.py:398
IOVDbParser::named
bool named() const
Definition: IOVDbParser.cxx:174
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
Crest::CrestFsClient::createTag
void createTag(TagDto &tag) override
This method creates a tag on the file storage.
Definition: CrestApiFs.cxx:233
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
TagMetaDto
Definition: CrestModel.h:238
IOVDbNamespace::replaceServiceType71
bool replaceServiceType71(std::string &addrHeader)
Definition: IOVDbStringFunctions.cxx:212
IOVDbFolder::folderName
const std::string & folderName() const
Definition: IOVDbFolder.h:337
IOVDbConn::getFolderPtr
T getFolderPtr(const std::string &folderName)
Definition: IOVDbConn.h:43
IOVDbFolder::m_foldertype
IOVDbNamespace::FolderType m_foldertype
Definition: IOVDbFolder.h:284
dq_defect_copy_defect_database.since
def since
Definition: dq_defect_copy_defect_database.py:54
IOVDbNamespace::Json2Cool
Produces cool objects from their JSON representation, storing them in a 'BasicFolder'.
Definition: Json2Cool.h:28
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
dq_defect_copy_defect_database.until
def until
Definition: dq_defect_copy_defect_database.py:55
AthMessaging::setLevel
void setLevel(MSG::Level lvl)
Change the current logging level.
Definition: AthMessaging.cxx:28
IOVDbFolder::m_addrheader
std::string m_addrheader
Definition: IOVDbFolder.h:300
AthMessaging::AthMessaging
AthMessaging()
Default constructor:
CoraCoolObject::const_iterator
AttrListVec::const_iterator const_iterator
Definition: CoraCoolObject.h:23
IOVDbFolder::clid
CLID clid() const
Definition: IOVDbFolder.h:377
python.AthDsoLogger.delimiter
delimiter
Definition: AthDsoLogger.py:71
IOVDbFolder::m_readtime
float m_readtime
Definition: IOVDbFolder.h:307
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
IOVDbFolder::m_jotag
std::string m_jotag
Definition: IOVDbFolder.h:295
IOVDbFolder::m_iovoverride
cool::ValidityKey m_iovoverride
Definition: IOVDbFolder.h:283
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
IOVDbParser::extensible
bool extensible() const
Definition: IOVDbParser.cxx:184
IOVDbFolder::addMetaAttrListColl
bool addMetaAttrListColl(const CondAttrListCollection *coll)
Definition: IOVDbFolder.cxx:1123
python.AppMgr.iadd
def iadd(self, tool)
associator for public tools -------------------------------------------—
Definition: AppMgr.py:29
IOVDbFolder::p_clidSvc
IClassIDSvc * p_clidSvc
Definition: IOVDbFolder.h:263
CondAttrListVec
Definition: CondAttrListVec.h:31
lumiFormat.i
int i
Definition: lumiFormat.py:85
IOVDbNamespace::checkTagLock
std::optional< bool > checkTagLock(const cool::IFolderPtr &fptr, const std::string &tag)
Check whether a tag is locked on a folder, if possible.
Definition: TagFunctions.cxx:43
IOVDbNamespace::CrestFunctions
Definition: CrestFunctions.h:31
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
IOVDbFolder::m_cachehint
int m_cachehint
Definition: IOVDbFolder.h:287
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
IOVDbFolder::m_clid
CLID m_clid
Definition: IOVDbFolder.h:301
IOVDbFolder::m_cachepar
std::string m_cachepar
Definition: IOVDbFolder.h:299
TagDto
The TagDto class It contains all fields of the TagDto class from the CREST API.
Definition: CrestModel.h:98
IOVDbFolder::m_channames
std::vector< std::string > m_channames
Definition: IOVDbFolder.h:312
IOVDbParser::cache
std::string cache() const
Definition: IOVDbParser.cxx:163
calibdata.exception
exception
Definition: calibdata.py:496
IOVDbFolder::m_iovs
IOVDbNamespace::IovStore m_iovs
Definition: IOVDbFolder.h:324
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
IOVDbNamespace::IovStore::getCacheBounds
Iov_t getCacheBounds() const
Report the current cache bounds.
Definition: IovStore.cxx:31
IOVDbNamespace::CoolVector
@ CoolVector
Definition: FolderTypes.h:33
IOVDbFolder::m_iovoverridden
bool m_iovoverridden
Definition: IOVDbFolder.h:278
IOVDbNamespace::CoraCool
@ CoraCool
Definition: FolderTypes.h:32
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
AthenaAttributeList
An AttributeList represents a logical row of attributes in a metadata table. The name and type of eac...
Definition: PersistentDataModel/PersistentDataModel/AthenaAttributeList.h:45
IOVDbFolder::m_crest_tag
std::string m_crest_tag
Definition: IOVDbFolder.h:331
IOVDbFolder::m_autocache
bool m_autocache
Definition: IOVDbFolder.h:281
run
Definition: run.py:1
IOVDbNamespace::channelList
std::pair< std::vector< cool::ChannelId >, std::vector< std::string > > channelList(IOVDbConn *pConnection, const std::string &folderName, const bool named)
Retrieve channel information.
Definition: IOVDbCoolFunctions.cxx:160
IOVDbNamespace::BasicFolder::empty
bool empty() const
Definition: BasicFolder.cxx:31
IOVDbNamespace::IovStore::setCacheBounds
void setCacheBounds(const Iov_t &cacheBounds)
Set the cache bound variables.
Definition: IovStore.cxx:36
fptr
std::vector< TFile * > fptr
Definition: hcg.cxx:48
HLT::setFlag
void setFlag(TrigPassFlags *flags, const T *obj, const CONTAINER *container, const std::vector< bool > &flag)
Set the flag at index position.
Definition: TrigPassFlags.h:121
IOVDbFolder::m_folderDescription
std::string m_folderDescription
Definition: IOVDbFolder.h:268
IOVDbNamespace::AttrListColl
@ AttrListColl
Definition: FolderTypes.h:29
IOVDbParser::iovOverrideValue
unsigned long long iovOverrideValue(MsgStream &msg) const
Definition: IOVDbParser.cxx:301
IOVDbFolder::m_source
const std::string m_source
Definition: IOVDbFolder.h:328
StoreSetDto::from_json
static StoreSetDto from_json(const json &j)
Definition: CrestModel.cxx:596
IIOVDbMetaDataTool::addPayload
virtual StatusCode addPayload(const std::string &folderName, CondAttrListCollection *payload) const =0
Add an IOV and Payload for a particular folder - replaces payloads if there is an IOV overlap.
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
IOVDbParser::key
std::string key() const
Definition: IOVDbParser.cxx:138
CoraCoolFolderPtr
boost::shared_ptr< CoraCoolFolder > CoraCoolFolderPtr
Definition: CoraCoolTypes.h:15
IOVDbFolder::addMetaAttrList
bool addMetaAttrList(const coral::AttributeList &atrlist, const IOVRange &range)
Definition: IOVDbFolder.cxx:1111
IOVDbFolder::m_writemeta
bool m_writemeta
Definition: IOVDbFolder.h:273
IOVDbFolder::addIOVtoCache
void addIOVtoCache(cool::ValidityKey since, cool::ValidityKey until)
Definition: IOVDbFolder.cxx:1151
grepfile.ic
int ic
Definition: grepfile.py:33
IOVDbParser::tag
std::string tag() const
Definition: IOVDbParser.cxx:148
lumiFormat.array
array
Definition: lumiFormat.py:91
IOVDbFolder::dumpFile
void dumpFile(const std::string &dumpName, const cool::ValidityKey &vkey, IOVDbNamespace::Cool2Json *json, bool skipCoolIoV, IOVDbNamespace::BasicFolder *basicFolder, const std::string &crestNodeDescr, const std::string &specString) const
Definition: IOVDbFolder.cxx:1207
CoraCoolDatabasePtr
boost::shared_ptr< CoraCoolDatabase > CoraCoolDatabasePtr
Definition: CoraCoolTypes.h:12
IOVDbNamespace::makeRange
IOVRange makeRange(const cool::ValidityKey since, const cool::ValidityKey until, const bool timeIsEpoch)
Make an IOVRange from two validity keys.
Definition: IOVDbCoolFunctions.cxx:113
IOVDbNamespace::IovStore::addIov
void addIov(const Iov_t &iov)
Add an iov to the store and update the span variables.
Definition: IovStore.cxx:16
IOVDbNamespace::BasicFolder
Definition: BasicFolder.h:21
IOVDbParser::getKey
bool getKey(const std::string &key, const std::string &devvalue, std::string &value) const
original 'getKey' method, now implemented using 'at'
Definition: IOVDbParser.cxx:108
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
IOVDbParser
Definition: IOVDbParser.h:19
IOVDbNamespace::sanitiseFilename
std::string sanitiseFilename(const std::string &fname)
Replace the '/' of a file path with '^'.
Definition: IOVDbStringFunctions.cxx:110
IOVDbFolder::m_chanrange
std::vector< ChanRange > m_chanrange
Definition: IOVDbFolder.h:292
IOVDbFolder::m_channums
std::vector< cool::ChannelId > m_channums
Definition: IOVDbFolder.h:311
IOVDbFolder::m_nobjread
unsigned int m_nobjread
Definition: IOVDbFolder.h:305
IOVDbFolder::key
const std::string & key() const
Definition: IOVDbFolder.h:338
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
IOVDbNamespace::typeSizeIsKnown
bool typeSizeIsKnown(const coral::Attribute &attribute)
Return a bool indicating whether the size of a given Attribute can be determined.
Definition: IOVDbCoolFunctions.cxx:67
IOVDbParser::timebaseIs_nsOfEpoch
bool timebaseIs_nsOfEpoch() const
Definition: IOVDbParser.cxx:158
Crest::CrestFsClient
Definition: CrestApiFs.h:32
IOVDbFolder::cacheUpdateImplementation
unsigned int cacheUpdateImplementation(T &obj, const ServiceHandle< IIOVSvc > &iovSvc)
Definition: IOVDbFolder.h:177
IOVDbNamespace::resolveUsingTagInfo
std::string resolveUsingTagInfo(const std::string &tag, const ITagInfoMgr *tagInfoMgr)
Definition: TagFunctions.cxx:54
IOVDbFolder::m_cachespec
coral::AttributeListSpecification * m_cachespec
Definition: IOVDbFolder.h:319
IOVDbFolder::m_nchan
unsigned int m_nchan
Definition: IOVDbFolder.h:310
TagMetaDto::from_json
static TagMetaDto from_json(const json &j)
Definition: CrestModel.cxx:401
IOVDbFolder::m_crestToFile
const bool m_crestToFile
Definition: IOVDbFolder.h:326
IOVDbNamespace::runLumiFromIovTime
std::pair< unsigned long long, unsigned long long > runLumiFromIovTime(const unsigned long long iovTime)
Return a [run,lumi] pair from an IOV time.
Definition: IOVDbCoolFunctions.cxx:108
IOVDbFolder::m_named
bool m_named
Definition: IOVDbFolder.h:277
lumiFormat.lumi
lumi
Definition: lumiFormat.py:106
IOVDbFolder::clearCache
void clearCache()
Definition: IOVDbFolder.cxx:1036
IOVDbParser::folderName
std::string folderName() const
give the folder name contained in the parsed description
Definition: IOVDbParser.cxx:133
CoraCoolObjectIterPtr
boost::shared_ptr< CoraCoolObjectIter > CoraCoolObjectIterPtr
Definition: CoraCoolTypes.h:21
IOVDbNamespace::attributeListSize
unsigned int attributeListSize(const coral::AttributeList &atrlist)
return the size (in bytes) of an AttributeList
Definition: IOVDbCoolFunctions.cxx:72
IOVDbFolder::resolveTag
bool resolveTag(const cool::IFolderPtr &fptr, const std::string &globalTag)
Definition: IOVDbFolder.cxx:1046
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
IOVDbFolder::m_notagoverride
bool m_notagoverride
Definition: IOVDbFolder.h:272
IOVDbNamespace::folderMetadata
std::pair< bool, std::string > folderMetadata(IOVDbConn *pConnection, const std::string &folderName)
Retrieve (bool) multiversion flag and folder description
Definition: IOVDbCoolFunctions.cxx:136
IOVDbFolder::setCacheLength
void setCacheLength(const bool timeIs_nsOfEpoch, const unsigned int cacheRun, const unsigned int cacheTime)
Definition: IOVDbFolder.cxx:1008
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
IOVDbParser::hasKey
bool hasKey() const
Definition: IOVDbParser.cxx:143
ref
const boost::regex ref(r_ef)
IOVDbConn::decUsage
void decUsage()
Definition: IOVDbConn.h:74
IOVDbNamespace::IovStore::extendCacheHi
bool extendCacheHi()
Extend upper cache bound to the minimum 'until' time; return whether this changes its value.
Definition: IovStore.cxx:96
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
DeMoScan.first
bool first
Definition: DeMoScan.py:536
CoraCoolObjectPtr
boost::shared_ptr< CoraCoolObject > CoraCoolObjectPtr
Definition: CoraCoolTypes.h:18
IOVDbNamespace::AttrList
@ AttrList
Definition: FolderTypes.h:28
IOVDbFolder::overrideOptionsFromParsedDescription
bool overrideOptionsFromParsedDescription(const IOVDbParser &parsedDescription)
Definition: IOVDbFolder.cxx:830
IOVDbNamespace::SafeReadFromFileMetaData
Definition: ReadFromFileMetaData.h:74
IOVDbFolder::m_cachechan
std::vector< cool::ChannelId > m_cachechan
Definition: IOVDbFolder.h:320
CaloCondBlobAlgs_fillNoiseFromASCII.folder
folder
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:56
IOVDbFolder::m_ndbread
unsigned int m_ndbread
Definition: IOVDbFolder.h:303
IOVDbNamespace::IovStore::at
Iov_t at(const unsigned int idx) const
'at' to read iov at specific index
Definition: IovStore.h:49
IOVDbNamespace::folderTypeName
std::string folderTypeName(const FolderType f)
Give a string name for the folder type.
Definition: FolderTypes.cxx:135
IOVDbNamespace::BasicFolder::setVectorPayloadFlag
void setVectorPayloadFlag(const bool flag)
Definition: BasicFolder.cxx:36
pvec
std::array< fp_t, 2 > pvec
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:9
copySelective.source
string source
Definition: copySelective.py:32
IOVDbParser::classId
CLID classId(MsgStream &msg) const
Definition: IOVDbParser.cxx:190
IOVDbNamespace::iovTimeFromRunLumi
unsigned long long iovTimeFromRunLumi(const unsigned long long run, const unsigned long long lumi)
Create a long long representing the IOV from run, lumi.
Definition: IOVDbCoolFunctions.cxx:103
IOVDbFolder::m_multiversion
bool m_multiversion
Definition: IOVDbFolder.h:269
IOVDbNamespace::determineFolderType
FolderType determineFolderType(const std::string &folderDescription, const std::string &spec, const std::vector< cool::ChannelId > &chans)
Determine folder type with optional check using clid service to check clid matches typename.
Definition: FolderTypes.cxx:17
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
IOVDbNamespace::IovStore::extendCacheLo
bool extendCacheLo()
Extend lower cache bound to the maximum 'since' time; return whether this changes its value.
Definition: IovStore.cxx:89
IOVDbFolder::m_nbytesread
unsigned long long m_nbytesread
Definition: IOVDbFolder.h:306
IOVDbNamespace::countSelectedChannels
int countSelectedChannels(const std::vector< cool::ChannelId > &channels, const cool::ChannelSelection &selected)
Count the number of selected channels in a vector of channels according to cool::Channel selection.
Definition: IOVDbCoolFunctions.cxx:81
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
IOVDbFolder::m_key
std::string m_key
Definition: IOVDbFolder.h:267
StoreSetDto
Definition: CrestModel.h:331
IOVDbNamespace::looksLikeMagicTag
bool looksLikeMagicTag(const std::string &candidateTag)
Looks like it should be magic.
Definition: IOVDbStringFunctions.cxx:151
CondAttrListVec::addSlice
void addSlice(const IOVRange &range, const unsigned int chan, const std::vector< coral::AttributeList > &data, const unsigned int datastart, const unsigned int dataend)
Definition: CondAttrListVec.h:268
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
IOVDbFolder::m_cacheccstart
std::vector< unsigned int > m_cacheccstart
Definition: IOVDbFolder.h:322
Crest::CrestFsClient::storeData
void storeData(const std::string &tag, const StoreSetDto &storeSetJson, const std::string &payloadFormat="JSON", const std::string &objectType="none", const std::string &compressionType="none", const std::string &version="1.0", uint64_t endTime=-1) override
This method stores several payloads in batch mode on the file storage.
Definition: CrestApiFs.cxx:669
test_pyathena.counter
counter
Definition: test_pyathena.py:15
IOVDbConn::dropAndReconnect
bool dropAndReconnect()
Definition: IOVDbConn.cxx:79
python.PyAthena.obj
obj
Definition: PyAthena.py:132
IOVDbNamespace::BasicFolder::jsonPayload
std::string jsonPayload(const std::string &folderDescription, const std::string &spec)
Definition: BasicFolder.cxx:119
IOVDbParser::addressHeader
std::string addressHeader() const
Definition: IOVDbParser.cxx:206
CondAttrListCollection::add
bool add(ChanNum chanNum, const AttributeList &attributeList)
Adding in chan/attrList pairs.
Definition: CondAttrListCollection.h:452
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
python.compressB64.c
def c
Definition: compressB64.py:93
IOVDbFolder::m_conn
IOVDbConn * m_conn
Definition: IOVDbFolder.h:265
IOVDbNamespace::IovStore::empty
bool empty() const
is the store empty?
Definition: IovStore.h:43
IOVDbNamespace::IovStore::setIovSpan
void setIovSpan(const Iov_t &span)
Set span.
Definition: IovStore.cxx:82
IOVDbParser::eventStoreName
std::string eventStoreName() const
Definition: IOVDbParser.cxx:153
IOVDbConn::getCoraCoolDb
CoraCoolDatabasePtr getCoraCoolDb()
Definition: IOVDbConn.cxx:96
IOVDbFolder::m_typename
std::string m_typename
Definition: IOVDbFolder.h:297
IOVDbFolder::objectIteratorIsValid
bool objectIteratorIsValid(cool::IObjectIteratorPtr &objItr)
Definition: IOVDbFolder.h:218
IOVDbFolder::m_timestamp
bool m_timestamp
Definition: IOVDbFolder.h:270
CondAttrListVec::minRange
const IOVRange & minRange() const
Definition: CondAttrListVec.h:232
extractSporadic.myFile
myFile
Definition: extractSporadic.py:87
IOVDbFolder::m_cacheattr
std::vector< coral::AttributeList > m_cacheattr
Definition: IOVDbFolder.h:321
checkFileSG.ind
list ind
Definition: checkFileSG.py:118
CondAttrListCollection::addShared
void addShared(ChanNum chanNum, const AttributeList &attributeList)
Adding in chan/attrList pairs with shared data.
Definition: CondAttrListCollection.h:469
description
std::string description
glabal timer - how long have I taken so far?
Definition: hcg.cxx:88
IOVDbFolder::m_eventstore
std::string m_eventstore
Definition: IOVDbFolder.h:298
IOVDbFolder::m_extensible
bool m_extensible
Definition: IOVDbFolder.h:276