ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_DriftCircleContainerCnv.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
7
8#include <memory>
9
10#include <iostream>
11
13 : TRT_DriftCircleContainerCnvBase(svcloc, "TRT_DriftCircleContainerCnv"),
15 {}
16
17
19 ATH_MSG_INFO("TRT_DriftCircleContainerCnv::initialize()");
20
22
23 // Get the trt helper from the detector store
24 const TRT_ID* idhelper(nullptr);
25 ATH_CHECK( detStore()->retrieve(idhelper, "TRT_ID") );
26
27 ATH_CHECK( m_converter_p0.initialize(msg()) );
28
29 ATH_MSG_DEBUG("Converter initialized");
30
31 return StatusCode::SUCCESS;
32}
33
34
35InDet::TRT_DriftCircleContainer* TRT_DriftCircleContainerCnv::createTransient() {
36
37 static const pool::Guid p0_guid("A99630C5-3D7C-4DB4-9E6C-FC3CEF981895"); // before t/p split
38 static const pool::Guid p1_guid("42B48D79-AF4E-4D45-AAA9-A2BA5A033534"); // with TRT_DriftCircle_tlp1
39 static const pool::Guid p2_guid("36195EDE-941C-424B-81A1-E04C867C35D8"); // with TRT_DriftCircle_p2
40 ATH_MSG_DEBUG("createTransient(): main converter");
41 InDet::TRT_DriftCircleContainer* p_collection(nullptr);
42 if( compareClassGuid(p2_guid) ) {
43 ATH_MSG_DEBUG("createTransient(): T/P version 2 detected");
44 std::unique_ptr< InDet::TRT_DriftCircleContainer_p2 > col_vect( poolReadObject< InDet::TRT_DriftCircleContainer_p2 >() );
45 ATH_MSG_DEBUG("Delegate TP converter ");
46 p_collection = m_TPConverter2.createTransient( col_vect.get(), msg() );
47 }
48 else if( compareClassGuid(p1_guid) ) {
49 ATH_MSG_DEBUG("createTransient(): T/P version 1 detected");
50 std::unique_ptr< InDet::TRT_DriftCircleContainer_tlp1 > p_coll( poolReadObject< InDet::TRT_DriftCircleContainer_tlp1 >() );
51 p_collection = m_TPConverter.createTransient( p_coll.get(), msg() );
52 }
53 //----------------------------------------------------------------
54 else if( compareClassGuid(p0_guid) ) {
55 ATH_MSG_DEBUG("createTransient(): Old input file");
56 std::unique_ptr< TRT_DriftCircleContainer_p0 > col_vect( poolReadObject< TRT_DriftCircleContainer_p0 >() );
57 p_collection = m_converter_p0.createTransient( col_vect.get(), msg() );
58 }
59 else {
60 throw std::runtime_error("Unsupported persistent version of TRT_DriftCircleContainer");
61
62 }
63 return p_collection;
64}
65
66
68 TRT_DriftCircleContainer_PERS *trtdc_p= m_TPConverter2.createPersistent( transCont, msg() );
69 return trtdc_p;
70}
71
72
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
InDet::TRT_DriftCircleContainer_p2 TRT_DriftCircleContainer_PERS
T_AthenaPoolCustomCnv< InDet::TRT_DriftCircleContainer, TRT_DriftCircleContainer_PERS > TRT_DriftCircleContainerCnvBase
This is an Identifier helper class for the TRT subdetector.
TRT_DriftCircleContainerCnv_p0 m_converter_p0
virtual StatusCode initialize() override
Gaudi Service Interface method implementations:
virtual InDet::TRT_DriftCircleContainer * createTransient() override
TRT_DriftCircleContainerCnv_tlp1 m_TPConverter
virtual TRT_DriftCircleContainer_PERS * createPersistent(InDet::TRT_DriftCircleContainer *transCont) override
TRT_DriftCircleContainerCnv_p2 m_TPConverter2
This is an Identifier helper class for the TRT subdetector.
Definition TRT_ID.h:82