ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Rec::GNNVertexFitterTool Class Reference

#include <GNNVertexFitterTool.h>

Inheritance diagram for Rec::GNNVertexFitterTool:
Collaboration diagram for Rec::GNNVertexFitterTool:

Classes

struct  WrkVrt
 

Public Member Functions

 GNNVertexFitterTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~GNNVertexFitterTool ()
 
StatusCode initialize ()
 
StatusCode finalize ()
 
virtual StatusCode fitAllVertices (const xAOD::JetContainer *, xAOD::VertexContainer *, const xAOD::Vertex &primaryVertex, const EventContext &) const
 
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 > &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
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Public Attributes

ToolHandle< Trk::TrkVKalVrtFitterm_vertexFitterTool
 
SG::ReadDecorHandleKey< xAOD::JetContainerm_trackLinksKey
 
SG::ReadDecorHandleKey< xAOD::JetContainerm_trackOriginsKey
 
SG::ReadDecorHandleKey< xAOD::JetContainerm_vertexLinksKey
 
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey {this, "eventInfoKey", "EventInfo", "EventInfo container to use"}
 
SG::WriteDecorHandleKey< xAOD::JetContainerm_jetWriteDecorKeyVertexLink
 
SG::WriteDecorHandleKey< xAOD::JetContainerm_jetWriteDecorKeyVertexNumber
 
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"}
 
const xAOD::Vertexm_thePV
 

Protected Member Functions

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...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

TLorentzVector TotalMom (const std::vector< const xAOD::TrackParticle * > &selTrk) const
 
double vrtVrtDist (const xAOD::Vertex &primVrt, const Amg::Vector3D &secVrt, const std::vector< double > &vrtErr, double &signif) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::AuxElement::Decorator< float > m_deco_mass
 
SG::AuxElement::Decorator< float > m_deco_pt
 
SG::AuxElement::Decorator< float > m_deco_charge
 
SG::AuxElement::Decorator< float > m_deco_vPos
 
SG::AuxElement::Decorator< float > m_deco_lxy
 
SG::AuxElement::Decorator< float > m_deco_sig3D
 
SG::AuxElement::Decorator< float > m_deco_deltaR
 
SG::AuxElement::Decorator< float > m_deco_ntrk
 
SG::AuxElement::Decorator< float > m_deco_lxyz
 
SG::AuxElement::Decorator< float > m_deco_eFrac
 
SG::AuxElement::Decorator< float > m_deco_nHFTracks
 
StringProperty m_gnnModel {this, "GNNModel", "GN2v01", "GNN model being used" }
 
StringProperty m_jetCollection {this, "JetCollection", "AntiKt4EMPFlowJets", "Jet Collection being used" }
 
BooleanProperty m_includePrimaryVertex {this, "includePrimaryVertex", false, "Include Primary Vertices"}
 
BooleanProperty m_removeNonHFVertices {this, "removeNonHFVertices", true, "Remove vertices with no heavy flavour tracks"}
 
BooleanProperty m_doInclusiveVertexing {this, "doInclusiveVertexing", false, "Merge all vertices so that there is at most one vertex per jet"}
 
DoubleProperty m_maxChi2 {this, "maxChi2", 20, "Maximum Chi Squared"}
 
BooleanProperty m_applyCuts {this, "applyCuts", false, "Cut on vertex properties"}
 
DoubleProperty m_minLxy {this, "minLxy", 0.0, "Minimum radial distance from the PV"}
 
DoubleProperty m_maxLxy {this, "maxLxy", 1e5, "Maximum radial distance from the PV"}
 
DoubleProperty m_minSig3D {this, "minSig3D", 0, "Minimum 3D significance from the PV"}
 
DoubleProperty m_HFRatioThres {this, "HFRatio", 0.0, "The threshold for the Ratio between HF tracks and all track for a vertex"}
 
DoubleProperty m_minNTrack {this, "minNTrk", 2, "Minimum number of tracks in a vertex"}
 
double m_massPi
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 60 of file GNNVertexFitterTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ GNNVertexFitterTool()

Rec::GNNVertexFitterTool::GNNVertexFitterTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 13 of file GNNVertexFitterTool.cxx.

