ATLAS Offline Software
RPCSimHitCollectionCnv.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 // Gaudi
8 #include "GaudiKernel/StatusCode.h"
9 #include "GaudiKernel/MsgStream.h"
10 
11 // Athena
12 #include "StoreGate/StoreGateSvc.h"
13 
19 #include "HitManagement/AthenaHitsVector.h" //for back-compatibility
20 
21 
24 {
25 }
26 
28 
30  MsgStream log(msgSvc(), "RPCSimHitCollectionCnv" );
31  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createPersistent(): main converter"<<endmsg;
33  return pixdc_p;
34 }
35 
37  MsgStream log(msgSvc(), "RPCSimHitCollectionCnv" );
38  static const pool::Guid p0_guid("45EB013E-FC8E-4612-88B7-6E0CAF718F79"); // before t/p split
39  static const pool::Guid p1_guid("C4C57487-41DC-4706-9604-721D76F0AA52");
40  static const pool::Guid p2_guid("1B611C70-CC6F-42AE-9F6D-7DA6A9A22546");
41  static const pool::Guid p3_guid("B48E5E17-FB26-4BC0-A0E2-5324925EAE2F");
42  static const pool::Guid p4_guid("018E2DAC-18EB-714B-B9BD-F9354E30CB51");
43  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): main converter"<<endmsg;
44  RPCSimHitCollection* p_collection(nullptr);
45  if( compareClassGuid(p4_guid) ) {
46  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): T/P version 4 detected"<<endmsg;
47  std::unique_ptr< Muon::RPCSimHitCollection_p4 > col_vect( this->poolReadObject< Muon::RPCSimHitCollection_p4 >() );
48  p_collection = m_TPConverter_p4.createTransient( col_vect.get(), log );
49  }
50  else if( compareClassGuid(p3_guid) ) {
51  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): T/P version 3 detected"<<endmsg;
52  std::unique_ptr< Muon::RPCSimHitCollection_p3 > col_vect( this->poolReadObject< Muon::RPCSimHitCollection_p3 >() );
53  p_collection = m_TPConverter_p3.createTransient( col_vect.get(), log );
54  }
55  else if( compareClassGuid(p2_guid) ) {
56  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): T/P version 2 detected"<<endmsg;
57  std::unique_ptr< Muon::RPCSimHitCollection_p2 > col_vect( this->poolReadObject< Muon::RPCSimHitCollection_p2 >() );
58  p_collection = m_TPConverter_p2.createTransient( col_vect.get(), log );
59  }
60  else if( compareClassGuid(p1_guid) ) {
61  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): T/P version 1 detected"<<endmsg;
62  std::unique_ptr< Muon::RPCSimHitCollection_p1 > col_vect( this->poolReadObject< Muon::RPCSimHitCollection_p1 >() );
63  p_collection = m_TPConverter.createTransient( col_vect.get(), log );
64  }
65  //----------------------------------------------------------------
66  else if( compareClassGuid(p0_guid) ) {
67  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): Old input file"<<std::endl;
68  AthenaHitsVector<RPCSimHit>* oldColl = this->poolReadObject< AthenaHitsVector<RPCSimHit> >();
69  size_t size = oldColl->size();
70  p_collection=new RPCSimHitCollection("DefaultCollectionName",size);
71  p_collection->reserve(size);
72  //do the copy
73  for (const RPCSimHit* hit : *oldColl) {
74  p_collection->push_back(*hit);
75  }
76  delete oldColl;
77  }
78  else {
79  throw std::runtime_error("Unsupported persistent version of RPCSimHitCollection");
80 
81  }
82  return p_collection;
83 }
RPCSimHitCollectionCnv::RPCSimHitCollectionCnv
RPCSimHitCollectionCnv(ISvcLocator *svcloc)
Definition: RPCSimHitCollectionCnv.cxx:22
RPCSimHitCollection_p1.h
RPCSimHitCollectionCnv::createPersistent
virtual RPCSimHitCollection_PERS * createPersistent(RPCSimHitCollection *transCont)
Definition: RPCSimHitCollectionCnv.cxx:29
AthenaHitsVector.h
RPCSimHitCollectionCnv.h
RPCSimHitCollectionCnv_p1::createTransient
virtual RPCSimHitCollection * createTransient(const Muon::RPCSimHitCollection_p1 *persObj, MsgStream &log)
Definition: RPCSimHitCollectionCnv_p1.cxx:51
AtlasHitsVector
Definition: AtlasHitsVector.h:33
RPCSimHitCollection
AtlasHitsVector< RPCSimHit > RPCSimHitCollection
Definition: RPCSimHitCollection.h:15
AtlasHitsVector::reserve
void reserve(size_type n)
Definition: AtlasHitsVector.h:158
RPCSimHitCollectionCnv_p2::createTransient
virtual RPCSimHitCollection * createTransient(const Muon::RPCSimHitCollection_p2 *persObj, MsgStream &log)
Definition: RPCSimHitCollectionCnv_p2.cxx:62
TPAbstractPolyCnvBase::createPersistent
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
Create persistent representation of a transient object.
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
RPCSimHitCollectionCnv::m_TPConverter_p3
RPCSimHitCollectionCnv_p3 m_TPConverter_p3
Definition: RPCSimHitCollectionCnv.h:41
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
RPCSimHitCollectionCnv_p3::createTransient
virtual RPCSimHitCollection * createTransient(const Muon::RPCSimHitCollection_p3 *persObj, MsgStream &log)
Definition: RPCSimHitCollectionCnv_p3.cxx:62
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
RPCSimHitCollectionCnv::m_TPConverter_p4
RPCSimHitCollectionCnv_p4 m_TPConverter_p4
Definition: RPCSimHitCollectionCnv.h:42
RPCSimHitCollection.h
RPCSimHitCollectionCnv::createTransient
virtual RPCSimHitCollection * createTransient()
Definition: RPCSimHitCollectionCnv.cxx:36
RPCSimHitCollection_p4.h
RPCSimHitCollectionCnv_p4::createTransient
virtual RPCSimHitCollection * createTransient(const Muon::RPCSimHitCollection_p4 *persObj, MsgStream &log)
Definition: RPCSimHitCollectionCnv_p4.cxx:62
RPCSimHitCollection_p2.h
RPCSimHitCollectionCnv::m_TPConverter_p2
RPCSimHitCollectionCnv_p2 m_TPConverter_p2
Definition: RPCSimHitCollectionCnv.h:40
RPCSimHitCollection_p3.h
RPCSimHitCollectionCnv::~RPCSimHitCollectionCnv
virtual ~RPCSimHitCollectionCnv()
DEBUG
#define DEBUG
Definition: page_access.h:11
RPCSimHitCollectionCnv::m_TPConverter
RPCSimHitCollectionCnv_p1 m_TPConverter
Definition: RPCSimHitCollectionCnv.h:39
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
Muon::RPCSimHitCollection_p3
Definition: RPCSimHitCollection_p3.h:13
AthenaHitsVector::size
size_type size() const
Definition: AthenaHitsVector.h:151
RPCSimHit
Definition: RPCSimHit.h:19
T_AthenaPoolCustCnv::compareClassGuid
virtual bool compareClassGuid(const Guid &clid) const
Compare POOL class GUID with the one of the object being read.
AthenaHitsVector
Definition: AthenaHitsVector.h:39
StoreGateSvc.h
AtlasHitsVector::push_back
void push_back(const T &t)
Definition: AtlasHitsVector.h:145