ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
InDet::JetFitterV0FinderTool Class Reference

#include <JetFitterV0FinderTool.h>

Inheritance diagram for InDet::JetFitterV0FinderTool:
Collaboration diagram for InDet::JetFitterV0FinderTool:

Public Member Functions

StatusCode initialize ()
 
StatusCode finalize ()
 
 JetFitterV0FinderTool (const std::string &t, const std::string &n, const IInterface *p)
 
 ~JetFitterV0FinderTool ()
 
const Trk::TwoTrackVerticesInJetdoV0Finding (const xAOD::Vertex &, const TLorentzVector &, std::vector< const Trk::ITrackLink * > &, const std::vector< const xAOD::Vertex * > &, std::vector< const Trk::ITrackLink * > &, std::vector< const Trk::ITrackLink * > &, Amg::Vector3D &) 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 ()
 

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

std::vector< const xAOD::Vertex * > findV0candidates (const xAOD::Vertex &, const TLorentzVector &, std::vector< const Trk::ITrackLink * > &, const std::vector< const xAOD::Vertex * > &) const
 
bool checkCriteriaFirstFit (const xAOD::Vertex &, const TLorentzVector &, const xAOD::Vertex &) const
 
bool checkCriteriaSecondFit (const xAOD::Vertex &, const Trk::ITrackLink *) const
 
Amg::Vector3D computeSeedDirection (const xAOD::Vertex &, const TLorentzVector &, const std::vector< Trk::PositionAndWeight > &) 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

ToolHandle< InDet::InDetJetFitterUtilsm_jetFitterUtils {this,"InDetJetFitterUtils","InDet::InDetJetFitterUtils/InDetJetFitterUtils",""}
 
ToolHandle< Trk::IMode3dFinderm_mode3dfinder {this,"Mode3dFinder","Trk::Mode3dTo1dFinder/Mode3dTo1dFinder",""}
 
SG::AuxElement::Accessor< float > m_compatibilityAccessor
 
SG::AuxElement::Accessor< std::vector< const Trk::ITrackLink * > > m_tracksAccessor
 
Gaudi::Property< bool > m_revertFromPositiveToNegativeTags {this,"revertFromPositiveToNegativeTags",false,""}
 
Gaudi::Property< double > m_cutTwoTrkVtxVertexProbForBFirstSelectionFirstCriterium {this,"cutTwoTrkVtxVtxProbForBFirstSelectCriteriumA",0.05,""}
 
Gaudi::Property< double > m_cutTwoTrkVtxVertexProbForBFirstSelectionSecondCriterium {this,"cutTwoTrkVtxVtxProbForBFirstSelectCriteriumB",0.034,""}
 
Gaudi::Property< double > m_cutCompatibilityPrimaryVertexSingleTrackForBFirstSelection {this,"cutCompatibilityPrimaryVertexSingleTrackForBFirstSelection",1e-1,""}
 
Gaudi::Property< double > m_cutCompatibilityPrimaryVertexBothTracksForBFirstSelection {this,"cutCompatibilityPrimaryVertexBothTracksForBFirstSelection",1e-2,""}
 
Gaudi::Property< double > m_cutIPD0BothTracksForBFirstSelection {this,"cutIPD0BothTracksForBFirstSelection",3.5,""}
 
Gaudi::Property< double > m_cutIPZ0BothTracksForBFirstSelection {this,"cutIPZ0BothTracksForBFirstSelection",5.,""}
 
Gaudi::Property< double > m_cutPtBothTracksForBFirstSelection {this,"cutPtBothTracksForBFirstSelection",500.,""}
 
Gaudi::Property< double > m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionFirstCriterium {this,"cutTwoTrkVtxLifeSignForBFirstSelectCriteriumA",1.,""}
 
Gaudi::Property< double > m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionSecondCriterium {this,"cutTwoTrkVtxLifeSignForBFirstSelectCriteriumB",1.5,""}
 
Gaudi::Property< double > m_cutCompatibilityToPrimarySingleTrackForMatInteractions {this,"cutCompToPrimarySingleTrackForMatInterac",1e-4,""}
 
Gaudi::Property< double > m_cutCompatibilityToPrimaryBothTracksForMatInteractions {this,"cutCompToPrimaryBothTracksForMatInterac",1e-6,""}
 
Gaudi::Property< double > m_firstLayer_min {this,"firstLayer_min",34.0-2.5,""}
 
Gaudi::Property< double > m_firstLayer_max {this,"firstLayer_max",34.0+2.5,""}
 
Gaudi::Property< double > m_secondLayer_min {this,"secondLayer_min",51.5-3,""}
 
Gaudi::Property< double > m_secondLayer_max {this,"secondLayer_max",51.5+3,""}
 
Gaudi::Property< double > m_cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection {this,"cutCompPVSinglePosLifeTrackForBSecondSelect",5e-2,""}
 
Gaudi::Property< double > m_cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection {this,"cutCompPVSingleNegLifeTrackForBSecondSelect",1e-2,""}
 
Gaudi::Property< double > m_cutIPD0SigBoxSingleTrackForBSecondSelection {this,"cutIPD0SigBoxSingleTrackForBSecondSelection",2.,""}
 
Gaudi::Property< double > m_cutIPZ0SigBoxSingleTrackForBSecondSelection {this,"cutIPZ0SigBoxSingleTrackForBSecondSelection",5.,""}
 
Gaudi::Property< double > m_cutIPD0SingleTrackForBSecondSelection {this,"cutIPD0SingleTrackForBSecondSelection",1.5,""}
 
Gaudi::Property< double > m_cutIPZ0SingleTrackForBSecondSelection {this,"cutIPZ0SingleTrackForBSecondSelection",3.,""}
 