15  : AthAlgTool(type, name, parent), m_vertexFitterTool("Trk::TrkVKalVrtFitter/VertexFitterTool", this),
16  m_deco_mass("mass"),
17  m_deco_pt("pt"),
18  m_deco_charge("charge"),
19  m_deco_vPos("vPos"),
20  m_deco_lxy("Lxy"),
21  m_deco_sig3D("significance3D"),
22  m_deco_deltaR("deltaR"),
23  m_deco_ntrk("ntrk"),
24  m_deco_lxyz("Lxyz"),
25  m_deco_eFrac("efracsv"),
26  m_deco_nHFTracks("nHFtrk"){
27  declareInterface<IGNNVertexFitterInterface>(this);
28  declareProperty("JetTrackLinks", m_trackLinksKey = "AntiKt4EMPFlow."+m_gnnModel+"_TrackLinks");
29  declareProperty("JetTrackOrigins", m_trackOriginsKey = "AntiKt4EMPFlow."+m_gnnModel+"_TrackOrigin");
30  declareProperty("JetVertexLinks", m_vertexLinksKey = "AntiKt4EMPFlow."+m_gnnModel+"_VertexIndex");
31  declareProperty("VertexFitterTool", m_vertexFitterTool, "Vertex fitting tool");
32  m_massPi = 139.5702 * Gaudi::Units::MeV;
33 }

◆ ~GNNVertexFitterTool()

Rec::GNNVertexFitterTool::~GNNVertexFitterTool ( )
virtual

Definition at line 36 of file GNNVertexFitterTool.cxx.

36 { ATH_MSG_DEBUG("GNNVertexFitterTool destructor called"); }

Member Function Documentation

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

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

Add StoreName to extra input/output deps as needed.

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

◆ finalize()

StatusCode Rec::GNNVertexFitterTool::finalize ( )

Definition at line 353 of file GNNVertexFitterTool.cxx.

353 { return StatusCode::SUCCESS; }

◆ fitAllVertices()

StatusCode Rec::GNNVertexFitterTool::fitAllVertices ( const xAOD::JetContainer inJetContainer,
xAOD::VertexContainer outVertexContainer,
const xAOD::Vertex primaryVertex,
const EventContext &  ctx 
) const
virtual

Implements Rec::IGNNVertexFitterInterface.

Definition at line 101 of file GNNVertexFitterTool.cxx.

