ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigAlgorithms
TrigL2MuonSA
src
MmDataPreparator.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
MmDataPreparator.h
"
6
7
TrigL2MuonSA::MmDataPreparator::MmDataPreparator
(
const
std::string&
type
,
8
const
std::string& name,
9
const
IInterface* parent):
10
AthAlgTool
(
type
,name,parent),
11
m_regionSelector
(
"RegSelTool/RegSelTool_MM"
,this)
12
{
13
declareProperty
(
"RegSel_MM"
,
m_regionSelector
);
14
}
15
16
StatusCode
TrigL2MuonSA::MmDataPreparator::initialize
()
17
{
18
19
// Locate RegionSelector
20
ATH_CHECK
(
m_regionSelector
.retrieve() );
21
ATH_MSG_DEBUG
(
"Retrieved service RegionSelector"
);
22
23
ATH_CHECK
(
m_idHelperSvc
.retrieve());
24
ATH_MSG_DEBUG
(
"Retrieved "
<<
m_idHelperSvc
);
25
26
ATH_CHECK
(
m_mmPrepContainerKey
.initialize(!
m_mmPrepContainerKey
.empty()));
27
28
return
StatusCode::SUCCESS;
29
}
30
31
StatusCode
TrigL2MuonSA::MmDataPreparator::prepareData
(
const
EventContext& ctx,
32
const
TrigRoiDescriptor
* p_roids,
33
TrigL2MuonSA::MmHits
& mmHits)
const
34
{
35
36
ATH_MSG_DEBUG
(
"MmDataPreparator::prepareData() was called."
);
37
38
mmHits.clear();
39
40
std::vector<const Muon::MMPrepDataCollection*> mmCols;
41
std::vector<IdentifierHash> mmHashList;
42
std::vector<IdentifierHash> mmHashList_cache;
43
44
// Get MM container
45
if
(
m_mmPrepContainerKey
.empty()) {
46
ATH_MSG_INFO
(
"no mmPrepContainerKey"
);
47
return
StatusCode::SUCCESS;
48
}
49
auto
mmPrepContainerHandle =
SG::makeHandle
(
m_mmPrepContainerKey
, ctx);
50
if
(!mmPrepContainerHandle.isValid()) {
51
ATH_MSG_ERROR
(
"Cannot retrieve MM PRD Container key: "
<<
m_mmPrepContainerKey
.key());
52
return
StatusCode::FAILURE;
53
}
else
{
54
ATH_MSG_DEBUG
(
"MM PRD Container retrieved with key: "
<<
m_mmPrepContainerKey
.key());
55
}
56
const
Muon::MMPrepDataContainer
* mmPrds = mmPrepContainerHandle.cptr();
57
58
if
(
m_use_RoIBasedDataAccess
) {
59
// ATH_MSG_ERROR("RoI based data access is not available yet");
60
61
ATH_MSG_DEBUG
(
"Use RoI based data access"
);
62
const
IRoiDescriptor
* iroi =
static_cast<
const
IRoiDescriptor
*
>
(p_roids);
63
if
(iroi)
m_regionSelector
->lookup(ctx)->HashIDList(*iroi, mmHashList);
64
else
{
65
TrigRoiDescriptor
fullscan_roi(
true
);
66
m_regionSelector
->lookup(ctx)->HashIDList(fullscan_roi, mmHashList);
67
}
68
ATH_MSG_DEBUG
(
"mmHashList.size()="
<< mmHashList.size());
69
70
std::vector<uint32_t> mmRobList;
71
m_regionSelector
->lookup(ctx)->ROBIDList(*iroi, mmRobList);
72
73
if
(!mmHashList.empty()) {
74
75
// Get MM collections
76
for
(
const
IdentifierHash
&
id
: mmHashList) {
77
78
const
auto
* MMcoll = mmPrds->
indexFindPtr
(
id
);
79
80
if
( MMcoll ==
nullptr
) {
81
continue
;
82
}
83
84
if
( MMcoll->size() == 0) {
85
ATH_MSG_DEBUG
(
"Empty MM list"
);
86
continue
;
87
}
88
89
mmHashList_cache.push_back(
id
);
90
mmCols.push_back(MMcoll);
91
}
92
}
93
94
}
95
else
{
96
ATH_MSG_DEBUG
(
"Use full data access"
);
97
98
// Get MM collections
99
for
(
const
auto
mmcoll : *mmPrds) {
100
mmCols.push_back(mmcoll);
101
}
102
103
}
104
105
106
for
(
const
Muon::MMPrepDataCollection
* mm : mmCols ){
107
108
mmHits.reserve( mmHits.size() + mm->size() );
109
for
(
const
Muon::MMPrepData
* prd : *mm ) {
110
111
// save MM hit data in MmHitData
112
TrigL2MuonSA::MmHitData
lutDigit;
113
114
lutDigit.
eta
= prd->globalPosition().eta();
115
lutDigit.
phi
= prd->globalPosition().phi();
116
lutDigit.
r
= prd->globalPosition().perp();
117
lutDigit.
z
= prd->globalPosition().z();
118
lutDigit.
stationEta
=
m_idHelperSvc
->mmIdHelper().stationEta(prd->identify());
119
lutDigit.
stationPhi
=
m_idHelperSvc
->mmIdHelper().stationPhi(prd->identify());
120
lutDigit.
stationName
=
m_idHelperSvc
->mmIdHelper().stationName(prd->identify());
121
lutDigit.
ResidualR
= 999;
122
lutDigit.
ResidualPhi
= 999;
123
lutDigit.
isOutlier
= 0;
124
lutDigit.
layerNumber
=
m_idHelperSvc
->mmIdHelper().gasGap(prd->identify())-1 + 4*(
m_idHelperSvc
->mmIdHelper().multilayer(prd->identify())-1);
125
mmHits.push_back(lutDigit);
126
127
ATH_MSG_DEBUG
(
"MmDataPreparator: global eta/phi/r/z station eta/phi/name channel/layer "
<< lutDigit.
eta
<<
"/"
<< lutDigit.
phi
<<
"/"
<< lutDigit.
r
<<
"/"
<< lutDigit.
z
<<
" "
<< lutDigit.
stationEta
<<
"/"
<< lutDigit.
stationPhi
<<
"/"
<< lutDigit.
stationName
<<
" "
<<
m_idHelperSvc
->mmIdHelper().channel(prd->identify()) <<
"/"
<< lutDigit.
layerNumber
);
128
129
}
130
}
131
132
return
StatusCode::SUCCESS;
133
134
}
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_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
MmDataPreparator.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
IRoiDescriptor
Describes the API of the Region of Ineterest geometry.
Definition
IRoiDescriptor.h:23
IdentifiableContainerMT::indexFindPtr
virtual const T * indexFindPtr(IdentifierHash hashId) const override final
return pointer on the found entry or null if out of range using hashed index - fast version,...
Definition
IdentifiableContainerMT.h:298
IdentifierHash
This is a "hash" representation of an Identifier.
Definition
IdentifierHash.h:25
Muon::MMPrepData
Class to represent MM measurements.
Definition
MMPrepData.h:22
TrigL2MuonSA::MmDataPreparator::prepareData
StatusCode prepareData(const EventContext &ctx, const TrigRoiDescriptor *p_roids, TrigL2MuonSA::MmHits &mmHits) const
Definition
MmDataPreparator.cxx:31
TrigL2MuonSA::MmDataPreparator::MmDataPreparator
MmDataPreparator(const std::string &type, const std::string &name, const IInterface *parent)
Definition
MmDataPreparator.cxx:7
TrigL2MuonSA::MmDataPreparator::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition
MmDataPreparator.h:46
TrigL2MuonSA::MmDataPreparator::initialize
virtual StatusCode initialize() override
Definition
MmDataPreparator.cxx:16
TrigL2MuonSA::MmDataPreparator::m_use_RoIBasedDataAccess
bool m_use_RoIBasedDataAccess
Definition
MmDataPreparator.h:44
TrigL2MuonSA::MmDataPreparator::m_regionSelector
ToolHandle< IRegSelTool > m_regionSelector
Definition
MmDataPreparator.h:39
TrigL2MuonSA::MmDataPreparator::m_mmPrepContainerKey
SG::ReadHandleKey< Muon::MMPrepDataContainer > m_mmPrepContainerKey
Definition
MmDataPreparator.h:41
TrigL2MuonSA::MmHitData
Definition
MmData.h:14
TrigL2MuonSA::MmHitData::ResidualPhi
double ResidualPhi
Definition
MmData.h:39
TrigL2MuonSA::MmHitData::eta
double eta
Definition
MmData.h:31
TrigL2MuonSA::MmHitData::stationPhi
int stationPhi
Definition
MmData.h:36
TrigL2MuonSA::MmHitData::stationEta
int stationEta
Definition
MmData.h:35
TrigL2MuonSA::MmHitData::phi
double phi
Definition
MmData.h:32
TrigL2MuonSA::MmHitData::layerNumber
unsigned int layerNumber
Definition
MmData.h:41
TrigL2MuonSA::MmHitData::stationName
int stationName
Definition
MmData.h:37
TrigL2MuonSA::MmHitData::ResidualR
double ResidualR
Definition
MmData.h:38
TrigL2MuonSA::MmHitData::isOutlier
int isOutlier
Definition
MmData.h:40
TrigL2MuonSA::MmHitData::z
double z
Definition
MmData.h:34
TrigL2MuonSA::MmHitData::r
double r
Definition
MmData.h:33
TrigRoiDescriptor
nope - should be used for standalone also, perhaps need to protect the class def bits ifndef XAOD_ANA...
Definition
TrigRoiDescriptor.h:48
Muon::MMPrepDataCollection
MuonPrepDataCollection< MMPrepData > MMPrepDataCollection
Definition
MuonPrepDataCollection.h:113
Muon::MMPrepDataContainer
MuonPrepDataContainerT< MMPrepData > MMPrepDataContainer
Definition
MuonPrepDataContainer.h:99
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition
ReadCondHandle.h:269
TrigL2MuonSA::MmHits
std::vector< MmHitData > MmHits
Definition
MmData.h:47
type
Generated on
for ATLAS Offline Software by
1.17.0