ATLAS Offline Software
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
TrigInDetR3TrackSeedingTool Class Reference

#include <TrigInDetR3TrackSeedingTool.h>

Inheritance diagram for TrigInDetR3TrackSeedingTool:
Collaboration diagram for TrigInDetR3TrackSeedingTool:

Public Member Functions

 TrigInDetR3TrackSeedingTool (const std::string &, const std::string &, const IInterface *)
 
virtual ~TrigInDetR3TrackSeedingTool ()
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
virtual TrigInDetTrackSeedingResult findSeeds (const IRoiDescriptor &, std::vector< TrigInDetTracklet > &, const EventContext &) const override final
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 
 DeclareInterfaceID (ITrigInDetTrackSeedingTool, 1, 0)
 

Protected Types

typedef TrigFTF_GNN_Node GNN_Node
 
typedef TrigFTF_GNN_DataStorage GNN_DataStorage
 
typedef TrigFTF_GNN_Edge GNN_Edge
 
typedef TrigFTF_GNNR3_Node GNNR3_Node
 
typedef TrigFTF_GNNR3_DataStorage GNNR3_DataStorage
 
typedef TrigFTF_GNNR3_Edge GNNR3_Edge
 

Protected Member Functions

void createGraphNodes (const SpacePointCollection *, std::vector< GNNR3_Node > &, std::vector< const Trk::SpacePoint * > &, unsigned short, float, float) const
 
std::pair< int, int > buildTheGraph (const IRoiDescriptor &, const std::unique_ptr< GNN_DataStorage > &, std::vector< GNN_Edge > &) const
 
std::pair< int, int > buildTheGraph (const IRoiDescriptor &, const std::unique_ptr< GNNR3_DataStorage > &, std::vector< GNNR3_Edge > &) const
 
int runCCA (int, std::vector< GNN_Edge > &) const
 
int runCCA (int, std::vector< GNNR3_Edge > &) const
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Protected Attributes

SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
 
BooleanProperty m_usePixelSpacePoints {this, "UsePixelSpacePoints", true}
 
BooleanProperty m_useSctSpacePoints {this, "UseSctSpacePoints", false}
 
SG::ReadHandleKey< SpacePointContainerm_sctSpacePointsContainerKey {this, "SCT_SP_ContainerName", "ITkStripTrigSpacePoints"}
 
SG::ReadHandleKey< SpacePointContainerm_pixelSpacePointsContainerKey {this, "PixelSP_ContainerName", "ITkPixelTrigSpacePoints"}
 
ToolHandle< IRegSelToolm_regsel_pix { this, "RegSelTool_Pixel", "RegSelTool/RegSelTool_Pixel" }
 region selector tools More...
 
ToolHandle< IRegSelToolm_regsel_sct { this, "RegSelTool_SCT", "RegSelTool/RegSelTool_SCT" }
 
BooleanProperty m_useGPU {this, "UseGPU", false}
 
ToolHandle< ITrigL2LayerNumberToolm_layerNumberTool {this, "layerNumberTool", "TrigL2LayerNumberToolITk"}
 
const AtlasDetectorIDm_atlasId = nullptr
 
const SCT_IDm_sctId = nullptr
 
const PixelIDm_pixelId = nullptr
 
BooleanProperty m_filter_phi {this, "DoPhiFiltering", true}
 
BooleanProperty m_useBeamTilt {this, "UseBeamTilt", false}
 
BooleanProperty m_LRTmode {this, "LRTMode",false}
 
BooleanProperty m_useML {this, "useML", true}
 
UnsignedIntegerProperty m_nMaxPhiSlice {this, "nMaxPhiSlice", 53}
 
BooleanProperty m_doubletFilterRZ {this, "Doublet_FilterRZ", true}
 
BooleanProperty m_useEtaBinning {this, "UseEtaBinning", true}
 
BooleanProperty m_matchBeforeCreate {this, "MatchBeforeCreate", false}
 
FloatProperty m_minPt {this, "pTmin", 1000.0}
 
FloatProperty m_etaBinOverride {this, "etaBin", 0.0f, "specify non-zero to override eta bin width from connection file (default 0.2 in createLinkingScheme.py)"}
 
IntegerProperty m_nMaxEdges {this, "MaxGraphEdges", 2000000}
 
IntegerProperty m_nBufferEdges {this, "BufferEdges", 200000}
 
StringProperty m_connectionFile {this, "ConnectionFileName", "binTables_ITK_RUN4.txt"}
 
BooleanProperty m_useGPUseedExtraction {this, "UseGPUseedExtraction", true}
 
BooleanProperty m_useOldTunings {this, "UseOldTunings", false}
 
FloatProperty m_tau_ratio_cut {this, "tau_ratio_cut", 0.007}
 
float m_phiSliceWidth = 0.
 
std::unique_ptr< GNN_FasTrackConnectorm_connector = nullptr
 
std::unique_ptr< GNNR3_FasTrackConnectorm_connector = nullptr
 
std::vector< TrigInDetSiLayerm_layerGeometry
 
std::unique_ptr< const TrigFTF_GNN_Geometrym_geo = nullptr
 
std::unique_ptr< const TrigFTF_GNNR3_Geometrym_geo = nullptr
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 38 of file TrigInDetR3TrackSeedingTool.h.

Member Typedef Documentation

◆ GNN_DataStorage

Definition at line 33 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ GNN_Edge

typedef TrigFTF_GNN_Edge SeedingToolBase::GNN_Edge
protectedinherited

Definition at line 34 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ GNN_Node

typedef TrigFTF_GNN_Node SeedingToolBase::GNN_Node
protectedinherited

Definition at line 32 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ GNNR3_DataStorage

◆ GNNR3_Edge

typedef TrigFTF_GNNR3_Edge SeedingToolBase::GNNR3_Edge
protectedinherited

◆ GNNR3_Node

typedef TrigFTF_GNNR3_Node SeedingToolBase::GNNR3_Node
protectedinherited

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TrigInDetR3TrackSeedingTool()

TrigInDetR3TrackSeedingTool::TrigInDetR3TrackSeedingTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 27 of file TrigInDetR3TrackSeedingTool.cxx.

29  : SeedingToolBase(t,n,p)
30 {
31 
32 }

◆ ~TrigInDetR3TrackSeedingTool()

virtual TrigInDetR3TrackSeedingTool::~TrigInDetR3TrackSeedingTool ( )
inlinevirtual

Definition at line 43 of file TrigInDetR3TrackSeedingTool.h.

43 {};

Member Function Documentation

◆ buildTheGraph() [1/2]

std::pair< int, int > SeedingToolBase::buildTheGraph ( const IRoiDescriptor roi,
const std::unique_ptr< GNN_DataStorage > &  storage,
std::vector< GNN_Edge > &  edgeStorage 
) const
protectedinherited

Definition at line 71 of file TrigInDetPattRecoTools/src/SeedingToolBase.cxx.