103  {
104 
105  using TLC = std::vector<ElementLink<DataVector<xAOD::TrackParticle_v1>>>;
107 
108  // Read Decor Handle for Track links and Vertex links
113  jetWriteDecorHandleVertexLink(m_jetWriteDecorKeyVertexLink, ctx);
114 
115  // Loop over the jets
116  for (const auto &jet : *inJetContainer) {
117 
118  // Retrieve the Vertex and Track Collections
119  auto vertexCollection = vertexLinksHandle(*jet);
120  auto trackCollection = trackLinksHandle(*jet);
121  auto trackOriginCollection = trackOriginsHandle(*jet);
122 
123  using indexList = std::vector<int>;
124  using trackCountMap = std::map<char, std::set<TL>>;
125 
126  indexList iList(vertexCollection.size());
127 
128  trackCountMap allTracksMap; // All the vertices and the corresponding track links
129  trackCountMap heavyFlavourVertexMap; // All Heavy Flavour Tracks associated with a vertex
130  trackCountMap primaryVertexMap; // All Primary Tracks associated with a vertex
131  trackCountMap fittingMap; // Map filled with vertices to be fitted
132 
133  fittingMap.clear();
134  heavyFlavourVertexMap.clear();
135  primaryVertexMap.clear();
136  allTracksMap.clear();
137 
138  // Fill the map of predicted vertex indices -> tracks
139  for (int index=0; index < int(vertexCollection.size()); index++){
140 
141  auto vertex = vertexCollection[index];
142  auto trackOrigin = trackOriginCollection[index];
143  auto trackLink = trackCollection[index];
144 
145  allTracksMap[vertex].insert(trackLink);
146 
147  // Add heavy flavour tracks associated to each vertex to the map
148  if (InDet::ExclusiveOrigin::FromB == trackOrigin || InDet::ExclusiveOrigin::FromBC == trackOrigin ||
149  InDet::ExclusiveOrigin::FromC == trackOrigin) {
150  heavyFlavourVertexMap[vertex].insert(trackLink);
151  }
152  // Add primary tracks associated to each vertex to the map
153  else if (InDet::ExclusiveOrigin::Primary == trackOrigin) {
154  primaryVertexMap[vertex].insert(trackLink);
155  }
156  };
157 
158  // determine the vertex with the largest number of primary tracks
159  auto pvCandidate = std::max_element(
160  primaryVertexMap.begin(), primaryVertexMap.end(),
161  [](const auto& a, const auto& b) { return a.second.size() < b.second.size(); }
162  )->first;
163 
164  // filter the vertices according to the configurable options
165  for (const auto &vertexTrackPair : allTracksMap) {
166  // unpack vertexTrackPair
167  const auto &[vertex, trackLinks] = vertexTrackPair;
168  // remove the primary vertex unless requested
170  if(vertex == pvCandidate) {
171  continue;
172  }
173  }
174  // remove vertices which do not contain any heavy flavour tracks if requested
176  if (heavyFlavourVertexMap.find(vertex) == heavyFlavourVertexMap.end()) {
177  continue;
178  }
179  }
180  // remove vertices which contain insufficient heavy flavour tracks if requested
181  if(m_HFRatioThres > 0) {
182  if (heavyFlavourVertexMap.find(vertex) != heavyFlavourVertexMap.end() &&
183  (static_cast<float>(heavyFlavourVertexMap[vertex].size()) / trackLinks.size()) < m_HFRatioThres) {
184  continue;
185  }
186  }
187  // now we've passed all vertex filtering, add the vertex to the fittingMap
188  fittingMap.insert(std::pair<char, std::set<TL>>(vertex, trackLinks));
189  }
190  // If inclusive vertexing is requested, merge the vertices
192  // Define the key for the merged vertex
193  const char mergedVertexKey = 0;
194  std::set<TL> mergedSet;
195  std::set<TL> combinedHFTracks;
196 
197  // Iterate over the fittingMap to merge all sets into a single set
198  for (const auto &vertexTrackPair : fittingMap) {
199  // Insert all elements from trackLinks into mergedSet
200  mergedSet.insert(vertexTrackPair.second.begin(), vertexTrackPair.second.end());
201  combinedHFTracks.insert(heavyFlavourVertexMap[vertexTrackPair.first].begin(), heavyFlavourVertexMap[vertexTrackPair.first].end());
202  }
203 
204  // Clear fittingMap and insert the merged set under the mergedVertexKey
205  fittingMap.clear();
206  fittingMap[mergedVertexKey] = std::move(mergedSet);
207  heavyFlavourVertexMap.clear();
208  heavyFlavourVertexMap[mergedVertexKey] = std::move(combinedHFTracks);
209  }
210 
211  // Working xAOD
212  std::unique_ptr<workVectorArrxAOD> xAODwrk (new workVectorArrxAOD());
214 
215  // Beam Conditions
216  xAODwrk->beamX = beamSpotHandle->beamPos().x();
217  xAODwrk->beamY = beamSpotHandle->beamPos().y();
218  xAODwrk->beamZ = beamSpotHandle->beamPos().z();
219  xAODwrk->tanBeamTiltX = tan(beamSpotHandle->beamTilt(0));
220  xAODwrk->tanBeamTiltY = tan(beamSpotHandle->beamTilt(1));
221 
222  std::unique_ptr<std::vector<WrkVrt>> wrkVrtSet = std::make_unique<std::vector<WrkVrt>>();
223  WrkVrt newvrt;
224  newvrt.Good = true;
225  std::unique_ptr<Trk::IVKalState> state = m_vertexFitterTool->makeState();
226  std::vector<const xAOD::NeutralParticle *> neutralPartDummy(0);
227  Amg::Vector3D IniVrt(0., 0., 0.);
228 
229  for (const auto &pair : fittingMap) {
230  // Need at least 2 tracks to perform a fit
231  if (pair.second.size() >= 2) {
232  int NTRKS = pair.second.size();
233  std::vector<double> InpMass(NTRKS, m_massPi);
234  m_vertexFitterTool->setMassInputParticles(InpMass, *state);
235 
236  xAODwrk->listSelTracks.clear();
237 
238  for (auto TrackLink : pair.second) {
239  xAODwrk->listSelTracks.push_back(*TrackLink);
240  }
241 
242  Amg::Vector3D FitVertex, vDist;
243  TLorentzVector jetDir(jet->p4()); // Jet Direction
244 
245  // Get Estimate
246  StatusCode sc = m_vertexFitterTool->VKalVrtFitFast(xAODwrk->listSelTracks, FitVertex, *state);
247 
248  if (sc.isFailure() || FitVertex.perp() > m_maxLxy) { /* No initial estimation */
249  IniVrt = primVrt.position();
251  IniVrt.setZero();
252  } else {
253  vDist = FitVertex - primVrt.position();
254  double JetVrtDir = jetDir.Px() * vDist.x() + jetDir.Py() * vDist.y() + jetDir.Pz() * vDist.z();
256  JetVrtDir = fabs(JetVrtDir); /* Always positive when primary vertex is seeked for*/
257  if (JetVrtDir > 0.)
258  IniVrt = FitVertex; /* Good initial estimation */
259  else
260  IniVrt = primVrt.position();
261  }
262 
263  m_vertexFitterTool->setApproximateVertex(IniVrt.x(), IniVrt.y(), IniVrt.z(), *state);
264 
265  // Perform the Vertex Fit
266  sc = (m_vertexFitterTool->VKalVrtFit(xAODwrk->listSelTracks, neutralPartDummy, newvrt.vertex, newvrt.vertexMom,
267  newvrt.vertexCharge, newvrt.vertexCov, newvrt.chi2PerTrk, newvrt.trkAtVrt,
268  newvrt.chi2, *state, false));
269  if (sc.isFailure())
270  continue;
271 
272  // Chi2 Cut
273  auto NDOF = 2 * (newvrt.trkAtVrt.size()) - 3.0; // From VrtSecInclusive
274 
275  if (newvrt.chi2 / NDOF >= m_maxChi2)
276  continue;
277  ATH_MSG_DEBUG("Found IniVertex=" << newvrt.vertex[0] << ", " << newvrt.vertex[1] << ", " << newvrt.vertex[2]
278  << " trks " << newvrt.trkAtVrt.size());
279 
280  Amg::Vector3D vDir = newvrt.vertex - primVrt.position(); // Vertex Dirction in relation to Primary
281 
282  Amg::Vector3D jetVrtDir(jet->p4().Px(), jet->p4().Py(), jet->p4().Pz());
283 
284  double vPos =
285  (vDir.x() * newvrt.vertexMom.Px() + vDir.y() * newvrt.vertexMom.Py() + vDir.z() * newvrt.vertexMom.Pz()) /
286  newvrt.vertexMom.Rho();
287 
288  double Lxy = sqrt(vDir[0] * vDir[0] + vDir[1] * vDir[1]);
289  double Lxyz = sqrt(vDir[0] * vDir[0] + vDir[1] * vDir[1] + vDir[2] * vDir[2]);
290  ATH_MSG_DEBUG("Lxyz " << Lxyz);
291 
292  double drJPVSV = Amg::deltaR(jetVrtDir, vDir); // DeltaR
293 
294  int ntrk = newvrt.trkAtVrt.size(); // # Tracks in Vertex
295 
296  TLorentzVector MomentumVtx = TotalMom(xAODwrk->listSelTracks);
297 
298  double eRatio = MomentumVtx.E() / jet->p4().E();
299  double signif3D;
300  [[maybe_unused]] double distToPV = vrtVrtDist(primVrt, newvrt.vertex, newvrt.vertexCov, signif3D);
301 
302  // apply quality cuts
303  if (m_applyCuts) {
304  // cut on minimum number of tracks in the vertex
305  if (ntrk < m_minNTrack)
306  continue;
307  // cut on 3D significance
308  if (signif3D < m_minSig3D)
309  continue;
310  // cut on minumum transverse displacement from the PV
311  if (Lxy < m_minLxy )
312  continue;
313  }
314 
315  // Register Container
316  auto* GNNvertex = outVertexContainer->emplace_back(new xAOD::Vertex);
317 
318  for (const auto *trk : xAODwrk->listSelTracks) {
320  *(dynamic_cast<const xAOD::TrackParticleContainer *>(trk->container())),
321  trk->index());
322  GNNvertex->addTrackAtVertex(link_trk, 1.);
323  }
324 
325  //Add Vertex Info into Container
326  GNNvertex->setVertexType(xAOD::VxType::SecVtx);
327  GNNvertex->setPosition(newvrt.vertex);
328  GNNvertex->setFitQuality(newvrt.chi2, NDOF);
329 
330  m_deco_mass(*GNNvertex) = newvrt.vertexMom.M();
331  m_deco_pt(*GNNvertex) = newvrt.vertexMom.Perp();
332  m_deco_charge(*GNNvertex) = newvrt.vertexCharge;
333  m_deco_vPos(*GNNvertex) = vPos;
334  m_deco_lxy(*GNNvertex) = Lxy;
335  m_deco_lxyz(*GNNvertex) = Lxyz;
336  m_deco_sig3D(*GNNvertex) = signif3D;
337  m_deco_ntrk(*GNNvertex) = ntrk;
338  m_deco_deltaR(*GNNvertex) = drJPVSV;
339  m_deco_eFrac(*GNNvertex) = eRatio;
340  m_deco_nHFTracks(*GNNvertex) = heavyFlavourVertexMap[pair.first].size();
341 
343  linkVertex.setElement(GNNvertex);
344  linkVertex.setStorableObject(*outVertexContainer);
345  jetWriteDecorHandleVertexLink(*jet).push_back(linkVertex);
346 
347  } // end of 2 Track requirement
348  }
349  } // end loop over jets
350  return StatusCode::SUCCESS;
351 } // end performVertexFit

