ATLAS Offline Software
TrigTrackSeedGenerator_ITk.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <cmath>
6 #include <iostream>
7 #include <list>
8 #include <vector>
9 #include <algorithm>
10 #include <iterator>
14 #include "GNN_DataStorage.h"
15 #include "GNN_TrackingFilter.h"
16 
22 
23 
25  : m_settings(tcs),
26  m_minDeltaRadius(2.0)
27 {
28 
31 
33 
34  const double ptCoeff = 0.29997*1.9972/2.0;// ~0.3*B/2 - assumes nominal field of 2*T
35 
37 
38 }
39 
41  delete m_storage;
42  m_storage = nullptr;
43 }
44 
45 void TrigTrackSeedGeneratorITk::loadSpacePoints(const std::vector<TrigSiSpacePointBase>& vSP) {
46 
47  //create GNN nodes
48 
49  bool useML = m_settings.m_useTrigSeedML > 0;
50 
51  for(std::vector<TrigSiSpacePointBase>::const_iterator it = vSP.begin();it != vSP.end();++it) {
52 
53  bool isPixel = (*it).isPixel();
54 
55  if (m_settings.m_LRTmode) {
56  // Only Strip seeds in LRT mode
57  if (isPixel) continue;
58  } else {
59  // Only Pixel Seeds
60  if(!isPixel) continue;
61  }
62  m_storage->addSpacePoint(&(*it), useML);
63  }
65  m_storage->initializeNodes(useML);
67 
68 }
69 
70 void TrigTrackSeedGeneratorITk::runGNN_TrackFinder(const IRoiDescriptor* roiDescriptor, std::vector<GNN_TrigTracklet>& vTracks, bool makeTriplets) {
71 
72  const int MaxEdges = 2000000;
73 
74  const float cut_dphi_max = m_settings.m_LRTmode ? 0.07 : 0.012;
75  const float cut_dcurv_max = m_settings.m_LRTmode ? 0.015 : 0.001;
76  const float cut_tau_ratio_max = m_settings.m_LRTmode ? 0.015 : 0.007;
77  const float min_z0 = m_settings.m_LRTmode ? -600.0 : roiDescriptor->zedMinus();
78  const float max_z0 = m_settings.m_LRTmode ? 600.0 : roiDescriptor->zedPlus();
79  const float min_deltaPhi = m_settings.m_LRTmode ? 0.01f : 0.001f;
80 
81  const float maxOuterRadius = m_settings.m_LRTmode ? 1050.0 : 550.0;
82 
83  const float cut_zMinU = min_z0 + maxOuterRadius*roiDescriptor->dzdrMinus();
84  const float cut_zMaxU = max_z0 + maxOuterRadius*roiDescriptor->dzdrPlus();
85 
86  const float maxKappa_high_eta = m_settings.m_LRTmode ? 1.0*m_maxCurv : std::sqrt(0.8)*m_maxCurv;
87  const float maxKappa_low_eta = m_settings.m_LRTmode ? 1.0*m_maxCurv : std::sqrt(0.6)*m_maxCurv;
88 
89  float deltaPhi = 0.5f*m_phiSliceWidth;//the default sliding window along phi
90 
91  //1. loop over stages
92 
93  int currentStage = 0;
94  unsigned int nConnections = 0;
95 
97 
98  std::vector<TrigFTF_GNN_Edge> edgeStorage;
99 
100  edgeStorage.reserve(MaxEdges);
101 
102  int nEdges = 0;
103 
104  for(std::map<int, std::vector<FASTRACK_CONNECTOR::LayerGroup> >::const_iterator it = conn.m_layerGroups.begin();it!=conn.m_layerGroups.end();++it, currentStage++) {
105 
106  //loop over L1 layers for the current stage
107 
108  for(const auto& layerGroup : (*it).second) {
109 
110  unsigned int dst = layerGroup.m_dst;//n1 : inner nodes
111 
113 
114  if (pL1==nullptr) {
115  continue;
116  }
117 
118  for(const auto& conn : layerGroup.m_sources) {//loop over L2(L1) for the current stage
119 
120  unsigned int src = conn->m_src;//n2 : the new connectors
121 
123 
124  if (pL2==nullptr) {
125  continue;
126  }
127 
128  int nDstBins = pL1->m_bins.size();
129  int nSrcBins = pL2->m_bins.size();
130 
131  for(int b1=0;b1<nDstBins;b1++) {//loop over bins in Layer 1
132 
133  TrigFTF_GNN_EtaBin& B1 = m_storage->getEtaBin(pL1->m_bins.at(b1));
134 
135  if(B1.empty()) continue;
136 
137  float rb1 = pL1->getMinBinRadius(b1);
138 
139  //3. loops over source eta-bins
140 
141  for(int b2=0;b2<nSrcBins;b2++) {//loop over bins in Layer 2
142 
143  if(m_settings.m_useEtaBinning && (nSrcBins+nDstBins > 2)) {
144  if(conn->m_binTable[b1 + b2*nDstBins] != 1) continue;//using precomputed LUT
145  }
146 
147  const TrigFTF_GNN_EtaBin& B2 = m_storage->getEtaBin(pL2->m_bins.at(b2));
148 
149  if(B2.empty()) continue;
150 
151  float rb2 = pL2->getMaxBinRadius(b2);
152 
153  //calculated delta Phi for rb1 ---> rb2 extrapolation
154 
156  deltaPhi = min_deltaPhi + m_maxCurv*std::fabs(rb2-rb1);
157  }
158 
159  unsigned int first_it = 0;
160 
161  for(unsigned int n1Idx = 0;n1Idx<B1.m_vn.size();n1Idx++) {//loop over nodes in Layer 1
162 
163  if(B1.m_in[n1Idx].size() >= MAX_SEG_PER_NODE) continue;
164 
165  const std::array<float, 5>& n1pars = B1.m_params[n1Idx];
166 
167  float phi1 = n1pars[2];
168  float r1 = n1pars[3];
169  float z1 = n1pars[4];
170 
171  //sliding window phi1 +/- deltaPhi
172 
173  float minPhi = phi1 - deltaPhi;
174  float maxPhi = phi1 + deltaPhi;
175 
176  for(unsigned int n2PhiIdx = first_it; n2PhiIdx<B2.m_vPhiNodes.size();n2PhiIdx++) {//sliding window over nodes in Layer 2
177 
178  float phi2 = B2.m_vPhiNodes.at(n2PhiIdx).first;
179 
180  if(phi2 < minPhi) {
181  first_it = n2PhiIdx;
182  continue;
183  }
184  if(phi2 > maxPhi) break;
185 
186  unsigned int n2Idx = B2.m_vPhiNodes[n2PhiIdx].second;
187 
188  const std::vector<unsigned int>& v2In = B2.m_in[n2Idx];
189  const std::array<float, 5>& n2pars = B2.m_params[n2Idx];
190 
191  if(v2In.size() >= MAX_SEG_PER_NODE) continue;
192 
193  float r2 = n2pars[3];
194 
195  float dr = r2 - r1;
196 
197  if(dr < m_minDeltaRadius) {
198  continue;
199  }
200 
201  float z2 = n2pars[4];
202 
203  float dz = z2 - z1;
204  float tau = dz/dr;
205  float ftau = std::fabs(tau);
206  if (ftau > 36.0) {
207  continue;
208  }
209 
210  if(ftau < n1pars[0]) continue;
211  if(ftau < n2pars[0]) continue;
212  if(ftau > n1pars[1]) continue;
213  if(ftau > n2pars[1]) continue;
214 
216 
217  float z0 = z1 - r1*tau;
218 
219  if(z0 < min_z0 || z0 > max_z0) continue;
220 
221  float zouter = z0 + maxOuterRadius*tau;
222 
223  if(zouter < cut_zMinU || zouter > cut_zMaxU) continue;
224  }
225 
226  float curv = (phi2-phi1)/dr;
227  float abs_curv = std::abs(curv);
228 
229  if(ftau < 4.0) {//eta = 2.1
230  if(abs_curv > maxKappa_low_eta) {
231  continue;
232  }
233 
234  }
235  else {
236  if(abs_curv > maxKappa_high_eta) {
237  continue;
238  }
239  }
240 
241  //match edge candidate against edges incoming to n2
242 
243  float exp_eta = std::sqrt(1+tau*tau)-tau;
244 
245  bool isGood = v2In.size() <= 2;//we must have enough incoming edges to decide
246 
247  if(!isGood) {
248 
249  float uat_1 = 1.0f/exp_eta;
250 
251  for(const auto& n2_in_idx : v2In) {
252 
253  float tau2 = edgeStorage.at(n2_in_idx).m_p[0];
254  float tau_ratio = tau2*uat_1 - 1.0f;
255 
256  if(std::fabs(tau_ratio) > cut_tau_ratio_max){//bad match
257  continue;
258  }
259  isGood = true;//good match found
260  break;
261  }
262  }
263  if(!isGood) continue;//no match found, skip creating [n1 <- n2] edge
264 
265  float dPhi2 = curv*r2;
266  float dPhi1 = curv*r1;
267 
268  if(nEdges < MaxEdges) {
269 
270  edgeStorage.emplace_back(B1.m_vn[n1Idx], B2.m_vn[n2Idx], exp_eta, curv, phi1 + dPhi1);
271 
272  std::vector<unsigned int>& v1In = B1.m_in[n1Idx];
273 
274  if(v1In.size() < MAX_SEG_PER_NODE) v1In.push_back(nEdges);
275 
276  int outEdgeIdx = nEdges;
277 
278  float uat_2 = 1/exp_eta;
279  float Phi2 = phi2 + dPhi2;
280  float curv2 = curv;
281 
282  for(const auto& inEdgeIdx : v2In) {//looking for neighbours of the new edge
283 
284  TrigFTF_GNN_Edge* pS = &(edgeStorage.at(inEdgeIdx));
285 
286  if(pS->m_nNei >= N_SEG_CONNS) continue;
287 
288  float tau_ratio = pS->m_p[0]*uat_2 - 1.0f;
289 
290  if(std::abs(tau_ratio) > cut_tau_ratio_max){//bad match
291  continue;
292  }
293 
294  float dPhi = Phi2 - pS->m_p[2];
295 
296  if(dPhi<-M_PI) dPhi += 2*M_PI;
297  else if(dPhi>M_PI) dPhi -= 2*M_PI;
298 
299  if(dPhi < -cut_dphi_max || dPhi > cut_dphi_max) {
300  continue;
301  }
302 
303  float dcurv = curv2 - pS->m_p[1];
304 
305  if(dcurv < -cut_dcurv_max || dcurv > cut_dcurv_max) {
306  continue;
307  }
308 
309  pS->m_vNei[pS->m_nNei++] = outEdgeIdx;
310  nConnections++;
311 
312  }
313  nEdges++;
314  }
315  } //loop over n2 (outer) nodes
316  } //loop over n1 (inner) nodes
317  } //loop over source eta bins
318  } //loop over dst eta bins
319  } //loop over L2(L1) layers
320  } //loop over dst layers
321  } //loop over the stages of doublet making
322 
323  if(nConnections == 0) return;
324 
325  const int maxIter = 15;
326 
327  int maxLevel = 0;
328 
329  int iter = 0;
330 
331  std::vector<TrigFTF_GNN_Edge*> v_old;
332 
333  for(int edgeIndex=0;edgeIndex<nEdges;edgeIndex++) {
334 
335  TrigFTF_GNN_Edge* pS = &(edgeStorage.at(edgeIndex));
336  if(pS->m_nNei == 0) continue;
337  v_old.push_back(pS);//TO-DO: increment level for segments as they already have at least one neighbour
338  }
339 
340  for(;iter<maxIter;iter++) {
341 
342  //generate proposals
343  std::vector<TrigFTF_GNN_Edge*> v_new;
344  v_new.clear();
345 
346  for(auto pS : v_old) {
347 
348  int next_level = pS->m_level;
349 
350  for(int nIdx=0;nIdx<pS->m_nNei;nIdx++) {
351 
352  unsigned int nextEdgeIdx = pS->m_vNei[nIdx];
353 
354  TrigFTF_GNN_Edge* pN = &(edgeStorage.at(nextEdgeIdx));
355 
356  if(pS->m_level == pN->m_level) {
357  next_level = pS->m_level + 1;
358  v_new.push_back(pS);
359  break;
360  }
361  }
362 
363  pS->m_next = next_level;//proposal
364  }
365 
366  //update
367 
368  int nChanges = 0;
369 
370  for(auto pS : v_new) {
371  if(pS->m_next != pS->m_level) {
372  nChanges++;
373  pS->m_level = pS->m_next;
374  if(maxLevel < pS->m_level) maxLevel = pS->m_level;
375  }
376  }
377 
378  if(nChanges == 0) break;
379 
380 
381  v_old = std::move(v_new);
382  v_new.clear();
383  }
384 
385 
386  int minLevel = 3;//a triplet + 2 confirmation
387 
388  if(m_settings.m_LRTmode) {
389  minLevel = 2;//a triplet + 1 confirmation
390  }
391 
392 
393  std::vector<TrigFTF_GNN_Edge*> vSeeds;
394 
395  vSeeds.reserve(MaxEdges/2);
396 
397  for(int edgeIndex=0;edgeIndex<nEdges;edgeIndex++) {
398  TrigFTF_GNN_Edge* pS = &(edgeStorage.at(edgeIndex));
399 
400  if(pS->m_level < minLevel) continue;
401 
402  vSeeds.push_back(pS);
403  }
404 
405  m_triplets.clear();
406 
407  std::sort(vSeeds.begin(), vSeeds.end(), TrigFTF_GNN_Edge::CompareLevel());
408 
409  if(vSeeds.empty()) return;
410 
411  //backtracking
412 
414 
415  for(auto pS : vSeeds) {
416 
417  if(pS->m_level == -1) continue;
418 
419  TrigFTF_GNN_EDGE_STATE rs(false);
420 
421  tFilter.followTrack(pS, rs);
422 
423  if(!rs.m_initialized) {
424  continue;
425  }
426 
427  if(static_cast<int>(rs.m_vs.size()) < minLevel) continue;
428 
429  std::vector<const TrigSiSpacePointBase*> vSP;
430 
431  for(std::vector<TrigFTF_GNN_Edge*>::reverse_iterator sIt=rs.m_vs.rbegin();sIt!=rs.m_vs.rend();++sIt) {
432 
433  (*sIt)->m_level = -1;//mark as collected
434 
435  if(sIt == rs.m_vs.rbegin()) {
436  vSP.push_back((*sIt)->m_n1);
437  }
438  vSP.push_back((*sIt)->m_n2);
439  }
440 
441  if(vSP.size()<3) continue;
442 
443  //making triplets
444 
445  unsigned int nTriplets = 0;
446 
447  std::vector<TrigInDetTriplet> output;
448 
449  if(makeTriplets) {
450 
451  double maxCurv2 = m_maxCurv*m_maxCurv;
452 
453  for(unsigned int idx_m = 1;idx_m < vSP.size()-1;idx_m++) {
454 
455  const TrigSiSpacePointBase& spM = *vSP.at(idx_m);
456  const double pS_r = spM.r();
457  const double pS_x = spM.x();
458  const double pS_y = spM.y();
459  const double cosA = pS_x/pS_r;
460  const double sinA = pS_y/pS_r;
461 
462  for(unsigned int idx_o = idx_m+1; idx_o < vSP.size(); idx_o++) {
463 
464  const TrigSiSpacePointBase& spO = *vSP.at(idx_o);
465 
466  double dx = spO.x() - pS_x;
467  double dy = spO.y() - pS_y;
468  double R2inv = 1.0/(dx*dx+dy*dy);
469  double xn = dx*cosA + dy*sinA;
470  double yn =-dx*sinA + dy*cosA;
471 
472  const double uo = xn*R2inv;
473  const double vo = yn*R2inv;
474 
475  for(unsigned int idx_i = 0; idx_i < idx_m; idx_i++) {
476  const TrigSiSpacePointBase& spI = *vSP.at(idx_i);
477 
478  dx = spI.x() - pS_x;
479  dy = spI.y() - pS_y;
480  R2inv = 1.0/(dx*dx+dy*dy);
481 
482  xn = dx*cosA + dy*sinA;
483  yn =-dx*sinA + dy*cosA;
484 
485  const double ui = xn*R2inv;
486  const double vi = yn*R2inv;
487 
488  //1. pT estimate
489 
490  const double du = uo - ui;
491  if(du==0.0) continue;
492  const double A = (vo - vi)/du;
493  const double B = vi - A*ui;
494 
495  const double triplet_curv2 = B*B/(1 + A*A);
496 
497  if(triplet_curv2 > maxCurv2) {
498  continue;
499  }
500 
501  //2. d0 cut
502 
503  const double fabs_d0 = std::abs(pS_r*(B*pS_r - A));
504 
505  if(fabs_d0 > m_settings.m_tripletD0Max) {
506  continue;
507  }
508 
509  //3. phi0 cut
510 
511  if (!roiDescriptor->isFullscan()) {
512  const double uc = 2*B*pS_r - A;
513  const double phi0 = std::atan2(sinA - uc*cosA, cosA + uc*sinA);
514  if ( !RoiUtil::containsPhi( *roiDescriptor, phi0 ) ) {
515  continue;
516  }
517  }
518 
519  //4. add new triplet
520 
521  const double Q = fabs_d0*fabs_d0;
522 
523  output.emplace_back(spI, spM, spO, Q);
524 
525  nTriplets++;
526 
527  if(nTriplets >= m_settings.m_maxTripletBufferLength) break;
528  }
529  if(nTriplets >= m_settings.m_maxTripletBufferLength) break;
530  }
531  if(nTriplets >= m_settings.m_maxTripletBufferLength) break;
532  }
533  if(output.empty()) continue;
534  }
535 
536  vTracks.emplace_back(vSP, output);
537  }
538 
539 }
540 
542 
543  std::vector<GNN_TrigTracklet> vTracks;
544 
545  vTracks.reserve(5000);
546 
547  runGNN_TrackFinder(roiDescriptor, vTracks, true);
548 
549  if(vTracks.empty()) return;
550 
551  m_triplets.clear();
552 
553  for(auto& track : vTracks) {
554  for(auto& seed : track.m_seeds) {
555 
556  float newQ = seed.Q();
557 
558  if (m_settings.m_LRTmode) {
559  // In LRT mode penalize pixels in Triplets
560  if(seed.s1().isPixel()) newQ+=1000;
561  if(seed.s2().isPixel()) newQ+=1000;
562  if(seed.s3().isPixel()) newQ+=1000;
563  } else {
564  // In normal (non LRT) mode penalise SSS by 1000, PSS (if enabled) and PPS by 10000
565  if(seed.s3().isSCT()) {
566  newQ += seed.s1().isSCT() ? 1000.0 : 10000.0;
567  }
568  }
569  seed.Q(newQ);
570  m_triplets.emplace_back(seed);
571  }
572  }
573  vTracks.clear();
574 
575 }
576 
577 void TrigTrackSeedGeneratorITk::getTracklets(const IRoiDescriptor* roiDescriptor, std::vector<GNN_TrigTracklet>& vTracks, bool makeTriplets) {
578  runGNN_TrackFinder(roiDescriptor, vTracks, makeTriplets);
579 }
580 
582 
583 
584 }
585 
586 void TrigTrackSeedGeneratorITk::getSeeds(std::vector<TrigInDetTriplet>& vs) {
587  vs.clear();
588  std::sort(m_triplets.begin(), m_triplets.end(),
589  [](const TrigInDetTriplet& A, const TrigInDetTriplet& B) {
590  return A.Q() < B.Q();
591  }
592  );
593  vs = std::move(m_triplets);
594 }
595 
596 
TrigCombinatorialSettings::m_nMaxPhiSlice
int m_nMaxPhiSlice
Definition: TrigCombinatorialSettings.h:67
TrigFTF_GNN_EtaBin
Definition: GNN_DataStorage.h:21
TrigInDetTriplet
Definition: TrigInDetTriplet.h:13
TrigFTF_GNN_DataStorage
Definition: GNN_DataStorage.h:49
FasTrackConnector.h
TrigFTF_GNN_EtaBin::m_in
std::vector< std::vector< unsigned int > > m_in
Definition: GNN_DataStorage.h:45
checkCorrelInHIST.conn
conn
Definition: checkCorrelInHIST.py:25
TrigTrackSeedGeneratorITk::getTracklets
void getTracklets(const IRoiDescriptor *, std::vector< GNN_TrigTracklet > &, bool)
Definition: TrigTrackSeedGenerator_ITk.cxx:577
TrigFTF_GNN_Edge::CompareLevel
Definition: GNN_DataStorage.h:77
TrigFTF_GNN_EtaBin::m_vn
std::vector< const TrigSiSpacePointBase * > m_vn
Definition: GNN_DataStorage.h:43
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
PixelCluster.h
TrigFTF_GNN_DataStorage::sortByPhi
void sortByPhi()
Definition: GNN_DataStorage.cxx:123
TrigFTF_GNN_Layer::getMinBinRadius
float getMinBinRadius(int) const
Definition: GNN_Geometry.cxx:201
TrigFTF_GNN_EdgeState
Definition: GNN_TrackingFilter.h:11
xAOD::deltaPhi
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
Definition: L2StandAloneMuon_v1.cxx:160
TrigFTF_GNN_Geometry::getTrigFTF_GNN_LayerByKey
const TrigFTF_GNN_Layer * getTrigFTF_GNN_LayerByKey(unsigned int) const
Definition: GNN_Geometry.cxx:276
TrigFTF_GNN_Edge::m_vNei
unsigned int m_vNei[N_SEG_CONNS]
Definition: GNN_DataStorage.h:100
InDetAccessor::phi0
@ phi0
Definition: InDetAccessor.h:33
RoiUtil::containsPhi
bool containsPhi(const IRoiDescriptor &roi, double phi)
test whether a stub is contained within the roi
Definition: RoiUtil.cxx:79
skel.it
it
Definition: skel.GENtoEVGEN.py:396
TrigCombinatorialSettings::m_layerGeometry
std::vector< TrigInDetSiLayer > m_layerGeometry
Definition: TrigCombinatorialSettings.h:78
M_PI
#define M_PI
Definition: ActiveFraction.h:11
TrigFTF_GNN_Layer::m_bins
std::vector< int > m_bins
Definition: GNN_Geometry.h:31
TrigCombinatorialSettings::m_LRTmode
bool m_LRTmode
Definition: TrigCombinatorialSettings.h:72
TrigCombinatorialSettings::m_tripletPtMin
float m_tripletPtMin
Definition: TrigCombinatorialSettings.h:59
TrigSiSpacePointBase::x
void x(const double x)
Definition: TrigSiSpacePointBase.h:54
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
TrigTrackSeedGeneratorITk::m_phiSliceWidth
float m_phiSliceWidth
Definition: TrigTrackSeedGenerator_ITk.h:50
IRoiDescriptor::dzdrMinus
virtual double dzdrMinus() const =0
return the gradients
FASTRACK_CONNECTOR
class FasTrackConnector FASTRACK_CONNECTOR
TrigFTF_GNN_EdgeState::m_vs
std::vector< TrigFTF_GNN_Edge * > m_vs
Definition: GNN_TrackingFilter.h:33
IRoiDescriptor::dzdrPlus
virtual double dzdrPlus() const =0
TrigTrackSeedGeneratorITk::createSeedsZv
void createSeedsZv()
Definition: TrigTrackSeedGenerator_ITk.cxx:581
TrigFTF_GNN_EdgeState::m_initialized
bool m_initialized
Definition: GNN_TrackingFilter.h:38
dqt_zlumi_alleff_HIST.A
A
Definition: dqt_zlumi_alleff_HIST.py:110
TrigInDetSiLayer.h
TrigSiSpacePointBase::r
void r(const double r)
Definition: TrigSiSpacePointBase.h:51
N_SEG_CONNS
#define N_SEG_CONNS
Definition: GNN_DataStorage.h:14
TrigFTF_GNN_EtaBin::empty
bool empty() const
Definition: GNN_DataStorage.h:37
TrigTrackSeedGeneratorITk::m_minDeltaRadius
float m_minDeltaRadius
Definition: TrigTrackSeedGenerator_ITk.h:51
A
TrigCombinatorialSettings::m_doublet_dR_Max
float m_doublet_dR_Max
Definition: TrigCombinatorialSettings.h:54
TrigFTF_GNN_Edge
Definition: GNN_DataStorage.h:74
TrigFTF_GNN_DataStorage::generatePhiIndexing
void generatePhiIndexing(float)
Definition: GNN_DataStorage.cxx:174
TrigCombinatorialSettings::m_conn
const FASTRACK_CONNECTOR * m_conn
Definition: TrigCombinatorialSettings.h:75
TrigFTF_GNN_EtaBin::m_vPhiNodes
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
Definition: GNN_DataStorage.h:44
TrigFTF_GNN_Edge::m_level
signed char m_level
Definition: GNN_DataStorage.h:95
TrigSiSpacePointBase.h
IRoiDescriptor
Describes the API of the Region of Ineterest geometry.
Definition: IRoiDescriptor.h:23
TauGNNUtils::Variables::Track::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:538
TrigSiSpacePointBase::y
void y(const double y)
Definition: TrigSiSpacePointBase.h:55
GNN_TrackingFilter.h
MAX_SEG_PER_NODE
#define MAX_SEG_PER_NODE
Definition: GNN_DataStorage.h:13
TrigTrackSeedGeneratorITk::m_maxCurv
float m_maxCurv
Definition: TrigTrackSeedGenerator_ITk.h:53
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
TrigFTF_GNN_DataStorage::getEtaBin
TrigFTF_GNN_EtaBin & getEtaBin(int idx)
Definition: GNN_DataStorage.h:61
TrigFTF_GNN_DataStorage::addSpacePoint
int addSpacePoint(const TrigSiSpacePointBase *, bool)
Definition: GNN_DataStorage.cxx:75
TrigCombinatorialSettings::m_maxTripletBufferLength
unsigned int m_maxTripletBufferLength
Definition: TrigCombinatorialSettings.h:68
TrigCombinatorialSettings::m_useEtaBinning
bool m_useEtaBinning
Definition: TrigCombinatorialSettings.h:73
TrigTrackSeedGeneratorITk::TrigTrackSeedGeneratorITk
TrigTrackSeedGeneratorITk(const TrigCombinatorialSettings &)
Definition: TrigTrackSeedGenerator_ITk.cxx:24
PixelAthClusterMonAlgCfg.layerGroup
layerGroup
Definition: PixelAthClusterMonAlgCfg.py:238
merge.output
output
Definition: merge.py:17
TrigFTF_GNN_TRACKING_FILTER
class TrigFTF_GNN_TrackingFilter TrigFTF_GNN_TRACKING_FILTER
TrigFTF_GNN_DataStorage::initializeNodes
void initializeNodes(bool)
Definition: GNN_DataStorage.cxx:127
TrigCombinatorialSettings::m_useTrigSeedML
int m_useTrigSeedML
Definition: TrigCombinatorialSettings.h:80
TrigFTF_GNN_Layer
Definition: GNN_Geometry.h:16
RoiUtil.h
TrigTrackSeedGeneratorITk::loadSpacePoints
void loadSpacePoints(const std::vector< TrigSiSpacePointBase > &)
Definition: TrigTrackSeedGenerator_ITk.cxx:45
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
TrigTrackSeedGeneratorITk::getSeeds
void getSeeds(std::vector< TrigInDetTriplet > &)
Definition: TrigTrackSeedGenerator_ITk.cxx:586
TrigFTF_GNN_Edge::m_nNei
unsigned char m_nNei
Definition: GNN_DataStorage.h:97
TrigTrackSeedGenerator_ITk.h
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
TrigCombinatorialSettings::m_doubletFilterRZ
bool m_doubletFilterRZ
Definition: TrigCombinatorialSettings.h:65
TrigCombinatorialSettings::m_geo
const TrigFTF_GNN_Geometry * m_geo
Definition: TrigCombinatorialSettings.h:76
TrigTrackSeedGeneratorITk::runGNN_TrackFinder
void runGNN_TrackFinder(const IRoiDescriptor *, std::vector< GNN_TrigTracklet > &, bool)
Definition: TrigTrackSeedGenerator_ITk.cxx:70
IRoiDescriptor::zedPlus
virtual double zedPlus() const =0
the zed and eta values at the most forward and most rear ends of the RoI
TrigFTF_GNN_Edge::m_p
float m_p[3]
Definition: GNN_DataStorage.h:98
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
IRoiDescriptor::isFullscan
virtual bool isFullscan() const =0
is this a full detector RoI?
TrigTrackSeedGeneratorITk::createSeeds
void createSeeds(const IRoiDescriptor *)
Definition: TrigTrackSeedGenerator_ITk.cxx:541
IRoiDescriptor::zedMinus
virtual double zedMinus() const =0
IRoiDescriptor.h
TrigCombinatorialSettings::m_tripletD0Max
float m_tripletD0Max
Definition: TrigCombinatorialSettings.h:57
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
TrigSiSpacePointBase
Definition: TrigSiSpacePointBase.h:23
TrigTrackSeedGeneratorITk::m_storage
TrigFTF_GNN_DataStorage * m_storage
Definition: TrigTrackSeedGenerator_ITk.h:47
GNN_DataStorage.h
TrigTrackSeedGeneratorITk::m_maxDeltaRadius
float m_maxDeltaRadius
Definition: TrigTrackSeedGenerator_ITk.h:51
TrigInDetTriplet.h
TrigTrackSeedGeneratorITk::m_triplets
std::vector< TrigInDetTriplet > m_triplets
Definition: TrigTrackSeedGenerator_ITk.h:55
TrigFTF_GNN_Layer::getMaxBinRadius
float getMaxBinRadius(int) const
Definition: GNN_Geometry.cxx:208
TrigCombinatorialSettings
Definition: TrigCombinatorialSettings.h:15
TrigTrackSeedGeneratorITk::m_settings
const TrigCombinatorialSettings & m_settings
Definition: TrigTrackSeedGenerator_ITk.h:49
TrigTrackSeedGeneratorITk::~TrigTrackSeedGeneratorITk
~TrigTrackSeedGeneratorITk()
Definition: TrigTrackSeedGenerator_ITk.cxx:40
TrigFTF_GNN_EtaBin::m_params
std::vector< std::array< float, 5 > > m_params
Definition: GNN_DataStorage.h:46