Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Prompt::NonPromptLeptonVertexingAlg Class Reference

#include <NonPromptLeptonVertexingAlg.h>

Inheritance diagram for Prompt::NonPromptLeptonVertexingAlg:
Collaboration diagram for Prompt::NonPromptLeptonVertexingAlg:

Public Member Functions

 NonPromptLeptonVertexingAlg (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual StatusCode initialize () override
 
virtual StatusCode execute () override
 
virtual StatusCode finalize () override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
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 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
 

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 SG::AuxElement::Decorator< std::vector< int > > decoratorVecInt_t
 
typedef SG::AuxElement::Decorator< std::vector< ElementLink< xAOD::VertexContainer > > > decoratorVecElemVtx_t
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

std::vector< const xAOD::TrackParticle * > findNearbyTracks (const xAOD::TrackParticle &tracklep, const xAOD::TrackParticleContainer &inDetTracks, const xAOD::Vertex &priVtx) const
 
bool passElecCand (const xAOD::Electron &elec) const
 
bool passMuonCand (const xAOD::Muon &muon) const
 
std::vector< std::unique_ptr< xAOD::Vertex > > prepLepWithTwoTrkSVVec (const FittingInput &input, const xAOD::TrackParticle *tracklep, const std::vector< const xAOD::TrackParticle * > &tracks)
 
void makeVertexCluster (std::vector< std::unique_ptr< xAOD::Vertex >> &clusterVtxs, std::vector< std::unique_ptr< xAOD::Vertex >> &inputVtxs)
 
void saveSecondaryVertices (std::vector< std::unique_ptr< xAOD::Vertex >> &vtxs, std::vector< int > &indexVector, std::vector< ElementLink< xAOD::VertexContainer > > &svLinks, xAOD::VertexContainer &SVContainer, std::set< xAOD::Vertex * > &svSet)
 
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

ToolHandle< Prompt::IVertexMergingToolm_vertexMerger
 
ToolHandle< Prompt::VertexFittingToolm_vertexFitterTool
 
Gaudi::Property< bool > m_printTime {this, "PrintTime", false}
 
Gaudi::Property< bool > m_selectTracks {this, "SelectTracks", true}
 
Gaudi::Property< double > m_mergeMinVtxDist {this, "MergeMinVtxDist", 1.0}
 
Gaudi::Property< double > m_mergeChi2OverDoF {this, "MergeChi2OverDoF", 5.0}
 
Gaudi::Property< std::string > m_linkNameRefittedPriVtxWithoutLepton {this, "NoLeptonPriVtxLinkName"}
 
Gaudi::Property< std::string > m_refittedVertexTypeName
 
Gaudi::Property< float > m_minTrackpT {this, "minTrackpT", 500.0}
 
Gaudi::Property< float > m_maxTrackEta {this, "maxTrackEta", 2.5}
 
Gaudi::Property< float > m_maxTrackZ0Sin {this, "maxTrackZ0Sin", 1.0}
 
Gaudi::Property< float > m_minTrackLeptonDR {this, "minTrackLeptonDR", 1.0e-6}
 
Gaudi::Property< float > m_maxTrackLeptonDR {this, "maxTrackLeptonDR", 0.4}
 
Gaudi::Property< unsigned > m_minTrackSiHits {this, "minTrackSiHits", 7}
 
Gaudi::Property< float > m_maxTrackSharedSiHits {this, "maxTrackSharedSiHits", 1.0}
 
Gaudi::Property< unsigned > m_maxTrackSiHoles {this, "maxTrackSiHoles", 2}
 
Gaudi::Property< unsigned > m_maxTrackPixHoles {this, "maxTrackPixHoles", 1}
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_inDetTracksKey
 
SG::ReadHandleKey< xAOD::IParticleContainerm_leptonContainerKey
 
SG::ReadHandleKey< xAOD::VertexContainerm_primaryVertexContainerName
 
SG::ReadHandleKey< xAOD::VertexContainerm_refittedPriVtxContainerName
 
SG::WriteHandleKey< xAOD::VertexContainerm_svContainerName
 
TStopwatch m_timerAll
 
TStopwatch m_timerExec
 
unsigned m_countEvents
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_decoratorNameSecVtxLinks { this, "SecVtxLinksName", m_leptonContainerKey, "default", }
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_decoratorNameDeepMergedSecVtxLinks { this, "DeepMergedSecVtxLinksName", m_leptonContainerKey, "default", }
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_decoratorNameIndexVector { this, "IndexVectorName", m_leptonContainerKey, "", }
 
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_decoratorNameIndexVectorDeepMerge { this, "IndexVectorNameDeepMerge", m_leptonContainerKey, "", }
 
DataObjIDColl m_extendedExtraObjects
 
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 55 of file NonPromptLeptonVertexingAlg.h.

Member Typedef Documentation

◆ decoratorVecElemVtx_t

Definition at line 109 of file NonPromptLeptonVertexingAlg.h.

◆ decoratorVecInt_t

Definition at line 108 of file NonPromptLeptonVertexingAlg.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ NonPromptLeptonVertexingAlg()

Prompt::NonPromptLeptonVertexingAlg::NonPromptLeptonVertexingAlg ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 24 of file NonPromptLeptonVertexingAlg.cxx.

24  :
25  AthAlgorithm (name, pSvcLocator),
26  m_countEvents (0)
27 {}

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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; }

◆ execute()

StatusCode Prompt::NonPromptLeptonVertexingAlg::execute ( )
overridevirtual

Definition at line 107 of file NonPromptLeptonVertexingAlg.cxx.