◆ initialize()

StatusCode Rec::GNNVertexFitterTool::initialize ( )

Definition at line 38 of file GNNVertexFitterTool.cxx.

38  {
39 
40  ATH_MSG_DEBUG("GNNVertexFitter Tool in initialize()");
41 
42  // Initialize keys
43  ATH_CHECK(m_trackLinksKey.initialize());
44  ATH_CHECK(m_trackOriginsKey.initialize());
45  ATH_CHECK(m_vertexLinksKey.initialize());
46 
47  std::string linkNameMod = "";
48  if (m_doInclusiveVertexing) linkNameMod = "Inclusive";
49  m_jetWriteDecorKeyVertexLink = m_jetCollection + "."+linkNameMod+"GNNVerticesLink";
51 
52  // Retrieve tools
53  ATH_CHECK(m_vertexFitterTool.retrieve());
54  // Additional Info for Vertex Fit
57 
58  return StatusCode::SUCCESS;
59 }

◆ inputHandles()

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

Return this algorithm's input handles.

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

◆ interfaceID()

static const InterfaceID& Rec::IGNNVertexFitterInterface::interfaceID ( )
inlinestaticinherited

Definition at line 19 of file IGNNVertexFitterInterface.h.

19 { return IID_IGNNVertexFitterInterface; }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

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