Gaudi::Property< double > m_cutPtSingleTrackForBSecondSelection {this,"cutPtSingleTrackForBSecondSelection",750,""}
 
Gaudi::Property< bool > m_useITkMaterialRejection {this,"useITkMaterialRejection",false,"Reject vertices from hadronic interactions in detector material using ITk layout"}
 
const BeamPipeDetectorManagerm_beamPipeMgr = nullptr
 
const InDetDD::PixelDetectorManagerm_pixelManager = nullptr
 
std::unique_ptr< TH2Dm_ITkPixMaterialMap
 
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 29 of file JetFitterV0FinderTool.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

◆ JetFitterV0FinderTool()

JetFitterV0FinderTool::JetFitterV0FinderTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 15 of file JetFitterV0FinderTool.cxx.

16  : AthAlgTool(t, n, p),
17  m_compatibilityAccessor( "TrackCompatibility" ),
18  m_tracksAccessor( "VxTrackAtVertex" )
19 {
20 
21  declareInterface< JetFitterV0FinderTool >(this);
22 
23  std::string toolname = this->name();
24  std::string delimiter = "_";
25  std::string::size_type firstDelimiter = toolname.find(delimiter);
26  std::string sub = toolname.substr(0, firstDelimiter);
27  std::string decoratorName = std::string("JetFitter_TrackCompatibility_") + sub;
29 
30 }

◆ ~JetFitterV0FinderTool()

JetFitterV0FinderTool::~JetFitterV0FinderTool ( )
default

Member Function Documentation

◆ checkCriteriaFirstFit()

bool JetFitterV0FinderTool::checkCriteriaFirstFit ( const xAOD::Vertex primaryVertex,
const TLorentzVector &  jetMomentum,
const xAOD::Vertex v0candidate 
) const
private

Definition at line 177 of file JetFitterV0FinderTool.cxx.

179  {
180 
181 
182  // Check vertex probability
183  double vertexProb = TMath::Prob( v0candidate.chiSquared(),
184  v0candidate.numberDoF() );
185 
188  ATH_MSG_DEBUG( "V0 candidate does not satisfy the vertex prob criteria!" );
189  return false;
190  }
191 
192 
193 
194  // Retrieve and prepare objects
195  const std::vector< const Trk::ITrackLink* > vxTrackAtVertex = m_tracksAccessor( v0candidate );
196  const Trk::ITrackLink* trackLink1 = vxTrackAtVertex.at( 0 );
197  const Trk::ITrackLink* trackLink2 = vxTrackAtVertex.at( 1 );
198 
199  if ( trackLink1 == nullptr || trackLink2 == nullptr ) {
200  ATH_MSG_DEBUG( "Zero pointer (ITrackLink): skipping 2-track candidate" );
201  return false;
202  }
203 
204  const Trk::LinkToXAODTrackParticle* linkTrackA = dynamic_cast< const Trk::LinkToXAODTrackParticle* >( trackLink1 );
205  const Trk::LinkToXAODTrackParticle* linkTrackB = dynamic_cast< const Trk::LinkToXAODTrackParticle* >( trackLink2 );
206 
207  if ( !linkTrackA || !linkTrackB ) {
208  ATH_MSG_DEBUG( "Zero pointer (LinkToXAODTrackParticle): skipping 2-track candidate" );
209  return false;
210  }
211 
212 
213  // TO-DO
214  // remove track candidates that are supposed to be voted !
215 
216 
217 
218 
219  // Take track compatibility and compute flight significance
220  // compatibility is attached to tracks, so we need to retrieve xAOD::TrackParticles objects
221  float compatibiltyTrackA = m_compatibilityAccessor( ***linkTrackA );
222  float compatibiltyTrackB = m_compatibilityAccessor( ***linkTrackB );
223 
224  if ( TMath::Prob( fabs(compatibiltyTrackA),2 ) >= m_cutCompatibilityPrimaryVertexSingleTrackForBFirstSelection ) return false;
225  if ( TMath::Prob( fabs(compatibiltyTrackB),2 ) >= m_cutCompatibilityPrimaryVertexSingleTrackForBFirstSelection ) return false;
226  if ( TMath::Prob( fabs(compatibiltyTrackA) + fabs(compatibiltyTrackB),4 ) >= m_cutCompatibilityPrimaryVertexBothTracksForBFirstSelection ) return false;
227 
228 
229  // Criteria on D0 and Z0 of the tracks w.r.t. primary vertex
230  const Trk::TrackParameters* initialPerigee1 = linkTrackA->parameters();
231  const Trk::TrackParameters* initialPerigee2 = linkTrackB->parameters();
232 
233  if ( !initialPerigee1 || !initialPerigee2 ) {
234  ATH_MSG_DEBUG( "No refitted parameters available for 2-track vertex. Candidate not accepted..." );
235  return false;
236  }
237 
238  if ( initialPerigee1->momentum().perp() <= m_cutPtBothTracksForBFirstSelection ) return false;
239  if ( initialPerigee2->momentum().perp() <= m_cutPtBothTracksForBFirstSelection ) return false;
240 
241 
242 
243 
244  // Need to create Trk::RecVertex object. Is this really necessary?
245  Trk::RecVertex primaryVertexRecVertex( primaryVertex.position(),
246  primaryVertex.covariancePosition(),
247  primaryVertex.numberDoF(),
248  primaryVertex.chiSquared());
249 
250  std::pair<double,double> track1_IPd0z0 = m_jetFitterUtils->getD0andZ0IP( *initialPerigee1,
251  primaryVertexRecVertex );
252 
253  std::pair<double,double> track2_IPd0z0 = m_jetFitterUtils->getD0andZ0IP(*initialPerigee2,
254  primaryVertexRecVertex);
255 
256 
257 
258  ATH_MSG_DEBUG( "Checking good quality for track A..." );
259  if ( fabs( track1_IPd0z0.first ) >= m_cutIPD0BothTracksForBFirstSelection ) return false;
260  if ( fabs( track1_IPd0z0.second ) >= m_cutIPZ0BothTracksForBFirstSelection ) return false;
261 
262  ATH_MSG_DEBUG( "Checking good quality for track B..." );
263  if ( fabs( track2_IPd0z0.first ) >= m_cutIPD0BothTracksForBFirstSelection ) return false;
264  if ( fabs( track2_IPd0z0.second ) >= m_cutIPZ0BothTracksForBFirstSelection ) return false;
265 
266 
267 
268 
269 
270  ATH_MSG_DEBUG( "Checking distance and error between two vertices..." );
271  std::pair<double,double> distanceAndError = m_jetFitterUtils->getDistanceAndErrorBetweenTwoVertices( v0candidate,primaryVertexRecVertex );
272 
273  Amg::Vector3D jetMomSpatial( jetMomentum.X(), jetMomentum.Y(), jetMomentum.Z() );
274  double sign = ( v0candidate.position() - primaryVertexRecVertex.position() ).dot( jetMomSpatial );
275 
276  double signedDistance = distanceAndError.first;
277  if ( sign < 0 ) signedDistance = -signedDistance;
278  double significance = signedDistance/distanceAndError.second;
279 
280  double FirstSelectionFirstCriterium = m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionFirstCriterium;
281  double FirstSelectionSecondCriterium = m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionSecondCriterium;
282 
284  FirstSelectionFirstCriterium = -FirstSelectionFirstCriterium;
285  FirstSelectionSecondCriterium = -FirstSelectionSecondCriterium;
286  }
287 
288  bool firstCriterium = ( vertexProb > m_cutTwoTrkVtxVertexProbForBFirstSelectionFirstCriterium ) &&
289  ( significance > FirstSelectionFirstCriterium );
290  bool secondCriterium = ( vertexProb > m_cutTwoTrkVtxVertexProbForBFirstSelectionSecondCriterium ) &&
291  ( significance > FirstSelectionSecondCriterium );
292 
293  if ( not ( firstCriterium || secondCriterium ) )
294  return false;
295 
296 
297 
298 
299  ATH_MSG_DEBUG( "Checking material interaction in layer..." );
300  double radius = v0candidate.position().perp();
301  double z = v0candidate.position().z();
302  bool matinteraction = false;
303 
305  int bin = m_ITkPixMaterialMap->FindBin(z,radius);
306  if(m_ITkPixMaterialMap->GetBinContent(bin)>0) matinteraction = true;
307  }
308 
309  else{
312  matinteraction = true;
313  }
314 
315  if ( matinteraction ) {
316  bool signifCutTight = ( TMath::Prob( fabs( compatibiltyTrackA ),2 ) < m_cutCompatibilityToPrimarySingleTrackForMatInteractions ) &&
317  ( TMath::Prob( fabs( compatibiltyTrackB ),2 ) < m_cutCompatibilityToPrimarySingleTrackForMatInteractions ) &&
318  ( TMath::Prob( fabs( compatibiltyTrackA ) + fabs( compatibiltyTrackB ),4 ) < m_cutCompatibilityToPrimaryBothTracksForMatInteractions );
319 
320  if ( signifCutTight ) return false;
321  }
322 
323 
324 
325  // TO-DO
326  // Remove candidates with track overlaps
327 
328 
329 
330  return true;
331 }

