ATLAS Offline Software
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 
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
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
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;
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 
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 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
SCT_ReadoutTool::finalize
StatusCode finalize() override
Definition: SCT_ReadoutTool.cxx:33
SCT_ID.h
This is an Identifier helper class for the SCT subdetector. This class is a factory for creating comp...
SCT_ReadoutTool::initialize
StatusCode initialize() override
Definition: SCT_ReadoutTool.cxx:20
SCT_ReadoutTool::m_sctId
const SCT_ID * m_sctId
Private data.
Definition: SCT_ReadoutTool.h:50
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
SCT_ID::module_id
Identifier module_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
Definition: SCT_ID.h:416
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
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SCT_ReadoutTool.h
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
SCT_ReadoutData
Definition: SCT_ReadoutData.h:42
SCT_ReadoutTool::m_cablingTool
ToolHandle< ISCT_CablingTool > m_cablingTool
Definition: SCT_ReadoutTool.h:51
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
SCT_ReadoutData.h
SCT_ID::wafer_id
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
Definition: SCT_ID.h:464
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
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
Identifier
Definition: IdentifierFieldParser.cxx:14