ATLAS Offline Software
Loading...
Searching...
No Matches
MuonCalibStreamAddressProviderSvc.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
5
6#include "GaudiKernel/IClassIDSvc.h"
7#include "GaudiKernel/TypeNameString.h"
10
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
25
28 ATH_CHECK(m_dataSvc.retrieve());
29 ATH_MSG_INFO(" initialized ");
30 return StatusCode::SUCCESS;
31}
32
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
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
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
81 tad->setAddress(add);
82 return StatusCode::SUCCESS;
83}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
uint32_t CLID
The Class ID type.
MuonCalibStreamAddressProviderSvc(const std::string &name, ISvcLocator *svcloc)
Standard constructor.
virtual StatusCode preLoadAddresses(StoreID::type id, tadList &tlist)
std::map< CLID, std::set< std::string > > m_clidKey
virtual ~MuonCalibStreamAddressProviderSvc()
Standard Destructor.
virtual StatusCode updateAddress(StoreID::type tp, SG::TransientAddress *tad, const EventContext &)
update an existing transient Address
virtual StatusCode initialize()
Initialize the service.
ServiceHandle< IMuonCalibStreamDataProviderSvc > m_dataSvc
CLID clID() const
Retrieve string key:
const std::string & name() const
Get the primary (hashed) SG key.
void setAddress(CxxUtils::RefCountedPtr< IOpaqueAddress > pAddress)
Retrieve primary clid.
@ EVENT_STORE
Definition StoreID.h:26
bool add(const std::string &hname, TKey *tobj)
Definition fastadd.cxx:55