◆ checkCriteriaSecondFit()

bool JetFitterV0FinderTool::checkCriteriaSecondFit ( const xAOD::Vertex primaryVertex,
const Trk::ITrackLink trackLink 
) const
private

Definition at line 334 of file JetFitterV0FinderTool.cxx.

335  {
336 
337  const Trk::LinkToXAODTrackParticle* linkTrack = dynamic_cast< const Trk::LinkToXAODTrackParticle* >( trackLink );
338  if ( linkTrack == nullptr ) {
339  ATH_MSG_DEBUG( "Zero pointer (LinkToXAODTrackParticle): skipping 2-track candidate" );
340  return false;
341  }
342 
343  float compatibilityTrack = m_compatibilityAccessor( ***linkTrack );
344 
345 
346  const Trk::TrackParameters* perigee = trackLink->parameters();
347  const AmgSymMatrix(5) *measPerigee = perigee->covariance();
348 
349  if ( measPerigee == nullptr ) {
350  ATH_MSG_DEBUG( "Track parameters have no covariance. skipping single track candidate..." );
351  return false;
352  }
353 
354  // Need to create Trk::RecVertex object. Is this really necessary?
355  Trk::RecVertex primaryVertexRecVertex( primaryVertex.position(),
356  primaryVertex.covariancePosition(),
357  primaryVertex.numberDoF(),
358  primaryVertex.chiSquared());
359 
360  std::pair<double,double> track_IPd0z0 = m_jetFitterUtils->getD0andZ0IP( *perigee,
361  primaryVertexRecVertex );
362  std::pair<double,double> track_IPd0z0Sig = m_jetFitterUtils->getD0andZ0IPSig( *perigee,
363  primaryVertexRecVertex );
364 
365  const double IPd0 = track_IPd0z0.first;
366  const double IPz0 = track_IPd0z0.second;
367  const double IPd0Sig = track_IPd0z0Sig.first;
368  const double IPz0Sig = track_IPd0z0Sig.second;
369  const double pT = perigee->momentum().perp();
370 
371  double cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection = m_cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection;
372  double cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection = m_cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection;
373 
375  cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection = m_cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection;
376  cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection = m_cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection;
377  }
378 
379  bool passBoxCut = ( fabs(IPd0Sig) < m_cutIPD0SigBoxSingleTrackForBSecondSelection ) &&
381 
382 
383  if ( fabs(IPd0) > m_cutIPD0SingleTrackForBSecondSelection ||
385  ( compatibilityTrack >= 0 && TMath::Prob( fabs(compatibilityTrack),2) > cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection ) ||
386  ( compatibilityTrack < 0 && TMath::Prob( fabs(compatibilityTrack),2) > cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection ) ||
387  pT < m_cutPtSingleTrackForBSecondSelection || passBoxCut )
388  {
389  ATH_MSG_DEBUG( "Candidate didn't pass one of the selection cuts" );
390  return false;
391  }
392 
393  return true;
394 }

