ATLAS Offline Software
Loading...
Searching...
No Matches
TileDigitsContainerCnv.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
9// Gaudi
10#include "GaudiKernel/MsgStream.h"
11
14{
15 ServiceHandle<IService> cablingSvc ("TileCablingSvc", "TileDigitsContainerCnv");
16 if (cablingSvc.retrieve().isFailure()) {
17 std::abort();
18 }
19}
20
22 MsgStream mlog(msgSvc(), "TileDigitsContainerConverter" );
24 TileDigitsContainer_PERS *persObj = converter.createPersistent( transCont, mlog );
25 return persObj;
26}
27
29 MsgStream mlog(msgSvc(), "TileDigitsContainerConverter" );
30 TileDigitsContainerCnv_p1 converter_p1;
31 TileDigitsContainerCnv_p2 converter_p2;
32 TileDigitsContainerCnv_p3 converter_p3;
33
34 TileDigitsContainer *trans_cont(0);
35
36 static const pool::Guid p3_guid("8CC01C7A-B330-413E-BEF9-DFA18F15B1FA");
37 static const pool::Guid p2_guid("2F82DE4C-65FA-4F01-BCB5-15330224E357");
38 static const pool::Guid p1_guid("F9386A42-43A7-4482-8A5B-F33EDE586FB2");
39 static const pool::Guid p0_guid("EB51ED70-5EC0-4F31-97D3-14453F77C88B");
40
41 if( this->compareClassGuid(p3_guid)) {
42 std::unique_ptr< TileDigitsContainer_p3 > cont( this->poolReadObject< TileDigitsContainer_p3 >() );
43 trans_cont = converter_p3.createTransient( cont.get(), mlog );
44 }
45 else if( this->compareClassGuid(p2_guid)) {
46 std::unique_ptr< TileDigitsContainer_p2 > cont( this->poolReadObject< TileDigitsContainer_p2 >() );
47 trans_cont = converter_p2.createTransient( cont.get(), mlog );
48 }
49 else if( this->compareClassGuid(p1_guid)) {
50 std::unique_ptr< TileDigitsContainer_p1 > cont( this->poolReadObject< TileDigitsContainer_p1 >() );
51 trans_cont = converter_p1.createTransient( cont.get(), mlog );
52 }
53 else if( this->compareClassGuid(p0_guid)) {
54 // old version from before TP separation
56
57 if (mlog.level()<=MSG::DEBUG)
58 mlog << MSG::DEBUG << "Read IDC, size " << rdoV->size() << endmsg;
59
60 // TileFragHash::TYPE type = rdoV->m_type;
61
62 // create the Tile IdentifiableContainer to contain the rdo collections
63 trans_cont = new TileDigitsContainer(false,SG::OWN_ELEMENTS);
64
67
68 for (; it != last; ++it) {
69
70 TileDigitsCollection* rdoColl = *it;
72
73 // register the rdo collection in StoreGate
74 TileDigitsCollection::ID id_coll = rdoColl->identify();
75 StatusCode sc = trans_cont->addCollection(rdoColl,trans_cont->hashFunc()(id_coll));
76 if(sc.isFailure()) {
77 mlog << MSG::ERROR << "Can't add collection " << id_coll << " to container " << endmsg;
78 }
79 }
80 delete rdoV;
81 } else {
82 throw std::runtime_error("Unsupported persistent version of Data container");
83 }
84 return trans_cont;
85}
#define endmsg
static Double_t sc
TileDigitsContainer_p3 TileDigitsContainer_PERS
T_TilePoolContainerCnv< TileDigitsContainer, TileDigitsContainer_p1, TileDigitsCnv_p1 > TileDigitsContainerCnv_p1
T_TilePoolContainerCnv< TileDigitsContainer, TileDigitsContainer_p2, TileDigitsCnv_p2 > TileDigitsContainerCnv_p2
T_TilePoolContainerCnv< TileDigitsContainer, TileDigitsContainer_p3, TileDigitsCnv_p3 > TileDigitsContainerCnv_p3
Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Current TileDigitsContainer
DataModel_detail::iterator< DataVector > iterator
Definition DataVector.h:842
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
virtual StatusCode addCollection(const T *coll, IdentifierHash hashId) override final
insert collection into container with id hash if IDC should not take ownership of collection,...
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
virtual TRANS * createTransient(const PERS *persObj, MsgStream &log)
Compatibility for old converter classes that don't get passed the key.
TileDigitsContainer * createTransient()
TileDigitsContainerCnv(ISvcLocator *svcloc)
TileDigitsContainer_PERS * createPersistent(TileDigitsContainer *transCont)
void setOwnership(SG::OwnershipPolicy ownPolicy)
const TileFragHash & hashFunc() const
@ OWN_ELEMENTS
this data object owns its elements