71  {
72 
73  const float M_2PI = 2.0*M_PI;
74 
75  const float cut_dphi_max = m_LRTmode ? 0.07f : 0.012f;
76  const float cut_dcurv_max = m_LRTmode ? 0.015f : 0.001f;
77  const float cut_tau_ratio_max = m_LRTmode ? 0.015f : static_cast<float>(m_tau_ratio_cut);
78  const float min_z0 = m_LRTmode ? -600.0 : roi.zedMinus();
79  const float max_z0 = m_LRTmode ? 600.0 : roi.zedPlus();
80  const float min_deltaPhi = m_LRTmode ? 0.01f : 0.001f;
81 
82  const float maxOuterRadius = m_LRTmode ? 1050.0 : 550.0;
83 
84  const float cut_zMinU = min_z0 + maxOuterRadius*roi.dzdrMinus();
85  const float cut_zMaxU = max_z0 + maxOuterRadius*roi.dzdrPlus();
86 
87  const float ptCoeff = 0.29997*1.9972/2.0;// ~0.3*B/2 - assuming nominal field of 2*T
88 
89  float tripletPtMin = 0.8*m_minPt;//correction due to limited pT resolution
90  const float pt_scale = 900.0/m_minPt;//to re-scale original tunings done for the 900 MeV pT cut
91 
92  float maxCurv = ptCoeff/tripletPtMin;
93 
94  float maxKappa_high_eta = m_LRTmode ? 1.0*maxCurv : std::sqrt(0.8)*maxCurv;
95  float maxKappa_low_eta = m_LRTmode ? 1.0*maxCurv : std::sqrt(0.6)*maxCurv;
96 
97  if(!m_useOldTunings && !m_LRTmode) {//new settings for curvature cuts
98  maxKappa_high_eta = 4.75e-4f*pt_scale;
99  maxKappa_low_eta = 3.75e-4f*pt_scale;
100  }
101 
102  const float dphi_coeff = m_LRTmode ? 1.0*maxCurv : 0.68*maxCurv;
103 
104  const float minDeltaRadius = 2.0;
105 
106  float deltaPhi = 0.5f*m_phiSliceWidth;//the default sliding window along phi
107 
108  unsigned int nConnections = 0;
109 
110  edgeStorage.reserve(m_nMaxEdges);
111 
112  int nEdges = 0;
113 
114  for(const auto& bg : m_geo->bin_groups()) {//loop over bin groups
115 
116  TrigFTF_GNN_EtaBin& B1 = storage->getEtaBin(bg.first);
117 
118  if(B1.empty()) continue;
119 
120  float rb1 = B1.getMinBinRadius();
121 
122  for(const auto& b2_idx : bg.second) {
123 
124  const TrigFTF_GNN_EtaBin& B2 = storage->getEtaBin(b2_idx);
125 
126  if(B2.empty()) continue;
127 
128  float rb2 = B2.getMaxBinRadius();
129 
130  if(m_useEtaBinning) {
131  float abs_dr = std::fabs(rb2-rb1);
132  if (m_useOldTunings) {
133  deltaPhi = min_deltaPhi + dphi_coeff*abs_dr;
134  }
135  else {
136  if(abs_dr < 60.0) {
137  deltaPhi = 0.002f + 4.33e-4f*pt_scale*abs_dr;
138  } else {
139  deltaPhi = 0.015f + 2.2e-4f*pt_scale*abs_dr;
140  }
141  }
142  }
143 
144  unsigned int first_it = 0;
145 
146  for(unsigned int n1Idx = 0;n1Idx<B1.m_vn.size();n1Idx++) {//loop over nodes in Layer 1
147 
148  std::vector<unsigned int>& v1In = B1.m_in[n1Idx];
149 
150  if(v1In.size() >= MAX_SEG_PER_NODE) continue;
151 
152  const std::array<float, 5>& n1pars = B1.m_params[n1Idx];
153 
154  float phi1 = n1pars[2];
155  float r1 = n1pars[3];
156  float z1 = n1pars[4];
157 
158  //sliding window phi1 +/- deltaPhi
159 
160  float minPhi = phi1 - deltaPhi;
161  float maxPhi = phi1 + deltaPhi;
162 
163  for(unsigned int n2PhiIdx = first_it; n2PhiIdx<B2.m_vPhiNodes.size();n2PhiIdx++) {//sliding window over nodes in Layer 2
164 
165  float phi2 = B2.m_vPhiNodes[n2PhiIdx].first;
166 
167  if(phi2 < minPhi) {
168  first_it = n2PhiIdx;
169  continue;
170  }
171  if(phi2 > maxPhi) break;
172 
173  unsigned int n2Idx = B2.m_vPhiNodes[n2PhiIdx].second;
174 
175  const std::vector<unsigned int>& v2In = B2.m_in[n2Idx];
176 
177  if(v2In.size() >= MAX_SEG_PER_NODE) continue;
178 
179  const std::array<float, 5>& n2pars = B2.m_params[n2Idx];
180 
181  float r2 = n2pars[3];
182 
183  float dr = r2 - r1;
184 
185  if(dr < minDeltaRadius) {
186  continue;
187  }
188 
189  float z2 = n2pars[4];
190 
191  float dz = z2 - z1;
192  float tau = dz/dr;
193  float ftau = std::fabs(tau);
194  if (ftau > 36.0) {
195  continue;
196  }
197 
198  if(ftau < n1pars[0]) continue;
199  if(ftau > n1pars[1]) continue;
200 
201  if(ftau < n2pars[0]) continue;
202  if(ftau > n2pars[1]) continue;
203 
204  if (m_doubletFilterRZ) {
205 
206  float z0 = z1 - r1*tau;
207 
208  if(z0 < min_z0 || z0 > max_z0) continue;
209 
210  float zouter = z0 + maxOuterRadius*tau;
211 
212  if(zouter < cut_zMinU || zouter > cut_zMaxU) continue;
213  }
214 
215  float curv = (phi2-phi1)/dr;
216  float abs_curv = std::abs(curv);
217 
218  if(ftau < 4.0) {//eta = 2.1
219  if(abs_curv > maxKappa_low_eta) {
220  continue;
221  }
222  }
223  else {
224  if(abs_curv > maxKappa_high_eta) {
225  continue;
226  }
227  }
228 
229  float exp_eta = std::sqrt(1+tau*tau)-tau;
230 
231  if (m_matchBeforeCreate) {//match edge candidate against edges incoming to n2
232 
233  bool isGood = v2In.size() <= 2;//we must have enough incoming edges to decide
234 
235  if(!isGood) {
236 
237  float uat_1 = 1.0f/exp_eta;
238 
239  for(const auto& n2_in_idx : v2In) {
240 
241  float tau2 = edgeStorage.at(n2_in_idx).m_p[0];
242  float tau_ratio = tau2*uat_1 - 1.0f;
243 
244  if(std::fabs(tau_ratio) > cut_tau_ratio_max){//bad match
245  continue;
246  }
247  isGood = true;//good match found
248  break;
249  }
250  }
251 
252  if(!isGood) {//no match found, skip creating [n1 <- n2] edge
253  continue;
254  }
255  }
256 
257  float dPhi2 = curv*r2;
258  float dPhi1 = curv*r1;
259 
260  if(nEdges < m_nMaxEdges) {
261 
262  edgeStorage.emplace_back(B1.m_vn[n1Idx], B2.m_vn[n2Idx], exp_eta, curv, phi1 + dPhi1);
263 
264  if(v1In.size() < MAX_SEG_PER_NODE) v1In.push_back(nEdges);
265 
266  int outEdgeIdx = nEdges;
267 
268  float uat_2 = 1/exp_eta;
269  float Phi2 = phi2 + dPhi2;
270  float curv2 = curv;
271 
272  for(const auto& inEdgeIdx : v2In) {//looking for neighbours of the new edge
273 
274  TrigFTF_GNN_Edge* pS = &(edgeStorage.at(inEdgeIdx));
275 
276  if(pS->m_nNei >= N_SEG_CONNS) continue;
277 
278  float tau_ratio = pS->m_p[0]*uat_2 - 1.0f;
279 
280  if(std::abs(tau_ratio) > cut_tau_ratio_max){//bad match
281  continue;
282  }
283 
284  float dPhi = Phi2 - pS->m_p[2];
285 
286  if(dPhi<-M_PI) dPhi += M_2PI;
287  else if(dPhi>M_PI) dPhi -= M_2PI;
288 
289  if(dPhi < -cut_dphi_max || dPhi > cut_dphi_max) {
290  continue;
291  }
292 
293  float dcurv = curv2 - pS->m_p[1];
294 
295  if(dcurv < -cut_dcurv_max || dcurv > cut_dcurv_max) {
296  continue;
297  }
298 
299  pS->m_vNei[pS->m_nNei++] = outEdgeIdx;
300 
301  nConnections++;
302 
303  }
304  nEdges++;
305  }
306  } //loop over n2 (outer) nodes
307  } //loop over n1 (inner) nodes
308  } //loop over bins in Layer 2
309  } //loop over bin groups
310 
311  if(nEdges >= m_nMaxEdges) {
312  ATH_MSG_WARNING("Maximum number of graph edges exceeded - possible efficiency loss "<< nEdges);
313  }
314 
315  return std::make_pair(nEdges, nConnections);
316 }

◆ buildTheGraph() [2/2]

std::pair< int, int > SeedingToolBase::buildTheGraph ( const IRoiDescriptor roi,
const std::unique_ptr< GNNR3_DataStorage > &  storage,
std::vector< GNNR3_Edge > &  edgeStorage 
) const
protectedinherited

Definition at line 71 of file TrigInDetR3PattRecoTools/src/SeedingToolBase.cxx.

