ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetConditions
SCT_ConditionsTools
src
SCT_ReadoutTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
SCT_ReadoutTool.h
"
6
7
#include "
InDetIdentifier/SCT_ID.h
"
8
#include "
SCT_ConditionsData/SCT_ReadoutData.h
"
9
10
#include <algorithm>
11
12
// Constructor
13
SCT_ReadoutTool::SCT_ReadoutTool
(
const
std::string&
type
,
const
std::string& name,
const
IInterface* parent):
14
base_class(
type
, name, parent),
15
m_sctId
{nullptr}
16
{
17
}
18
19
// Initialize
20
StatusCode
SCT_ReadoutTool::initialize
() {
21
ATH_MSG_DEBUG
(
"Initialize SCT_ReadoutTool"
);
22
// Retrieve cabling
23
if
(not
m_cablingTool
.empty()) {
24
ATH_CHECK
(
m_cablingTool
.retrieve());
25
}
26
// Retrieve SCT helper
27
ATH_CHECK
(detStore()->retrieve(
m_sctId
,
"SCT_ID"
));
28
29
return
StatusCode::SUCCESS;
30
}
31
32
// Finalize
33
StatusCode
SCT_ReadoutTool::finalize
() {
34
ATH_MSG_DEBUG
(
"Finalize SCT_ReadoutTool"
);
35
return
StatusCode::SUCCESS;
36
}
37
38
StatusCode
SCT_ReadoutTool::determineReadout
(
const
int
truncatedSerialNumber, std::vector<SCT_Chip>& chips,
bool
link0ok,
bool
link1ok)
const
{
39
// Determine which chips are in the module readout from truncated serial number
40
41
// Get moduleId
42
const
IdentifierHash
& hash{
m_cablingTool
->getHashFromSerialNumber(truncatedSerialNumber)};
43
if
(not hash.is_valid())
return
StatusCode::SUCCESS;
44
Identifier
moduleId{
m_sctId
->module_id(
m_sctId
->wafer_id(hash))};
45
46
// Call identifier version
47
return
determineReadout
(moduleId, chips, link0ok, link1ok);
48
}
49
50
StatusCode
SCT_ReadoutTool::determineReadout
(
const
Identifier
& moduleId, std::vector<SCT_Chip>& chips,
bool
link0ok,
bool
link1ok)
const
{
51
// This determineReadout(const Identifier is the main method of this class.
52
// Methods of SCT_ReadoutData are called in the following order in this method:
53
// setChips
54
// setLinkStatus
55
// setModuleType
56
// setChipMap
57
// clearChipReadout
58
// checkLink
59
// \_ followReadoutUpstream
60
// \_ setChipIn
61
// \_ setChipOut
62
// \_ hasConnectedInput
63
// \_ inputChip
64
// maskChipsNotInReadout
65
// \_ isChipReadOut
66
// printStatus
67
// \_ isLinkStandard
68
//
69
// The following two methods are not used.
70
// isEndBeingTalkedTo
71
// \_ outputChip
72
73
// Determine which chips are in the module readout from Identifier
74
ATH_MSG_DEBUG
(
"Determining Readout for module ID = "
<< moduleId);
75
76
// Make sure there are 12 chips
77
if
(chips.size()!=12) {
78
ATH_MSG_DEBUG
(
"Readout must contain exactly 12 chips"
);
79
return
StatusCode::SUCCESS;
80
}
81
82
SCT_ReadoutData
data(msgSvc());
83
84
// Set the chips and sort in order of ID
85
data.setChips(chips);
86
87
// Set link status
88
data.setLinkStatus(link0ok, link1ok);
89
90
// Determine module type (as per ModuleType enum) and set mapping
91
data.setModuleType(moduleId,
m_sctId
->barrel_ec(moduleId));
92
data.setChipMap();
93
94
// Set all chips out of readout and clear both links to start
95
data.clearChipReadout();
96
97
// Check the links
98
data.checkLink(0);
99
data.checkLink(1);
100
101
// Mask chips not in readout
102
data.maskChipsNotInReadout();
103
104
data.printStatus(moduleId);
105
106
return
StatusCode::SUCCESS;
107
}
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
SCT_ID.h
This is an Identifier helper class for the SCT subdetector.
SCT_ReadoutData.h
Header file for the SCT_ReadoutData class.
SCT_ReadoutTool.h
Header file for the SCT_ReadoutTool class.
IdentifierHash
This is a "hash" representation of an Identifier.
Definition
IdentifierHash.h:25
SCT_ReadoutData
Definition
SCT_ReadoutData.h:42
SCT_ReadoutTool::determineReadout
virtual StatusCode determineReadout(const Identifier &moduleId, std::vector< SCT_Chip > &chips, bool link0ok, bool link1ok) const override
Determine which chips are in the readout for a module of a particular type by Identifier.
Definition
SCT_ReadoutTool.cxx:50
SCT_ReadoutTool::finalize
StatusCode finalize() override
Definition
SCT_ReadoutTool.cxx:33
SCT_ReadoutTool::SCT_ReadoutTool
SCT_ReadoutTool(const std::string &type, const std::string &name, const IInterface *parent)
Usual framework methods for an AlgTool.
Definition
SCT_ReadoutTool.cxx:13
SCT_ReadoutTool::m_cablingTool
ToolHandle< ISCT_CablingTool > m_cablingTool
Definition
SCT_ReadoutTool.h:51
SCT_ReadoutTool::m_sctId
const SCT_ID * m_sctId
Private data.
Definition
SCT_ReadoutTool.h:50
SCT_ReadoutTool::initialize
StatusCode initialize() override
Definition
SCT_ReadoutTool.cxx:20
Identifier
Definition
IdentifierFieldParser.cxx:14
type
Generated on
for ATLAS Offline Software by
1.17.0