ATLAS Offline Software
CSCSimHitCollectionCnv.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(), "CSCSimHitCollectionCnv" );
31  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createPersistent(): main converter"<<endmsg;
33  return pixdc_p;
34 }
35 
37  MsgStream log(msgSvc(), "CSCSimHitCollectionCnv" );
38  static const pool::Guid p0_guid("DC744F9B-078A-4C61-B03F-D035D885B559"); // before t/p split
39  static const pool::Guid p1_guid("E45CD293-4599-41BE-8B65-945A18F41AB7");
40  static const pool::Guid p2_guid("7E5A120C-E64F-4519-A24B-B485A58724BF");
41  static const pool::Guid p3_guid("6BFFE81C-C99E-43D9-B06F-1A998C3B3E40");
42  static const pool::Guid p4_guid("018E2DAC-18EB-71D2-A246-66F818B3681B");
43  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createTransient(): main converter"<<endmsg;
44  CSCSimHitCollection* 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::CSCSimHitCollection_p4 > col_vect( this->poolReadObject< Muon::CSCSimHitCollection_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::CSCSimHitCollection_p3 > col_vect( this->poolReadObject< Muon::CSCSimHitCollection_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::CSCSimHitCollection_p2 > col_vect( this->poolReadObject< Muon::CSCSimHitCollection_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::CSCSimHitCollection_p1 > col_vect( this->poolReadObject< Muon::CSCSimHitCollection_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<CSCSimHit>* oldColl = this->poolReadObject< AthenaHitsVector<CSCSimHit> >();
69  size_t size = oldColl->size();
70  p_collection=new CSCSimHitCollection("DefaultCollectionName",size);
71  p_collection->reserve(size);
72  //do the copy
73  for (const CSCSimHit* hit : *oldColl) {
74  p_collection->push_back(*hit);
75  }
76  delete oldColl;
77  }
78  else {
79  throw std::runtime_error("Unsupported persistent version of CSCSimHitCollection");
80  }
81  return p_collection;
82 }
AthenaHitsVector.h
CSCSimHitCollectionCnv::m_TPConverter_p3
CSCSimHitCollectionCnv_p3 m_TPConverter_p3
Definition: CSCSimHitCollectionCnv.h:40
CSCSimHitCollection.h
CSCSimHitCollectionCnv_p2::createTransient
virtual CSCSimHitCollection * createTransient(const Muon::CSCSimHitCollection_p2 *persObj, MsgStream &log)
Definition: CSCSimHitCollectionCnv_p2.cxx:61
CSCSimHitCollectionCnv::~CSCSimHitCollectionCnv
virtual ~CSCSimHitCollectionCnv()
AtlasHitsVector
Definition: AtlasHitsVector.h:33
CSCSimHitCollection_p1.h
AtlasHitsVector::reserve
void reserve(size_type n)
Definition: AtlasHitsVector.h:158
TPAbstractPolyCnvBase::createPersistent
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
Create persistent representation of a transient object.
CSCSimHitCollection
AtlasHitsVector< CSCSimHit > CSCSimHitCollection
Definition: CSCSimHitCollection.h:14
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
CSCSimHit
Definition: CSCSimHit.h:18
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
CSCSimHitCollectionCnv::m_TPConverter
CSCSimHitCollectionCnv_p1 m_TPConverter
Definition: CSCSimHitCollectionCnv.h:38
CSCSimHitCollectionCnv::m_TPConverter_p2
CSCSimHitCollectionCnv_p2 m_TPConverter_p2
Definition: CSCSimHitCollectionCnv.h:39
CSCSimHitCollectionCnv.h
CSCSimHitCollectionCnv::createTransient
virtual CSCSimHitCollection * createTransient()
Definition: CSCSimHitCollectionCnv.cxx:36
DEBUG
#define DEBUG
Definition: page_access.h:11
CSCSimHitCollectionCnv::createPersistent
virtual CSCSimHitCollection_PERS * createPersistent(CSCSimHitCollection *transCont)
Definition: CSCSimHitCollectionCnv.cxx:29
Muon::CSCSimHitCollection_p3
Definition: CSCSimHitCollection_p3.h:13
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
CSCSimHitCollectionCnv::CSCSimHitCollectionCnv
CSCSimHitCollectionCnv(ISvcLocator *svcloc)
Definition: CSCSimHitCollectionCnv.cxx:22
AthenaHitsVector::size
size_type size() const
Definition: AthenaHitsVector.h:151
CSCSimHitCollection_p4.h
T_AthenaPoolCustCnv::compareClassGuid
virtual bool compareClassGuid(const Guid &clid) const
Compare POOL class GUID with the one of the object being read.
CSCSimHitCollectionCnv::m_TPConverter_p4
CSCSimHitCollectionCnv_p4 m_TPConverter_p4
Definition: CSCSimHitCollectionCnv.h:41
AthenaHitsVector
Definition: AthenaHitsVector.h:39
CSCSimHitCollection_p2.h
StoreGateSvc.h
CSCSimHitCollection_p3.h
CSCSimHitCollectionCnv_p1::createTransient
virtual CSCSimHitCollection * createTransient(const Muon::CSCSimHitCollection_p1 *persObj, MsgStream &log)
Definition: CSCSimHitCollectionCnv_p1.cxx:60
CSCSimHitCollectionCnv_p3::createTransient
virtual CSCSimHitCollection * createTransient(const Muon::CSCSimHitCollection_p3 *persObj, MsgStream &log)
Definition: CSCSimHitCollectionCnv_p3.cxx:61
AtlasHitsVector::push_back
void push_back(const T &t)
Definition: AtlasHitsVector.h:145
CSCSimHitCollectionCnv_p4::createTransient
virtual CSCSimHitCollection * createTransient(const Muon::CSCSimHitCollection_p4 *persObj, MsgStream &log)
Definition: CSCSimHitCollectionCnv_p4.cxx:61