30 return StatusCode::SUCCESS;
35 std::unique_ptr<InDet::PixelClusterCollection> PixelCollFromHits = std::make_unique<InDet::PixelClusterCollection>();
36 std::unique_ptr<InDet::SCT_ClusterCollection> SCTCollFromHits = std::make_unique<InDet::SCT_ClusterCollection>();
38 std::unique_ptr<InDet::PixelClusterCollection> PixelCollFromClusters = std::make_unique<InDet::PixelClusterCollection>();
39 std::unique_ptr<InDet::SCT_ClusterCollection> SCTCollFromClusters = std::make_unique<InDet::SCT_ClusterCollection>();
41 std::unique_ptr<xAOD::PixelClusterContainer> PixelContFromHits = std::make_unique<xAOD::PixelClusterContainer>();
42 std::unique_ptr<xAOD::PixelClusterAuxContainer> PixelAuxContFromHits = std::make_unique<xAOD::PixelClusterAuxContainer>();
43 PixelContFromHits->setStore (PixelAuxContFromHits.get());
45 std::unique_ptr<xAOD::StripClusterContainer> SCTContFromHits = std::make_unique<xAOD::StripClusterContainer>();
46 std::unique_ptr<xAOD::StripClusterAuxContainer> SCTAuxContFromHits = std::make_unique<xAOD::StripClusterAuxContainer>();
47 SCTContFromHits->setStore(SCTAuxContFromHits.get() );
49 std::unique_ptr<xAOD::PixelClusterContainer> PixelContFromClusters = std::make_unique<xAOD::PixelClusterContainer>();
50 std::unique_ptr<xAOD::PixelClusterAuxContainer> PixelAuxContFromClusters = std::make_unique<xAOD::PixelClusterAuxContainer>();
51 PixelContFromClusters->setStore (PixelAuxContFromClusters.get());
53 std::unique_ptr<xAOD::StripClusterContainer> SCTContFromClusters = std::make_unique<xAOD::StripClusterContainer>();
54 std::unique_ptr<xAOD::StripClusterAuxContainer> SCTAuxContFromClusters = std::make_unique<xAOD::StripClusterAuxContainer>();
55 SCTContFromClusters->setStore(SCTAuxContFromClusters.get() );
57 std::unique_ptr<ActsTrk::ProtoTrackCollection> ProtoTracksFromRoads = std::make_unique<ActsTrk::ProtoTrackCollection>();
58 std::unique_ptr<ActsTrk::ProtoTrackCollection> ProtoTracksFromTracks = std::make_unique<ActsTrk::ProtoTrackCollection>();
64 if (FPGAClustersHandle.
isValid()) {
78 if (!FPGARoadsHandle.
isValid()) {
79 ATH_MSG_FATAL(
"Failed to retrieve 1st stage FPGATrackSimRoadCollection");
80 return StatusCode::FAILURE;
86 if (!FPGAHitsInRoadsHandle.
isValid()) {
87 ATH_MSG_FATAL(
"Failed to retrieve 1st stage FPGATrackSimItInRoadCollection");
88 return StatusCode::FAILURE;
93 if (!FPGATracksHandle.
isValid()) {
94 ATH_MSG_FATAL(
"Failed to retrieve 1st stage FPGATrackSimTrackCollection");
95 return StatusCode::FAILURE;
99 if (PixelContFromClusters->
size()+SCTContFromClusters->
size() > 0) {
100 ATH_CHECK(
m_ActsTrkConverter->findProtoTracks(ctx,*PixelContFromClusters,*SCTContFromClusters,*ProtoTracksFromRoads, *FPGAHitsInRoadsCont, *FPGARoadColl ));
101 ATH_CHECK(
m_ActsTrkConverter->findProtoTracks(ctx,*PixelContFromClusters,*SCTContFromClusters,*ProtoTracksFromTracks, *FPGATrackColl ));
106 else {
ATH_MSG_WARNING(
"Failed to retrieve 1st stage FPGATrackSimClusterCollection. Will skip clusters and track conversion ");}
110 ATH_CHECK( xAODPixelClusterFromFPGAClusterHandle.
record (std::move(PixelContFromClusters), std::move(PixelAuxContFromClusters)));
111 ATH_CHECK( xAODStripClusterFromFPGAClusterHandle.
record (std::move(SCTContFromClusters), std::move(SCTAuxContFromClusters)));
117 ATH_CHECK( ActsProtoTrackFromFPGARoadHandle.
record (std::move(ProtoTracksFromRoads)));
118 ATH_CHECK( ActsProtoTrackFromFPGATrackHandle.
record (std::move(ProtoTracksFromTracks)));
127 if (FPGAHitsHandle.
isValid()) {
138 else {
ATH_MSG_WARNING(
"Failed to retrieve 1st stage FPGATrackSimHitCollection. Will skip hit conversion ");}
143 ATH_CHECK( xAODPixelClusterFromFPGAHitHandle.
record (std::move(PixelContFromHits),std::move(PixelAuxContFromHits)));
144 ATH_CHECK( xAODStripClusterFromFPGAHitHandle.
record (std::move(SCTContFromHits),std::move(SCTAuxContFromHits)));
148 return StatusCode::SUCCESS;
152 template <
typename T>
158 static_assert(
false,
"Bad type <T>. Should be InDet::PixelCluster or InDet::SCT_Cluster");
159 return StatusCode::FAILURE;
162 std::unique_ptr<Trk::PrepRawDataContainer<Trk::PrepRawDataCollection<T>>> outputContainer = std::make_unique<Trk::PrepRawDataContainer<Trk::PrepRawDataCollection<T>>>(
SG::VIEW_ELEMENTS);
166 outputContainerHandle.record(std::move(outputContainer));
167 return StatusCode::SUCCESS;
173 newCol->
push_back(std::make_unique<T>(*clus));
174 ATH_MSG_DEBUG(
"NewCol cluster identifier " << clus->identify());
180 if(outputContainerHandle.record(std::move(outputContainer)).isFailure()){
181 ATH_MSG_ERROR(
"Could not record InDetSCTClusterContainer object with "
182 << outputContainerHandle.key()
183 <<
" into Event Store");
184 return StatusCode::FAILURE;
187 return StatusCode::SUCCESS;