ATLAS Offline Software
TGCSimHitCollectionCnv.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 
20 #include "HitManagement/AthenaHitsVector.h" //for back-compatibility
21 
22 
25 {
26 }
27 
29 
31  MsgStream log(msgSvc(), "TGCSimHitCollectionCnv" );
32  log<<MSG::DEBUG<<"createPersistent(): main converter"<<endmsg;
34  return pixdc_p;
35 }
36 
38  MsgStream log(msgSvc(), "TGCSimHitCollectionCnv" );
39  static const pool::Guid p0_guid("D7C91818-4730-4717-A650-107F52C0221E"); // before t/p split
40  static const pool::Guid p1_guid("BD569381-2489-4402-BBD3-91EE8C009F26");
41  static const pool::Guid p2_guid("710241EE-D5F7-4CB6-A1D7-6E80D040E637");
42  static const pool::Guid p3_guid("BACD19A8-4737-4857-A22D-B9DF833A0A80");
43  static const pool::Guid p4_guid("F8F77562-BBD9-45DB-A276-6A21018EA7FA");
44  static const pool::Guid p5_guid("018E2DAC-18EB-7E5B-9F18-CC2E36343F17");
45  log<<MSG::DEBUG<<"createTransient(): main converter"<<endmsg;
46  TGCSimHitCollection* p_collection(nullptr);
47  if(compareClassGuid(p5_guid) ) {
48  log<<MSG::DEBUG<<"createTransient(): T/P version 5 detected"<<endmsg;
49  std::unique_ptr< Muon::TGCSimHitCollection_p5 > col_vect( this->poolReadObject< Muon::TGCSimHitCollection_p5 >() );
50  p_collection = m_TPConverter_p5.createTransient( col_vect.get(), log );
51  }
52  //----------------------------------------------------------------
53  else if(compareClassGuid(p4_guid) ) {
54  log<<MSG::DEBUG<<"createTransient(): T/P version 4 detected"<<endmsg;
55  std::unique_ptr< Muon::TGCSimHitCollection_p4 > col_vect( this->poolReadObject< Muon::TGCSimHitCollection_p4 >() );
56  p_collection = m_TPConverter_p4.createTransient( col_vect.get(), log );
57  }
58  //----------------------------------------------------------------
59  else if(compareClassGuid(p3_guid) ) {
60  log<<MSG::DEBUG<<"createTransient(): T/P version 3 detected"<<endmsg;
61  std::unique_ptr< Muon::TGCSimHitCollection_p3 > col_vect( this->poolReadObject< Muon::TGCSimHitCollection_p3 >() );
62  p_collection = m_TPConverter_p3.createTransient( col_vect.get(), log );
63  }
64  //----------------------------------------------------------------
65  else if( compareClassGuid(p2_guid) ) {
66  log<<MSG::DEBUG<<"createTransient(): T/P version 2 detected"<<endmsg;
67  std::unique_ptr< Muon::TGCSimHitCollection_p2 > col_vect( this->poolReadObject< Muon::TGCSimHitCollection_p2 >() );
68  p_collection = m_TPConverter_p2.createTransient( col_vect.get(), log );
69  }
70  //----------------------------------------------------------------
71  else if( compareClassGuid(p1_guid) ) {
72  log<<MSG::DEBUG<<"createTransient(): T/P version 1 detected"<<endmsg;
73  std::unique_ptr< Muon::TGCSimHitCollection_p1 > col_vect( this->poolReadObject< Muon::TGCSimHitCollection_p1 >() );
74  p_collection = m_TPConverter_p1.createTransient( col_vect.get(), log );
75  }
76  //----------------------------------------------------------------
77  else if( compareClassGuid(p0_guid) ) {
78  log<<MSG::DEBUG<<"createTransient(): Old input file"<<std::endl;
79  AthenaHitsVector<TGCSimHit>* oldColl = this->poolReadObject< AthenaHitsVector<TGCSimHit> >();
80  size_t size = oldColl->size();
81  p_collection=new TGCSimHitCollection("DefaultCollectionName",size);
82  p_collection->reserve(size);
83  //do the copy
84  for (const TGCSimHit* hit : *oldColl) {
85  p_collection->push_back(*hit);
86  }
87  delete oldColl;
88  }
89  else {
90  throw std::runtime_error("Unsupported persistent version of TGCSimHitCollection");
91 
92  }
93  return p_collection;
94 }
TGCSimHitCollection_p4.h
TGCSimHitCollection_p5.h
AthenaHitsVector.h
TGCSimHitCollection_p2.h
TGCSimHitCollection_p3.h
TGCSimHitCollectionCnv::m_TPConverter_p2
TGCSimHitCollectionCnv_p2 m_TPConverter_p2
Definition: TGCSimHitCollectionCnv.h:40
TGCSimHitCollectionCnv::m_TPConverter_p3
TGCSimHitCollectionCnv_p3 m_TPConverter_p3
Definition: TGCSimHitCollectionCnv.h:41
AtlasHitsVector
Definition: AtlasHitsVector.h:33
TGCSimHitCollection
AtlasHitsVector< TGCSimHit > TGCSimHitCollection
Definition: TGCSimHitCollection.h:15
TGCSimHitCollectionCnv_p2::createTransient
virtual TGCSimHitCollection * createTransient(const Muon::TGCSimHitCollection_p2 *persObj, MsgStream &log)
Definition: TGCSimHitCollectionCnv_p2.cxx:58
TGCSimHitCollectionCnv::createPersistent
virtual TGCSimHitCollection_PERS * createPersistent(TGCSimHitCollection *transCont)
Definition: TGCSimHitCollectionCnv.cxx:30
AtlasHitsVector::reserve
void reserve(size_type n)
Definition: AtlasHitsVector.h:158
TGCSimHitCollectionCnv_p3::createTransient
virtual TGCSimHitCollection * createTransient(const Muon::TGCSimHitCollection_p3 *persObj, MsgStream &log)
Definition: TGCSimHitCollectionCnv_p3.cxx:62
TPAbstractPolyCnvBase::createPersistent
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
Create persistent representation of a transient object.
TGCSimHitCollectionCnv::createTransient
virtual TGCSimHitCollection * createTransient()
Definition: TGCSimHitCollectionCnv.cxx:37
TGCSimHitCollection_p1.h
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
TGCSimHitCollectionCnv_p1::createTransient
virtual TGCSimHitCollection * createTransient(const Muon::TGCSimHitCollection_p1 *persObj, MsgStream &log)
Definition: TGCSimHitCollectionCnv_p1.cxx:54
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
Muon::TGCSimHitCollection_p4
Definition: TGCSimHitCollection_p4.h:13
TGCSimHitCollectionCnv.h
TGCSimHitCollectionCnv::m_TPConverter_p4
TGCSimHitCollectionCnv_p4 m_TPConverter_p4
Definition: TGCSimHitCollectionCnv.h:42
TGCSimHit
Definition: TGCSimHit.h:19
TGCSimHitCollection.h
TGCSimHitCollectionCnv::~TGCSimHitCollectionCnv
virtual ~TGCSimHitCollectionCnv()
DEBUG
#define DEBUG
Definition: page_access.h:11
TGCSimHitCollectionCnv::m_TPConverter_p1
TGCSimHitCollectionCnv_p1 m_TPConverter_p1
Definition: TGCSimHitCollectionCnv.h:39
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
AthenaHitsVector::size
size_type size() const
Definition: AthenaHitsVector.h:151
TGCSimHitCollectionCnv::TGCSimHitCollectionCnv
TGCSimHitCollectionCnv(ISvcLocator *svcloc)
Definition: TGCSimHitCollectionCnv.cxx:23
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
TGCSimHitCollectionCnv_p5::createTransient
virtual TGCSimHitCollection * createTransient(const Muon::TGCSimHitCollection_p5 *persObj, MsgStream &log)
Definition: TGCSimHitCollectionCnv_p5.cxx:62
TGCSimHitCollectionCnv_p4::createTransient
virtual TGCSimHitCollection * createTransient(const Muon::TGCSimHitCollection_p4 *persObj, MsgStream &log)
Definition: TGCSimHitCollectionCnv_p4.cxx:62
TGCSimHitCollectionCnv::m_TPConverter_p5
TGCSimHitCollectionCnv_p5 m_TPConverter_p5
Definition: TGCSimHitCollectionCnv.h:43
AtlasHitsVector::push_back
void push_back(const T &t)
Definition: AtlasHitsVector.h:145