108 {
109  //
110  // Start execute timer for new event
111  //
112  TimerScopeHelper timer(m_timerExec);
113 
114  const EventContext& ctx = Gaudi::Hive::currentContext();
115 
116  m_countEvents++;
117 
118  //
119  // Find Inner Detector tracks save them class member variable for convenience.
120  //
122  if (!h_inDetTracks.isValid()){
123  ATH_MSG_FATAL("execute - failed to find the InDetTrackParticles");
124  return StatusCode::FAILURE;
125  }
126 
127  const xAOD::TrackParticleContainer inDetTracks = *h_inDetTracks;
128 
129  //
130  // Create vertex containers and record them in StoreGate
131  //
132  std::set< xAOD::Vertex* > svSet;
133 
135  ATH_CHECK(h_SVContainer.record(
136  std::make_unique< xAOD::VertexContainer>(), std::make_unique< xAOD::VertexAuxContainer>()
137  ));
138  xAOD::VertexContainer &SVContainerRef = *(h_SVContainer.ptr());
139 
140  //
141  // Retrieve containers from evtStore
142  //
146 
147  ATH_MSG_DEBUG ("NonPromptLeptonVertexingAlg::execute - Read " << vertices->size() << " primary vertices");
148  ATH_MSG_DEBUG ("NonPromptLeptonVertexingAlg::execute - Read " << refittedVertices->size() << " refitted primary vertices");
149 
150  //
151  // Find default Primary Vertex
152  //
153  Prompt::FittingInput fittingInput(&inDetTracks, 0, 0);
154 
155  for(const xAOD::Vertex *vertex: *vertices) {
156  if(vertex->vertexType() == xAOD::VxType::PriVtx) {
157  fittingInput.priVtx = vertex;
158  break;
159  }
160  }
161 
162  if(!fittingInput.priVtx) {
163  ATH_MSG_INFO("Failed to find primary vertex - skip this event");
164 
165  return StatusCode::SUCCESS;
166  }
167 
168  //
169  // Find the refitted Primary Vertex
170  //
171  for(const xAOD::Vertex *vertex: *refittedVertices) {
172  short refittedVertexType = 0;
173 
174  if(getVar(vertex, refittedVertexType, m_refittedVertexTypeName) && refittedVertexType == xAOD::VxType::PriVtx) {
175  fittingInput.refittedPriVtx = vertex;
176  }
177 
178  if(fittingInput.refittedPriVtx) {
179  break;
180  }
181  }
182 
183  //
184  // Dynamic cast IParticle container to electron or muon container
185  //
186  ATH_MSG_DEBUG("\n\t\t\t Size of lepton container: " << leptonContainer ->size());
187 
189 
190  using VecElemVtx_t = std::vector<ElementLink<xAOD::VertexContainer> >;
192  indexVectorDec (m_decoratorNameIndexVector, ctx);
194  indexVectorDecDeepMerge (m_decoratorNameIndexVectorDeepMerge, ctx);
196  lepSVElementLinksDec (m_decoratorNameSecVtxLinks, ctx);
198  lepDeepMergedSVElementLinksDec (m_decoratorNameDeepMergedSecVtxLinks, ctx);
199 
200  for(const xAOD::IParticle *lepton: *leptonContainer) {
201  const xAOD::TrackParticle *tracklep = 0;
202  const xAOD::Electron *elec = dynamic_cast<const xAOD::Electron*>(lepton);
203  const xAOD::Muon *muon = dynamic_cast<const xAOD::Muon *>(lepton);
204 
205  if(elec) {
206  //
207  // Get GSF track
208  //
209  const xAOD::TrackParticle *bestmatchedGSFElTrack = elec->trackParticle(0);
210 
211  //
212  // Get original ID track for vertex fitting
213  //
214  if(passElecCand(*elec) && bestmatchedGSFElTrack) {
215  tracklep = xAOD::EgammaHelpers::getOriginalTrackParticleFromGSF(bestmatchedGSFElTrack);
216  }
217  }
218  else if(muon) {
219  if(passMuonCand(*muon) && muon->inDetTrackParticleLink().isValid()) {
220  tracklep = *(muon->inDetTrackParticleLink());
221  }
222  }
223  else {
224  ATH_MSG_WARNING("NonPromptLeptonVertexingAlg::execute - failed to find electron or muon: should never happen!");
225  }
226 
227  if(!tracklep) {
228  lepSVElementLinksDec (*lepton).clear();
229  lepDeepMergedSVElementLinksDec(*lepton).clear();
230  indexVectorDec (*lepton).clear();
231  indexVectorDecDeepMerge (*lepton).clear();
232 
233  ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute - cannot find muon->inDetTrackParticleLink() nor electron->trackParticle()");
234  continue;
235  }
236 
237  ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute - process new lepton track " << tracklep);
238 
239  //
240  // Find refitted primary vertex with lepton track excluded
241  //
242  fittingInput.refittedPriVtxWithoutLep = 0;
243 
244  if(priVtxWithoutLepAcc.isAvailable(*lepton)) {
245  ElementLink<xAOD::VertexContainer> vtxLink = priVtxWithoutLepAcc(*lepton);
246 
247  if(vtxLink.isValid()) {
248  fittingInput.refittedPriVtxWithoutLep = *vtxLink;
249 
250  ATH_MSG_DEBUG("DecorateSecondaryVertex - found refitted primary vertex without lepton: "
251  << m_linkNameRefittedPriVtxWithoutLepton << " with Ntrack =" << fittingInput.refittedPriVtxWithoutLep->nTrackParticles());
252  }
253  }
254 
255  //
256  // Collect tracks around the lepton track
257  //
258  std::vector<const xAOD::TrackParticle* > ifitTracks = findNearbyTracks(*tracklep, inDetTracks, *fittingInput.priVtx);
259 
260  //
261  // Fit 2-track vertices
262  //
263  std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVertices = prepLepWithTwoTrkSVVec(
264  fittingInput, tracklep, ifitTracks
265  );
266 
267  // We make a copy so we can store the list of original
268  // two-track vertices
269  std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVerticesCopy;
270  for (std::unique_ptr<xAOD::Vertex> &vtx : twoTrkVertices) {
271  std::unique_ptr<xAOD::Vertex> newVtx = std::make_unique<xAOD::Vertex>(*vtx);
272  twoTrkVerticesCopy.push_back(std::move(newVtx));
273  }
274 
275  // Deep merge 2-track vertices.
276  ATH_MSG_DEBUG("Getting deep merged vertices");
277  ATH_MSG_DEBUG("Starting with " << twoTrkVertices.size() << " 2-track vertices");
278  Prompt::MergeResultNotOwner deep_merged_result = m_vertexMerger->mergeInitVertices(
279  fittingInput, tracklep, twoTrkVertices, ifitTracks);
280 
281  //
282  // Save secondary vertices
283  //
284  std::vector<ElementLink<xAOD::VertexContainer> > svLinks;
285  std::vector<ElementLink<xAOD::VertexContainer> > deepmergeSVLinks;
286 
287  std::vector<int> indexVectorTwoTrk;
288  std::vector<int> indexVectorDeepMerged;
289 
290  //
291  // Record 2-track vertexes and simple merged vertexes
292  //
293  ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute --- recording " << twoTrkVerticesCopy.size() << " 2-track and simple merged vertices");
294  saveSecondaryVertices(twoTrkVerticesCopy, indexVectorTwoTrk, svLinks, SVContainerRef, svSet);
295 
296  //
297  // Record both merged multi-track vertices and also unmerged 2-track vertices
298  //
299  ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute --- recording " << deep_merged_result.vtxsNewMerged.size() << " merged multi-track vertices");
300  saveSecondaryVertices(deep_merged_result.vtxsNewMerged, indexVectorDeepMerged, deepmergeSVLinks, SVContainerRef, svSet);
301 
302  ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute --- recording " << deep_merged_result.vtxsInitPassedNotMerged.size() << " unmerged 2-track vertices");
303  saveSecondaryVertices(deep_merged_result.vtxsInitPassedNotMerged, indexVectorDeepMerged, deepmergeSVLinks, SVContainerRef, svSet);
304 
305  ATH_MSG_DEBUG ("NonPromptLeptonVertexingAlg::execute -- number of two-track SV = " << twoTrkVertices.size());
306  ATH_MSG_DEBUG ("NonPromptLeptonVertexingAlg::execute -- number of deep merged SV = " << deep_merged_result.vtxsNewMerged.size());
307 
308  lepSVElementLinksDec (*lepton) = std::move(svLinks);
309  lepDeepMergedSVElementLinksDec(*lepton) = std::move(deepmergeSVLinks);
310  indexVectorDec (*lepton) = std::move(indexVectorTwoTrk);
311  indexVectorDecDeepMerge (*lepton) = std::move(indexVectorDeepMerged);
312 
313  ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg - done with lepton pT=" << tracklep->pt() << ", " << truthAsStr(*lepton) << endl
314  << "___________________________________________________________________________");
315  }
316 
317  ATH_MSG_DEBUG("SV Vertex container " << m_svContainerName << " recorded in store");
318 
319  ATH_MSG_DEBUG(" NonPromptLeptonVertexingAlg::execute - done with this event" << endl
320  << "___________________________________________________________________________");
321 
322  return StatusCode::SUCCESS;
323 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ finalize()

