9 #ifdef BENCHMARK_FPGATRACKSIM
39 return StatusCode::SUCCESS;
43 std::unique_ptr<InDet::PixelClusterCollection> PixelCollFromHits = std::make_unique<InDet::PixelClusterCollection>();
44 std::unique_ptr<InDet::SCT_ClusterCollection> SCTCollFromHits = std::make_unique<InDet::SCT_ClusterCollection>();
46 std::unique_ptr<InDet::PixelClusterCollection> PixelCollFromClusters = std::make_unique<InDet::PixelClusterCollection>();
47 std::unique_ptr<InDet::SCT_ClusterCollection> SCTCollFromClusters = std::make_unique<InDet::SCT_ClusterCollection>();
49 std::unique_ptr<InDet::SCT_ClusterCollection> SCTCollFromSP = std::make_unique<InDet::SCT_ClusterCollection>();
50 std::unique_ptr<xAOD::PixelClusterContainer> PixelContFromHits = std::make_unique<xAOD::PixelClusterContainer>();
51 std::unique_ptr<xAOD::PixelClusterAuxContainer> PixelAuxContFromHits = std::make_unique<xAOD::PixelClusterAuxContainer>();
52 PixelContFromHits->setStore (PixelAuxContFromHits.get());
54 std::unique_ptr<xAOD::StripClusterContainer> SCTContFromHits = std::make_unique<xAOD::StripClusterContainer>();
55 std::unique_ptr<xAOD::StripClusterAuxContainer> SCTAuxContFromHits = std::make_unique<xAOD::StripClusterAuxContainer>();
56 SCTContFromHits->setStore(SCTAuxContFromHits.get() );
58 std::unique_ptr<xAOD::PixelClusterContainer> PixelContFromClusters = std::make_unique<xAOD::PixelClusterContainer>();
59 std::unique_ptr<xAOD::PixelClusterAuxContainer> PixelAuxContFromClusters = std::make_unique<xAOD::PixelClusterAuxContainer>();
60 PixelContFromClusters->setStore (PixelAuxContFromClusters.get());
62 std::unique_ptr<xAOD::StripClusterContainer> SCTContFromClusters = std::make_unique<xAOD::StripClusterContainer>();
63 std::unique_ptr<xAOD::StripClusterAuxContainer> SCTAuxContFromClusters = std::make_unique<xAOD::StripClusterAuxContainer>();
64 SCTContFromClusters->setStore(SCTAuxContFromClusters.get() );
66 std::unique_ptr<xAOD::SpacePointContainer> StripSPCont = std::make_unique<xAOD::SpacePointContainer>();
67 std::unique_ptr<xAOD::SpacePointAuxContainer> StripSPAuxCont = std::make_unique<xAOD::SpacePointAuxContainer>();
68 StripSPCont->setStore(StripSPAuxCont.get() );
70 std::unique_ptr<xAOD::SpacePointContainer> PixelSPCont = std::make_unique<xAOD::SpacePointContainer>();
71 std::unique_ptr<xAOD::SpacePointAuxContainer> PixelSPAuxCont = std::make_unique<xAOD::SpacePointAuxContainer>();
72 PixelSPCont->setStore(PixelSPAuxCont.get() );
74 std::unique_ptr<ActsTrk::ProtoTrackCollection> ProtoTracksFromRoads = std::make_unique<ActsTrk::ProtoTrackCollection>();
75 std::unique_ptr<ActsTrk::ProtoTrackCollection> ProtoTracksFromTracks = std::make_unique<ActsTrk::ProtoTrackCollection>();
80 if (FPGAClustersHandle.
isValid()) {
98 if (!FPGARoadsHandle.
isValid()) {
99 ATH_MSG_FATAL(
"Failed to retrieve 1st stage FPGATrackSimRoadCollection");
100 return StatusCode::FAILURE;
103 if (!FPGAHitsInRoadsHandle.
isValid()) {
104 ATH_MSG_FATAL(
"Failed to retrieve 1st stage FPGATrackSimItInRoadCollection");
105 return StatusCode::FAILURE;
110 ATH_CHECK(
m_ActsTrkConverter->findProtoTracks(ctx, *PixelContFromClusters, *SCTContFromClusters, *ProtoTracksFromRoads, *FPGAHitsInRoadsCont, *FPGARoadColl));
115 if (!FPGATracksHandle.
isValid()) {
116 ATH_MSG_FATAL(
"Failed to retrieve 1st stage FPGATrackSimTrackCollection");
117 return StatusCode::FAILURE;
122 ATH_CHECK(
m_ActsTrkConverter->findProtoTracks(ctx, *PixelContFromClusters, *SCTContFromClusters, *ProtoTracksFromTracks, *FPGATrackColl));
133 ATH_CHECK(
m_ClusterConverter->convertSpacePoints(*FPGASPColl, *StripSPCont, *PixelSPCont, *SCTContFromClusters, *PixelContFromClusters) );
135 else {{
ATH_MSG_WARNING(
"Failed to retrieve 1st stage FPGATrackSimSpacePointCollection. Will skip SP conversion ");}}
139 else {
ATH_MSG_WARNING(
"Failed to retrieve 1st stage FPGATrackSimClusterCollection. Will skip clusters and track conversion ");}
143 ATH_CHECK( xAODPixelClusterFromFPGAClusterHandle.
record (std::move(PixelContFromClusters), std::move(PixelAuxContFromClusters)));
144 ATH_CHECK( xAODStripClusterFromFPGAClusterHandle.
record (std::move(SCTContFromClusters), std::move(SCTAuxContFromClusters)));
148 ATH_CHECK( ActsProtoTrackFromFPGATrackHandle.
record (std::move(ProtoTracksFromTracks)));
151 ATH_CHECK( ActsProtoTrackFromFPGARoadHandle.
record (std::move(ProtoTracksFromRoads)));
158 ATH_CHECK( xAODStripSpacePointFromFPGAHandle.
record (std::move(StripSPCont), std::move(StripSPAuxCont)));
159 ATH_CHECK( xAODPixelSpacePointFromFPGAHandle.
record (std::move(PixelSPCont), std::move(PixelSPAuxCont)));
166 if (FPGAHitsHandle.
isValid()) {
178 else {
ATH_MSG_WARNING(
"Failed to retrieve 1st stage FPGATrackSimHitCollection. Will skip hit conversion ");}
183 ATH_CHECK( xAODPixelClusterFromFPGAHitHandle.
record (std::move(PixelContFromHits),std::move(PixelAuxContFromHits)));
184 ATH_CHECK( xAODStripClusterFromFPGAHitHandle.
record (std::move(SCTContFromHits),std::move(SCTAuxContFromHits)));
189 if (!FPGATracksHandle.
isValid()) {
190 ATH_MSG_FATAL(
"Failed to retrieve 1st stage FPGATrackSimTrackCollection");
191 return StatusCode::FAILURE;
196 ATH_CHECK(
m_ActsTrkConverter->findProtoTracks(ctx, *PixelContFromClusters, *SCTContFromClusters, *ProtoTracksFromTracks, *FPGATrackColl));
201 return StatusCode::SUCCESS;
205 template <
typename T>
211 static_assert(
false,
"Bad type <T>. Should be InDet::PixelCluster or InDet::SCT_Cluster");
212 return StatusCode::FAILURE;
215 std::unique_ptr<Trk::PrepRawDataContainer<Trk::PrepRawDataCollection<T>>> outputContainer = std::make_unique<Trk::PrepRawDataContainer<Trk::PrepRawDataCollection<T>>>(
SG::VIEW_ELEMENTS);
218 if (!inputCollection || inputCollection->
empty()){
219 outputContainerHandle.record(std::move(outputContainer));
220 return StatusCode::SUCCESS;
225 for (
const T* clus : *inputCollection) {
226 newCol->
push_back(std::make_unique<T>(*clus));
227 ATH_MSG_DEBUG(
"NewCol cluster identifier " << clus->identify());
233 if(outputContainerHandle.record(std::move(outputContainer)).isFailure()){
234 ATH_MSG_ERROR(
"Could not record InDetSCTClusterContainer object with "
235 << outputContainerHandle.key()
236 <<
" into Event Store");
237 return StatusCode::FAILURE;
240 return StatusCode::SUCCESS;