ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
MuonIdentification
MuonCombinedAlgs
src
MuonCombinedInDetExtensionAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
MuonCombinedInDetExtensionAlg.h
"
6
7
#include "
MuonCombinedEvent/MuonCandidateCollection.h
"
8
9
MuonCombinedInDetExtensionAlg::MuonCombinedInDetExtensionAlg
(
const
std::string& name, ISvcLocator* pSvcLocator) :
10
AthReentrantAlgorithm
(name, pSvcLocator) {}
11
12
StatusCode
MuonCombinedInDetExtensionAlg::initialize
() {
13
ATH_MSG_VERBOSE
(
" usePRDs = "
<<
m_usePRDs
);
14
ATH_CHECK
(
m_muonCombinedInDetExtensionTool
.retrieve());
15
ATH_CHECK
(
m_indetCandidateCollectionName
.initialize());
16
ATH_CHECK
(
m_MDT_ContainerName
.initialize(
m_usePRDs
));
17
ATH_CHECK
(
m_RPC_ContainerName
.initialize(
m_usePRDs
));
18
ATH_CHECK
(
m_TGC_ContainerName
.initialize(
m_usePRDs
));
19
ATH_CHECK
(
m_CSC_ContainerName
.initialize(
m_usePRDs
&&
m_hasCSC
));
20
ATH_CHECK
(
m_sTGC_ContainerName
.initialize(
m_usePRDs
&&
m_hasSTGC
));
21
ATH_CHECK
(
m_MM_ContainerName
.initialize(
m_usePRDs
&&
m_hasMM
));
22
ATH_CHECK
(
m_tagMap
.initialize());
23
ATH_CHECK
(
m_combTracks
.initialize(!
m_combTracks
.key().empty()));
24
ATH_CHECK
(
m_METracks
.initialize(!
m_METracks
.key().empty()));
25
ATH_CHECK
(
m_segments
.initialize(!
m_segments
.key().empty()));
26
27
return
StatusCode::SUCCESS;
28
}
29
30
StatusCode
MuonCombinedInDetExtensionAlg::execute
(
const
EventContext& ctx)
const
{
31
SG::ReadHandle<InDetCandidateCollection>
indetCandidateCollection(
m_indetCandidateCollectionName
, ctx);
32
if
(!indetCandidateCollection.
isValid
()) {
33
ATH_MSG_ERROR
(
"Could not read "
<<
m_indetCandidateCollectionName
);
34
return
StatusCode::FAILURE;
35
}
36
ATH_MSG_VERBOSE
(
"Loaded InDetCandidateCollection "
<<
m_indetCandidateCollectionName
<<
" with "
<< indetCandidateCollection->size()
37
<<
" elements."
);
38
if
(
msgLvl
(MSG::VERBOSE)) {
39
for
(
const
MuonCombined::InDetCandidate
* candidate : *indetCandidateCollection){
40
ATH_MSG_VERBOSE
(candidate->toString());
41
}
42
}
43
44
45
MuonCombined::InDetCandidateToTagMap
* tagMap{
nullptr
};
46
TrackCollection
* combTracks{
nullptr
}, *meTracks{
nullptr
};
47
Trk::SegmentCollection
* segments{
nullptr
};
48
ATH_CHECK
(
record
(ctx,
m_tagMap
, tagMap));
49
ATH_CHECK
(
record
(ctx,
m_combTracks
, combTracks ));
50
ATH_CHECK
(
record
(ctx,
m_METracks
, meTracks ));
51
ATH_CHECK
(
record
(ctx,
m_segments
, segments ));
52
53
if
(
m_usePRDs
) {
54
MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData
prdData{};
55
ATH_CHECK
(
loadPrdContainer
(ctx,
m_MDT_ContainerName
, prdData.
mdtPrds
));
56
ATH_CHECK
(
loadPrdContainer
(ctx,
m_CSC_ContainerName
, prdData.
cscPrds
));
57
ATH_CHECK
(
loadPrdContainer
(ctx,
m_sTGC_ContainerName
, prdData.
stgcPrds
));
58
ATH_CHECK
(
loadPrdContainer
(ctx,
m_MM_ContainerName
, prdData.
mmPrds
));
59
ATH_CHECK
(
loadPrdContainer
(ctx,
m_RPC_ContainerName
, prdData.
rpcPrds
));
60
ATH_CHECK
(
loadPrdContainer
(ctx,
m_TGC_ContainerName
, prdData.
tgcPrds
));
61
m_muonCombinedInDetExtensionTool
->extendWithPRDs(*indetCandidateCollection, tagMap, prdData, combTracks, meTracks, segments, ctx);
62
63
}
else
{
64
m_muonCombinedInDetExtensionTool
->extend(*indetCandidateCollection, tagMap, combTracks, meTracks, segments, ctx);
65
}
66
return
StatusCode::SUCCESS;
67
}
68
template
<
class
ContType> StatusCode
MuonCombinedInDetExtensionAlg::loadPrdContainer
(
const
EventContext& ctx ,
const
SG::ReadHandleKey<ContType>
& key,
const
ContType* & target_ptr)
const
{
69
if
(key.empty()) {
70
ATH_MSG_DEBUG
(
"loadPrdContainer() -- No key given assume it's intended"
);
71
target_ptr =
nullptr
;
72
return
StatusCode::SUCCESS;
73
}
74
SG::ReadHandle<ContType>
readHandle{key,ctx};
75
if
(!readHandle.
isValid
()) {
76
ATH_MSG_FATAL
(
"Failed to load "
<<key.fullKey());
77
return
StatusCode::FAILURE;
78
}
79
ATH_MSG_VERBOSE
(
"Loaded successfully "
<<key.fullKey());
80
target_ptr = readHandle.
cptr
();
81
return
StatusCode::SUCCESS;
82
}
83
template
<
class
ContType> StatusCode
MuonCombinedInDetExtensionAlg::record
(
const
EventContext& ctx,
const
SG::WriteHandleKey<ContType>
& key, ContType* & target_ptr)
const
{
84
if
(key.empty()) {
85
ATH_MSG_VERBOSE
(
"record() -- No key was given... Assume it's intended "
);
86
target_ptr =
nullptr
;
87
return
StatusCode::SUCCESS;
88
}
89
SG::WriteHandle<ContType>
writeHandle{key, ctx};
90
ATH_CHECK
(writeHandle.
record
(std::make_unique<ContType>()));
91
target_ptr = writeHandle.
ptr
();
92
ATH_MSG_VERBOSE
(
"record() -- Successfully written "
<<key.fullKey());
93
return
StatusCode::SUCCESS;
94
}
95
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
MuonCandidateCollection.h
MuonCombinedInDetExtensionAlg.h
TrackCollection
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
Definition
TrackCollection.h:19
AthCommonAlgorithm< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition
AthCommonMsg.h:30
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition
AthReentrantAlgorithm.h:74
MuonCombinedInDetExtensionAlg::m_hasMM
Gaudi::Property< bool > m_hasMM
Definition
MuonCombinedInDetExtensionAlg.h:112
MuonCombinedInDetExtensionAlg::m_TGC_ContainerName
SG::ReadHandleKey< Muon::TgcPrepDataContainer > m_TGC_ContainerName
Definition
MuonCombinedInDetExtensionAlg.h:66
MuonCombinedInDetExtensionAlg::m_METracks
SG::WriteHandleKey< TrackCollection > m_METracks
Definition
MuonCombinedInDetExtensionAlg.h:96
MuonCombinedInDetExtensionAlg::m_MM_ContainerName
SG::ReadHandleKey< Muon::MMPrepDataContainer > m_MM_ContainerName
Definition
MuonCombinedInDetExtensionAlg.h:78
MuonCombinedInDetExtensionAlg::MuonCombinedInDetExtensionAlg
MuonCombinedInDetExtensionAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition
MuonCombinedInDetExtensionAlg.cxx:9
MuonCombinedInDetExtensionAlg::m_hasCSC
Gaudi::Property< bool > m_hasCSC
Definition
MuonCombinedInDetExtensionAlg.h:110
MuonCombinedInDetExtensionAlg::m_tagMap
SG::WriteHandleKey< MuonCombined::InDetCandidateToTagMap > m_tagMap
Definition
MuonCombinedInDetExtensionAlg.h:84
MuonCombinedInDetExtensionAlg::m_segments
SG::WriteHandleKey< Trk::SegmentCollection > m_segments
Definition
MuonCombinedInDetExtensionAlg.h:102
MuonCombinedInDetExtensionAlg::initialize
StatusCode initialize() override
Definition
MuonCombinedInDetExtensionAlg.cxx:12
MuonCombinedInDetExtensionAlg::m_sTGC_ContainerName
SG::ReadHandleKey< Muon::sTgcPrepDataContainer > m_sTGC_ContainerName
Definition
MuonCombinedInDetExtensionAlg.h:72
MuonCombinedInDetExtensionAlg::m_usePRDs
Gaudi::Property< bool > m_usePRDs
Definition
MuonCombinedInDetExtensionAlg.h:109
MuonCombinedInDetExtensionAlg::m_CSC_ContainerName
SG::ReadHandleKey< Muon::CscPrepDataContainer > m_CSC_ContainerName
Definition
MuonCombinedInDetExtensionAlg.h:54
MuonCombinedInDetExtensionAlg::m_hasSTGC
Gaudi::Property< bool > m_hasSTGC
Definition
MuonCombinedInDetExtensionAlg.h:111
MuonCombinedInDetExtensionAlg::m_indetCandidateCollectionName
SG::ReadHandleKey< InDetCandidateCollection > m_indetCandidateCollectionName
Definition
MuonCombinedInDetExtensionAlg.h:42
MuonCombinedInDetExtensionAlg::loadPrdContainer
StatusCode loadPrdContainer(const EventContext &ctx, const SG::ReadHandleKey< ContType > &key, const ContType *&target_ptr) const
Definition
MuonCombinedInDetExtensionAlg.cxx:68
MuonCombinedInDetExtensionAlg::m_combTracks
SG::WriteHandleKey< TrackCollection > m_combTracks
Definition
MuonCombinedInDetExtensionAlg.h:90
MuonCombinedInDetExtensionAlg::m_MDT_ContainerName
SG::ReadHandleKey< Muon::MdtPrepDataContainer > m_MDT_ContainerName
Definition
MuonCombinedInDetExtensionAlg.h:48
MuonCombinedInDetExtensionAlg::execute
StatusCode execute(const EventContext &ctx) const override
Definition
MuonCombinedInDetExtensionAlg.cxx:30
MuonCombinedInDetExtensionAlg::m_muonCombinedInDetExtensionTool
ToolHandle< MuonCombined::IMuonCombinedInDetExtensionTool > m_muonCombinedInDetExtensionTool
Definition
MuonCombinedInDetExtensionAlg.h:40
MuonCombinedInDetExtensionAlg::m_RPC_ContainerName
SG::ReadHandleKey< Muon::RpcPrepDataContainer > m_RPC_ContainerName
Definition
MuonCombinedInDetExtensionAlg.h:60
MuonCombinedInDetExtensionAlg::record
StatusCode record(const EventContext &ctx, const SG::WriteHandleKey< ContType > &key, ContType *&target_ptr) const
Definition
MuonCombinedInDetExtensionAlg.cxx:83
MuonCombined::InDetCandidateToTagMap
Definition
InDetCandidateToTagMap.h:15
MuonCombined::InDetCandidate
Definition
InDetCandidate.h:18
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition
StoreGate/StoreGate/ReadHandleKey.h:40
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition
StoreGate/StoreGate/WriteHandleKey.h:40
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.
Trk::SegmentCollection
DataVector< Trk::Segment > SegmentCollection
Definition
SegmentCollection.h:13
MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData
Definition
IMuonCombinedInDetExtensionTool.h:27
MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData::tgcPrds
const Muon::TgcPrepDataContainer * tgcPrds
Definition
IMuonCombinedInDetExtensionTool.h:31
MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData::stgcPrds
const Muon::sTgcPrepDataContainer * stgcPrds
Definition
IMuonCombinedInDetExtensionTool.h:33
MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData::rpcPrds
const Muon::RpcPrepDataContainer * rpcPrds
Definition
IMuonCombinedInDetExtensionTool.h:30
MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData::cscPrds
const Muon::CscPrepDataContainer * cscPrds
Definition
IMuonCombinedInDetExtensionTool.h:32
MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData::mmPrds
const Muon::MMPrepDataContainer * mmPrds
Definition
IMuonCombinedInDetExtensionTool.h:34
MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData::mdtPrds
const Muon::MdtPrepDataContainer * mdtPrds
Definition
IMuonCombinedInDetExtensionTool.h:29
Generated on
for ATLAS Offline Software by
1.17.0