The Gaudi Framework  v33r0 (d5ea422b)
RConverter.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2019 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 #ifndef ROOTHISTCNV_RCONVERTER_H
12 #define ROOTHISTCNV_RCONVERTER_H 1
13 
14 // Include files
15 #include "GaudiKernel/Converter.h"
16 #include "TDirectory.h"
17 #include <map>
18 #include <string>
19 
20 // Forward declarations
21 class ISvcLocator;
22 class TObject;
23 class TTree;
24 class TFile;
25 
27  TDirectory* m_current;
28 
29 public:
30  GlobalDirectoryRestore() { m_current = gDirectory; }
31  virtual ~GlobalDirectoryRestore() { gDirectory = m_current; }
32 };
33 
34 namespace RootHistCnv {
35 
41  class RConverter : public Converter {
42  public:
44  StatusCode createRep( DataObject* pObj, IOpaqueAddress*& refpAddr ) override;
46  static long storageType() { return ROOT_StorageType; }
47  long repSvcType() const override { return i_repSvcType(); }
48 
49  StatusCode error( const std::string& msg );
50  StatusCode regTFile( const std::string, const TFile* );
51  StatusCode findTFile( const std::string, TFile*& );
52 
54  std::string directory( const std::string& loc );
55  void setDirectory( const std::string& loc );
56  void setDiskDirectory( const std::string& loc );
60 
61  std::string convertId( const std::string& ) const;
62 
63  protected:
65  RConverter( const CLID& clid, ISvcLocator* svc ) : Converter( storageType(), clid, svc ) {}
67  virtual StatusCode readObject( IOpaqueAddress* pAddr, DataObject*& refpObj );
69  virtual TObject* createPersistent( DataObject* pObj );
71  StatusCode createAddress( DataObject* pObject, TDirectory* pDir, TObject* pTObject, IOpaqueAddress*& refpAddr );
72 
73  StatusCode createAddress( const std::string& rzdir, const CLID& clid, long id, TObject* pTobj,
74  IOpaqueAddress*& refpAddress );
75 
76  StatusCode createAddress( const std::string& rzdir, const CLID& clid, const std::string& title, TObject* pTobj,
77  IOpaqueAddress*& refpAddress );
78 
80  TDirectory* changeDirectory( DataObject* pObject );
81  };
82 } // namespace RootHistCnv
83 
84 #endif // RootHistCnv_RConverter_H
std::string getDirectory()
Definition: RConverter.cpp:158
Root Converter.
Definition: RConverter.h:41
RConverter(const CLID &clid, ISvcLocator *svc)
Standard constructor.
Definition: RConverter.h:65
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:35
std::string diskDirectory(const std::string &loc)
Definition: RConverter.cpp:79
void setDirectory(const std::string &loc)
Definition: RConverter.cpp:118
virtual long i_repSvcType() const
Retrieve the class type of the data store the converter uses.
Definition: Converter.cpp:26
StatusCode createDiskDirectory(const std::string &loc)
StatusCode createRep(DataObject *pObj, IOpaqueAddress *&refpAddr) override
Convert the transient object to the requested representation.
Definition: RConverter.cpp:238
StatusCode regTFile(const std::string, const TFile *)
Definition: RConverter.cpp:274
StatusCode findTFile(const std::string, TFile *&)
Definition: RConverter.cpp:289
StatusCode createDirectory(const std::string &loc)
Definition: RConverter.cpp:34
TDirectory * changeDirectory(DataObject *pObject)
Switch to object directory (=Parent directory)
Definition: RConverter.cpp:210
static long storageType()
Inquire storage type.
Definition: RConverter.h:46
STL class.
virtual TObject * createPersistent(DataObject *pObj)
Create the persistent representation of an object.
Definition: RConverter.cpp:271
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
const long ROOT_StorageType
Definition: ClassID.h:62
TDirectory * m_current
Definition: RConverter.h:27
virtual ~GlobalDirectoryRestore()
Definition: RConverter.h:31
unsigned int CLID
Class ID definition.
Definition: ClassID.h:18
Converter base class.
Definition: Converter.h:34
std::string directory(const std::string &loc)
Definition: RConverter.cpp:111
StatusCode error(const std::string &msg)
Definition: RConverter.cpp:339
long repSvcType() const override
Definition: RConverter.h:47
std::string convertId(const std::string &) const
Definition: RConverter.cpp:322
virtual StatusCode readObject(IOpaqueAddress *pAddr, DataObject *&refpObj)
Create the transient representation of an object.
Definition: RConverter.cpp:260
Opaque address interface definition.
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:40
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
void setDiskDirectory(const std::string &loc)
Definition: RConverter.cpp:151