49 ATH_CHECK(inputTracccPixelSpacepoints.isValid());
51 << inputTracccPixelSpacepoints.key() <<
"'");
54 ATH_CHECK(inputTracccMeasurements.isValid());
56 << inputTracccMeasurements.key() <<
"'");
60 std::shared_ptr<const traccc::device::gbts_seeding_algorithm> seeding_alg = seeding_pair.second;
63 traccc::edm::seed_collection::buffer pixel_seeds_gpu_buffer = (*seeding_alg)(*inputTracccPixelSpacepoints, *inputTracccMeasurements);
65 ATH_MSG_DEBUG(
"Reconstructed " << (seeding_pair.first)->get_size(pixel_seeds_gpu_buffer) <<
" pixel seeds.");
70 std::make_unique<traccc::edm::seed_collection::buffer>(
71 std::move(pixel_seeds_gpu_buffer))));
74 return StatusCode::SUCCESS;
80 const std::unordered_map<uint64_t, Identifier> detrayToAthena =
m_detDescSvc->detrayToAthenaMap();
83 std::string conn_fileName =
85 if (conn_fileName.empty()) {
88 return StatusCode::FAILURE;
90 std::ifstream ifs(conn_fileName.c_str());
91 std::unique_ptr<GNN_FASTRACK_CONNECTOR> gbts_connector =
92 std::make_unique<GNN_FASTRACK_CONNECTOR>(ifs,
false);
93 ATH_MSG_INFO(
"Layer connections are initialized from file for GBTS "
96 const std::vector<TrigInDetSiLayer>* pVL =
98 std::vector<TrigInDetSiLayer> layerGeometry;
99 std::copy(pVL->begin(), pVL->end(), std::back_inserter(layerGeometry));
101 std::unique_ptr<TrigFTF_GNN_Geometry> GBTS_geo =
102 std::make_unique<TrigFTF_GNN_Geometry>(layerGeometry, gbts_connector);
104 traccc::device::gbts_layerInfo layerInfo;
106 layerInfo.reserve(GBTS_geo->num_layers());
108 for (
unsigned int index = 0;
index < GBTS_geo->num_layers(); ++
index) {
110 GBTS_geo->getTrigFTF_GNN_LayerByIndex(
index);
113 (layer->m_layer.m_subdet - (layer->m_layer.m_subdet % 1000)) / 1000;
114 int is_inc_barrel = (vol_id == 97) | (vol_id == 95) | (vol_id == 93) |
115 (vol_id == 77) | (vol_id == 75) | (vol_id == 73);
116 char type = (layer->m_layer.m_type != 0) + is_inc_barrel;
117 if (layer->m_layer.m_subdet <= 20000) {
121 layerInfo.addLayer(
type, layer->m_bins[0], layer->num_bins(),
122 layer->m_minEta, layer->m_etaBin);
128 std::vector<std::pair<std::uint64_t, short>> identifierBinning;
129 identifierBinning.reserve(detrayToAthena.size());
133 for (std::pair<std::uint64_t, Identifier> dToI : detrayToAthena) {
136 m_pixelID->get_hash(dToI.second, idHash, &pixel_context);
137 identifierBinning.push_back(std::make_pair(
138 dToI.first, pixel_h2l->at(
static_cast<int>(idHash))));
141 ATH_MSG_INFO(identifierBinning.size() <<
" identifiers with a layer");
143 std::vector<std::pair<unsigned int, std::vector<unsigned int>>> binGroups;
145 const auto rawBinGroups = GBTS_geo->bin_groups();
146 binGroups.reserve(rawBinGroups.size());
147 for (
const auto& p : rawBinGroups) {
148 binGroups.emplace_back(
static_cast<unsigned int>(p.first),
149 std::vector<unsigned int>(p.second.begin(), p.second.end()));
153 for (
auto&
pair : binGroups) {
161 if (!
m_gbts_config.setLinkingScheme(binGroups, layerInfo, identifierBinning,
163 return StatusCode::FAILURE;
165 return StatusCode::SUCCESS;
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...