15 #include "Identifier/Identifier.h"
29 return StatusCode::SUCCESS;
35 const EventContext& ctx)
const {
38 ATH_MSG_DEBUG(
"Making xAOD::SpacePointContainer from SpacePointAuxInput");
50 if (
metadata->numOfPixelSpacePoints > 0 &&
58 <<
" but one or more required vectors are empty");
59 return StatusCode::SUCCESS;
69 std::make_unique<xAOD::SpacePointContainer>(),
70 std::make_unique<xAOD::SpacePointAuxContainer>()));
79 return StatusCode::FAILURE;
83 for (
unsigned int i = 0;
i <
metadata->numOfPixelSpacePoints;
i++) {
87 <<
" >= elementIdList.size()=" << spAux.
elementIdList.size());
88 return StatusCode::FAILURE;
93 <<
" >= varianceR.size()=" << spAux.
varianceR.size());
94 return StatusCode::FAILURE;
99 <<
" >= varianceZ.size()=" << spAux.
varianceZ.size());
100 return StatusCode::FAILURE;
106 return StatusCode::FAILURE;
112 return StatusCode::FAILURE;
116 auto sp = pixelSpacePointsHandle->
push_back(std::make_unique<xAOD::SpacePoint>());
119 Eigen::Matrix<float, 3, 1> globalPosition(
133 std::vector<const xAOD::UncalibratedMeasurement*>());
136 if (measIdx >= 0 &&
static_cast<size_t>(measIdx) < pixelClusters->
size()) {
144 ATH_MSG_DEBUG(
"Created " << pixelSpacePointsHandle->
size() <<
" pixel spacepoints");
146 return StatusCode::SUCCESS;
152 const EventContext& ctx)
const {
153 ATH_MSG_DEBUG(
"Making xAOD::SpacePointContainer from SpacePointAuxInput");
164 if (
metadata->numOfStripSpacePoints > 0 &&
170 ATH_MSG_ERROR(
"Inconsistent metadata: numOfStripSpacePoints = "
172 <<
" but one or more required vectors are empty");
173 return StatusCode::FAILURE;
183 std::make_unique<xAOD::SpacePointContainer>(),
184 std::make_unique<xAOD::SpacePointAuxContainer>()));
191 if (!stripClusters.
isValid()) {
193 return StatusCode::FAILURE;
197 for (
unsigned int i = 0;
i <
metadata->numOfStripSpacePoints;
i++) {
201 <<
" >= elementIdList.size()=" << sspAux.
elementIdList.size());
202 return StatusCode::FAILURE;
207 <<
" >= varianceR.size()=" << sspAux.
varianceR.size());
208 return StatusCode::FAILURE;
213 <<
" >= varianceZ.size()=" << sspAux.
varianceZ.size());
214 return StatusCode::FAILURE;
220 return StatusCode::FAILURE;
226 return StatusCode::FAILURE;
230 auto ssp = stripSpacePointsHandle->
push_back(std::make_unique<xAOD::SpacePoint>());
233 Eigen::Matrix<float, 3, 1> globalPosition(
243 std::vector<xAOD::DetectorIDHashType> elementIds;
249 float topHalfStripLength = 0.0f;
250 float bottomHalfStripLength = 0.0f;
263 topStripDirection = Eigen::Matrix<float, 3, 1>(
271 bottomStripDirection = Eigen::Matrix<float, 3, 1>(
279 stripCenterDistance = Eigen::Matrix<float, 3, 1>(
287 topStripCenter = Eigen::Matrix<float, 3, 1>(
295 std::move(elementIds),
299 std::vector<const xAOD::UncalibratedMeasurement*>(),
301 bottomHalfStripLength,
303 bottomStripDirection,
308 if (meas_idx1 >= 0 &&
static_cast<size_t>(meas_idx1) < stripClusters->
size() &&
309 meas_idx2 >= 0 &&
static_cast<size_t>(meas_idx2) < stripClusters->
size()) {
323 ssp->globalPosition() = globalPosition;
327 << globalPosition(0) <<
", "
328 << globalPosition(1) <<
", "
329 << globalPosition(2) <<
")");
332 ATH_MSG_DEBUG(
"Created " << stripSpacePointsHandle->
size() <<
" strip spacepoints");
334 return StatusCode::SUCCESS;