71  {
72 
73  const float M_2PI = 2.0*M_PI;
74 
75  const float cut_dphi_max = m_LRTmode ? 0.07 : 0.012;
76  const float cut_dcurv_max = m_LRTmode ? 0.015 : 0.001;
77  const float cut_tau_ratio_max = m_LRTmode ? 0.015 : 0.007;
78  const float min_z0 = m_LRTmode ? -600.0 : roi.zedMinus();
79  const float max_z0 = m_LRTmode ? 600.0 : roi.zedPlus();
80  const float min_deltaPhi = m_LRTmode ? 0.01f : 0.001f;
81 
82  const float maxOuterRadius = m_LRTmode ? 1050.0 : 550.0;
83 
84  const float cut_zMinU = min_z0 + maxOuterRadius*roi.dzdrMinus();
85  const float cut_zMaxU = max_z0 + maxOuterRadius*roi.dzdrPlus();
86 
87  const float ptCoeff = 0.29997*1.9972/2.0;// ~0.3*B/2 - assuming nominal field of 2*T
88 
89  float tripletPtMin = 0.8*m_minPt;//correction due to limited pT resolution
90 
91  float maxCurv = ptCoeff/tripletPtMin;
92 
93  const float maxKappa_high_eta = m_LRTmode ? 1.0*maxCurv : std::sqrt(0.8)*maxCurv;
94  const float maxKappa_low_eta = m_LRTmode ? 1.0*maxCurv : std::sqrt(0.6)*maxCurv;
95  const float dphi_coeff = m_LRTmode ? 1.0*maxCurv : 0.68*maxCurv;
96 
97  const float minDeltaRadius = 2.0;
98 
99  float deltaPhi = 0.5f*m_phiSliceWidth;//the default sliding window along phi
100 
101  unsigned int nConnections = 0;
102 
103  edgeStorage.reserve(m_nMaxEdges);
104 
105  int nEdges = 0;
106 
107  for(const auto& bg : m_geo->bin_groups()) {//loop over bin groups
108 
109  TrigFTF_GNNR3_EtaBin& B1 = storage->getEtaBin(bg.first);
110 
111  if(B1.empty()) continue;
112 
113  float rb1 = B1.getMinBinRadius();
114 
115  for(const auto& b2_idx : bg.second) {
116 
117  const TrigFTF_GNNR3_EtaBin& B2 = storage->getEtaBin(b2_idx);
118 
119  if(B2.empty()) continue;
120 
121  float rb2 = B2.getMaxBinRadius();
122 
123  if(m_useEtaBinning) {
124  deltaPhi = min_deltaPhi + dphi_coeff*std::fabs(rb2-rb1);
125  }
126 
127  unsigned int first_it = 0;
128 
129  for(unsigned int n1Idx = 0;n1Idx<B1.m_vn.size();n1Idx++) {//loop over nodes in Layer 1
130 
131  std::vector<unsigned int>& v1In = B1.m_in[n1Idx];
132 
133  if(v1In.size() >= MAX_SEG_PER_NODE) continue;
134 
135  const std::array<float, 5>& n1pars = B1.m_params[n1Idx];
136 
137  float phi1 = n1pars[2];
138  float r1 = n1pars[3];
139  float z1 = n1pars[4];
140 
141  //sliding window phi1 +/- deltaPhi
142 
143  float minPhi = phi1 - deltaPhi;
144  float maxPhi = phi1 + deltaPhi;
145 
146  for(unsigned int n2PhiIdx = first_it; n2PhiIdx<B2.m_vPhiNodes.size();n2PhiIdx++) {//sliding window over nodes in Layer 2
147 
148  float phi2 = B2.m_vPhiNodes[n2PhiIdx].first;
149 
150  if(phi2 < minPhi) {
151  first_it = n2PhiIdx;
152  continue;
153  }
154  if(phi2 > maxPhi) break;
155 
156  unsigned int n2Idx = B2.m_vPhiNodes[n2PhiIdx].second;
157 
158  const std::vector<unsigned int>& v2In = B2.m_in[n2Idx];
159 
160  if(v2In.size() >= MAX_SEG_PER_NODE) continue;
161 
162  const std::array<float, 5>& n2pars = B2.m_params[n2Idx];
163 
164  float r2 = n2pars[3];
165 
166  float dr = r2 - r1;
167 
168  if(dr < minDeltaRadius) {
169  continue;
170  }
171 
172  float z2 = n2pars[4];
173 
174  float dz = z2 - z1;
175  float tau = dz/dr;
176  float ftau = std::fabs(tau);
177  if (ftau > 36.0) {
178  continue;
179  }
180 
181  if(ftau < n1pars[0]) continue;
182  if(ftau > n1pars[1]) continue;
183 
184  if(ftau < n2pars[0]) continue;
185  if(ftau > n2pars[1]) continue;
186 
187  if (m_doubletFilterRZ) {
188 
189  float z0 = z1 - r1*tau;
190 
191  if(z0 < min_z0 || z0 > max_z0) continue;
192 
193  float zouter = z0 + maxOuterRadius*tau;
194 
195  if(zouter < cut_zMinU || zouter > cut_zMaxU) continue;
196  }
197 
198  float curv = (phi2-phi1)/dr;
199  float abs_curv = std::abs(curv);
200 
201  if(ftau < 4.0) {//eta = 2.1
202  if(abs_curv > maxKappa_low_eta) {
203  continue;
204  }
205  }
206  else {
207  if(abs_curv > maxKappa_high_eta) {
208  continue;
209  }
210  }
211 
212  float exp_eta = std::sqrt(1+tau*tau)-tau;
213 
214  if (m_matchBeforeCreate) {//match edge candidate against edges incoming to n2
215 
216  bool isGood = v2In.size() <= 2;//we must have enough incoming edges to decide
217 
218  if(!isGood) {
219 
220  float uat_1 = 1.0f/exp_eta;
221 
222  for(const auto& n2_in_idx : v2In) {
223 
224  float tau2 = edgeStorage.at(n2_in_idx).m_p[0];
225  float tau_ratio = tau2*uat_1 - 1.0f;
226 
227  if(std::fabs(tau_ratio) > cut_tau_ratio_max){//bad match
228  continue;
229  }
230  isGood = true;//good match found
231  break;
232  }
233  }
234 
235  if(!isGood) {//no match found, skip creating [n1 <- n2] edge
236  continue;
237  }
238  }
239 
240  float dPhi2 = curv*r2;
241  float dPhi1 = curv*r1;
242 
243  if(nEdges < m_nMaxEdges) {
244 
245  edgeStorage.emplace_back(B1.m_vn[n1Idx], B2.m_vn[n2Idx], exp_eta, curv, phi1 + dPhi1);
246 
247  if(v1In.size() < MAX_SEG_PER_NODE) v1In.push_back(nEdges);
248 
249  int outEdgeIdx = nEdges;
250 
251  float uat_2 = 1/exp_eta;
252  float Phi2 = phi2 + dPhi2;
253  float curv2 = curv;
254 
255  for(const auto& inEdgeIdx : v2In) {//looking for neighbours of the new edge
256 
257  TrigFTF_GNNR3_Edge* pS = &(edgeStorage.at(inEdgeIdx));
258 
259  if(pS->m_nNei >= N_SEG_CONNS) continue;
260 
261  float tau_ratio = pS->m_p[0]*uat_2 - 1.0f;
262 
263  if(std::abs(tau_ratio) > cut_tau_ratio_max){//bad match
264  continue;
265  }
266 
267  float dPhi = Phi2 - pS->m_p[2];
268 
269  if(dPhi<-M_PI) dPhi += M_2PI;
270  else if(dPhi>M_PI) dPhi -= M_2PI;
271 
272  if(dPhi < -cut_dphi_max || dPhi > cut_dphi_max) {
273  continue;
274  }
275 
276  float dcurv = curv2 - pS->m_p[1];
277 
278  if(dcurv < -cut_dcurv_max || dcurv > cut_dcurv_max) {
279  continue;
280  }
281 
282  pS->m_vNei[pS->m_nNei++] = outEdgeIdx;
283 
284  nConnections++;
285 
286  }
287  nEdges++;
288  }
289  } //loop over n2 (outer) nodes
290  } //loop over n1 (inner) nodes
291  } //loop over bins in Layer 2
292  } //loop over bin groups
293 
294  return std::make_pair(nEdges, nConnections);
295 }

◆ createGraphNodes()

void TrigInDetR3TrackSeedingTool::createGraphNodes ( const SpacePointCollection spColl,
std::vector< GNNR3_Node > &  tmpColl,
std::vector< const Trk::SpacePoint * > &  vSP,
unsigned short  layer,
float  shift_x,
float  shift_y 
) const
protected

Definition at line 634 of file TrigInDetR3TrackSeedingTool.cxx.

