The Gaudi Framework  master (d98a2936)
RConverter.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2025 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #pragma once
12 
13 // Include files
14 #include <GaudiKernel/Converter.h>
15 #include <TDirectory.h>
16 #include <map>
17 #include <string>
18 
19 // Forward declarations
20 class ISvcLocator;
21 class TObject;
22 class TTree;
23 class TFile;
24 
26  TDirectory* m_current;
27 
28 public:
29  GlobalDirectoryRestore() { m_current = gDirectory; }
30  virtual ~GlobalDirectoryRestore() { gDirectory = m_current; }
31 };
32 
33 namespace RootHistCnv {
34 
40  class RConverter : public Converter {
41  public:
43  StatusCode createRep( DataObject* pObj, IOpaqueAddress*& refpAddr ) override;
45  static long storageType() { return ROOT_StorageType; }
46  long repSvcType() const override { return i_repSvcType(); }
47 
48  StatusCode error( const std::string& msg );
49  StatusCode regTFile( const std::string&, const TFile* );
50  StatusCode findTFile( const std::string&, TFile*& );
51 
52  std::string diskDirectory( const std::string& loc );
53  std::string directory( const std::string& loc );
54  void setDirectory( const std::string& loc );
55  void setDiskDirectory( const std::string& loc );
56  StatusCode createDirectory( const std::string& loc );
57  StatusCode createDiskDirectory( const std::string& loc );
58  std::string getDirectory();
59 
60  std::string convertId( const std::string& ) const;
61 
62  protected:
64  RConverter( const CLID& clid, ISvcLocator* svc ) : Converter( storageType(), clid, svc ) {}
66  virtual StatusCode readObject( IOpaqueAddress* pAddr, DataObject*& refpObj );
68  virtual TObject* createPersistent( DataObject* pObj );
70  StatusCode createAddress( DataObject* pObject, TDirectory* pDir, TObject* pTObject, IOpaqueAddress*& refpAddr );
71 
72  StatusCode createAddress( const std::string& rzdir, const CLID& clid, long id, TObject* pTobj,
73  IOpaqueAddress*& refpAddress );
74 
75  StatusCode createAddress( const std::string& rzdir, const CLID& clid, const std::string& title, TObject* pTobj,
76  IOpaqueAddress*& refpAddress );
77 
79  TDirectory* changeDirectory( DataObject* pObject );
80  };
81 } // namespace RootHistCnv
RootHistCnv::RConverter::convertId
std::string convertId(const std::string &) const
Definition: RConverter.cpp:322
GlobalDirectoryRestore::m_current
TDirectory * m_current
Definition: RConverter.h:26
RootHistCnv::RConverter::createPersistent
virtual TObject * createPersistent(DataObject *pObj)
Create the persistent representation of an object.
Definition: RConverter.cpp:271
IOpaqueAddress
Definition: IOpaqueAddress.h:28
ISvcLocator
Definition: ISvcLocator.h:42
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:19
RootHistCnv::RConverter::RConverter
RConverter(const CLID &clid, ISvcLocator *svc)
Standard constructor.
Definition: RConverter.h:64
RootHistCnv::RConverter::findTFile
StatusCode findTFile(const std::string &, TFile *&)
Definition: RConverter.cpp:289
GlobalDirectoryRestore::~GlobalDirectoryRestore
virtual ~GlobalDirectoryRestore()
Definition: RConverter.h:30
RootHistCnv::RConverter::setDirectory
void setDirectory(const std::string &loc)
Definition: RConverter.cpp:118
Converter.h
RootHistCnv::RConverter::createRep
StatusCode createRep(DataObject *pObj, IOpaqueAddress *&refpAddr) override
Convert the transient object to the requested representation.
Definition: RConverter.cpp:238
RootHistCnv::RConverter::directory
std::string directory(const std::string &loc)
Definition: RConverter.cpp:111
RootHistCnv
Definition: DirectoryCnv.h:26
RootHistCnv::RConverter::regTFile
StatusCode regTFile(const std::string &, const TFile *)
Definition: RConverter.cpp:274
StatusCode
Definition: StatusCode.h:64
RootHistCnv::RConverter::diskDirectory
std::string diskDirectory(const std::string &loc)
Definition: RConverter.cpp:79
Converter
Definition: Converter.h:33
RootHistCnv::RConverter::storageType
static long storageType()
Inquire storage type.
Definition: RConverter.h:45
RootHistCnv::RConverter::getDirectory
std::string getDirectory()
Definition: RConverter.cpp:158
RootHistCnv::RConverter::createAddress
StatusCode createAddress(DataObject *pObject, TDirectory *pDir, TObject *pTObject, IOpaqueAddress *&refpAddr)
Create address of the transient object according to the requested representation.
Definition: RConverter.cpp:165
RootHistCnv::RConverter
Definition: RConverter.h:40
CLID
unsigned int CLID
Class ID definition.
Definition: ClassID.h:16
Converter::i_repSvcType
virtual long i_repSvcType() const
Retrieve the class type of the data store the converter uses.
Definition: Converter.cpp:25
ROOT_StorageType
const long ROOT_StorageType
Definition: ClassID.h:60
GlobalDirectoryRestore
Definition: RConverter.h:25
RootHistCnv::RConverter::error
StatusCode error(const std::string &msg)
Definition: RConverter.cpp:339
RootHistCnv::RConverter::setDiskDirectory
void setDiskDirectory(const std::string &loc)
Definition: RConverter.cpp:151
RootHistCnv::RConverter::repSvcType
long repSvcType() const override
Definition: RConverter.h:46
RootHistCnv::RConverter::createDirectory
StatusCode createDirectory(const std::string &loc)
Definition: RConverter.cpp:34
DataObject
Definition: DataObject.h:37
RootHistCnv::RConverter::readObject
virtual StatusCode readObject(IOpaqueAddress *pAddr, DataObject *&refpObj)
Create the transient representation of an object.
Definition: RConverter.cpp:260
RootHistCnv::RConverter::changeDirectory
TDirectory * changeDirectory(DataObject *pObject)
Switch to object directory (=Parent directory)
Definition: RConverter.cpp:210
GlobalDirectoryRestore::GlobalDirectoryRestore
GlobalDirectoryRestore()
Definition: RConverter.h:29
RootHistCnv::RConverter::createDiskDirectory
StatusCode createDiskDirectory(const std::string &loc)