ATLAS Offline Software
TgcCoinDataContainerCnv.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /* Takashi Kubota - June 30, 2008 */
7 
8 // Gaudi
9 #include "GaudiKernel/StatusCode.h"
10 #include "GaudiKernel/MsgStream.h"
11 
12 // Athena
13 #include "StoreGate/StoreGateSvc.h"
14 
15 // Id includes
19 
20 
21 
24  // Must create DataVector that does NOT own elements
25  //m_prdCollVec(TgcCoinDataCollVec(SG::VIEW_ELEMENTS)),
26  m_storeGate(nullptr)
27  //m_cscId(0)
28 {
29 }
30 
32 
34  // Call base clase initialize
35  if( !TgcCoinDataContainerCnvBase::initialize().isSuccess() )
36  return StatusCode::FAILURE;
37 
38 // msgSvc()->setOutputLevel( "TgcCoinDataContainerCnv", MSG::INFO );
39 
40  // Get the messaging service, print where you are
41  MsgStream log(msgSvc(), "TgcCoinDataContainerCnv");
42  if (log.level() <= MSG::INFO) log << MSG::INFO << "TgcCoinDataContainerCnv::initialize()" << endmsg;
43 
44  // get StoreGate service
45  StatusCode sc = service("StoreGateSvc", m_storeGate);
46  if (sc.isFailure()) {
47  log << MSG::FATAL << "StoreGate service not found !" << endmsg;
48  return StatusCode::FAILURE;
49  }
50 
51  // get DetectorStore service
53  sc = service("DetectorStore", detStore);
54  if (sc.isFailure()) {
55  log << MSG::FATAL << "DetectorStore service not found !" << endmsg;
56  return StatusCode::FAILURE;
57  } else {
58  if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Found DetectorStore." << endmsg;
59  }
60 
61 
62  //m_converter_p0.initialize(log);
63 
64  if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Converter initialized." << endmsg;
65 
66  return StatusCode::SUCCESS;
67 }
68 
70  MsgStream log(msgSvc(), "TgcCoinDataContainerCnv" );
71  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createPersistent(): main converter"<<endmsg;
73  return pixdc_p;
74 }
75 
77  MsgStream log(msgSvc(), "TgcCoinDataContainerCnv" );
78  static const pool::Guid p0_guid("F81C4564-B1C5-4053-A6F6-E0ED77907BE5"); // before t/p split
79  static const pool::Guid p1_guid("C312D3F5-60DB-41D5-895B-9FD4EF443E0B"); // with TgcCoinData_tlp1
80  static const pool::Guid p2_guid("524775D8-A66F-4AD3-912E-7D05389C1011"); // with TgcCoinData_tlp2
81  static const pool::Guid p3_guid("95BF89C7-1FFC-464F-A14D-742F9E874E56"); // with TgcCoinData_tlp3
82  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): main converter"<<endmsg;
83  Muon::TgcCoinDataContainer* p_collection(nullptr);
84  if( compareClassGuid(p3_guid) ) {
85  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): T/P version 3 detected"<<endmsg;
86  poolReadObject< TgcCoinDataContainer_PERS >( m_TPConverter_tlp3 );
87  p_collection = m_TPConverter_tlp3.createTransient( log );
88  }
89  else if( compareClassGuid(p2_guid) ) {
90  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): T/P version 2 detected"<<endmsg;
91  poolReadObject< TgcCoinDataContainer_PERS >( m_TPConverter_tlp2 );
92  p_collection = m_TPConverter_tlp2.createTransient( log );
93  }
94  else if( compareClassGuid(p1_guid) ) {
95  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): T/P version 1 detected"<<endmsg;
96  poolReadObject< Muon::TgcCoinDataContainer_tlp1 >( m_TPConverter_tlp1 );
97  p_collection = m_TPConverter_tlp1.createTransient( log );
98  }
99  //----------------------------------------------------------------
100  else if( compareClassGuid(p0_guid) ) {
101  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): Old input file"<<std::endl;
102  throw std::runtime_error("Not currently supporting reading non TP-split CoinDatas");
103  //std::unique_ptr< TgcCoinDataContainer_p0 > col_vect( poolReadObject< TgcCoinDataContainer_p0 >() );
104  //p_collection = m_converter_p0.createTransient( col_vect.get(), log );
105  }
106  else {
107  throw std::runtime_error("Unsupported persistent version of TgcCoinDataContainer");
108 
109  }
110  return p_collection;
111 }
TgcCoinDataContainerCnv::m_storeGate
StoreGateSvc * m_storeGate
Definition: TgcCoinDataContainerCnv.h:47
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
TgcCoinDataContainerCnv.h
TgcCoinDataContainerCnv::initialize
virtual StatusCode initialize()
Gaudi Service Interface method implementations:
Definition: TgcCoinDataContainerCnv.cxx:33
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
TgcCoinDataContainerCnv::createTransient
virtual Muon::TgcCoinDataContainer * createTransient()
Definition: TgcCoinDataContainerCnv.cxx:76
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
TopLevelTPConverter::createTransient
TRANS * createTransient(MsgStream &log)
Create transient representation of the persistent object known to this converter.
Definition: TopLevelTPConverter.h:62
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
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TgcCoinDataContainerCnv::m_TPConverter_tlp1
TgcCoinDataContainerCnv_tlp1 m_TPConverter_tlp1
Definition: TgcCoinDataContainerCnv.h:51
Muon::TgcCoinDataContainer_tlp3
Definition: TgcCoinDataContainer_tlp3.h:23
TgcCoinDataContainer.h
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
Muon::MuonCoinDataContainer
Definition: MuonCoinDataContainer.h:32
TgcCoinDataContainerCnv::m_TPConverter_tlp3
TgcCoinDataContainerCnv_tlp3 m_TPConverter_tlp3
Definition: TgcCoinDataContainerCnv.h:53
TgcCoinDataContainerCnv::createPersistent
virtual TgcCoinDataContainer_PERS * createPersistent(Muon::TgcCoinDataContainer *transCont)
Definition: TgcCoinDataContainerCnv.cxx:69
TgcCoinDataContainerCnv::~TgcCoinDataContainerCnv
virtual ~TgcCoinDataContainerCnv()
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
TgcCoinDataContainerCnv::m_TPConverter_tlp2
TgcCoinDataContainerCnv_tlp2 m_TPConverter_tlp2
Definition: TgcCoinDataContainerCnv.h:52
TgcReadoutElement.h
TgcIdHelper.h
TopLevelTPConverter::createPersistent
virtual TL_PERS * createPersistent(const TRANS *transObj, MsgStream &log)
Create persistent representation of transObj.
Definition: TopLevelTPConverter.h:110
T_AthenaPoolCustCnv::compareClassGuid
virtual bool compareClassGuid(const Guid &clid) const
Compare POOL class GUID with the one of the object being read.
T_AthenaPoolCustCnv::initialize
virtual StatusCode initialize()
Gaudi Service Interface method implementations:
TgcCoinDataContainerCnv::TgcCoinDataContainerCnv
TgcCoinDataContainerCnv(ISvcLocator *svcloc)
Definition: TgcCoinDataContainerCnv.cxx:22
StoreGateSvc.h