ATLAS Offline Software
ZdcByteStreamReadV1V2Tool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGT1CALOBYTESTREAM_ZDCBYTESTREAMREADV1V2TOOL_H
6 #define TRIGT1CALOBYTESTREAM_ZDCBYTESTREAMREADV1V2TOOL_H
7 // ===========================================================================
8 // Includes
9 // ===========================================================================
10 // STD:
11 // ===========================================================================
12 #include <stdint.h>
13 #include <vector>
14 
15 // ===========================================================================
16 // Athena:
17 // ===========================================================================
18 #include "AsgTools/AsgTool.h"
19 #include "GaudiKernel/ToolHandle.h"
20 #include "GaudiKernel/ServiceHandle.h"
21 
23 
26 
27 //#include "xAODForward/ZdcModule.h"
28 //#include "xAODForward/ZdcModuleContainer.h"
29 
34 
35 //#include "TrigT1CaloByteStream/L1CaloErrorByteStreamTool.h"
37 
38 // ===========================================================================
39 // Forward declarations
40 // ===========================================================================
41 
42 
43 // ===========================================================================
44 class ZdcSrcIdMap;
45 class ZdcID;
47 namespace LVL1BS {
48 // Forward declarations
49 //class L1CaloErrorByteStreamTool;
50 // ===========================================================================
51 }// end namespace
52 
53 // instead let's use their stupid namespace
54 //using namespace LVL1BS;
55 // ===========================================================================
56 
57 // ===========================================================================
58 
67 {
70 public:
71  ZdcByteStreamReadV1V2Tool(const std::string& name);
73 
74  virtual StatusCode initialize();
75  virtual StatusCode finalize();
76 
77  // =========================================================================
80  const IROBDataProviderSvc::VROBFRAG& robFrags,
81  xAOD::TriggerTowerContainer* const ttCollection
82  ) const;
83 
85  ZdcDigitsCollection* zdcCollection) const;
86 
87  StatusCode convert(xAOD::TriggerTowerContainer* const ttCollection) const;
88  StatusCode convert(const std::string& sgKey, xAOD::TriggerTowerContainer* const ttCollection) const;
89 
91  //xAOD::ZdcModuleContainer* convertTT2ZM(xAOD::TriggerTowerContainer* const ttCollection);
92 
93 
94  // =========================================================================
96  const std::vector<uint32_t>& ppmSourceIDs(const std::string& sgKey) const;
97 
98 private:
99  enum class RequestType { PPM, CPM, CMX };
100  typedef IROBDataProviderSvc::VROBFRAG::const_iterator ROBIterator;
103 
104 
105  class BitReader
106  {
107  public:
108  BitReader (const std::vector<uint32_t>& ppBlock)
109  : m_ppPointer (0),
110  m_ppMaxBit (31 * ppBlock.size()),
111  m_ppBlock (ppBlock)
112  {
113  }
114 
115  uint32_t getField (const uint8_t numBits);
116 
117 
118  private:
121  const std::vector<uint32_t>& m_ppBlock;
122  };
123 
124 
125  struct State
126  {
127  std::set<uint32_t> m_coolIds;
129 
132 
137 
138  // For RUN2
139  std::vector<uint32_t> m_ppBlock;
140  // For RUN1
141  std::map<uint8_t, std::vector<uint16_t>> m_ppFadcs;
142  std::map<uint8_t, std::vector<uint16_t>> m_ppLuts;
143  };
144 
145 
146 private:
148  const ROBIterator& robFrag,
149  const RequestType& requestedType) const;
150 
151  // ==========================================================================
152  // PPM
153  // ==========================================================================
154  StatusCode processPpmWord_(State& state, uint32_t word, int indata) const;
155  StatusCode processPpmBlock_(State& state) const;
156 
157  StatusCode processPpmBlockR4V1_(State& state) const;
158  StatusCode processPpmBlockR3V1_(State& state) const;
161  StatusCode processPpmStandardR3V1_(State& state, uint32_t word, int indata) const;
163  std::vector<uint16_t> getPpmAdcSamplesR3_(State& state, BitReader& br, uint8_t format, uint8_t minIndex) const;
166  uint8_t numAdc, int8_t& encoding,
167  int8_t& minIndex) const;
168  std::vector<uint16_t> getPpmAdcSamplesR4_(State& state,
169  BitReader& br,
170  uint8_t encoding, uint8_t minIndex) const;
171  StatusCode processPpmNeutral_(State& state) const;
172 
174  State& state,
175  uint8_t crate,
176  uint8_t module,
178  const std::vector<uint8_t>& lcpVal,
179  const std::vector<uint8_t>& lcpBcidVec,
180 
181  const std::vector<uint8_t>& ljeVal,
182  const std::vector<uint8_t>& ljeSat80Vec,
183 
184  const std::vector<uint16_t>& adcVal,
185  const std::vector<uint8_t>& adcExt,
186  const std::vector<int16_t>& pedCor,
187  const std::vector<uint8_t>& pedEn) const;
188 
190  State& state,
191  uint8_t crate,
192  uint8_t module,
194  const std::vector<uint16_t>& luts,
195  const std::vector<uint16_t>& fadc
196  ) const;
197 
199  State& state,
200  uint8_t crate,
201  uint8_t module,
203  const std::vector<uint8_t>& luts,
204  const std::vector<uint8_t>& lcpBcidVec,
205  const std::vector<uint16_t>& fadc,
206  const std::vector<uint8_t>& bcidExt
207  ) const;
208 
209  void initSourceIDs();
210 
211 private:
212  //ToolHandle<LVL1BS::L1CaloErrorByteStreamTool> m_errorTool;
213  ToolHandle<ZdcL1CaloErrorByteStreamTool> m_errorTool;
215  //ToolHandle<LVL1::IL1CaloMappingTool> m_ppmMaps;
218 
219 private:
220  std::vector<uint32_t> m_ppmSourceIDs;
221  std::vector<uint32_t> m_ppmSourceIDsMuon;
222  std::vector<uint32_t> m_ppmSourceIDsSpare;
224  const ZdcID* m_zdcID;
225 };
226 
227 
228 // PAS 8/14 used to be here
229 // ===========================================================================
230 //}// end namespace
231 // ===========================================================================
232 #endif
ZdcByteStreamReadV1V2Tool::convert
StatusCode convert(const IROBDataProviderSvc::VROBFRAG &robFrags, xAOD::TriggerTowerContainer *const ttCollection) const
Convert ROB fragments to trigger towers.
Definition: ZdcByteStreamReadV1V2Tool.cxx:126
ZdcByteStreamReadV1V2Tool::RODPointer
OFFLINE_FRAGMENTS_NAMESPACE::PointerType RODPointer
Definition: ZdcByteStreamReadV1V2Tool.h:102
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
ZdcByteStreamReadV1V2Tool::State::m_ppFadcs
std::map< uint8_t, std::vector< uint16_t > > m_ppFadcs
Definition: ZdcByteStreamReadV1V2Tool.h:141
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
ZdcByteStreamReadV1V2Tool::m_ppmSourceIDs
std::vector< uint32_t > m_ppmSourceIDs
Definition: ZdcByteStreamReadV1V2Tool.h:220
vtune_athena.format
format
Definition: vtune_athena.py:14
ZdcByteStreamReadV1V2Tool::~ZdcByteStreamReadV1V2Tool
virtual ~ZdcByteStreamReadV1V2Tool()
Definition: ZdcByteStreamReadV1V2Tool.h:72
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
ZdcByteStreamReadV1V2Tool::getPpmAdcSamplesR4_
std::vector< uint16_t > getPpmAdcSamplesR4_(State &state, BitReader &br, uint8_t encoding, uint8_t minIndex) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:840
ZdcByteStreamReadV1V2Tool::ZdcByteStreamReadV1V2Tool
ZdcByteStreamReadV1V2Tool(const std::string &name)
Definition: ZdcByteStreamReadV1V2Tool.cxx:78
ZdcByteStreamReadV1V2Tool::RequestType::CPM
@ CPM
ZdcByteStreamReadV1V2Tool::State::m_caloUserHeader
ZdcCaloUserHeader m_caloUserHeader
Definition: ZdcByteStreamReadV1V2Tool.h:130
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
ZdcByteStreamReadV1V2Tool::initSourceIDs
void initSourceIDs()
Definition: ZdcByteStreamReadV1V2Tool.cxx:1075
ZdcCaloUserHeader.h
ZdcByteStreamReadV1V2Tool
Tool to perform ROB fragments to trigger towers and trigger towers to raw data conversions.
Definition: ZdcByteStreamReadV1V2Tool.h:67
ZdcByteStreamReadV1V2Tool::m_zdcID
const ZdcID * m_zdcID
Definition: ZdcByteStreamReadV1V2Tool.h:224
ZdcSubBlockHeader.h
ZdcByteStreamReadV1V2Tool::State::m_triggerTowers
xAOD::TriggerTowerContainer * m_triggerTowers
Definition: ZdcByteStreamReadV1V2Tool.h:128
ZdcByteStreamReadV1V2Tool::BitReader::m_ppPointer
uint32_t m_ppPointer
Definition: ZdcByteStreamReadV1V2Tool.h:119
ZdcSubBlockStatus.h
TriggerTowerContainer.h
ZdcByteStreamReadV1V2Tool::processPpmBlockR3V1_
StatusCode processPpmBlockR3V1_(State &state) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:873
ZdcByteStreamReadV1V2Tool::State::m_ppBlock
std::vector< uint32_t > m_ppBlock
Definition: ZdcByteStreamReadV1V2Tool.h:139
ZdcSubBlockHeader
L1Calo User Header class.
Definition: ZdcSubBlockHeader.h:20
ZdcByteStreamReadV1V2Tool::processPpmBlock_
StatusCode processPpmBlock_(State &state) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:344
ZdcDigitsCollection.h
ZdcByteStreamReadV1V2Tool::ROBPointer
OFFLINE_FRAGMENTS_NAMESPACE::PointerType ROBPointer
Definition: ZdcByteStreamReadV1V2Tool.h:101
ZdcByteStreamReadV1V2Tool::BitReader::m_ppBlock
const std::vector< uint32_t > & m_ppBlock
Definition: ZdcByteStreamReadV1V2Tool.h:121
ZdcByteStreamReadV1V2Tool::BitReader::BitReader
BitReader(const std::vector< uint32_t > &ppBlock)
Definition: ZdcByteStreamReadV1V2Tool.h:108
ZdcByteStreamReadV1V2Tool::State::m_rodSourceId
uint32_t m_rodSourceId
Definition: ZdcByteStreamReadV1V2Tool.h:134
ZdcByteStreamReadV1V2Tool::addTriggerTowerV2_
StatusCode addTriggerTowerV2_(State &state, uint8_t crate, uint8_t module, uint8_t channel, const std::vector< uint8_t > &lcpVal, const std::vector< uint8_t > &lcpBcidVec, const std::vector< uint8_t > &ljeVal, const std::vector< uint8_t > &ljeSat80Vec, const std::vector< uint16_t > &adcVal, const std::vector< uint8_t > &adcExt, const std::vector< int16_t > &pedCor, const std::vector< uint8_t > &pedEn) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:955
ZdcL1CaloErrorByteStreamTool.h
ZdcByteStreamReadV1V2Tool::convertTT2ZD
ZdcDigitsCollection * convertTT2ZD(xAOD::TriggerTowerContainer *const ttCollection) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:1143
ZdcByteStreamReadV1V2Tool::State::m_coolIds
std::set< uint32_t > m_coolIds
Definition: ZdcByteStreamReadV1V2Tool.h:127
ZdcByteStreamReadV1V2Tool::processPpmCompressedR3V1_
StatusCode processPpmCompressedR3V1_(State &state) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:469
ZdcByteStreamReadV1V2Tool::interpretPpmHeaderR4V1_
void interpretPpmHeaderR4V1_(BitReader &br, uint8_t numAdc, int8_t &encoding, int8_t &minIndex) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:790
ZdcByteStreamReadV1V2Tool::BitReader
Definition: ZdcByteStreamReadV1V2Tool.h:106
ZdcByteStreamReadV1V2Tool::RequestType::CMX
@ CMX
ZdcByteStreamReadV1V2Tool::processPpmStandardR4V1_
StatusCode processPpmStandardR4V1_(State &state) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:884
ZdcByteStreamReadV1V2Tool::processPpmStandardR3V1_
StatusCode processPpmStandardR3V1_(State &state) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:942
ZdcByteStreamReadV1V2Tool::ppmSourceIDs
const std::vector< uint32_t > & ppmSourceIDs(const std::string &sgKey) const
Return reference to vector with all possible Source Identifiers.
Definition: ZdcByteStreamReadV1V2Tool.cxx:1103
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
python.PyAthena.module
module
Definition: PyAthena.py:134
ZdcByteStreamReadV1V2Tool::finalize
virtual StatusCode finalize()
Definition: ZdcByteStreamReadV1V2Tool.cxx:119
OFFLINE_FRAGMENTS_NAMESPACE::PointerType
const DataType * PointerType
Definition: RawEvent.h:25
ZdcByteStreamReadV1V2Tool::processPpmWord_
StatusCode processPpmWord_(State &state, uint32_t word, int indata) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:325
ZdcByteStreamReadV1V2Tool::BitReader::getField
uint32_t getField(const uint8_t numBits)
Definition: ZdcByteStreamReadV1V2Tool.cxx:1119
ZdcByteStreamReadV1V2Tool::State::m_ppLuts
std::map< uint8_t, std::vector< uint16_t > > m_ppLuts
Definition: ZdcByteStreamReadV1V2Tool.h:142
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
generateReferenceFile.encoding
encoding
Definition: generateReferenceFile.py:15
ZdcByteStreamReadV1V2Tool::State::m_robSourceId
uint32_t m_robSourceId
Definition: ZdcByteStreamReadV1V2Tool.h:135
ZdcByteStreamReadV1V2Tool::RequestType::PPM
@ PPM
ASG_TOOL_CLASS0
#define ASG_TOOL_CLASS0(CLASSNAME)
Definition: AsgToolMacros.h:62
ZdcByteStreamReadV1V2Tool::State::m_subDetectorID
uint8_t m_subDetectorID
Definition: ZdcByteStreamReadV1V2Tool.h:133
ZdcByteStreamReadV1V2Tool::getPpmAdcSamplesR3_
std::vector< uint16_t > getPpmAdcSamplesR3_(State &state, BitReader &br, uint8_t format, uint8_t minIndex) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:552
ZdcL1CaloErrorByteStreamTool
Tool to accumulate ROB/ROD unpacking errors.
Definition: ZdcL1CaloErrorByteStreamTool.h:30
IROBDataProviderSvc::VROBFRAG
std::vector< const ROBF * > VROBFRAG
Definition: IROBDataProviderSvc.h:29
ASG_TOOL_INTERFACE
#define ASG_TOOL_INTERFACE(CLASSNAME)
Definition: AsgToolMacros.h:40
ZdcByteStreamReadV1V2Tool::m_robDataProvider
ServiceHandle< IROBDataProviderSvc > m_robDataProvider
Channel mapping tool.
Definition: ZdcByteStreamReadV1V2Tool.h:217
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
ZdcByteStreamReadV1V2Tool::RequestType
RequestType
Definition: ZdcByteStreamReadV1V2Tool.h:99
ZdcByteStreamReadV1V2Tool::processPpmCompressedR4V1_
StatusCode processPpmCompressedR4V1_(State &state) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:639
ZdcByteStreamReadV1V2Tool::State::m_subBlockHeader
ZdcSubBlockHeader m_subBlockHeader
Definition: ZdcByteStreamReadV1V2Tool.h:131
ZdcByteStreamReadV1V2Tool::State::m_verCode
uint8_t m_verCode
Definition: ZdcByteStreamReadV1V2Tool.h:136
ZdcCaloUserHeader
L1Calo User Header class.
Definition: ZdcCaloUserHeader.h:22
ZdcByteStreamReadV1V2Tool::State
Definition: ZdcByteStreamReadV1V2Tool.h:126
TriggerTower.h
ZdcByteStreamReadV1V2Tool::m_srcIdMap
ZdcSrcIdMap * m_srcIdMap
Definition: ZdcByteStreamReadV1V2Tool.h:223
LVL1BS
Definition: ZdcByteStreamReadV1V2Tool.h:47
ZdcByteStreamReadV1V2Tool::m_errorTool
ToolHandle< ZdcL1CaloErrorByteStreamTool > m_errorTool
Definition: ZdcByteStreamReadV1V2Tool.h:213
ZdcDigitsCollection
Definition: ZdcDigitsCollection.h:20
ZdcByteStreamReadV1V2Tool::processPpmNeutral_
StatusCode processPpmNeutral_(State &state) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:386
ZdcByteStreamReadV1V2Tool::ROBIterator
IROBDataProviderSvc::VROBFRAG::const_iterator ROBIterator
Definition: ZdcByteStreamReadV1V2Tool.h:100
ZdcSrcIdMap
This class provides conversion between Lower level Source ID to higher level source ID for L1Calo Byt...
Definition: ZdcSrcIdMap.h:24
AsgTool.h
ZdcByteStreamReadV1V2Tool::processPpmBlockR4V1_
StatusCode processPpmBlockR4V1_(State &state) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:627
ZdcByteStreamReadV1V2Tool::m_ppmSourceIDsMuon
std::vector< uint32_t > m_ppmSourceIDsMuon
Definition: ZdcByteStreamReadV1V2Tool.h:221
ZdcID
Definition: ZdcID.h:25
ZdcByteStreamReadV1V2Tool::m_ppmSourceIDsSpare
std::vector< uint32_t > m_ppmSourceIDsSpare
Definition: ZdcByteStreamReadV1V2Tool.h:222
IROBDataProviderSvc.h
ZdcByteStreamReadV1V2Tool::initialize
virtual StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: ZdcByteStreamReadV1V2Tool.cxx:95
ZdcByteStreamReadV1V2Tool::addTriggerTowerV1_
StatusCode addTriggerTowerV1_(State &state, uint8_t crate, uint8_t module, uint8_t channel, const std::vector< uint16_t > &luts, const std::vector< uint16_t > &fadc) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:1044
PlotCalibFromCool.br
br
Definition: PlotCalibFromCool.py:355
ZdcByteStreamReadV1V2Tool::BitReader::m_ppMaxBit
uint32_t m_ppMaxBit
Definition: ZdcByteStreamReadV1V2Tool.h:120
ServiceHandle< IROBDataProviderSvc >
ZdcByteStreamReadV1V2Tool::processRobFragment_
StatusCode processRobFragment_(State &state, const ROBIterator &robFrag, const RequestType &requestedType) const
Definition: ZdcByteStreamReadV1V2Tool.cxx:207