 |
ATLAS Offline Software
|
#include <Gbts2ActsSeedingTool.h>
|
| | Gbts2ActsSeedingTool (const std::string &, const std::string &, const IInterface *) |
| |
| virtual | ~Gbts2ActsSeedingTool () |
| |
| virtual StatusCode | initialize () override |
| |
| virtual StatusCode | finalize () override |
| |
| virtual StatusCode | createSeeds (const EventContext &ctx, const Acts::SpacePointContainer< ActsTrk::SpacePointCollector, Acts::detail::RefHolder > &spContainer, const Acts::Vector3 &beamSpotPos, const Acts::Vector3 &bField, ActsTrk::SeedContainer &seedContainer) const override |
| |
| 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 (ISeedingTool, 1, 0) |
| |
| virtual StatusCode | createSeeds (const EventContext &ctx, const Acts::SpacePointContainer< ActsTrk::SpacePointCollector, Acts::detail::RefHolder > &spContainer, const Acts::Vector3 &beamSpotPos, const Acts::Vector3 &bField, ActsTrk::SeedContainer &seedContainer) const |
| |
| virtual StatusCode | createSeeds2 (const EventContext &ctx, const std::vector< const xAOD::SpacePointContainer * > &spacePointCollections, const Eigen::Vector3f &beamSpotPos, float bFieldInZ, ActsTrk::SeedContainer &seedContainer) 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 | extractSeedsFromTheGraph (int, int, int, std::vector< GNN_Edge > &, std::vector< std::tuple< float, int, std::vector< unsigned int > > > &) 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...
|
| |
|
| SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" } |
| |
| const std::vector< short > * | m_sct_h2l {nullptr} |
| |
| const std::vector< short > * | m_pix_h2l {nullptr} |
| |
| std::vector< bool > | m_are_pixels |
| |
| ToolHandle< ITrigL2LayerNumberTool > | m_layerNumberTool {this, "layerNumberTool", "TrigL2LayerNumberToolITk"} |
| |
| const AtlasDetectorID * | m_atlasId = nullptr |
| |
| const SCT_ID * | m_sctId = nullptr |
| |
| const PixelID * | m_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", true} |
| |
| 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"} |
| |
| StringProperty | m_lutFile {this, "MLpredictorLutFileName", "gbts_ml_pixel_barrel_loose.lut"} |
| |
| 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_FasTrackConnector > | m_connector = nullptr |
| |
| std::unique_ptr< GNNR3_FasTrackConnector > | m_connector = nullptr |
| |
| std::vector< TrigInDetSiLayer > | m_layerGeometry |
| |
| std::unique_ptr< const TrigFTF_GNN_Geometry > | m_geo = nullptr |
| |
| std::unique_ptr< const TrigFTF_GNNR3_Geometry > | m_geo = nullptr |
| |
| std::vector< std::array< float, 5 > > | m_mlLUT |
| |
|
| 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...
|
| |
Definition at line 14 of file Gbts2ActsSeedingTool.h.
◆ GNN_DataStorage
◆ GNN_Edge
◆ GNN_Node
◆ GNNR3_DataStorage
◆ GNNR3_Edge
◆ GNNR3_Node
◆ StoreGateSvc_t
◆ Gbts2ActsSeedingTool()
| Gbts2ActsSeedingTool::Gbts2ActsSeedingTool |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~Gbts2ActsSeedingTool()
| virtual Gbts2ActsSeedingTool::~Gbts2ActsSeedingTool |
( |
| ) |
|
|
inlinevirtual |
◆ buildTheGraph() [1/2]
Definition at line 98 of file TrigInDetPattRecoTools/src/SeedingToolBase.cxx.
102 const float cut_dphi_max =
m_LRTmode ? 0.07f : 0.012f;
103 const float cut_dcurv_max =
m_LRTmode ? 0.015f : 0.001f;
107 const float min_deltaPhi =
m_LRTmode ? 0.01f : 0.001f;
108 const float tau_ratio_precut = 0.009f;
110 const float maxOuterRadius =
m_LRTmode ? 1050.0 : 550.0;
112 const float cut_zMinU = min_z0 + maxOuterRadius*roi.
dzdrMinus();
113 const float cut_zMaxU = max_z0 + maxOuterRadius*roi.
dzdrPlus();
115 constexpr
float ptCoeff = 0.29997*1.9972/2.0;
117 float tripletPtMin = 0.8f*
m_minPt;
118 const float pt_scale = 900.0f/
m_minPt;
120 float maxCurv = ptCoeff/tripletPtMin;
122 float maxKappa_high_eta =
m_LRTmode ? 1.0f*maxCurv : std::sqrt(0.8
f)*maxCurv;
123 float maxKappa_low_eta =
m_LRTmode ? 1.0f*maxCurv : std::sqrt(0.6
f)*maxCurv;
126 maxKappa_high_eta = 4.75e-4
f*pt_scale;
127 maxKappa_low_eta = 3.75e-4
f*pt_scale;
130 const float dphi_coeff =
m_LRTmode ? 1.0f*maxCurv : 0.68f*maxCurv;
132 const float minDeltaRadius = 2.0;
136 unsigned int nConnections = 0;
142 for(
const auto&
bg :
m_geo->bin_groups()) {
146 if(B1.
empty())
continue;
152 for(
const auto& b2_idx :
bg.second) {
156 if(B2.
empty())
continue;
161 float abs_dr = std::fabs(rb2-rb1);
163 deltaPhi = min_deltaPhi + dphi_coeff*abs_dr;
167 deltaPhi = 0.002f + 4.33e-4
f*pt_scale*abs_dr;
169 deltaPhi = 0.015f + 2.2e-4
f*pt_scale*abs_dr;
174 unsigned int first_it = 0;
176 for(
unsigned int n1Idx = 0;n1Idx<B1.
m_vn.size();n1Idx++) {
178 std::vector<unsigned int>& v1In = B1.
m_in[n1Idx];
182 const std::array<float, 5>& n1pars = B1.
m_params[n1Idx];
184 float phi1 = n1pars[2];
185 float r1 = n1pars[3];
186 float z1 = n1pars[4];
193 for(
unsigned int n2PhiIdx = first_it; n2PhiIdx<B2.
m_vPhiNodes.size();n2PhiIdx++) {
201 if(phi2 > maxPhi)
break;
203 unsigned int n2Idx = B2.
m_vPhiNodes[n2PhiIdx].second;
205 const std::vector<unsigned int>& v2In = B2.
m_in[n2Idx];
209 const std::array<float, 5>& n2pars = B2.
m_params[n2Idx];
211 float r2 = n2pars[3];
215 if(
dr < minDeltaRadius) {
219 float z2 = n2pars[4];
223 float ftau = std::fabs(tau);
228 if(ftau < n1pars[0])
continue;
229 if(ftau > n1pars[1])
continue;
231 if(ftau < n2pars[0])
continue;
232 if(ftau > n2pars[1])
continue;
236 float z0 = z1 -
r1*tau;
238 if(z0 < min_z0 || z0 > max_z0)
continue;
240 float zouter =
z0 + maxOuterRadius*tau;
242 if(zouter < cut_zMinU || zouter > cut_zMaxU)
continue;
245 float curv = (phi2-phi1)/
dr;
246 float abs_curv = std::abs(curv);
249 if(abs_curv > maxKappa_low_eta) {
254 if(abs_curv > maxKappa_high_eta) {
259 float exp_eta = std::sqrt(1.
f+tau*tau)-tau;
263 bool isGood = v2In.size() <= 2;
267 float uat_1 = 1.0f/exp_eta;
269 for(
const auto& n2_in_idx : v2In) {
271 float tau2 = edgeStorage.at(n2_in_idx).m_p[0];
272 float tau_ratio = tau2*uat_1 - 1.0f;
274 if(std::fabs(tau_ratio) > tau_ratio_precut){
287 float dPhi2 = curv*
r2;
288 float dPhi1 = curv*
r1;
292 edgeStorage.emplace_back(B1.
m_vn[n1Idx], B2.
m_vn[n2Idx], exp_eta, curv, phi1 + dPhi1);
296 int outEdgeIdx = nEdges;
298 float uat_2 = 1.f/exp_eta;
299 float Phi2 = phi2 + dPhi2;
302 for(
const auto& inEdgeIdx : v2In) {
308 float tau_ratio = pS->
m_p[0]*uat_2 - 1.0f;
310 if(std::abs(tau_ratio) > cut_tau_ratio_max){
314 float dPhi = Phi2 - pS->
m_p[2];
319 if(std::abs(
dPhi) > cut_dphi_max) {
323 float dcurv = curv2 - pS->
m_p[1];
325 if(dcurv < -cut_dcurv_max || dcurv > cut_dcurv_max) {
342 ATH_MSG_WARNING(
"Maximum number of graph edges exceeded - possible efficiency loss "<< nEdges);
345 return std::make_pair(nEdges, nConnections);
◆ buildTheGraph() [2/2]
Definition at line 71 of file TrigInDetR3PattRecoTools/src/SeedingToolBase.cxx.
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;
80 const float min_deltaPhi =
m_LRTmode ? 0.01f : 0.001f;
82 const float maxOuterRadius =
m_LRTmode ? 1050.0 : 550.0;
84 const float cut_zMinU = min_z0 + maxOuterRadius*roi.
dzdrMinus();
85 const float cut_zMaxU = max_z0 + maxOuterRadius*roi.
dzdrPlus();
87 const float ptCoeff = 0.29997*1.9972/2.0;
89 float tripletPtMin = 0.8*
m_minPt;
91 float maxCurv = ptCoeff/tripletPtMin;
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;
97 const float minDeltaRadius = 2.0;
101 unsigned int nConnections = 0;
107 for(
const auto&
bg :
m_geo->bin_groups()) {
111 if(B1.
empty())
continue;
115 for(
const auto& b2_idx :
bg.second) {
119 if(B2.
empty())
continue;
124 deltaPhi = min_deltaPhi + dphi_coeff*std::fabs(rb2-rb1);
127 unsigned int first_it = 0;
129 for(
unsigned int n1Idx = 0;n1Idx<B1.
m_vn.size();n1Idx++) {
131 std::vector<unsigned int>& v1In = B1.
m_in[n1Idx];
135 const std::array<float, 5>& n1pars = B1.
m_params[n1Idx];
137 float phi1 = n1pars[2];
138 float r1 = n1pars[3];
139 float z1 = n1pars[4];
146 for(
unsigned int n2PhiIdx = first_it; n2PhiIdx<B2.
m_vPhiNodes.size();n2PhiIdx++) {
154 if(phi2 > maxPhi)
break;
156 unsigned int n2Idx = B2.
m_vPhiNodes[n2PhiIdx].second;
158 const std::vector<unsigned int>& v2In = B2.
m_in[n2Idx];
162 const std::array<float, 5>& n2pars = B2.
m_params[n2Idx];
164 float r2 = n2pars[3];
168 if(
dr < minDeltaRadius) {
172 float z2 = n2pars[4];
176 float ftau = std::fabs(tau);
181 if(ftau < n1pars[0])
continue;
182 if(ftau > n1pars[1])
continue;
184 if(ftau < n2pars[0])
continue;
185 if(ftau > n2pars[1])
continue;
189 float z0 = z1 -
r1*tau;
191 if(z0 < min_z0 || z0 > max_z0)
continue;
193 float zouter =
z0 + maxOuterRadius*tau;
195 if(zouter < cut_zMinU || zouter > cut_zMaxU)
continue;
198 float curv = (phi2-phi1)/
dr;
199 float abs_curv = std::abs(curv);
202 if(abs_curv > maxKappa_low_eta) {
207 if(abs_curv > maxKappa_high_eta) {
212 float exp_eta = std::sqrt(1+tau*tau)-tau;
216 bool isGood = v2In.size() <= 2;
220 float uat_1 = 1.0f/exp_eta;
222 for(
const auto& n2_in_idx : v2In) {
224 float tau2 = edgeStorage.at(n2_in_idx).m_p[0];
225 float tau_ratio = tau2*uat_1 - 1.0f;
227 if(std::fabs(tau_ratio) > cut_tau_ratio_max){
240 float dPhi2 = curv*
r2;
241 float dPhi1 = curv*
r1;
245 edgeStorage.emplace_back(B1.
m_vn[n1Idx], B2.
m_vn[n2Idx], exp_eta, curv, phi1 + dPhi1);
249 int outEdgeIdx = nEdges;
251 float uat_2 = 1/exp_eta;
252 float Phi2 = phi2 + dPhi2;
255 for(
const auto& inEdgeIdx : v2In) {
261 float tau_ratio = pS->
m_p[0]*uat_2 - 1.0f;
263 if(std::abs(tau_ratio) > cut_tau_ratio_max){
267 float dPhi = Phi2 - pS->
m_p[2];
272 if(dPhi < -cut_dphi_max || dPhi > cut_dphi_max) {
276 float dcurv = curv2 - pS->
m_p[1];
278 if(dcurv < -cut_dcurv_max || dcurv > cut_dcurv_max) {
294 return std::make_pair(nEdges, nConnections);
◆ createSeeds() [1/2]
◆ createSeeds() [2/2]
Definition at line 34 of file Gbts2ActsSeedingTool.cxx.
36 seedContainer.
spacePoints().reserve(spContainer.size());
37 std::unique_ptr<GNN_DataStorage> storage = std::make_unique<GNN_DataStorage>(*
m_geo,
m_mlLUT);
43 float shift_x =
vertex.x() - beamSpotHandle->beamTilt(0)*
vertex.z();
44 float shift_y =
vertex.y() - beamSpotHandle->beamTilt(1)*
vertex.z();
46 std::vector<std::vector<GNN_Node> > node_storage;
49 for(
auto&
v : node_storage)
v.reserve(100000);
51 unsigned int nPixelLoaded = 0;
52 unsigned int nStripLoaded = 0;
54 for(
size_t idx=0;
idx<spContainer.size();
idx++){
55 const auto & sp = spContainer.at(
idx);
56 const auto & extSP = sp.externalSpacePoint();
58 const std::vector<xAOD::DetectorIDHashType>& elementlist = extSP.elementIdList() ;
60 bool isPixel(elementlist.size() == 1);
68 const auto&
pos = extSP.globalPosition();
79 assert(
dynamic_cast<const xAOD::PixelCluster*
>(extSP.measurements().front())!=
nullptr);
86 for(
size_t l = 0;
l < node_storage.size();
l++) {
88 const std::vector<GNN_Node>& nodes = node_storage[
l];
90 if(nodes.size() == 0)
continue;
98 ATH_MSG_DEBUG(
"Loaded "<<nPixelLoaded<<
" pixel spacepoints and "<<nStripLoaded<<
" strip spacepoints");
106 std::vector<GNN_Edge> edgeStorage;
110 std::pair<int, int> graphStats =
buildTheGraph(fakeRoi, storage, edgeStorage);
112 ATH_MSG_DEBUG(
"Created graph with "<<graphStats.first<<
" edges and "<<graphStats.second<<
" edge links");
114 if (graphStats.first == 0 || graphStats.second == 0)
return StatusCode::SUCCESS;
116 int maxLevel =
runCCA(graphStats.first, edgeStorage);
118 ATH_MSG_DEBUG(
"Reached Level "<<maxLevel<<
" after GNN iterations");
120 std::vector<std::tuple<float, int, std::vector<unsigned int> > > vSeedCandidates;
124 if (vSeedCandidates.empty())
return StatusCode::SUCCESS;
126 seedContainer.reserve(vSeedCandidates.size(), 7.0f);
128 for (
const auto& seed : vSeedCandidates) {
130 if (std::get<1>(seed) != 0)
continue;
134 seedContainer.
push_back(std::get<2>(seed));
138 ATH_MSG_DEBUG(
"GBTS created "<<seedContainer.size()<<
" seeds");
140 return StatusCode::SUCCESS;
◆ createSeeds2()
Definition at line 43 of file ISeedingTool.h.
50 (void)spacePointCollections;
54 return StatusCode::FAILURE;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ DeclareInterfaceID()
| ActsTrk::ISeedingTool::DeclareInterfaceID |
( |
ISeedingTool |
, |
|
|
1 |
, |
|
|
0 |
|
|
) |
| |
|
inherited |
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
| name | Name of the property. |
| hndl | Object holding the property value. |
| doc | Documentation 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.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
| name | Name of the property. |
| hndl | Object holding the property value. |
| doc | Documentation 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
| name | Name of the property. |
| property | Object holding the property value. |
| doc | Documentation 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
| name | Name of the property. |
| property | Object holding the property value. |
| doc | Documentation 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.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extractSeedsFromTheGraph()
| void SeedingToolBase::extractSeedsFromTheGraph |
( |
int |
maxLevel, |
|
|
int |
nEdges, |
|
|
int |
nHits, |
|
|
std::vector< GNN_Edge > & |
edgeStorage, |
|
|
std::vector< std::tuple< float, int, std::vector< unsigned int > > > & |
vSeedCandidates |
|
) |
| const |
|
protectedinherited |
Definition at line 416 of file TrigInDetPattRecoTools/src/SeedingToolBase.cxx.
418 const float edge_mask_min_eta = 1.5;
419 const float hit_share_threshold = 0.49;
421 vSeedCandidates.clear();
429 if(maxLevel < minLevel)
return;
431 std::vector<GNN_Edge*> vSeeds;
433 vSeeds.reserve(nEdges/2);
435 for(
int edgeIndex = 0; edgeIndex < nEdges; edgeIndex++) {
437 GNN_Edge* pS = &(edgeStorage.at(edgeIndex));
439 if(pS->m_level < minLevel)
continue;
441 vSeeds.push_back(pS);
444 if(vSeeds.empty())
return;
446 std::sort(vSeeds.begin(), vSeeds.end(), GNN_Edge::CompareLevel());
450 vSeedCandidates.reserve(vSeeds.size());
452 auto tFilter = std::make_unique<TrigFTF_GNN_TrackingFilter>(
m_layerGeometry, edgeStorage);
454 for(
auto pS : vSeeds) {
456 if(pS->m_level == -1)
continue;
460 tFilter->followTrack(pS, rs);
462 if(!rs.m_initialized) {
466 if(
static_cast<int>(rs.m_vs.size()) < minLevel)
continue;
468 float seed_eta = std::abs(-
std::log(pS->m_p[0]));
470 std::vector<const GNN_Node*> vN;
472 for(std::vector<GNN_Edge*>::reverse_iterator sIt=rs.m_vs.rbegin();sIt!=rs.m_vs.rend();++sIt) {
474 if (seed_eta > edge_mask_min_eta) {
475 (*sIt)->m_level = -1;
478 if(sIt == rs.m_vs.rbegin()) {
479 vN.push_back((*sIt)->m_n1);
482 vN.push_back((*sIt)->m_n2);
486 if(vN.size()<3)
continue;
488 std::vector<unsigned int> vSpIdx;
490 vSpIdx.resize(vN.size());
492 for(
unsigned int k = 0;
k < vN.size();
k++) {
493 vSpIdx[
k] = vN[
k]->sp_idx();
496 vSeedCandidates.emplace_back(-rs.m_J/vN.size(), 0, vSpIdx);
502 std::sort(vSeedCandidates.begin(), vSeedCandidates.end());
504 std::vector<int> vTrackIds(vSeedCandidates.size());
508 std::iota(vTrackIds.begin(), vTrackIds.end(), 1);
510 std::vector<int> H2T(nHits + 1, 0);
514 for(
const auto& seed : vSeedCandidates) {
516 for(
const auto&
h : std::get<2>(seed) ) {
518 unsigned int hit_id =
h + 1;
520 int tid = H2T[hit_id];
521 int trackId = vTrackIds[seedIdx];
523 if(tid == 0 || tid > trackId) {
525 H2T[hit_id] = trackId;
534 for(
unsigned int trackIdx = 0; trackIdx < vSeedCandidates.size(); trackIdx++) {
536 int nTotal = std::get<2>(vSeedCandidates[trackIdx]).size();
539 int trackId = vTrackIds[trackIdx];
541 for(
const auto&
h : std::get<2>(vSeedCandidates[trackIdx]) ) {
543 unsigned int hit_id =
h + 1;
545 int tid = H2T[hit_id];
552 if (nOther > hit_share_threshold*nTotal) {
553 std::get<1>(vSeedCandidates[trackIdx]) = -1;
◆ extraDeps_update_handler()
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 Gbts2ActsSeedingTool::finalize |
( |
| ) |
|
|
overridevirtual |
◆ initialize()
| StatusCode Gbts2ActsSeedingTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ inputHandles()
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]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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()
◆ renounceArray()
◆ runCCA() [1/2]
| int SeedingToolBase::runCCA |
( |
int |
nEdges, |
|
|
std::vector< GNN_Edge > & |
edgeStorage |
|
) |
| const |
|
protectedinherited |
Definition at line 348 of file TrigInDetPattRecoTools/src/SeedingToolBase.cxx.
350 constexpr
int maxIter = 15;
356 std::vector<TrigFTF_GNN_Edge*> v_old;
358 for(
int edgeIndex=0;edgeIndex<nEdges;edgeIndex++) {
361 if(pS->
m_nNei == 0)
continue;
366 std::vector<TrigFTF_GNN_Edge*> v_new;
367 v_new.reserve(v_old.size());
374 for(
auto pS : v_old) {
378 for(
int nIdx=0;nIdx<pS->
m_nNei;nIdx++) {
380 unsigned int nextEdgeIdx = pS->
m_vNei[nIdx];
398 for(
auto pS : v_new) {
402 if(maxLevel < pS->m_level) maxLevel = pS->
m_level;
406 if(nChanges == 0)
break;
◆ 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.
299 const int maxIter = 15;
305 std::vector<TrigFTF_GNNR3_Edge*> v_old;
307 for(
int edgeIndex=0;edgeIndex<nEdges;edgeIndex++) {
310 if(pS->
m_nNei == 0)
continue;
318 std::vector<TrigFTF_GNNR3_Edge*> v_new;
320 v_new.reserve(v_old.size());
322 for(
auto pS : v_old) {
326 for(
int nIdx=0;nIdx<pS->
m_nNei;nIdx++) {
328 unsigned int nextEdgeIdx = pS->
m_vNei[nIdx];
346 for(
auto pS : v_new) {
350 if(maxLevel < pS->m_level) maxLevel = pS->
m_level;
354 if(nChanges == 0)
break;
357 v_old = std::move(v_new);
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_are_pixels
| std::vector<bool> Gbts2ActsSeedingTool::m_are_pixels |
|
protected |
◆ m_atlasId
◆ m_beamSpotKey
◆ m_connectionFile
| StringProperty SeedingToolBase::m_connectionFile {this, "ConnectionFileName", "binTables_ITK_RUN4.txt"} |
|
protectedinherited |
◆ m_connector [1/2]
◆ m_connector [2/2]
◆ m_detStore
◆ m_doubletFilterRZ
| BooleanProperty SeedingToolBase::m_doubletFilterRZ {this, "Doublet_FilterRZ", true} |
|
protectedinherited |
◆ 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 |
◆ m_evtStore
◆ m_filter_phi
| BooleanProperty SeedingToolBase::m_filter_phi {this, "DoPhiFiltering", true} |
|
protectedinherited |
◆ m_geo [1/2]
◆ m_geo [2/2]
◆ m_layerGeometry
◆ m_layerNumberTool
◆ m_LRTmode
| BooleanProperty SeedingToolBase::m_LRTmode {this, "LRTMode",false} |
|
protectedinherited |
◆ m_lutFile
| StringProperty SeedingToolBase::m_lutFile {this, "MLpredictorLutFileName", "gbts_ml_pixel_barrel_loose.lut"} |
|
protectedinherited |
◆ m_matchBeforeCreate
| BooleanProperty SeedingToolBase::m_matchBeforeCreate {this, "MatchBeforeCreate", true} |
|
protectedinherited |
◆ m_minPt
| FloatProperty SeedingToolBase::m_minPt {this, "pTmin", 1000.0} |
|
protectedinherited |
◆ m_mlLUT
| std::vector<std::array<float, 5> > SeedingToolBase::m_mlLUT |
|
protectedinherited |
◆ m_nBufferEdges
| IntegerProperty SeedingToolBase::m_nBufferEdges {this, "BufferEdges", 200000} |
|
protectedinherited |
◆ m_nMaxEdges
| IntegerProperty SeedingToolBase::m_nMaxEdges {this, "MaxGraphEdges", 2000000} |
|
protectedinherited |
◆ m_nMaxPhiSlice
| UnsignedIntegerProperty SeedingToolBase::m_nMaxPhiSlice {this, "nMaxPhiSlice", 53} |
|
protectedinherited |
◆ m_phiSliceWidth
| float SeedingToolBase::m_phiSliceWidth = 0. |
|
protectedinherited |
◆ m_pix_h2l
| const std::vector<short>* Gbts2ActsSeedingTool::m_pix_h2l {nullptr} |
|
protected |
◆ m_pixelId
◆ m_sct_h2l
| const std::vector<short>* Gbts2ActsSeedingTool::m_sct_h2l {nullptr} |
|
protected |
◆ m_sctId
◆ m_tau_ratio_cut
| FloatProperty SeedingToolBase::m_tau_ratio_cut {this, "tau_ratio_cut", 0.007} |
|
protectedinherited |
◆ m_useBeamTilt
| BooleanProperty SeedingToolBase::m_useBeamTilt {this, "UseBeamTilt", false} |
|
protectedinherited |
◆ m_useEtaBinning
| BooleanProperty SeedingToolBase::m_useEtaBinning {this, "UseEtaBinning", true} |
|
protectedinherited |
◆ m_useGPUseedExtraction
| BooleanProperty SeedingToolBase::m_useGPUseedExtraction {this, "UseGPUseedExtraction", true} |
|
protectedinherited |
◆ m_useML
| BooleanProperty SeedingToolBase::m_useML {this, "useML", true} |
|
protectedinherited |
◆ m_useOldTunings
| BooleanProperty SeedingToolBase::m_useOldTunings {this, "UseOldTunings", false} |
|
protectedinherited |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
std::vector< std::vector< unsigned int > > m_in
float widthInEta() const
Returns the width of the cluster in phi (x) and eta (y) directions, respectively.
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
unsigned int m_vNei[N_SEG_CONNS]
std::vector< std::array< float, 5 > > m_params
float getMaxBinRadius() const
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
nope - should be used for standalone also, perhaps need to protect the class def bits #ifndef XAOD_AN...
float getMinBinRadius() const
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
virtual double dzdrMinus() const =0
return the gradients
TrigFTF_GNNR3_EtaBin & getEtaBin(int idx)
virtual double dzdrPlus() const =0
virtual void setOwner(IDataHandleHolder *o)=0
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
void generatePhiIndexing(float)
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
const SpacePointContainer & spacePoints() const noexcept
TrigFTF_GNN_EtaBin & getEtaBin(int idx)
int loadPixelGraphNodes(short, const std::vector< TrigFTF_GNN_Node > &, bool)
ConstVectorMap< N > localPosition() const
Returns the local position of the measurement.
std::vector< const TrigFTF_GNNR3_Node * > m_vn
float getMaxBinRadius() const
Acts::MutableSeedProxy2 push_back(Acts::MutableSeedProxy2 seed)
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
void initializeNodes(bool)
StatusCode initialize(bool used=true)
unsigned int m_vNei[N_SEG_CONNS]
Eigen::Matrix< double, 3, 1 > Vector3D
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
virtual double zedPlus() const =0
the zed and eta values at the most forward and most rear ends of the RoI
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.
#define ATH_MSG_WARNING(x)
std::vector< std::vector< unsigned int > > m_in
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
int loadStripGraphNodes(short, const std::vector< TrigFTF_GNN_Node > &)
virtual double zedMinus() const =0
Athena::TPCnvVers::Current TrigRoiDescriptor
std::vector< const TrigFTF_GNN_Node * > m_vn
constexpr int pow(int base, int exp) noexcept
float getMinBinRadius() const
std::vector< std::array< float, 5 > > m_params