ATLAS Offline Software
BTagLightSecVertexing.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include "xAODCore/ShallowCopy.h"
8 
9 //general interface for secondary vertex finders
12 
17 
19 
21 
23 
24 #include "xAODTracking/Vertex.h"
25 #include "xAODBase/IParticle.h"
26 
29 
30 namespace Analysis {
31 
32  BTagLightSecVertexing::BTagLightSecVertexing(const std::string& t, const std::string& n, const IInterface* p) :
33  AthAlgTool(t,n,p),
34  m_JFvarFactory("Analysis::JetFitterVariablesFactory",this)
35  {
36  declareInterface<IBTagLightSecVertexing>(this);
37 
38  //List of the secondary vertex finders in jet to be used
39  declareProperty("SecVtxFinderTrackNameList", m_secVertexFinderTrackNameList);
40  declareProperty("SecVtxFinderxAODBaseNameList", m_secVertexFinderBaseNameList);
41  declareProperty("JetFitterVariableFactory", m_JFvarFactory);
42  }
43 
45  {
46  // This will check that the properties were initialized properly
47  // by job configuration.
48  ATH_CHECK( m_VertexCollectionName.initialize() );
49  ATH_CHECK( m_jetSVLinkName.initialize() );
50  ATH_CHECK( m_jetSVFlipLinkName.initialize(!m_jetSVFlipLinkName.empty()) );
51  ATH_CHECK( m_jetJFVtxLinkName.initialize() );
53  ATH_CHECK( m_VxSecVertexInfoNames.initialize() );
54 
55  /* ----------------------------------------------------------------------------------- */
56  /* RETRIEVE SERVICES FROM STOREGATE */
57  /* ----------------------------------------------------------------------------------- */
58 
59  if ( m_secVertexFinderBaseNameList.empty()) {
60  ATH_MSG_ERROR("SecVtxBaseNameList is empty");
61  return StatusCode::FAILURE;
62  }
63 
65  ATH_MSG_ERROR("#BTAG# Size mismatch between secVertexFinderBaseName and track name list ");
66  return StatusCode::FAILURE;
67  }
68 
69  if ( m_JFvarFactory.retrieve().isFailure() ) {
70  ATH_MSG_ERROR("#BTAG# Failed to retrieve " << m_JFvarFactory);
71  } else {
72  ATH_MSG_DEBUG("#BTAG# Retrieved " << m_JFvarFactory);
73  }
74 
75  return StatusCode::SUCCESS;
76  }
77 
79  xAOD::BTagging* newBTag,
80  const Trk::VxSecVKalVertexInfo* myVertexInfoVKal,
81  const xAOD::TrackParticleContainer* theTrackParticleContainer,
82  const std::string& basename) const {
83 
84  const auto& key = basename.find("Flip")!=std::string::npos ? m_jetSVFlipLinkName : m_jetSVLinkName;
86 
87  std::vector< ElementLink< xAOD::VertexContainer > > SVertexLinks;
88  if (myVertexInfoVKal) {
89  if (!h_jetSVLinkName.isAvailable()) {
90  ATH_MSG_ERROR( " cannot retrieve vertex container EL decoration with key " << m_jetSVLinkName.key() );
91  return StatusCode::FAILURE;
92  }
93  SVertexLinks = h_jetSVLinkName(myJet);
94  }
95 
96  std::vector<ElementLink<xAOD::TrackParticleContainer> > TrkList;
97  float mass = 0, energyfrc = NAN, energyTrk = 0, dsttomatlayer = NAN;
98  int n2trk = 0, npsec = 0;
99 
100  if(basename.find("MSV") != 0){
101  if (myVertexInfoVKal) {
102  std::vector<xAOD::Vertex*>::const_iterator verticesBegin = myVertexInfoVKal->vertices().begin();
103  std::vector<xAOD::Vertex*>::const_iterator verticesEnd = myVertexInfoVKal->vertices().end();
104  for (std::vector<xAOD::Vertex*>::const_iterator verticesIter = verticesBegin; verticesIter!=verticesEnd;++verticesIter) {
105  std::vector<ElementLink<xAOD::TrackParticleContainer> > theseTracks = (*verticesIter)->trackParticleLinks();
106  npsec += theseTracks.size();
107  for (auto & theseTrack : theseTracks){
108  TrkList.push_back(theseTrack);
109  }
110  }
111  }
112 
113  ATH_MSG_DEBUG("#BTAG# Size of the sec vertex linked to the BTagging: " << SVertexLinks.size());
114  newBTag->setVariable<std::vector<ElementLink<xAOD::VertexContainer> > >(basename, "vertices", SVertexLinks);
115  newBTag->setDynVxELName(basename, "vertices");
116 
117  if(!SVertexLinks.empty() && myVertexInfoVKal){
118  mass = myVertexInfoVKal->mass();
119  energyfrc = myVertexInfoVKal->energyFraction();
120  n2trk = myVertexInfoVKal->n2trackvertices();
121  energyTrk = myVertexInfoVKal->energyTrkInJet();
122  dsttomatlayer= myVertexInfoVKal->dstToMatLay();
123  }
124 
125  newBTag->setVariable<float>(basename, "energyTrkInJet", energyTrk);
126  newBTag->setVariable<float>(basename, "dstToMatLay", dsttomatlayer);
127 
128  if("SV1" == basename){
130  newBTag->setTaggerInfo(energyfrc, xAOD::BTagInfo::SV1_efracsvx);
133  newBTag->setSV1_TrackParticleLinks(TrkList);
134  }
135  else if ("SV0" == basename){
137  newBTag->setTaggerInfo(energyfrc, xAOD::BTagInfo::SV0_efracsvx);
140  newBTag->setSV0_TrackParticleLinks(TrkList);
141  } else{
142  newBTag->setVariable<float>(basename, "masssvx", mass);
143  newBTag->setVariable<float>(basename, "efracsvx", energyfrc);
144  newBTag->setVariable<int>(basename, "N2Tpair", n2trk);
145  newBTag->setVariable<int>(basename, "NGTinSvx", npsec);
146  newBTag->setVariable<std::vector<ElementLink<xAOD::TrackParticleContainer> > >(basename, "TrackParticleLinks", TrkList);
147  newBTag->setDynTPELName(basename, "TrackParticleLinks");
148  }
149  }//no msv
150  std::vector<ElementLink<xAOD::TrackParticleContainer> > badtrackEL;
151  if(theTrackParticleContainer && myVertexInfoVKal){
152  std::vector<const xAOD::IParticle*> btip = myVertexInfoVKal->badTracksIP();
153 
154  std::vector<const xAOD::IParticle*>::iterator ipBegin = btip.begin();
156  for (std::vector<const xAOD::IParticle*>::iterator ipIter=ipBegin; ipIter!=ipEnd; ++ipIter) {
157  const xAOD::TrackParticle* tp = dynamic_cast<const xAOD::TrackParticle*>(*ipIter);
158  if (!tp) {
159  ATH_MSG_WARNING("#BTAG# bad track IParticle is not a TrackParticle");
160  continue;
161  }
163  tpel.toContainedElement(*theTrackParticleContainer, tp);
164  badtrackEL.push_back(tpel);
165  }
166  }
167  newBTag->setVariable<std::vector<ElementLink<xAOD::TrackParticleContainer> > >(basename, "badTracksIP", badtrackEL);
168  newBTag->setDynTPELName(basename, "badTracksIP");
169 
170  return StatusCode::SUCCESS;
171 
172  }
173 
175  xAOD::BTagging* newBTag,
176  const Trk::VxJetFitterVertexInfo* myVertexInfoJetFitter,
177  const xAOD::TrackParticleContainer* theTrackParticleContainer,
178  const std::string& basename) const {
179 
180  //THIS is a nasty hack from VD but by it's more likely we get GNN to work than someone to re-organise JetFitter
181  const auto& key = basename.find("Flip")!=std::string::npos ? m_jetJFFlipVtxLinkName : m_jetJFVtxLinkName;
183  std::vector< ElementLink< xAOD::BTagVertexContainer > > JFVerticesLinks;
184 
185  //twotrackVerticesInJet
186  std::vector< const xAOD::Vertex*> vecTwoTrkVtx;
187  if (myVertexInfoJetFitter) {
188  const Trk::TwoTrackVerticesInJet* TwoTrkVtxInJet = myVertexInfoJetFitter->getTwoTrackVerticesInJet();
189  vecTwoTrkVtx = TwoTrkVtxInJet->getTwoTrackVertice();
190  if (!h_jetJFVtxLinkName.isAvailable()) {
191  ATH_MSG_ERROR( " cannot retrieve vertex container EL decoration with key " << key.key() );
192  return StatusCode::FAILURE;
193  }
194  JFVerticesLinks = h_jetJFVtxLinkName(myJet);
195  }
196 
197  int N2TrkVtx = vecTwoTrkVtx.size();
198  if("JetFitter" == basename){
200  }
201  else{
202  newBTag->setVariable<int>(basename, "N2Tpair", N2TrkVtx);
203  }
204 
205  //list of JFvertices
206  std::vector<Trk::VxJetCandidate*> JFvertices;
207  if (myVertexInfoJetFitter) JFvertices = myVertexInfoJetFitter->verticesJF();
208 
209  int nVtx = 0;
210  Trk::VxJetCandidate* vxjetcand = nullptr;
211  std::vector<Trk::VxVertexOnJetAxis*> Vtxonjetaxes;
212  if (!JFvertices.empty()) {
213  vxjetcand = dynamic_cast< Trk::VxJetCandidate*>(JFvertices[0]);
214  if (!vxjetcand) {
215  ATH_MSG_WARNING("#BTAG# bad VxCandidate is not a VxJetCandidate");
216  return StatusCode::SUCCESS;
217  }
218 
219  //vtx on jet axis
220  Vtxonjetaxes = vxjetcand->getVerticesOnJetAxis();
221  }
222 
223  nVtx = Vtxonjetaxes.size();
224  typedef std::vector<ElementLink<xAOD::BTagVertexContainer> > BTagVertices;
225  ATH_MSG_DEBUG("#BTAGJF# filling vertices for basename: " << basename);
226  newBTag->setVariable<std::vector<ElementLink<xAOD::BTagVertexContainer> > >(basename, "JFvertices", JFVerticesLinks);
227  newBTag->setDynBTagVxELName(basename, "JFvertices");
228  static const SG::AuxElement::ConstAccessor<BTagVertices> vertsAcc (basename + "_JFvertices");
229  ATH_MSG_DEBUG("#BTAGJF# n vertices: " << vertsAcc (*newBTag).size());
230 
231  Amg::VectorX vtxPositions = Amg::VectorX::Zero(5);
232  Amg::MatrixX vtxCovMatrix = Amg::MatrixX::Zero(5,5);
233  if (nVtx > 0){
234  const Trk::RecVertexPositions& recVtxposition = vxjetcand->getRecVertexPositions();
235  vtxPositions = recVtxposition.position();
236  vtxCovMatrix = recVtxposition.covariancePosition();
237  ATH_MSG_DEBUG("#BTAGJF# size vtxPosition "<<vtxPositions.size());
238  }
239  std::vector< float > fittedPosition = std::vector<float>(nVtx+5,-1);
240  std::vector< float > fittedCov = std::vector<float>(nVtx+5,-1); //only store the diagonal terms
241  if(vtxPositions.rows()>4 ) {
242  fittedPosition[0] = vtxPositions[Trk::jet_xv]; //position x,y,z of PV
243  fittedPosition[1] = vtxPositions[Trk::jet_yv];
244  fittedPosition[2] = vtxPositions[Trk::jet_zv];
245  fittedPosition[3] = nVtx > 0 ? vtxPositions[Trk::jet_phi] : NAN; // direction of the jet axis
246  fittedPosition[4] = nVtx > 0 ? vtxPositions[Trk::jet_theta] : NAN;
247 
248  fittedCov[0] = vtxCovMatrix(0,0);
249  fittedCov[1] = vtxCovMatrix(1,1);
250  fittedCov[2] = vtxCovMatrix(2,2);
251  fittedCov[3] = vtxCovMatrix(3,3);
252  fittedCov[4] = vtxCovMatrix(4,4);
253  }
254 
255  for(int i=0; i<nVtx; ++i){
256  fittedPosition[i+5] = vtxPositions[i+5]; //dist of vtxi on jet axis from PV
257  fittedCov[i+5] = vtxCovMatrix(i+5,i+5);
258  }
259 
260  newBTag->setVariable<std::vector< float > >(basename, "fittedPosition", fittedPosition);
261  newBTag->setVariable<std::vector< float > >(basename, "fittedCov", fittedCov);
262 
263  //trks at PV
264  std::vector<Trk::VxTrackAtVertex*> trackatPV;
265  std::vector< float > tracksAtPVchi2;
266  std::vector< float > tracksAtPVndf;
267  std::vector< ElementLink< xAOD::TrackParticleContainer > > tracksAtPVlinks;
268  if (vxjetcand) {
269  trackatPV = vxjetcand->getPrimaryVertex()->getTracksAtVertex();
270  std::vector<Trk::VxTrackAtVertex*>::const_iterator irBegin = trackatPV.begin();
271  std::vector<Trk::VxTrackAtVertex*>::const_iterator irEnd = trackatPV.end();
272  for (std::vector<Trk::VxTrackAtVertex*>::const_iterator it=irBegin; it!=irEnd; ++it) {
273  const Trk::FitQuality& trkquality = (*it)->trackQuality();
274  double tmpchi2 = trkquality.chiSquared();
275  int tmpndf = trkquality.numberDoF();
276  tracksAtPVchi2.push_back(float(tmpchi2));
277  tracksAtPVndf.push_back(float(tmpndf));
278  //links
279  Trk::ITrackLink* trklinks = (*it)->trackOrParticleLink();
280  const Trk::LinkToXAODTrackParticle* trkLinkTPxAOD = dynamic_cast<const Trk::LinkToXAODTrackParticle *>(trklinks);
281  if (!trkLinkTPxAOD) {
282  ATH_MSG_WARNING("#BTAG# bad ITrackLink is not a LinkToXAODTrackParticle");
283  continue;
284  }
285  const xAOD::TrackParticle* myTrklink = **trkLinkTPxAOD;
287  tpel.toContainedElement(*theTrackParticleContainer, myTrklink);
288  tracksAtPVlinks.push_back(tpel);
289  }
290  }
291 
292  newBTag->setVariable<std::vector< float > >(basename, "tracksAtPVchi2", tracksAtPVchi2);
293  newBTag->setVariable<std::vector< float > >(basename, "tracksAtPVndf", tracksAtPVndf);
294  newBTag->setVariable<std::vector< ElementLink< xAOD::TrackParticleContainer > > >(basename, "tracksAtPVlinks", tracksAtPVlinks);
295  newBTag->setDynTPELName(basename, "tracksAtPVlinks");
296 
297  StatusCode sc = m_JFvarFactory->fillJetFitterVariables(myJet, newBTag, myVertexInfoJetFitter, basename);
298  if(sc.isFailure()){
299  ATH_MSG_ERROR("#BTAG# error filling variables in JetFitterVariablesFactory" );
300  return sc;
301  }
302 
303  return StatusCode::SUCCESS;
304 
305  }
306 
308 
309  const xAOD::Vertex* primaryVertex(nullptr);
310 
311  //retrieve primary vertex
313  if (!h_VertexCollectionName.isValid()) {
314  ATH_MSG_ERROR( " cannot retrieve primary vertex container with key " << m_VertexCollectionName.key() );
315  return StatusCode::FAILURE;
316  }
317  unsigned int nVertexes = h_VertexCollectionName->size();
318  if (nVertexes == 0) {
319  ATH_MSG_DEBUG("#BTAG# Vertex container is empty");
320  return StatusCode::SUCCESS;
321  }
322  for (const auto *fz : *h_VertexCollectionName) {
323  if (fz->vertexType() == xAOD::VxType::PriVtx) {
324  primaryVertex = fz;
325  break;
326  }
327  }
328 
329 
330  if (! primaryVertex) {
331  ATH_MSG_DEBUG("#BTAG# No vertex labeled as VxType::PriVtx!");
332  xAOD::VertexContainer::const_iterator fz = h_VertexCollectionName->begin();
333  primaryVertex = *fz;
334  if (primaryVertex->nTrackParticles() == 0) {
335  ATH_MSG_DEBUG("#BTAG# PV==BeamSpot: probably poor tagging");
336  }
337  }
338 
339  int nameiter = 0;
341  SG::ReadHandle<Trk::VxSecVertexInfoContainer> h_VxSecVertexInfoName(infoCont);
342  if (h_VxSecVertexInfoName.isValid()) {
343  if (h_VxSecVertexInfoName->size() != jetContainer->size()) {
344  ATH_MSG_ERROR("Size of jet container different than size of VxSecVertexInfo: " << infoCont.key());
345  return StatusCode::FAILURE;
346  }
347 
348  Trk::VxSecVertexInfoContainer::const_iterator infoSVIter = h_VxSecVertexInfoName->begin();
349  xAOD::BTaggingContainer::iterator btagIter=btaggingContainer->begin();
350 
351  for (xAOD::JetContainer::const_iterator jetIter = jetContainer->begin(); jetIter != jetContainer->end(); ++jetIter, ++btagIter, ++infoSVIter) {
352  const xAOD::Jet& jetToTag = **jetIter;
353  const Trk::VxSecVertexInfo* myVertexInfo = *infoSVIter;
354 
355  const xAOD::TrackParticleContainer* theTrackParticleContainer = nullptr;
356 
357  std::string trackname = m_secVertexFinderTrackNameList[nameiter];
358  std::string basename = m_secVertexFinderBaseNameList[nameiter];
359 
361  trackAcc (trackname);
362  std::vector<ElementLink< xAOD::TrackParticleContainer > > tracksInJet;
363  tracksInJet = trackAcc (**btagIter);
364 
365  std::vector<ElementLink< xAOD::TrackParticleContainer > >::iterator itEL = tracksInJet.begin();
366  std::vector<ElementLink< xAOD::TrackParticleContainer > >::iterator itELend = tracksInJet.end();
367 
368  if(tracksInJet.empty()){
369  ATH_MSG_DEBUG("#BTAG# no tracks associated to the jet. Set some with the track selection tool " << trackname << " for VertexFinderxAODBaseName "<< basename);
370  if("SV1" == basename ||"SV1Flip" == basename ){
371  std::vector<ElementLink<xAOD::TrackParticleContainer> > TrkList;
372  (*btagIter)->setSV1_TrackParticleLinks(TrkList);
373  std::vector<ElementLink<xAOD::TrackParticleContainer> > badtrackEL;
374  (*btagIter)->setVariable<std::vector<ElementLink<xAOD::TrackParticleContainer> > >(basename, "badTracksIP", badtrackEL);
375  (*btagIter)->setDynTPELName(basename, "badTracksIP");
376  std::vector< ElementLink< xAOD::VertexContainer > > SVertexLinks;
377  (*btagIter)->setVariable<std::vector<ElementLink<xAOD::VertexContainer> > >(basename, "vertices", SVertexLinks);
378  (*btagIter)->setDynVxELName(basename, "vertices");
379  }
380  else if("MSV" == basename){
381  std::vector<ElementLink<xAOD::TrackParticleContainer> > badtrackEL;
382  (*btagIter)->setVariable<std::vector<ElementLink<xAOD::TrackParticleContainer> > >(basename, "badTracksIP", badtrackEL);
383  (*btagIter)->setDynTPELName(basename, "badTracksIP");
384  std::vector< ElementLink< xAOD::VertexContainer > > SVertexLinks;
385  (*btagIter)->setVariable<std::vector<ElementLink<xAOD::VertexContainer> > >(basename, "vertices", SVertexLinks);
386  (*btagIter)->setDynVxELName(basename, "vertices");
387  }
388  else if("JetFitter" == basename || "JetFitterFlip" == basename) {
389  std::vector< ElementLink< xAOD::TrackParticleContainer > > tracksAtPVlinks;
390  (*btagIter)->setVariable<std::vector< ElementLink< xAOD::TrackParticleContainer > > >(basename, "tracksAtPVlinks", tracksAtPVlinks);
391  (*btagIter)->setDynTPELName(basename, "tracksAtPVlinks");
392  }
393  }
394 
395  for ( ; itEL != itELend; ++itEL ) {
397 
398  theTrackParticleContainer = (*itEL).getStorableObjectPointer();
399  }
400 
401  if (basename == "SV1" || basename == "SV1Flip") {
402  const Trk::VxSecVKalVertexInfo* myVertexInfoVKal = dynamic_cast<const Trk::VxSecVKalVertexInfo*>(myVertexInfo);
403  ATH_MSG_DEBUG("#BTAG# Found valid VKalVertexInfo information: " << infoCont.key());
404  StatusCode sc = fillVkalVariables(**jetIter, *btagIter, myVertexInfoVKal, theTrackParticleContainer, basename);
405  if(sc.isFailure()){
406  ATH_MSG_ERROR("#BTAG# error filling variables from VxSecVKalVertexInfo for " << basename);
407  return sc;
408  }
409  } else if (basename == "JetFitter" || basename == "JetFitterFlip") {
410  const Trk::VxJetFitterVertexInfo* myVertexInfoJetFitter = dynamic_cast<const Trk::VxJetFitterVertexInfo*>(myVertexInfo);
411  ATH_MSG_DEBUG("#BTAG# Found valid VxJetFitterVertexInfo information: " << infoCont.key());
412  StatusCode sc = fillJFVariables(jetToTag, *btagIter, myVertexInfoJetFitter, theTrackParticleContainer, basename);
413  if(sc.isFailure()){
414  ATH_MSG_ERROR("#BTAG# error filling variables from VxJetFitterVertexInfo for " << basename);
415  return sc;
416  }
417  } else {
418  ATH_MSG_DEBUG("#BTAG# BTagLightSecVertexing: VxSecVertexInfo pointer cannot be interpreted for " << basename);
419  }
420  }
421  }
422  else {
423  ATH_MSG_DEBUG("#BTAG# VxJetFitterVertexInfo container " << infoCont.key() << " is not valid");
424  }
425  ++nameiter;
426  }// for loop on sec vertex info containers
427 
428  return StatusCode::SUCCESS;
429  }
430 
431 } // namespace
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Trk::VertexPositions::position
const Amg::VectorX & position() const
return position of vertex
Definition: VertexPositions.cxx:95
ShallowCopy.h
Analysis::BTagLightSecVertexing::m_VxSecVertexInfoNames
SG::ReadHandleKeyArray< Trk::VxSecVertexInfoContainer > m_VxSecVertexInfoNames
Definition: BTagLightSecVertexing.h:62
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
Trk::VxJetCandidate::getVerticesOnJetAxis
const std::vector< VxVertexOnJetAxis * > & getVerticesOnJetAxis(void) const
Definition: VxJetCandidate.cxx:543
Amg::VectorX
Eigen::Matrix< double, Eigen::Dynamic, 1 > VectorX
Dynamic Vector - dynamic allocation.
Definition: EventPrimitives.h:32
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:29
xAOD::Vertex_v1::nTrackParticles
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
Definition: Vertex_v1.cxx:270
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Trk::VxSecVKalVertexInfo::n2trackvertices
int n2trackvertices() const
Definition: VxSecVKalVertexInfo.h:177
IParticle.h
Trk::VxVertexOnJetAxis::getTracksAtVertex
const std::vector< VxTrackAtVertex * > & getTracksAtVertex(void) const
get Tracks At Vertex Method
Definition: VxVertexOnJetAxis.cxx:102
Trk::VxJetFitterVertexInfo::getTwoTrackVerticesInJet
const Trk::TwoTrackVerticesInJet * getTwoTrackVerticesInJet() const
Definition: VxJetFitterVertexInfo.h:100
Trk::jet_theta
@ jet_theta
Definition: JetVtxParamDefs.h:28
Analysis::BTagLightSecVertexing::initialize
virtual StatusCode initialize() override
Definition: BTagLightSecVertexing.cxx:44
Analysis::BTagLightSecVertexing::m_secVertexFinderBaseNameList
std::vector< std::string > m_secVertexFinderBaseNameList
Definition: BTagLightSecVertexing.h:55
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::VxSecVertexInfo::vertices
const std::vector< xAOD::Vertex * > & vertices() const
Definition: VxSecVertexInfo.cxx:100
VxVertexOnJetAxis.h
VxJetCandidate.h
skel.it
it
Definition: skel.GENtoEVGEN.py:423
ParticleTest.tp
tp
Definition: ParticleTest.py:25
Trk::jet_xv
@ jet_xv
Definition: JetVtxParamDefs.h:27
xAOD::SV1_N2Tpair
@ SV1_N2Tpair
SV1 : Number of 2-track pairs.
Definition: BTaggingEnums.h:35
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
Analysis::BTagLightSecVertexing::m_secVertexFinderTrackNameList
std::vector< std::string > m_secVertexFinderTrackNameList
Definition: BTagLightSecVertexing.h:54
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
xAOD::BTagging_v1::setDynTPELName
void setDynTPELName(const std::string &taggername, const std::string &variablename)
Definition: BTagging_v1.cxx:537
BTagVertexContainer.h
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
xAOD::BTagging_v1::setSV0_TrackParticleLinks
void setSV0_TrackParticleLinks(const TPELVec_t &value)
set vector of SV0 TrackParticle ElementLinks
Definition: BTagging_v1.cxx:45
Trk::VxSecVKalVertexInfo::mass
double mass() const
Definition: VxSecVKalVertexInfo.h:157
Trk::VxJetCandidate::getRecVertexPositions
const Trk::RecVertexPositions & getRecVertexPositions() const
Definition: VxJetCandidate.cxx:519
Analysis::BTagLightSecVertexing::m_JFvarFactory
ToolHandle< IJetFitterVariablesFactory > m_JFvarFactory
Definition: BTagLightSecVertexing.h:52
Trk::VxJetCandidate::getPrimaryVertex
const VxVertexOnJetAxis * getPrimaryVertex(void) const
Definition: VxJetCandidate.cxx:551
Analysis::BTagLightSecVertexing::BTagSecVertexing_exec
virtual StatusCode BTagSecVertexing_exec(const xAOD::JetContainer *jetContainer, xAOD::BTaggingContainer *btaggingContainer) const override
Definition: BTagLightSecVertexing.cxx:307
Trk::TwoTrackVerticesInJet
Definition: TwoTrackVerticesInJet.h:45
xAOD::BTagging_v1::setVariable
void setVariable(const std::string &taggername, const std::string &variablename, const T &value)
set variables by string
Definition: BTagging_v1.h:310
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LinkToXAODTrackParticle.h
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
lumiFormat.i
int i
Definition: lumiFormat.py:92
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::SV0_NGTinSvx
@ SV0_NGTinSvx
SV0 : Number of good tracks in vertex.
Definition: BTaggingEnums.h:20
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::jet_yv
@ jet_yv
Definition: JetVtxParamDefs.h:27
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:571
VxTrackAtVertex.h
Trk::LinkToXAODTrackParticle
Element link to XAOD TrackParticle.
Definition: LinkToXAODTrackParticle.h:33
Trk::VxSecVKalVertexInfo::dstToMatLay
double dstToMatLay() const
Definition: VxSecVKalVertexInfo.h:169
xAOD::BTagging_v1::setDynBTagVxELName
void setDynBTagVxELName(const std::string &taggername, const std::string &variablename)
Definition: BTagging_v1.cxx:548
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAOD::SV1_efracsvx
@ SV1_efracsvx
SV1 : energy fraction.
Definition: BTaggingEnums.h:39
Trk::FitQuality
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition: FitQuality.h:97
xAOD::SV0_N2Tpair
@ SV0_N2Tpair
SV0 : Number of 2-track pairs.
Definition: BTaggingEnums.h:22
xAOD::BTagging_v1
Definition: BTagging_v1.h:39
DataVector< xAOD::TrackParticle_v1 >
Vertex.h
Analysis::BTagLightSecVertexing::BTagLightSecVertexing
BTagLightSecVertexing(const std::string &, const std::string &, const IInterface *)
Constructors and destructors.
Definition: BTagLightSecVertexing.cxx:32
Trk::VxSecVKalVertexInfo::badTracksIP
std::vector< const xAOD::IParticle * > badTracksIP() const
Definition: VxSecVKalVertexInfo.cxx:162
xAOD::SV0_efracsvx
@ SV0_efracsvx
SV0 : energy fraction.
Definition: BTaggingEnums.h:26
Trk::VxJetFitterVertexInfo
Definition: VxJetFitterVertexInfo.h:58
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Analysis::BTagLightSecVertexing::m_jetJFVtxLinkName
SG::ReadDecorHandleKey< xAOD::JetContainer > m_jetJFVtxLinkName
Definition: BTagLightSecVertexing.h:60
Trk::VxSecVKalVertexInfo::energyTrkInJet
double energyTrkInJet() const
Definition: VxSecVKalVertexInfo.h:165
JetAnalysisAlgorithmsTest_EMTopo_eljob.jetContainer
string jetContainer
Definition: JetAnalysisAlgorithmsTest_EMTopo_eljob.py:36
Analysis::BTagLightSecVertexing::m_jetSVLinkName
SG::ReadDecorHandleKey< xAOD::JetContainer > m_jetSVLinkName
Definition: BTagLightSecVertexing.h:58
xAOD::JetFitter_N2Tpair
@ JetFitter_N2Tpair
JetFitter : Number of 2-track pairs.
Definition: BTaggingEnums.h:60
Analysis::BTagLightSecVertexing::fillJFVariables
StatusCode fillJFVariables(const xAOD::Jet &, xAOD::BTagging *, const Trk::VxJetFitterVertexInfo *, const xAOD::TrackParticleContainer *, const std::string &) const
Definition: BTagLightSecVertexing.cxx:174
xAOD::SV1_NGTinSvx
@ SV1_NGTinSvx
SV1 : Number of good tracks in vertex.
Definition: BTaggingEnums.h:33
Analysis
The namespace of all packages in PhysicsAnalysis/JetTagging.
Definition: BTaggingCnvAlg.h:20
Analysis::BTagLightSecVertexing::fillVkalVariables
StatusCode fillVkalVariables(const xAOD::Jet &, xAOD::BTagging *, const Trk::VxSecVKalVertexInfo *, const xAOD::TrackParticleContainer *, const std::string &) const
Definition: BTagLightSecVertexing.cxx:78
Trk::VxSecVertexInfo
Definition: VxSecVertexInfo.h:63
Trk::jet_zv
@ jet_zv
position x,y,z of primary vertex
Definition: JetVtxParamDefs.h:27
Analysis::BTagLightSecVertexing::m_VertexCollectionName
SG::ReadHandleKey< xAOD::VertexContainer > m_VertexCollectionName
Definition: BTagLightSecVertexing.h:57
Trk::VxJetCandidate
Definition: VxJetCandidate.h:72
Trk::RecVertexPositions
Definition: RecVertexPositions.h:34
Trk::VxSecVKalVertexInfo::energyFraction
double energyFraction() const
Definition: VxSecVKalVertexInfo.h:161
Trk::VxSecVKalVertexInfo
Definition: VxSecVKalVertexInfo.h:70
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
Trk::RecVertexPositions::covariancePosition
Amg::MatrixX const & covariancePosition() const
return the covDeltaV matrix of the vertex fit
Definition: RecVertexPositions.cxx:171
VxSecVKalVertexInfo.h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::SV0_masssvx
@ SV0_masssvx
SV0 : vertex mass.
Definition: BTaggingEnums.h:24
TwoTrackVerticesInJet.h
Analysis::BTagLightSecVertexing::m_jetJFFlipVtxLinkName
SG::ReadDecorHandleKey< xAOD::JetContainer > m_jetJFFlipVtxLinkName
Definition: BTagLightSecVertexing.h:61
xAOD::BTagging_v1::setSV1_TrackParticleLinks
void setSV1_TrackParticleLinks(const TPELVec_t &value)
set vector of SV1 TrackParticle ElementLinks
Definition: BTagging_v1.cxx:114
Trk::FitQuality::chiSquared
double chiSquared() const
returns the of the overall track fit
Definition: FitQuality.h:56
ReadDecorHandle.h
Handle class for reading a decoration on an object.
Trk::jet_phi
@ jet_phi
Definition: JetVtxParamDefs.h:28
Trk::FitQuality::numberDoF
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
Definition: FitQuality.h:60
Trk::VxJetFitterVertexInfo::verticesJF
const std::vector< Trk::VxJetCandidate * > & verticesJF() const
Definition: VxJetFitterVertexInfo.h:112
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
VxJetFitterVertexInfo.h
AthAlgTool
Definition: AthAlgTool.h:26
xAOD::BTagging_v1::setTaggerInfo
void setTaggerInfo(int value, BTagInfo info)
set taggers information (int)
Analysis::BTagLightSecVertexing::m_jetSVFlipLinkName
SG::ReadDecorHandleKey< xAOD::JetContainer > m_jetSVFlipLinkName
Definition: BTagLightSecVertexing.h:59
Trk::TwoTrackVerticesInJet::getTwoTrackVertice
const std::vector< const xAOD::Vertex * > & getTwoTrackVertice() const
Get the two track vertices (please do not delete the pointers)
Definition: TwoTrackVerticesInJet.cxx:149
SG::ReadDecorHandle::isAvailable
bool isAvailable()
Test to see if this variable exists in the store, for the referenced object.
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
BTagLightSecVertexing.h
RecVertexPositions.h
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
AuxElement.h
Base class for elements of a container that can have aux data.
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
xAOD::BTagging_v1::setDynVxELName
void setDynVxELName(const std::string &taggername, const std::string &variablename)
Definition: BTagging_v1.cxx:542
xAOD::SV1_masssvx
@ SV1_masssvx
SV1 : vertex mass.
Definition: BTaggingEnums.h:37
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
beamspotman.basename
basename
Definition: beamspotman.py:640