634  {
635 
636  tmpColl.resize(spColl->size(), GNNR3_Node(layer));//all nodes belong to the same layer
637 
638  int idx = 0;
639  int init_size = vSP.size();
640  for(const auto sp : *spColl) {
641  const auto& pos = sp->globalPosition();
642  vSP.emplace_back(sp);
643  float xs = pos.x() - shift_x;
644  float ys = pos.y() - shift_y;
645  float zs = pos.z();
646  tmpColl[idx].m_x = xs;
647  tmpColl[idx].m_y = ys;
648  tmpColl[idx].m_z = zs;
649  tmpColl[idx].m_r = std::sqrt(xs*xs + ys*ys);
650  tmpColl[idx].m_phi = std::atan2(ys,xs);
651  tmpColl[idx].m_idx = init_size + idx;
652 
653  const InDet::PixelCluster* pCL = dynamic_cast<const InDet::PixelCluster*>(sp->clusterList().first);
654  if(pCL != nullptr){
655  tmpColl[idx].m_pcw = pCL->width().z();
656  }
657 
658  idx++;
659  }
660 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ DeclareInterfaceID()

ITrigInDetTrackSeedingTool::DeclareInterfaceID ( ITrigInDetTrackSeedingTool  ,
,
 
)
inherited

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ finalize()

StatusCode TrigInDetR3TrackSeedingTool::finalize ( )
overridevirtual

Reimplemented from SeedingToolBase.

Definition at line 70 of file TrigInDetR3TrackSeedingTool.cxx.

70  {
72 }

◆ findSeeds()

TrigInDetTrackSeedingResult TrigInDetR3TrackSeedingTool::findSeeds ( const IRoiDescriptor internalRoI,
std::vector< TrigInDetTracklet > &  output,
const EventContext &  ctx 
) const
finaloverridevirtual

Implements ITrigInDetTrackSeedingTool.

Definition at line 75 of file TrigInDetR3TrackSeedingTool.cxx.

75  {
76 
78 
79  output.clear();
80 
82  const Amg::Vector3D &vertex = beamSpotHandle->beamPos();
83  float shift_x = vertex.x() - beamSpotHandle->beamTilt(0)*vertex.z();
84  float shift_y = vertex.y() - beamSpotHandle->beamTilt(1)*vertex.z();
85 
86  std::unique_ptr<GNNR3_DataStorage> storage = std::make_unique<GNNR3_DataStorage>(*m_geo);
87 
88  int nPixels = 0;
89  int nStrips = 0;
90 
91  const SpacePointContainer* sctSpacePointsContainer = nullptr;
92  const SpacePointContainer* pixelSpacePointsContainer = nullptr;
93 
94  std::map<short, std::vector<IdentifierHash> > detIdMap;//relates global detector layer ID to constituent detector elements
95 
96  if (m_useSctSpacePoints) {
97 
99 
100  if(!sctHandle.isValid()) {
101  ATH_MSG_WARNING("Invalid Strip Spacepoints handle: "<<sctHandle);
102  return seedStats;
103 
104  }
105 
106  sctSpacePointsContainer = sctHandle.ptr();
107 
108  std::vector<IdentifierHash> listOfSctIds;
109  m_regsel_sct->lookup(ctx)->HashIDList( internalRoI, listOfSctIds );
110 
111  const std::vector<short>* h2l = m_layerNumberTool->sctLayers();
112 
113  for(const auto& hashId : listOfSctIds) {
114 
115  short layerIndex = h2l->at(static_cast<int>(hashId));
116 
117  auto it = detIdMap.find(layerIndex);
118  if(it != detIdMap.end()) (*it).second.push_back(hashId);
119  else {
120  std::vector<IdentifierHash> v = {hashId};
121  detIdMap.insert(std::make_pair(layerIndex,v));
122  }
123  }
124  }
125 
126  if (m_usePixelSpacePoints) {
127 
129 
130  if(!pixHandle.isValid()) {
131  ATH_MSG_WARNING("Invalid Pixel Spacepoints handle: "<<pixHandle);
132  return seedStats;
133  }
134 
135  pixelSpacePointsContainer = pixHandle.ptr();
136 
137  std::vector<IdentifierHash> listOfPixIds;
138 
139  m_regsel_pix->lookup(ctx)->HashIDList( internalRoI, listOfPixIds );
140 
141  const std::vector<short>* h2l = m_layerNumberTool->pixelLayers();
142 
143  for(const auto& hashId : listOfPixIds) {
144 
145  short layerIndex = h2l->at(static_cast<int>(hashId));
146 
147  auto it = detIdMap.find(layerIndex);
148  if(it != detIdMap.end()) (*it).second.push_back(hashId);
149  else {
150  std::vector<IdentifierHash> v = {hashId};
151  detIdMap.insert(std::make_pair(layerIndex,v));
152  }
153  }
154  }
155 
156  if(!m_useGPU) {
157 
158  std::unique_ptr<GNNR3_DataStorage> storage = std::make_unique<GNNR3_DataStorage>(*m_geo);
159 
160  std::vector<const Trk::SpacePoint*> vSP;
161 
162  vSP.reserve(m_nMaxEdges);
163 
164  std::vector<std::vector<GNNR3_Node> > trigSpStorage[2];
165 
166  trigSpStorage[1].resize(m_layerNumberTool->sctLayers()->size());
167 
168  trigSpStorage[0].resize(m_layerNumberTool->pixelLayers()->size());
169 
170  for(const auto& lColl : detIdMap) {
171 
172  short layerIndex = lColl.first;
173 
174  int layerKey = m_geo->getTrigFTF_GNNR3_LayerByIndex(layerIndex)->m_layer.m_subdet;
175 
176  bool isPixel = layerKey > 20000;
177 
178  auto pCont = isPixel ? pixelSpacePointsContainer : sctSpacePointsContainer;
179 
180  int contIdx= isPixel ? 0 : 1;
181 
182  int nNewNodes = 0;
183 
184  for(const auto& idx : lColl.second) {
185 
186  std::vector<GNNR3_Node>& tmpColl = trigSpStorage[contIdx].at(static_cast<int>(idx));
187 
188  auto input_coll = pCont->indexFindPtr(idx);
189 
190  if(input_coll == nullptr) continue;
191 
192  createGraphNodes(input_coll, tmpColl, vSP, layerIndex, shift_x, shift_y);//TO-DO: if(m_useBeamTilt) SP full transform functor
193 
194  nNewNodes += (isPixel) ? storage->loadPixelGraphNodes(layerIndex, tmpColl, m_useML) : storage->loadStripGraphNodes(layerIndex, tmpColl);
195  }
196 
197  if(isPixel) nPixels += nNewNodes;
198  else nStrips += nNewNodes;
199  }
200 
201  seedStats.m_nPixelSPs = nPixels;
202  seedStats.m_nStripSPs = nStrips;
203 
204  storage->sortByPhi();
205  storage->initializeNodes(m_useML);
206  storage->generatePhiIndexing(1.5*m_phiSliceWidth);
207 
208  std::vector<GNNR3_Edge> edgeStorage;
209 
210  std::pair<int, int> graphStats = buildTheGraph(internalRoI, storage, edgeStorage);
211 
212  ATH_MSG_DEBUG("Created graph with "<<graphStats.first<<" edges and "<<graphStats.second<< " edge links");
213 
214  seedStats.m_nGraphEdges = graphStats.first;
215  seedStats.m_nEdgeLinks = graphStats.second;
216 
217  if(graphStats.second == 0) return seedStats;
218 
219  int maxLevel = runCCA(graphStats.first, edgeStorage);
220 
221  ATH_MSG_DEBUG("Reached Level "<<maxLevel<<" after GNN iterations");
222 
223  int minLevel = 3;//a triplet + 1 confirmation
224 
225  if(m_LRTmode) {
226  minLevel = 2;//a triplet
227  }
228 
229  if(maxLevel < minLevel) return seedStats;
230 
231  std::vector<GNNR3_Edge*> vSeeds;
232 
233  vSeeds.reserve(graphStats.first/2);
234 
235  for(int edgeIndex=0;edgeIndex<graphStats.first;edgeIndex++) {
236  GNNR3_Edge* pS = &(edgeStorage.at(edgeIndex));
237 
238  if(pS->m_level < minLevel) continue;
239 
240  vSeeds.push_back(pS);
241  }
242 
243  if(vSeeds.empty()) return seedStats;
244 
245  std::sort(vSeeds.begin(), vSeeds.end(), GNNR3_Edge::CompareLevel());
246 
247  //backtracking
248 
249  TrigFTF_GNNR3_TrackingFilter tFilter(m_layerGeometry, edgeStorage);
250 
251  output.reserve(vSeeds.size());
252 
253  for(auto pS : vSeeds) {
254 
255  if(pS->m_level == -1) continue;
256 
257  TrigFTF_GNNR3_EdgeState rs(false);
258 
259  tFilter.followTrack(pS, rs);
260 
261  if(!rs.m_initialized) {
262  continue;
263  }
264 
265  if(static_cast<int>(rs.m_vs.size()) < minLevel) continue;
266 
267  std::vector<const GNNR3_Node*> vN;
268 
269  for(std::vector<GNNR3_Edge*>::reverse_iterator sIt=rs.m_vs.rbegin();sIt!=rs.m_vs.rend();++sIt) {
270 
271  (*sIt)->m_level = -1;//mark as collected
272 
273  if(sIt == rs.m_vs.rbegin()) {
274  vN.push_back((*sIt)->m_n1);
275  }
276  vN.push_back((*sIt)->m_n2);
277  }
278 
279  if(vN.size()<3) continue;
280 
281  unsigned int lastIdx = output.size();
282  output.emplace_back(rs.m_J);
283 
284  for(const auto& n : vN) {
285  output[lastIdx].addSpacePoint(vSP[n->m_idx]);
286  }
287  }
288 
289  ATH_MSG_DEBUG("Found "<<output.size()<<" tracklets");
290  }
291 #if 0
292  else {//GPU-accelerated graph building
293 
294 
295  //1. data export
296 
297  std::vector<const Trk::SpacePoint*> vSP;
298  std::vector<short> vL;
299 
300  vSP.reserve(TrigAccel::ITk::GBTS_MAX_NUMBER_SPACEPOINTS);
301  vL.reserve(TrigAccel::ITk::GBTS_MAX_NUMBER_SPACEPOINTS);
302 
303  std::unique_ptr<TrigAccel::DATA_EXPORT_BUFFER> dataBuffer = std::unique_ptr<TrigAccel::DATA_EXPORT_BUFFER>(new TrigAccel::DATA_EXPORT_BUFFER(5000));
304 
305  size_t dataTypeSize = sizeof(TrigAccel::ITk::GRAPH_MAKING_INPUT_DATA);
306  const size_t bufferOffset = 256;
307  size_t totalSize = bufferOffset+dataTypeSize;//make room for the header
308  if(!dataBuffer->fit(totalSize)) dataBuffer->reallocate(totalSize);
309 
310  TrigAccel::ITk::GRAPH_MAKING_INPUT_DATA* pJobData = reinterpret_cast<TrigAccel::ITk::GRAPH_MAKING_INPUT_DATA*>(dataBuffer->m_buffer + bufferOffset);
311 
312  unsigned int spIdx = 0;
313  int sp_offset = 0;
314  int nLayers = 0;
315  int MaxEtaBin = 0;
316  int nEtaBins = 0;
317 
318  for(const auto& lColl : detIdMap) {
319 
320  short layerIndex = lColl.first;
321 
322  const TrigFTF_GNNR3_Layer* pL = m_geo->getTrigFTF_GNNR3_LayerByIndex(layerIndex);
323 
324  int layerKey = pL->m_layer.m_subdet;
325 
326  bool isPixel = layerKey > 20000;
327  bool isBarrel = (pL->m_layer.m_type == 0);
328 
329  auto pCont = isPixel ? pixelSpacePointsContainer : sctSpacePointsContainer;
330 
331  pJobData->m_layerIdx[nLayers] = layerIndex;
332 
333  pJobData->m_layerInfo[4*nLayers ] = spIdx;//layerInfo.x
334  pJobData->m_layerInfo[4*nLayers + 2] = pL->num_bins();//layerInfo.z
335  pJobData->m_layerInfo[4*nLayers + 3] = pL->m_bins[0];//layerInfo.w
336 
337  pJobData->m_layerGeo[2*nLayers ] = pL->m_minEta;//layerGeo.x
338  pJobData->m_layerGeo[2*nLayers + 1] = pL->m_etaBin;//layerGeo.y
339 
340  nEtaBins += pL->m_bins.size();
341 
342  for(auto b : pL->m_bins) {
343  if(b > MaxEtaBin) MaxEtaBin = b;
344  }
345 
346  for(const auto& idx : lColl.second) {
347 
348  auto input_coll = pCont->indexFindPtr(idx);
349 
350  if(input_coll == nullptr) continue;
351 
352  for(const auto sp : *input_coll) {
353 
354  float cw = -1.0;
355 
356  const InDet::PixelCluster* pCL = dynamic_cast<const InDet::PixelCluster*>(sp->clusterList().first);
357  if(pCL != nullptr) {
358  cw = pCL->width().widthPhiRZ().y();
359  if(!isBarrel && m_useML) {
360  if(cw > 0.2) continue;
361  cw = -1.0;//set it to -1 so that it can be skipped later in the ML code on GPU
362  }
363  }
364 
365  vSP.emplace_back(sp);
366  vL.emplace_back(layerIndex);
367 
368  const auto& p = sp->globalPosition();
369 
370  float params[4] = {(float)(p.x() - shift_x), float(p.y() - shift_y), (float)(p.z()), cw};
371 
372  memcpy(&pJobData->m_params[sp_offset], &params[0], sizeof(params));
373 
374  sp_offset += 4;
375  spIdx++;
376  if(spIdx >= TrigAccel::ITk::GBTS_MAX_NUMBER_SPACEPOINTS) break;
377  }
378  if(spIdx >= TrigAccel::ITk::GBTS_MAX_NUMBER_SPACEPOINTS) break;
379  }
380 
381  pJobData->m_layerInfo[4*nLayers + 1] = spIdx;//layerInfo.y
382 
383  if (isPixel) nPixels += spIdx - pJobData->m_layerInfo[4*nLayers];
384  else nStrips += spIdx - pJobData->m_layerInfo[4*nLayers];
385 
386  nLayers++;
387  }
388 
389  pJobData->m_nSpacepoints = spIdx;
390  pJobData->m_nLayers = nLayers;
391  pJobData->m_nEtaBins = nEtaBins;
392  pJobData->m_maxEtaBin = MaxEtaBin;
393  pJobData->m_nMaxEdges = m_nMaxEdges;
394 
395  //load bin pairs
396 
397  int pairIdx = 0;
398 
399  for(const auto& bg : m_geo->bin_groups()) {//loop over bin groups
400 
401  int bin1_idx = bg.first;
402 
403  for(const auto& bin2_idx : bg.second) {
404  pJobData->m_bin_pairs[2*pairIdx ] = bin1_idx;
405  pJobData->m_bin_pairs[2*pairIdx+1] = bin2_idx;
406  pairIdx++;
407  }
408  }
409 
410  pJobData->m_nBinPairs = pairIdx;
411 
412  //add algorithm parameters
413 
414  const float ptCoeff = 0.29997*1.9972/2.0;// ~0.3*B/2 - assuming nominal field of 2*T
415 
416  float tripletPtMin = 0.8*m_minPt;//correction due to limited pT resolution
417 
418  float maxCurv = ptCoeff/tripletPtMin;
419 
420  const float min_deltaPhi = 0.001;
421  const float dphi_coeff = 0.68*maxCurv;
422  const float cut_dphi_max = m_LRTmode ? 0.07 : 0.012;
423  const float cut_dcurv_max = m_LRTmode ? 0.015 : 0.001;
424  const float cut_tau_ratio_max = m_LRTmode ? 0.015 : 0.007;
425  const float min_z0 = m_LRTmode ? -600.0 : internalRoI.zedMinus();
426  const float max_z0 = m_LRTmode ? 600.0 : internalRoI.zedPlus();
427 
428  const float maxOuterRadius = m_LRTmode ? 1050.0 : 550.0;
429  const float minDeltaRadius = 2.0;
430 
431  const float cut_zMinU = min_z0 + maxOuterRadius*internalRoI.dzdrMinus();
432  const float cut_zMaxU = max_z0 + maxOuterRadius*internalRoI.dzdrPlus();
433 
434  const float maxKappa_high_eta = m_LRTmode ? 1.0*maxCurv : std::sqrt(0.8)*maxCurv;
435  const float maxKappa_low_eta = m_LRTmode ? 1.0*maxCurv : std::sqrt(0.6)*maxCurv;
436 
437  pJobData->m_algo_params[0] = min_deltaPhi;
438  pJobData->m_algo_params[1] = dphi_coeff;
439  pJobData->m_algo_params[2] = minDeltaRadius;
440  pJobData->m_algo_params[3] = min_z0;
441  pJobData->m_algo_params[4] = max_z0;
442  pJobData->m_algo_params[5] = maxOuterRadius;
443  pJobData->m_algo_params[6] = cut_zMinU;
444  pJobData->m_algo_params[7] = cut_zMaxU;
445  pJobData->m_algo_params[8] = maxKappa_low_eta;
446  pJobData->m_algo_params[9] = maxKappa_high_eta;
447  pJobData->m_algo_params[10]= cut_dphi_max;
448  pJobData->m_algo_params[11]= cut_dcurv_max;
449  pJobData->m_algo_params[12]= cut_tau_ratio_max;
450 
451  int minLevel = 3;//a triplet + 1 confirmation
452 
453  if(m_LRTmode) {
454  minLevel = 2;//a triplet
455  }
456 
457  pJobData->m_minLevel = minLevel;
458 
460 
461  seedStats.m_nPixelSPs = nPixels;
462  seedStats.m_nStripSPs = nStrips;
463 
464  ATH_MSG_DEBUG("Loaded "<<nPixels<< " Pixel Spacepoints and "<<nStrips<< " Strip SpacePoints");
465 
466  std::shared_ptr<TrigAccel::OffloadBuffer> pBuff = std::make_shared<TrigAccel::OffloadBuffer>(dataBuffer.get());
467 
468  std::unique_ptr<TrigAccel::Work> pWork = std::unique_ptr<TrigAccel::Work>(m_accelSvc->createWork(TrigAccel::InDetJobControlCode::RUN_GBTS, pBuff));
469 
470  if(!pWork) {
471  ATH_MSG_WARNING("Failed to create a work item for task "<<TrigAccel::InDetJobControlCode::RUN_GBTS);
472  return seedStats;
473  }
474 
475  ATH_MSG_DEBUG("Work item created for task "<<TrigAccel::InDetJobControlCode::RUN_GBTS);
476 
477  bool workSuccess = pWork->run();
478  if(!workSuccess) {
479  ATH_MSG_WARNING("Work item failed to complete");
480  return seedStats;
481  }
482 
483  std::shared_ptr<TrigAccel::OffloadBuffer> pOutput = pWork->getOutput();
484 
486  TrigAccel::ITk::COMPRESSED_GRAPH* pGraph = &pGraphAndSeeds->m_CompressedGraph;
487  TrigAccel::ITk::OUTPUT_SEEDS* pSeeds = &pGraphAndSeeds->m_OutputSeeds;
488 
490  //converting tracklet into GBTS-CPU format
491  for(unsigned int seed=0; seed<pSeeds->m_nSeeds; seed++) {
492 
493  unsigned int lastIdx = output.size();
494  output.emplace_back(pSeeds->m_seedsArray[seed].m_Q);
495  for(int node=0; node<pSeeds->m_seedsArray[seed].m_size; node++) {
496  output[lastIdx].addSpacePoint(vSP[pSeeds->m_seedsArray[seed].m_nodes[node]]);
497  }
498  }
499  }
500  else {
501 
502  unsigned int nEdges = pGraph->m_nEdges;
503  unsigned int nMaxNei = pGraph->m_nMaxNeighbours;
504 
505  //populating the edgeStorage
506 
507  std::vector<GNNR3_Node> nodes;
508 
509  nodes.reserve(vSP.size());
510 
511  for(unsigned int idx = 0;idx < vSP.size(); idx++) {
512 
513  nodes.emplace_back(vL[idx]);
514 
515  const auto& pos = vSP[idx]->globalPosition();
516  float xs = pos.x() - shift_x;
517  float ys = pos.y() - shift_y;
518  float zs = pos.z();
519 
520  nodes[idx].m_x = xs;
521  nodes[idx].m_y = ys;
522  nodes[idx].m_z = zs;
523  nodes[idx].m_r = std::sqrt(xs*xs + ys*ys);
524 
525  nodes[idx].m_idx = idx;
526 
527  }
528 
529  std::vector<GNNR3_Edge> edgeStorage;
530 
531  std::pair<int, int> graphStats(0,0);
532 
533  edgeStorage.resize(nEdges);
534 
535  unsigned int edgeSize = nMaxNei + 1 + 2;//neigbours, num_neighbours, 2 nodes
536 
537  for(unsigned int idx=0;idx<nEdges;idx++) {
538  unsigned int pos = idx*edgeSize;
539 
540  int node1Idx = pGraph->m_graphArray[pos + TrigAccel::ITk::node1];
541  int node2Idx = pGraph->m_graphArray[pos + TrigAccel::ITk::node2];
542  int nNei = pGraph->m_graphArray[pos + TrigAccel::ITk::nNei];
543 
544  if(nNei > N_SEG_CONNS) nNei = N_SEG_CONNS;
545 
546  edgeStorage[idx].m_n1 = &nodes[node1Idx];
547  edgeStorage[idx].m_n2 = &nodes[node2Idx];
548  edgeStorage[idx].m_level = 1;
549  edgeStorage[idx].m_nNei = nNei;
550  for(int k=0;k<nNei;k++) {
551  edgeStorage[idx].m_vNei[k] = pGraph->m_graphArray[pos + TrigAccel::ITk::nei_idx_start + k];
552  }
553  }
554 
555  graphStats.first = nEdges;
556  graphStats.second = pGraph->m_nLinks;
557 
558  //run the rest of the GBTS workflow
559 
560  int maxLevel = runCCA(graphStats.first, edgeStorage);
561 
562  ATH_MSG_DEBUG("Reached Level "<<maxLevel<<" after GNN iterations");
563 
564  if(maxLevel < minLevel) return seedStats;
565 
566  std::vector<GNNR3_Edge*> vSeeds;
567 
568  vSeeds.reserve(graphStats.first/2);
569 
570  for(int edgeIndex=0;edgeIndex<graphStats.first;edgeIndex++) {
571  GNNR3_Edge* pS = &(edgeStorage.at(edgeIndex));
572 
573  if(pS->m_level < minLevel) continue;
574 
575  vSeeds.push_back(pS);
576  }
577 
578  if(vSeeds.empty()) return seedStats;
579 
580  std::sort(vSeeds.begin(), vSeeds.end(), GNNR3_Edge::CompareLevel());
581 
582  //backtracking
583 
584  TrigFTF_GNNR3_TrackingFilter tFilter(m_layerGeometry, edgeStorage);
585 
586  output.reserve(vSeeds.size());
587 
588  for(auto pS : vSeeds) {
589 
590  if(pS->m_level == -1) continue;
591 
592  TrigFTF_GNNR3_EdgeState rs(false);
593 
594  tFilter.followTrack(pS, rs);
595 
596  if(!rs.m_initialized) {
597  continue;
598  }
599 
600  if(static_cast<int>(rs.m_vs.size()) < minLevel) continue;
601 
602  std::vector<const GNNR3_Node*> vN;
603 
604  for(std::vector<GNNR3_Edge*>::reverse_iterator sIt=rs.m_vs.rbegin();sIt!=rs.m_vs.rend();++sIt) {
605 
606  (*sIt)->m_level = -1;//mark as collected
607 
608  if(sIt == rs.m_vs.rbegin()) {
609  vN.push_back((*sIt)->m_n1);
610  }
611  vN.push_back((*sIt)->m_n2);
612  }
613 
614  if(vN.size()<3) continue;
615 
616  unsigned int lastIdx = output.size();
617  output.emplace_back(rs.m_J);
618 
619  for(const auto& n : vN) {
620  output[lastIdx].addSpacePoint(vSP[n->m_idx]);
621  }
622  }
623  }
624 
625  ATH_MSG_DEBUG("Found "<<output.size()<<" tracklets");
626  }
627 
628 #endif
629 
630  return seedStats;
631 
632 }