◆ computeSeedDirection()

Amg::Vector3D JetFitterV0FinderTool::computeSeedDirection ( const xAOD::Vertex primaryVertex,
const TLorentzVector &  jetMomentum,
const std::vector< Trk::PositionAndWeight > &  positionsOfSeedingVertices 
) const
private

Definition at line 396 of file JetFitterV0FinderTool.cxx.

398  {
399 
400  Amg::Vector3D JFseedDirection( jetMomentum.X(),jetMomentum.Y(),jetMomentum.Z() );
401  JFseedDirection.normalize();
402  ATH_MSG_VERBOSE( "Jet Direction would be: " << JFseedDirection );
403 
404  if ( positionsOfSeedingVertices.empty() )
405  return JFseedDirection;
406 
407  Amg::Vector3D theSeedVertex = m_mode3dfinder->getMode( primaryVertex.x(),primaryVertex.y(),positionsOfSeedingVertices );
408  double sign = ( theSeedVertex - primaryVertex.position() ).dot( JFseedDirection );
409 
410  if ( m_revertFromPositiveToNegativeTags == false ) {
411 
412  if ( sign > 0 ) {
413  JFseedDirection = ( theSeedVertex - primaryVertex.position() ).unit();
414  ATH_MSG_DEBUG( "Using twotrkvtx direction for start: " << JFseedDirection );
415  } else ATH_MSG_DEBUG( "NORMAL SEEDING: Seed vertex is on negative side... Using Jet Direction!" );
416 
417  } else {
418 
419  if ( sign < 0 ) {
420  JFseedDirection = -( theSeedVertex - primaryVertex.position() ).unit();
421  ATH_MSG_DEBUG( "Using twotrkvtx direction for start: " << JFseedDirection );
422  } else ATH_MSG_DEBUG( "REVERSE SEEDING: Seed vertex is on positive side... Using Jet Direction!" );
423 
424  }
425 
426  return JFseedDirection;
427 }

◆ 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; }

◆ doV0Finding()

const Trk::TwoTrackVerticesInJet * JetFitterV0FinderTool::doV0Finding ( const xAOD::Vertex primaryVertex,
const TLorentzVector &  jetMomentum,
std::vector< const Trk::ITrackLink * > &  inputTracks,
const std::vector< const xAOD::Vertex * > &  vertexCandidates,
std::vector< const Trk::ITrackLink * > &  tracksToUseInFirstFit,
std::vector< const Trk::ITrackLink * > &  tracksToUseInSecondFit,
Amg::Vector3D JFseedDirection 
) const

Definition at line 65 of file JetFitterV0FinderTool.cxx.

71  {
72 
73  // Vector of seeding vertices.
74  std::vector< Trk::PositionAndWeight > positionsOfSeedingVertices;
75 
76  // Using a function here, may become tool in the future!
77  // Phase 3, 4 and 5: find and select v0 candidates
78  std::vector< const xAOD::Vertex* > v0candidates = findV0candidates( primaryVertex,jetMomentum,inputTracks, vertexCandidates );
79  ATH_MSG_DEBUG( "Found " << v0candidates.size() <<" V0 candidates!" );
80 
81  // Phase 6
82  // Select tracks for first fit using only the "best tracks" from the two-track vertices
83  ATH_MSG_DEBUG( "Analyzing two track vertices to select the best tracks" );
84  for ( const xAOD::Vertex* v0candidate : v0candidates ) {
85 
86  // Check quality for first fit
87  bool satisfyCriteriaFirstFitQuality = checkCriteriaFirstFit( primaryVertex,jetMomentum,*v0candidate );
88  if ( not satisfyCriteriaFirstFitQuality ) {
89  ATH_MSG_DEBUG( "Quality criteria for first fit not satisfied! skipping ... " );
90  continue;
91  }
92 
93  // The v0 candidate satisfy the selection criteria
94  // Filling the vector of tracks to be used in the first fit
95  std::vector< const Trk::ITrackLink* > vxTrackAtVertex = m_tracksAccessor( *v0candidate );
96  const Trk::ITrackLink *firstTrack = vxTrackAtVertex.at(0);
97  const Trk::ITrackLink *secondTrack = vxTrackAtVertex.at(1);
98 
99  // Second track added first, legacy from old jetfitter
100  bool secondTrackAlreadyStored = m_jetFitterUtils->checkIfTrackIsInVector( secondTrack,tracksToUseInFirstFit );
101  if ( not secondTrackAlreadyStored )
102  tracksToUseInFirstFit.push_back( secondTrack );
103 
104  // First track
105  bool firstTrackAlreadyStored = m_jetFitterUtils->checkIfTrackIsInVector( firstTrack,tracksToUseInFirstFit );
106  if ( not firstTrackAlreadyStored )
107  tracksToUseInFirstFit.push_back( firstTrack );
108 
109  positionsOfSeedingVertices.emplace_back( v0candidate->position(),1 );
110  }
111 
112 
113  // Phase 7
114  ATH_MSG_DEBUG( "Determine single good tracks to add in the fit in a second step" );
115  for ( const Trk::ITrackLink *trackLink : inputTracks ) {
116 
117  bool satisfyCriteriaSecondFitQuality = checkCriteriaSecondFit( primaryVertex,trackLink );
118  if ( not satisfyCriteriaSecondFitQuality ) {
119  ATH_MSG_DEBUG( "Quality criteria for second fit not satisfied! skipping ... " );
120  continue;
121  }
122 
123  bool alreadyUsed = m_jetFitterUtils->checkIfTrackIsInVector( trackLink,tracksToUseInFirstFit );
124  if ( alreadyUsed ) {
125  ATH_MSG_VERBOSE( "Track was already used" );
126  continue;
127  }
128 
129  bool trackAlreadyStored = m_jetFitterUtils->checkIfTrackIsInVector( trackLink,tracksToUseInSecondFit );
130  if ( not trackAlreadyStored )
131  tracksToUseInSecondFit.push_back( trackLink );
132  }
133 
134 
135  // Compute JFseedDirection
136  JFseedDirection = computeSeedDirection( primaryVertex,jetMomentum,positionsOfSeedingVertices );
137 
138  // First argument is the list of vertex candidates
139  // Second argument is the list of Selected Neutral Tracks To Store
140  // The Trk::TwoTrackVerticesInJet takes over the ownership
141 
142  // We need to use normal pointers instead of smart pointers since the code breaks.
143  // We have to fix this issue in the future
144  const Trk::TwoTrackVerticesInJet *twoTrackVerticesInJet = new Trk::TwoTrackVerticesInJet( std::move(v0candidates),
145  std::vector< const Trk::TrackParticleBase* >() );
146  return twoTrackVerticesInJet;
147 }