StatusCode Prompt::NonPromptLeptonVertexingAlg::finalize ( )
overridevirtual

Definition at line 91 of file NonPromptLeptonVertexingAlg.cxx.

92 {
93  if(m_printTime) {
94  //
95  // Print full time stopwatch
96  //
97  m_timerAll.Stop();
98 
99  ATH_MSG_INFO("NonPromptLeptonVertexingAlg - total time: " << PrintResetStopWatch(m_timerAll));
100  ATH_MSG_INFO("NonPromptLeptonVertexingAlg - execute time: " << PrintResetStopWatch(m_timerExec));
101  }
102 
103  return StatusCode::SUCCESS;
104 }

◆ findNearbyTracks()

std::vector< const xAOD::TrackParticle * > Prompt::NonPromptLeptonVertexingAlg::findNearbyTracks ( const xAOD::TrackParticle tracklep,
const xAOD::TrackParticleContainer inDetTracks,
const xAOD::Vertex priVtx 
) const
private

Definition at line 365 of file NonPromptLeptonVertexingAlg.cxx.

369  {
370  //
371  // Select tracks -- avoid using track selection tool since z0 definition is different
372  //
373  std::vector<const xAOD::TrackParticle *> mytracks;
374 
375  for(const xAOD::TrackParticle *track: inDetTracks) {
376  if(!track) {
377  ATH_MSG_WARNING("skip null track pointer - should never happen");
378  continue;
379  }
380 
381  //
382  // Check minimum track and lepton DR: skip the track that is probably the lepton track
383  //
384  if(tracklep.p4().DeltaR(track->p4()) < m_minTrackLeptonDR) {
385  ATH_MSG_DEBUG("skip the track very close to the lepton ");
386  continue;
387  }
388 
389  //
390  // Check track and lepton maximum DR
391  //
392  if(tracklep.p4().DeltaR(track->p4()) > m_maxTrackLeptonDR) {
393  continue;
394  }
395 
396  const double delta_z0 = track->z0() + track->vz() - priVtx.z();
397  const double Z0Sin = std::abs(delta_z0*std::sin(track->theta()));
398  const double abs_eta = std::abs(track->eta());
399 
406 
407  if(!(track->summaryValue(numberOfPixelHits, xAOD::numberOfPixelHits))) continue;
408  if(!(track->summaryValue(numberOfSCTHits, xAOD::numberOfSCTHits))) continue;
409  if(!(track->summaryValue(numberOfPixelHoles, xAOD::numberOfPixelHoles))) continue;
410  if(!(track->summaryValue(numberOfSCTHoles, xAOD::numberOfSCTHoles))) continue;
411  if(!(track->summaryValue(numberOfPixelSharedHits, xAOD::numberOfPixelSharedHits))) continue;
412  if(!(track->summaryValue(numberOfSCTSharedHits, xAOD::numberOfSCTSharedHits))) continue;
413 
414  const uint8_t NSiHits = numberOfPixelHits + numberOfSCTHits;
415  const uint8_t NSiHoles = numberOfPixelHoles + numberOfSCTHoles;
416  const float NSiShHits = float(numberOfPixelSharedHits) + float(numberOfSCTSharedHits)/2.0;
417 
418  if(m_selectTracks) {
419  //
420  // Kinematic track selection
421  //
422  if(track->pt() < m_minTrackpT) continue;
423  if(abs_eta > m_maxTrackEta) continue;
424  if(Z0Sin > m_maxTrackZ0Sin) continue;
425 
426  //
427  // Hit quality track selection
428  //
429  if(NSiHits < m_minTrackSiHits) continue;
430  if(NSiShHits > m_maxTrackSharedSiHits) continue;
431  if(NSiHoles > m_maxTrackSiHoles ) continue;
432  if(numberOfPixelHoles > m_maxTrackPixHoles ) continue;
433  }
434 
435  mytracks.push_back(track);
436  }
437 
438  return mytracks;
439 }

