ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigAlgorithms
TrigMuonEF
src
MergeEFMuonsAlg.cxx
Go to the documentation of this file.
1
/*
2
Merge muon containers from inside-out and outside-in reconstruction
3
4
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
#include "
MergeEFMuonsAlg.h
"
8
#include "
xAODMuon/MuonAuxContainer.h
"
9
10
MergeEFMuonsAlg::MergeEFMuonsAlg
(
const
std::string& name, ISvcLocator* pSvcLocator )
11
:
AthReentrantAlgorithm
(name, pSvcLocator)
12
{
13
}
14
15
StatusCode
MergeEFMuonsAlg::initialize
(){
16
17
ATH_CHECK
(
m_muonCBContainerKey
.initialize());
18
renounce
(
m_muonInsideOutContainerKey
);
19
ATH_CHECK
(
m_muonInsideOutContainerKey
.initialize());
20
ATH_CHECK
(
m_muonOutputKey
.initialize());
21
return
StatusCode::SUCCESS;
22
}
23
24
StatusCode
MergeEFMuonsAlg::execute
(
const
EventContext& ctx)
const
25
{
26
27
SG::WriteHandle<xAOD::MuonContainer>
wh_outmuons(
m_muonOutputKey
, ctx);
28
ATH_CHECK
(wh_outmuons.
record
(std::make_unique<xAOD::MuonContainer>(), std::make_unique<xAOD::MuonAuxContainer>()));
29
xAOD::MuonContainer
*muonsout = wh_outmuons.
ptr
();
30
31
SG::ReadHandle<xAOD::MuonContainer>
rh_cbmuons(
m_muonCBContainerKey
, ctx);
32
if
(rh_cbmuons.
isValid
()){
33
const
xAOD::MuonContainer
*cbMuons = rh_cbmuons.
ptr
();
34
ATH_MSG_DEBUG
(
"adding outside-in muons with size: "
<<cbMuons->
size
());
35
for
(
auto
muon : *cbMuons){
36
muonsout->
push_back
(
new
xAOD::Muon
(*muon));
37
}
38
}
39
40
SG::ReadHandle<xAOD::MuonContainer>
rh_insideoutmuons(
m_muonInsideOutContainerKey
, ctx);
41
if
(rh_insideoutmuons.
isValid
()){
42
const
xAOD::MuonContainer
*insideOutMuons = rh_insideoutmuons.
ptr
();
43
ATH_MSG_DEBUG
(
"adding inside-out muons with size: "
<<insideOutMuons->
size
());
44
for
(
auto
muon : *insideOutMuons){
45
muonsout->
push_back
(
new
xAOD::Muon
(*muon));
46
}
47
}
48
49
return
StatusCode::SUCCESS;
50
51
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
MergeEFMuonsAlg.h
MuonAuxContainer.h
AthCommonAlgorithm< Gaudi::Algorithm >::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition
AthCommonDataStore.h:380
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition
AthReentrantAlgorithm.h:74
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
MergeEFMuonsAlg::m_muonOutputKey
SG::WriteHandleKey< xAOD::MuonContainer > m_muonOutputKey
Definition
MergeEFMuonsAlg.h:32
MergeEFMuonsAlg::initialize
virtual StatusCode initialize() override
initialize
Definition
MergeEFMuonsAlg.cxx:15
MergeEFMuonsAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
execute the filter alg
Definition
MergeEFMuonsAlg.cxx:24
MergeEFMuonsAlg::m_muonCBContainerKey
SG::ReadHandleKey< xAOD::MuonContainer > m_muonCBContainerKey
Definition
MergeEFMuonsAlg.h:30
MergeEFMuonsAlg::m_muonInsideOutContainerKey
SG::ReadHandleKey< xAOD::MuonContainer > m_muonInsideOutContainerKey
Definition
MergeEFMuonsAlg.h:31
MergeEFMuonsAlg::MergeEFMuonsAlg
MergeEFMuonsAlg(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
MergeEFMuonsAlg.cxx:10
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
SG::ReadHandle::ptr
const_pointer_type ptr()
Dereference the pointer.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::WriteHandle
Definition
StoreGate/StoreGate/WriteHandle.h:73
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
xAOD::Muon
Muon_v1 Muon
Reference the current persistent version:
Definition
Event/xAOD/xAODMuon/xAODMuon/Muon.h:13
xAOD::MuonContainer
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
Definition
Event/xAOD/xAODMuon/xAODMuon/MuonContainer.h:14
Generated on
for ATLAS Offline Software by
1.17.0