Skip to content
Snippets Groups Projects
Commit 38c62cf3 authored by Frank Winklmeier's avatar Frank Winklmeier
Browse files

Merge branch 'constJep.TrigT1CaloByteStream-20201023' into 'master'

TrigT1CaloByteStream: Make JepByteStream tools const.

See merge request atlas/athena!37579
parents c2c02599 87be0bde
No related branches found
No related tags found
No related merge requests found
Showing
with 1388 additions and 1215 deletions
......@@ -196,10 +196,10 @@ StatusCode CpByteStreamV2Tool::convert(const LVL1::CPBSCollectionV2 *const cp,
FullEventAssembler<L1CaloSrcIdMap>::RODDATA *theROD = 0;
// Set up the container maps
LVL1::TriggerTowerKey towerKey;
// Set up the container maps
// CPM tower map
ConstCpmTowerMap ttMap;
setupCpmTowerMap(cp->towers(), ttMap, towerKey);
......
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRIGT1CALOBYTESTREAM_JEPBYTESTREAMTOOL_H
......@@ -11,7 +11,9 @@
#include <string>
#include <vector>
#include "L1CaloSrcIdMap.h"
#include "AthenaBaseComps/AthAlgTool.h"
#include "TrigT1CaloUtils/JetElementKey.h"
#include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
#include "ByteStreamData/RawEvent.h"
#include "AthContainers/DataVector.h"
......@@ -65,28 +67,59 @@ class JepByteStreamTool : public AthAlgTool {
virtual StatusCode finalize();
/// Convert ROB fragments to jet elements
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JetElement>* jeCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JetElement>* jeCollection) const;
/// Convert ROB fragments to jet hits
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMHits>* hitCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMHits>* hitCollection) const;
/// Convert ROB fragments to energy sums
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMEtSums>* etCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMEtSums>* etCollection) const;
/// Convert ROB fragments to CMM jet hits
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMMJetHits>* hitCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMMJetHits>* hitCollection) const;
/// Convert ROB fragments to CMM energy sums
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMMEtSums>* etCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMMEtSums>* etCollection) const;
/// Convert JEP Container to bytestream
StatusCode convert(const LVL1::JEPBSCollection* jep, RawEventWrite* re);
StatusCode convert(const LVL1::JEPBSCollection* jep, RawEventWrite* re) const;
/// Return reference to vector with all possible Source Identifiers
const std::vector<uint32_t>& sourceIDs(const std::string& sgKey);
const std::vector<uint32_t>& sourceIDs() const;
private:
struct LocalData
{
/// Jet elements to accept (0=Core, 1=Overlap)
int coreOverlap = 0;
/// Unpacking error code
unsigned int rodErr = 0;
/// Ex vector for unpacking
std::vector<unsigned int> exVec;
/// Ey vector for unpacking
std::vector<unsigned int> eyVec;
/// Et vector for unpacking
std::vector<unsigned int> etVec;
/// Ex error vector for unpacking
std::vector<int> exErrVec;
/// Ex error vector for unpacking
std::vector<int> eyErrVec;
/// Ex error vector for unpacking
std::vector<int> etErrVec;
/// Hits vector for unpacking
std::vector<unsigned int> hitsVec;
/// Error vector for unpacking
std::vector<int> errVec;
/// Jet element key provider
LVL1::JetElementKey elementKey;
};
enum CollectionType { JET_ELEMENTS, JET_HITS, ENERGY_SUMS,
CMM_HITS, CMM_SUMS };
......@@ -152,129 +185,103 @@ class JepByteStreamTool : public AthAlgTool {
};
/// Convert bytestream to given container type
StatusCode convertBs(const IROBDataProviderSvc::VROBFRAG& robFrags,
JepByteStreamToolData& data);
StatusCode convertBs(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
JepByteStreamToolData& data) const;
/// Unpack CMM-Energy sub-block
void decodeCmmEnergy(CmmEnergySubBlock* subBlock, int trigCmm, CmmSumsData& data);
void decodeCmmEnergy(CmmEnergySubBlock* subBlock, int trigCmm, CmmSumsData& data,
LocalData& ld) const;
/// Unpack CMM-Jet sub-block
void decodeCmmJet(CmmJetSubBlock* subBlock, int trigCmm, CmmHitsData& data);
void decodeCmmJet(CmmJetSubBlock* subBlock, int trigCmm, CmmHitsData& data,
LocalData& ld) const;
/// Unpack JEM sub-block
void decodeJem(JemSubBlock* subBlock, int trigJem,
JepByteStreamToolData& data);
JepByteStreamToolData& data,
LocalData& ld) const;
/// Find a jet element given eta, phi
const LVL1::JetElement* findJetElement(double eta, double phi) const;
LVL1::JetElement* findJetElement(const JetElementData& data, double eta, double phi) const;
const LVL1::JetElement* findJetElement(double eta, double phi,
const ConstJetElementMap& jeMap,
LVL1::JetElementKey& elementKey) const;
LVL1::JetElement* findJetElement(const JetElementData& data, double eta, double phi,
LVL1::JetElementKey& elementKey) const;
/// Find jet hits for given crate, module
const LVL1::JEMHits* findJetHits(int crate, int module) const;
const LVL1::JEMHits* findJetHits(int crate, int module,
const ConstJetHitsMap& hitsMap) const;
LVL1::JEMHits* findJetHits(const JetHitsData& data, int crate, int module) const;
/// Find energy sums for given crate, module
const LVL1::JEMEtSums* findEnergySums(int crate, int module) const;
const LVL1::JEMEtSums* findEnergySums(int crate, int module,
const ConstEnergySumsMap& etMap) const;
LVL1::JEMEtSums* findEnergySums(const EnergySumsData& data, int crate, int module) const;
/// Find CMM hits for given crate, data ID
const LVL1::CMMJetHits* findCmmHits(int crate, int dataID) const;
const LVL1::CMMJetHits* findCmmHits(int crate, int dataID,
const ConstCmmHitsMap& cmmHitsMap) const;
LVL1::CMMJetHits* findCmmHits(const CmmHitsData& data, int crate, int dataID) const;
/// Find CMM energy sums for given crate, data ID
const LVL1::CMMEtSums* findCmmSums(int crate, int dataID) const;
const LVL1::CMMEtSums* findCmmSums(int crate, int dataID,
const ConstCmmSumsMap& cmmEtMap) const;
LVL1::CMMEtSums* findCmmSums(const CmmSumsData& data, int crate, int dataID) const;
std::vector<uint32_t> makeSourceIDs() const;
/// Set up jet element map
void setupJeMap(const JetElementCollection* jeCollection);
void setupJeMap(const JetElementCollection* jeCollection,
ConstJetElementMap& jeMap,
LVL1::JetElementKey& elementKey) const;
/// Set up jet hits map
void setupHitsMap(const JetHitsCollection* hitCollection);
void setupHitsMap(const JetHitsCollection* hitCollection,
ConstJetHitsMap& hitsMap) const;
/// Set up energy sums map
void setupEtMap(const EnergySumsCollection* enCollection);
void setupEtMap(const EnergySumsCollection* enCollection,
ConstEnergySumsMap& etMap) const;
/// Set up CMM hits map
void setupCmmHitsMap(const CmmHitsCollection* hitCollection);
void setupCmmHitsMap(const CmmHitsCollection* hitCollection,
ConstCmmHitsMap& cmmHitsMap) const;
/// Set up CMM energy sums map
void setupCmmEtMap(const CmmSumsCollection* enCollection);
void setupCmmEtMap(const CmmSumsCollection* enCollection,
ConstCmmSumsMap& cmmEtMap) const;
/// Get number of slices and triggered slice offset for next slink
bool slinkSlices(int crate, int module, int modulesPerSlink,
int& timeslices, int& trigJem);
int& timeslices, int& trigJem,
const ConstJetElementMap& jeMap,
const ConstJetHitsMap& hitsMap,
const ConstEnergySumsMap& etMap,
const ConstCmmHitsMap& cmmHitsMap,
const ConstCmmSumsMap& cmmEtMap,
LVL1::JetElementKey& elementKey) const;
/// Channel mapping tool
/// Property: Channel mapping tool
ToolHandle<LVL1::IL1CaloMappingTool> m_jemMaps;
/// Error collection tool
ToolHandle<LVL1BS::L1CaloErrorByteStreamTool> m_errorTool;
/// Hardware crate number offset
/// Property: Hardware crate number offset
int m_crateOffsetHw;
/// Software crate number offset
/// Property: Software crate number offset
int m_crateOffsetSw;
/// Sub_block header version
/// Property: Sub_block header version
int m_version;
/// Data compression format
/// Property: Data compression format
int m_dataFormat;
/// Number of channels per module
int m_channels;
const int m_channels;
/// Number of crates
int m_crates;
const int m_crates;
/// Number of JEM modules per crate
int m_modules;
/// Number of slinks per crate when writing out bytestream
const int m_modules;
/// Property: Number of slinks per crate when writing out bytestream
int m_slinks;
/// Default number of slices in simulation
/// Property: Default number of slices in simulation
int m_dfltSlices;
/// Force number of slices in bytestream
/// Property: Force number of slices in bytestream
int m_forceSlices;
/// Jet elements to accept (0=Core, 1=Overlap)
int m_coreOverlap;
/// Unpacking error code
unsigned int m_rodErr;
/// ROB source IDs
std::vector<uint32_t> m_sourceIDs;
/// Property: ROB source IDs
std::vector<uint32_t> m_sourceIDsProp;
/// Sub-detector type
eformat::SubDetector m_subDetector;
const eformat::SubDetector m_subDetector;
/// Source ID converter
L1CaloSrcIdMap* m_srcIdMap;
/// Jet element key provider
LVL1::JetElementKey* m_elementKey;
/// JemSubBlock for unpacking
JemSubBlock* m_jemSubBlock;
/// CmmEnergySubBlock for unpacking
CmmEnergySubBlock* m_cmmEnergySubBlock;
/// CmmJetSubBlock for unpacking
CmmJetSubBlock* m_cmmJetSubBlock;
/// Ex vector for unpacking
std::vector<unsigned int> m_exVec;
/// Ey vector for unpacking
std::vector<unsigned int> m_eyVec;
/// Et vector for unpacking
std::vector<unsigned int> m_etVec;
/// Ex error vector for unpacking
std::vector<int> m_exErrVec;
/// Ex error vector for unpacking
std::vector<int> m_eyErrVec;
/// Ex error vector for unpacking
std::vector<int> m_etErrVec;
/// Hits vector for unpacking
std::vector<unsigned int> m_hitsVec;
/// Error vector for unpacking
std::vector<int> m_errVec;
/// Vector for current JEM sub-blocks
DataVector<JemSubBlock> m_jemBlocks;
/// Vector for current CMM-Energy sub-blocks
DataVector<CmmEnergySubBlock> m_cmmEnergyBlocks;
/// Vector for current CMM-Jet sub-blocks
DataVector<CmmJetSubBlock> m_cmmJetBlocks;
/// Jet element map
ConstJetElementMap m_jeMap;
/// Jet hits map
ConstJetHitsMap m_hitsMap;
/// Energy sums map
ConstEnergySumsMap m_etMap;
/// CMM hits map
ConstCmmHitsMap m_cmmHitsMap;
/// CMM energy sums map
ConstCmmSumsMap m_cmmEtMap;
/// ROD Status words
std::vector<uint32_t>* m_rodStatus;
/// ROD status map
std::map<uint32_t, std::vector<uint32_t>* > m_rodStatusMap;
/// Event assembler
FullEventAssembler<L1CaloSrcIdMap>* m_fea;
const L1CaloSrcIdMap m_srcIdMap;
};
} // end namespace
......
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRIGT1CALOBYTESTREAM_JEPBYTESTREAMV1TOOL_H
......@@ -11,6 +11,8 @@
#include <string>
#include <vector>
#include "L1CaloSrcIdMap.h"
#include "TrigT1CaloUtils/JetElementKey.h"
#include "AthenaBaseComps/AthAlgTool.h"
#include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
#include "ByteStreamData/RawEvent.h"
......@@ -61,32 +63,63 @@ class JepByteStreamV1Tool : public AthAlgTool {
/// AlgTool InterfaceID
static const InterfaceID& interfaceID();
virtual StatusCode initialize();
virtual StatusCode finalize();
virtual StatusCode initialize() override;
virtual StatusCode finalize() override;
/// Convert ROB fragments to jet elements
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JetElement>* jeCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JetElement>* jeCollection) const;
/// Convert ROB fragments to jet hits
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMHits>* hitCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMHits>* hitCollection) const;
/// Convert ROB fragments to energy sums
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMEtSums>* etCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMEtSums>* etCollection) const;
/// Convert ROB fragments to CMM jet hits
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMMJetHits>* hitCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMMJetHits>* hitCollection) const;
/// Convert ROB fragments to CMM energy sums
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMMEtSums>* etCollection);
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMMEtSums>* etCollection) const;
/// Convert JEP Container to bytestream
StatusCode convert(const LVL1::JEPBSCollectionV1* jep, RawEventWrite* re);
StatusCode convert(const LVL1::JEPBSCollectionV1* jep, RawEventWrite* re) const;
/// Return reference to vector with all possible Source Identifiers
const std::vector<uint32_t>& sourceIDs(const std::string& sgKey);
const std::vector<uint32_t>& sourceIDs() const;
private:
struct LocalData
{
/// Jet elements to accept (0=Core, 1=Overlap)
int coreOverlap = 0;
/// Unpacking error code
unsigned int rodErr = 0;
/// Ex vector for unpacking
std::vector<unsigned int> exVec;
/// Ey vector for unpacking
std::vector<unsigned int> eyVec;
/// Et vector for unpacking
std::vector<unsigned int> etVec;
/// Ex error vector for unpacking
std::vector<int> exErrVec;
/// Ex error vector for unpacking
std::vector<int> eyErrVec;
/// Ex error vector for unpacking
std::vector<int> etErrVec;
/// Hits vector for unpacking
std::vector<unsigned int> hitsVec;
/// Error vector for unpacking
std::vector<int> errVec;
/// Jet element key provider
LVL1::JetElementKey elementKey;
};
enum CollectionType { JET_ELEMENTS, JET_HITS, ENERGY_SUMS,
CMM_HITS, CMM_SUMS };
......@@ -152,133 +185,107 @@ class JepByteStreamV1Tool : public AthAlgTool {
};
/// Convert bytestream to given container type
StatusCode convertBs(const IROBDataProviderSvc::VROBFRAG& robFrags,
JepByteStreamToolData& data);
StatusCode convertBs(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
JepByteStreamToolData& data) const;
/// Unpack CMM-Energy sub-block
void decodeCmmEnergy(CmmEnergySubBlock* subBlock, int trigCmm, CmmSumsData& data);
void decodeCmmEnergy(CmmEnergySubBlock* subBlock, int trigCmm, CmmSumsData& data,
LocalData& ld) const;
/// Unpack CMM-Jet sub-block
void decodeCmmJet(CmmJetSubBlock* subBlock, int trigCmm, CmmHitsData& data);
void decodeCmmJet(CmmJetSubBlock* subBlock, int trigCmm, CmmHitsData& data,
LocalData& ld) const;
/// Unpack JEM sub-block
void decodeJem(JemSubBlockV1* subBlock, int trigJem,
JepByteStreamToolData& data);
JepByteStreamToolData& data,
LocalData& ld) const;
/// Find a jet element given eta, phi
const LVL1::JetElement* findJetElement(double eta, double phi) const;
LVL1::JetElement* findJetElement(const JetElementData& data, double eta, double phi) const;
const LVL1::JetElement* findJetElement(double eta, double phi,
const ConstJetElementMap& jeMap,
LVL1::JetElementKey& elementKey) const;
LVL1::JetElement* findJetElement(const JetElementData& data, double eta, double phi,
LVL1::JetElementKey& elementKey) const;
/// Find jet hits for given crate, module
const LVL1::JEMHits* findJetHits(int crate, int module) const;
const LVL1::JEMHits* findJetHits(int crate, int module,
const ConstJetHitsMap& hitsMap) const;
LVL1::JEMHits* findJetHits(const JetHitsData& data, int crate, int module) const;
/// Find energy sums for given crate, module
const LVL1::JEMEtSums* findEnergySums(int crate, int module) const;
const LVL1::JEMEtSums* findEnergySums(int crate, int module,
const ConstEnergySumsMap& etMap) const;
LVL1::JEMEtSums* findEnergySums(const EnergySumsData& data, int crate, int module) const;
/// Find CMM hits for given crate, data ID
const LVL1::CMMJetHits* findCmmHits(int crate, int dataID) const;
const LVL1::CMMJetHits* findCmmHits(int crate, int dataID,
const ConstCmmHitsMap& cmmHitsMap) const;
LVL1::CMMJetHits* findCmmHits(const CmmHitsData& data, int crate, int dataID) const;
/// Find CMM energy sums for given crate, data ID
const LVL1::CMMEtSums* findCmmSums(int crate, int dataID) const;
const LVL1::CMMEtSums* findCmmSums(int crate, int dataID,
const ConstCmmSumsMap& cmmEtMap) const;
LVL1::CMMEtSums* findCmmSums(const CmmSumsData& data, int crate, int dataID) const;
std::vector<uint32_t> makeSourceIDs() const;
/// Set up jet element map
void setupJeMap(const JetElementCollection* jeCollection);
void setupJeMap(const JetElementCollection* jeCollection,
ConstJetElementMap& jeMap,
LVL1::JetElementKey& elementKey) const;
/// Set up jet hits map
void setupHitsMap(const JetHitsCollection* hitCollection);
void setupHitsMap(const JetHitsCollection* hitCollection,
ConstJetHitsMap& hitsMap) const;
/// Set up energy sums map
void setupEtMap(const EnergySumsCollection* enCollection);
void setupEtMap(const EnergySumsCollection* enCollection,
ConstEnergySumsMap& etMap) const;
/// Set up CMM hits map
void setupCmmHitsMap(const CmmHitsCollection* hitCollection);
void setupCmmHitsMap(const CmmHitsCollection* hitCollection,
ConstCmmHitsMap& cmmHitsMap) const;
/// Set up CMM energy sums map
void setupCmmEtMap(const CmmSumsCollection* enCollection);
void setupCmmEtMap(const CmmSumsCollection* enCollection,
ConstCmmSumsMap& cmmEtMap) const;
/// Get number of slices and triggered slice offset for next slink
bool slinkSlices(int crate, int module, int modulesPerSlink,
int& timeslices, int& trigJem);
int& timeslices, int& trigJem,
const ConstJetElementMap& jeMap,
const ConstJetHitsMap& hitsMap,
const ConstEnergySumsMap& etMap,
const ConstCmmHitsMap& cmmHitsMap,
const ConstCmmSumsMap& cmmEtMap,
LVL1::JetElementKey& elementKey) const;
/// Channel mapping tool
/// Property: Channel mapping tool
ToolHandle<LVL1::IL1CaloMappingTool> m_jemMaps;
/// Error collection tool
/// Property: Error collection tool
ToolHandle<LVL1BS::L1CaloErrorByteStreamTool> m_errorTool;
/// Hardware crate number offset
/// Property: Hardware crate number offset
int m_crateOffsetHw;
/// Software crate number offset
/// Property: Software crate number offset
int m_crateOffsetSw;
/// Sub_block header version
/// Property: Sub_block header version
int m_version;
/// Data compression format
/// Property: Data compression format
int m_dataFormat;
/// Number of channels per module
int m_channels;
const int m_channels;
/// Number of crates
int m_crates;
const int m_crates;
/// Number of JEM modules per crate
int m_modules;
/// Number of slinks per crate when writing out bytestream
const int m_modules;
/// Property: Number of slinks per crate when writing out bytestream
int m_slinks;
/// Default number of slices in simulation
/// Property: Default number of slices in simulation
int m_dfltSlices;
/// Force number of slices in bytestream
/// Property: Force number of slices in bytestream
int m_forceSlices;
/// Minimum crate number when writing out bytestream
/// Property: Minimum crate number when writing out bytestream
int m_crateMin;
/// Maximum crate number when writing out bytestream
/// Property: Maximum crate number when writing out bytestream
int m_crateMax;
/// Jet elements to accept (0=Core, 1=Overlap)
int m_coreOverlap;
/// Unpacking error code
unsigned int m_rodErr;
/// ROB source IDs
std::vector<uint32_t> m_sourceIDs;
/// Property: ROB source IDs
std::vector<uint32_t> m_sourceIDsProp;
/// Sub-detector type
eformat::SubDetector m_subDetector;
const eformat::SubDetector m_subDetector;
/// Source ID converter
L1CaloSrcIdMap* m_srcIdMap;
/// Jet element key provider
LVL1::JetElementKey* m_elementKey;
/// JemSubBlock for unpacking
JemSubBlockV1* m_jemSubBlock;
/// CmmEnergySubBlock for unpacking
CmmEnergySubBlock* m_cmmEnergySubBlock;
/// CmmJetSubBlock for unpacking
CmmJetSubBlock* m_cmmJetSubBlock;
/// Ex vector for unpacking
std::vector<unsigned int> m_exVec;
/// Ey vector for unpacking
std::vector<unsigned int> m_eyVec;
/// Et vector for unpacking
std::vector<unsigned int> m_etVec;
/// Ex error vector for unpacking
std::vector<int> m_exErrVec;
/// Ex error vector for unpacking
std::vector<int> m_eyErrVec;
/// Ex error vector for unpacking
std::vector<int> m_etErrVec;
/// Hits vector for unpacking
std::vector<unsigned int> m_hitsVec;
/// Error vector for unpacking
std::vector<int> m_errVec;
/// Vector for current JEM sub-blocks
DataVector<JemSubBlockV1> m_jemBlocks;
/// Vector for current CMM-Energy sub-blocks
DataVector<CmmEnergySubBlock> m_cmmEnergyBlocks;
/// Vector for current CMM-Jet sub-blocks
DataVector<CmmJetSubBlock> m_cmmJetBlocks;
/// Jet element map
ConstJetElementMap m_jeMap;
/// Jet hits map
ConstJetHitsMap m_hitsMap;
/// Energy sums map
ConstEnergySumsMap m_etMap;
/// CMM hits map
ConstCmmHitsMap m_cmmHitsMap;
/// CMM energy sums map
ConstCmmSumsMap m_cmmEtMap;
/// ROD Status words
std::vector<uint32_t>* m_rodStatus;
/// ROD status map
std::map<uint32_t, std::vector<uint32_t>* > m_rodStatusMap;
/// Event assembler
FullEventAssembler<L1CaloSrcIdMap>* m_fea;
const L1CaloSrcIdMap m_srcIdMap;
};
} // end namespace
......
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRIGT1CALOBYTESTREAM_JEPBYTESTREAMV2TOOL_H
......@@ -11,6 +11,8 @@
#include <string>
#include <vector>
#include "L1CaloSrcIdMap.h"
#include "TrigT1CaloUtils/JetElementKey.h"
#include "AthenaBaseComps/AthAlgTool.h"
#include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
#include "ByteStreamData/RawEvent.h"
......@@ -62,43 +64,70 @@ class JepByteStreamV2Tool : public AthAlgTool {
/// AlgTool InterfaceID
static const InterfaceID& interfaceID();
virtual StatusCode initialize();
virtual StatusCode finalize();
virtual StatusCode initialize() override;
virtual StatusCode finalize() override;
/// Convert ROB fragments to jet elements
StatusCode convert(const std::string& name,
DataVector<LVL1::JetElement>* jeCollection);
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JetElement>* jeCollection);
DataVector<LVL1::JetElement>* jeCollection) const;
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JetElement>* jeCollection) const;
/// Convert ROB fragments to energy sums
StatusCode convert(const std::string& name,
DataVector<LVL1::JEMEtSums>* etCollection);
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMEtSums>* etCollection);
DataVector<LVL1::JEMEtSums>* etCollection) const;
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::JEMEtSums>* etCollection) const;
/// Convert ROB fragments to CMX TOBs
StatusCode convert(const std::string& name,
DataVector<LVL1::CMXJetTob>* tobCollection);
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMXJetTob>* tobCollection);
DataVector<LVL1::CMXJetTob>* tobCollection) const;
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMXJetTob>* tobCollection) const;
/// Convert ROB fragments to CMX jet hits
StatusCode convert(const std::string& name,
DataVector<LVL1::CMXJetHits>* hitCollection);
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMXJetHits>* hitCollection);
DataVector<LVL1::CMXJetHits>* hitCollection) const;
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMXJetHits>* hitCollection) const;
/// Convert ROB fragments to CMX energy sums
StatusCode convert(const std::string& name,
DataVector<LVL1::CMXEtSums>* etCollection);
StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMXEtSums>* etCollection);
DataVector<LVL1::CMXEtSums>* etCollection) const;
StatusCode convert(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
DataVector<LVL1::CMXEtSums>* etCollection) const;
/// Convert JEP Container to bytestream
StatusCode convert(const LVL1::JEPBSCollectionV2* jep, RawEventWrite* re);
StatusCode convert(const LVL1::JEPBSCollectionV2* jep, RawEventWrite* re) const;
/// Return reference to vector with all possible Source Identifiers
const std::vector<uint32_t>& sourceIDs(const std::string& sgKey);
const std::vector<uint32_t>& sourceIDs() const;
private:
enum CollectionType { JET_ELEMENTS, ENERGY_SUMS, CMX_TOBS,
struct LocalData
{
/// Jet elements to accept (0=Core, 1=Overlap)
int coreOverlap = 0;
// Unpacking error code
unsigned int rodErr = 0;
/// Unsigned int unpacking vector 0
std::vector<unsigned int> uintVec0;
/// Unsigned int unpacking vector 1
std::vector<unsigned int> uintVec1;
/// Unsigned int unpacking vector 2
std::vector<unsigned int> uintVec2;
/// Int unpacking vector 0
std::vector<int> intVec0;
/// Int unpacking vector 1
std::vector<int> intVec1;
/// Int unpacking vector 2
std::vector<int> intVec2;
// Jet element key provider
LVL1::JetElementKey elementKey;
};
enum CollectionType { JET_ELEMENTS, ENERGY_SUMS, CMX_TOBS,
CMX_HITS, CMX_SUMS };
typedef DataVector<LVL1::JetElement> JetElementCollection;
......@@ -164,146 +193,124 @@ class JepByteStreamV2Tool : public AthAlgTool {
};
/// Convert bytestream to given container type
StatusCode convertBs(const IROBDataProviderSvc::VROBFRAG& robFrags,
JepByteStreamToolData& data);
StatusCode convertBs(const std::string& sgKey,
const IROBDataProviderSvc::VROBFRAG& robFrags,
JepByteStreamToolData& data) const;
/// Unpack CMX-Energy sub-block
void decodeCmxEnergy(CmxEnergySubBlock* subBlock, int trigJem, CmxSumsData& data);
void decodeCmxEnergy(CmxEnergySubBlock* subBlock, int trigJem, CmxSumsData& data,
LocalData& ld) const;
/// Unpack CMX-Jet sub-block
void decodeCmxJet(CmxJetSubBlock* subBlock, int trigJem,
JepByteStreamToolData& data);
JepByteStreamToolData& data,
LocalData& ld) const;
/// Unpack JEM sub-block
void decodeJem(JemSubBlockV2* subBlock, int trigJem,
JepByteStreamToolData& data);
JepByteStreamToolData& data,
LocalData& ld) const;
/// Find TOB map key for given crate, jem, frame, loc
int tobKey(int crate, int jem, int frame, int loc);
int tobKey(int crate, int jem, int frame, int loc) const;
/// Find a jet element given eta, phi
const LVL1::JetElement* findJetElement(double eta, double phi) const;
LVL1::JetElement* findJetElement(const JetElementData& data, double eta, double phi) const;
const LVL1::JetElement* findJetElement(double eta, double phi,
const ConstJetElementMap& jeMap,
LVL1::JetElementKey& elementKey) const;
LVL1::JetElement* findJetElement(const JetElementData& data, double eta, double phi,
LVL1::JetElementKey& elementKey) const;
/// Find energy sums for given crate, module
const LVL1::JEMEtSums* findEnergySums(int crate, int module) const;
const LVL1::JEMEtSums* findEnergySums(int crate, int module,
const ConstEnergySumsMap& etMap) const;
LVL1::JEMEtSums* findEnergySums(const EnergySumsData& data, int crate, int module) const;
/// Find CMX TOB for given key
const LVL1::CMXJetTob* findCmxTob(int key) const;
const LVL1::CMXJetTob* findCmxTob(int key,
const ConstCmxTobMap& cmxTobMap) const;
LVL1::CMXJetTob* findCmxTob(const CmxTobData& data, int key) const;
/// Find CMX hits for given crate, source
const LVL1::CMXJetHits* findCmxHits(int crate, int source) const;
const LVL1::CMXJetHits* findCmxHits(int crate, int source,
const ConstCmxHitsMap& cmxHitsMap) const;
LVL1::CMXJetHits* findCmxHits(const CmxHitsData& data, int crate, int source) const;
/// Find CMX energy sums for given crate, source
const LVL1::CMXEtSums* findCmxSums(int crate, int source) const;
const LVL1::CMXEtSums* findCmxSums(int crate, int source,
const ConstCmxSumsMap& cmxEtMap) const;
LVL1::CMXEtSums* findCmxSums(const CmxSumsData& data, int crate, int source) const;
std::vector<uint32_t> makeSourceIDs() const;
/// Set up jet element map
void setupJeMap(const JetElementCollection* jeCollection);
void setupJeMap(const JetElementCollection* jeCollection,
ConstJetElementMap& jeMap,
LVL1::JetElementKey& elementKey) const;
/// Set up energy sums map
void setupEtMap(const EnergySumsCollection* enCollection);
void setupEtMap(const EnergySumsCollection* enCollection,
ConstEnergySumsMap& etMap) const;
/// Set up CMX TOB map
void setupCmxTobMap(const CmxTobCollection* tobCollection);
void setupCmxTobMap(const CmxTobCollection* tobCollection,
ConstCmxTobMap& cmxTobMap) const;
/// Set up CMX hits map
void setupCmxHitsMap(const CmxHitsCollection* hitCollection);
void setupCmxHitsMap(const CmxHitsCollection* hitCollection,
ConstCmxHitsMap& cmxHitsMap) const;
/// Set up CMX energy sums map
void setupCmxEtMap(const CmxSumsCollection* enCollection);
void setupCmxEtMap(const CmxSumsCollection* enCollection,
ConstCmxSumsMap& cmxEtMap) const;
/// Get number of slices and triggered slice offset for next slink
bool slinkSlices(int crate, int module, int modulesPerSlink,
int& timeslices, int& trigJem);
int& timeslices, int& trigJem,
const ConstJetElementMap& jeMap,
const ConstEnergySumsMap& etMap,
const ConstCmxTobMap& cmxTobMap,
const ConstCmxHitsMap& cmxHitsMap,
const ConstCmxSumsMap& cmxEtMap,
LVL1::JetElementKey& elementKey) const;
/// Get energy subBlock types from CMXEtSums source type
void energySubBlockTypes(int source,
CmxEnergySubBlock::SourceType& srcType,
CmxEnergySubBlock::SumType& sumType,
CmxEnergySubBlock::HitsType& hitType);
CmxEnergySubBlock::HitsType& hitType) const;
/// Get jet hits subBlock source ID from CMXJetHits source type
int jetSubBlockSourceId(int source);
int jetSubBlockSourceId(int source) const;
ServiceHandle<IROBDataProviderSvc> m_robDataProvider;
/// Channel mapping tool
/// Property: Channel mapping tool
ToolHandle<LVL1::IL1CaloMappingTool> m_jemMaps;
/// Error collection tool
/// Property:Error collection tool
ToolHandle<LVL1BS::L1CaloErrorByteStreamTool> m_errorTool;
/// Hardware crate number offset
/// Property:Hardware crate number offset
int m_crateOffsetHw;
/// Software crate number offset
/// Property:Software crate number offset
int m_crateOffsetSw;
/// Sub_block header version
/// Property:Sub_block header version
int m_version;
/// Data compression format
/// Property:Data compression format
int m_dataFormat;
/// Number of channels per module
int m_channels;
const int m_channels;
/// Number of crates
int m_crates;
const int m_crates;
/// Number of JEM modules per crate
int m_modules;
const int m_modules;
/// Number of RoI frames
int m_frames;
const int m_frames;
/// Number of RoI locations
int m_locations;
const int m_locations;
/// Maximum number of TOBs per module
int m_maxTobs;
/// Number of slinks per crate when writing out bytestream
const int m_maxTobs;
/// Property: Number of slinks per crate when writing out bytestream
int m_slinks;
/// Default number of slices in simulation
/// Property: Default number of slices in simulation
int m_dfltSlices;
/// Force number of slices in bytestream
/// Property: Force number of slices in bytestream
int m_forceSlices;
/// Minimum crate number when writing out bytestream
/// Property: Minimum crate number when writing out bytestream
int m_crateMin;
/// Maximum crate number when writing out bytestream
/// Property: Maximum crate number when writing out bytestream
int m_crateMax;
/// Jet elements to accept (0=Core, 1=Overlap)
int m_coreOverlap;
/// Unpacking error code
unsigned int m_rodErr;
/// ROB source IDs
std::vector<uint32_t> m_sourceIDs;
/// Property:ROB source IDs
std::vector<uint32_t> m_sourceIDsProp;
/// Sub-detector type
eformat::SubDetector m_subDetector;
const eformat::SubDetector m_subDetector;
/// Source ID converter
L1CaloSrcIdMap* m_srcIdMap;
/// Jet element key provider
LVL1::JetElementKey* m_elementKey;
/// JemSubBlock for unpacking
JemSubBlockV2* m_jemSubBlock;
/// CmxEnergySubBlock for unpacking
CmxEnergySubBlock* m_cmxEnergySubBlock;
/// CmxJetSubBlock for unpacking
CmxJetSubBlock* m_cmxJetSubBlock;
/// Unsigned int unpacking vector 0
std::vector<unsigned int> m_uintVec0;
/// Unsigned int unpacking vector 1
std::vector<unsigned int> m_uintVec1;
/// Unsigned int unpacking vector 2
std::vector<unsigned int> m_uintVec2;
/// Int unpacking vector 0
std::vector<int> m_intVec0;
/// Int unpacking vector 1
std::vector<int> m_intVec1;
/// Int unpacking vector 2
std::vector<int> m_intVec2;
/// Vector for current JEM sub-blocks
DataVector<JemSubBlockV2> m_jemBlocks;
/// Vector for current CMX-Energy sub-blocks
DataVector<CmxEnergySubBlock> m_cmxEnergyBlocks;
/// Vector for current CMX-Jet sub-blocks
DataVector<CmxJetSubBlock> m_cmxJetBlocks;
/// Jet element map
ConstJetElementMap m_jeMap;
/// Energy sums map
ConstEnergySumsMap m_etMap;
/// CMX TOB map
ConstCmxTobMap m_cmxTobMap;
/// CMX hits map
ConstCmxHitsMap m_cmxHitsMap;
/// CMX energy sums map
ConstCmxSumsMap m_cmxEtMap;
/// ROD Status words
std::vector<uint32_t>* m_rodStatus;
/// ROD status map
std::map<uint32_t, std::vector<uint32_t>* > m_rodStatusMap;
/// Event assembler
FullEventAssembler<L1CaloSrcIdMap>* m_fea;
const L1CaloSrcIdMap m_srcIdMap;
};
} // end namespace
......
......@@ -90,7 +90,7 @@ StatusCode JepReadByteStreamV1Cnv<Container>::createObj( IOpaqueAddress* pAddr,
}
// get SourceIDs
const std::vector<uint32_t>& vID(m_tool->sourceIDs(nm));
const std::vector<uint32_t>& vID(m_tool->sourceIDs());
// get ROB fragments
IROBDataProviderSvc::VROBFRAG robFrags;
......@@ -106,7 +106,7 @@ StatusCode JepReadByteStreamV1Cnv<Container>::createObj( IOpaqueAddress* pAddr,
return StatusCode::SUCCESS;
}
ATH_CHECK( m_tool->convert(robFrags, collection.get()) );
ATH_CHECK( m_tool->convert(nm, robFrags, collection.get()) );
pObj = SG::asStorable(std::move(collection));
......
......@@ -96,8 +96,8 @@ StatusCode JepReadByteStreamV1V2Cnv<Container>::createObj( IOpaqueAddress* pAddr
}
// get SourceIDs
const std::vector<uint32_t>& vID1(m_tool1->sourceIDs(nm));
const std::vector<uint32_t>& vID2(m_tool2->sourceIDs(nm));
const std::vector<uint32_t>& vID1(m_tool1->sourceIDs());
const std::vector<uint32_t>& vID2(m_tool2->sourceIDs());
// get ROB fragments
IROBDataProviderSvc::VROBFRAG robFrags1;
......@@ -118,11 +118,11 @@ StatusCode JepReadByteStreamV1V2Cnv<Container>::createObj( IOpaqueAddress* pAddr
// Pre-LS1 data
if (robFrags1.size() > 0) {
ATH_CHECK( m_tool1->convert(robFrags1, collection.get()) );
ATH_CHECK( m_tool1->convert(nm, robFrags1, collection.get()) );
}
// Post-LS1 data
if (robFrags2.size() > 0) {
ATH_CHECK( m_tool2->convert(robFrags2, collection.get()) );
ATH_CHECK( m_tool2->convert(nm, robFrags2, collection.get()) );
}
pObj = SG::asStorable(std::move(collection));
......
/*
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
......@@ -198,7 +198,8 @@ StatusCode TrigT1CaloDataAccess::loadCollection(
m_robDataProvider->getROBData(m_robs_full_je, m_robFrags);
m_jetCol->clear();
StatusCode sc = m_JetConverter->convert(m_robFrags, m_jetCol);
// FIXME: Assuming not Overlap.
StatusCode sc = m_JetConverter->convert("", m_robFrags, m_jetCol);
if (sc.isFailure() ) {
msg(MSG::ERROR) << "JET bytestream conversion failed" << endmsg;
return sc;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment