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