Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
RNTCollection.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef RNTCOLLECTION_H
6 #define RNTCOLLECTION_H
7 
11 
13 #include "CoralBase/MessageStream.h"
14 
15 #include "GaudiKernel/IFileMgr.h"
16 #include "GaudiKernel/SmartIF.h"
17 #include "Gaudi/PluginService.h"
18 
19 #include <string>
20 
21 #include "RVersion.h"
22 
23 class TFile;
24 class IFileMgr;
25 
26 // Import classes from experimental namespace for the time being
27 #if ROOT_VERSION_CODE >= ROOT_VERSION( 6, 35, 0 )
28 namespace ROOT {
29  class RNTupleModel;
30  class RNTupleWriter;
31  class RNTupleReader;
32 }
33 #else
34 namespace ROOT::Experimental {
35  class RNTupleModel;
36  class RNTupleWriter;
37  class RNTupleReader;
38 }
39 namespace ROOT {
40  using RNTupleModel = ROOT::Experimental::RNTupleModel;
41  using RNTupleWriter = ROOT::Experimental::RNTupleWriter;
42  using RNTupleReader = ROOT::Experimental::RNTupleReader;
43 }
44 #endif
45 
46 namespace pool {
47 
48  class ISession;
49 
50  namespace RootCollection {
51  class Attribute;
52  class AttributeSpecification;
53 
54  static constexpr auto MODULE_NAME = "RootCollection";
55 
60  class RNTCollection : public ICollection {
61 
62  public:
63  typedef Gaudi::PluginService::Factory<ICollection*( const ICollectionDescription*, ICollection::OpenMode, ISession*)> Factory;
64 
91 
92 
95  pool::ISession* );
96 
99 
101  virtual ICollection::OpenMode openMode() const final override;
102 
104  virtual void open() final override;
105 
107  virtual bool isOpen() const final override;
108 
110  virtual void insertRow( const pool::CollectionRowBuffer& inputRowBuffer ) final override;
111 
113  virtual void commit( bool restartTransaction = false ) final override;
114 
116  virtual void close() final override;
117 
119  virtual const ICollectionDescription& description() const final override;
120 
122  virtual ICollectionQuery* newQuery() final override;
123 
124  private:
128 
129  void delayedFileOpen(const std::string& method);
130  std::unique_ptr<ROOT::RNTupleReader> getCollectionRNTuple();
131  void addField(ROOT::RNTupleModel* model, const std::string& field_name, const std::string& field_type);
132 
134  std::string retrievePFN() const;
135  std::string retrieveFID();
136  std::string retrieveUniquePFN(const FileCatalog::FileID& fid);
137  std::string retrieveBestPFN(const FileCatalog::FileID& fid)const;
139 
140  void cleanup();
141 
143  std::unique_ptr<ROOT::RNTupleReader> m_reader;
144  std::unique_ptr<ROOT::RNTupleWriter> m_rntupleWriter;
145 
146  std::string m_name;
147  std::string m_fileName;
149  TFile* m_file;
151  bool m_open;
153 
154  std::unique_ptr<pool::IFileCatalog> m_fileCatalog;
155  coral::MessageStream m_poolOut;
156 
157  SmartIF<IFileMgr> m_fileMgr;
158  };
159  }
160 }
161 #endif
RunTileTBRec.method
method
Definition: RunTileTBRec.py:73
pool::RootCollection::RNTCollection::m_file
TFile * m_file
Definition: RNTCollection.h:149
pool::ICollectionQuery
Definition: ICollectionQuery.h:27
pool::RootCollection::RNTCollection::m_session
ISession * m_session
Definition: RNTCollection.h:150
pool::RootCollection::RNTCollection::retrieveFID
std::string retrieveFID()
pool::RootCollection::RNTCollection::addField
void addField(ROOT::RNTupleModel *model, const std::string &field_name, const std::string &field_type)
pool::RootCollection::RNTCollection::m_description
CollectionDescription m_description
Definition: RNTCollection.h:142
pool::RootCollection::RNTCollection::m_reader
std::unique_ptr< ROOT::RNTupleReader > m_reader
Definition: RNTCollection.h:143
pool::RootCollection::RNTCollection::m_fileName
std::string m_fileName
Definition: RNTCollection.h:147
CollectionDescription.h
pool::RootCollection::RNTCollection::openMode
virtual ICollection::OpenMode openMode() const final override
Return openMode.
pool::RootCollection::RNTCollection::retrieveFileCatalog
void retrieveFileCatalog() const
pool
pool namespace
Definition: libname.h:15
IFileCatalog.h
pool::RootCollection::RNTCollection::m_fileCatalog
std::unique_ptr< pool::IFileCatalog > m_fileCatalog
Definition: RNTCollection.h:154
pool::RootCollection::RNTCollection::m_readOnly
bool m_readOnly
Definition: RNTCollection.h:152
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
pool::RootCollection::RNTCollection::RNTCollection
RNTCollection(const pool::ICollectionDescription *description, pool::ICollection::OpenMode mode, pool::ISession *)
Constructor.
pool::RootCollection::RNTCollection::close
virtual void close() final override
Explicitly closes the collection.
pool::ISession
Definition: ISession.h:31
coral
Definition: ISecondaryEventSelector.h:19
pool::RootCollection::RNTCollection::m_fileMgr
SmartIF< IFileMgr > m_fileMgr
Definition: RNTCollection.h:157
pool::RootCollection::RNTCollection
Collection (and CollectionProxy) implementation based on RNTuple.
Definition: RNTCollection.h:60
CollectionRowBuffer.h
pool::IFileCatalog
Definition: IFileCatalog.h:23
pool::RootCollection::RNTCollection::fileCatalogRequired
bool fileCatalogRequired() const
pool::RootCollection::RNTCollection::retrieveUniquePFN
std::string retrieveUniquePFN(const FileCatalog::FileID &fid)
pool::RootCollection::RNTCollection::m_rntupleWriter
std::unique_ptr< ROOT::RNTupleWriter > m_rntupleWriter
Definition: RNTCollection.h:144
pool::ICollection::OpenMode
OpenMode
Enumeration of the possible open modes of the collection.
Definition: ICollection.h:26
pool::CollectionDescription
Definition: CollectionDescription.h:26
ICollection.h
pool::RootCollection::RNTCollection::Factory
Gaudi::PluginService::Factory< ICollection *(const ICollectionDescription *, ICollection::OpenMode, ISession *)> Factory
Definition: RNTCollection.h:63
Preparation.mode
mode
Definition: Preparation.py:107
pool::RootCollection::RNTCollection::newQuery
virtual ICollectionQuery * newQuery() final override
Returns an object used to query the collection.
pool::RootCollection::RNTCollection::retrievePFN
std::string retrievePFN() const
pool::RootCollection::RNTCollection::description
virtual const ICollectionDescription & description() const final override
Returns an object used to describe the collection properties.
pool::FileID
std::string FileID
Definition: FileDescriptor.h:27
pool::RootCollection::RNTCollection::commit
virtual void commit(bool restartTransaction=false) final override
Commits the last changes made to the collection.
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
pool::CollectionRowBuffer
Definition: CollectionRowBuffer.h:31
pool::RootCollection::RNTCollection::m_open
bool m_open
Definition: RNTCollection.h:151
pool::RootCollection::RNTCollection::insertRow
virtual void insertRow(const pool::CollectionRowBuffer &inputRowBuffer) final override
Adds a new row of data to the collection.
pool::RootCollection::RNTCollection::cleanup
void cleanup()
pool::RootCollection::RNTCollection::m_poolOut
coral::MessageStream m_poolOut
Definition: RNTCollection.h:155
calibdata.delete
list delete
Definition: calibdata.py:46
pool::RootCollection::RNTCollection::isOpen
virtual bool isOpen() const final override
Checks if the collection is open.
pool::RootCollection::RNTCollection::open
virtual void open() final override
Explicitly re-opens the collection after it has been closed.
pool::RootCollection::RNTCollection::m_name
std::string m_name
Definition: RNTCollection.h:146
pool::RootCollection::RNTCollection::getCollectionRNTuple
std::unique_ptr< ROOT::RNTupleReader > getCollectionRNTuple()
correlationModel::model
model
Definition: AsgElectronEfficiencyCorrectionTool.cxx:46
pool::RootCollection::RNTCollection::retrieveBestPFN
std::string retrieveBestPFN(const FileCatalog::FileID &fid) const
pool::RootCollection::RNTCollection::delayedFileOpen
void delayedFileOpen(const std::string &method)
pool::RootCollection::RNTCollection::~RNTCollection
~RNTCollection()
Destructor.
ROOT
Selection rules: declare transient members.
Definition: DataVector.h:580
pool::ICollection
Definition: ICollection.h:23
pool::RootCollection::RNTCollection::m_mode
ICollection::OpenMode m_mode
Definition: RNTCollection.h:148
pool::ICollectionDescription
Definition: ICollectionDescription.h:25