74 const EventContext& ctx,
75 const std::vector<const xAOD::SpacePointContainer*>& spacePointCollections,
76 const Eigen::Vector3f& beamSpotPos,
float bFieldInZ,
83 Acts::SpacePointContainer2 coreSpacePoints(
84 Acts::SpacePointColumns::CopyFromIndex |
85 Acts::SpacePointColumns::SourceLinks |
86 Acts::SpacePointColumns::X |
87 Acts::SpacePointColumns::Y |
88 Acts::SpacePointColumns::Z |
89 Acts::SpacePointColumns::R |
90 Acts::SpacePointColumns::Phi
94 auto layerColumn = coreSpacePoints.createColumn<std::uint32_t>(
"LayerID");
95 auto clusterWidthColumn = coreSpacePoints.createColumn<
float>(
"Cluster_Width");
96 auto localPositionColumn = coreSpacePoints.createColumn<
float>(
"LocalPositionY");
99 std::vector<const xAOD::SpacePoint*> tmpSpacePoints;
100 std::size_t totalSpacePoints = 0;
106 tmpSpacePoints.emplace_back(
sp);
108 totalSpacePoints += spacePoints->size();
111 coreSpacePoints.reserve(totalSpacePoints);
114 for(std::size_t idx = 0; idx < tmpSpacePoints.size(); ++idx){
118 const std::vector<xAOD::DetectorIDHashType>& elementlist =
sp->elementIdList() ;
120 bool isPixel(elementlist.size() == 1);
121 if(isPixel ==
false)
continue;
123 short layer = (isPixel ?
m_pix_h2l :
m_sct_h2l)->
operator[](
static_cast<int>(elementlist[0]));
126 auto newSp = coreSpacePoints.createSpacePoint();
127 newSp.copyFromIndex() = idx;
130 if(
m_cfg.beamSpotCorrection){
132 float new_x =
static_cast<float>(
sp->x() - beamSpotPos[0]);
133 float new_y =
static_cast<float>(
sp->y() - beamSpotPos[1]);
136 newSp.z() =
static_cast<float>(
sp->z());
137 newSp.r() = std::hypot(new_x, new_y);
138 newSp.phi() = std::atan2(new_y, new_x);
141 float new_x =
static_cast<float>(
sp->x());
142 float new_y =
static_cast<float>(
sp->y());
143 newSp.x() =
static_cast<float>(
sp->x());
144 newSp.y() =
static_cast<float>(
sp->y());
145 newSp.z() =
static_cast<float>(
sp->z());
146 newSp.r() = std::hypot(new_x, new_y);
147 newSp.phi() = std::atan2(
sp->y(),
sp->x());
150 newSp.extra(layerColumn) = layer;
156 newSp.extra(clusterWidthColumn) = pCL->
widthInEta();
160 newSp.extra(clusterWidthColumn) = 0;
161 newSp.extra(localPositionColumn) = 0;
168 auto sPContainerComponents = std::make_tuple(std::move(coreSpacePoints), layerColumn.asConst(), clusterWidthColumn.asConst(), localPositionColumn.asConst());
172 Acts::Experimental::RoiDescriptor internalRoi(0, -4.5, 4.5, 0, -std::numbers::pi, std::numbers::pi, 0, -150.0,150.0);
173 Acts::SeedContainer2 seeds =
m_finder->createSeeds(internalRoi, sPContainerComponents, max_layers);
176 seedContainer.
reserve(seedContainer.
size() + seeds.size(), 7.0f);
177 for (Acts::MutableSeedProxy2 seed : seeds) {
179 Acts::ConstSeedProxy2(seed),
180 [&](
const Acts::SpacePointIndex2 spIndex) {
181 return tmpSpacePoints[spIndex];
186 return StatusCode::SUCCESS;