ATLAS Offline Software
PoolCollectionConverter.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
11 #include "PoolSvc/IPoolSvc.h"
13 
14 // Pool
18 
19 // Gaudi
20 #include "GaudiKernel/StatusCode.h"
21 
22 #include <exception>
23 #include <format>
24 
25 //______________________________________________________________________________
26 PoolCollectionConverter::PoolCollectionConverter(const std::string& collectionType,
27  const std::string& inputCollection,
28  unsigned int contextId,
29  const IPoolSvc* svc) :
30  m_collectionType(collectionType),
31  m_connection(),
32  m_inputCollection(inputCollection),
33  m_contextId(contextId),
34  m_poolSvc(svc),
35  m_poolCollection(nullptr),
36  m_collectionCursor(nullptr),
37  m_inputContainer() {
38 }
39 //______________________________________________________________________________
41  if (m_poolCollection) {
43  delete m_collectionCursor; m_collectionCursor = nullptr;
44  delete m_poolCollection; m_poolCollection = nullptr;
45  }
46 }
47 //______________________________________________________________________________
49  // Find out if the user specified a container
50  const std::string collectionType = m_collectionType;
51  std::string::size_type p_colon = collectionType.rfind(':');
52  if (p_colon != std::string::npos) {
53  m_inputContainer = collectionType.substr(p_colon + 1);
54  m_collectionType = collectionType.substr(0, p_colon);
55  }
56  if (m_collectionType == "ImplicitCollection") {
57  // Check if already prefixed
58  if (m_inputCollection.starts_with( "PFN:")
59  || m_inputCollection.starts_with( "LFN:")
60  || m_inputCollection.starts_with( "FID:")) {
61  // Already prefixed
63  } else {
64  // Prefix with PFN:
66  }
67  try {
69  } catch (std::exception &e) {
70  m_poolCollection = nullptr;
71  }
72  if (m_poolCollection == nullptr) {
73  // Now set where to look in the implicit file
74  m_inputCollection = std::format("{}(DataHeader)", m_inputContainer);
75  }
76  }
77  try {
78  if (m_poolCollection == nullptr) {
80  }
81  if (m_poolCollection == nullptr && m_collectionType == "ImplicitCollection") {
84  }
85  } catch (std::exception &e) {
86  return StatusCode::RECOVERABLE;
87  }
88  return StatusCode::SUCCESS;
89 }
90 //______________________________________________________________________________
92  if (m_poolCollection == nullptr) {
93  return StatusCode::SUCCESS;
94  }
95  if (m_poolCollection->description().type() == "ImplicitCollection") {
97  }
98  return StatusCode::SUCCESS;
99 }
100 //______________________________________________________________________________
102  return m_poolCollection != nullptr ? StatusCode::SUCCESS : StatusCode::FAILURE;
103 }
104 //______________________________________________________________________________
106  delete m_collectionCursor; m_collectionCursor = nullptr;
108  return *m_collectionCursor;
109 }
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
IPoolSvc
This class provides the interface to the LCG POOL persistency software.
Definition: IPoolSvc.h:35
PoolCollectionConverter::m_contextId
unsigned int m_contextId
Definition: PoolCollectionConverter.h:59
vtune_athena.format
format
Definition: vtune_athena.py:14
PoolCollectionConverter::m_connection
std::string m_connection
Definition: PoolCollectionConverter.h:57
PoolCollectionConverter.h
This file contains the class definition for the PoolCollectionConverter class.
ICollectionCursor.h
PoolCollectionConverter::selectAll
pool::ICollectionCursor & selectAll()
Definition: PoolCollectionConverter.cxx:105
pool::ICollection::close
virtual void close()=0
Closes the collection and terminates any database connections.
PoolCollectionConverter::m_collectionType
std::string m_collectionType
Definition: PoolCollectionConverter.h:56
pool::ICollectionDescription::type
virtual const std::string & type() const =0
Returns the storage technology type of the collection.
PoolCollectionConverter::m_inputCollection
std::string m_inputCollection
Definition: PoolCollectionConverter.h:58
PoolCollectionConverter::m_inputContainer
std::string m_inputContainer
Definition: PoolCollectionConverter.h:63
PoolCollectionConverter::isValid
StatusCode isValid() const
Check whether has valid pool::ICollection*.
Definition: PoolCollectionConverter.cxx:101
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
PoolCollectionConverter::m_poolSvc
const IPoolSvc * m_poolSvc
Definition: PoolCollectionConverter.h:60
calibdata.exception
exception
Definition: calibdata.py:495
ICollection.h
PoolCollectionConverter::m_collectionCursor
pool::ICollectionCursor * m_collectionCursor
Definition: PoolCollectionConverter.h:62
pool::ICollection::description
virtual const ICollectionDescription & description() const =0
Returns an object used to describe the collection properties.
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
pool::ICollectionCursor
Definition: ICollectionCursor.h:22
PoolCollectionConverter::PoolCollectionConverter
PoolCollectionConverter(const std::string &collectionType, const std::string &inputCollection, unsigned int contextId, const IPoolSvc *svc)
Constructor.
Definition: PoolCollectionConverter.cxx:26
pool::ICollection::cursor
virtual ICollectionCursor & cursor()=0
Returns an cursor for the collection.
IPoolSvc.h
This file contains the class definition for the IPoolSvc interface class.
PoolCollectionConverter::disconnectDb
StatusCode disconnectDb()
Disconnect Database.
Definition: PoolCollectionConverter.cxx:91
PoolCollectionConverter::initialize
StatusCode initialize()
Required by all Gaudi Services.
Definition: PoolCollectionConverter.cxx:48
PoolCollectionConverter::m_poolCollection
pool::ICollection * m_poolCollection
Definition: PoolCollectionConverter.h:61
IPoolSvc::disconnectDb
virtual StatusCode disconnectDb(const std::string &connection, unsigned int contextId=IPoolSvc::kInputStream) const =0
Disconnect single Database.
PoolCollectionConverter::~PoolCollectionConverter
virtual ~PoolCollectionConverter()
Destructor.
Definition: PoolCollectionConverter.cxx:40
ICollectionDescription.h
Token.h
This file contains the class definition for the Token class (migrated from POOL).
IPoolSvc::createCollection
virtual pool::ICollection * createCollection(const std::string &collectionType, const std::string &connection, const std::string &collectionName, unsigned int contextId=IPoolSvc::kInputStream) const =0