ATLAS Offline Software
Loading...
Searching...
No Matches
JepByteStreamTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRIGT1CALOBYTESTREAM_JEPBYTESTREAMTOOL_H
6#define TRIGT1CALOBYTESTREAM_JEPBYTESTREAMTOOL_H
7
8#include <stdint.h>
9
10#include <map>
11#include <string>
12#include <vector>
13
14#include "L1CaloSrcIdMap.h"
21#include "eformat/SourceIdentifier.h"
22#include "GaudiKernel/ToolHandle.h"
23
24class IInterface;
25class InterfaceID;
26class StatusCode;
27
28template <class T> class FullEventAssembler;
29
30namespace LVL1 {
31 class CMMJetHits;
32 class CMMEtSums;
34 class JEMHits;
35 class JEMEtSums;
36 class JEPBSCollection;
37 class JetElement;
38 class JetElementKey;
39}
40
41namespace LVL1BS {
42
44class CmmJetSubBlock;
45class JemSubBlock;
47class L1CaloSrcIdMap;
48
56
58
59 public:
60 JepByteStreamTool(const std::string& type, const std::string& name,
61 const IInterface* parent);
62 virtual ~JepByteStreamTool();
63
65 static const InterfaceID& interfaceID();
66
67 virtual StatusCode initialize();
68 virtual StatusCode finalize();
69
71 StatusCode convert(const std::string& sgKey,
72 const IROBDataProviderSvc::VROBFRAG& robFrags,
73 DataVector<LVL1::JetElement>* jeCollection) const;
75 StatusCode convert(const std::string& sgKey,
76 const IROBDataProviderSvc::VROBFRAG& robFrags,
77 DataVector<LVL1::JEMHits>* hitCollection) const;
79 StatusCode convert(const std::string& sgKey,
80 const IROBDataProviderSvc::VROBFRAG& robFrags,
81 DataVector<LVL1::JEMEtSums>* etCollection) const;
83 StatusCode convert(const std::string& sgKey,
84 const IROBDataProviderSvc::VROBFRAG& robFrags,
85 DataVector<LVL1::CMMJetHits>* hitCollection) const;
87 StatusCode convert(const std::string& sgKey,
88 const IROBDataProviderSvc::VROBFRAG& robFrags,
89 DataVector<LVL1::CMMEtSums>* etCollection) const;
90
92 StatusCode convert(const LVL1::JEPBSCollection* jep) const;
93
95 const std::vector<uint32_t>& sourceIDs() const;
96
97 private:
99 { this, "ByteStreamCnvSvc", "ByteStreamCnvSvc" };
100
102 {
104 int coreOverlap = 0;
106 unsigned int rodErr = 0;
108 std::vector<unsigned int> exVec;
110 std::vector<unsigned int> eyVec;
112 std::vector<unsigned int> etVec;
114 std::vector<int> exErrVec;
116 std::vector<int> eyErrVec;
118 std::vector<int> etErrVec;
120 std::vector<unsigned int> hitsVec;
122 std::vector<int> errVec;
125 };
126
129
135 typedef std::map<unsigned int, LVL1::JetElement*> JetElementMap;
136 typedef std::map<unsigned int, const LVL1::JetElement*> ConstJetElementMap;
137 typedef std::map<int, LVL1::JEMHits*> JetHitsMap;
138 typedef std::map<int, const LVL1::JEMHits*> ConstJetHitsMap;
139 typedef std::map<int, LVL1::JEMEtSums*> EnergySumsMap;
140 typedef std::map<int, const LVL1::JEMEtSums*> ConstEnergySumsMap;
141 typedef std::map<int, LVL1::CMMJetHits*> CmmHitsMap;
142 typedef std::map<int, const LVL1::CMMJetHits*> ConstCmmHitsMap;
143 typedef std::map<int, LVL1::CMMEtSums*> CmmSumsMap;
144 typedef std::map<int, const LVL1::CMMEtSums*> ConstCmmSumsMap;
145 typedef IROBDataProviderSvc::VROBFRAG::const_iterator ROBIterator;
148
150 {
152 : m_collection(collection){}
154 };
190
192 StatusCode convertBs(const std::string& sgKey,
193 const IROBDataProviderSvc::VROBFRAG& robFrags,
196 void decodeCmmEnergy(CmmEnergySubBlock* subBlock, int trigCmm, CmmSumsData& data,
197 LocalData& ld) const;
199 void decodeCmmJet(CmmJetSubBlock* subBlock, int trigCmm, CmmHitsData& data,
200 LocalData& ld) const;
202 void decodeJem(JemSubBlock* subBlock, int trigJem,
204 LocalData& ld) const;
205
207 const LVL1::JetElement* findJetElement(double eta, double phi,
208 const ConstJetElementMap& jeMap,
209 LVL1::JetElementKey& elementKey) const;
211 LVL1::JetElementKey& elementKey) const;
213 const LVL1::JEMHits* findJetHits(int crate, int module,
214 const ConstJetHitsMap& hitsMap) const;
215 LVL1::JEMHits* findJetHits(const JetHitsData& data, int crate, int module) const;
217 const LVL1::JEMEtSums* findEnergySums(int crate, int module,
218 const ConstEnergySumsMap& etMap) const;
219 LVL1::JEMEtSums* findEnergySums(const EnergySumsData& data, int crate, int module) const;
221 const LVL1::CMMJetHits* findCmmHits(int crate, int dataID,
222 const ConstCmmHitsMap& cmmHitsMap) const;
223 LVL1::CMMJetHits* findCmmHits(const CmmHitsData& data, int crate, int dataID) const;
225 const LVL1::CMMEtSums* findCmmSums(int crate, int dataID,
226 const ConstCmmSumsMap& cmmEtMap) const;
227 LVL1::CMMEtSums* findCmmSums(const CmmSumsData& data, int crate, int dataID) const;
228
229 std::vector<uint32_t> makeSourceIDs() const;
230
232 void setupJeMap(const JetElementCollection* jeCollection,
233 ConstJetElementMap& jeMap,
234 LVL1::JetElementKey& elementKey) const;
236 void setupHitsMap(const JetHitsCollection* hitCollection,
237 ConstJetHitsMap& hitsMap) const;
239 void setupEtMap(const EnergySumsCollection* enCollection,
240 ConstEnergySumsMap& etMap) const;
242 void setupCmmHitsMap(const CmmHitsCollection* hitCollection,
243 ConstCmmHitsMap& cmmHitsMap) const;
245 void setupCmmEtMap(const CmmSumsCollection* enCollection,
246 ConstCmmSumsMap& cmmEtMap) const;
247
249 bool slinkSlices(int crate, int module, int modulesPerSlink,
250 int& timeslices, int& trigJem,
251 const ConstJetElementMap& jeMap,
252 const ConstJetHitsMap& hitsMap,
253 const ConstEnergySumsMap& etMap,
254 const ConstCmmHitsMap& cmmHitsMap,
255 const ConstCmmSumsMap& cmmEtMap,
256 LVL1::JetElementKey& elementKey) const;
257
259 ToolHandle<LVL1::IL1CaloMappingTool> m_jemMaps;
261 ToolHandle<LVL1BS::L1CaloErrorByteStreamTool> m_errorTool;
262
272 const int m_channels;
274 const int m_crates;
276 const int m_modules;
284 std::vector<uint32_t> m_sourceIDsProp;
286 const eformat::SubDetector m_subDetector;
289};
290
291} // end namespace
292
293#endif
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
An STL vector of pointers that by default owns its pointed-to elements.
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Derived DataVector<T>.
Definition DataVector.h:795
Template class for assembling a full atlas raw event from subfragments.
std::vector< const ROBF * > VROBFRAG
Sub-Block class for CMM-Energy data.
Sub-Block class for CMM-Jet data.
Sub-Block class for JEM data.
Definition JemSubBlock.h:25
const int m_modules
Number of JEM modules per crate.
void setupJeMap(const JetElementCollection *jeCollection, ConstJetElementMap &jeMap, LVL1::JetElementKey &elementKey) const
Set up jet element map.
StatusCode convertBs(const std::string &sgKey, const IROBDataProviderSvc::VROBFRAG &robFrags, JepByteStreamToolData &data) const
Convert bytestream to given container type.
DataVector< LVL1::CMMJetHits > CmmHitsCollection
void decodeCmmJet(CmmJetSubBlock *subBlock, int trigCmm, CmmHitsData &data, LocalData &ld) const
Unpack CMM-Jet sub-block.
ServiceHandle< IByteStreamCnvSvc > m_byteStreamCnvSvc
int m_crateOffsetHw
Property: Hardware crate number offset.
const LVL1::JetElement * findJetElement(double eta, double phi, const ConstJetElementMap &jeMap, LVL1::JetElementKey &elementKey) const
Find a jet element given eta, phi.
IROBDataProviderSvc::VROBFRAG::const_iterator ROBIterator
int m_dfltSlices
Property: Default number of slices in simulation.
std::map< int, const LVL1::CMMJetHits * > ConstCmmHitsMap
std::map< int, LVL1::CMMEtSums * > CmmSumsMap
DataVector< LVL1::CMMEtSums > CmmSumsCollection
void decodeCmmEnergy(CmmEnergySubBlock *subBlock, int trigCmm, CmmSumsData &data, LocalData &ld) const
Unpack CMM-Energy sub-block.
const LVL1::JEMHits * findJetHits(int crate, int module, const ConstJetHitsMap &hitsMap) const
Find jet hits for given crate, module.
DataVector< LVL1::JEMHits > JetHitsCollection
const LVL1::CMMEtSums * findCmmSums(int crate, int dataID, const ConstCmmSumsMap &cmmEtMap) const
Find CMM energy sums for given crate, data ID.
std::map< unsigned int, const LVL1::JetElement * > ConstJetElementMap
const L1CaloSrcIdMap m_srcIdMap
Source ID converter.
void setupCmmHitsMap(const CmmHitsCollection *hitCollection, ConstCmmHitsMap &cmmHitsMap) const
Set up CMM hits map.
int m_forceSlices
Property: Force number of slices in bytestream.
const LVL1::JEMEtSums * findEnergySums(int crate, int module, const ConstEnergySumsMap &etMap) const
Find energy sums for given crate, module.
int m_dataFormat
Property: Data compression format.
virtual StatusCode initialize()
std::map< int, LVL1::JEMEtSums * > EnergySumsMap
OFFLINE_FRAGMENTS_NAMESPACE::PointerType ROBPointer
std::map< int, const LVL1::JEMEtSums * > ConstEnergySumsMap
ToolHandle< LVL1::IL1CaloMappingTool > m_jemMaps
Property: Channel mapping tool.
JepByteStreamTool(const std::string &type, const std::string &name, const IInterface *parent)
void setupCmmEtMap(const CmmSumsCollection *enCollection, ConstCmmSumsMap &cmmEtMap) const
Set up CMM energy sums map.
std::map< int, const LVL1::CMMEtSums * > ConstCmmSumsMap
DataVector< LVL1::JEMEtSums > EnergySumsCollection
DataVector< LVL1::JetElement > JetElementCollection
std::map< unsigned int, LVL1::JetElement * > JetElementMap
StatusCode convert(const std::string &sgKey, const IROBDataProviderSvc::VROBFRAG &robFrags, DataVector< LVL1::JetElement > *jeCollection) const
Convert ROB fragments to jet elements.
std::map< int, LVL1::CMMJetHits * > CmmHitsMap
int m_version
Property: Sub_block header version.
const LVL1::CMMJetHits * findCmmHits(int crate, int dataID, const ConstCmmHitsMap &cmmHitsMap) const
Find CMM hits for given crate, data ID.
std::map< int, const LVL1::JEMHits * > ConstJetHitsMap
const int m_crates
Number of crates.
const int m_channels
Number of channels per module.
ToolHandle< LVL1BS::L1CaloErrorByteStreamTool > m_errorTool
Error collection tool.
bool slinkSlices(int crate, int module, int modulesPerSlink, int &timeslices, int &trigJem, const ConstJetElementMap &jeMap, const ConstJetHitsMap &hitsMap, const ConstEnergySumsMap &etMap, const ConstCmmHitsMap &cmmHitsMap, const ConstCmmSumsMap &cmmEtMap, LVL1::JetElementKey &elementKey) const
Get number of slices and triggered slice offset for next slink.
void setupEtMap(const EnergySumsCollection *enCollection, ConstEnergySumsMap &etMap) const
Set up energy sums map.
int m_crateOffsetSw
Property: Software crate number offset.
const eformat::SubDetector m_subDetector
Sub-detector type.
void decodeJem(JemSubBlock *subBlock, int trigJem, JepByteStreamToolData &data, LocalData &ld) const
Unpack JEM sub-block.
std::vector< uint32_t > m_sourceIDsProp
Property: ROB source IDs.
int m_slinks
Property: Number of slinks per crate when writing out bytestream.
std::map< int, LVL1::JEMHits * > JetHitsMap
virtual StatusCode finalize()
void setupHitsMap(const JetHitsCollection *hitCollection, ConstJetHitsMap &hitsMap) const
Set up jet hits map.
static const InterfaceID & interfaceID()
AlgTool InterfaceID.
OFFLINE_FRAGMENTS_NAMESPACE::PointerType RODPointer
std::vector< uint32_t > makeSourceIDs() const
const std::vector< uint32_t > & sourceIDs() const
Return reference to vector with all possible Source Identifiers.
Tool to accumulate ROB/ROD unpacking errors.
This class provides conversion between Lower level Source ID to higher level source ID for L1Calo Byt...
CMMEtSums object stores Et sums from the Energy CMMs.
CMMJetHits class stores Jet hit multiplicities received by and read out from the Jet CMMs.
Jet/Energy Processor container for writing bytestream.
The JetElementKey object provides the key for each JetElement depending on its eta,...
Jet elements are the inputs to the Jet, ETmiss and ETsum triggers.
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
const DataType * PointerType
Definition RawEvent.h:25
CmmHitsData(CmmHitsCollection *const cmmHitCollection)
CmmHitsCollection *const m_cmmHitCollection
CmmSumsData(CmmSumsCollection *const cmmEtCollection)
EnergySumsData(EnergySumsCollection *const etCollection)
JepByteStreamToolData(const CollectionType collection)
JetElementData(JetElementCollection *const jeCollection)
JetHitsData(JetHitsCollection *const hitCollection)
std::vector< int > exErrVec
Ex error vector for unpacking.
LVL1::JetElementKey elementKey
Jet element key provider.
int coreOverlap
Jet elements to accept (0=Core, 1=Overlap)
std::vector< unsigned int > hitsVec
Hits vector for unpacking.
std::vector< unsigned int > exVec
Ex vector for unpacking.
std::vector< unsigned int > eyVec
Ey vector for unpacking.
std::vector< int > etErrVec
Ex error vector for unpacking.
unsigned int rodErr
Unpacking error code.
std::vector< int > errVec
Error vector for unpacking.
std::vector< unsigned int > etVec
Et vector for unpacking.
std::vector< int > eyErrVec
Ex error vector for unpacking.