◆ 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 JetFitterV0FinderTool::finalize ( )

Definition at line 59 of file JetFitterV0FinderTool.cxx.

59  {
60  return StatusCode::SUCCESS;
61 }

◆ findV0candidates()

std::vector< const xAOD::Vertex * > JetFitterV0FinderTool::findV0candidates ( const xAOD::Vertex ,
const TLorentzVector &  ,
std::vector< const Trk::ITrackLink * > &  ,
const std::vector< const xAOD::Vertex * > &  vertexCandidates 
) const
private

Definition at line 149 of file JetFitterV0FinderTool.cxx.

152  {
153 
154  std::vector< const xAOD::Vertex* > v0candidates;
155  ATH_MSG_DEBUG( "Looping over " << vertexCandidates.size() <<" input candidates" );
156 
157  for ( unsigned int indexA(0); indexA<vertexCandidates.size(); indexA++ ) {
158  const xAOD::Vertex* myCandidate = vertexCandidates.at( indexA );
159 
160  // Here a shortlist of candidates will be applied
161 
162  // Phase 4 and 5 (not called in old code)!
163  // Check for photon convertion, Ks and Lambda
164  // Veto candidates and tracks
165 
166  // Make a copy of the input candidate
167  // This way of creating a copy creates a discrepancy w.r.t. the code in rel21, which is propagated to Jet Fitter variables.
168  // However, this assures that the vertex positions retrieved via position().x() and x() are consistent
170  v0candidates.push_back( toAdd );
171  *toAdd = *myCandidate;
172  }
173 
174  return v0candidates;
175 }

◆ initialize()

StatusCode JetFitterV0FinderTool::initialize ( )

Definition at line 35 of file JetFitterV0FinderTool.cxx.

35  {
36 
37  if ( m_jetFitterUtils.retrieve().isFailure() ) {
38  ATH_MSG_ERROR( "Cannot retrieve InDet::InDetJetFitterUtils/InDetJetFitterUtils" );
39  return StatusCode::FAILURE;
40  }
41 
42  if ( m_mode3dfinder.retrieve().isFailure() ) {
43  ATH_MSG_ERROR( "Cannot retrieve Trk::Mode3dTo1dFinder/Mode3dTo1dFinder" );
44  return StatusCode::FAILURE;
45  }
46 
48  ATH_CHECK(detStore()->retrieve(m_beamPipeMgr, "BeamPipe"));
49  ATH_CHECK(detStore()->retrieve(m_pixelManager, "ITkPixel"));
50 
52 
53  m_ITkPixMaterialMap = matVeto.ITkPixMaterialMap();
54  }
55 
56  return StatusCode::SUCCESS;
57 }

◆ 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& InDet::JetFitterV0FinderTool::interfaceID ( )
inlinestatic

Definition at line 32 of file JetFitterV0FinderTool.h.

32  {
33  return IID_JetFitterV0FinderTool;
34  }

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

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

Member Data Documentation

◆ m_beamPipeMgr

const BeamPipeDetectorManager* InDet::JetFitterV0FinderTool::m_beamPipeMgr = nullptr
private

Definition at line 109 of file JetFitterV0FinderTool.h.

◆ m_compatibilityAccessor

SG::AuxElement::Accessor< float > InDet::JetFitterV0FinderTool::m_compatibilityAccessor
private

Definition at line 72 of file JetFitterV0FinderTool.h.

◆ m_cutCompatibilityPrimaryVertexBothTracksForBFirstSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutCompatibilityPrimaryVertexBothTracksForBFirstSelection {this,"cutCompatibilityPrimaryVertexBothTracksForBFirstSelection",1e-2,""}
private

Definition at line 83 of file JetFitterV0FinderTool.h.

◆ m_cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection {this,"cutCompPVSingleNegLifeTrackForBSecondSelect",1e-2,""}
private

Definition at line 100 of file JetFitterV0FinderTool.h.

◆ m_cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection {this,"cutCompPVSinglePosLifeTrackForBSecondSelect",5e-2,""}
private

Definition at line 99 of file JetFitterV0FinderTool.h.

◆ m_cutCompatibilityPrimaryVertexSingleTrackForBFirstSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutCompatibilityPrimaryVertexSingleTrackForBFirstSelection {this,"cutCompatibilityPrimaryVertexSingleTrackForBFirstSelection",1e-1,""}
private

