ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TileCalorimeter
TileSvc
TileEventAthenaPool
src
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
5
#include "
TileTPCnv/TileDigitsContainerCnv_p1.h
"
6
#include "
TileTPCnv/TileDigitsContainerCnv_p2.h
"
7
#include "
TileTPCnv/TileDigitsContainerCnv_p3.h
"
8
#include "
TileDigitsContainerCnv.h
"
9
// Gaudi
10
#include "GaudiKernel/MsgStream.h"
11
12
TileDigitsContainerCnv::TileDigitsContainerCnv
(ISvcLocator* svcloc)
13
:
T_AthenaPoolCustomCnv
<
TileDigitsContainer
,
TileDigitsContainer_PERS
>( svcloc)
14
{
15
ServiceHandle<IService>
cablingSvc (
"TileCablingSvc"
,
"TileDigitsContainerCnv"
);
16
if
(cablingSvc.retrieve().isFailure()) {
17
std::abort();
18
}
19
}
20
21
TileDigitsContainer_PERS
*
TileDigitsContainerCnv::createPersistent
(
TileDigitsContainer
* transCont) {
22
MsgStream mlog(msgSvc(),
"TileDigitsContainerConverter"
);
23
TileDigitsContainerCnv_p3
converter;
24
TileDigitsContainer_PERS
*persObj = converter.
createPersistent
( transCont, mlog );
25
return
persObj;
26
}
27
28
TileDigitsContainer
*
TileDigitsContainerCnv::createTransient
(
const
Token
* token) {
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
(token, p3_guid)) {
42
std::unique_ptr< TileDigitsContainer_p3 > cont( this->
poolReadObject< TileDigitsContainer_p3 >
(token) );
43
trans_cont = converter_p3.
createTransient
( cont.get(), mlog );
44
}
45
else
if
( this->
compareClassGuid
(token, p2_guid)) {
46
std::unique_ptr< TileDigitsContainer_p2 > cont( this->
poolReadObject< TileDigitsContainer_p2 >
(token) );
47
trans_cont = converter_p2.
createTransient
( cont.get(), mlog );
48
}
49
else
if
( this->
compareClassGuid
(token, p1_guid)) {
50
std::unique_ptr< TileDigitsContainer_p1 > cont( this->
poolReadObject< TileDigitsContainer_p1 >
(token) );
51
trans_cont = converter_p1.
createTransient
( cont.get(), mlog );
52
}
53
else
if
( this->
compareClassGuid
(token, p0_guid)) {
54
// old version from before TP separation
55
TileDigitsCollectionVec
* rdoV = this->
poolReadObject<TileDigitsCollectionVec>
(token);
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
65
TileDigitsCollectionVec::iterator
it = rdoV->
begin
();
66
TileDigitsCollectionVec::iterator
last = rdoV->
end
();
67
68
for
(; it != last; ++it) {
69
70
TileDigitsCollection
* rdoColl = *it;
71
rdoColl->
setOwnership
(
SG::OWN_ELEMENTS
);
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
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
TileDigitsContainerCnv.h
TileDigitsContainer_PERS
TileDigitsContainer_p3 TileDigitsContainer_PERS
Definition
TileDigitsContainerCnv.h:14
TileDigitsContainerCnv_p1.h
TileDigitsContainerCnv_p1
T_TilePoolContainerCnv< TileDigitsContainer, TileDigitsContainer_p1, TileDigitsCnv_p1 > TileDigitsContainerCnv_p1
Definition
TileDigitsContainerCnv_p1.h:27
TileDigitsContainerCnv_p2.h
TileDigitsContainerCnv_p2
T_TilePoolContainerCnv< TileDigitsContainer, TileDigitsContainer_p2, TileDigitsCnv_p2 > TileDigitsContainerCnv_p2
Definition
TileDigitsContainerCnv_p2.h:27
TileDigitsContainerCnv_p3.h
TileDigitsContainerCnv_p3
T_TilePoolContainerCnv< TileDigitsContainer, TileDigitsContainer_p3, TileDigitsCnv_p3 > TileDigitsContainerCnv_p3
Definition
TileDigitsContainerCnv_p3.h:27
TileDigitsContainer
Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Current TileDigitsContainer
Definition
TileTPCnv.cxx:103
DataVector< TileDigitsCollection >::iterator
DataModel_detail::iterator< DataVector > iterator
Definition
DataVector.h:842
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
IdentifiableContainerMT::addCollection
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,...
Definition
IdentifiableContainerMT.h:306
ServiceHandle
Definition
ClusterMakerTool.h:36
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::createPersistent
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
TPPolyCnvBase< TRANS, TRANS, PERS >::createTransient
virtual TRANS * createTransient(const PERS *persObj, MsgStream &log)
T_AthenaPoolCustomCnv< TileDigitsContainer, TileDigitsContainer_PERS >::compareClassGuid
virtual bool compareClassGuid(const Token *token, const Guid &clid) const
T_AthenaPoolCustomCnv< TileDigitsContainer, TileDigitsContainer_PERS >::poolReadObject
P * poolReadObject(const Token *token)
T_AthenaPoolCustomCnv
Compatibility for old converter classes that don't get passed the key.
Definition
T_AthenaPoolCustomCnv.h:129
TileDigitsCollectionVec
Definition
TileDigitsContainer.h:34
TileDigitsCollection
Definition
TileDigitsCollection.h:18
TileDigitsCollection::ID
MyBase::ID ID
Definition
TileDigitsCollection.h:23
TileDigitsContainerCnv::createTransient
TileDigitsContainer * createTransient(const Token *token)
Definition
TileDigitsContainerCnv.cxx:28
TileDigitsContainerCnv::TileDigitsContainerCnv
TileDigitsContainerCnv(ISvcLocator *svcloc)
Definition
TileDigitsContainerCnv.cxx:12
TileDigitsContainerCnv::createPersistent
TileDigitsContainer_PERS * createPersistent(TileDigitsContainer *transCont)
Definition
TileDigitsContainerCnv.cxx:21
TileDigitsContainer
Definition
TileDigitsContainer.h:13
TileRawDataCollection::setOwnership
void setOwnership(SG::OwnershipPolicy ownPolicy)
Definition
TileRawDataCollection.h:110
TileRawDataCollection::identify
ID identify() const
Definition
TileRawDataCollection.h:71
TileRawDataContainer::hashFunc
const TileFragHash & hashFunc() const
Definition
TileRawDataContainer.h:66
Token
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition
Token.h:22
SG::OWN_ELEMENTS
@ OWN_ELEMENTS
this data object owns its elements
Definition
OwnershipPolicy.h:17
pool::Guid
::Guid Guid
Definition
T_AthenaPoolCustCnv.h:19
Generated on
for ATLAS Offline Software by
1.17.0