◆ initialize()

StatusCode Prompt::NonPromptLeptonVertexingAlg::initialize ( )
overridevirtual

Definition at line 30 of file NonPromptLeptonVertexingAlg.cxx.

31 {
32  if(m_printTime) {
33  //
34  // Reset timers
35  //
36  m_timerAll .Reset();
37  m_timerExec.Reset();
38 
39  //
40  // Start full timer
41  //
42  m_timerAll.Start();
43  }
44 
45  if(m_svContainerName.empty()) {
46  ATH_MSG_ERROR("NonPromptLeptonVertexingAlg::initialize - empty SV container name: \"" << m_svContainerName << "\"");
47  return StatusCode::FAILURE;
48  }
49 
50  ATH_CHECK(m_vertexMerger.retrieve());
51  ATH_CHECK(m_vertexFitterTool.retrieve());
52 
54  ATH_CHECK(m_leptonContainerKey.initialize());
57 
58  ATH_CHECK(m_svContainerName.initialize());
59 
65 
66  ATH_MSG_DEBUG("LeptonContainerName = " << m_leptonContainerKey);
67  ATH_MSG_DEBUG("ReFitPriVtxContainerName = " << m_refittedPriVtxContainerName);
68  ATH_MSG_DEBUG("SVContainerName = " << m_svContainerName);
69  ATH_MSG_DEBUG("IndexVectorName = " << m_decoratorNameIndexVector.key());
70 
71  ATH_MSG_DEBUG("mergeMinVtxDist = " << m_mergeMinVtxDist);
72  ATH_MSG_DEBUG("mergeChi2OverDoF = " << m_mergeChi2OverDoF);
73 
74  ATH_MSG_DEBUG("minTrackLeptonDR = " << m_minTrackLeptonDR);
75  ATH_MSG_DEBUG("maxTrackLeptonDR = " << m_maxTrackLeptonDR);
76 
77  ATH_MSG_DEBUG("selectTracks = " << m_selectTracks);
78  ATH_MSG_DEBUG("minTrackpT = " << m_minTrackpT);
79  ATH_MSG_DEBUG("maxTrackEta = " << m_maxTrackEta);
80  ATH_MSG_DEBUG("maxTrackZ0Sin = " << m_maxTrackZ0Sin);
81 
82  ATH_MSG_DEBUG("minTrackSiHits = " << m_minTrackSiHits);
83  ATH_MSG_DEBUG("maxTrackSharedSiHits = " << m_maxTrackSharedSiHits);
84  ATH_MSG_DEBUG("maxTrackSiHoles = " << m_maxTrackSiHoles);
85  ATH_MSG_DEBUG("maxTrackPixHoles = " << m_maxTrackPixHoles);
86 
87  return StatusCode::SUCCESS;
88 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::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.

◆ makeVertexCluster()

void Prompt::NonPromptLeptonVertexingAlg::makeVertexCluster ( std::vector< std::unique_ptr< xAOD::Vertex >> &  clusterVtxs,
std::vector< std::unique_ptr< xAOD::Vertex >> &  inputVtxs 
)
private

Definition at line 481 of file NonPromptLeptonVertexingAlg.cxx.

485 {
486  ATH_MSG_DEBUG("makeVertexCluster - before: clusterVtxs.size()=" << clusterVtxs.size() << ", inputVtxs.size()=" << inputVtxs.size());
487 
488  std::vector<std::unique_ptr<xAOD::Vertex>>::iterator vit = inputVtxs.begin();
489 
490  while(vit != inputVtxs.end()) {
491  bool pass = false;
492 
493  for(std::vector<std::unique_ptr<xAOD::Vertex>>::const_iterator cit = clusterVtxs.begin(); cit != clusterVtxs.end(); ++cit) {
494  if(vit->get() == cit->get()) {
495  ATH_MSG_DEBUG("makeVertexCluster - logic error - found the same vertex twice: " << ((*vit).get()));
496  continue;
497  }
498 
499  const double vdist = getDistance((*vit)->position(), (*cit)->position());
500 
501  ATH_MSG_DEBUG("makeVertexCluster - vdist=" << vdist );
502 
503  if(vdist < m_mergeMinVtxDist) {
504  pass = true;
505  break;
506  }
507  }
508 
509  if(pass) {
510  clusterVtxs.push_back(std::move(*vit));
511  inputVtxs.erase(vit);
512 
513  vit = inputVtxs.begin();
514  }
515  else {
516  ++vit;
517  }
518  }
519 
520  ATH_MSG_DEBUG("makeVertexCluster - after: clusterVtxs.size()=" << clusterVtxs.size() << ", inputVtxs.size()=" << inputVtxs.size());
521 }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< Algorithm >::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< Algorithm >::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< Algorithm > >::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.

◆ passElecCand()

bool Prompt::NonPromptLeptonVertexingAlg::passElecCand ( const xAOD::Electron elec) const
private

Definition at line 326 of file NonPromptLeptonVertexingAlg.cxx.

327 {
328  //
329  // Check whether electron candidate passes loose selection
330  //
331  char lh_loose = -1;
332 
333  Prompt::GetAuxVar(elec, lh_loose, "DFCommonElectronsLHLoose");
334 
335  ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::passElecCand - "
336  << "pT=" << elec.pt() << ", eta=" << elec.eta() << ", phi=" << elec.phi() << std::endl
337  << " DFCommonElectronsLHLoose = " << int(lh_loose) << std::endl
338  << " " << truthAsStr(elec));
339 
340  if(!lh_loose) {
341  return false;
342  }
343 
344  return true;
345 }

