ATLAS Offline Software
SCT_RodEncoder.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 
3 /*
4  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef SCT_RAWDATABYTESTREAMCNV_SCT_RODENCODER_H
8 #define SCT_RAWDATABYTESTREAMCNV_SCT_RODENCODER_H
9 
12 
15 
16 #include "GaudiKernel/ToolHandle.h"
17 
18 #include <set>
19 
20 class ISCT_CablingTool;
21 class SCT_ID;
22 class SCT_RDORawData;
23 class Identifier;
24 class IdentifierHash;
25 
40 class SCT_RodEncoder : public extends<AthAlgTool, ISCT_RodEncoder>
41 {
42  public:
43 
45  SCT_RodEncoder(const std::string& type, const std::string& name, const IInterface* parent);
46 
48  virtual ~SCT_RodEncoder() = default;
49 
51  virtual StatusCode initialize() override;
52 
54  virtual StatusCode finalize() override;
55 
67  virtual void fillROD(std::vector<uint32_t>& vec32Data, const uint32_t& robID,
68  const std::vector<const SCT_RDORawData*>& vecRDOs) const override;
69 
70  private:
71 
73  enum ErrorWords{TIMEOUT_ERR=(1<<11),
74  L1_ERR=(1<<10),
75  BCID_ERR=(1<<9),
76  PREAMBLE_ERR=(1<<12),
78  TRAILER_ERR=(1<<12),
83  RAWDATA_ERR=(3<<13),
85 
97  void encodeData(const std::vector<int>& vecTimeBins, std::vector<uint16_t>& vec16Words,
98  const SCT_RDORawData* rdo, const int& groupSize, const int& strip) const;
99 
108  void packFragments(std::vector<uint16_t>& vec16Words, std::vector<uint32_t>& vec32Words) const;
109 
119  uint32_t set32Bits(const unsigned short int* arr16Words,
120  const unsigned short int* position,
121  const unsigned short int& numWords) const;
122 
124  int side(const SCT_RDORawData* rdo) const;
125 
127  int getTimeBin(const SCT_RDORawData* rdo) const;
128 
130  int getStrip(const SCT_RDORawData* rdo) const;
131 
133  Identifier offlineID(const SCT_RDORawData* rdo) const;
134 
136  uint32_t onlineID(const SCT_RDORawData* rdo) const;
137 
139  int getRODLink(const SCT_RDORawData* rdo) const;
140 
142  uint16_t getHeaderUsingRDO(const SCT_RDORawData* rdo) const;
143 
145  uint16_t getHeaderUsingHash(const IdentifierHash& linkHash, const int& errorWord) const;
146 
148  uint16_t getTrailer(const int& errorWord) const;
149 
151  void addHeadersWithErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors,
152  const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const;
153 
155  void addTrailersWithErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors,
156  const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const;
157 
159  void addSpecificErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors,
160  const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const;
161 
163  ToolHandle<ISCT_ByteStreamErrorsTool> m_bsErrTool{this,
164  "SCT_ByteStreamErrorsTool",
165  "SCT_ByteStreamErrorsTool",
166  "Tool to retrieve SCT ByteStream Errors"};
167 
169  ToolHandle<ISCT_CablingTool> m_cabling{this,
170  "SCT_CablingTool",
171  "SCT_CablingTool",
172  "Tool to retrieve SCT Cabling"};
173 
176  const SCT_ID* m_sctID{nullptr};
177 
179  BooleanProperty m_condensed{this,
180  "CondensedMode",
181  false,
182  "Condensed mode (true) or Expanded mode (false)"};
183 
185  std::set<Identifier> m_swapModuleID{};
186 };
187 
188 #endif // SCT_RAWDATABYTESTREAMCNV_SCT_RODENCODER_H
SCT_RodEncoder::NULL_TRAILER_ERR
@ NULL_TRAILER_ERR
Definition: SCT_RodEncoder.h:84
ISCT_ByteStreamErrorsTool.h
SiliconTech::strip
@ strip
SCT_RodEncoder::TIMEOUT_ERR
@ TIMEOUT_ERR
Definition: SCT_RodEncoder.h:73
ISCT_RodEncoder.h
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
SCT_RodEncoder::addSpecificErrors
void addSpecificErrors(const uint32_t &robID, const std::set< IdentifierHash > *errors, const ErrorWords &errType, std::vector< uint16_t > &vec16Data) const
Add specific errors for ROB to the vector of 16 bit words.
Definition: SCT_RodEncoder.cxx:444
SCT_RodEncoder::m_bsErrTool
ToolHandle< ISCT_ByteStreamErrorsTool > m_bsErrTool
Tool that keeps track of modules that give rise to errors in the bytestream.
Definition: SCT_RodEncoder.h:163
SCT_RodEncoder::offlineID
Identifier offlineID(const SCT_RDORawData *rdo) const
Get the offline Identifier from the RDO.
Definition: SCT_RodEncoder.cxx:355
SCT_RodEncoder::SCT_RodEncoder
SCT_RodEncoder(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
Definition: SCT_RodEncoder.cxx:45
SCT_RodEncoder::getHeaderUsingHash
uint16_t getHeaderUsingHash(const IdentifierHash &linkHash, const int &errorWord) const
Get the 16-bit word for a header for a link with a ByteStream error.
Definition: SCT_RodEncoder.cxx:400
SCT_RodEncoder::ABCD_ERR
@ ABCD_ERR
Definition: SCT_RodEncoder.h:82
SCT_RodEncoder::addHeadersWithErrors
void addHeadersWithErrors(const uint32_t &robID, const std::set< IdentifierHash > *errors, const ErrorWords &errType, std::vector< uint16_t > &vec16Data) const
Add header with errors for ROB to the vector of 16 bit words.
Definition: SCT_RodEncoder.cxx:415
SCT_RDORawData
Definition: SCT_RDORawData.h:24
ISCT_CablingTool
Definition: ISCT_CablingTool.h:36
SCT_RodEncoder::~SCT_RodEncoder
virtual ~SCT_RodEncoder()=default
Destructor.
SCT_RodEncoder::finalize
virtual StatusCode finalize() override
Finalize.
Definition: SCT_RodEncoder.cxx:84
SCT_RodEncoder::side
int side(const SCT_RDORawData *rdo) const
Get the side info from the RDO.
Definition: SCT_RodEncoder.cxx:373
SCT_RodEncoder::L1_ERR
@ L1_ERR
Definition: SCT_RodEncoder.h:74
SCT_RodEncoder::getStrip
int getStrip(const SCT_RDORawData *rdo) const
Get the strip number info from the RDO.
Definition: SCT_RodEncoder.cxx:349
SCT_RodEncoder::addTrailersWithErrors
void addTrailersWithErrors(const uint32_t &robID, const std::set< IdentifierHash > *errors, const ErrorWords &errType, std::vector< uint16_t > &vec16Data) const
Add trailers with errors for ROB to the vector of 16 bit words.
Definition: SCT_RodEncoder.cxx:430
SCT_RodEncoder::getHeaderUsingRDO
uint16_t getHeaderUsingRDO(const SCT_RDORawData *rdo) const
Get the 16-bit word for a header for a hit.
Definition: SCT_RodEncoder.cxx:393
SCT_RodEncoder::FORMATTER_ERR
@ FORMATTER_ERR
Definition: SCT_RodEncoder.h:77
SCT_RodEncoder::TRAILER_OVFLW_ERR
@ TRAILER_OVFLW_ERR
Definition: SCT_RodEncoder.h:81
SCT_RodEncoder::set32Bits
uint32_t set32Bits(const unsigned short int *arr16Words, const unsigned short int *position, const unsigned short int &numWords) const
@breif Method to set pairs of 16 bit words to a 32 bit word.
Definition: SCT_RodEncoder.cxx:332
SCT_RodEncoder::m_sctID
const SCT_ID * m_sctID
Identifier helper class for the SCT subdetector that creates compact Identifier objects and Identifie...
Definition: SCT_RodEncoder.h:176
SCT_RodEncoder::fillROD
virtual void fillROD(std::vector< uint32_t > &vec32Data, const uint32_t &robID, const std::vector< const SCT_RDORawData * > &vecRDOs) const override
Main Convert method.
Definition: SCT_RodEncoder.cxx:91
SCT_RodEncoder::HEADER_TRAILER_ERR
@ HEADER_TRAILER_ERR
Definition: SCT_RodEncoder.h:80
SCT_RDO_Container.h
SCT_RodEncoder::m_cabling
ToolHandle< ISCT_CablingTool > m_cabling
Providing mappings of online and offline identifiers and also serial numbers.
Definition: SCT_RodEncoder.h:169
SCT_RodEncoder::encodeData
void encodeData(const std::vector< int > &vecTimeBins, std::vector< uint16_t > &vec16Words, const SCT_RDORawData *rdo, const int &groupSize, const int &strip) const
Method to encode RDO data to vector of 16 bin words.
Definition: SCT_RodEncoder.cxx:243
SCT_RodEncoder::packFragments
void packFragments(std::vector< uint16_t > &vec16Words, std::vector< uint32_t > &vec32Words) const
Method to pack vector of 16 bit words intto a vector of 32 bit words.
Definition: SCT_RodEncoder.cxx:304
SCT_RodEncoder::getRODLink
int getRODLink(const SCT_RDORawData *rdo) const
Get the ROD link number info in the RDO header data.
Definition: SCT_RodEncoder.cxx:368
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
SCT_RodEncoder
Athena Algorithm Tool that provides conversion from SCT RDO to ROD format Bytestream.
Definition: SCT_RodEncoder.h:41
SCT_RodEncoder::TRAILER_ERR
@ TRAILER_ERR
Definition: SCT_RodEncoder.h:78
SCT_RodEncoder::ErrorWords
ErrorWords
Definitions of enum error words to be retrived from SCT_ByteStreamErrorSvc in fillROD(....
Definition: SCT_RodEncoder.h:73
SCT_RodEncoder::PREAMBLE_ERR
@ PREAMBLE_ERR
Definition: SCT_RodEncoder.h:76
SCT_RodEncoder::onlineID
uint32_t onlineID(const SCT_RDORawData *rdo) const
Get the online Identifier from the RDO.
Definition: SCT_RodEncoder.cxx:361
mergePhysValFiles.errors
list errors
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:43
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
SCT_RodEncoder::m_swapModuleID
std::set< Identifier > m_swapModuleID
Swap Module identifier, set by SCTRawContByteStreamTool.
Definition: SCT_RodEncoder.h:185
SCT_RodEncoder::m_condensed
BooleanProperty m_condensed
Boolean used to determine if fillROD(...) should use Condensed or Expanded mode when decoding.
Definition: SCT_RodEncoder.h:179
SCT_ID
Definition: SCT_ID.h:68
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
SCT_RodEncoder::getTimeBin
int getTimeBin(const SCT_RDORawData *rdo) const
Get the time bin info from the RDO.
Definition: SCT_RodEncoder.cxx:383
SCT_RodEncoder::initialize
virtual StatusCode initialize() override
Initialize.
Definition: SCT_RodEncoder.cxx:53
SCT_RodEncoder::BCID_ERR
@ BCID_ERR
Definition: SCT_RodEncoder.h:75
SCT_RodEncoder::RAWDATA_ERR
@ RAWDATA_ERR
Definition: SCT_RodEncoder.h:83
IdentifierHash
Definition: IdentifierHash.h:38
SCT_RodEncoder::NULL_HEADER_ERR
@ NULL_HEADER_ERR
Definition: SCT_RodEncoder.h:79
SCT_RodEncoder::getTrailer
uint16_t getTrailer(const int &errorWord) const
Get the 16-bit word for a trailer, with or without ByteStream errors.
Definition: SCT_RodEncoder.cxx:407