ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCalib
MuonCalibStream
MuonCalibStreamCnvSvc
src
MuonCalibStreamAddressProviderSvc.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
#include "
MuonCalibStreamCnvSvc/MuonCalibStreamAddressProviderSvc.h
"
5
6
#include "GaudiKernel/IClassIDSvc.h"
7
#include "GaudiKernel/TypeNameString.h"
8
#include "
MuonCalibStreamCnvSvc/MuonCalibStreamAddress.h
"
9
#include "
SGTools/TransientAddress.h
"
10
12
MuonCalibStreamAddressProviderSvc::MuonCalibStreamAddressProviderSvc
(
const
std::string &name, ISvcLocator *svc) :
13
base_class(name, svc),
14
m_dataSvc
(
"MuonCalibStreamDataProviderSvc"
, name) {
15
m_typeNames
.push_back(
"Muon::MdtPrepDataContainer/MDT_DriftCircles"
);
16
m_typeNames
.push_back(
"RpcPadContainer/RPCPAD"
);
17
m_typeNames
.push_back(
"TgcRdoContainer/TGCRDO"
);
18
//m_typeNames.push_back("CscRawDataContainer/CSCRDO");
19
m_typeNames
.push_back(
"xAOD::EventInfo"
);
20
declareProperty(
"TypeNames"
,
m_typeNames
);
21
}
22
24
MuonCalibStreamAddressProviderSvc::~MuonCalibStreamAddressProviderSvc
() {}
25
27
StatusCode
MuonCalibStreamAddressProviderSvc::initialize
() {
28
ATH_CHECK
(
m_dataSvc
.retrieve());
29
ATH_MSG_INFO
(
" initialized "
);
30
return
StatusCode::SUCCESS;
31
}
32
33
StatusCode
MuonCalibStreamAddressProviderSvc::preLoadAddresses
(
StoreID::type
idp, tadList &tlist) {
34
ATH_MSG_DEBUG
(
" call MuonCalibStreamAddressProviderSvc::preLoadAddresses"
);
35
36
if
(idp !=
StoreID::EVENT_STORE
) {
37
ATH_MSG_DEBUG
(
"idp = "
<< idp <<
" != StoreID::EVENT_STORE; not creating TADs"
);
38
return
StatusCode::SUCCESS;
39
}
else
{
40
ATH_MSG_DEBUG
(
"idp = "
<< idp <<
" == StoreID::EVENT_STORE; Creating TADs for muon detectors!"
);
41
}
42
43
// only deal with event store.
44
std::vector<std::string>::const_iterator it =
m_typeNames
.begin();
45
std::vector<std::string>::const_iterator it_e =
m_typeNames
.end();
46
47
SmartIF<IClassIDSvc> clidSvc{service(
"ClassIDSvc"
)};
48
ATH_CHECK
(clidSvc.isValid());
49
50
for
(; it != it_e; ++it) {
51
Gaudi::Utils::TypeNameString item(*it);
52
std::string t = item.type();
53
std::string nm = item.name();
54
55
CLID
id;
56
ATH_CHECK
(clidSvc->getIDOfTypeName(t,
id
));
57
58
SG::TransientAddress
*tad =
new
SG::TransientAddress
(
id
, nm);
59
tlist.push_back(tad);
60
ATH_MSG_DEBUG
(
" created TAD for (type,clid,name,TAD)"
<< t <<
" "
<<
id
<<
" "
<< nm);
61
62
// save the clid and key.
63
m_clidKey
[id].insert(std::move(nm));
64
}
65
return
StatusCode::SUCCESS;
66
}
// MuonCalibStreamAddressProviderSvc::preLoadAddresses()
67
68
// update an existing transient Address
69
StatusCode
MuonCalibStreamAddressProviderSvc::updateAddress
(
StoreID::type
/*tp*/
,
SG::TransientAddress
*tad,
const
EventContext &) {
70
CLID
clid = tad->
clID
();
71
std::string nm = tad->
name
();
72
std::map<CLID, std::set<std::string> >
::const_iterator
it =
m_clidKey
.find(clid);
73
74
if
(it ==
m_clidKey
.end())
return
StatusCode::FAILURE;
75
76
if
((*it).second.count(nm) == 0)
return
StatusCode::FAILURE;
77
78
ATH_MSG_DEBUG
(
" creating address for "
<< clid <<
" "
<< nm);
79
80
MuonCalibStreamAddress
*
add
=
new
MuonCalibStreamAddress
(clid, nm,
""
);
81
tad->
setAddress
(
add
);
82
return
StatusCode::SUCCESS;
83
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
CLID
uint32_t CLID
The Class ID type.
Definition
Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
MuonCalibStreamAddressProviderSvc.h
MuonCalibStreamAddress.h
TransientAddress.h
const_iterator
MuonCalibStreamAddressProviderSvc::MuonCalibStreamAddressProviderSvc
MuonCalibStreamAddressProviderSvc(const std::string &name, ISvcLocator *svcloc)
Standard constructor.
Definition
MuonCalibStreamAddressProviderSvc.cxx:12
MuonCalibStreamAddressProviderSvc::preLoadAddresses
virtual StatusCode preLoadAddresses(StoreID::type id, tadList &tlist)
Definition
MuonCalibStreamAddressProviderSvc.cxx:33
MuonCalibStreamAddressProviderSvc::m_clidKey
std::map< CLID, std::set< std::string > > m_clidKey
Definition
MuonCalibStreamAddressProviderSvc.h:38
MuonCalibStreamAddressProviderSvc::~MuonCalibStreamAddressProviderSvc
virtual ~MuonCalibStreamAddressProviderSvc()
Standard Destructor.
Definition
MuonCalibStreamAddressProviderSvc.cxx:24
MuonCalibStreamAddressProviderSvc::updateAddress
virtual StatusCode updateAddress(StoreID::type tp, SG::TransientAddress *tad, const EventContext &)
update an existing transient Address
Definition
MuonCalibStreamAddressProviderSvc.cxx:69
MuonCalibStreamAddressProviderSvc::initialize
virtual StatusCode initialize()
Initialize the service.
Definition
MuonCalibStreamAddressProviderSvc.cxx:27
MuonCalibStreamAddressProviderSvc::m_typeNames
std::vector< std::string > m_typeNames
Definition
MuonCalibStreamAddressProviderSvc.h:36
MuonCalibStreamAddressProviderSvc::m_dataSvc
ServiceHandle< IMuonCalibStreamDataProviderSvc > m_dataSvc
Definition
MuonCalibStreamAddressProviderSvc.h:37
MuonCalibStreamAddress
Definition
MuonCalibStreamAddress.h:14
SG::TransientAddress
Definition
TransientAddress.h:34
SG::TransientAddress::clID
CLID clID() const
Retrieve string key:
Definition
TransientAddress.h:207
SG::TransientAddress::name
const std::string & name() const
Get the primary (hashed) SG key.
Definition
TransientAddress.h:214
SG::TransientAddress::setAddress
void setAddress(CxxUtils::RefCountedPtr< IOpaqueAddress > pAddress)
Retrieve primary clid.
Definition
TransientAddress.cxx:189
StoreID::type
type
Definition
StoreID.h:24
StoreID::EVENT_STORE
@ EVENT_STORE
Definition
StoreID.h:26
add
bool add(const std::string &hname, TKey *tobj)
Definition
fastadd.cxx:55
Generated on
for ATLAS Offline Software by
1.17.0