◆ passMuonCand()

bool Prompt::NonPromptLeptonVertexingAlg::passMuonCand ( const xAOD::Muon muon) const
private

Definition at line 348 of file NonPromptLeptonVertexingAlg.cxx.

349 {
350  //
351  // Check whether muon candidate is a combined muon
352  //
353  const bool combined = (muon.muonType() == xAOD::Muon::Combined);
354 
355  ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::passMuonCand - "
356  << "pT=" << muon.pt() << ", eta=" << muon.eta() << ", phi=" << muon.phi() << std::endl
357  << " Type = " << muon.muonType() << std::endl
358  << " Combined = " << combined << std::endl
359  << " " << truthAsStr(muon));
360 
361  return combined;
362 }

◆ prepLepWithTwoTrkSVVec()

std::vector< std::unique_ptr< xAOD::Vertex > > Prompt::NonPromptLeptonVertexingAlg::prepLepWithTwoTrkSVVec ( const FittingInput input,
const xAOD::TrackParticle tracklep,
const std::vector< const xAOD::TrackParticle * > &  tracks 
)
private

Definition at line 442 of file NonPromptLeptonVertexingAlg.cxx.

447 {
448  //
449  // Decorate lepton with vector of two-track vertices.
450  // Return vector of finding vertices
451  //
452  std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVertices;
453  std::vector<const xAOD::TrackParticle*> tracksForFit;
454 
455  if(!input.priVtx) {
456  ATH_MSG_WARNING("prepLepWithTwoTrkSVVec -- invalid primary vertex: nothing to do");
457  return twoTrkVertices;
458  }
459 
460  for(const xAOD::TrackParticle *selectedtrack: tracks) {
461  tracksForFit.clear();
462  tracksForFit.push_back(tracklep);
463  tracksForFit.push_back(selectedtrack);
464 
465  std::unique_ptr<xAOD::Vertex> newSecondaryVertex = m_vertexFitterTool->fitVertexWithPrimarySeed(
466  input, tracksForFit, kTwoTrackVtx
467  );
468 
469  if(!newSecondaryVertex) {
470  ATH_MSG_DEBUG("prepLepWithTwoTrkSVVec -- failed to fit 2-track vertex");
471  continue;
472  }
473 
474  twoTrkVertices.push_back(std::move(newSecondaryVertex));
475  }
476 
477  return twoTrkVertices;
478 }

◆ 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< Algorithm > >::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< Algorithm > >::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  }

◆ saveSecondaryVertices()

void Prompt::NonPromptLeptonVertexingAlg::saveSecondaryVertices ( std::vector< std::unique_ptr< xAOD::Vertex >> &  vtxs,
std::vector< int > &  indexVector,
std::vector< ElementLink< xAOD::VertexContainer > > &  svLinks,
xAOD::VertexContainer SVContainer,
std::set< xAOD::Vertex * > &  svSet 
)
private

Definition at line 524 of file NonPromptLeptonVertexingAlg.cxx.

531 {
532  //
533  // Record created xAOD::Vertex in output vertex container
534  //
535  ATH_MSG_DEBUG("saveSecondaryVertices - will save " << vtxs.size() << " vertexes");
536 
537  for(std::unique_ptr<xAOD::Vertex> &vtx: vtxs) {
538  int index = -99;
539  if(getVar(vtx, index, "SecondaryVertexIndex")) {
540  indexVector.push_back(index);
541  }
542  else {
543  ATH_MSG_WARNING("saveSecondaryVertices - missing \"SecondaryVertexIndex\" variable");
544  }
545 
546  if(svSet.insert(vtx.get()).second) {
547  //
548  // First time seeing this this vertex - record it in output container
549  //
550  SVContainer.push_back(std::move(vtx));
551  ElementLink<xAOD::VertexContainer> svLink(SVContainer,SVContainer.size()-1);
552  svLinks.push_back(svLink);
553  } else {
554  ATH_MSG_ERROR("saveSecondaryVertices --- the same vertex has been encountered more than once! Is this a logic error?");
555  }
556  }
557 
558  ATH_MSG_DEBUG("saveSecondaryVertices - all done");
559 }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::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.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::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  }

Member Data Documentation

◆ m_countEvents

unsigned Prompt::NonPromptLeptonVertexingAlg::m_countEvents
private

Definition at line 175 of file NonPromptLeptonVertexingAlg.h.

◆ m_decoratorNameDeepMergedSecVtxLinks

SG::WriteDecorHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameDeepMergedSecVtxLinks { this, "DeepMergedSecVtxLinksName", m_leptonContainerKey, "default", }
private

Definition at line 183 of file NonPromptLeptonVertexingAlg.h.

◆ m_decoratorNameIndexVector

SG::WriteDecorHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameIndexVector { this, "IndexVectorName", m_leptonContainerKey, "", }
private

Definition at line 185 of file NonPromptLeptonVertexingAlg.h.

