5#ifndef ITKPIXEL_DECODINGPHASEIIRDOALG_H
6#define ITKPIXEL_DECODINGPHASEIIRDOALG_H
10#include "GaudiKernel/MsgStream.h"
14#include "Identifier/Identifier.h"
19#include "itksw/pix/endec/DecCore.hpp"
33 virtual StatusCode
execute (
const EventContext& ctx)
const override;
35 virtual StatusCode
finalize()
override;
43 {
this,
"ROBDataProvider",
"ROBDataProviderSvc" };
46 {
this,
"PixelCablingKey",
"ITkPixelCablingData",
"Cond Key of Pixel Cabling"};
49 {
this,
"pixelRDOKey",
"PixelRDOs",
"StoreGate Key of Pixel RDOs"};
55 const Gaudi::Property<uint32_t>
m_n_rdos_est {
this,
"nRDOs", 1300000,
"Estimated number of RDOs per event"};
62 std::chrono::time_point<std::chrono::high_resolution_clock>
m_start;
67 auto end = std::chrono::high_resolution_clock::now();
68 auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(end -
m_start).count();
92 inline void evt_init([[maybe_unused]] uint8_t tag) {
100 inline void evt_next([[maybe_unused]] uint8_t tag) {};
104 inline void add_hit(uint16_t col, uint16_t row, uint16_t tot){
115 std::array<std::int16_t,2>{
static_cast<std::int16_t
>(row),
static_cast<std::int16_t
>(col)},
119 inline void add_hmap([[maybe_unused]] uint8_t qcol,
120 [[maybe_unused]] uint8_t qrow,
121 [[maybe_unused]] uint16_t hmap,
122 [[maybe_unused]] uint64_t tots)
126 [[maybe_unused]] uint8_t qrow,
127 [[maybe_unused]] uint64_t qtot)
130 inline uint8_t
on_error([[maybe_unused]] itksw::pix::endec::intf::EventError
error) {
return 0;};
208 m_msg_source << MSG::DEBUG <<
"evt_init(" << tag <<
")" << std::endl;
212 m_msg_source << MSG::DEBUG <<
"evt_next(" << tag <<
")" << std::endl;
216 m_msg_source << MSG::DEBUG <<
"evt_done()" << std::endl;
219 inline void add_hit(uint16_t col, uint16_t row, uint16_t tot) {
220 m_msg_source << MSG::DEBUG <<
"add_hit(" << col <<
"," << row <<
"," << tot <<
")" << std::endl;
223 inline void add_hmap(uint8_t qcol, uint8_t qrow, uint16_t hmap, uint64_t tots) {
224 m_msg_source << MSG::DEBUG <<
"add_hmap(qcol=" << qcol <<
",qrow=" << qrow
225 <<
",hmap=" << hmap <<
",tots=" << tots <<
")" << std::endl;
228 inline void add_qcore(uint8_t qcol, uint8_t qrow, uint64_t qtot) {
229 m_msg_source << MSG::DEBUG <<
"add_qcore(qcol=" << qcol <<
",qrow=" << qrow
230 <<
",qtot=" << qtot <<
")" << std::endl;
PhaseII::IndexedRangesMT< PhaseII::PixelRawDataContainer > PhaseIIPixelRawDataContainerMT
A container derived from PhaseIIPixelRawDataContainer which extends the container by a dynamic contai...
This is an Identifier helper class for the Pixel subdetector.
Property holding a SG store/key/clid from which a ReadHandle is made.
An algorithm that can be simultaneously executed in multiple threads.
ServiceHandle< IROBDataProviderSvc > m_robDataProviderSvc
virtual StatusCode initialize() override
SG::WriteHandleKey< PhaseIIPixelRawDataContainer > m_pixelRDOKey
SG::ReadCondHandleKey< ITkPixelCablingData > m_pixelCablingKey
virtual StatusCode finalize() override
std::vector< std::vector< uint32_t > > ITkPacketCollection
virtual StatusCode execute(const EventContext &ctx) const override
const Gaudi::Property< uint32_t > m_n_rdos_est
const PixelID * m_idHelper
ITkPixelDecodingPhaseIIRDOAlg(const std::string &name, ISvcLocator *pSvcLocator)
std::vector< uint32_t > m_sourceIDs
Helper class to keep track of a range of elements added to the end of a container.
typename DynamicContainerListHelper< PhaseII::PixelRawDataContainer >::ContainerPtr ContainerPtr
static std::uint32_t makeWord(int tot, int bcid, int lvl1a, int lvl1d)
void evt_init(uint8_t tag)
const PixelID * m_idHelper
~PhaseIIRDOCallback()=default
uint8_t on_error(itksw::pix::endec::intf::EventError error)
void setChipID(const uint8_t &chipID)
void add_hmap(uint8_t qcol, uint8_t qrow, uint16_t hmap, uint64_t tots)
void setOfflineID(const uint32_t &offlineID)
PhaseIIPixelRawDataContainerMT * m_cont_coll
unsigned int m_n_rejected_work
void add_qcore(uint8_t qcol, uint8_t qrow, uint64_t qtot)
PhaseIIPixelRawDataContainerMT::ContainerPtr m_rdo_container_dest
void registerLastModule()
void setTransformType(const ITkPixelCabling::TransformType &transform)
void evt_next(uint8_t tag)
void add_hit(uint16_t col, uint16_t row, uint16_t tot)
PhaseII::ContainerRangeGuard< PhaseII::DataRange, PhaseIIPixelRawDataContainerMT::ContainerPtr > m_dest_range_guard
ITkPixelCabling::TransformType m_transform
PhaseIIRDOCallback(PhaseIIPixelRawDataContainerMT *cont_coll, PhaseIIPixelRawDataContainerMT::ContainerPtr rdo_container_dest, const PixelID *idHelper)
unsigned int m_currentIdentifierHash
void add_hmap(uint8_t qcol, uint8_t qrow, uint16_t hmap, uint64_t tots)
~TestEventCallback()=default
void add_qcore(uint8_t qcol, uint8_t qrow, uint64_t qtot)
TestEventCallback(MsgStream &src)
void evt_init(uint8_t tag)
void add_hit(uint16_t col, uint16_t row, uint16_t tot)
uint8_t on_error(itksw::pix::endec::intf::EventError error)
void evt_next(uint8_t tag)
This is an Identifier helper class for the Pixel subdetector.
Property holding a SG store/key/clid from which a WriteHandle is made.
static void chipToModuleTransform(const TransformType &transform, const uint8_t &chipID, uint16_t &col, uint16_t &row)
void addDataForModule(T_RawDataContainerCollection &rdo_container_collection, ContainerRangeGuard< T_RawDataContainerPtr, T_RangeType > &range_guard, T_Coordinates &&coordinates, std::uint32_t data_word)
convenience method to add data to an RDO container, add a new RDO container, copy the data added for ...
ScopedTimer(std::string lbl, MsgStream &src)
std::chrono::time_point< std::chrono::high_resolution_clock > m_start