ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::InDetV0FinderTool Class Reference

#include <InDetV0FinderTool.h>

Inheritance diagram for InDet::InDetV0FinderTool:

Public Member Functions

 InDetV0FinderTool (const std::string &t, const std::string &n, const IInterface *p)
 ~InDetV0FinderTool ()
StatusCode initialize ()
StatusCode finalize ()
StatusCode performSearch (xAOD::VertexContainer *v0Container, xAOD::VertexContainer *ksContainer, xAOD::VertexContainer *laContainer, xAOD::VertexContainer *lbContainer, const xAOD::Vertex *vertex, const xAOD::VertexContainer *vertColl, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () 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
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.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void SGError (const std::string &errService) const
bool doFit (const xAOD::TrackParticle *track1, const xAOD::TrackParticle *track2, Amg::Vector3D &startingPoint, const EventContext &ctx) const
bool d0Pass (const xAOD::TrackParticle *track1, const xAOD::TrackParticle *track2, const xAOD::VertexContainer *vertColl, const EventContext &ctx) const
bool d0Pass (const xAOD::TrackParticle *track1, const xAOD::VertexContainer *vertColl, const EventContext &ctx) const
bool d0Pass (const xAOD::TrackParticle *track1, const xAOD::Vertex *vertex, const EventContext &ctx) const
bool d0Pass (const xAOD::TrackParticle *track1, const Amg::Vector3D &vertex, const EventContext &ctx) const
bool pointAtVertex (const xAOD::Vertex *v0, const xAOD::Vertex *PV, float &score) const
bool pointAtVertexColl (xAOD::Vertex *v0, const xAOD::VertexContainer *vertColl, float &score) const
bool doMassFit (xAOD::Vertex *vxCandidate, int pdgID) const
std::unique_ptr< xAOD::VertexmassFit (const EventContext &ctx, int pdgID, const std::vector< const xAOD::TrackParticle * > &pairV0, const Amg::Vector3D &vertex) const
ElementLink< xAOD::TrackParticleContainermakeLink (const xAOD::TrackParticle *, const std::vector< const xAOD::TrackParticleContainer * > &) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Static Private Member Functions

static double invariantMass (const Trk::TrackParameters *per1, const Trk::TrackParameters *per2, double m1, double m2)

Private Attributes

SG::ReadHandleKey< xAOD::TrackParticleContainerm_trackParticleKey
PublicToolHandle< Trk::IVertexFitterm_iVertexFitter
PublicToolHandle< Trk::IVertexFitterm_iVKVertexFitter
PublicToolHandle< Trk::IVertexFitterm_iKshortFitter
PublicToolHandle< Trk::IVertexFitterm_iLambdaFitter
PublicToolHandle< Trk::IVertexFitterm_iLambdabarFitter
PublicToolHandle< Trk::IVertexFitterm_iGammaFitter
PublicToolHandle< Trk::V0Toolsm_V0Tools
PublicToolHandle< Reco::ITrackToVertexm_trackToVertexTool
PublicToolHandle< Trk::ITrackSelectorToolm_trkSelector
PublicToolHandle< InDet::VertexPointEstimatorm_vertexEstimator
PublicToolHandle< Trk::IExtrapolatorm_extrapolator
BooleanProperty m_doSimpleV0 {this, "doSimpleV0", false}
 = true equivalent to the old InDetSimpleV0Finder (false)
BooleanProperty m_useorigin {this, "useorigin", true}
 = true only using tracks that have no vertex association (true)
BooleanProperty m_samesign {this, "AddSameSign", false}
 = true select tracks with same sign (false)
BooleanProperty m_pv {this, "trkSelPV", false}
 = true select tracks wrt primary vertex (false)
BooleanProperty m_use_vertColl {this, "useVertexCollection", false}
 = true select tracks wrt a vertex collection (false)
BooleanProperty m_useTRTplusTRT {this, "useTRTplusTRT", false}
 = use TRT+TRT pairs (true)
BooleanProperty m_useTRTplusSi {this, "useTRTplusSi", false}
 = use TRT+Si pairs (true)
BooleanProperty m_useV0Fitter {this, "useV0Fitter", false}
 = true if using TrkV0Fitter, = false if using VKalVert (true)
BooleanProperty m_use_innerPixHits {this, "use_innerPixHits", false}
 = true select allows tracks with no innermost pixel layer hits to always pass d0 significance cut (false)
BooleanProperty m_useBDT {this, "useBDT", false}
 = true uses BDT selections in place of rectangular pointAtVertex + minVertProb
BooleanProperty m_useTrkSel {this, "use_TrackSelector", true}
 = true uses TrackSelectorTool
IntegerProperty m_masses {this, "masses", 1}
 = 1 if using PDG values, = 2 if user set (1)
DoubleProperty m_masspi {this, "masspi", ParticleConstants::chargedPionMassInMeV}
 pion mass (139.57 MeV)
DoubleProperty m_massp {this, "massp", ParticleConstants::protonMassInMeV}
 proton mass (938.272 MeV)
DoubleProperty m_masse {this, "masse", ParticleConstants::electronMassInMeV}
 electron mass (0.510999 MeV)
DoubleProperty m_massK0S {this, "massK0S", ParticleConstants::KZeroMassInMeV}
 Kshort mass (497.672 MeV).
DoubleProperty m_massLambda {this, "massLambda", ParticleConstants::lambdaMassInMeV}
 Lambda mass (1115.68 MeV).
DoubleProperty m_ptTRT {this, "ptTRT", 700.}
 Minimum pT for TRT tracks (700.
DoubleProperty m_maxsxy {this, "maxsxy", 1000.}
 Maximum Rxy of starting point (1000.
DoubleProperty m_uksmin {this, "uksmin", 400.}
 min Kshort mass, unconstrained fit (400.
DoubleProperty m_uksmax {this, "uksmax", 600.}
 max Kshort mass, unconstrained fit (600.
DoubleProperty m_ulamin {this, "ulamin", 1000.}
 min Lambda mass, unconstrained fit (1000.
DoubleProperty m_ulamax {this, "ulamax", 1200.}
 max Lambda mass, unconstrained fit (1200.
DoubleProperty m_ksmin {this, "ksmin", 400.}
 min Kshort mass (400.
DoubleProperty m_ksmax {this, "ksmax", 600.}
 max Kshort mass (600.
DoubleProperty m_lamin {this, "lamin", 1000.}
 min Lambda mass (1000.
DoubleProperty m_lamax {this, "lamax", 1200.}
 max Lambda mass (1200.
DoubleProperty m_errmass {this, "errmass", 100.}
 Maximum mass error (100.
DoubleProperty m_minVertProb {this, "minVertProb", 0.0001}
 Minimum vertex probability (0.0001).
DoubleProperty m_minConstrVertProb {this, "minConstrVertProb", 0.0001}
 Minimum vertex probability for constrained fit (0.0001).
DoubleProperty m_d0_cut {this, "d0_cut", 2.}
 track d0 significance wrt a vertex (>2.)
DoubleProperty m_max_d0_cut {this, "max_d0_cut", 999999.}
 track |d0| wrt a vertex (<999999.)
DoubleProperty m_max_z0_cut {this, "max_z0_cut", 999999.}
 track |z0| wrt a vertex (<999999.)
DoubleProperty m_vert_lxy_sig {this, "vert_lxy_sig", 2.}
 V0 lxy significance wrt a vertex (>2.).
DoubleProperty m_vert_lxy_cut {this, "vert_lxy_cut", 500.}
 V0 lxy V0 lxy (<500.).
DoubleProperty m_vert_a0xy_cut {this, "vert_a0xy_cut", 3.}
 V0 |a0xy| wrt a vertex (<3.).
DoubleProperty m_vert_a0z_cut {this, "vert_a0z_cut", 15.}
 V0 |a0z| wrt a vertex (<15.).
DoubleProperty m_vert_cos_cut {this, "vert_cos_cut", 0.}
 V0 cos(theta) angle between displacement and momentum (>0.).
DoubleProperty m_BDTCut {this, "BDTCut", -1}
 BDT Score threshold.
StringProperty m_BDTFile {this, "BDTFile", "XGBModelBetterVertex.root"}
 Filename of mvaUtils model file, located in /InDetV0FinderTool/BDT/v1/.
std::atomic< unsigned int > m_events_processed {}
std::atomic< unsigned int > m_V0s_stored {}
std::atomic< unsigned int > m_Kshort_stored {}
std::atomic< unsigned int > m_Lambda_stored {}
std::atomic< unsigned int > m_Lambdabar_stored {}
std::atomic< unsigned int > m_Gamma_stored {}
const Trk::TrkV0VertexFitterm_concreteVertexFitter = nullptr
SG::ReadHandleKey< xAOD::VertexContainerm_vertexKey
SG::WriteDecorHandleKey< xAOD::VertexContainerm_v0LinksDecorkeyks
SG::WriteDecorHandleKey< xAOD::VertexContainerm_v0LinksDecorkeylb
SG::WriteDecorHandleKey< xAOD::VertexContainerm_v0LinksDecorkeylbb
SG::WriteDecorHandleKey< xAOD::VertexContainerm_v0_ksLinksDecorkey
SG::WriteDecorHandleKey< xAOD::VertexContainerm_v0_laLinksDecorkey
SG::WriteDecorHandleKey< xAOD::VertexContainerm_v0_lbLinksDecorkey
SG::WriteDecorHandleKey< xAOD::VertexContainerm_mDecor_gfit
SG::WriteDecorHandleKey< xAOD::VertexContainerm_mDecor_gmass
SG::WriteDecorHandleKey< xAOD::VertexContainerm_mDecor_gmasserr
SG::WriteDecorHandleKey< xAOD::VertexContainerm_mDecor_gprob
SG::WriteDecorHandleKey< xAOD::VertexContainerm_v0_BDTScore
std::unique_ptr< MVAUtils::BDTm_BDT
SG::ReadHandleKey< xAOD::EventInfom_eventInfo_key {this, "EventInfo", "EventInfo", "Input event information"}
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
SG::ReadDecorHandleKeyArray< xAOD::EventInfom_beamSpotDecoKey {this, "BeamSpotDecoKeys", m_eventInfo_key, {"beamPosX", "beamPosY", "beamPosZ"}, "Add the scheduler dependencies on the beamspot information"}
Gaudi::Property< bool > m_useBeamSpotCond { this, "UseBeamSpotCond", false }
Gaudi::Property< std::string > m_v0Key { this, "V0ContainerName", "V0Candidates", "V0 container name (same calling alg)" }
Gaudi::Property< std::string > m_ksKey { this, "KshortContainerName", "KshortCandidates", "Ks container name (same calling alg)" }
Gaudi::Property< std::string > m_laKey
Gaudi::Property< std::string > m_lbKey
Gaudi::Property< int > m_maxPV { this, "MaxPV", 999999 }
SG::ReadHandleKeyArray< xAOD::TrackParticleContainerm_RelinkContainers {this, "RelinkTracks", {}, "Track Containers if they need to be relinked through indirect use" }
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 97 of file InDetV0FinderTool.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

◆ InDetV0FinderTool()

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

Definition at line 34 of file InDetV0FinderTool.cxx.

35 :
36 AthAlgTool(t,n,p)
37{
38 declareInterface<InDetV0FinderTool>(this);
39}
AthAlgTool()
Default constructor:

◆ ~InDetV0FinderTool()

InDet::InDetV0FinderTool::~InDetV0FinderTool ( )
default

Member Function Documentation

◆ d0Pass() [1/4]

bool InDet::InDetV0FinderTool::d0Pass ( const xAOD::TrackParticle * track1,
const Amg::Vector3D & vertex,
const EventContext & ctx ) const
private

Definition at line 708 of file InDetV0FinderTool.cxx.

709{
710 bool pass = false;
711 bool hasInnerPixHit1 = true;
713 SG::AuxElement::ConstAccessor<uint8_t> numberOfInnermostPixelLayerHits("numberOfInnermostPixelLayerHits");
714 uint8_t nInnerHits1 = numberOfInnermostPixelLayerHits(*track1);
715 if (nInnerHits1 == 0) hasInnerPixHit1 = false;
716 }
717 auto per1 = m_trackToVertexTool->perigeeAtVertex(ctx, *track1, PV );
718 if (per1 == nullptr) return pass;
719 double d0_1 = per1->parameters()[Trk::d0];
720 double sig_d0_1 = sqrt((*per1->covariance())(0,0));
721 double delta_z0_1 = track1->z0() + track1->vz() - PV.z();
722 if (((std::abs(d0_1/sig_d0_1) > m_d0_cut) ||
723 (!hasInnerPixHit1)) &&
724 (std::abs(d0_1) < m_max_d0_cut) &&
725 (std::abs(delta_z0_1) < m_max_z0_cut)) pass = true;
726 return pass;
727}
DoubleProperty m_d0_cut
track d0 significance wrt a vertex (>2.)
DoubleProperty m_max_z0_cut
track |z0| wrt a vertex (<999999.)
BooleanProperty m_use_innerPixHits
= true select allows tracks with no innermost pixel layer hits to always pass d0 significance cut (fa...
PublicToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
DoubleProperty m_max_d0_cut
track |d0| wrt a vertex (<999999.)
float z0() const
Returns the parameter.
float vz() const
The z origin for the parameters.
@ d0
Definition ParamDefs.h:63
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer

◆ d0Pass() [2/4]

bool InDet::InDetV0FinderTool::d0Pass ( const xAOD::TrackParticle * track1,
const xAOD::TrackParticle * track2,
const xAOD::VertexContainer * vertColl,
const EventContext & ctx ) const
private

Definition at line 622 of file InDetV0FinderTool.cxx.

623{
624 bool pass = false;
625 int count = 0;
626 bool hasInnerPixHit1 = true;
627 bool hasInnerPixHit2 = true;
629 SG::AuxElement::ConstAccessor<uint8_t> numberOfInnermostPixelLayerHits("numberOfInnermostPixelLayerHits");
630 uint8_t nInnerHits1 = numberOfInnermostPixelLayerHits(*track1);
631 if (nInnerHits1 == 0) hasInnerPixHit1 = false;
632 uint8_t nInnerHits2 = numberOfInnermostPixelLayerHits(*track2);
633 if (nInnerHits2 == 0) hasInnerPixHit2 = false;
634 }
635 for (auto vItr=vertColl->begin(); vItr!=vertColl->end(); ++vItr )
636 {
637 const xAOD::Vertex* PV = (*vItr);
638 auto per1 = m_trackToVertexTool->perigeeAtVertex(ctx, *track1, PV->position() );
639 if (per1 == nullptr) continue;
640 auto per2 = m_trackToVertexTool->perigeeAtVertex(ctx, *track2, PV->position() );
641 if (per2 == nullptr) continue;
642 double d0_1 = per1->parameters()[Trk::d0];
643 double sig_d0_1 = sqrt((*per1->covariance())(0,0));
644 double delta_z0_1 = track1->z0() + track1->vz() - PV->z();
645 double d0_2 = per2->parameters()[Trk::d0];
646 double sig_d0_2 = sqrt((*per2->covariance())(0,0));
647 double delta_z0_2 = track2->z0() + track2->vz() - PV->z();
648 bool IP_check1 = (std::abs(d0_1/sig_d0_1) > m_d0_cut) || !hasInnerPixHit1;
649 IP_check1 &= std::abs(d0_1) < m_max_d0_cut;
650 IP_check1 &= std::abs(delta_z0_1) < m_max_z0_cut;
651 bool IP_check2 = (std::abs(d0_2/sig_d0_2) > m_d0_cut) || !hasInnerPixHit2;
652 IP_check2 &= std::abs(d0_2) < m_max_d0_cut;
653 IP_check2 &= std::abs(delta_z0_2) < m_max_z0_cut;
654 if (IP_check1 && IP_check2) return true;
655 if (++count >= m_maxPV) break;
656 }
657 return pass;
658}
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Gaudi::Property< int > m_maxPV
float z() const
Returns the z position.
const Amg::Vector3D & position() const
Returns the 3-pos.
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:148
Vertex_v1 Vertex
Define the latest version of the vertex class.

◆ d0Pass() [3/4]

bool InDet::InDetV0FinderTool::d0Pass ( const xAOD::TrackParticle * track1,
const xAOD::Vertex * vertex,
const EventContext & ctx ) const
private

Definition at line 687 of file InDetV0FinderTool.cxx.

688{
689 bool pass = false;
690 bool hasInnerPixHit1 = true;
692 SG::AuxElement::ConstAccessor<uint8_t> numberOfInnermostPixelLayerHits("numberOfInnermostPixelLayerHits");
693 uint8_t nInnerHits1 = numberOfInnermostPixelLayerHits(*track1);
694 if (nInnerHits1 == 0) hasInnerPixHit1 = false;
695 }
696 auto per1 = m_trackToVertexTool->perigeeAtVertex(ctx, *track1, PV->position() );
697 if (per1 == nullptr) return pass;
698 double d0_1 = per1->parameters()[Trk::d0];
699 double sig_d0_1 = sqrt((*per1->covariance())(0,0));
700 double delta_z0_1 = track1->z0() + track1->vz() - PV->z();
701 if (((std::abs(d0_1/sig_d0_1) > m_d0_cut) ||
702 (!hasInnerPixHit1)) &&
703 (std::abs(d0_1) < m_max_d0_cut) &&
704 (std::abs(delta_z0_1) < m_max_z0_cut)) pass = true;
705 return pass;
706}

◆ d0Pass() [4/4]

bool InDet::InDetV0FinderTool::d0Pass ( const xAOD::TrackParticle * track1,
const xAOD::VertexContainer * vertColl,
const EventContext & ctx ) const
private

Definition at line 660 of file InDetV0FinderTool.cxx.

661{
662 bool pass = false;
663 int count = 0;
664 bool hasInnerPixHit1 = true;
666 SG::AuxElement::ConstAccessor<uint8_t> numberOfInnermostPixelLayerHits("numberOfInnermostPixelLayerHits");
667 uint8_t nInnerHits1 = numberOfInnermostPixelLayerHits(*track1);
668 if (nInnerHits1 == 0) hasInnerPixHit1 = false;
669 }
670 for (auto vItr=vertColl->begin(); vItr!=vertColl->end(); ++vItr )
671 {
672 const xAOD::Vertex* PV = (*vItr);
673 auto per1 = m_trackToVertexTool->perigeeAtVertex(ctx, *track1, PV->position() );
674 if (per1 == nullptr) continue;
675 double d0_1 = per1->parameters()[Trk::d0];
676 double sig_d0_1 = sqrt((*per1->covariance())(0,0));
677 double delta_z0_1 = track1->z0() + track1->vz() - PV->z();
678 if (((std::abs(d0_1/sig_d0_1) > m_d0_cut) ||
679 (!hasInnerPixHit1)) &&
680 (std::abs(d0_1) < m_max_d0_cut) &&
681 (std::abs(delta_z0_1) < m_max_z0_cut)) return true;
682 if (++count >= m_maxPV) break;
683 }
684 return pass;
685}

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

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

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

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

◆ doFit()

bool InDet::InDetV0FinderTool::doFit ( const xAOD::TrackParticle * track1,
const xAOD::TrackParticle * track2,
Amg::Vector3D & startingPoint,
const EventContext & ctx ) const
private

Definition at line 588 of file InDetV0FinderTool.cxx.

590{
591 bool pass = false;
592 double srxy = startingPoint.perp();
593 if (srxy <= m_maxsxy)
594 {
595 double massKshort_i=2000001., massLambda_i=2000001., massLambdabar_i=2000001.;
596 const Amg::Vector3D& globalPosition = startingPoint;
597 Trk::PerigeeSurface perigeeSurface(globalPosition);
598 std::vector<std::unique_ptr<const Trk::TrackParameters> > cleanup;
599 const Trk::TrackParameters* extrapolatedPerigee1(nullptr);
600 const Trk::TrackParameters* extrapolatedPerigee2(nullptr);
601 extrapolatedPerigee1 = m_extrapolator->extrapolate(ctx,track1->perigeeParameters(), perigeeSurface).release();
602 if (extrapolatedPerigee1 == nullptr) extrapolatedPerigee1 = &track1->perigeeParameters();
603 else cleanup.push_back(std::unique_ptr<const Trk::TrackParameters>(extrapolatedPerigee1));
604
605 extrapolatedPerigee2 = m_extrapolator->extrapolate(ctx,track2->perigeeParameters(), perigeeSurface).release();
606 if (extrapolatedPerigee2 == nullptr) extrapolatedPerigee2 = &track2->perigeeParameters();
607 else cleanup.push_back(std::unique_ptr<const Trk::TrackParameters>(extrapolatedPerigee2));
608
609 if (extrapolatedPerigee1 != nullptr && extrapolatedPerigee2 != nullptr) {
610 massKshort_i = invariantMass(extrapolatedPerigee1,extrapolatedPerigee2,m_masspi,m_masspi);
611 massLambda_i = invariantMass(extrapolatedPerigee1,extrapolatedPerigee2,m_massp,m_masspi);
612 massLambdabar_i = invariantMass(extrapolatedPerigee1,extrapolatedPerigee2,m_masspi,m_massp);
613 if ( ((massKshort_i >= m_uksmin && massKshort_i <= m_uksmax) ||
614 (massLambda_i >= m_ulamin && massLambda_i <= m_ulamax) ||
615 (massLambdabar_i >= m_ulamin && massLambdabar_i <= m_ulamax)) ) pass = true;
616 }
617 }
618
619 return pass;
620}
DoubleProperty m_masspi
pion mass (139.57 MeV)
DoubleProperty m_ulamax
max Lambda mass, unconstrained fit (1200.
DoubleProperty m_ulamin
min Lambda mass, unconstrained fit (1000.
static double invariantMass(const Trk::TrackParameters *per1, const Trk::TrackParameters *per2, double m1, double m2)
DoubleProperty m_uksmax
max Kshort mass, unconstrained fit (600.
DoubleProperty m_maxsxy
Maximum Rxy of starting point (1000.
PublicToolHandle< Trk::IExtrapolator > m_extrapolator
DoubleProperty m_uksmin
min Kshort mass, unconstrained fit (400.
DoubleProperty m_massp
proton mass (938.272 MeV)
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
Eigen::Matrix< double, 3, 1 > Vector3D
ParametersBase< TrackParametersDim, Charged > TrackParameters

◆ doMassFit()

bool InDet::InDetV0FinderTool::doMassFit ( xAOD::Vertex * vxCandidate,
int pdgID ) const
private

Definition at line 782 of file InDetV0FinderTool.cxx.

783{
784 bool pass = false;
785 double mass = 1000000000.;
786 double error = 1000000001.;
787 bool in_mass_window = false;
788 double winmass_min = 0., winmass_max = 0.;
789
790 if (pdgID == 310) {
791 winmass_min = m_ksmin;
792 winmass_max = m_ksmax;
793 mass = m_V0Tools->invariantMass(vxCandidate,m_masspi,m_masspi);
794 error = m_V0Tools->invariantMassError(vxCandidate,m_masspi,m_masspi);
795 if (mass >= winmass_min && mass <= winmass_max && error <= m_errmass) in_mass_window = true;
796 } else if (pdgID == 3122 || pdgID == -3122) {
797 winmass_min = m_lamin;
798 winmass_max = m_lamax;
799 if (pdgID == 3122) {
800 mass = m_V0Tools->invariantMass(vxCandidate,m_massp,m_masspi);
801 error = m_V0Tools->invariantMassError(vxCandidate,m_massp,m_masspi);
802 } else if (pdgID == -3122) {
803 mass = m_V0Tools->invariantMass(vxCandidate,m_masspi,m_massp);
804 error = m_V0Tools->invariantMassError(vxCandidate,m_masspi,m_massp);
805 }
806 if (mass >= winmass_min && mass <= winmass_max && error <= m_errmass) in_mass_window = true;
807 }
808 if (in_mass_window) pass = true;
809
810 return pass;
811}
DoubleProperty m_ksmin
min Kshort mass (400.
DoubleProperty m_ksmax
max Kshort mass (600.
DoubleProperty m_lamax
max Lambda mass (1200.
PublicToolHandle< Trk::V0Tools > m_V0Tools
DoubleProperty m_lamin
min Lambda mass (1000.
DoubleProperty m_errmass
Maximum mass error (100.

◆ evtStore()

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.

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

Definition at line 567 of file InDetV0FinderTool.cxx.

568{
569 msg(MSG::DEBUG)
570 << "----------------------------------------------------------------------------------------------------------------------------------------------" << endmsg
571 << "\tSummary" << endmsg
572 << "\tProcessed : " << m_events_processed << " events" << endmsg
573 << "\tStored : " << m_V0s_stored << " V0s" << endmsg
574 << "\tof which : " << m_Kshort_stored << " Kshorts" << endmsg
575 << "\t : " << m_Lambda_stored << " Lambdas" << endmsg
576 << "\t : " << m_Lambdabar_stored << " Lambdabars" << endmsg;
577 msg(MSG::DEBUG) << "----------------------------------------------------------------------------------------------------------------------------------------------" << endmsg;
578
579 return StatusCode::SUCCESS;
580}
#define endmsg
MsgStream & msg() const
std::atomic< unsigned int > m_events_processed
std::atomic< unsigned int > m_Kshort_stored
std::atomic< unsigned int > m_Lambda_stored
std::atomic< unsigned int > m_V0s_stored
std::atomic< unsigned int > m_Lambdabar_stored

◆ initialize()

StatusCode InDet::InDetV0FinderTool::initialize ( )

Definition at line 43 of file InDetV0FinderTool.cxx.

44{
45 ATH_CHECK( m_trackParticleKey.initialize() );
46
47 // Get the right vertex fitting tool from ToolSvc
48 if (m_useV0Fitter) {
49 ATH_CHECK( m_iVertexFitter.retrieve() );
50 ATH_MSG_DEBUG( "Retrieved tool " << m_iVertexFitter);
51 } else {
52 ATH_CHECK( m_iVKVertexFitter.retrieve() );
53 ATH_MSG_DEBUG("Retrieved tool " << m_iVKVertexFitter);
54
55 // Get the VKalVrt Ks vertex fitting tool from ToolSvc
56 ATH_CHECK( m_iKshortFitter.retrieve() );
57 ATH_MSG_DEBUG("Retrieved tool " << m_iKshortFitter);
58
59 // Get the VKalVrt Lambda vertex fitting tool from ToolSvc
60 ATH_CHECK( m_iLambdaFitter.retrieve() );
61 ATH_MSG_DEBUG( "Retrieved tool " << m_iLambdaFitter);
62
63 // Get the VKalVrt Lambdabar vertex fitting tool from ToolSvc
64 ATH_CHECK( m_iLambdabarFitter.retrieve() );
65 ATH_MSG_DEBUG("Retrieved tool " << m_iLambdabarFitter);
66 }
67
68 ATH_CHECK( m_iGammaFitter.retrieve() );
69 ATH_MSG_DEBUG("Retrieved tool " << m_iGammaFitter);
70
71
72
73 // uploading the V0 tools
74 ATH_CHECK( m_V0Tools.retrieve() );
75 ATH_MSG_DEBUG("Retrieved tool " << m_V0Tools);
76
77 // Get the TrackToVertex extrapolator tool
78 ATH_CHECK( m_trackToVertexTool.retrieve() );
79
80 // Get the extrapolator
81 ATH_CHECK( m_extrapolator.retrieve() );
82 ATH_MSG_DEBUG("Retrieved tool ");
83
84 // Initialize vertex container key
85 ATH_CHECK( m_vertexKey.initialize() );
86
87 m_v0LinksDecorkeyks = m_ksKey + ".V0Link";
88 m_v0LinksDecorkeylb = m_laKey + ".V0Link";
89 m_v0LinksDecorkeylbb = m_lbKey + ".V0Link";
90 m_v0_ksLinksDecorkey = m_v0Key + ".KshortLink";
91 m_v0_laLinksDecorkey = m_v0Key + ".LambdaLink";
92 m_v0_lbLinksDecorkey = m_v0Key + ".LambdabarLink";
93 ATH_MSG_DEBUG("m_v0_lbLinksDecorkey = " << m_v0_lbLinksDecorkey.key());
94 ATH_MSG_DEBUG("m_v0_laLinksDecorkey = " << m_v0_laLinksDecorkey.key());
95 ATH_MSG_DEBUG("m_v0_ksLinksDecorkey = " << m_v0_ksLinksDecorkey.key());
96 ATH_MSG_DEBUG("m_v0LinksDecorkeyks = " << m_v0LinksDecorkeyks.key());
97 ATH_CHECK( m_v0LinksDecorkeyks.initialize());
98 ATH_CHECK( m_v0LinksDecorkeylb.initialize());
99 ATH_CHECK( m_v0LinksDecorkeylbb.initialize());
100 ATH_CHECK( m_v0_ksLinksDecorkey.initialize());
101 ATH_CHECK( m_v0_laLinksDecorkey.initialize());
102 ATH_CHECK( m_v0_lbLinksDecorkey.initialize());
103
104 m_mDecor_gfit = m_v0Key + ".gamma_fit";
105 m_mDecor_gmass = m_v0Key + ".gamma_mass";
106 m_mDecor_gmasserr = m_v0Key + ".gamma_massError";
107 m_mDecor_gprob = m_v0Key + ".gamma_probability";
108 ATH_CHECK( m_mDecor_gfit.initialize());
109 ATH_CHECK( m_mDecor_gmass.initialize());
110 ATH_CHECK( m_mDecor_gmasserr.initialize());
111 ATH_CHECK( m_mDecor_gprob.initialize());
112
113 m_v0_BDTScore = m_v0Key + ".BDTScore";
114
115 ATH_MSG_DEBUG("m_v0_BDTScore = " << m_v0_BDTScore.key());
116 ATH_CHECK( m_v0_BDTScore.initialize());
117
118
119 if (m_useBDT){
120 std::string BDTPathName = "InDetV0FinderTool/BDT/v1/" + m_BDTFile;
121 std::string fullPathToFile = PathResolverFindCalibFile(BDTPathName);
122 ATH_MSG_DEBUG("Using BDT File: " << fullPathToFile);
123 std::unique_ptr<TFile> rootFile(TFile::Open(fullPathToFile.c_str(), "READ"));
124 std::string strBDTName = "xgboost";
125 std::unique_ptr<TTree> training( (TTree*)rootFile->Get(strBDTName.c_str()) );
126 m_BDT = std::make_unique<MVAUtils::BDT>(training.get());
127 }
128
132
133// Get the track selector tool from ToolSvc
134 ATH_CHECK( m_trkSelector.retrieve() );
135 ATH_MSG_DEBUG("Retrieved tool " << m_trkSelector);
136
137// Get the vertex point estimator tool from ToolSvc
138 ATH_CHECK( m_vertexEstimator.retrieve() );
139 ATH_MSG_DEBUG("Retrieved tool " << m_vertexEstimator);
140
141 if (m_masses == 1) {
142 auto gendata = std::make_shared<GenData>();
143 m_masspi = gendata->particleMass(MC::PIPLUS).value();
144 m_massp = gendata->particleMass(MC::PROTON).value();
145 m_masse = gendata->particleMass(MC::ELECTRON).value();
146 m_massK0S = gendata->particleMass(MC::K0S).value();
147 m_massLambda = gendata->particleMass(MC::LAMBDA0).value();
148 }
149
151 m_V0s_stored = 0;
152 m_Kshort_stored = 0;
154 m_Lambda_stored = 0;
155 m_Gamma_stored = 0;
156
157// making a concrete fitter for the V0Fitter
158 m_concreteVertexFitter = nullptr;
159 if (m_useV0Fitter) {
160 m_concreteVertexFitter = dynamic_cast<Trk::TrkV0VertexFitter * >(&(*m_iVertexFitter));
161 if (m_concreteVertexFitter == nullptr) {
162 ATH_MSG_FATAL("The vertex fitter passed is not a V0 Vertex Fitter");
163 return StatusCode::FAILURE;
164 }
165 }
166
167 ATH_CHECK(m_RelinkContainers.initialize());
168
169 ATH_MSG_DEBUG( "Initialization successful" );
170
171 return StatusCode::SUCCESS;
172}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_DEBUG(x)
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_v0LinksDecorkeyks
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_v0_lbLinksDecorkey
const Trk::TrkV0VertexFitter * m_concreteVertexFitter
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_mDecor_gfit
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_mDecor_gprob
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_v0LinksDecorkeylbb
SG::ReadHandleKeyArray< xAOD::TrackParticleContainer > m_RelinkContainers
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo_key
PublicToolHandle< Trk::IVertexFitter > m_iLambdabarFitter
PublicToolHandle< Trk::ITrackSelectorTool > m_trkSelector
PublicToolHandle< Trk::IVertexFitter > m_iKshortFitter
DoubleProperty m_massLambda
Lambda mass (1115.68 MeV).
PublicToolHandle< Trk::IVertexFitter > m_iVKVertexFitter
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_mDecor_gmass
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
BooleanProperty m_useBDT
= true uses BDT selections in place of rectangular pointAtVertex + minVertProb
Gaudi::Property< std::string > m_lbKey
PublicToolHandle< Trk::IVertexFitter > m_iGammaFitter
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_v0_ksLinksDecorkey
IntegerProperty m_masses
= 1 if using PDG values, = 2 if user set (1)
std::atomic< unsigned int > m_Gamma_stored
SG::ReadDecorHandleKeyArray< xAOD::EventInfo > m_beamSpotDecoKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleKey
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_v0LinksDecorkeylb
Gaudi::Property< std::string > m_ksKey
PublicToolHandle< InDet::VertexPointEstimator > m_vertexEstimator
std::unique_ptr< MVAUtils::BDT > m_BDT
PublicToolHandle< Trk::IVertexFitter > m_iLambdaFitter
Gaudi::Property< std::string > m_v0Key
DoubleProperty m_masse
electron mass (0.510999 MeV)
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexKey
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_v0_BDTScore
StringProperty m_BDTFile
Filename of mvaUtils model file, located in /InDetV0FinderTool/BDT/v1/.
PublicToolHandle< Trk::IVertexFitter > m_iVertexFitter
BooleanProperty m_useV0Fitter
= true if using TrkV0Fitter, = false if using VKalVert (true)
DoubleProperty m_massK0S
Kshort mass (497.672 MeV).
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_mDecor_gmasserr
Gaudi::Property< std::string > m_laKey
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_v0_laLinksDecorkey
Gaudi::Property< bool > m_useBeamSpotCond
static const int ELECTRON
static const int K0S
static const int PIPLUS
static const int LAMBDA0
static const int PROTON

◆ 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()

const InterfaceID & InDet::InDetV0FinderTool::interfaceID ( )
inlinestatic

Definition at line 105 of file InDetV0FinderTool.h.

105{ return IID_InDetV0FinderTool;}
static const InterfaceID IID_InDetV0FinderTool("InDetV0FinderTool", 1, 0)

◆ invariantMass()

double InDet::InDetV0FinderTool::invariantMass ( const Trk::TrackParameters * per1,
const Trk::TrackParameters * per2,
double m1,
double m2 )
staticprivate

Definition at line 770 of file InDetV0FinderTool.cxx.

771{
772 double e1sq = per1->momentum().mag2() + m1*m1;
773 double e1 = (e1sq>0.) ? sqrt(e1sq) : 0.;
774 double e2sq = per2->momentum().mag2() + m2*m2;
775 double e2 = (e2sq>0.) ? sqrt(e2sq) : 0.;
776 double p = (per1->momentum()+per2->momentum()).mag();
777 double msq = (e1+e2+p)*(e1+e2-p);
778 double mass = (msq>0.) ? sqrt(msq) : 0.;
779 return mass;
780}
const Amg::Vector3D & momentum() const
Access method for the momentum.
double e2(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 2nd sampling
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling

◆ makeLink()

ElementLink< xAOD::TrackParticleContainer > InDet::InDetV0FinderTool::makeLink ( const xAOD::TrackParticle * tp,
const std::vector< const xAOD::TrackParticleContainer * > & trackcols ) const
private

Definition at line 859 of file InDetV0FinderTool.cxx.

861{
862 ElementLink<xAOD::TrackParticleContainer> Link;
863 Link.setElement(tp);
864 bool elementSet = false;
865 if(trackcols.empty()){
866 Link.setStorableObject( *dynamic_cast<const xAOD::TrackParticleContainer*>( tp->container() ) );
867 elementSet = true;
868 } else {
869 for(const xAOD::TrackParticleContainer* trkcol : trackcols){
870 auto itr = std::find(trkcol->begin(), trkcol->end(), tp);
871 if(itr != trkcol->end()){
872 Link.setStorableObject(*trkcol, true);
873 elementSet = true;
874 break;
875 }
876 }
877 }
878 if(!elementSet) ATH_MSG_ERROR("Track was not found when linking");
879 return Link;
880}
#define ATH_MSG_ERROR(x)
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".

◆ massFit()

std::unique_ptr< xAOD::Vertex > InDet::InDetV0FinderTool::massFit ( const EventContext & ctx,
int pdgID,
const std::vector< const xAOD::TrackParticle * > & pairV0,
const Amg::Vector3D & vertex ) const
private

Definition at line 813 of file InDetV0FinderTool.cxx.

814{
815 std::unique_ptr<xAOD::Vertex> vxCandidate;
816 std::vector<double> masses;
817 if (pdgID == 310) {
818 masses.push_back(m_masspi);
819 masses.push_back(m_masspi);
820 } else if (pdgID == 3122) {
821 masses.push_back(m_massp);
822 masses.push_back(m_masspi);
823 } else if (pdgID == -3122) {
824 masses.push_back(m_masspi);
825 masses.push_back(m_massp);
826 } else if (pdgID == 22) {
827 masses.push_back(m_masse);
828 masses.push_back(m_masse);
829 }
830
831 if (pdgID == 22) {
832 vxCandidate = m_iGammaFitter->fit(ctx, pairV0, vertex);
833 }
834 if (pdgID == 310) {
835 if (m_useV0Fitter) {
836 vxCandidate = m_concreteVertexFitter->fit(ctx, pairV0, masses, m_massK0S, nullptr, vertex);
837 } else {
838 vxCandidate = m_iKshortFitter->fit(ctx, pairV0, vertex);
839 }
840 }
841 if (pdgID == 3122) {
842 if (m_useV0Fitter) {
843 vxCandidate = m_concreteVertexFitter->fit(ctx, pairV0, masses, m_massLambda, nullptr, vertex);
844 } else {
845 vxCandidate = m_iLambdaFitter->fit(ctx, pairV0, vertex);
846 }
847 }
848 if (pdgID == -3122) {
849 if (m_useV0Fitter) {
850 vxCandidate = m_concreteVertexFitter->fit(ctx, pairV0, masses, m_massLambda, nullptr, vertex);
851 } else {
852 vxCandidate = m_iLambdabarFitter->fit(ctx, pairV0, vertex);
853 }
854 }
855
856 return vxCandidate;
857}

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

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

◆ performSearch()

StatusCode InDet::InDetV0FinderTool::performSearch ( xAOD::VertexContainer * v0Container,
xAOD::VertexContainer * ksContainer,
xAOD::VertexContainer * laContainer,
xAOD::VertexContainer * lbContainer,
const xAOD::Vertex * vertex,
const xAOD::VertexContainer * vertColl,
const EventContext & ctx ) const

Definition at line 174 of file InDetV0FinderTool.cxx.

182{
183
184 ATH_MSG_DEBUG( "InDetV0FinderTool::performSearch" );
185 std::vector<const xAOD::TrackParticleContainer*> trackCols;
186 for(const auto &str : m_RelinkContainers){
187 SG::ReadHandle<xAOD::TrackParticleContainer> handle(str,ctx);
188 trackCols.push_back(handle.cptr());
189 }
190
192
193 //Retrieve vertices for overlap removal
194 SG::ReadHandle<xAOD::VertexContainer> vertices { m_vertexKey, ctx };
195 if (!vertices.isValid())
196 {
197 ATH_MSG_WARNING("Primary vertex container with key " << m_vertexKey.key() << " not found");
198 return StatusCode::SUCCESS;
199 }
200
201// Retrieve track particles from StoreGate
202 SG::ReadHandle<xAOD::TrackParticleContainer> TPC( m_trackParticleKey, ctx );
203 if ( !TPC.isValid() )
204 {
205 ATH_MSG_ERROR("Input TrackParticle collection is invalid!");
206 return StatusCode::SUCCESS;
207 }
208 ATH_MSG_DEBUG("Track particle container size " << TPC->size());
209
210 if (m_use_vertColl) {
211 ATH_MSG_DEBUG("Vertex container size " << vertColl->size());
212 }
213 Amg::Vector3D beamspot;
215 auto beamSpotHandle = SG::ReadCondHandle(m_beamSpotKey, ctx);
216 beamspot = beamSpotHandle->beamPos();
217 }else{
218 SG::ReadDecorHandle<xAOD::EventInfo, float> beamPosX(m_beamSpotDecoKey[0], ctx);
219 SG::ReadDecorHandle<xAOD::EventInfo, float> beamPosY(m_beamSpotDecoKey[1], ctx);
220 SG::ReadDecorHandle<xAOD::EventInfo, float> beamPosZ(m_beamSpotDecoKey[2], ctx);
221 beamspot = Amg::Vector3D(beamPosX(0), beamPosY(0), beamPosZ(0));
222 }
223// track preselection
224 std::vector<const xAOD::TrackParticle*> posTracks; posTracks.clear();
225 std::vector<const xAOD::TrackParticle*> negTracks; negTracks.clear();
226 const xAOD::Vertex* vx = nullptr;
227 if (m_pv && primaryVertex) vx = primaryVertex;
228
229 if (TPC->size() > 1) {
231 for ( tpIt=TPC->begin(); tpIt!=TPC->end(); ++tpIt )
232 {
233 const xAOD::TrackParticle* TP = (*tpIt);
234 double charge = TP->charge();
235
236 if (m_trkSelector->decision(*TP, vx) || (!m_useTrkSel))
237 {
238 //PV Track Overlap Selections
239 const xAOD::Vertex* foundVertex { nullptr };
240 if (m_useorigin)
241 {
242 for (const auto *const vx : *vertices)
243 {
244 for (const auto& tpLink : vx->trackParticleLinks())
245 {
246 if (*tpLink == TP)
247 {
248 foundVertex = vx;
249 break;
250 }
251 }
252 if (foundVertex) break;
253 }
254 }
255 bool useTrack = false;
256 if (!m_useorigin) useTrack = true;
257 if (m_useorigin && foundVertex == nullptr) useTrack = true;
258 if (!useTrack) continue;
259
260
261 //d0 Selections
262 bool d0wrtVertex = true;
263 if (m_use_vertColl) {
264 if ( !d0Pass(TP,vertColl, ctx) ) d0wrtVertex = false;
265 }
266 if (!m_use_vertColl && m_pv) {
267 if (primaryVertex) {
268 if ( !d0Pass(TP,primaryVertex, ctx) ) d0wrtVertex = false;
269 } else {
270 if ( !d0Pass(TP,beamspot, ctx) ) d0wrtVertex = false;
271 }
272 }
273 if (!d0wrtVertex) continue;
274
275 if (m_samesign) {
276 posTracks.push_back(TP);
277 negTracks.push_back(TP);
278 } else {
279 if (charge > 0) {
280 posTracks.push_back(*tpIt);
281 } else {
282 negTracks.push_back(*tpIt);
283 }
284 }
285 }
286 }
287 }
288 ATH_MSG_DEBUG("number of tracks passing preselection, positive " << posTracks.size() << " negative " << negTracks.size());
289
290 if (!posTracks.empty() && !negTracks.empty())
291 {
292
293
294 SG::WriteDecorHandle<xAOD::VertexContainer, ElementLink<xAOD::VertexContainer>> v0LinksDecorks(m_v0LinksDecorkeyks, ctx);
295 SG::WriteDecorHandle<xAOD::VertexContainer, ElementLink<xAOD::VertexContainer>> v0LinksDecorlb(m_v0LinksDecorkeylb, ctx);
296 SG::WriteDecorHandle<xAOD::VertexContainer, ElementLink<xAOD::VertexContainer>> v0LinksDecorlbb(m_v0LinksDecorkeylbb, ctx);
297 SG::WriteDecorHandle<xAOD::VertexContainer, ElementLink<xAOD::VertexContainer>> v0_ksLinksDecor(m_v0_ksLinksDecorkey, ctx);
298 SG::WriteDecorHandle<xAOD::VertexContainer, ElementLink<xAOD::VertexContainer>> v0_laLinksDecor(m_v0_laLinksDecorkey, ctx);
299 SG::WriteDecorHandle<xAOD::VertexContainer, ElementLink<xAOD::VertexContainer>> v0_lbLinksDecor(m_v0_lbLinksDecorkey, ctx);
300 SG::WriteDecorHandle<xAOD::VertexContainer, int> mDecor_gfit(m_mDecor_gfit, ctx);
301 SG::WriteDecorHandle<xAOD::VertexContainer, float> mDecor_gmass(m_mDecor_gmass, ctx);
302 SG::WriteDecorHandle<xAOD::VertexContainer, float> mDecor_gmasserr(m_mDecor_gmasserr, ctx);
303 SG::WriteDecorHandle<xAOD::VertexContainer, float> mDecor_gprob(m_mDecor_gprob, ctx);
304
305 SG::WriteDecorHandle<xAOD::VertexContainer, float> v0_BDTScore(m_v0_BDTScore, ctx);
306
307 std::vector<const xAOD::TrackParticle*>::const_iterator tpIt1;
308 std::vector<const xAOD::TrackParticle*>::const_iterator tpIt2;
309 unsigned int i1 = 0;
310 for (tpIt1 = posTracks.begin(); tpIt1 != posTracks.end(); ++tpIt1)
311 {
312 const xAOD::TrackParticle* TP1 = (*tpIt1);
313 uint8_t temp1(0);
314 uint8_t nclus1(0);
315 if ( TP1->summaryValue( temp1 , xAOD::numberOfPixelHits) ) nclus1 += temp1;
316 if ( TP1->summaryValue( temp1 , xAOD::numberOfSCTHits) ) nclus1 += temp1;
317 double pt1 = TP1->pt();
318
319 unsigned int i2 = 0;
320 for (tpIt2 = negTracks.begin(); tpIt2 != negTracks.end(); ++tpIt2)
321 {
322 if (*tpIt1 == *tpIt2) continue;
323 if (m_samesign && i1 <= i2) continue;
324
325 const xAOD::TrackParticle* TP2 = (*tpIt2);
326 uint8_t temp2(0);
327 uint8_t nclus2(0);
328 if ( TP2->summaryValue( temp2 , xAOD::numberOfPixelHits) ) nclus2 += temp2;
329 if ( TP2->summaryValue( temp2 , xAOD::numberOfSCTHits) ) nclus2 += temp2;
330 ATH_MSG_DEBUG("nclus1 " << (int)nclus1 << " nclus2 " << (int)nclus2);
331
332 if (!m_useTRTplusTRT && nclus1 == 0 && nclus2 == 0) continue;
333 if (!m_useTRTplusSi && (nclus1 == 0 || nclus2 == 0)) continue;
334
335 double pt2 = TP2->pt();
336
337 bool trk_cut1 = false;
338 bool trk_cut2 = false;
339 if (nclus1 != 0) trk_cut1 = true;
340 if (nclus1 == 0 && pt1 >= m_ptTRT) trk_cut1 = true;
341 if (!trk_cut1) continue;
342 if (nclus2 != 0) trk_cut2 = true;
343 if (nclus2 == 0 && pt2 >= m_ptTRT) trk_cut2 = true;
344 if (!trk_cut2) continue;
345
346// find a starting point
347 const Trk::Perigee& aPerigee1 = TP1->perigeeParameters();
348 const Trk::Perigee& aPerigee2 = TP2->perigeeParameters();
349 int sflag = 0;
350 int errorcode = 0;
351 Amg::Vector3D startingPoint = m_vertexEstimator->getCirclesIntersectionPoint(&aPerigee1,&aPerigee2,sflag,errorcode);
352 if (errorcode != 0) {startingPoint(0) = 0.0; startingPoint(1) = 0.0; startingPoint(2) = 0.0;}
353 bool errorCode = false;
354 if (errorcode == 0 || errorcode == 5 || errorcode == 6 || errorcode == 8) errorCode = true;
355 if (!errorCode) continue;
356
357 //re-do d0 selection if using m_use_vertColl to ensure both tracks pass for the SAME vertex
358 bool d0wrtVertex = true;
359 if (m_use_vertColl) {
360 if ( !d0Pass(TP1,TP2,vertColl, ctx) ) d0wrtVertex = false;
361 }
362 if (!d0wrtVertex) continue;
363
364
365// pair pre-selection cuts
366 if ( doFit(TP1,TP2,startingPoint, ctx) )
367 {
368 std::vector<const xAOD::TrackParticle*> pairV0;
369 pairV0.clear();
370 pairV0.push_back(TP1);
371 pairV0.push_back(TP2);
372
373// vertex fit
374 ATH_MSG_DEBUG("unconstrained fit now");
375
376 std::unique_ptr<xAOD::Vertex> myVxCandidate;
377 if (m_useV0Fitter) {
378 myVxCandidate = m_concreteVertexFitter->fit(ctx, pairV0, startingPoint);
379 } else {
380 myVxCandidate = m_iVKVertexFitter->fit(ctx, pairV0, startingPoint);
381 }
382
383 if (myVxCandidate)
384 {
385 myVxCandidate->setVertexType(xAOD::VxType::V0Vtx);
386 if ( (m_V0Tools->vertexProbability(myVxCandidate.get()) >= m_minVertProb) || (m_useBDT) ) // If using BDT selections, it makes VertProb Selections
387 {
388 bool doKshortFit = false;
389 doKshortFit = doMassFit(myVxCandidate.get(),310);
390 bool doLambdaFit = false;
391 doLambdaFit = doMassFit(myVxCandidate.get(),3122);
392 bool doLambdabarFit = false;
393 doLambdabarFit = doMassFit(myVxCandidate.get(),-3122);
394 float score = 0; // BDT score variable
395 if (doKshortFit || doLambdaFit || doLambdabarFit)
396 {
397 bool pointAtVert = true;
398 if (m_use_vertColl) {
399 if ( !pointAtVertexColl(myVxCandidate.get(),vertColl,score) ) pointAtVert = false;
400 }
401 if (!m_use_vertColl && m_pv && primaryVertex) {
402 if ( !pointAtVertex(myVxCandidate.get(),primaryVertex,score) ) pointAtVert = false;
403 }
404 if (m_doSimpleV0) pointAtVert = true;
405 if (pointAtVert)
406 {
407 Amg::Vector3D vertex = m_V0Tools->vtx(myVxCandidate.get());
408
409 std::unique_ptr<xAOD::Vertex> myKshort;
410 std::unique_ptr<xAOD::Vertex> myLambda;
411 std::unique_ptr<xAOD::Vertex> myLambdabar;
412 std::unique_ptr<xAOD::Vertex> myGamma;
413 bool foundKshort = false;
414 bool foundLambda = false;
415 bool foundLambdabar = false;
416
417 if (doKshortFit && !m_doSimpleV0) {
418 myKshort = massFit(ctx, 310, pairV0, vertex);
419 if (myKshort) {
420 if (m_V0Tools->vertexProbability(myKshort.get()) >= m_minConstrVertProb) {
421 myKshort->setVertexType(xAOD::VxType::V0Vtx);
422 foundKshort = true;
423 }
424 }
425 }
426
427 if (doLambdaFit && !m_doSimpleV0) {
428 myLambda = massFit(ctx, 3122, pairV0, vertex);
429 if (myLambda) {
430 if (m_V0Tools->vertexProbability(myLambda.get()) >= m_minConstrVertProb) {
431 myLambda->setVertexType(xAOD::VxType::V0Vtx);
432 foundLambda = true;
433 }
434 }
435 }
436
437 if (doLambdabarFit && !m_doSimpleV0) {
438 myLambdabar = massFit(ctx, -3122, pairV0, vertex);
439 if (myLambdabar) {
440 if (m_V0Tools->vertexProbability(myLambdabar.get()) >= m_minConstrVertProb) {
441 myLambdabar->setVertexType(xAOD::VxType::V0Vtx);
442 foundLambdabar = true;
443 }
444 }
445 }
446
447 bool doGamma = false;
448 int gamma_fit = 0;
449 double gamma_prob = -1., gamma_mass = -1., gamma_massErr = -1.;
450 if (foundKshort || foundLambda || foundLambdabar) doGamma = true;
451
452 ElementLink<xAOD::VertexContainer> v0Link;
453 ElementLink<xAOD::VertexContainer> ksLink;
454 ElementLink<xAOD::VertexContainer> laLink;
455 ElementLink<xAOD::VertexContainer> lbLink;
456
457 if (m_doSimpleV0 || (!m_doSimpleV0 && doGamma)) {
458 m_V0s_stored++;
459 myVxCandidate->clearTracks();
460 ElementLink<xAOD::TrackParticleContainer> newLink1 = makeLink(*tpIt1, trackCols);
461 ElementLink<xAOD::TrackParticleContainer> newLink2 = makeLink(*tpIt2, trackCols);
462 myVxCandidate->addTrackAtVertex(newLink1);
463 myVxCandidate->addTrackAtVertex(newLink2);
464 v0Container->push_back(myVxCandidate.release());
465
466 v0_BDTScore( *(v0Container->back()) ) = score;// decorate w/ bdt score
467
468 if (foundKshort && !m_doSimpleV0) {
470 myKshort->clearTracks();
471 ElementLink<xAOD::TrackParticleContainer> ksLink1 = makeLink(*tpIt1, trackCols);
472 ElementLink<xAOD::TrackParticleContainer> ksLink2 = makeLink(*tpIt2, trackCols);
473 myKshort->addTrackAtVertex(ksLink1);
474 myKshort->addTrackAtVertex(ksLink2);
475 ksContainer->push_back(myKshort.release());
476
477 v0Link.setElement(v0Container->back());
478 v0Link.setStorableObject(*v0Container);
479 v0LinksDecorks(*(ksContainer->back())) = v0Link;
480
481 ksLink.setElement(ksContainer->back());
482 ksLink.setStorableObject(*ksContainer);
483 v0_ksLinksDecor(*(v0Container->back())) = ksLink;
484 } else {
485 v0_ksLinksDecor(*(v0Container->back())) = ksLink;
486 }
487 if (foundLambda && !m_doSimpleV0) {
489 myLambda->clearTracks();
490 ElementLink<xAOD::TrackParticleContainer> laLink1 = makeLink(*tpIt1, trackCols);
491 ElementLink<xAOD::TrackParticleContainer> laLink2 = makeLink(*tpIt2, trackCols);
492 myLambda->addTrackAtVertex(laLink1);
493 myLambda->addTrackAtVertex(laLink2);
494 laContainer->push_back(myLambda.release());
495
496 v0Link.setElement(v0Container->back());
497 v0Link.setStorableObject(*v0Container);
498 v0LinksDecorlb(*(laContainer->back())) = v0Link;
499
500 laLink.setElement(laContainer->back());
501 laLink.setStorableObject(*laContainer);
502 v0_laLinksDecor(*(v0Container->back())) = laLink;
503 } else {
504 v0_laLinksDecor(*(v0Container->back())) = laLink;
505 }
506 if (foundLambdabar && !m_doSimpleV0) {
508 myLambdabar->clearTracks();
509 ElementLink<xAOD::TrackParticleContainer> lbLink1 = makeLink(*tpIt1, trackCols);
510 ElementLink<xAOD::TrackParticleContainer> lbLink2 = makeLink(*tpIt2, trackCols);
511 myLambdabar->addTrackAtVertex(lbLink1);
512 myLambdabar->addTrackAtVertex(lbLink2);
513 lbContainer->push_back(myLambdabar.release());
514
515 v0Link.setElement(v0Container->back());
516 v0Link.setStorableObject(*v0Container);
517 v0LinksDecorlbb(*(lbContainer->back())) = v0Link;
518
519 lbLink.setElement(lbContainer->back());
520 lbLink.setStorableObject(*lbContainer);
521 v0_lbLinksDecor(*(v0Container->back())) = lbLink;
522 } else {
523 v0_lbLinksDecor(*(v0Container->back())) = lbLink;
524 }
525 if (doGamma && !m_doSimpleV0) {
526 myGamma = massFit(ctx, 22, pairV0, vertex);
527 if (myGamma && m_V0Tools->vertexProbability(myGamma.get()) >= m_minConstrVertProb) {
528 gamma_fit = 1;
529 gamma_prob = m_V0Tools->vertexProbability(myGamma.get());
530 gamma_mass = m_V0Tools->invariantMass(myGamma.get(),m_masse,m_masse);
531 gamma_massErr = m_V0Tools->invariantMassError(myGamma.get(),m_masse,m_masse);
532 }
533
534 mDecor_gfit( *(v0Container->back()) ) = gamma_fit;
535 mDecor_gmass( *(v0Container->back()) ) = gamma_mass;
536 mDecor_gmasserr( *(v0Container->back()) ) = gamma_massErr;
537 mDecor_gprob( *(v0Container->back()) ) = gamma_prob;
538 }
539 }
540
541 } // pointAtVert
542
543 } // in mass window (doMassFit)
544
545 } // chi2 cut failed
546 } else { // unconstrained fit failed
547 ATH_MSG_DEBUG("Fitter failed!");
548 }
549
550 } // doFit
551
552 i2++;
553 } // loop over negative tracks
554 i1++;
555 } // loop over positive tracks
556
557 } // posTracks.size() > 0 && negTracks.size() > 0
558
559 if (v0Container->empty()) ATH_MSG_DEBUG("No Candidates found. Empty container returned");
560 if (ksContainer->empty()) ATH_MSG_DEBUG("No Kshort Candidates found. Empty container returned");
561 if (laContainer->empty()) ATH_MSG_DEBUG("No Lambda Candidates found. Empty container returned");
562 if (lbContainer->empty()) ATH_MSG_DEBUG("No Lambdabar Candidates found. Empty container returned");
563
564 return StatusCode::SUCCESS;
565}
#define ATH_MSG_WARNING(x)
double charge(const T &p)
Definition AtlasPID.h:997
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
const T * back() const
Access the last element in the collection as an rvalue.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.
bool doMassFit(xAOD::Vertex *vxCandidate, int pdgID) const
BooleanProperty m_useTRTplusSi
= use TRT+Si pairs (true)
BooleanProperty m_useorigin
= true only using tracks that have no vertex association (true)
bool pointAtVertex(const xAOD::Vertex *v0, const xAOD::Vertex *PV, float &score) const
bool pointAtVertexColl(xAOD::Vertex *v0, const xAOD::VertexContainer *vertColl, float &score) const
BooleanProperty m_doSimpleV0
= true equivalent to the old InDetSimpleV0Finder (false)
DoubleProperty m_minVertProb
Minimum vertex probability (0.0001).
BooleanProperty m_samesign
= true select tracks with same sign (false)
std::unique_ptr< xAOD::Vertex > massFit(const EventContext &ctx, int pdgID, const std::vector< const xAOD::TrackParticle * > &pairV0, const Amg::Vector3D &vertex) const
BooleanProperty m_pv
= true select tracks wrt primary vertex (false)
BooleanProperty m_useTRTplusTRT
= use TRT+TRT pairs (true)
ElementLink< xAOD::TrackParticleContainer > makeLink(const xAOD::TrackParticle *, const std::vector< const xAOD::TrackParticleContainer * > &) const
BooleanProperty m_use_vertColl
= true select tracks wrt a vertex collection (false)
DoubleProperty m_minConstrVertProb
Minimum vertex probability for constrained fit (0.0001).
DoubleProperty m_ptTRT
Minimum pT for TRT tracks (700.
BooleanProperty m_useTrkSel
= true uses TrackSelectorTool
bool d0Pass(const xAOD::TrackParticle *track1, const xAOD::TrackParticle *track2, const xAOD::VertexContainer *vertColl, const EventContext &ctx) const
virtual bool isValid() override final
Can the handle be successfully dereferenced?
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
float charge() const
Returns the charge.
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
bool doFit
virtual void handle(const Incident &inc)
Handle end of run incidents to save the metadata at that point.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ V0Vtx
Vertex from V0 decay.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].

◆ pointAtVertex()

bool InDet::InDetV0FinderTool::pointAtVertex ( const xAOD::Vertex * v0,
const xAOD::Vertex * PV,
float & score ) const
private

Definition at line 729 of file InDetV0FinderTool.cxx.

730{
731 bool pass = false;
732 float v0lxy = m_V0Tools->lxy(v0,PV);
733 float v0lxyError = m_V0Tools->lxyError(v0,PV);
734 float cos = m_V0Tools->cosTheta(v0,PV);
735 float v0a0xy = m_V0Tools->a0xy(v0,PV);
736 float v0a0z = m_V0Tools->a0z(v0,PV);
737 if (m_useBDT){
738 float prob = m_V0Tools->vertexProbability(v0);
739 float nLogProb = 999999;
740 if (prob>0) nLogProb = -1*log10f(prob); //bdt model uses the log, not the raw value
741 std::vector<float> bdt_vars = {
742 nLogProb,
743 std::abs(v0a0xy),
744 std::abs(v0a0z),
745 v0lxy,
746 v0lxy/v0lxyError,
747 cos};
748 float this_Score=m_BDT->GetClassification(bdt_vars);
749 if (this_Score > score) {
750 score = this_Score;
751 }
752 if (score > m_BDTCut){
753 pass = true;
754 }
755 }
756 else if (v0lxy/v0lxyError > m_vert_lxy_sig && cos > m_vert_cos_cut &&
757 std::abs(v0a0xy) < m_vert_a0xy_cut && std::abs(v0a0z) < m_vert_a0z_cut &&
758 v0lxy < m_vert_lxy_cut) pass = true;
759 return pass;
760}
DoubleProperty m_vert_cos_cut
V0 cos(theta) angle between displacement and momentum (>0.).
DoubleProperty m_vert_a0z_cut
V0 |a0z| wrt a vertex (<15.).
DoubleProperty m_vert_a0xy_cut
V0 |a0xy| wrt a vertex (<3.).
DoubleProperty m_BDTCut
BDT Score threshold.
DoubleProperty m_vert_lxy_sig
V0 lxy significance wrt a vertex (>2.).
DoubleProperty m_vert_lxy_cut
V0 lxy V0 lxy (<500.).

◆ pointAtVertexColl()

bool InDet::InDetV0FinderTool::pointAtVertexColl ( xAOD::Vertex * v0,
const xAOD::VertexContainer * vertColl,
float & score ) const
private

Definition at line 762 of file InDetV0FinderTool.cxx.

763{
764 bool pass = false;
766 for ( vItr=vertColl->begin(); vItr!=vertColl->end(); ++vItr ) { if (pointAtVertex(v0,(*vItr),score)) pass = true; }
767 return pass;
768}

◆ 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();
384 }
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)

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

◆ SGError()

void InDet::InDetV0FinderTool::SGError ( const std::string & errService) const
private

Definition at line 582 of file InDetV0FinderTool.cxx.

583{
584 ATH_MSG_FATAL(errService << " not found. Exiting !");
585}

◆ 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 asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, and AthCheckedComponent<::AthAlgTool >.

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_BDT

std::unique_ptr<MVAUtils::BDT> InDet::InDetV0FinderTool::m_BDT
private

Definition at line 232 of file InDetV0FinderTool.h.

◆ m_BDTCut

DoubleProperty InDet::InDetV0FinderTool::m_BDTCut {this, "BDTCut", -1}
private

BDT Score threshold.

Definition at line 183 of file InDetV0FinderTool.h.

183{this, "BDTCut", -1};

◆ m_BDTFile

StringProperty InDet::InDetV0FinderTool::m_BDTFile {this, "BDTFile", "XGBModelBetterVertex.root"}
private

Filename of mvaUtils model file, located in /InDetV0FinderTool/BDT/v1/.

Definition at line 185 of file InDetV0FinderTool.h.

185{this, "BDTFile", "XGBModelBetterVertex.root"};

◆ m_beamSpotDecoKey

SG::ReadDecorHandleKeyArray<xAOD::EventInfo> InDet::InDetV0FinderTool::m_beamSpotDecoKey {this, "BeamSpotDecoKeys", m_eventInfo_key, {"beamPosX", "beamPosY", "beamPosZ"}, "Add the scheduler dependencies on the beamspot information"}
private

Definition at line 236 of file InDetV0FinderTool.h.

236{this, "BeamSpotDecoKeys", m_eventInfo_key, {"beamPosX", "beamPosY", "beamPosZ"}, "Add the scheduler dependencies on the beamspot information"};

◆ m_beamSpotKey

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

Definition at line 235 of file InDetV0FinderTool.h.

235{ this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };

◆ m_concreteVertexFitter

const Trk::TrkV0VertexFitter* InDet::InDetV0FinderTool::m_concreteVertexFitter = nullptr
private

Definition at line 214 of file InDetV0FinderTool.h.

◆ m_d0_cut

DoubleProperty InDet::InDetV0FinderTool::m_d0_cut {this, "d0_cut", 2.}
private

track d0 significance wrt a vertex (>2.)

Definition at line 175 of file InDetV0FinderTool.h.

175{this, "d0_cut", 2.};

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

BooleanProperty InDet::InDetV0FinderTool::m_doSimpleV0 {this, "doSimpleV0", false}
private

= true equivalent to the old InDetSimpleV0Finder (false)

Definition at line 144 of file InDetV0FinderTool.h.

144{this, "doSimpleV0", false};

◆ m_errmass

DoubleProperty InDet::InDetV0FinderTool::m_errmass {this, "errmass", 100.}
private

Maximum mass error (100.

MeV)

Definition at line 172 of file InDetV0FinderTool.h.

172{this, "errmass", 100.};

◆ m_eventInfo_key

SG::ReadHandleKey<xAOD::EventInfo> InDet::InDetV0FinderTool::m_eventInfo_key {this, "EventInfo", "EventInfo", "Input event information"}
private

Definition at line 234 of file InDetV0FinderTool.h.

234{this, "EventInfo", "EventInfo", "Input event information"};

◆ m_events_processed

std::atomic<unsigned int> InDet::InDetV0FinderTool::m_events_processed {}
mutableprivate

Definition at line 188 of file InDetV0FinderTool.h.

188{};

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

PublicToolHandle<Trk::IExtrapolator> InDet::InDetV0FinderTool::m_extrapolator
private
Initial value:
{
this, "Extrapolator", "Trk::Extrapolator"}

Definition at line 140 of file InDetV0FinderTool.h.

140 {
141 this, "Extrapolator", "Trk::Extrapolator"};

◆ m_Gamma_stored

std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Gamma_stored {}
mutableprivate

Definition at line 193 of file InDetV0FinderTool.h.

193{};

◆ m_iGammaFitter

PublicToolHandle<Trk::IVertexFitter> InDet::InDetV0FinderTool::m_iGammaFitter
private
Initial value:
{
this, "GammaFitterTool", "Trk::TrkVKalVrtFitter"}

Definition at line 130 of file InDetV0FinderTool.h.

130 {
131 this, "GammaFitterTool", "Trk::TrkVKalVrtFitter"};

◆ m_iKshortFitter

PublicToolHandle<Trk::IVertexFitter> InDet::InDetV0FinderTool::m_iKshortFitter
private
Initial value:
{
this, "KshortFitterTool", "Trk::TrkVKalVrtFitter"}

Definition at line 124 of file InDetV0FinderTool.h.

124 {
125 this, "KshortFitterTool", "Trk::TrkVKalVrtFitter"};

◆ m_iLambdabarFitter

PublicToolHandle<Trk::IVertexFitter> InDet::InDetV0FinderTool::m_iLambdabarFitter
private
Initial value:
{
this, "LambdabarFitterTool", "Trk::TrkVKalVrtFitter"}

Definition at line 128 of file InDetV0FinderTool.h.

128 {
129 this, "LambdabarFitterTool", "Trk::TrkVKalVrtFitter"};

◆ m_iLambdaFitter

PublicToolHandle<Trk::IVertexFitter> InDet::InDetV0FinderTool::m_iLambdaFitter
private
Initial value:
{
this, "LambdaFitterTool", "Trk::TrkVKalVrtFitter"}

Definition at line 126 of file InDetV0FinderTool.h.

126 {
127 this, "LambdaFitterTool", "Trk::TrkVKalVrtFitter"};

◆ m_iVertexFitter

PublicToolHandle<Trk::IVertexFitter> InDet::InDetV0FinderTool::m_iVertexFitter
private
Initial value:
{
this, "VertexFitterTool", "Trk::V0VertexFitter"}

Definition at line 120 of file InDetV0FinderTool.h.

120 {
121 this, "VertexFitterTool", "Trk::V0VertexFitter"};

◆ m_iVKVertexFitter

PublicToolHandle<Trk::IVertexFitter> InDet::InDetV0FinderTool::m_iVKVertexFitter
private
Initial value:
{
this, "VKVertexFitterTool", "Trk::TrkVKalVrtFitter"}

Definition at line 122 of file InDetV0FinderTool.h.

122 {
123 this, "VKVertexFitterTool", "Trk::TrkVKalVrtFitter"};

◆ m_Kshort_stored

std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Kshort_stored {}
mutableprivate

Definition at line 190 of file InDetV0FinderTool.h.

190{};

◆ m_ksKey

Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_ksKey { this, "KshortContainerName", "KshortCandidates", "Ks container name (same calling alg)" }
private

Definition at line 240 of file InDetV0FinderTool.h.

240{ this, "KshortContainerName", "KshortCandidates", "Ks container name (same calling alg)" };

◆ m_ksmax

DoubleProperty InDet::InDetV0FinderTool::m_ksmax {this, "ksmax", 600.}
private

max Kshort mass (600.

MeV)

Definition at line 169 of file InDetV0FinderTool.h.

169{this, "ksmax", 600.};

◆ m_ksmin

DoubleProperty InDet::InDetV0FinderTool::m_ksmin {this, "ksmin", 400.}
private

min Kshort mass (400.

MeV)

Definition at line 168 of file InDetV0FinderTool.h.

168{this, "ksmin", 400.};

◆ m_laKey

Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_laKey
private
Initial value:
{ this, "LambdaContainerName", "LambdaCandidates",
"Lambda container name (same calling alg)" }

Definition at line 241 of file InDetV0FinderTool.h.

241 { this, "LambdaContainerName", "LambdaCandidates",
242 "Lambda container name (same calling alg)" };

◆ m_lamax

DoubleProperty InDet::InDetV0FinderTool::m_lamax {this, "lamax", 1200.}
private

max Lambda mass (1200.

MeV)

Definition at line 171 of file InDetV0FinderTool.h.

171{this, "lamax", 1200.};

◆ m_Lambda_stored

std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Lambda_stored {}
mutableprivate

Definition at line 191 of file InDetV0FinderTool.h.

191{};

◆ m_Lambdabar_stored

std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Lambdabar_stored {}
mutableprivate

Definition at line 192 of file InDetV0FinderTool.h.

192{};

◆ m_lamin

DoubleProperty InDet::InDetV0FinderTool::m_lamin {this, "lamin", 1000.}
private

min Lambda mass (1000.

MeV)

Definition at line 170 of file InDetV0FinderTool.h.

170{this, "lamin", 1000.};

◆ m_lbKey

Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_lbKey
private
Initial value:
{ this, "LambdabarContainerName", "LambdabarCandidates",
"Lambdabar container name (same calling alg)" }

Definition at line 243 of file InDetV0FinderTool.h.

243 { this, "LambdabarContainerName", "LambdabarCandidates",
244 "Lambdabar container name (same calling alg)" };

◆ m_masse

DoubleProperty InDet::InDetV0FinderTool::m_masse {this, "masse", ParticleConstants::electronMassInMeV}
private

electron mass (0.510999 MeV)

Definition at line 159 of file InDetV0FinderTool.h.

constexpr double electronMassInMeV
the mass of the electron (in MeV)

◆ m_masses

IntegerProperty InDet::InDetV0FinderTool::m_masses {this, "masses", 1}
private

= 1 if using PDG values, = 2 if user set (1)

Definition at line 156 of file InDetV0FinderTool.h.

156{this, "masses", 1};

◆ m_massK0S

DoubleProperty InDet::InDetV0FinderTool::m_massK0S {this, "massK0S", ParticleConstants::KZeroMassInMeV}
private

Kshort mass (497.672 MeV).

Definition at line 160 of file InDetV0FinderTool.h.

160{this, "massK0S", ParticleConstants::KZeroMassInMeV};
constexpr double KZeroMassInMeV
the mass of the neutral kaon (K0) (in MeV)

◆ m_massLambda

DoubleProperty InDet::InDetV0FinderTool::m_massLambda {this, "massLambda", ParticleConstants::lambdaMassInMeV}
private

Lambda mass (1115.68 MeV).

Definition at line 161 of file InDetV0FinderTool.h.

161{this, "massLambda", ParticleConstants::lambdaMassInMeV};
constexpr double lambdaMassInMeV
the mass of the lambda baryon (in MeV)

◆ m_massp

DoubleProperty InDet::InDetV0FinderTool::m_massp {this, "massp", ParticleConstants::protonMassInMeV}
private

proton mass (938.272 MeV)

Definition at line 158 of file InDetV0FinderTool.h.

158{this, "massp", ParticleConstants::protonMassInMeV};
constexpr double protonMassInMeV
the mass of the proton (in MeV)

◆ m_masspi

DoubleProperty InDet::InDetV0FinderTool::m_masspi {this, "masspi", ParticleConstants::chargedPionMassInMeV}
private

pion mass (139.57 MeV)

Definition at line 157 of file InDetV0FinderTool.h.

constexpr double chargedPionMassInMeV
the mass of the charged pion (in MeV)

◆ m_max_d0_cut

DoubleProperty InDet::InDetV0FinderTool::m_max_d0_cut {this, "max_d0_cut", 999999.}
private

track |d0| wrt a vertex (<999999.)

Definition at line 176 of file InDetV0FinderTool.h.

176{this, "max_d0_cut", 999999.};

◆ m_max_z0_cut

DoubleProperty InDet::InDetV0FinderTool::m_max_z0_cut {this, "max_z0_cut", 999999.}
private

track |z0| wrt a vertex (<999999.)

Definition at line 177 of file InDetV0FinderTool.h.

177{this, "max_z0_cut", 999999.};

◆ m_maxPV

Gaudi::Property<int> InDet::InDetV0FinderTool::m_maxPV { this, "MaxPV", 999999 }
private

Definition at line 245 of file InDetV0FinderTool.h.

245{ this, "MaxPV", 999999 };

◆ m_maxsxy

DoubleProperty InDet::InDetV0FinderTool::m_maxsxy {this, "maxsxy", 1000.}
private

Maximum Rxy of starting point (1000.

mm)

Definition at line 163 of file InDetV0FinderTool.h.

163{this, "maxsxy", 1000.};

◆ m_mDecor_gfit

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_mDecor_gfit
private

Definition at line 225 of file InDetV0FinderTool.h.

◆ m_mDecor_gmass

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_mDecor_gmass
private

Definition at line 226 of file InDetV0FinderTool.h.

◆ m_mDecor_gmasserr

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_mDecor_gmasserr
private

Definition at line 227 of file InDetV0FinderTool.h.

◆ m_mDecor_gprob

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_mDecor_gprob
private

Definition at line 228 of file InDetV0FinderTool.h.

◆ m_minConstrVertProb

DoubleProperty InDet::InDetV0FinderTool::m_minConstrVertProb {this, "minConstrVertProb", 0.0001}
private

Minimum vertex probability for constrained fit (0.0001).

Definition at line 174 of file InDetV0FinderTool.h.

174{this, "minConstrVertProb", 0.0001};

◆ m_minVertProb

DoubleProperty InDet::InDetV0FinderTool::m_minVertProb {this, "minVertProb", 0.0001}
private

Minimum vertex probability (0.0001).

Definition at line 173 of file InDetV0FinderTool.h.

173{this, "minVertProb", 0.0001};

◆ m_ptTRT

DoubleProperty InDet::InDetV0FinderTool::m_ptTRT {this, "ptTRT", 700.}
private

Minimum pT for TRT tracks (700.

MeV)

Definition at line 162 of file InDetV0FinderTool.h.

162{this, "ptTRT", 700.};

◆ m_pv

BooleanProperty InDet::InDetV0FinderTool::m_pv {this, "trkSelPV", false}
private

= true select tracks wrt primary vertex (false)

Definition at line 147 of file InDetV0FinderTool.h.

147{this, "trkSelPV", false};

◆ m_RelinkContainers

SG::ReadHandleKeyArray<xAOD::TrackParticleContainer> InDet::InDetV0FinderTool::m_RelinkContainers {this, "RelinkTracks", {}, "Track Containers if they need to be relinked through indirect use" }
private

Definition at line 246 of file InDetV0FinderTool.h.

246{this, "RelinkTracks", {}, "Track Containers if they need to be relinked through indirect use" };

◆ m_samesign

BooleanProperty InDet::InDetV0FinderTool::m_samesign {this, "AddSameSign", false}
private

= true select tracks with same sign (false)

Definition at line 146 of file InDetV0FinderTool.h.

146{this, "AddSameSign", false};

◆ m_trackParticleKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> InDet::InDetV0FinderTool::m_trackParticleKey
private
Initial value:
{ this, "TrackParticleCollection", "InDetTrackParticles",
"key for retrieval of TrackParticles" }

Definition at line 117 of file InDetV0FinderTool.h.

117 { this, "TrackParticleCollection", "InDetTrackParticles",
118 "key for retrieval of TrackParticles" };

◆ m_trackToVertexTool

PublicToolHandle<Reco::ITrackToVertex> InDet::InDetV0FinderTool::m_trackToVertexTool
private
Initial value:
{
this, "TrackToVertexTool", "Reco::TrackToVertex"}

Definition at line 134 of file InDetV0FinderTool.h.

134 {
135 this, "TrackToVertexTool", "Reco::TrackToVertex"};

◆ m_trkSelector

PublicToolHandle<Trk::ITrackSelectorTool> InDet::InDetV0FinderTool::m_trkSelector
private
Initial value:
{
this, "TrackSelectorTool", "InDet::TrackSelectorTool"}

Definition at line 136 of file InDetV0FinderTool.h.

136 {
137 this, "TrackSelectorTool", "InDet::TrackSelectorTool"};

◆ m_uksmax

DoubleProperty InDet::InDetV0FinderTool::m_uksmax {this, "uksmax", 600.}
private

max Kshort mass, unconstrained fit (600.

MeV)

Definition at line 165 of file InDetV0FinderTool.h.

165{this, "uksmax", 600.};

◆ m_uksmin

DoubleProperty InDet::InDetV0FinderTool::m_uksmin {this, "uksmin", 400.}
private

min Kshort mass, unconstrained fit (400.

MeV)

Definition at line 164 of file InDetV0FinderTool.h.

164{this, "uksmin", 400.};

◆ m_ulamax

DoubleProperty InDet::InDetV0FinderTool::m_ulamax {this, "ulamax", 1200.}
private

max Lambda mass, unconstrained fit (1200.

MeV)

Definition at line 167 of file InDetV0FinderTool.h.

167{this, "ulamax", 1200.};

◆ m_ulamin

DoubleProperty InDet::InDetV0FinderTool::m_ulamin {this, "ulamin", 1000.}
private

min Lambda mass, unconstrained fit (1000.

MeV)

Definition at line 166 of file InDetV0FinderTool.h.

166{this, "ulamin", 1000.};

◆ m_use_innerPixHits

BooleanProperty InDet::InDetV0FinderTool::m_use_innerPixHits {this, "use_innerPixHits", false}
private

= true select allows tracks with no innermost pixel layer hits to always pass d0 significance cut (false)

Definition at line 152 of file InDetV0FinderTool.h.

152{this, "use_innerPixHits", false};

◆ m_use_vertColl

BooleanProperty InDet::InDetV0FinderTool::m_use_vertColl {this, "useVertexCollection", false}
private

= true select tracks wrt a vertex collection (false)

Definition at line 148 of file InDetV0FinderTool.h.

148{this, "useVertexCollection", false};

◆ m_useBDT

BooleanProperty InDet::InDetV0FinderTool::m_useBDT {this, "useBDT", false}
private

= true uses BDT selections in place of rectangular pointAtVertex + minVertProb

Definition at line 153 of file InDetV0FinderTool.h.

153{this, "useBDT", false};

◆ m_useBeamSpotCond

Gaudi::Property<bool> InDet::InDetV0FinderTool::m_useBeamSpotCond { this, "UseBeamSpotCond", false }
private

Definition at line 237 of file InDetV0FinderTool.h.

237{ this, "UseBeamSpotCond", false };

◆ m_useorigin

BooleanProperty InDet::InDetV0FinderTool::m_useorigin {this, "useorigin", true}
private

= true only using tracks that have no vertex association (true)

Definition at line 145 of file InDetV0FinderTool.h.

145{this, "useorigin", true};

◆ m_useTrkSel

BooleanProperty InDet::InDetV0FinderTool::m_useTrkSel {this, "use_TrackSelector", true}
private

= true uses TrackSelectorTool

Definition at line 154 of file InDetV0FinderTool.h.

154{this, "use_TrackSelector", true};

◆ m_useTRTplusSi

BooleanProperty InDet::InDetV0FinderTool::m_useTRTplusSi {this, "useTRTplusSi", false}
private

= use TRT+Si pairs (true)

Definition at line 150 of file InDetV0FinderTool.h.

150{this, "useTRTplusSi", false};

◆ m_useTRTplusTRT

BooleanProperty InDet::InDetV0FinderTool::m_useTRTplusTRT {this, "useTRTplusTRT", false}
private

= use TRT+TRT pairs (true)

Definition at line 149 of file InDetV0FinderTool.h.

149{this, "useTRTplusTRT", false};

◆ m_useV0Fitter

BooleanProperty InDet::InDetV0FinderTool::m_useV0Fitter {this, "useV0Fitter", false}
private

= true if using TrkV0Fitter, = false if using VKalVert (true)

Definition at line 151 of file InDetV0FinderTool.h.

151{this, "useV0Fitter", false};

◆ m_v0_BDTScore

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_v0_BDTScore
private

Definition at line 230 of file InDetV0FinderTool.h.

◆ m_v0_ksLinksDecorkey

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_v0_ksLinksDecorkey
private

Definition at line 221 of file InDetV0FinderTool.h.

◆ m_v0_laLinksDecorkey

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_v0_laLinksDecorkey
private

Definition at line 222 of file InDetV0FinderTool.h.

◆ m_v0_lbLinksDecorkey

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_v0_lbLinksDecorkey
private

Definition at line 223 of file InDetV0FinderTool.h.

◆ m_v0Key

Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_v0Key { this, "V0ContainerName", "V0Candidates", "V0 container name (same calling alg)" }
private

Definition at line 239 of file InDetV0FinderTool.h.

239{ this, "V0ContainerName", "V0Candidates", "V0 container name (same calling alg)" };

◆ m_v0LinksDecorkeyks

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_v0LinksDecorkeyks
private

Definition at line 218 of file InDetV0FinderTool.h.

◆ m_v0LinksDecorkeylb

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_v0LinksDecorkeylb
private

Definition at line 219 of file InDetV0FinderTool.h.

◆ m_v0LinksDecorkeylbb

SG::WriteDecorHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_v0LinksDecorkeylbb
private

Definition at line 220 of file InDetV0FinderTool.h.

◆ m_V0s_stored

std::atomic<unsigned int> InDet::InDetV0FinderTool::m_V0s_stored {}
mutableprivate

Definition at line 189 of file InDetV0FinderTool.h.

189{};

◆ m_V0Tools

PublicToolHandle<Trk::V0Tools> InDet::InDetV0FinderTool::m_V0Tools
private
Initial value:
{
this, "V0Tools", "Trk::V0Tools"}

Definition at line 132 of file InDetV0FinderTool.h.

132 {
133 this, "V0Tools", "Trk::V0Tools"};

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vert_a0xy_cut

DoubleProperty InDet::InDetV0FinderTool::m_vert_a0xy_cut {this, "vert_a0xy_cut", 3.}
private

V0 |a0xy| wrt a vertex (<3.).

Definition at line 180 of file InDetV0FinderTool.h.

180{this, "vert_a0xy_cut", 3.};

◆ m_vert_a0z_cut

DoubleProperty InDet::InDetV0FinderTool::m_vert_a0z_cut {this, "vert_a0z_cut", 15.}
private

V0 |a0z| wrt a vertex (<15.).

Definition at line 181 of file InDetV0FinderTool.h.

181{this, "vert_a0z_cut", 15.};

◆ m_vert_cos_cut

DoubleProperty InDet::InDetV0FinderTool::m_vert_cos_cut {this, "vert_cos_cut", 0.}
private

V0 cos(theta) angle between displacement and momentum (>0.).

Definition at line 182 of file InDetV0FinderTool.h.

182{this, "vert_cos_cut", 0.};

◆ m_vert_lxy_cut

DoubleProperty InDet::InDetV0FinderTool::m_vert_lxy_cut {this, "vert_lxy_cut", 500.}
private

V0 lxy V0 lxy (<500.).

Definition at line 179 of file InDetV0FinderTool.h.

179{this, "vert_lxy_cut", 500.};

◆ m_vert_lxy_sig

DoubleProperty InDet::InDetV0FinderTool::m_vert_lxy_sig {this, "vert_lxy_sig", 2.}
private

V0 lxy significance wrt a vertex (>2.).

Definition at line 178 of file InDetV0FinderTool.h.

178{this, "vert_lxy_sig", 2.};

◆ m_vertexEstimator

PublicToolHandle<InDet::VertexPointEstimator> InDet::InDetV0FinderTool::m_vertexEstimator
private
Initial value:
{
this, "VertexPointEstimator", "InDet::VertexPointEstimator"}

Definition at line 138 of file InDetV0FinderTool.h.

138 {
139 this, "VertexPointEstimator", "InDet::VertexPointEstimator"};

◆ m_vertexKey

SG::ReadHandleKey<xAOD::VertexContainer> InDet::InDetV0FinderTool::m_vertexKey
private
Initial value:
{ this, "VertexContainer", "PrimaryVertices",
"primary vertex container" }

Definition at line 216 of file InDetV0FinderTool.h.

216 { this, "VertexContainer", "PrimaryVertices",
217 "primary vertex container" };

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