ATLAS Offline Software
AthExDecayCnv.cxx
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // DecayCnv.cxx
8 // Implementation file for class DecayCnv
9 // Author: S.Binet<binet@cern.ch>
11 
12 // STL includes
13 
14 // Framework includes
15 #include "GaudiKernel/MsgStream.h"
16 #include "GaudiKernel/IToolSvc.h"
17 #include "GaudiKernel/IAlgTool.h"
18 #include "StoreGate/StoreGateSvc.h"
19 
20 // AthExThinning includes
21 #include "AthExDecayCnv_p1.h"
22 #include "AthExDecayCnv.h"
23 
27 
31 
33 // Protected methods:
35 
36 AthExDecayCnv::AthExDecayCnv(ISvcLocator* svcLocator) :
38  AthExDecay_PERS>(svcLocator)
39 {
40  if ( 0 == svcLocator ) {
41  throw std::runtime_error("NULL pointer to ISvcLocator !!");
42  }
43 
44 }
45 
46 
49 {
50  MsgStream msg( msgSvc(), "AthExDecayCnv" );
51 
52  AthExDecayCnv_p1 cnv;
53  AthExDecay_PERS *persObj = cnv.createPersistent(transCont, msg);
54 
55  msg << MSG::DEBUG << "::createPersistent [Success]" << endmsg;
56  return persObj;
57 }
58 
60 {
61  MsgStream msg( msgSvc(), "AthExDecayConverter" );
62 
63  AthExDecay *transObj = 0;
64 
65  static const pool::Guid p1_guid("FD6FC38A-2EE4-4EC6-916B-DBF6A8E88A03");
66 
67  if ( compareClassGuid(p1_guid) ) {
68 
69  // using unique_ptr ensures deletion of the persistent object
70  std::unique_ptr<AthExDecay_p1> persObj( poolReadObject<AthExDecay_p1>() );
71  AthExDecayCnv_p1 cnv;
72  transObj = cnv.createTransient( persObj.get(), msg );
73 
74  } else {
75  throw std::runtime_error("Unsupported persistent version of Decay");
76  }
77 
78  return transObj;
79 }
TPPolyCnvBase::createTransient
virtual TRANS * createTransient(const PERS *persObj, MsgStream &log)
Create transient representation of a persistent object.
AthExDecayCnv_p1
Definition: AthExDecayCnv_p1.h:38
AthExDecayCnv::AthExDecayCnv
AthExDecayCnv(ISvcLocator *svcloc)
Create the converter from the service locator.
Definition: AthExDecayCnv.cxx:36
AthExDecayCnv::createTransient
virtual AthExDecay * createTransient()
Build the transient representation from a persistent one.
Definition: AthExDecayCnv.cxx:59
TPAbstractPolyCnvBase::createPersistent
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
Create persistent representation of a transient object.
AthExDecayCnv.h
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
AthExDecayCnv::createPersistent
virtual AthExDecay_PERS * createPersistent(AthExDecay *transCont)
Build the persistent representation from the transient one.
Definition: AthExDecayCnv.cxx:48
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
T_AthenaPoolCustomCnv
Compatibility for old converter classes that don't get passed the key.
Definition: T_AthenaPoolCustomCnv.h:132
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
AthExDecay
Definition: AthExDecay.h:28
DEBUG
#define DEBUG
Definition: page_access.h:11
T_AthenaPoolCustCnv< AthExDecay, AthExDecay_PERS >::compareClassGuid
virtual bool compareClassGuid(const Guid &clid) const
Compare POOL class GUID with the one of the object being read.
StoreGateSvc.h
AthExDecay_p1
Definition: AthExDecay_p1.h:24
AthExDecayCnv_p1.h