ATLAS Offline Software
Loading...
Searching...
No Matches
NewVrtSecInclusiveTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5//
6// NewVrtSecInclusiveTool.h - Description
7//
8/*
9 Tool for inclusive secondary vertex reconstruction
10 It returns a pointer to Trk::VxSecVertexInfo object which contains
11 vector of pointers to xAOD::Vertex's of found secondary verteces.
12 In case of failure pointer to Trk::VxSecVertexInfo is 0.
13
14
15 Tool creates a derivative object VxSecVKalVertexInfo which contains also additional variables
16 see Tracking/TrkEvent/VxSecVertex/VxSecVertex/VxSecVKalVertexInfo.h
17
18
19 Author: Vadim Kostyukhin
20 e-mail: vadim.kostyukhin@cern.ch
21
22-----------------------------------------------------------------------------*/
23
24
25
26#ifndef _VKalVrt_NewVrtSecInclusiveTool_H
27#define _VKalVrt_NewVrtSecInclusiveTool_H
28
29// Gaudi includes
31#include "GaudiKernel/ToolHandle.h"
32#include "GaudiKernel/ServiceHandle.h"
33//Remove in boost > 1.76 when the boost iterator issue
34//is solved see ATLASRECTS-6358
35#define BOOST_ALLOW_DEPRECATED_HEADERS
36#include "boost/graph/adjacency_list.hpp"
37//
47
48#include "Math/LorentzVector.h"
49
50// Normal STL and physical vectors
51#include <vector>
52
53class TH1D;
54class TH2D;
55class TH1F;
56class TProfile;
57class TTree;
58class ITHistSvc;
59
60namespace Trk{
61 class TrkVKalVrtFitter;
62 class IVertexFitter;
63 class IVKalState;
64}
65
66namespace MVAUtils { class BDT; }
67
68
69//------------------------------------------------------------------------
70namespace Rec {
71
72 struct workVectorArrxAOD{
73 std::vector<const xAOD::TrackParticle*> listSelTracks; // Selected tracks after quality cuts
74 std::vector<const xAOD::TrackParticle*> tmpListTracks;
75 std::vector<const xAOD::TrackParticle*> inpTrk; // All tracks provided to tool
76 double beamX=0.;
77 double beamY=0.;
78 double beamZ=0.;
79 double tanBeamTiltX=0.;
80 double tanBeamTiltY=0.;
81 };
82
83 class NewVrtSecInclusiveTool : public AthAlgTool, virtual public IVrtInclusive
84 {
85
86
87 public:
88 /* Constructor */
89 NewVrtSecInclusiveTool(const std::string& type, const std::string& name, const IInterface* parent);
90 /* Destructor */
92
93
94 virtual StatusCode initialize() override;
95 virtual StatusCode finalize() override;
96
97
98
99 virtual std::unique_ptr<Trk::VxSecVertexInfo> findAllVertices(const EventContext& ctx,
100 const std::vector<const xAOD::TrackParticle*> & inputTracks,
101 const xAOD::Vertex & primaryVertex) const override final;
102//------------------------------------------------------------------------------------------------------------------
103// Private data and functions
104//
105
106 private:
107 void lockDecorations (const std::vector<const xAOD::TrackParticle*> & inpTrk) const;
108
109 double m_w_1{};
110 struct DevTuple;
111 struct Hists {
112 StatusCode book (ITHistSvc& histSvc, const std::string& histDir);
113 TTree* m_tuple{};
118 TH1D* m_hb_massEE{};
119 TH1D* m_hb_nvrt2{};
120 TH1D* m_hb_ratio{};
122 TH1D* m_hb_impact{};
125 TH1D* m_hb_trkD0{};
126 TH1D* m_hb_trkZ{};
131 TH1D* m_hb_r2d{};
133 TH1D* m_hb_impV0{};
137 TH1D* m_hb_distVV{};
138 TH1D* m_hb_diffPS{};
144 TH1F* m_hb_etaSV{};
146 };
147 std::unique_ptr<Hists> m_h;
148 Gaudi::Property<bool> m_fillHist{this, "FillHist", false, "Fill debugging and development histograms+ntuple" };
149 //
150 //-- Baseline track selection control
151 Gaudi::Property<int> m_cutSctHits{this, "CutSctHits", 4, "Remove track if it has less SCT hits" };
152 Gaudi::Property<int> m_cutPixelHits{this, "CutPixelHits", 2, "Remove track if it has less Pixel hits"};
153 Gaudi::Property<int> m_cutTRTHits{this, "CutTRTHits", 10, "Remove track if it has less TRT hits"};
154 Gaudi::Property<int> m_cutSiHits{this, "CutSiHits", 8, "Remove track if it has less Pixel+SCT hits" };
155 Gaudi::Property<int> m_cutBLayHits{this, "CutBLayHits", 0, "Remove track if it has less B-layer hits" };
156 Gaudi::Property<int> m_cutSharedHits{this,"CutSharedHits",1, "Reject final 2tr vertices if tracks have shared hits" };
157 Gaudi::Property<float> m_cutPt{this, "CutPt", 500., "Track Pt selection cut" };
158 Gaudi::Property<float> m_cutD0Min{this, "CutD0Min", 0., "Track minimal D0 selection cut" };
159 Gaudi::Property<float> m_cutD0Max{this, "CutD0Max", 10., "Track maximal D0 selection cut" };
160 Gaudi::Property<float> m_maxZVrt{this, "MaxZVrt", 15., "Track Z impact selection max"};
161 Gaudi::Property<float> m_minZVrt{this, "MinZVrt", 0., "Track Z impact selection min"};
162 Gaudi::Property<float> m_cutChi2{this, "CutChi2", 5., "Track Chi2 selection cut" };
163 Gaudi::Property<float> m_antiPileupSigRCut{this, "AntiPileupSigRCut", 2.0, "Upper cut on significance of 2D distance between beam and perigee" };
164 //
165 //---- Additional track selection at 2-track vertexing stage
166 Gaudi::Property<float> m_trkSigCut{this, "TrkSigCut", 2.0, "Track 3D impact significance w/r primary vertex. Should be >=AntiPileupSigRCut" };
167 Gaudi::Property<float> m_dRdZRatioCut{this, "dRdZRatioCut", 0.25, "Cut on dR/dZ ratio to remove pileup tracks" };
168 //
169 //---- Very general 2-track vertex selection cuts. Main selection is done in the TwoTrackVertexSelector tool.
170 Gaudi::Property<float> m_fastZSVCut{this, "FastZSVCut", 10., "Cut to remove SV candidates based on fast SV estimation. To save full fit CPU." };
171 //
172 //---- Experimental material interaction removal
173 Gaudi::Property<float> m_removeTrkMatSignif{this, "removeTrkMatSignif", 0., "Significance of Vertex-TrackingMaterial distance for removal. No removal if <=0." };
174 Gaudi::Property<float> m_beampipeR{this, "BeampipeR", 24.3, "Radius of the beampipe material for aggressive material rejection" };
175 //
176 //---- Final inclusive vertex reconstruction control
177 Gaudi::Property<float> m_vrtMassLimit{this, "VrtMassLimit", 5500., "Maximal allowed mass for found vertices" };
178 Gaudi::Property<float> m_globVrtProbCut{this, "GlobVrtProbCut", 0.005, "Cut on probability of any vertex for final selection" };
179 Gaudi::Property<float> m_maxSVRadiusCut{this, "MaxSVRadiusCut", 140., "Cut on maximal radius of SV (def = Pixel detector size)" };
180 Gaudi::Property<float> m_selVrtSigCut{this, "SelVrtSigCut", 3.0, "Cut on significance of 3D distance between vertex and PV" };
181 Gaudi::Property<float> m_vertexMergeCut{this, "VertexMergeCut", 4., "To allow vertex merging for MultiVertex Finder" };
182 Gaudi::Property<bool> m_multiWithOneTrkVrt{this, "MultiWithOneTrkVrt", true, "Allow one-track-vertex addition to already found secondary vertices"};
183
184
185 SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
186
187 ToolHandle<Trk::IExtrapolator> m_extrapolator{this,"ExtrapolatorName","Trk::Extrapolator/Extrapolator", "Name of the extrapolator tool"};
188 ToolHandle<Trk::TrkVKalVrtFitter> m_fitSvc{this, "VertexFitterTool", "Trk::TrkVKalVrtFitter/VertexFitterTool", "Name of the Vertex Fitter tool"};
189 ToolHandle<Reco::ITrackToVertex> m_trackToVertexTool{this, "TrackToVertexTool", "Reco::TrackToVertex/TrackToVertex", "Name of the TrackToVertex tool"};
190
191 ToolHandle<Rec::ITwoTrackVertexSelector> m_ini_v2trselector{this, "TwoTrkVtxSelectorIni", "Rec::TwoTrackVrtBDTSelector/V2TrBDTSelectorIni",
192 "Name of the initial 2-track vertex selector"};
193 ToolHandle<Rec::ITwoTrackVertexSelector> m_fin_v2trselector{this, "TwoTrkVtxSelectorFinal", "Rec::TwoTrackVrtBDTSelector/V2TrBDTSelectorFin",
194 "Name of the final 2-track vertex selector"};
195
196 Gaudi::Property<std::string> m_augString {this, "AugmentingVersionString", "_NVSI", "Augmentation version string"};
197
198 double m_massPi {};
199 double m_massP {};
200 double m_massE{};
201 double m_massK0{};
202 double m_massLam{};
203 std::string m_instanceName;
204
205 SG::AuxElement::Decorator<char> m_is_selected;
206 SG::AuxElement::Decorator<char> m_is_svtrk_final;
207 SG::AuxElement::Decorator<float> m_pt_wrtSV;
208 SG::AuxElement::Decorator<float> m_eta_wrtSV;
209 SG::AuxElement::Decorator<float> m_phi_wrtSV;
210 SG::AuxElement::Decorator<float> m_d0_wrtSV;
211 SG::AuxElement::Decorator<float> m_z0_wrtSV;
212 SG::AuxElement::Decorator<float> m_errP_wrtSV;
213 SG::AuxElement::Decorator<float> m_errd0_wrtSV;
214 SG::AuxElement::Decorator<float> m_errz0_wrtSV;
215 SG::AuxElement::Decorator<float> m_chi2_toSV;
216
217//=======================================================================================
218// Functions and structure below are for algorithm development, debugging and calibration
219// NOT USED IN PRODUCTION!
220
221 static const xAOD::TruthParticle * getPreviousParent(const xAOD::TruthParticle * child);
222 static bool isExcitedHadron(const xAOD::TruthParticle * tp);
223 static bool isDisplaced(const xAOD::TrackParticle * tp);
224 int getIdHF(const xAOD::TrackParticle* TP ) const;
225 static int getG4Inter( const xAOD::TrackParticle* TP );
226 static int getMCPileup(const xAOD::TrackParticle* TP );
227 static int getProdVrtBarcode(const xAOD::TrackParticle* TP , float resolLimit=0.1); //Vertex-Vertex resolution limit =100mkm // FIXME barcode-based
228 static bool checkTrue2TrVrt(const xAOD::TrackParticle * TP1, const xAOD::TrackParticle * TP2, float nearCut=0.1); // Check true prod. vrt. closeness, def=100mkm
229
230 struct DevTuple
231 {
232 static constexpr int maxNTrk=100;
233 static constexpr int maxNVrt=100;
234 int nTrk{};
235 float pttrk[maxNTrk]{};
236 float d0trk[maxNTrk]{};
237 float etatrk[maxNTrk]{};
238 float Sig3D[maxNTrk]{}; // Track-PV 3D significance
239 float dRdZrat[maxNTrk]{}; // Track dR_signicance/dZ_significance
240 int idHF[maxNTrk]{}; // Track from ground state B/C hadron
241 int trkTRT[maxNTrk]{}; // TRT hits on track
242 int displaced[maxNTrk]{}; // Track from displaced truth vertex
243 //---
244 int n2Vrt{};
245 int VrtTrkHF[maxNVrt]{}; // Number of HF track in this vertex
246 int VrtTrkI[maxNVrt]{}; // Number of interaction tracks in this vertex
247 int VrtCh[maxNVrt]{}; // Vertex charge
248 int VrtIBL[maxNVrt]{}; // 2-track IBL hits sum
249 int VrtBL[maxNVrt]{}; // 2-track BL hits sum
251 int VrtTrueBar[maxNVrt]{}; // Truth vertex barcode based identification
252 int VrtTrueNear[maxNVrt]{}; // Truth vertex closeness based identification
256 float VrtM[maxNVrt]{};
257 float VrtZ[maxNVrt]{};
258 float VrtPt[maxNVrt]{};
259 float VrtEta[maxNVrt]{};
260 float VrtBDT[maxNVrt]{}; // Vertex selection BDT value (B/C vs others)
261 float VrtProb[maxNVrt]{}; // 2-track vertex probability
262 float VrtHR1[maxNVrt]{}; // First measured point on track 1
263 float VrtHR2[maxNVrt]{}; // First measured point on track 2
264 float VrtDZ[maxNVrt]{};
266 float VMinPtT[maxNVrt]{}; // min(trk1_pt,trk2_pt) in 2-track vertex
267 float VMinS3DT[maxNVrt]{}; // min(trk1_signif,trk2_signif) in 2-track vertex
268 float VMaxS3DT[maxNVrt]{}; // min(trk1_signif,trk2_signif) in 2-track vertex
269 float VSigMat[maxNVrt]{};
270 int VrtIT[maxNVrt]{}; // Reference to track 1 in the track list
271 int VrtJT[maxNVrt]{}; // Reference to track 2 in the track list
272 //---
273 int nNVrt{};
280 float NVrtM[maxNVrt]{};
281 float NVrtPt[maxNVrt]{};
282 float NVrtEta[maxNVrt]{};
291 float NVrtBDT[maxNVrt]{};
292 float NVrtHR1[maxNVrt]{};
293 float NVrtHR2[maxNVrt]{};
294 };
295//
296// End of development stuff
297//============================================================
298
299
300 struct Vrt2Tr
301 {
303 TLorentzVector momentum;
304 long int vertexCharge{};
305 std::vector<double> errorMatrix;
306 std::vector<double> chi2PerTrk;
307 std::vector< std::vector<double> > trkAtVrt;
308 double chi2=0.;
309 };
310
311
312// For multivertex version only
313
314 using compatibilityGraph_t = boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS>;
315 float m_chiScale[11]{};
316 struct WrkVrt
317 { bool Good=true;
318 std::deque<long int> selTrk;
320 TLorentzVector vertexMom;
321 long int vertexCharge{};
322 std::vector<double> vertexCov;
323 std::vector<double> chi2PerTrk;
324 std::vector< std::vector<double> > trkAtVrt;
325 double chi2{};
326 double projectedVrt=0.;
328 double BDT=1.1;
329 };
330
331
332// Private technical functions
333//
334//
335 std::vector<xAOD::Vertex*> getVrtSecMulti( const EventContext& ctx,
336 workVectorArrxAOD * inpParticlesxAOD, const xAOD::Vertex & primVrt,
337 compatibilityGraph_t& compatibilityGraph ) const;
338
339
340 void printWrkSet(const std::vector<WrkVrt> * WrkSet, const std::string &name ) const;
341
342//
343// Gives correct mass assignment in case of nonequal masses
344 static double massV0(const std::vector< std::vector<double> >& TrkAtVrt, double massP, double massPi ) ;
345
346
347 ROOT::Math::PxPyPzEVector momAtVrt(const std::vector<double>& inpTrk) const;
348
349 static double vrtRadiusError(const Amg::Vector3D & secVrt, const std::vector<double> & vrtErr) ;
350
351 static int nTrkCommon( std::vector<WrkVrt> *WrkVrtSet, int indexV1, int indexV2) ;
352 double minVrtVrtDist( std::vector<WrkVrt> *WrkVrtSet, int & indexV1, int & indexV2, std::vector<double> & check) const;
353 static bool isPart( const std::deque<long int>& test, std::deque<long int> base) ;
354 static std::vector<double> estimVrtPos( int nTrk, std::deque<long int> &selTrk, std::map<long int,std::vector<double>> & vrt) ;
355
356 static double vrtVrtDist(const xAOD::Vertex & primVrt, const Amg::Vector3D & secVrt,
357 const std::vector<double>& vrtErr,double& signif ) ;
358 static double vrtVrtDist2D(const xAOD::Vertex & primVrt, const Amg::Vector3D & secVrt,
359 const std::vector<double>& vrtErr,double& signif ) ;
360 static double vrtVrtDist(const Amg::Vector3D & vrt1, const std::vector<double>& vrtErr1,
361 const Amg::Vector3D & vrt2, const std::vector<double>& vrtErr2) ;
362 static double PntPntDist(const Amg::Vector3D & Vrt1, const Amg::Vector3D & Vrt2) ;
363
364
365 static double projSV_PV(const Amg::Vector3D & SV, const xAOD::Vertex & PV, const TLorentzVector & Direction) ;
366 static double MomProjDist(const Amg::Vector3D & SV, const xAOD::Vertex & PV, const TLorentzVector & Direction) ;
367
368 double distToMatLayerSignificance(Vrt2Tr & Vrt) const;
369
370 double refitVertex( WrkVrt &Vrt,std::vector<const xAOD::TrackParticle*> & SelectedTracks,
371 Trk::IVKalState& istate,
372 bool ifCovV0) const;
373
374 static int mostHeavyTrk(const WrkVrt & V, std::vector<const xAOD::TrackParticle*> AllTracks) ;
375 double refineVerticesWithCommonTracks( WrkVrt &v1, WrkVrt &v2, std::vector<const xAOD::TrackParticle*> & allTrackList,
376 Trk::IVKalState& istate) const;
377 double mergeAndRefitVertices( WrkVrt & v1, WrkVrt & v2, WrkVrt & newvrt,
378 std::vector<const xAOD::TrackParticle*> & AllTrackList,
379 Trk::IVKalState& istate, int robKey =0) const;
380
381 double improveVertexChi2( WrkVrt &vertex, std::vector<const xAOD::TrackParticle*> & allTracks,
382 Trk::IVKalState& istate,
383 bool ifCovV0) const;
384
386 const xAOD::Vertex & primVrt) const;
387
388
389
390 void select2TrVrt(const EventContext& ctx,
391 std::vector<const xAOD::TrackParticle*> & SelectedTracks, const xAOD::Vertex & primVrt,
392 std::map<long int,std::vector<double>> & vrt,
393 compatibilityGraph_t& compatibilityGraph) const;
394
395
396 static void getPixelDiscs (const xAOD::TrackParticle* Part, int &d0Hit, int &d1Hit, int &d2Hit) ;
397 static int getIBLHit(const xAOD::TrackParticle* Part) ;
398 static int getBLHit(const xAOD::TrackParticle* Part) ;
399
400 Hists& getHists() const;
401 };
402
403
405 {
406 clique_visitor(std::vector< std::vector<int> > & input): m_allCliques(input){ input.clear();}
407
408 template <typename Clique, typename Graph>
409 void clique(const Clique& clq, Graph& )
410 {
411 std::vector<int> new_clique(0);
412 for(auto i = clq.begin(); i != clq.end(); ++i) new_clique.push_back(*i);
413 m_allCliques.push_back(std::move(new_clique));
414 }
415
416 std::vector< std::vector<int> > & m_allCliques;
417
418 };
419
420} //end namespace
421
422#endif
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Simplified Boosted Regression Tree, support TMVA, lgbm, and xgboost.
ToolHandle< Trk::IExtrapolator > m_extrapolator
double improveVertexChi2(WrkVrt &vertex, std::vector< const xAOD::TrackParticle * > &allTracks, Trk::IVKalState &istate, bool ifCovV0) const
virtual std::unique_ptr< Trk::VxSecVertexInfo > findAllVertices(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &inputTracks, const xAOD::Vertex &primaryVertex) const override final
Gaudi::Property< float > m_minZVrt
void selGoodTrkParticle(workVectorArrxAOD *xAODwrk, const xAOD::Vertex &primVrt) const
double mergeAndRefitVertices(WrkVrt &v1, WrkVrt &v2, WrkVrt &newvrt, std::vector< const xAOD::TrackParticle * > &AllTrackList, Trk::IVKalState &istate, int robKey=0) const
ToolHandle< Rec::ITwoTrackVertexSelector > m_ini_v2trselector
Gaudi::Property< float > m_vrtMassLimit
double refitVertex(WrkVrt &Vrt, std::vector< const xAOD::TrackParticle * > &SelectedTracks, Trk::IVKalState &istate, bool ifCovV0) const
virtual StatusCode initialize() override
SG::AuxElement::Decorator< float > m_eta_wrtSV
SG::AuxElement::Decorator< float > m_chi2_toSV
static double vrtVrtDist2D(const xAOD::Vertex &primVrt, const Amg::Vector3D &secVrt, const std::vector< double > &vrtErr, double &signif)
Gaudi::Property< int > m_cutPixelHits
Gaudi::Property< float > m_antiPileupSigRCut
Gaudi::Property< std::string > m_augString
SG::AuxElement::Decorator< float > m_errP_wrtSV
Gaudi::Property< float > m_maxZVrt
SG::AuxElement::Decorator< float > m_z0_wrtSV
double refineVerticesWithCommonTracks(WrkVrt &v1, WrkVrt &v2, std::vector< const xAOD::TrackParticle * > &allTrackList, Trk::IVKalState &istate) const
static int getProdVrtBarcode(const xAOD::TrackParticle *TP, float resolLimit=0.1)
static double PntPntDist(const Amg::Vector3D &Vrt1, const Amg::Vector3D &Vrt2)
SG::AuxElement::Decorator< float > m_pt_wrtSV
static double projSV_PV(const Amg::Vector3D &SV, const xAOD::Vertex &PV, const TLorentzVector &Direction)
boost::adjacency_list< boost::listS, boost::vecS, boost::undirectedS > compatibilityGraph_t
Gaudi::Property< float > m_cutPt
Gaudi::Property< float > m_vertexMergeCut
Gaudi::Property< float > m_cutD0Min
Gaudi::Property< float > m_globVrtProbCut
SG::AuxElement::Decorator< float > m_errd0_wrtSV
void select2TrVrt(const EventContext &ctx, std::vector< const xAOD::TrackParticle * > &SelectedTracks, const xAOD::Vertex &primVrt, std::map< long int, std::vector< double > > &vrt, compatibilityGraph_t &compatibilityGraph) const
static int nTrkCommon(std::vector< WrkVrt > *WrkVrtSet, int indexV1, int indexV2)
virtual StatusCode finalize() override
ToolHandle< Rec::ITwoTrackVertexSelector > m_fin_v2trselector
static bool isPart(const std::deque< long int > &test, std::deque< long int > base)
ToolHandle< Trk::TrkVKalVrtFitter > m_fitSvc
static void getPixelDiscs(const xAOD::TrackParticle *Part, int &d0Hit, int &d1Hit, int &d2Hit)
SG::AuxElement::Decorator< float > m_errz0_wrtSV
Gaudi::Property< int > m_cutBLayHits
Gaudi::Property< float > m_cutD0Max
static double massV0(const std::vector< std::vector< double > > &TrkAtVrt, double massP, double massPi)
Gaudi::Property< float > m_trkSigCut
Gaudi::Property< float > m_maxSVRadiusCut
ROOT::Math::PxPyPzEVector momAtVrt(const std::vector< double > &inpTrk) const
static double MomProjDist(const Amg::Vector3D &SV, const xAOD::Vertex &PV, const TLorentzVector &Direction)
SG::AuxElement::Decorator< float > m_d0_wrtSV
void lockDecorations(const std::vector< const xAOD::TrackParticle * > &inpTrk) const
Gaudi::Property< float > m_removeTrkMatSignif
void printWrkSet(const std::vector< WrkVrt > *WrkSet, const std::string &name) const
Gaudi::Property< float > m_fastZSVCut
Gaudi::Property< float > m_dRdZRatioCut
static double vrtVrtDist(const xAOD::Vertex &primVrt, const Amg::Vector3D &secVrt, const std::vector< double > &vrtErr, double &signif)
double minVrtVrtDist(std::vector< WrkVrt > *WrkVrtSet, int &indexV1, int &indexV2, std::vector< double > &check) const
static const xAOD::TruthParticle * getPreviousParent(const xAOD::TruthParticle *child)
static int mostHeavyTrk(const WrkVrt &V, std::vector< const xAOD::TrackParticle * > AllTracks)
Gaudi::Property< float > m_selVrtSigCut
SG::AuxElement::Decorator< char > m_is_selected
Gaudi::Property< int > m_cutSharedHits
Gaudi::Property< bool > m_fillHist
Gaudi::Property< float > m_cutChi2
static std::vector< double > estimVrtPos(int nTrk, std::deque< long int > &selTrk, std::map< long int, std::vector< double > > &vrt)
static double vrtRadiusError(const Amg::Vector3D &secVrt, const std::vector< double > &vrtErr)
NewVrtSecInclusiveTool(const std::string &type, const std::string &name, const IInterface *parent)
Gaudi::Property< bool > m_multiWithOneTrkVrt
SG::AuxElement::Decorator< char > m_is_svtrk_final
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Gaudi::Property< int > m_cutSctHits
SG::AuxElement::Decorator< float > m_phi_wrtSV
Gaudi::Property< int > m_cutTRTHits
std::vector< xAOD::Vertex * > getVrtSecMulti(const EventContext &ctx, workVectorArrxAOD *inpParticlesxAOD, const xAOD::Vertex &primVrt, compatibilityGraph_t &compatibilityGraph) const
static bool checkTrue2TrVrt(const xAOD::TrackParticle *TP1, const xAOD::TrackParticle *TP2, float nearCut=0.1)
Gaudi::Property< float > m_beampipeR
std::string base
Definition hcg.cxx:83
Eigen::Matrix< double, 3, 1 > Vector3D
namespace for combined reconstruction tools and interfaces
Ensure that the ATLAS eigen extensions are properly loaded.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
TruthParticle_v1 TruthParticle
Typedef to implementation.
StatusCode book(ITHistSvc &histSvc, const std::string &histDir)
std::vector< std::vector< double > > trkAtVrt
std::vector< std::vector< double > > trkAtVrt
std::vector< std::vector< int > > & m_allCliques
void clique(const Clique &clq, Graph &)
clique_visitor(std::vector< std::vector< int > > &input)
std::vector< const xAOD::TrackParticle * > listSelTracks
std::vector< const xAOD::TrackParticle * > inpTrk
std::vector< const xAOD::TrackParticle * > tmpListTracks