220
221 const float min_z0 = -168.0;
222 const float max_z0 = 168.0;
223
225
226 for(const auto& layer : layers) {
229 }
230
231
232
233
234 int lastBin1 = -1;
235
236 for(std::map<
int, std::vector<GNN_FASTRACK_CONNECTION*> >::const_iterator it =
conn->m_connMap.begin();it!=
conn->m_connMap.end();++it) {
237
238 const std::vector<GNN_FASTRACK_CONNECTION*>& vConn = (*it).second;
239
240 for(std::vector<GNN_FASTRACK_CONNECTION*>::const_iterator cIt=vConn.begin();cIt!=vConn.end();++cIt) {
241
242 unsigned int src = (*cIt)->m_src;
243 unsigned int dst = (*cIt)->m_dst;
244
247
248 if (pL1==nullptr) {
249 std::cout << " skipping invalid dst layer " << dst << std::endl;
250 continue;
251 }
252 if (pL2==nullptr) {
253 std::cout <<
" skipping invalid src layer " <<
src << std::endl;
254 continue;
255 }
256 int nSrcBins = pL2->
m_bins.size();
257 int nDstBins = pL1->
m_bins.size();
258
259 (*cIt)->m_binTable.resize(nSrcBins*nDstBins, 0);
260
261 for(int b1=0;b1<nDstBins;b1++) {
262 for(int b2=0;b2<nSrcBins;b2++) {
263 if(!pL1->
verifyBin(pL2, b1, b2, min_z0, max_z0))
continue;
264 int address = b1 + b2*nDstBins;
265 (*cIt)->m_binTable.at(address) = 1;
266
267 int bin1_idx = pL1->
m_bins.at(b1);
268 int bin2_idx = pL2->
m_bins.at(b2);
269
270 if(bin1_idx != lastBin1) {
271
272 std::vector<int>
v2(1, bin2_idx);
273 m_binGroups.push_back(std::make_pair(bin1_idx, v2));
274 lastBin1 = bin1_idx;
275
276 }
277 else {
278 (*
m_binGroups.rbegin()).second.push_back(bin2_idx);
279 }
280 }
281 }
282 }
283 }
284}
const TrigFTF_GNN_Layer * addNewLayer(const TrigInDetSiLayer &, int)
const TrigFTF_GNN_Layer * getTrigFTF_GNN_LayerByKey(unsigned int) const
std::vector< std::pair< int, std::vector< int > > > m_binGroups
std::vector< int > m_bins
bool verifyBin(const TrigFTF_GNN_Layer *, int, int, float, float) const