Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ITkPixelCnvTool.cxx
Go to the documentation of this file.
1 /*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /*
6 * Author: Ondra Kovanda, ondrej.kovanda at cern.ch
7 * Date: 03/2025
8 * Description: Top-level tool to be called from BS converter
9 */
10 
11 #include "ITkPixelCnvTool.h"
13 
14 ITkPixelCnvTool::ITkPixelCnvTool(const std::string& type,const std::string& name,const IInterface* parent)
16  m_hitSortingTool("ITkPixelHitSortingTool", this),
17  m_encodingTool("ITkPixelEncodingTool", this),
18  m_packingTool("ITkPixelDataPackingTool", this),
19  m_byteStreamCnvSvc(this, "ByteStreamCnvSvc", "ByteStreamCnvSvc")
20 {}
21 
26 
27  //Initialize the sub-tools
28  ATH_CHECK(m_hitSortingTool.retrieve());
29  ATH_CHECK(m_encodingTool.retrieve());
30  ATH_CHECK(m_packingTool.retrieve());
31 
32  return StatusCode::SUCCESS;
33 
34 }
35 
41  //Get the full event assembler from ByteStreamCnvSvcBase
42  //SrcIdMap translates lower lvl IDs into higher lvl, e. g. ROD -> ROB, ROB -> ROS, ROS -> Det
44  ATH_CHECK(m_byteStreamCnvSvc->getFullEventAssembler(fea, "ITkPixelRawCont"));
45 
46  fea->setDetEvtType(0x0);
47  fea->setLvl1TriggerType(0x0);
48 
49  //Expose the buffer to be filled with the encoded data
50  //Other BS converters use FullEventAssembler<SrcIdMap>::RODDATA,
51  //which is just a typedef for std::vector<uint32_t>. Why the extra
52  //layer of renaming?
53  std::vector<uint32_t>* rod;
54 
55  //sort the RDO hits based on the FE
56  const std::map<ITkPixelOnlineId, ITkPixLayout<uint16_t>> EventHitMaps = m_hitSortingTool->sortRDOHits(cont);
57 
58  //Each of the FEs in the map will have it's own ROD
59  for (const auto& [onlineID, hitMap] : EventHitMaps){
60 
61  //Encode the FE hits
62  std::vector<uint32_t> encodedStream = m_encodingTool->encodeFE(hitMap);
63 
64  //Create ROD and insert the payload
65  rod = fea->getRodData((uint32_t)onlineID);
66  rod->insert(rod->end(), encodedStream.begin(), encodedStream.end());
67 
68  }
69 
70 
71  return StatusCode::SUCCESS;
72 }
FullEventAssembler< SrcIdMap >
FullEventAssembler::setLvl1TriggerType
void setLvl1TriggerType(uint8_t m)
change LVL1 Trigger Type
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
ITkPixelOnlineId.h
InDetRawDataContainer
Definition: InDetRawDataContainer.h:27
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
ITkPixelCnvTool::ITkPixelCnvTool
ITkPixelCnvTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: ITkPixelCnvTool.cxx:14
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ITkPixelCnvTool::m_encodingTool
ToolHandle< ITkPixelEncodingTool > m_encodingTool
Definition: ITkPixelCnvTool.h:43
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ITkPixelCnvTool::convertToByteStream
StatusCode convertToByteStream(const ITkPixelRDO_Container *cont) const
Take ITkPixelRDO_Container and translate it to bytestream.
Definition: ITkPixelCnvTool.cxx:40
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
RunTileMonitoring.rod
rod
Definition: RunTileMonitoring.py:134
ITkPixelCnvTool::m_byteStreamCnvSvc
ServiceHandle< IByteStreamCnvSvc > m_byteStreamCnvSvc
Definition: ITkPixelCnvTool.h:47
ITkPixelCnvTool::initialize
virtual StatusCode initialize() override
Retrieve helper tools.
Definition: ITkPixelCnvTool.cxx:25
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ITkPixelCnvTool::m_hitSortingTool
ToolHandle< ITkPixelHitSortingTool > m_hitSortingTool
Definition: ITkPixelCnvTool.h:41
ITkPixelCnvTool::m_packingTool
ToolHandle< ITkPixelDataPackingTool > m_packingTool
Definition: ITkPixelCnvTool.h:45
AthAlgTool
Definition: AthAlgTool.h:26
ITkPixelCnvTool.h
FullEventAssembler::getRodData
RODDATA * getRodData(uint32_t id)
get a block of ROD data
FullEventAssembler::setDetEvtType
void setDetEvtType(uint32_t m)
change Detector Event Type