◆ m_decoratorNameIndexVectorDeepMerge

SG::WriteDecorHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameIndexVectorDeepMerge { this, "IndexVectorNameDeepMerge", m_leptonContainerKey, "", }
private

Definition at line 187 of file NonPromptLeptonVertexingAlg.h.

◆ m_decoratorNameSecVtxLinks

SG::WriteDecorHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameSecVtxLinks { this, "SecVtxLinksName", m_leptonContainerKey, "default", }
private

Definition at line 181 of file NonPromptLeptonVertexingAlg.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_inDetTracksKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_inDetTracksKey
private
Initial value:
{
this, "InDetTrackParticlesKey", "InDetTrackParticles"
}

Definition at line 152 of file NonPromptLeptonVertexingAlg.h.

◆ m_leptonContainerKey

SG::ReadHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_leptonContainerKey
private
Initial value:
{
this, "LeptonContainerName", "default"
}

Definition at line 155 of file NonPromptLeptonVertexingAlg.h.

◆ m_linkNameRefittedPriVtxWithoutLepton

Gaudi::Property<std::string> Prompt::NonPromptLeptonVertexingAlg::m_linkNameRefittedPriVtxWithoutLepton {this, "NoLeptonPriVtxLinkName"}
private

Definition at line 133 of file NonPromptLeptonVertexingAlg.h.

◆ m_maxTrackEta

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackEta {this, "maxTrackEta", 2.5}
private

Definition at line 140 of file NonPromptLeptonVertexingAlg.h.

◆ m_maxTrackLeptonDR

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackLeptonDR {this, "maxTrackLeptonDR", 0.4}
private

Definition at line 144 of file NonPromptLeptonVertexingAlg.h.

◆ m_maxTrackPixHoles

Gaudi::Property<unsigned> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackPixHoles {this, "maxTrackPixHoles", 1}
private

Definition at line 149 of file NonPromptLeptonVertexingAlg.h.

◆ m_maxTrackSharedSiHits

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackSharedSiHits {this, "maxTrackSharedSiHits", 1.0}
private

Definition at line 147 of file NonPromptLeptonVertexingAlg.h.

◆ m_maxTrackSiHoles

Gaudi::Property<unsigned> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackSiHoles {this, "maxTrackSiHoles", 2}
private

Definition at line 148 of file NonPromptLeptonVertexingAlg.h.

◆ m_maxTrackZ0Sin

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackZ0Sin {this, "maxTrackZ0Sin", 1.0}
private

Definition at line 141 of file NonPromptLeptonVertexingAlg.h.

◆ m_mergeChi2OverDoF

Gaudi::Property<double> Prompt::NonPromptLeptonVertexingAlg::m_mergeChi2OverDoF {this, "MergeChi2OverDoF", 5.0}
private

Definition at line 131 of file NonPromptLeptonVertexingAlg.h.

◆ m_mergeMinVtxDist

Gaudi::Property<double> Prompt::NonPromptLeptonVertexingAlg::m_mergeMinVtxDist {this, "MergeMinVtxDist", 1.0}
private

Definition at line 130 of file NonPromptLeptonVertexingAlg.h.

◆ m_minTrackLeptonDR

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_minTrackLeptonDR {this, "minTrackLeptonDR", 1.0e-6}
private

Definition at line 143 of file NonPromptLeptonVertexingAlg.h.

◆ m_minTrackpT

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_minTrackpT {this, "minTrackpT", 500.0}
private

Definition at line 139 of file NonPromptLeptonVertexingAlg.h.

◆ m_minTrackSiHits

Gaudi::Property<unsigned> Prompt::NonPromptLeptonVertexingAlg::m_minTrackSiHits {this, "minTrackSiHits", 7}
private

Definition at line 146 of file NonPromptLeptonVertexingAlg.h.

◆ m_primaryVertexContainerName

SG::ReadHandleKey<xAOD::VertexContainer> Prompt::NonPromptLeptonVertexingAlg::m_primaryVertexContainerName
private
Initial value:
{
this, "PriVertexContainerName", "PrimaryVertices"
}

Definition at line 158 of file NonPromptLeptonVertexingAlg.h.

◆ m_printTime

Gaudi::Property<bool> Prompt::NonPromptLeptonVertexingAlg::m_printTime {this, "PrintTime", false}
private

Definition at line 127 of file NonPromptLeptonVertexingAlg.h.

◆ m_refittedPriVtxContainerName

SG::ReadHandleKey<xAOD::VertexContainer> Prompt::NonPromptLeptonVertexingAlg::m_refittedPriVtxContainerName
private
Initial value:
{
this, "ReFitPriVtxContainerName", "default"
}

Definition at line 161 of file NonPromptLeptonVertexingAlg.h.

◆ m_refittedVertexTypeName

Gaudi::Property<std::string> Prompt::NonPromptLeptonVertexingAlg::m_refittedVertexTypeName
private
Initial value:
{
this, "ReFitPriVtxTypeName", "refittedVertexType"
}

Definition at line 135 of file NonPromptLeptonVertexingAlg.h.

◆ m_selectTracks

Gaudi::Property<bool> Prompt::NonPromptLeptonVertexingAlg::m_selectTracks {this, "SelectTracks", true}
private

Definition at line 128 of file NonPromptLeptonVertexingAlg.h.

◆ m_svContainerName

SG::WriteHandleKey<xAOD::VertexContainer> Prompt::NonPromptLeptonVertexingAlg::m_svContainerName
private
Initial value:
{
this, "SVContainerName", "default"
}

Definition at line 164 of file NonPromptLeptonVertexingAlg.h.

◆ m_timerAll

TStopwatch Prompt::NonPromptLeptonVertexingAlg::m_timerAll
private

Definition at line 172 of file NonPromptLeptonVertexingAlg.h.

◆ m_timerExec

TStopwatch Prompt::NonPromptLeptonVertexingAlg::m_timerExec
private