Perform system initialization for an algorithm.

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

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

◆ sysStart()

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

Handle START transition.

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

◆ TotalMom()

TLorentzVector Rec::GNNVertexFitterTool::TotalMom ( const std::vector< const xAOD::TrackParticle * > &  selTrk) const
private

Definition at line 62 of file GNNVertexFitterTool.cxx.

62  {
63  TLorentzVector sum(0., 0., 0., 0.);
64  for (int i = 0; i < (int)selTrk.size(); ++i) {
65  if (selTrk[i] == NULL)
66  continue;
67  sum += selTrk[i]->p4();
68  }
69  return sum;
70 }

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

◆ vrtVrtDist()

double Rec::GNNVertexFitterTool::vrtVrtDist ( const xAOD::Vertex primVrt,
const Amg::Vector3D secVrt,
const std::vector< double > &  vrtErr,
double &  signif 
) const
private

Definition at line 73 of file GNNVertexFitterTool.cxx.

74  {
75  double distx = primVrt.x() - secVrt.x();
76  double disty = primVrt.y() - secVrt.y();
77  double distz = primVrt.z() - secVrt.z();
78 
79  AmgSymMatrix(3) primCovMtx = primVrt.covariancePosition(); // Create
80  primCovMtx(0, 0) += secVrtErr[0];
81  primCovMtx(0, 1) += secVrtErr[1];
82  primCovMtx(1, 0) += secVrtErr[1];
83  primCovMtx(1, 1) += secVrtErr[2];
84  primCovMtx(0, 2) += secVrtErr[3];
85  primCovMtx(2, 0) += secVrtErr[3];
86  primCovMtx(1, 2) += secVrtErr[4];
87  primCovMtx(2, 1) += secVrtErr[4];
88  primCovMtx(2, 2) += secVrtErr[5];
89 
90  AmgSymMatrix(3) wgtMtx = primCovMtx.inverse();
91 
92  signif = distx * wgtMtx(0, 0) * distx + disty * wgtMtx(1, 1) * disty + distz * wgtMtx(2, 2) * distz +
93  2. * distx * wgtMtx(0, 1) * disty + 2. * distx * wgtMtx(0, 2) * distz + 2. * disty * wgtMtx(1, 2) * distz;
94  signif = std::sqrt(std::abs(signif));
95  if (signif != signif)
96  signif = 0.;
97  return std::sqrt(distx * distx + disty * disty + distz * distz);
98 }

Member Data Documentation

◆ m_applyCuts

BooleanProperty Rec::GNNVertexFitterTool::m_applyCuts {this, "applyCuts", false, "Cut on vertex properties"}
private

Definition at line 133 of file GNNVertexFitterTool.h.

◆ m_beamSpotKey

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

Definition at line 91 of file GNNVertexFitterTool.h.

◆ m_deco_charge

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_charge
private

Definition at line 117 of file GNNVertexFitterTool.h.