◆ initialize()

StatusCode TrigInDetR3TrackSeedingTool::initialize ( )
overridevirtual

Reimplemented from SeedingToolBase.

Definition at line 34 of file TrigInDetR3TrackSeedingTool.cxx.

34  {
35 
37 
38  ATH_CHECK(m_regsel_pix.retrieve());
39  ATH_CHECK(m_regsel_sct.retrieve());
40 
42 
43 #if 0
44  if(m_useGPU) {//for GPU offloading
45  ATH_CHECK(m_accelSvc.retrieve());
46  ATH_CHECK(m_accelSvc->isReady());
47  }
48 #endif
49 
51  ATH_MSG_FATAL("Both usePixelSpacePoints and useSctSpacePoints set to False. At least one needs to be True");
52  return StatusCode::FAILURE;
53  }
54 
55  if (!m_useSctSpacePoints) ATH_MSG_INFO("Only using Pixel spacepoints => Pixel seeds only");
56 
57  if (!m_usePixelSpacePoints) ATH_MSG_INFO("Only using SCT spacepoints => Strip seeds only");
58 
59  if (m_usePixelSpacePoints && m_useSctSpacePoints) ATH_MSG_INFO("Using SCT and Pixel spacepoints");
60 
62 
64 
65  ATH_MSG_INFO("TrigInDetR3TrackSeedingTool initialized with " << m_useGPU);
66 
67  return StatusCode::SUCCESS;
68 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ runCCA() [1/2]

