ATLAS Offline Software
Loading...
Searching...
No Matches
HgtdClusteringTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
7
8namespace ActsTrk {
9
11 const std::string& name,
12 const IInterface* parent)
13 : base_class(type, name, parent)
14 {}
15
17 {
18 ATH_MSG_INFO("Initializing HgtdClusteringTool...");
19
20 ATH_CHECK(detStore()->retrieve(m_hgtd_det_mgr, "HGTD"));
21 return StatusCode::SUCCESS;
22 }
23
24 StatusCode HgtdClusteringTool::clusterize(const EventContext&,
25 const RawDataCollection& RDOs,
26 ClusterContainer& container) const
27 {
28 ATH_MSG_DEBUG("Clustering hits...");
29
30 // Fast insertion trick
31 std::size_t previousSize = container.size();
32 std::vector<xAOD::HGTDCluster*> toAdd;
33 toAdd.reserve(RDOs.size());
34 for (std::size_t i(0), n(RDOs.size()); i < n; ++i)
35 toAdd.push_back( new xAOD::HGTDCluster() );
36 container.insert(container.end(), toAdd.begin(), toAdd.end());
37
38 for (std::size_t i(0), n(RDOs.size()); i < n; ++i) {
39 const auto* rdo = RDOs[i];
40 Identifier rdo_id = rdo->identify();
41 const InDetDD::HGTD_DetectorElement* element = m_hgtd_det_mgr->getDetectorElement(rdo_id);
42
43 InDetDD::SiCellId si_cell_id = element->cellIdFromIdentifier(rdo_id);
44
45 InDetDD::SiLocalPosition si_pos = element->design().localPositionOfCell(si_cell_id);
46
47
48 Eigen::Matrix<float, 3, 1> loc_pos(si_pos.xPhi(), si_pos.xEta(),rdo->getTOA());
49 Eigen::Matrix<float, 3, 3> cov_matrix= Eigen::Matrix<float, 3, 3>::Zero();
50
51 float xWidth = 1.3;
52 float yWidth = 1.3;
53 cov_matrix(0,0) = xWidth * xWidth / 12; // i.e. Cov XX
54 cov_matrix(1,1) = yWidth * yWidth / 12; // i.e. Cov YY
55 float time_of_arrival_err = 0.035;
56 cov_matrix(2,2) = time_of_arrival_err * time_of_arrival_err; // i.e. Cov TT
57
58 std::vector<Identifier> rdo_list = {rdo_id};
59 std::vector<int> time_over_threshold = {static_cast<int>(rdo->getTOT())};
60
61 IdentifierHash id_hash = RDOs.identifierHash();
62
63 // Fill
64 xAOD::HGTDCluster* cluster = container[previousSize + i];
65 cluster->setMeasurement<3>(id_hash,loc_pos,cov_matrix);
66 cluster->setIdentifier(rdo_id.get_compact());
67 cluster->setRDOlist(std::move(rdo_list));
68 cluster->setToTlist(std::move(time_over_threshold));
69 }
70
71
72 return StatusCode::SUCCESS;
73 }
74
75
76} // namespace
77
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
const HGTD_DetectorManager * m_hgtd_det_mgr
virtual StatusCode clusterize(const EventContext &ctx, const RawDataCollection &RDOs, ClusterContainer &container) const override
virtual StatusCode initialize() override
HgtdClusteringTool(const std::string &type, const std::string &name, const IInterface *parent)
This is a "hash" representation of an Identifier.
value_type get_compact() const
Get the compact id.
Class to hold geometrical description of an HGTD detector element.
SiCellId cellIdFromIdentifier(const Identifier &identifier) const override final
SiCellId from Identifier.
const HGTD_ModuleDesign & design() const override final
access to the local description:
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
Identifier for the strip or pixel cell.
Definition SiCellId.h:29
Class to represent a position in the natural frame of a silicon sensor, for Pixel and SCT For Pixel: ...
double xPhi() const
position along phi direction:
double xEta() const
position along eta direction:
void setToTlist(const std::vector< int > &tots)
Sets the list of ToT of the channels building the cluster.
void setRDOlist(const std::vector< Identifier > &rdolist)
Sets the list of identifiers of the channels building the cluster.
void setMeasurement(const DetectorIDHashType idHash, MeasVector< N > locPos, MeasMatrix< N > locCov)
Sets IdentifierHash, local position and local covariance of the measurement.
void setIdentifier(const DetectorIdentType measId)
Sets the full Identifier of the measurement.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
HGTDCluster_v1 HGTDCluster
Define the version of the pixel cluster class.
Definition HGTDCluster.h:13