◆ m_deco_deltaR

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_deltaR
private

Definition at line 121 of file GNNVertexFitterTool.h.

◆ m_deco_eFrac

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_eFrac
private

Definition at line 124 of file GNNVertexFitterTool.h.

◆ m_deco_lxy

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_lxy
private

Definition at line 119 of file GNNVertexFitterTool.h.

◆ m_deco_lxyz

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_lxyz
private

Definition at line 123 of file GNNVertexFitterTool.h.

◆ m_deco_mass

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_mass
private

Definition at line 115 of file GNNVertexFitterTool.h.

◆ m_deco_nHFTracks

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_nHFTracks
private

Definition at line 125 of file GNNVertexFitterTool.h.

◆ m_deco_ntrk

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_ntrk
private

Definition at line 122 of file GNNVertexFitterTool.h.

◆ m_deco_pt

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_pt
private

Definition at line 116 of file GNNVertexFitterTool.h.

◆ m_deco_sig3D

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_sig3D
private

Definition at line 120 of file GNNVertexFitterTool.h.

◆ m_deco_vPos

SG::AuxElement::Decorator<float> Rec::GNNVertexFitterTool::m_deco_vPos
private

Definition at line 118 of file GNNVertexFitterTool.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doInclusiveVertexing

BooleanProperty Rec::GNNVertexFitterTool::m_doInclusiveVertexing {this, "doInclusiveVertexing", false, "Merge all vertices so that there is at most one vertex per jet"}
private

Definition at line 131 of file GNNVertexFitterTool.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> Rec::GNNVertexFitterTool::m_eventInfoKey {this, "eventInfoKey", "EventInfo", "EventInfo container to use"}

Definition at line 82 of file GNNVertexFitterTool.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_gnnModel

StringProperty Rec::GNNVertexFitterTool::m_gnnModel {this, "GNNModel", "GN2v01", "GNN model being used" }
private

Definition at line 127 of file GNNVertexFitterTool.h.

◆ m_HFRatioThres

DoubleProperty Rec::GNNVertexFitterTool::m_HFRatioThres {this, "HFRatio", 0.0, "The threshold for the Ratio between HF tracks and all track for a vertex"}
private

Definition at line 137 of file GNNVertexFitterTool.h.

◆ m_includePrimaryVertex

BooleanProperty Rec::GNNVertexFitterTool::m_includePrimaryVertex {this, "includePrimaryVertex", false, "Include Primary Vertices"}
private

Definition at line 129 of file GNNVertexFitterTool.h.

◆ m_jetCollection

StringProperty Rec::GNNVertexFitterTool::m_jetCollection {this, "JetCollection", "AntiKt4EMPFlowJets", "Jet Collection being used" }
private

Definition at line 128 of file GNNVertexFitterTool.h.

◆ m_jetWriteDecorKeyVertexLink

SG::WriteDecorHandleKey<xAOD::JetContainer> Rec::GNNVertexFitterTool::m_jetWriteDecorKeyVertexLink
Initial value:
{
this, "jetDecorKeyJetLink", "", "WriteDecorHandleKey for adding VertexLink to Jets"}

Definition at line 85 of file GNNVertexFitterTool.h.

◆ m_jetWriteDecorKeyVertexNumber

SG::WriteDecorHandleKey<xAOD::JetContainer> Rec::GNNVertexFitterTool::m_jetWriteDecorKeyVertexNumber
Initial value:
{
this, "jetDecorKeyVertexNumber", "", "WriteDecorHandleKey for adding number of vertices within a Jet"}

Definition at line 87 of file GNNVertexFitterTool.h.

◆ m_massPi

double Rec::GNNVertexFitterTool::m_massPi
private

Definition at line 139 of file GNNVertexFitterTool.h.

◆ m_maxChi2

DoubleProperty Rec::GNNVertexFitterTool::m_maxChi2 {this, "maxChi2", 20, "Maximum Chi Squared"}
private

Definition at line 132 of file GNNVertexFitterTool.h.

◆ m_maxLxy

DoubleProperty Rec::GNNVertexFitterTool::m_maxLxy {this, "maxLxy", 1e5, "Maximum radial distance from the PV"}
private

Definition at line 135 of file GNNVertexFitterTool.h.

◆ m_minLxy

DoubleProperty Rec::GNNVertexFitterTool::m_minLxy {this, "minLxy", 0.0, "Minimum radial distance from the PV"}
private

Definition at line 134 of file GNNVertexFitterTool.h.

◆ m_minNTrack