Definition at line 82 of file JetFitterV0FinderTool.h.

◆ m_cutCompatibilityToPrimaryBothTracksForMatInteractions

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutCompatibilityToPrimaryBothTracksForMatInteractions {this,"cutCompToPrimaryBothTracksForMatInterac",1e-6,""}
private

Definition at line 91 of file JetFitterV0FinderTool.h.

◆ m_cutCompatibilityToPrimarySingleTrackForMatInteractions

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutCompatibilityToPrimarySingleTrackForMatInteractions {this,"cutCompToPrimarySingleTrackForMatInterac",1e-4,""}
private

Definition at line 90 of file JetFitterV0FinderTool.h.

◆ m_cutIPD0BothTracksForBFirstSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutIPD0BothTracksForBFirstSelection {this,"cutIPD0BothTracksForBFirstSelection",3.5,""}
private

Definition at line 84 of file JetFitterV0FinderTool.h.

◆ m_cutIPD0SigBoxSingleTrackForBSecondSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutIPD0SigBoxSingleTrackForBSecondSelection {this,"cutIPD0SigBoxSingleTrackForBSecondSelection",2.,""}
private

Definition at line 101 of file JetFitterV0FinderTool.h.

◆ m_cutIPD0SingleTrackForBSecondSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutIPD0SingleTrackForBSecondSelection {this,"cutIPD0SingleTrackForBSecondSelection",1.5,""}
private

Definition at line 104 of file JetFitterV0FinderTool.h.

◆ m_cutIPZ0BothTracksForBFirstSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutIPZ0BothTracksForBFirstSelection {this,"cutIPZ0BothTracksForBFirstSelection",5.,""}
private

Definition at line 85 of file JetFitterV0FinderTool.h.

◆ m_cutIPZ0SigBoxSingleTrackForBSecondSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutIPZ0SigBoxSingleTrackForBSecondSelection {this,"cutIPZ0SigBoxSingleTrackForBSecondSelection",5.,""}
private

Definition at line 102 of file JetFitterV0FinderTool.h.

◆ m_cutIPZ0SingleTrackForBSecondSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutIPZ0SingleTrackForBSecondSelection {this,"cutIPZ0SingleTrackForBSecondSelection",3.,""}
private

Definition at line 105 of file JetFitterV0FinderTool.h.

◆ m_cutPtBothTracksForBFirstSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutPtBothTracksForBFirstSelection {this,"cutPtBothTracksForBFirstSelection",500.,""}
private

Definition at line 86 of file JetFitterV0FinderTool.h.

◆ m_cutPtSingleTrackForBSecondSelection

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutPtSingleTrackForBSecondSelection {this,"cutPtSingleTrackForBSecondSelection",750,""}
private

Definition at line 106 of file JetFitterV0FinderTool.h.

◆ m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionFirstCriterium

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionFirstCriterium {this,"cutTwoTrkVtxLifeSignForBFirstSelectCriteriumA",1.,""}
private

Definition at line 88 of file JetFitterV0FinderTool.h.

◆ m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionSecondCriterium

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionSecondCriterium {this,"cutTwoTrkVtxLifeSignForBFirstSelectCriteriumB",1.5,""}
private

Definition at line 89 of file JetFitterV0FinderTool.h.

◆ m_cutTwoTrkVtxVertexProbForBFirstSelectionFirstCriterium

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutTwoTrkVtxVertexProbForBFirstSelectionFirstCriterium {this,"cutTwoTrkVtxVtxProbForBFirstSelectCriteriumA",0.05,""}
private

Definition at line 79 of file JetFitterV0FinderTool.h.

◆ m_cutTwoTrkVtxVertexProbForBFirstSelectionSecondCriterium

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_cutTwoTrkVtxVertexProbForBFirstSelectionSecondCriterium {this,"cutTwoTrkVtxVtxProbForBFirstSelectCriteriumB",0.034,""}
private

Definition at line 80 of file JetFitterV0FinderTool.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_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_firstLayer_max

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_firstLayer_max {this,"firstLayer_max",34.0+2.5,""}
private

Definition at line 95 of file JetFitterV0FinderTool.h.

◆ m_firstLayer_min

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_firstLayer_min {this,"firstLayer_min",34.0-2.5,""}
private

Definition at line 94 of file JetFitterV0FinderTool.h.

◆ m_ITkPixMaterialMap

std::unique_ptr<TH2D> InDet::JetFitterV0FinderTool::m_ITkPixMaterialMap
private

Definition at line 111 of file JetFitterV0FinderTool.h.

◆ m_jetFitterUtils

ToolHandle< InDet::InDetJetFitterUtils > InDet::JetFitterV0FinderTool::m_jetFitterUtils {this,"InDetJetFitterUtils","InDet::InDetJetFitterUtils/InDetJetFitterUtils",""}
private

Definition at line 68 of file JetFitterV0FinderTool.h.

◆ m_mode3dfinder

ToolHandle< Trk::IMode3dFinder > InDet::JetFitterV0FinderTool::m_mode3dfinder {this,"Mode3dFinder","Trk::Mode3dTo1dFinder/Mode3dTo1dFinder",""}
private

Definition at line 69 of file JetFitterV0FinderTool.h.

◆ m_pixelManager

const InDetDD::PixelDetectorManager* InDet::JetFitterV0FinderTool::m_pixelManager = nullptr
private

Definition at line 110 of file JetFitterV0FinderTool.h.

◆ m_revertFromPositiveToNegativeTags

Gaudi::Property< bool > InDet::JetFitterV0FinderTool::m_revertFromPositiveToNegativeTags {this,"revertFromPositiveToNegativeTags",false,""}
private

Definition at line 77 of file JetFitterV0FinderTool.h.