Definition at line 173 of file NonPromptLeptonVertexingAlg.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vertexFitterTool

ToolHandle<Prompt::VertexFittingTool> Prompt::NonPromptLeptonVertexingAlg::m_vertexFitterTool
private
Initial value:
{
this, "VertexFittingTool", "Prompt::VertexFittingTool/VertexFittingTool"
}

Definition at line 120 of file NonPromptLeptonVertexingAlg.h.

◆ m_vertexMerger

ToolHandle<Prompt::IVertexMergingTool> Prompt::NonPromptLeptonVertexingAlg::m_vertexMerger
private
Initial value:
{
this, "VertexMergingTool",
"Prompt::VertexMergingTool/PromptVertexMergingTool"
}

Definition at line 116 of file NonPromptLeptonVertexingAlg.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
Prompt::NonPromptLeptonVertexingAlg::m_minTrackpT
Gaudi::Property< float > m_minTrackpT
Definition: NonPromptLeptonVertexingAlg.h:139
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:73
xAOD::numberOfPixelHoles
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Definition: TrackingPrimitives.h:262
Prompt::NonPromptLeptonVertexingAlg::m_minTrackSiHits
Gaudi::Property< unsigned > m_minTrackSiHits
Definition: NonPromptLeptonVertexingAlg.h:146
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:196
Prompt::NonPromptLeptonVertexingAlg::m_maxTrackZ0Sin
Gaudi::Property< float > m_maxTrackZ0Sin
Definition: NonPromptLeptonVertexingAlg.h:141
Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameSecVtxLinks
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_decoratorNameSecVtxLinks
Definition: NonPromptLeptonVertexingAlg.h:182
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
Prompt::NonPromptLeptonVertexingAlg::m_timerAll
TStopwatch m_timerAll
Definition: NonPromptLeptonVertexingAlg.h:172
Prompt::NonPromptLeptonVertexingAlg::m_selectTracks
Gaudi::Property< bool > m_selectTracks
Definition: NonPromptLeptonVertexingAlg.h:128
xAOD::numberOfSCTSharedHits
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:273
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
Prompt::GetAuxVar
bool GetAuxVar(const T1 &obj, T2 &value, const std::string &var_name)
Definition: PromptUtils.h:93
Prompt::NonPromptLeptonVertexingAlg::m_mergeMinVtxDist
Gaudi::Property< double > m_mergeMinVtxDist
Definition: NonPromptLeptonVertexingAlg.h:130
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
index
Definition: index.py:1
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Prompt::NonPromptLeptonVertexingAlg::m_maxTrackSharedSiHits
Gaudi::Property< float > m_maxTrackSharedSiHits
Definition: NonPromptLeptonVertexingAlg.h:147
Prompt::getVar
bool getVar(T1 &obj, T2 &value, const std::string &var_name)
Definition: PromptUtils.h:72
Prompt::NonPromptLeptonVertexingAlg::m_vertexFitterTool
ToolHandle< Prompt::VertexFittingTool > m_vertexFitterTool
Definition: NonPromptLeptonVertexingAlg.h:120
Prompt::NonPromptLeptonVertexingAlg::m_linkNameRefittedPriVtxWithoutLepton
Gaudi::Property< std::string > m_linkNameRefittedPriVtxWithoutLepton
Definition: NonPromptLeptonVertexingAlg.h:133
Prompt::NonPromptLeptonVertexingAlg::m_countEvents
unsigned m_countEvents
Definition: NonPromptLeptonVertexingAlg.h:175
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:260
xAOD::Electron_v1::trackParticle
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
Definition: Electron_v1.cxx:55
Prompt::NonPromptLeptonVertexingAlg::m_leptonContainerKey
SG::ReadHandleKey< xAOD::IParticleContainer > m_leptonContainerKey
Definition: NonPromptLeptonVertexingAlg.h:155
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Prompt::NonPromptLeptonVertexingAlg::m_maxTrackSiHoles
Gaudi::Property< unsigned > m_maxTrackSiHoles
Definition: NonPromptLeptonVertexingAlg.h:148
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
Prompt::FittingInput
Definition: IVertexFittingTool.h:60
Prompt::NonPromptLeptonVertexingAlg::prepLepWithTwoTrkSVVec
std::vector< std::unique_ptr< xAOD::Vertex > > prepLepWithTwoTrkSVVec(const FittingInput &input, const xAOD::TrackParticle *tracklep, const std::vector< const xAOD::TrackParticle * > &tracks)
Definition: NonPromptLeptonVertexingAlg.cxx:442
Prompt::PrintResetStopWatch
std::string PrintResetStopWatch(TStopwatch &watch)
Definition: PromptUtils.cxx:244
Prompt::NonPromptLeptonVertexingAlg::m_maxTrackEta
Gaudi::Property< float > m_maxTrackEta
Definition: NonPromptLeptonVertexingAlg.h:140
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
python.utils.AtlRunQueryTimer.timer
def timer(name, disabled=False)
Definition: AtlRunQueryTimer.py:86
Prompt::Def::Z0Sin
@ Z0Sin
Definition: VarHolder.h:86
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Prompt::NonPromptLeptonVertexingAlg::m_refittedPriVtxContainerName
SG::ReadHandleKey< xAOD::VertexContainer > m_refittedPriVtxContainerName
Definition: NonPromptLeptonVertexingAlg.h:161
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
Prompt::NonPromptLeptonVertexingAlg::m_primaryVertexContainerName
SG::ReadHandleKey< xAOD::VertexContainer > m_primaryVertexContainerName
Definition: NonPromptLeptonVertexingAlg.h:158
Prompt::NonPromptLeptonVertexingAlg::m_printTime
Gaudi::Property< bool > m_printTime
Definition: NonPromptLeptonVertexingAlg.h:127
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
Prompt::MergeResultNotOwner::vtxsInitPassedNotMerged
std::vector< std::unique_ptr< xAOD::Vertex > > vtxsInitPassedNotMerged
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:73
xAOD::TrackParticle_v1::p4
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
Definition: TrackParticle_v1.cxx:129
xAOD::numberOfPixelSharedHits
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:263
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
Prompt::NonPromptLeptonVertexingAlg::m_mergeChi2OverDoF
Gaudi::Property< double > m_mergeChi2OverDoF
Definition: NonPromptLeptonVertexingAlg.h:131
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
Prompt::NonPromptLeptonVertexingAlg::m_vertexMerger
ToolHandle< Prompt::IVertexMergingTool > m_vertexMerger
Definition: NonPromptLeptonVertexingAlg.h:116
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Prompt::getDistance
double getDistance(const xAOD::Vertex *vtx1, const xAOD::Vertex *vtx2)
Definition: PromptUtils.cxx:41
Prompt::NonPromptLeptonVertexingAlg::passElecCand
bool passElecCand(const xAOD::Electron &elec) const
Definition: NonPromptLeptonVertexingAlg.cxx:326
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
Prompt::NonPromptLeptonVertexingAlg::saveSecondaryVertices
void saveSecondaryVertices(std::vector< std::unique_ptr< xAOD::Vertex >> &vtxs, std::vector< int > &indexVector, std::vector< ElementLink< xAOD::VertexContainer > > &svLinks, xAOD::VertexContainer &SVContainer, std::set< xAOD::Vertex * > &svSet)
Definition: NonPromptLeptonVertexingAlg.cxx:524
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
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:100
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:572
Prompt::NonPromptLeptonVertexingAlg::m_maxTrackPixHoles
Gaudi::Property< unsigned > m_maxTrackPixHoles
Definition: NonPromptLeptonVertexingAlg.h:149
Prompt::NonPromptLeptonVertexingAlg::m_svContainerName
SG::WriteHandleKey< xAOD::VertexContainer > m_svContainerName
Definition: NonPromptLeptonVertexingAlg.h:164
Prompt::NonPromptLeptonVertexingAlg::m_maxTrackLeptonDR
Gaudi::Property< float > m_maxTrackLeptonDR
Definition: NonPromptLeptonVertexingAlg.h:144
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAOD::Egamma_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
Definition: Egamma_v1.cxx:75
Prompt::NonPromptLeptonVertexingAlg::m_refittedVertexTypeName
Gaudi::Property< std::string > m_refittedVertexTypeName
Definition: NonPromptLeptonVertexingAlg.h:135
AthCommonDataStore< AthCommonMsg< Algorithm > >::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
xAOD::numberOfSCTHoles
@ numberOfSCTHoles
number of SCT holes [unit8_t].
Definition: TrackingPrimitives.h:271
Prompt::NonPromptLeptonVertexingAlg::findNearbyTracks
std::vector< const xAOD::TrackParticle * > findNearbyTracks(const xAOD::TrackParticle &tracklep, const xAOD::TrackParticleContainer &inDetTracks, const xAOD::Vertex &priVtx) const
Definition: NonPromptLeptonVertexingAlg.cxx:365
SG::decorKeyFromKey
std::string decorKeyFromKey(const std::string &key, const std::string &deflt)
Extract the decoration part of key.
Definition: DecorKeyHelpers.cxx:42
Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameDeepMergedSecVtxLinks
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_decoratorNameDeepMergedSecVtxLinks
Definition: NonPromptLeptonVertexingAlg.h:184
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
Prompt::NonPromptLeptonVertexingAlg::m_minTrackLeptonDR
Gaudi::Property< float > m_minTrackLeptonDR
Definition: NonPromptLeptonVertexingAlg.h:143
Trk::Combined
@ Combined
Definition: TrackSummaryTool.h:32
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
Prompt::truthAsStr
std::string truthAsStr(const xAOD::IParticle &particle)
Definition: PromptUtils.cxx:213
Prompt::NonPromptLeptonVertexingAlg::m_inDetTracksKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_inDetTracksKey
Definition: NonPromptLeptonVertexingAlg.h:152
Prompt::NonPromptLeptonVertexingAlg::passMuonCand
bool passMuonCand(const xAOD::Muon &muon) const
Definition: NonPromptLeptonVertexingAlg.cxx:348
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
xAOD::EgammaHelpers::getOriginalTrackParticleFromGSF
const xAOD::TrackParticle * getOriginalTrackParticleFromGSF(const xAOD::TrackParticle *trkPar)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the GSF Track Particle...
Definition: ElectronxAODHelpers.cxx:22
xAOD::Electron_v1
Definition: Electron_v1.h:34
Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameIndexVectorDeepMerge
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_decoratorNameIndexVectorDeepMerge
Definition: NonPromptLeptonVertexingAlg.h:188
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
Prompt::MergeResultNotOwner::vtxsNewMerged
std::vector< std::unique_ptr< xAOD::Vertex > > vtxsNewMerged
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:70
a
TList * a
Definition: liststreamerinfos.cxx:10
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
Prompt::NonPromptLeptonVertexingAlg::m_timerExec
TStopwatch m_timerExec
Definition: NonPromptLeptonVertexingAlg.h:173
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
xAOD::Egamma_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: Egamma_v1.cxx:65
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:269
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
xAOD::Egamma_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: Egamma_v1.cxx:70
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
fitman.k
k
Definition: fitman.py:528
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65
Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameIndexVector
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_decoratorNameIndexVector
Definition: NonPromptLeptonVertexingAlg.h:186
ServiceHandle< ICondSvc >
Prompt::kTwoTrackVtx
@ kTwoTrackVtx
Definition: IVertexFittingTool.h:59
Prompt::MergeResultNotOwner
Definition: PhysicsAnalysis/AnalysisCommon/LeptonTaggers/LeptonTaggers/IVertexMergingTool.h:69