DoubleProperty Rec::GNNVertexFitterTool::m_minNTrack {this, "minNTrk", 2, "Minimum number of tracks in a vertex"}
private

Definition at line 138 of file GNNVertexFitterTool.h.

◆ m_minSig3D

DoubleProperty Rec::GNNVertexFitterTool::m_minSig3D {this, "minSig3D", 0, "Minimum 3D significance from the PV"}
private

Definition at line 136 of file GNNVertexFitterTool.h.

◆ m_removeNonHFVertices

BooleanProperty Rec::GNNVertexFitterTool::m_removeNonHFVertices {this, "removeNonHFVertices", true, "Remove vertices with no heavy flavour tracks"}
private

Definition at line 130 of file GNNVertexFitterTool.h.

◆ m_thePV

const xAOD::Vertex* Rec::GNNVertexFitterTool::m_thePV

Definition at line 94 of file GNNVertexFitterTool.h.

◆ m_trackLinksKey

SG::ReadDecorHandleKey<xAOD::JetContainer> Rec::GNNVertexFitterTool::m_trackLinksKey
Initial value:
{this, "trackLinksKey", "",
"Jet GNN Deco Read Key for track link"}

Definition at line 76 of file GNNVertexFitterTool.h.

◆ m_trackOriginsKey

SG::ReadDecorHandleKey<xAOD::JetContainer> Rec::GNNVertexFitterTool::m_trackOriginsKey
Initial value:
{this, "trackOriginsKey", "",
"Jet GNN Deco Read Key for track origin"}

Definition at line 78 of file GNNVertexFitterTool.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vertexFitterTool

ToolHandle<Trk::TrkVKalVrtFitter> Rec::GNNVertexFitterTool::m_vertexFitterTool

Definition at line 73 of file GNNVertexFitterTool.h.

◆ m_vertexLinksKey

SG::ReadDecorHandleKey<xAOD::JetContainer> Rec::GNNVertexFitterTool::m_vertexLinksKey
Initial value:
{this, "vertexLinksKey", "",
"Jet GNN Deco Read Key for vertex link"}

