ATLAS Offline Software
SiHitCollectionCnv.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
11 #include "SiHitCollectionCnv.h"
12 
13 
15  MsgStream mlog(msgSvc(), "SiHitCollectionConverter" );
16  SiHitCollectionCnv_PERS converter;
17  SiHitCollection_PERS *persObj = converter.createPersistent( transCont, mlog );
18  return persObj;
19 }
20 
21 
23  MsgStream mlog(msgSvc(), "SiHitCollectionConverter" );
24  SiHitCollectionCnv_p1 converter_p1;
25  SiHitCollectionCnv_p2 converter_p2;
26  SiHitCollectionCnv_p3 converter_p3;
27  SiHitCollectionCnv_p4 converter_p4;
28 
29  static const pool::Guid p1_guid("36D1FF8E-5734-4A93-A133-F286CF47DB72");
30  static const pool::Guid p2_guid("BD1469C5-C904-40B8-82B9-43D25888D884");
31  static const pool::Guid p3_guid("59E13FDA-2799-4362-8423-44D57F08734D");
32  static const pool::Guid p4_guid("018E1E2B-6C61-752E-b26D-6ABB05FBD4D9");
33  static const pool::Guid old_guid("1EC39DA3-14F9-4901-88C7-F6909B064574");
34 
35  SiHitCollection *trans_cont(nullptr);
36  if( this->compareClassGuid(p3_guid)) {
37  std::unique_ptr< SiHitCollection_p3 > col_vect( this->poolReadObject< SiHitCollection_p3 >() );
38  trans_cont = converter_p3.createTransient( col_vect.get(), mlog );
39  }
40  else if( this->compareClassGuid(p1_guid)) {
41  std::unique_ptr< SiHitCollection_p1 > col_vect( this->poolReadObject< SiHitCollection_p1 >() );
42  trans_cont = converter_p1.createTransient( col_vect.get(), mlog );
43  }
44  else if( this->compareClassGuid(p2_guid)) { // version p2
45  std::unique_ptr< SiHitCollection_p2 > col_vect( this->poolReadObject< SiHitCollection_p2 >() );
46  trans_cont = converter_p2.createTransient( col_vect.get(), mlog );
47  }
48  else if( this->compareClassGuid(p4_guid)) { // version p4
49  std::unique_ptr< SiHitCollection_p4 > col_vect( this->poolReadObject< SiHitCollection_p4 >() );
50  trans_cont = converter_p4.createTransient( col_vect.get(), mlog );
51  }
52  else if( this->compareClassGuid(old_guid)) {
53  // old version from before TP separation, just return it
54  AthenaHitsVector<SiHit>* oldColl = this->poolReadObject< AthenaHitsVector<SiHit> >();
55  size_t size = oldColl->size();
56  trans_cont=new SiHitCollection("DefaultCollectionName",size);
57  //do the copy
58  for (SiHit* hit : *oldColl) {
59  trans_cont->push_back(*hit);
60  }
61  delete oldColl;
62  } else {
63  throw std::runtime_error("Unsupported persistent version of Data container");
64  }
65  return trans_cont;
66 }
SiHitCollectionCnv_p3::createTransient
virtual SiHitCollection * createTransient(const SiHitCollection_p3 *persObj, MsgStream &log)
Definition: SiHitCollectionCnv_p3.cxx:275
TPPolyCnvBase::createTransient
virtual TRANS * createTransient(const PERS *persObj, MsgStream &log)
Create transient representation of a persistent object.
AtlasHitsVector
Definition: AtlasHitsVector.h:33
SiHitCollection_p3
Definition: SiHitCollection_p3.h:18
SiHitCollectionCnv_p4.h
TPAbstractPolyCnvBase::createPersistent
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
Create persistent representation of a transient object.
SiHit
Definition: SiHit.h:19
SiHitCollectionCnv_p3.h
SiHit_p1.h
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
SiHitCollectionCnv.h
SiHit_p2.h
python.InDetPriVxFinderConfig.mlog
mlog
Definition: InDetPriVxFinderConfig.py:134
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
SiHitCollectionCnv_p1.h
T_AtlasHitsVectorCnv
Definition: TPConverter.h:1234
SiHitCollectionCnv::createPersistent
SiHitCollection_PERS * createPersistent(SiHitCollection *transCont)
Definition: SiHitCollectionCnv.cxx:14
SiHitCollectionCnv_p3
Definition: SiHitCollectionCnv_p3.h:18
SiHitCollectionCnv_p2.h
SiHitCollectionCnv_p2
Definition: SiHitCollectionCnv_p2.h:17
SiHitCollection
AtlasHitsVector< SiHit > SiHitCollection
Definition: SiHitCollection.h:14
SiHitCollectionCnv_p4::createTransient
virtual SiHitCollection * createTransient(const SiHitCollection_p4 *persObj, MsgStream &log)
Definition: SiHitCollectionCnv_p4.cxx:274
SiHitCollectionCnv_p4
Definition: SiHitCollectionCnv_p4.h:14
SiHitCollectionCnv::createTransient
SiHitCollection * createTransient()
Definition: SiHitCollectionCnv.cxx:22
AthenaHitsVector::size
size_type size() const
Definition: AthenaHitsVector.h:151
T_AthenaPoolCustCnv< SiHitCollection, SiHitCollection_PERS >::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
SiHitCollectionCnv_p2::createTransient
virtual SiHitCollection * createTransient(const SiHitCollection_p2 *persObj, MsgStream &log)
Definition: SiHitCollectionCnv_p2.cxx:257
AtlasHitsVector::push_back
void push_back(const T &t)
Definition: AtlasHitsVector.h:145