int SeedingToolBase::runCCA ( int  nEdges,
std::vector< GNN_Edge > &  edgeStorage 
) const
protectedinherited

Definition at line 318 of file TrigInDetPattRecoTools/src/SeedingToolBase.cxx.

318  {
319 
320  const int maxIter = 15;
321 
322  int maxLevel = 0;
323 
324  int iter = 0;
325 
326  std::vector<TrigFTF_GNN_Edge*> v_old;
327 
328  for(int edgeIndex=0;edgeIndex<nEdges;edgeIndex++) {
329 
330  TrigFTF_GNN_Edge* pS = &(edgeStorage[edgeIndex]);
331  if(pS->m_nNei == 0) continue;
332 
333  v_old.push_back(pS);//TO-DO: increment level for segments as they already have at least one neighbour
334  }
335 
336  for(;iter<maxIter;iter++) {
337 
338  //generate proposals
339  std::vector<TrigFTF_GNN_Edge*> v_new;
340  v_new.clear();
341  v_new.reserve(v_old.size());
342 
343  for(auto pS : v_old) {
344 
345  int next_level = pS->m_level;
346 
347  for(int nIdx=0;nIdx<pS->m_nNei;nIdx++) {
348 
349  unsigned int nextEdgeIdx = pS->m_vNei[nIdx];
350 
351  TrigFTF_GNN_Edge* pN = &(edgeStorage[nextEdgeIdx]);
352 
353  if(pS->m_level == pN->m_level) {
354  next_level = pS->m_level + 1;
355  v_new.push_back(pS);
356  break;
357  }
358  }
359 
360  pS->m_next = next_level;//proposal
361  }
362 
363  //update
364 
365  int nChanges = 0;
366 
367  for(auto pS : v_new) {
368  if(pS->m_next != pS->m_level) {
369  nChanges++;
370  pS->m_level = pS->m_next;
371  if(maxLevel < pS->m_level) maxLevel = pS->m_level;
372  }
373  }
374 
375  if(nChanges == 0) break;
376 
377 
378  v_old = std::move(v_new);
379  v_new.clear();
380  }
381 
382  return maxLevel;
383 }

◆ runCCA() [2/2]

int SeedingToolBase::runCCA ( int  nEdges,
std::vector< GNNR3_Edge > &  edgeStorage 
) const
protectedinherited

Definition at line 297 of file TrigInDetR3PattRecoTools/src/SeedingToolBase.cxx.