Definition at line 80 of file GNNVertexFitterTool.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
Rec::GNNVertexFitterTool::m_maxChi2
DoubleProperty m_maxChi2
Definition: GNNVertexFitterTool.h:132
xAOD::Vertex_v1::x
float x() const
Returns the x position.
Rec::GNNVertexFitterTool::m_deco_nHFTracks
SG::AuxElement::Decorator< float > m_deco_nHFTracks
Definition: GNNVertexFitterTool.h:125
Rec::GNNVertexFitterTool::m_vertexLinksKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_vertexLinksKey
Definition: GNNVertexFitterTool.h:80
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
DataVector::emplace_back
value_type emplace_back(value_type pElem)
Add an element to the end of the collection.
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Rec::GNNVertexFitterTool::m_deco_sig3D
SG::AuxElement::Decorator< float > m_deco_sig3D
Definition: GNNVertexFitterTool.h:120
InDet::ExclusiveOrigin::FromC
@ FromC
Definition: InDetTrackTruthOriginDefs.h:166
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
index
Definition: index.py:1
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Rec::GNNVertexFitterTool::m_jetWriteDecorKeyVertexLink
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetWriteDecorKeyVertexLink
Definition: GNNVertexFitterTool.h:85
Rec::GNNVertexFitterTool::m_deco_lxy
SG::AuxElement::Decorator< float > m_deco_lxy
Definition: GNNVertexFitterTool.h:119
python.SystemOfUnits.MeV
int MeV
Definition: SystemOfUnits.py:154
Rec::GNNVertexFitterTool::m_trackLinksKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_trackLinksKey
Definition: GNNVertexFitterTool.h:76
Rec::GNNVertexFitterTool::m_deco_deltaR
SG::AuxElement::Decorator< float > m_deco_deltaR
Definition: GNNVertexFitterTool.h:121
Rec::GNNVertexFitterTool::m_minSig3D
DoubleProperty m_minSig3D
Definition: GNNVertexFitterTool.h:136
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Rec::GNNVertexFitterTool::m_includePrimaryVertex
BooleanProperty m_includePrimaryVertex
Definition: GNNVertexFitterTool.h:129
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Rec::GNNVertexFitterTool::m_deco_charge
SG::AuxElement::Decorator< float > m_deco_charge
Definition: GNNVertexFitterTool.h:117
Rec::GNNVertexFitterTool::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: GNNVertexFitterTool.h:91
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Rec::GNNVertexFitterTool::m_vertexFitterTool
ToolHandle< Trk::TrkVKalVrtFitter > m_vertexFitterTool
Definition: GNNVertexFitterTool.h:73
InDet::ExclusiveOrigin::Primary
@ Primary
Definition: InDetTrackTruthOriginDefs.h:163
Rec::GNNVertexFitterTool::m_massPi
double m_massPi
Definition: GNNVertexFitterTool.h:139
Rec::GNNVertexFitterTool::m_deco_eFrac
SG::AuxElement::Decorator< float > m_deco_eFrac
Definition: GNNVertexFitterTool.h:124
Rec::GNNVertexFitterTool::m_trackOriginsKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_trackOriginsKey
Definition: GNNVertexFitterTool.h:78
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
Rec::GNNVertexFitterTool::m_jetCollection
StringProperty m_jetCollection
Definition: GNNVertexFitterTool.h:128
lumiFormat.i
int i
Definition: lumiFormat.py:92
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::VxType::SecVtx
@ SecVtx
Secondary vertex.
Definition: TrackingPrimitives.h:572
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:99
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::Vertex_v1::z
float z() const
Returns the z position.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
DataVector< xAOD::TrackParticle_v1 >
Rec::GNNVertexFitterTool::m_doInclusiveVertexing
BooleanProperty m_doInclusiveVertexing
Definition: GNNVertexFitterTool.h:131
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
Rec::GNNVertexFitterTool::m_minLxy
DoubleProperty m_minLxy
Definition: GNNVertexFitterTool.h:134
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Rec::GNNVertexFitterTool::m_applyCuts
BooleanProperty m_applyCuts
Definition: GNNVertexFitterTool.h:133
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Rec::GNNVertexFitterTool::m_maxLxy
DoubleProperty m_maxLxy
Definition: GNNVertexFitterTool.h:135
Rec::GNNVertexFitterTool::m_removeNonHFVertices
BooleanProperty m_removeNonHFVertices
Definition: GNNVertexFitterTool.h:130
Rec::GNNVertexFitterTool::m_deco_mass
SG::AuxElement::Decorator< float > m_deco_mass
Definition: GNNVertexFitterTool.h:115
Amg::deltaR
double deltaR(const Amg::Vector3D &v1, const Amg::Vector3D &v2)
Definition: GeoPrimitivesHelpers.h:122
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
DeMoScan.index
string index
Definition: DeMoScan.py:362
Rec::GNNVertexFitterTool::TotalMom
TLorentzVector TotalMom(const std::vector< const xAOD::TrackParticle * > &selTrk) const
Definition: GNNVertexFitterTool.cxx:62
a
TList * a
Definition: liststreamerinfos.cxx:10
Rec::GNNVertexFitterTool::m_HFRatioThres
DoubleProperty m_HFRatioThres
Definition: GNNVertexFitterTool.h:137
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
InDet::ExclusiveOrigin::FromBC
@ FromBC
Definition: InDetTrackTruthOriginDefs.h:165
xAOD::Vertex_v1::y
float y() const
Returns the y position.
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
Rec::GNNVertexFitterTool::m_deco_vPos
SG::AuxElement::Decorator< float > m_deco_vPos
Definition: GNNVertexFitterTool.h:118
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Rec::GNNVertexFitterTool::m_deco_ntrk
SG::AuxElement::Decorator< float > m_deco_ntrk
Definition: GNNVertexFitterTool.h:122
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
InDet::ExclusiveOrigin::FromB
@ FromB
Definition: InDetTrackTruthOriginDefs.h:164
Rec::GNNVertexFitterTool::m_deco_pt
SG::AuxElement::Decorator< float > m_deco_pt
Definition: GNNVertexFitterTool.h:116
Rec::GNNVertexFitterTool::m_deco_lxyz
SG::AuxElement::Decorator< float > m_deco_lxyz
Definition: GNNVertexFitterTool.h:123
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Rec::GNNVertexFitterTool::m_gnnModel
StringProperty m_gnnModel
Definition: GNNVertexFitterTool.h:127
Rec::GNNVertexFitterTool::m_minNTrack
DoubleProperty m_minNTrack
Definition: GNNVertexFitterTool.h:138
Rec::GNNVertexFitterTool::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: GNNVertexFitterTool.h:82
fitman.k
k
Definition: fitman.py:528
Rec::GNNVertexFitterTool::vrtVrtDist
double vrtVrtDist(const xAOD::Vertex &primVrt, const Amg::Vector3D &secVrt, const std::vector< double > &vrtErr, double &signif) const
Definition: GNNVertexFitterTool.cxx:73