Forked from
Dan Guest / athena
32330 commits behind the upstream repository.
-
Scott Snyder authoredScott Snyder authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
TileDigitsContainerCnv.cxx 2.39 KiB
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#include "TileTPCnv/TileDigitsContainerCnv_p1.h"
#include "TileDigitsContainerCnv.h"
// Gaudi
#include "GaudiKernel/MsgStream.h"
TileDigitsContainer_PERS* TileDigitsContainerCnv::createPersistent(TileDigitsContainer* transCont) {
MsgStream mlog(messageService(), "TileDigitsContainerConverter" );
TileDigitsContainerCnv_p1 converter;
TileDigitsContainer_PERS *persObj = converter.createPersistent( transCont, mlog );
return persObj;
}
TileDigitsContainer* TileDigitsContainerCnv::createTransient() {
MsgStream mlog(messageService(), "TileDigitsContainerConverter" );
TileDigitsContainerCnv_p1 converter_p1;
TileDigitsContainer *trans_cont(0);
static const pool::Guid p1_guid("F9386A42-43A7-4482-8A5B-F33EDE586FB2");
static const pool::Guid p0_guid("EB51ED70-5EC0-4F31-97D3-14453F77C88B");
if( this->compareClassGuid(p1_guid)) {
std::auto_ptr< TileDigitsContainer_p1 > cont( this->poolReadObject< TileDigitsContainer_p1 >() );
trans_cont = converter_p1.createTransient( cont.get(), mlog );
}
else if( this->compareClassGuid(p0_guid)) {
// old version from before TP separation
TileDigitsCollectionVec* rdoV = this->poolReadObject<TileDigitsCollectionVec>();
if (mlog.level()<=MSG::DEBUG)
mlog << MSG::DEBUG << "Read IDC, size " << rdoV->size() << endreq;
// TileFragHash::TYPE type = rdoV->m_type;
// create the Tile IdentifiableContainer to contain the rdo collections
trans_cont = new TileDigitsContainer(false,SG::OWN_ELEMENTS);
TileDigitsCollectionVec::iterator it = rdoV->begin();
TileDigitsCollectionVec::iterator last = rdoV->end();
for (; it != last; ++it) {
TileDigitsCollection* rdoColl = *it;
rdoColl->setOwnership(SG::OWN_ELEMENTS);
// register the rdo collection in StoreGate
TileDigitsCollection::ID id_coll = rdoColl->identify();
StatusCode sc = trans_cont->addCollection(rdoColl,trans_cont->hashFunc()(id_coll));
if(sc.isFailure()) {
mlog << MSG::ERROR << "Can't add collection " << id_coll << " to container " << endreq;
}
}
delete rdoV;
} else {
throw std::runtime_error("Unsupported persistent version of Data container");
}
return trans_cont;
}