297  {
298 
299  const int maxIter = 15;
300 
301  int maxLevel = 0;
302 
303  int iter = 0;
304 
305  std::vector<TrigFTF_GNNR3_Edge*> v_old;
306 
307  for(int edgeIndex=0;edgeIndex<nEdges;edgeIndex++) {
308 
309  TrigFTF_GNNR3_Edge* pS = &(edgeStorage[edgeIndex]);
310  if(pS->m_nNei == 0) continue;
311 
312  v_old.push_back(pS);//TO-DO: increment level for segments as they already have at least one neighbour
313  }
314 
315  for(;iter<maxIter;iter++) {
316 
317  //generate proposals
318  std::vector<TrigFTF_GNNR3_Edge*> v_new;
319  v_new.clear();
320  v_new.reserve(v_old.size());
321 
322  for(auto pS : v_old) {
323 
324  int next_level = pS->m_level;
325 
326  for(int nIdx=0;nIdx<pS->m_nNei;nIdx++) {
327 
328  unsigned int nextEdgeIdx = pS->m_vNei[nIdx];
329 
330  TrigFTF_GNNR3_Edge* pN = &(edgeStorage[nextEdgeIdx]);
331 
332  if(pS->m_level == pN->m_level) {
333  next_level = pS->m_level + 1;
334  v_new.push_back(pS);
335  break;
336  }
337  }
338 
339  pS->m_next = next_level;//proposal
340  }
341 
342  //update
343 
344  int nChanges = 0;
345 
346  for(auto pS : v_new) {
347  if(pS->m_next != pS->m_level) {
348  nChanges++;
349  pS->m_level = pS->m_next;
350  if(maxLevel < pS->m_level) maxLevel = pS->m_level;
351  }
352  }
353 
354  if(nChanges == 0) break;
355 
356 
357  v_old = std::move(v_new);
358  v_new.clear();
359  }
360 
361  return maxLevel;
362 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_atlasId

const AtlasDetectorID * SeedingToolBase::m_atlasId = nullptr
protectedinherited

Definition at line 45 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_beamSpotKey

SG::ReadCondHandleKey<InDet::BeamSpotData> TrigInDetR3TrackSeedingTool::m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
protected

Definition at line 56 of file TrigInDetR3TrackSeedingTool.h.

◆ m_connectionFile

StringProperty SeedingToolBase::m_connectionFile {this, "ConnectionFileName", "binTables_ITK_RUN4.txt"}
protectedinherited

Definition at line 62 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_connector [1/2]

std::unique_ptr<GNNR3_FasTrackConnector> SeedingToolBase::m_connector = nullptr
protectedinherited

◆ m_connector [2/2]

std::unique_ptr<GNN_FasTrackConnector> SeedingToolBase::m_connector = nullptr
protectedinherited

Definition at line 71 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doubletFilterRZ

BooleanProperty SeedingToolBase::m_doubletFilterRZ {this, "Doublet_FilterRZ", true}
protectedinherited

Definition at line 55 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_etaBinOverride

FloatProperty SeedingToolBase::m_etaBinOverride {this, "etaBin", 0.0f, "specify non-zero to override eta bin width from connection file (default 0.2 in createLinkingScheme.py)"}
protectedinherited

Definition at line 59 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_filter_phi

BooleanProperty SeedingToolBase::m_filter_phi {this, "DoPhiFiltering", true}
protectedinherited

Definition at line 49 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_geo [1/2]

std::unique_ptr<const TrigFTF_GNNR3_Geometry> SeedingToolBase::m_geo = nullptr
protectedinherited

◆ m_geo [2/2]

std::unique_ptr<const TrigFTF_GNN_Geometry> SeedingToolBase::m_geo = nullptr
protectedinherited

Definition at line 73 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_layerGeometry

std::vector< TrigInDetSiLayer > SeedingToolBase::m_layerGeometry
protectedinherited

Definition at line 72 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_layerNumberTool

ToolHandle< ITrigL2LayerNumberTool > SeedingToolBase::m_layerNumberTool {this, "layerNumberTool", "TrigL2LayerNumberToolITk"}
protectedinherited

Definition at line 43 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_LRTmode

BooleanProperty SeedingToolBase::m_LRTmode {this, "LRTMode",false}
protectedinherited

Definition at line 51 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_matchBeforeCreate

BooleanProperty SeedingToolBase::m_matchBeforeCreate {this, "MatchBeforeCreate", false}
protectedinherited

Definition at line 57 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_minPt

FloatProperty SeedingToolBase::m_minPt {this, "pTmin", 1000.0}
protectedinherited

Definition at line 58 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_nBufferEdges

IntegerProperty SeedingToolBase::m_nBufferEdges {this, "BufferEdges", 200000}
protectedinherited

Definition at line 61 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_nMaxEdges

IntegerProperty SeedingToolBase::m_nMaxEdges {this, "MaxGraphEdges", 2000000}
protectedinherited

Definition at line 60 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_nMaxPhiSlice

UnsignedIntegerProperty SeedingToolBase::m_nMaxPhiSlice {this, "nMaxPhiSlice", 53}
protectedinherited

Definition at line 54 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_phiSliceWidth

float SeedingToolBase::m_phiSliceWidth = 0.
protectedinherited

Definition at line 69 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_pixelId

const PixelID * SeedingToolBase::m_pixelId = nullptr
protectedinherited

Definition at line 47 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_pixelSpacePointsContainerKey

SG::ReadHandleKey<SpacePointContainer> TrigInDetR3TrackSeedingTool::m_pixelSpacePointsContainerKey {this, "PixelSP_ContainerName", "ITkPixelTrigSpacePoints"}
protected

Definition at line 63 of file TrigInDetR3TrackSeedingTool.h.

◆ m_regsel_pix

ToolHandle<IRegSelTool> TrigInDetR3TrackSeedingTool::m_regsel_pix { this, "RegSelTool_Pixel", "RegSelTool/RegSelTool_Pixel" }
protected

region selector tools

Definition at line 67 of file TrigInDetR3TrackSeedingTool.h.

◆ m_regsel_sct

ToolHandle<IRegSelTool> TrigInDetR3TrackSeedingTool::m_regsel_sct { this, "RegSelTool_SCT", "RegSelTool/RegSelTool_SCT" }
protected

Definition at line 68 of file TrigInDetR3TrackSeedingTool.h.

◆ m_sctId

const SCT_ID * SeedingToolBase::m_sctId = nullptr
protectedinherited

Definition at line 46 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_sctSpacePointsContainerKey

SG::ReadHandleKey<SpacePointContainer> TrigInDetR3TrackSeedingTool::m_sctSpacePointsContainerKey {this, "SCT_SP_ContainerName", "ITkStripTrigSpacePoints"}
protected

Definition at line 62 of file TrigInDetR3TrackSeedingTool.h.

◆ m_tau_ratio_cut

FloatProperty SeedingToolBase::m_tau_ratio_cut {this, "tau_ratio_cut", 0.007}
protectedinherited

Definition at line 67 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_useBeamTilt

BooleanProperty SeedingToolBase::m_useBeamTilt {this, "UseBeamTilt", false}
protectedinherited

Definition at line 50 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_useEtaBinning

BooleanProperty SeedingToolBase::m_useEtaBinning {this, "UseEtaBinning", true}
protectedinherited

Definition at line 56 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_useGPU

BooleanProperty TrigInDetR3TrackSeedingTool::m_useGPU {this, "UseGPU", false}
protected

Definition at line 72 of file TrigInDetR3TrackSeedingTool.h.

◆ m_useGPUseedExtraction

BooleanProperty SeedingToolBase::m_useGPUseedExtraction {this, "UseGPUseedExtraction", true}
protectedinherited

Definition at line 64 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_useML

BooleanProperty SeedingToolBase::m_useML {this, "useML", true}
protectedinherited

Definition at line 52 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_useOldTunings

BooleanProperty SeedingToolBase::m_useOldTunings {this, "UseOldTunings", false}
protectedinherited

Definition at line 65 of file TrigInDetPattRecoTools/src/SeedingToolBase.h.

◆ m_usePixelSpacePoints

BooleanProperty TrigInDetR3TrackSeedingTool::m_usePixelSpacePoints {this, "UsePixelSpacePoints", true}
protected

Definition at line 58 of file TrigInDetR3TrackSeedingTool.h.

◆ m_useSctSpacePoints

BooleanProperty TrigInDetR3TrackSeedingTool::m_useSctSpacePoints {this, "UseSctSpacePoints", false}
protected

Definition at line 59 of file TrigInDetR3TrackSeedingTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
TrigFTF_GNN_EtaBin
Definition: GNN_DataStorage.h:40
SeedingToolBase::m_layerGeometry
std::vector< TrigInDetSiLayer > m_layerGeometry
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:72
SeedingToolBase::m_matchBeforeCreate
BooleanProperty m_matchBeforeCreate
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:57
TrigAccel::ITk::GraphAndSeedsOutput::m_OutputSeeds
OUTPUT_SEEDS m_OutputSeeds
Definition: TrigITkAccelEDM.h:182
TrigInDetTrackSeedingResult::m_nStripSPs
int m_nStripSPs
Definition: TrigInDetTrackSeedingResult.h:12
TrigAccel::ITk::CompressedGraph::m_nEdges
unsigned int m_nEdges
Definition: TrigITkAccelEDM.h:157
TrigAccel::DataExportBuffer
Definition: DataExportBuffer.h:14
TrigAccel::ITk::GraphMakingInputData
Definition: TrigITkAccelEDM.h:126
TrigAccel::DataExportBuffer::fit
bool fit(size_t s)
Definition: DataExportBuffer.h:26
createLinkingScheme.iter
iter
Definition: createLinkingScheme.py:62
TrigFTF_GNN_EtaBin::m_in
std::vector< std::vector< unsigned int > > m_in
Definition: GNN_DataStorage.h:72
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
SeedingToolBase::initialize
virtual StatusCode initialize()
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.cxx:19
TrigFTF_GNNR3_Layer::m_layer
const TrigInDetSiLayer & m_layer
Definition: GNNR3_Geometry.h:30
StandaloneBunchgroupHandler.bg
bg
Definition: StandaloneBunchgroupHandler.py:241
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TCS::KFMET::nEtaBins
constexpr unsigned nEtaBins
Definition: KalmanMETCorrectionConstants.h:18
TrigAccel::DataExportBuffer::reallocate
void reallocate(size_t s)
Definition: DataExportBuffer.h:30
TrigAccel::ITk::GraphMakingInputData::m_layerIdx
int m_layerIdx[GBTS_MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:133
TrigAccel::Work::run
virtual bool run()=0
SG::ReadHandle< SpacePointContainer >
TrigAccel::ITk::OutputSeeds::m_nSeeds
unsigned int m_nSeeds
Definition: TrigITkAccelEDM.h:173
xAOD::deltaPhi
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
Definition: L2StandAloneMuon_v1.cxx:161
SeedingToolBase::buildTheGraph
std::pair< int, int > buildTheGraph(const IRoiDescriptor &, const std::unique_ptr< GNN_DataStorage > &, std::vector< GNN_Edge > &) const
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.cxx:71
InDet::SiWidth::widthPhiRZ
const Amg::Vector2D & widthPhiRZ() const
Definition: SiWidth.h:121
TrigFTF_GNN_Edge::m_vNei
unsigned int m_vNei[N_SEG_CONNS]
Definition: GNN_DataStorage.h:133
TrigFTF_GNNR3_Edge
Definition: GNNR3_DataStorage.h:106
TrigFTF_GNNR3_EtaBin::m_params
std::vector< std::array< float, 5 > > m_params
Definition: GNNR3_DataStorage.h:73
SeedingToolBase::m_nMaxEdges
IntegerProperty m_nMaxEdges
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:60
TrigAccel::Work::getOutput
virtual std::shared_ptr< OffloadBuffer > getOutput()=0
skel.it
it
Definition: skel.GENtoEVGEN.py:407
TrigFTF_GNNR3_EtaBin::getMaxBinRadius
float getMaxBinRadius() const
Definition: GNNR3_DataStorage.h:66
TrigFTF_GNNR3_TrackingFilter
Definition: GNNR3_TrackingFilter.h:44
TrigFTF_GNNR3_DataStorage::loadStripGraphNodes
int loadStripGraphNodes(short, const std::vector< TrigFTF_GNNR3_Node > &)
Definition: GNNR3_DataStorage.cxx:142
TrigFTF_GNNR3_Layer::m_etaBin
float m_etaBin
Definition: GNNR3_Geometry.h:37
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
TrigFTF_GNNR3_Edge::m_level
signed char m_level
Definition: GNNR3_DataStorage.h:128
TrigFTF_GNNR3_EtaBin::getMinBinRadius
float getMinBinRadius() const
Definition: GNNR3_DataStorage.h:62
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:111
TrigInDetR3TrackSeedingTool::m_regsel_sct
ToolHandle< IRegSelTool > m_regsel_sct
Definition: TrigInDetR3TrackSeedingTool.h:68
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
MCP::ScaleSmearParam::r2
@ r2
TrigFTF_GNNR3_EdgeState
Definition: GNNR3_TrackingFilter.h:11
IRoiDescriptor::dzdrMinus
virtual double dzdrMinus() const =0
return the gradients
TrigInDetR3TrackSeedingTool::createGraphNodes
void createGraphNodes(const SpacePointCollection *, std::vector< GNNR3_Node > &, std::vector< const Trk::SpacePoint * > &, unsigned short, float, float) const
Definition: TrigInDetR3TrackSeedingTool.cxx:634
TrigFTF_GNNR3_DataStorage::getEtaBin
TrigFTF_GNNR3_EtaBin & getEtaBin(int idx)
Definition: GNNR3_DataStorage.h:93
TrigAccel::RUN_GBTS
@ RUN_GBTS
Definition: TrigInDetAccelCodes.h:31
IRoiDescriptor::dzdrPlus
virtual double dzdrPlus() const =0
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
TrigFTF_GNNR3_Layer
Definition: GNNR3_Geometry.h:16
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
TrigFTF_GNNR3_Edge::m_next
signed char m_next
Definition: GNNR3_DataStorage.h:128
SeedingToolBase::GNNR3_Edge
TrigFTF_GNNR3_Edge GNNR3_Edge
Definition: TrigInDetR3PattRecoTools/src/SeedingToolBase.h:34
TrigAccel::ITk::GraphAndSeedsOutput
Definition: TrigITkAccelEDM.h:179
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
N_SEG_CONNS
#define N_SEG_CONNS
Definition: GNN_DataStorage.h:14
TrigFTF_GNNR3_DataStorage::loadPixelGraphNodes
int loadPixelGraphNodes(short, const std::vector< TrigFTF_GNNR3_Node > &, bool)
Definition: GNNR3_DataStorage.cxx:104
TrigFTF_GNN_EtaBin::empty
bool empty() const
Definition: GNN_DataStorage.h:56
TrigFTF_GNNR3_EtaBin::empty
bool empty() const
Definition: GNNR3_DataStorage.h:56
SeedingToolBase::m_useGPUseedExtraction
BooleanProperty m_useGPUseedExtraction
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:64
SeedingToolBase::GNNR3_Node
TrigFTF_GNNR3_Node GNNR3_Node
Definition: TrigInDetR3PattRecoTools/src/SeedingToolBase.h:32
TrigAccel::ITk::GraphAndSeedsOutput::m_CompressedGraph
COMPRESSED_GRAPH m_CompressedGraph
Definition: TrigITkAccelEDM.h:181
TrigInDetR3TrackSeedingTool::m_usePixelSpacePoints
BooleanProperty m_usePixelSpacePoints
Definition: TrigInDetR3TrackSeedingTool.h:58
TrigFTF_GNN_Edge::m_next
signed char m_next
Definition: GNN_DataStorage.h:128
TrigFTF_GNNR3_Layer::m_minEta
float m_minEta
Definition: GNNR3_Geometry.h:37
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
SeedingToolBase::SeedingToolBase
SeedingToolBase(const std::string &t, const std::string &n, const IInterface *p)
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:28
AthCommonDataStore
Definition: AthCommonDataStore.h:52
Generate_dsid_ranseed.seed
seed
Definition: Generate_dsid_ranseed.py:10
SeedingToolBase::m_LRTmode
BooleanProperty m_LRTmode
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:51
TrigFTF_GNN_Edge
Definition: GNN_DataStorage.h:106
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TrigAccel::ITk::GraphMakingInputData::m_nEtaBins
unsigned int m_nEtaBins
Definition: TrigITkAccelEDM.h:129
TrigFTF_GNNR3_DataStorage::initializeNodes
void initializeNodes(bool)
Definition: GNNR3_DataStorage.cxx:182
TrigAccel::ITk::GRAPH_MAKING_INPUT_DATA
struct TrigAccel::ITk::GraphMakingInputData GRAPH_MAKING_INPUT_DATA
TrigFTF_GNN_EtaBin::m_vPhiNodes
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
Definition: GNN_DataStorage.h:71
TrigAccel::ITk::OutputSeeds::m_seedsArray
std::unique_ptr< Tracklet[]> m_seedsArray
Definition: TrigITkAccelEDM.h:175
TrigFTF_GNN_Edge::m_level
signed char m_level
Definition: GNN_DataStorage.h:128
SeedingToolBase::m_minPt
FloatProperty m_minPt
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:58
beamspotman.n
n
Definition: beamspotman.py:729
TrigFTF_GNNR3_DataStorage::generatePhiIndexing
void generatePhiIndexing(float)
Definition: GNNR3_DataStorage.cxx:226
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
TauGNNUtils::Variables::Track::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:549
TrigAccel::ITk::GraphMakingInputData::m_params
float m_params[4 *GBTS_MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:131
TrigAccel::ITk::GraphMakingInputData::m_nSpacepoints
unsigned int m_nSpacepoints
Definition: TrigITkAccelEDM.h:129
SeedingToolBase::finalize
virtual StatusCode finalize()
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.cxx:66
TrigAccel::ITk::GraphMakingInputData::m_minLevel
int m_minLevel
Definition: TrigITkAccelEDM.h:149
TrigAccel::ITk::CompressedGraph::m_nLinks
unsigned int m_nLinks
Definition: TrigITkAccelEDM.h:160
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
hist_file_dump.f
f
Definition: hist_file_dump.py:140
MAX_SEG_PER_NODE
#define MAX_SEG_PER_NODE
Definition: GNN_DataStorage.h:13
TrigInDetR3TrackSeedingTool::m_pixelSpacePointsContainerKey
SG::ReadHandleKey< SpacePointContainer > m_pixelSpacePointsContainerKey
Definition: TrigInDetR3TrackSeedingTool.h:63
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
TrigAccel::ITk::GraphMakingInputData::m_maxEtaBin
unsigned int m_maxEtaBin
Definition: TrigITkAccelEDM.h:129
TrigFTF_GNN_DataStorage::getEtaBin
TrigFTF_GNN_EtaBin & getEtaBin(int idx)
Definition: GNN_DataStorage.h:93
TrigAccel::ITk::GraphMakingInputData::m_bin_pairs
int m_bin_pairs[2 *GBTS_MAX_ETA_BIN_PAIR]
Definition: TrigITkAccelEDM.h:145
TrigFTF_GNNR3_EtaBin::m_vn
std::vector< const TrigFTF_GNNR3_Node * > m_vn
Definition: GNNR3_DataStorage.h:70
TrigFTF_GNN_EtaBin::getMaxBinRadius
float getMaxBinRadius() const
Definition: GNN_DataStorage.h:66
TrigFTF_GNNR3_Layer::m_bins
std::vector< int > m_bins
Definition: GNNR3_Geometry.h:31
SeedingToolBase::m_doubletFilterRZ
BooleanProperty m_doubletFilterRZ
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:55
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
TrigInDetSiLayer::m_type
int m_type
Definition: TrigInDetSiLayer.h:11
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
merge.output
output
Definition: merge.py:16
SeedingToolBase::m_layerNumberTool
ToolHandle< ITrigL2LayerNumberTool > m_layerNumberTool
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:43
MuonGM::nStrips
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelTgcTest.cxx:46
SeedingToolBase::m_useEtaBinning
BooleanProperty m_useEtaBinning
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:56
TrigAccel::ITk::GraphMakingInputData::m_layerInfo
int m_layerInfo[4 *GBTS_MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:137
TrigAccel::ITk::GraphMakingInputData::m_nMaxEdges
unsigned int m_nMaxEdges
Definition: TrigITkAccelEDM.h:129
SeedingToolBase::m_geo
std::unique_ptr< const TrigFTF_GNN_Geometry > m_geo
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:73
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
TrigInDetTrackSeedingResult::m_nPixelSPs
int m_nPixelSPs
Definition: TrigInDetTrackSeedingResult.h:10
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TrigInDetR3TrackSeedingTool::m_useGPU
BooleanProperty m_useGPU
Definition: TrigInDetR3TrackSeedingTool.h:72
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:76
TrigAccel::ITk::GraphMakingInputData::m_layerGeo
float m_layerGeo[2 *GBTS_MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:141
SeedingToolBase::m_phiSliceWidth
float m_phiSliceWidth
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:69
TrigInDetTrackSeedingResult
Definition: TrigInDetTrackSeedingResult.h:8
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
TrigFTF_GNNR3_Edge::m_vNei
unsigned int m_vNei[N_SEG_CONNS]
Definition: GNNR3_DataStorage.h:133
TrigAccel::ITk::GraphMakingInputData::m_nBinPairs
unsigned int m_nBinPairs
Definition: TrigITkAccelEDM.h:129
TrigInDetTrackSeedingResult::m_nGraphEdges
int m_nGraphEdges
Definition: TrigInDetTrackSeedingResult.h:12
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
TrigFTF_GNNR3_DataStorage::sortByPhi
void sortByPhi()
Definition: GNNR3_DataStorage.cxx:177
TrigAccel::ITk::CompressedGraph::m_graphArray
std::unique_ptr< int[]> m_graphArray
Definition: TrigITkAccelEDM.h:161
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
TrigFTF_GNN_Edge::m_nNei
unsigned char m_nNei
Definition: GNN_DataStorage.h:130
TrigFTF_GNNR3_EtaBin::m_vPhiNodes
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
Definition: GNNR3_DataStorage.h:71
TrigAccel::DataExportBuffer::m_buffer
char * m_buffer
Definition: DataExportBuffer.h:57
InDet::PixelCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelCluster.h:49
python.PyAthena.v
v
Definition: PyAthena.py:154
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
TrigAccel::ITk::GraphMakingInputData::m_useGPUseedExtraction
bool m_useGPUseedExtraction
Definition: TrigITkAccelEDM.h:151
InDet::SiCluster::width
const InDet::SiWidth & width() const
return width class reference
a
TList * a
Definition: liststreamerinfos.cxx:10
TrigAccel::OffloadBuffer::m_rawBuffer
unsigned char * m_rawBuffer
Definition: OffloadBuffer.h:39
h
TrigAccel::ITk::GraphMakingInputData::m_algo_params
float m_algo_params[32]
Definition: TrigITkAccelEDM.h:147
TrigInDetR3TrackSeedingTool::m_useSctSpacePoints
BooleanProperty m_useSctSpacePoints
Definition: TrigInDetR3TrackSeedingTool.h:59
IRoiDescriptor::zedPlus
virtual double zedPlus() const =0
the zed and eta values at the most forward and most rear ends of the RoI
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TrigFTF_GNNR3_EtaBin
Definition: GNNR3_DataStorage.h:40
TrigAccel::ITk::CompressedGraph
Definition: TrigITkAccelEDM.h:155
TrigFTF_GNNR3_EtaBin::m_in
std::vector< std::vector< unsigned int > > m_in
Definition: GNNR3_DataStorage.h:72
TrigFTF_GNN_Edge::m_p
float m_p[3]
Definition: GNN_DataStorage.h:131
TrigFTF_GNNR3_Edge::m_p
float m_p[3]
Definition: GNNR3_DataStorage.h:131
TrigInDetR3TrackSeedingTool::m_sctSpacePointsContainerKey
SG::ReadHandleKey< SpacePointContainer > m_sctSpacePointsContainerKey
Definition: TrigInDetR3TrackSeedingTool.h:62
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
TrigFTF_GNNR3_Layer::num_bins
int num_bins() const
Definition: GNNR3_Geometry.h:26
python.LArCondContChannels.isBarrel
isBarrel
Definition: LArCondContChannels.py:659
TrigAccel::ITk::OutputSeeds
Definition: TrigITkAccelEDM.h:171
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
IRoiDescriptor::zedMinus
virtual double zedMinus() const =0
SeedingToolBase::m_useML
BooleanProperty m_useML
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:52
TrigAccel::ITk::GraphMakingInputData::m_nLayers
unsigned int m_nLayers
Definition: TrigITkAccelEDM.h:129
python.copyTCTOutput.totalSize
totalSize
Definition: copyTCTOutput.py:92
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
TrigFTF_GNNR3_Edge::m_nNei
unsigned char m_nNei
Definition: GNNR3_DataStorage.h:130
SpacePointContainer
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePointContainer.h:29
SeedingToolBase::m_useOldTunings
BooleanProperty m_useOldTunings
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:65
M_2PI
#define M_2PI
Definition: CaloGpuGeneral_fnc.cxx:8
PowhegControl_ttFCNC_NLO.params
params
Definition: PowhegControl_ttFCNC_NLO.py:226
TrigAccel::ITk::CompressedGraph::m_nMaxNeighbours
unsigned int m_nMaxNeighbours
Definition: TrigITkAccelEDM.h:159
MCP::ScaleSmearParam::r1
@ r1
TrigFTF_GNN_EtaBin::m_vn
std::vector< const TrigFTF_GNN_Node * > m_vn
Definition: GNN_DataStorage.h:70
SeedingToolBase::m_tau_ratio_cut
FloatProperty m_tau_ratio_cut
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.h:67
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
SeedingToolBase::runCCA
int runCCA(int, std::vector< GNN_Edge > &) const
Definition: TrigInDetPattRecoTools/src/SeedingToolBase.cxx:318
InDet::SiWidth::z
double z() const
Definition: SiWidth.h:131
TrigInDetR3TrackSeedingTool::m_regsel_pix
ToolHandle< IRegSelTool > m_regsel_pix
region selector tools
Definition: TrigInDetR3TrackSeedingTool.h:67
node
Definition: node.h:21
TrigInDetR3TrackSeedingTool::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: TrigInDetR3TrackSeedingTool.h:56
TrigInDetSiLayer::m_subdet
int m_subdet
Definition: TrigInDetSiLayer.h:10
fitman.k
k
Definition: fitman.py:528
TrigFTF_GNN_EtaBin::getMinBinRadius
float getMinBinRadius() const
Definition: GNN_DataStorage.h:62
TrigFTF_GNN_EtaBin::m_params
std::vector< std::array< float, 5 > > m_params
Definition: GNN_DataStorage.h:73
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65
TrigInDetTrackSeedingResult::m_nEdgeLinks
int m_nEdgeLinks
Definition: TrigInDetTrackSeedingResult.h:12