◆ m_secondLayer_max

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_secondLayer_max {this,"secondLayer_max",51.5+3,""}
private

Definition at line 97 of file JetFitterV0FinderTool.h.

◆ m_secondLayer_min

Gaudi::Property< double > InDet::JetFitterV0FinderTool::m_secondLayer_min {this,"secondLayer_min",51.5-3,""}
private

Definition at line 96 of file JetFitterV0FinderTool.h.

◆ m_tracksAccessor

SG::AuxElement::Accessor< std::vector< const Trk::ITrackLink* > > InDet::JetFitterV0FinderTool::m_tracksAccessor
private

Definition at line 73 of file JetFitterV0FinderTool.h.

◆ m_useITkMaterialRejection

Gaudi::Property< bool > InDet::JetFitterV0FinderTool::m_useITkMaterialRejection {this,"useITkMaterialRejection",false,"Reject vertices from hadronic interactions in detector material using ITk layout"}
private

Definition at line 108 of file JetFitterV0FinderTool.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.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:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
InDet::JetFitterV0FinderTool::checkCriteriaSecondFit
bool checkCriteriaSecondFit(const xAOD::Vertex &, const Trk::ITrackLink *) const
Definition: JetFitterV0FinderTool.cxx:334
xAOD::Vertex_v1::x
float x() const
Returns the x position.
CalculateHighPtTerm.pT
pT
Definition: ICHEP2016/CalculateHighPtTerm.py:57
InDet::JetFitterV0FinderTool::m_cutIPD0SigBoxSingleTrackForBSecondSelection
Gaudi::Property< double > m_cutIPD0SigBoxSingleTrackForBSecondSelection
Definition: JetFitterV0FinderTool.h:101
InDet::JetFitterV0FinderTool::m_firstLayer_min
Gaudi::Property< double > m_firstLayer_min
Definition: JetFitterV0FinderTool.h:94
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
InDet::JetFitterV0FinderTool::m_cutTwoTrkVtxVertexProbForBFirstSelectionSecondCriterium
Gaudi::Property< double > m_cutTwoTrkVtxVertexProbForBFirstSelectionSecondCriterium
Definition: JetFitterV0FinderTool.h:80
InDet::JetFitterV0FinderTool::m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionFirstCriterium
Gaudi::Property< double > m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionFirstCriterium
Definition: JetFitterV0FinderTool.h:88
xAOD::Vertex
Vertex_v1 Vertex
Define the latest version of the vertex class.
Definition: Event/xAOD/xAODTracking/xAODTracking/Vertex.h:16
InDet::JetFitterV0FinderTool::m_firstLayer_max
Gaudi::Property< double > m_firstLayer_max
Definition: JetFitterV0FinderTool.h:95
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:66
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDet::JetFitterV0FinderTool::m_cutCompatibilityToPrimarySingleTrackForMatInteractions
Gaudi::Property< double > m_cutCompatibilityToPrimarySingleTrackForMatInteractions
Definition: JetFitterV0FinderTool.h:90
InDet::JetFitterV0FinderTool::m_secondLayer_max
Gaudi::Property< double > m_secondLayer_max
Definition: JetFitterV0FinderTool.h:97
bin
Definition: BinsDiffFromStripMedian.h:43
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
InDet::JetFitterV0FinderTool::m_pixelManager
const InDetDD::PixelDetectorManager * m_pixelManager
Definition: JetFitterV0FinderTool.h:110
InDet::JetFitterV0FinderTool::m_cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection
Gaudi::Property< double > m_cutCompatibilityPrimaryVertexSinglePositiveLifetimeTrackForBSecondSelection
Definition: JetFitterV0FinderTool.h:99
InDet::JetFitterV0FinderTool::m_cutIPZ0SingleTrackForBSecondSelection
Gaudi::Property< double > m_cutIPZ0SingleTrackForBSecondSelection
Definition: JetFitterV0FinderTool.h:105
xAOD::Vertex_v1::position
const Amg::Vector3D & position() const
Returns the 3-pos.
InDet::JetFitterV0FinderTool::m_compatibilityAccessor
SG::AuxElement::Accessor< float > m_compatibilityAccessor
Definition: JetFitterV0FinderTool.h:72
InDet::JetFitterV0FinderTool::computeSeedDirection
Amg::Vector3D computeSeedDirection(const xAOD::Vertex &, const TLorentzVector &, const std::vector< Trk::PositionAndWeight > &) const
Definition: JetFitterV0FinderTool.cxx:396
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
InDet::JetFitterV0FinderTool::m_cutCompatibilityToPrimaryBothTracksForMatInteractions
Gaudi::Property< double > m_cutCompatibilityToPrimaryBothTracksForMatInteractions
Definition: JetFitterV0FinderTool.h:91
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
InDet::JetFitterV0FinderTool::m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionSecondCriterium
Gaudi::Property< double > m_cutTwoTrkVtxLifetimeSignificanceForBFirstSelectionSecondCriterium
Definition: JetFitterV0FinderTool.h:89
Trk::LinkToXAODTrackParticle::parameters
virtual const TrackParameters * parameters() const override final
return the track parameters of the track (to which the EL< TrackCollection points)
Definition: LinkToXAODTrackParticle.cxx:20
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
Trk::RecVertex
Trk::RecVertex inherits from Trk::Vertex.
Definition: RecVertex.h:44
InDet::JetFitterV0FinderTool::m_mode3dfinder
ToolHandle< Trk::IMode3dFinder > m_mode3dfinder
Definition: JetFitterV0FinderTool.h:69
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
InDet::JetFitterV0FinderTool::m_ITkPixMaterialMap
std::unique_ptr< TH2D > m_ITkPixMaterialMap
Definition: JetFitterV0FinderTool.h:111
InDet::JetFitterV0FinderTool::m_secondLayer_min
Gaudi::Property< double > m_secondLayer_min
Definition: JetFitterV0FinderTool.h:96
InDet::JetFitterV0FinderTool::m_useITkMaterialRejection
Gaudi::Property< bool > m_useITkMaterialRejection
Definition: JetFitterV0FinderTool.h:108
InDet::JetFitterV0FinderTool::m_tracksAccessor
SG::AuxElement::Accessor< std::vector< const Trk::ITrackLink * > > m_tracksAccessor
Definition: JetFitterV0FinderTool.h:73
Trk::TwoTrackVerticesInJet
Definition: TwoTrackVerticesInJet.h:45
python.AthDsoLogger.delimiter
delimiter
Definition: AthDsoLogger.py:71
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
python.TrigInDetConfig.inputTracks
inputTracks
Definition: TrigInDetConfig.py:168
z
#define z
InDet::JetFitterV0FinderTool::m_cutIPD0BothTracksForBFirstSelection
Gaudi::Property< double > m_cutIPD0BothTracksForBFirstSelection
Definition: JetFitterV0FinderTool.h:84
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
InDet::JetFitterV0FinderTool::findV0candidates
std::vector< const xAOD::Vertex * > findV0candidates(const xAOD::Vertex &, const TLorentzVector &, std::vector< const Trk::ITrackLink * > &, const std::vector< const xAOD::Vertex * > &) const
Definition: JetFitterV0FinderTool.cxx:149
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:127
Trk::LinkToXAODTrackParticle
Element link to XAOD TrackParticle.
Definition: LinkToXAODTrackParticle.h:33
InDet::JetFitterV0FinderTool::m_cutPtSingleTrackForBSecondSelection
Gaudi::Property< double > m_cutPtSingleTrackForBSecondSelection
Definition: JetFitterV0FinderTool.h:106
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::ParametersBase
Definition: ParametersBase.h:55
dot.dot
def dot(G, fn, nodesToHighlight=[])
Definition: dot.py:5
DeMoUpdate.toAdd
bool toAdd
Definition: DeMoUpdate.py:1304
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
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
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
python.hypoToolDisplay.toolname
def toolname(tool)
Definition: hypoToolDisplay.py:13
InDet::JetFitterV0FinderTool::m_cutPtBothTracksForBFirstSelection
Gaudi::Property< double > m_cutPtBothTracksForBFirstSelection
Definition: JetFitterV0FinderTool.h:86
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
InDet::JetFitterV0FinderTool::m_cutIPD0SingleTrackForBSecondSelection
Gaudi::Property< double > m_cutIPD0SingleTrackForBSecondSelection
Definition: JetFitterV0FinderTool.h:104
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
xAOD::Vertex_v1::numberDoF
float numberDoF() const
Returns the number of degrees of freedom of the vertex fit as float.
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
InDet::JetFitterV0FinderTool::m_cutTwoTrkVtxVertexProbForBFirstSelectionFirstCriterium
Gaudi::Property< double > m_cutTwoTrkVtxVertexProbForBFirstSelectionFirstCriterium
Definition: JetFitterV0FinderTool.h:79
a
TList * a
Definition: liststreamerinfos.cxx:10
InDet::JetFitterV0FinderTool::m_cutIPZ0BothTracksForBFirstSelection
Gaudi::Property< double > m_cutIPZ0BothTracksForBFirstSelection
Definition: JetFitterV0FinderTool.h:85
xAOD::Vertex_v1::chiSquared
float chiSquared() const
Returns the of the vertex fit as float.
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
InDet::JetFitterV0FinderTool::m_revertFromPositiveToNegativeTags
Gaudi::Property< bool > m_revertFromPositiveToNegativeTags
Definition: JetFitterV0FinderTool.h:77
InDet::JetFitterV0FinderTool::m_jetFitterUtils
ToolHandle< InDet::InDetJetFitterUtils > m_jetFitterUtils
Definition: JetFitterV0FinderTool.h:68
unit
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
Definition: AmgMatrixBasePlugin.h:20
xAOD::Vertex_v1::y
float y() const
Returns the y position.
InDet::JetFitterV0FinderTool::m_beamPipeMgr
const BeamPipeDetectorManager * m_beamPipeMgr
Definition: JetFitterV0FinderTool.h:109
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
InDet::JetFitterV0FinderTool::m_cutIPZ0SigBoxSingleTrackForBSecondSelection
Gaudi::Property< double > m_cutIPZ0SigBoxSingleTrackForBSecondSelection
Definition: JetFitterV0FinderTool.h:102
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
InDet::JetFitterV0FinderTool::m_cutCompatibilityPrimaryVertexBothTracksForBFirstSelection
Gaudi::Property< double > m_cutCompatibilityPrimaryVertexBothTracksForBFirstSelection
Definition: JetFitterV0FinderTool.h:83
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
InDet::InDetMaterialVeto
Definition: InDetMaterialVeto.h:29
InDet::JetFitterV0FinderTool::checkCriteriaFirstFit
bool checkCriteriaFirstFit(const xAOD::Vertex &, const TLorentzVector &, const xAOD::Vertex &) const
Definition: JetFitterV0FinderTool.cxx:177
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
InDet::JetFitterV0FinderTool::m_cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection
Gaudi::Property< double > m_cutCompatibilityPrimaryVertexSingleNegativeLifetimeTrackForBSecondSelection
Definition: JetFitterV0FinderTool.h:100
InDet::JetFitterV0FinderTool::m_cutCompatibilityPrimaryVertexSingleTrackForBFirstSelection
Gaudi::Property< double > m_cutCompatibilityPrimaryVertexSingleTrackForBFirstSelection
Definition: JetFitterV0FinderTool.h:82
fitman.k
k
Definition: fitman.py:528