ATLAS Offline Software
Loading...
Searching...
No Matches
T_AthenaPoolExtendingCnv.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ATHENAPOOLCNVSVC_T_ATHENAPOOLEXTENDCNV_H
6#define ATHENAPOOLCNVSVC_T_ATHENAPOOLEXTENDCNV_H
7
12
14//#include "TPTools/AthenaConverterTLPExtension.h"
16
20
21template <class TRANS, class PERS>
23 : public T_AthenaPoolCustomCnv<TRANS, PERS>,
25{
26friend class CnvFactory<T_AthenaPoolExtendingCnv<TRANS, PERS> >;
27
28public:
30
31public:
32 // -------------------------------------------------------------
34 T_AthenaPoolExtendingCnv(ISvcLocator* svcloc);
35
36protected:
37 // Methods to be implemented in the derived converter class
38 // ##########################################################
39
41 virtual TopLevelTPCnvBase* getTopLevelTPCnv() override = 0;
42
45 virtual void readObjectFromPool( const Token* token ) override = 0 ;
46
47protected:
50 virtual std::unique_ptr<const Token> writeObject(const std::string& key, const std::string& output) override;
51
56
58 virtual void wasClonedFrom( AthenaConverterTLPExtension *orig_converter ) override;
59
62 virtual bool needsCloning() const override { return m_originalExtendingCnv != 0; }
63
66 template <class P>
67 P* poolReadObject( const Token* token );
68
70 template <class P>
71 void poolReadObject( TopLevelTPCnvBase& tlp_converter, const Token* token );
72
73
74protected:
75 //-------------------------------------------------------------------
76 // Internal methods
77
80 virtual const std::string name() const override;
81
82
83 // hidden away, as they don't make sense for this converter
85 virtual PERS *createPersistent( TRANS *) override { return 0; }
86 virtual TRANS *createTransient(const Token *) override { return 0; }
87
90};
91
92
94
95
96#endif
static Double_t P(Double_t *tt, Double_t *par)
RpcSectorLogicContainer_p1 PERS
his file contains the class definition for the templated T_AthenaPoolCustomCnv class.
This class is used to add functionality to a standard AthenaConverter.
Abstract factory to create the converter.
Compatibility for old converter classes that don't get passed the key.
P * poolReadObject(const Token *token)
Read object of type P.
virtual const std::string name() const override
Get the name of this converter (anything that identifies it).
virtual bool needsCloning() const override
tells if this converter needs to be cloned (true after the converter has been registered once already...
virtual BaseType * baseAthenaPoolCnv()
return the original AthenaPool converter this one was cloned from if not cloned this returns self if ...
virtual void readObjectFromPool(const Token *token) override=0
Read the persistent object from POOL.
virtual void wasClonedFrom(AthenaConverterTLPExtension *orig_converter) override
remember the original converter this one was cloned from
virtual PERS * createPersistent(TRANS *) override
no-op
T_AthenaPoolCustomCnv< TRANS, PERS > BaseType
virtual TopLevelTPCnvBase * getTopLevelTPCnv() override=0
Return the top level TP converter (which is always used for writing)
virtual std::unique_ptr< const Token > writeObject(const std::string &key, const std::string &output) override
Write the persistent object to POOL.
void poolReadObject(TopLevelTPCnvBase &tlp_converter, const Token *token)
virtual TRANS * createTransient(const Token *) override
T_AthenaPoolExtendingCnv(ISvcLocator *svcloc)
Constructor.
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition Token.h:21
Base class for top-level TP converters.