11 #include "GaudiKernel/ISvcLocator.h"
12 #include "GaudiKernel/MsgStream.h"
13 #include "GaudiKernel/StatusCode.h"
18 #include "Identifier/Identifier.h"
28 ISvcLocator* svcLocator = Gaudi::svcLocator();
34 return StatusCode::FAILURE;
37 sc = svcLocator->service(
"DetectorStore",
detStore);
40 return StatusCode::FAILURE;
46 return StatusCode::FAILURE;
49 return StatusCode::SUCCESS;
53 const Trans_t* transient_container,
Pers_t* persistent_container,
57 if (this->
initialize(log) != StatusCode::SUCCESS) {
58 log <<
MSG::FATAL <<
"Could not initialize HGTD_RDO_ContainerCnv_p1 "
64 size_t n_collections = transient_container->numberOfCollections();
65 Trans_t::const_iterator container_itr = transient_container->begin();
69 size_t collection_separator_index_begin = 0;
70 size_t total_n_clusters = 0;
72 for (
size_t coll_i = 0; coll_i < n_collections; coll_i++, ++container_itr) {
75 size_t collection_size = collection.
size();
84 total_n_clusters += collection_size;
85 persistent_container->
m_rdo_list.resize(total_n_clusters);
89 << collection_size <<
endmsg;
92 for (
size_t rdo_i = 0; rdo_i < collection_size; rdo_i++) {
96 .at(rdo_i + collection_separator_index_begin));
99 dynamic_cast<const HGTD_RDO*
>(collection.
at(rdo_i));
104 collection_separator_index_begin += collection.
size();
109 <<
"Writing HGTD_ClusterContainer to HGTD_ClusterContainer_p1 done"
118 const Pers_t* persistent_container,
Trans_t* transient_container,
122 if (this->
initialize(log) != StatusCode::SUCCESS) {
123 log <<
MSG::FATAL <<
"Could not initialize HGTD_RDO_ContainerCnv_p1 "
128 std::unique_ptr<HGTD_RDO_Collection> collection =
nullptr;
131 size_t collection_separator_index_begin = 0;
133 for (
size_t coll_i = 0;
141 collection = std::make_unique<HGTD_RDO_Collection>(coll_idhash);
144 unsigned short n_clusters = rdo_coll.
m_size;
145 collection->
resize(n_clusters);
146 for (
unsigned short rdo_i = 0; rdo_i < n_clusters; ++rdo_i) {
149 .at(rdo_i + collection_separator_index_begin));
154 (*collection).at(rdo_i) = trans_rdo;
156 collection_separator_index_begin += n_clusters;
159 transient_container->addCollection(collection.release(), coll_idhash);
160 if (
sc.isFailure()) {
161 throw std::runtime_error(
"Failed to add collection to ID Container");
168 const Pers_t* persistent_container, MsgStream&
log) {
171 if (this->
initialize(log) != StatusCode::SUCCESS) {
172 log <<
MSG::FATAL <<
"Could not initialize HGTD_RDO_ContainerCnv_p1 "
177 std::unique_ptr<Trans_t> transient_container =
180 persToTrans(persistent_container, transient_container.get(),
log);
182 return (transient_container.release());