ATLAS Offline Software
CoolTagInfo.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // CoolTagInfo.cxx - implementation of AtlCoolCopy helper class
6 // Richard Hawkings, 29/2/08
7 
8 #include "CoolTagInfo.h"
9 #include "CoolKernel/IFolder.h"
10 #include "CoolKernel/IFolderSet.h"
11 #include <iostream>
12 
13 CoolTagInfo::CoolTagInfo(const cool::IDatabasePtr& db,const std::string& folder,
14  const std::string& destfolder,
15  const std::string& sourcetag,const std::string& desttag,
16  const std::string& taglabel)
17  : m_folder (destfolder),
18  m_tag (desttag)
19 {
20  if (db->existsFolder(folder)) {
21  cool::IFolderPtr fptr=db->getFolder(folder);
22  m_desc=fptr->tagDescription(sourcetag);
23  m_status=fptr->tagLockStatus(sourcetag);
24  } else if (db->existsFolderSet(folder)) {
25  cool::IFolderSetPtr fptr=db->getFolderSet(folder);
26  m_desc=fptr->tagDescription(sourcetag);
27  m_status=fptr->tagLockStatus(sourcetag);
28  } else {
29  m_desc="";
30  m_status=cool::HvsTagLock::UNLOCKED;
31  std::cout << "Could not access tag information for folder " << folder <<
32  " tag " << sourcetag << std::endl;
33  }
34  // override description with input label if set
35  if (!taglabel.empty()) m_desc=taglabel;
36 }
37 
38 bool CoolTagInfo::write(const cool::IDatabasePtr& db,bool copylock) const {
39  try {
40  if (db->existsFolder(m_folder)) {
41  cool::IFolderPtr fptr=db->getFolder(m_folder);
42  if (!m_desc.empty()) fptr->setTagDescription(m_tag,m_desc);
43  if (copylock) fptr->setTagLockStatus(m_tag,m_status);
44  } else if (db->existsFolderSet(m_folder)) {
45  cool::IFolderSetPtr fptr=db->getFolderSet(m_folder);
46  if (!m_desc.empty()) fptr->setTagDescription(m_tag,m_desc);
47  if (copylock) fptr->setTagLockStatus(m_tag,m_status);
48  } else {
49  std::cout << "Cannot access tag " << m_tag << " in folder " << m_folder
50  << " to write tag info" << std::endl;
51  return false;
52  }
53  }
54  catch (cool::Exception& e) {
55  std::cout << "Exception writing tag info for tag " << m_tag <<
56  " in folder " << m_folder << std::endl;
57  return false;
58  }
59  return true;
60 }
CoolTagInfo::m_tag
std::string m_tag
Definition: CoolTagInfo.h:28
CoolTagInfo::CoolTagInfo
CoolTagInfo(const cool::IDatabasePtr &db, const std::string &folder, const std::string &destfolder, const std::string &sourcetag, const std::string &desttag, const std::string &taglabel="")
Definition: CoolTagInfo.cxx:13
CaloCondBlobAlgs_fillNoiseFromASCII.db
db
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:43
CoolTagInfo::m_desc
std::string m_desc
Definition: CoolTagInfo.h:29
CoolTagInfo::m_folder
std::string m_folder
Definition: CoolTagInfo.h:27
fptr
std::vector< TFile * > fptr
Definition: hcg.cxx:48
CoolTagInfo::write
bool write(const cool::IDatabasePtr &db, const bool copylock) const
Definition: CoolTagInfo.cxx:38
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
CaloCondBlobAlgs_fillNoiseFromASCII.folder
folder
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:56
CoolTagInfo.h
CoolTagInfo::m_status
cool::HvsTagLock::Status m_status
Definition: CoolTagInfo.h:30