ATLAS Offline Software
Loading...
Searching...
No Matches
PassThroughTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
11
12#ifndef EFTRACKING_FPGA_INTEGRATION__PASSTHROUGH_TOOL_H
13#define EFTRACKING_FPGA_INTEGRATION__PASSTHROUGH_TOOL_H
14
18
22
23class PassThroughTool : public extends<AthAlgTool, IEFTrackingFPGAIntegrationTool>
24{
25public:
26 using extends::extends;
27
28 StatusCode initialize() override;
29
34 StatusCode runPassThrough(
40 const EventContext &ctx) const;
41
48 StatusCode getInputClusterData(
50 std::vector<EFTrackingTransient::StripCluster> &ef_sc,
51 unsigned long N) const;
52
59 StatusCode getInputClusterData(
61 std::vector<EFTrackingTransient::PixelCluster> &ef_pc,
62 unsigned long N) const;
63
70 StatusCode getInputSpacePointData(
72 std::vector<EFTrackingTransient::SpacePoint> &ef_sp,
73 std::vector<std::vector<const xAOD::UncalibratedMeasurement *>> &sp_meas,
74 unsigned long N, bool isStrip) const;
75
84 StatusCode passThroughSW(
85 const std::vector<EFTrackingTransient::StripCluster> &inputSC,
87 // PixelCluster
88 const std::vector<EFTrackingTransient::PixelCluster> &inputPC,
90 // Strip SpacePoint
91 const std::vector<EFTrackingTransient::SpacePoint> &inputSSP,
93 // Pixel SpacePoint
94 const std::vector<EFTrackingTransient::SpacePoint> &inputPSP,
96 // Metadata
98 const;
99
104 StatusCode passThroughSW_clusterOnly(
105 const std::vector<EFTrackingTransient::StripCluster> &inputSC,
107 // PixelCluster
108 const std::vector<EFTrackingTransient::PixelCluster> &inputPC,
110 // Metadata
112 const;
113
119 bool runSW() const { return m_runSW; }
120
121
122private:
123 Gaudi::Property<bool> m_runSW{this, "RunSW", true, "Run software mode"};
124 Gaudi::Property<bool> m_doSpacepoints{this, "DoSpacepoints", false, "Do spacepoints"};
125 Gaudi::Property<bool> m_clusterOnlyPassThrough{this, "ClusterOnlyPassThrough", false,
126 "Use the cluster-only pass-through kernel"};
127 Gaudi::Property<unsigned int> m_maxClusterNum{this, "MaxClusterNum", 500000,
128 "Maximum number of clusters that can be processed"};
129 Gaudi::Property<unsigned int> m_maxSpacePointNum{this, "MaxSpacePointNum", 500000,
130 "Maximum number of space points that can be processed"};
131
132
134 this, "StripClusterContainerKey", "ITkStripClusters",
135 "Key for Strip Cluster Containers"};
137 this, "PixelClusterContainerKey", "ITkPixelClusters",
138 "Key for Pixel Cluster Containers"};
140 this, "SpacePointContainerKey", "ITkPixelSpacePoints",
141 "Key for Space Point Containers"};
142
143};
144
145#endif // EFTRACKING_FPGA_INTEGRATION__PASSTHROUGH_TOOL_H
static Double_t sp
static Double_t sc
bool runSW() const
A getter for the m_runSW property.
SG::ReadHandleKey< xAOD::SpacePointContainer > m_spacePointsKey
StatusCode getInputSpacePointData(const xAOD::SpacePointContainer *sp, std::vector< EFTrackingTransient::SpacePoint > &ef_sp, std::vector< std::vector< const xAOD::UncalibratedMeasurement * > > &sp_meas, unsigned long N, bool isStrip) const
Convert the space point from xAOD container to simple std::vector of EFTrackingTransient::SpacePoint.
SG::ReadHandleKey< xAOD::StripClusterContainer > m_stripClustersKey
Gaudi::Property< bool > m_doSpacepoints
Temporary flag before spacepoints are ready.
Gaudi::Property< unsigned int > m_maxSpacePointNum
StatusCode runPassThrough(EFTrackingTransient::StripClusterAuxInput &scAux, EFTrackingTransient::PixelClusterAuxInput &pxAux, EFTrackingTransient::SpacePointAuxInput &stripSpAux, EFTrackingTransient::SpacePointAuxInput &pixelSpAux, EFTrackingTransient::Metadata *metadata, const EventContext &ctx) const
Call this function at the DataPreparationPipeline to run the pass-through kernels.
StatusCode initialize() override
StatusCode getInputClusterData(const xAOD::StripClusterContainer *sc, std::vector< EFTrackingTransient::StripCluster > &ef_sc, unsigned long N) const
Convert the strip cluster from xAOD container to simple std::vector of EFTrackingTransient::StripClus...
StatusCode passThroughSW(const std::vector< EFTrackingTransient::StripCluster > &inputSC, EFTrackingTransient::StripClusterOutput &ef_scOutput, const std::vector< EFTrackingTransient::PixelCluster > &inputPC, EFTrackingTransient::PixelClusterOutput &ef_pcOutput, const std::vector< EFTrackingTransient::SpacePoint > &inputSSP, EFTrackingTransient::SpacePointOutput &ef_sspOutput, const std::vector< EFTrackingTransient::SpacePoint > &inputPSP, EFTrackingTransient::SpacePointOutput &ef_pspOutput, EFTrackingTransient::Metadata *metadata) const
Software version of the pass-through kernel.
Gaudi::Property< bool > m_runSW
Software mode, not running on the FPGA.
SG::ReadHandleKey< xAOD::PixelClusterContainer > m_pixelClustersKey
StatusCode passThroughSW_clusterOnly(const std::vector< EFTrackingTransient::StripCluster > &inputSC, EFTrackingTransient::StripClusterOutput &ef_scOutput, const std::vector< EFTrackingTransient::PixelCluster > &inputPC, EFTrackingTransient::PixelClusterOutput &ef_pcOutput, EFTrackingTransient::Metadata *metadata) const
This is a cluster-only version (sw) of the pass-through kernel This is used for cluter level studies.
Gaudi::Property< unsigned int > m_maxClusterNum
Gaudi::Property< bool > m_clusterOnlyPassThrough
Use the cluster-only pass through tool.
Property holding a SG store/key/clid from which a ReadHandle is made.
PixelClusterContainer_v1 PixelClusterContainer
Define the version of the pixel cluster container.
SpacePointContainer_v1 SpacePointContainer
Define the version of the space point container.
StripClusterContainer_v1 StripClusterContainer
Define the version of the strip cluster container.
The structure of the Metadata containing data after clusterization.
The PixelClusterAuxInput struct is used to simplify the creaction of the xAOD::PixelClusterContainer.
The PixelClusters struct contains the output arrays from the FPGA.
The SpacePointAuxInput struct is used to simplify the creaction of the xAOD::SpacePointContainer.
The Pixel/Strip SpacePoints struct contains the output arrays from the FPGA.
The StripClusterAuxInput struct is used to simplify the creaction of the xAOD::StripClusterContainer.
The StripClusters struct contains the output arrays from the FPGA.