 |
ATLAS Offline Software
|
Go to the documentation of this file.
7 #ifndef VRTSECINCLUSIVE_VRTSECINCLUSIVE_H
8 #define VRTSECINCLUSIVE_VRTSECINCLUSIVE_H
11 #include "VrtSecInclusive/Constants.h"
17 #include "GaudiKernel/ToolHandle.h"
18 #include "GaudiKernel/ITHistSvc.h"
32 #include "GaudiKernel/ServiceHandle.h"
66 class ITrackToVertexIPEstimator;
277 ToolHandle<IInDetConditionsTool>
m_pixelCondSummaryTool{
this,
"PixelConditionsSummaryTool",
"PixelConditionsSummaryTool",
"Tool to retrieve Pixel Conditions summary"};
278 ToolHandle<IInDetConditionsTool>
m_sctCondSummaryTool{
this,
"InDetSCT_ConditionsSummaryTool",
"SCT_ConditionsSummaryTool/InDetSCT_ConditionsSummaryTool",
"Tool to retrieve SCT conditions summary"};
363 using PatternBank = std::map<const xAOD::TrackParticle*, std::pair< std::unique_ptr<ExtrapolatedPattern>, std::unique_ptr<ExtrapolatedPattern> > >;
442 void printWrkSet(
const std::vector<WrkVrt> *WrkVrtSet,
const std::string&
name);
457 std::vector< std::deque<long int> > *,
458 const long int & ,
const long int & );
462 void trackClassification(std::vector< WrkVrt >* , std::map<
long int, std::vector<long int> >& );
467 static size_t nTrkCommon( std::vector<WrkVrt> *WrkVrtSet,
const std::pair<unsigned, unsigned>& pairIndex ) ;
567 template<
class LeptonFlavor>
bool doSelectTracksFromMuons
USAGE: openCoraCool.exe "COOLONL_SCT/COMP200".
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
void setIntersection(Track *trk, IntersectionPos *bec, const Trk::Perigee *per)
Amg::Vector3D vertex
list if indices in TrackParticleContainer for associatedTracks
static bool selectTrack_z0signifCut(const xAOD::TrackParticle *)
bool selectTrack_LRTR3Cut(const xAOD::TrackParticle *) const
std::map< std::string, TH1 * > m_hists
StatusCode(VrtSecInclusive::*)(std::vector< WrkVrt > *) vertexingAlg
double distanceBetweenVertices(const WrkVrt &, const WrkVrt &) const
calculate the physical distance
bool doPVcompatibilityCut
long int Charge
list of VKalVrt fit chi2 for each track
ToolHandle< IInDetConditionsTool > m_pixelCondSummaryTool
Condition service.
This is an Identifier helper class for the SCT subdetector. This class is a factory for creating comp...
bool checkTrackHitPatternToVertexOuterOnly(const xAOD::TrackParticle *trk, const Amg::Vector3D &vertex)
A classical method with hard-coded geometry.
bool patternCheck(const uint32_t &pattern, const Amg::Vector3D &vertex)
uint8_t numSctBarrelLayer1_Hits
std::deque< long int > associatedTrackIndices
list if indices in TrackParticleContainer for selectedBaseTracks
ToolHandle< Trk::IVertexMapper > m_vertexMapper
unsigned m_vertexingAlgorithmStep
void dumpTruthInformation()
bool passThroughTrackSelection
bool selectTrack_pTCut(const xAOD::TrackParticle *) const
bool doSelectIDAndGSFTracks
StatusCode setupNtupleVariables()
double associateMaxD0Signif
bool doSuggestedRefitOnMerging
uint8_t numSctBarrelLayer0_Hits
const xAOD::Vertex * m_thePV
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
double improveVertexChi2(WrkVrt &)
attempt to improve the vertex chi2 by removing the most-outlier track one by one until the vertex chi...
std::string secondaryVerticesContainerName
std::vector< std::pair< std::string, vertexingAlg > > m_vertexingAlgorithms
uint8_t numPixelLayer2_Hits
double findWorstChi2ofMaximallySharedTrack(std::vector< WrkVrt > *, std::map< long int, std::vector< long int > > &, long int &, long int &)
bool checkTrackHitPatternToVertexByExtrapolationAssist(const xAOD::TrackParticle *trk, const Amg::Vector3D &vertex)
New method with track extrapolation.
struct VKalVrtAthena::VrtSecInclusive::track_summary_properties track_summary
std::vector< const xAOD::TrackParticle * > m_leptonicTracks
PatternBank m_extrapolatedPatternBank
std::unique_ptr< NtupleVars > m_ntupleVars
ToolHandle< Trk::IExtrapolator > m_extrapolator
StatusCode mergeVertices(WrkVrt &destination, WrkVrt &source)
the 2nd vertex is merged into the 1st vertex.
std::string truthParticleContainerName
static bool patternCheckRun1(const uint32_t &pattern, const Amg::Vector3D &vertex)
StatusCode associateNonSelectedTracks(std::vector< WrkVrt > *)
in addition to selected tracks, associate as much tracks as possible
const PixelID * m_pixelId
StatusCode deleteNtupleVariables()
TLorentzVector vertexMom
VKalVrt fit vertex position.
static const xAOD::TruthParticle * getTrkGenParticle(const xAOD::TrackParticle *)
double twoTrVrtMinDistFromPV
StatusCode reassembleVertices(std::vector< WrkVrt > *)
attempt to merge vertices when all tracks of a vertex A is close to vertex B in terms of impact param...
bool doRemoveCaloTaggedMuons
static bool patternCheckRun2(const uint32_t &pattern, const Amg::Vector3D &vertex)
void trackClassification(std::vector< WrkVrt > *, std::map< long int, std::vector< long int > > &)
double associateMinDistanceToPV
double pvCompatibilityCut
uint8_t numPixelDisk0_Hits
std::map< const xAOD::TrackParticle *, std::pair< std::unique_ptr< ExtrapolatedPattern >, std::unique_ptr< ExtrapolatedPattern > > > PatternBank
VrtSecInclusive(const std::string &name, ISvcLocator *pSvcLocator)
Standard Athena-Algorithm Constructor.
static double findMinVerticesNextPair(std::vector< WrkVrt > *, std::pair< unsigned, unsigned > &)
returns the next pair of vertices that give next-to-minimum distance significance
bool selectTrack_hitPatternTight(const xAOD::TrackParticle *) const
std::string mcEventContainerName
StatusCode rearrangeTracks(std::vector< WrkVrt > *)
bool selectTrack_hitPattern(const xAOD::TrackParticle *) const
double twoTrkVtxFormingD0Cut
bool doAugmentDVimpactParametersToMuons
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Read/Write Handle Keys.
bool FillIntermediateVertices
uint8_t numPixelDisk1_Hits
~VrtSecInclusive()
Default Destructor.
ToolHandle< Trk::ITruthToTrack > m_truthToTrack
bool(VrtSecInclusive::*)(const xAOD::TrackParticle *) const CutFunc
track selection
const xAOD::VertexContainer * m_primaryVertices
std::tuple< const TVector3, Detector, Bec, Layer, Flag > ExtrapolatedPoint
StatusCode selectInDetAndGSFTracks()
ToolHandle< IInDetConditionsTool > m_sctCondSummaryTool
std::string ElectronLocation
ToolHandle< Trk::ITrackToVertexIPEstimator > m_trackToVertexIPEstimatorTool
ToolHandle< Trk::ITrkVKalVrtFitter > m_fitSvc
double mergeByShufflingMaxSignificance
std::vector< double > m_BeamPosition
Helper class to provide type-safe access to aux data.
StatusCode extractIncompatibleTrackPairs(std::vector< WrkVrt > *)
related to the graph method and verte finding
std::vector< double > Chi2PerTrk
VKalVrt fit chi2 result.
double findMinVerticesPair(std::vector< WrkVrt > *, std::pair< unsigned, unsigned > &, const AlgForVerticesPair &)
returns the pair of vertices that give minimum in terms of some observable (e.g.
bool doAugmentDVimpactParametersToElectrons
static bool selectTrack_d0signifCut(const xAOD::TrackParticle *)
double Chi2_core
VKalVrt fit chi2 result.
StatusCode mergeByShuffling(std::vector< WrkVrt > *)
attempt to merge splitted vertices when they are significantly distant due to the long-tail behavior ...
ExtrapolatedPattern * extrapolatedPattern(const xAOD::TrackParticle *, enum Trk::PropDirection)
double reassembleMaxImpactParameterD0
virtual StatusCode finalize()
std::string all2trksVerticesContainerName
unsigned int SelTrkMaxCutoff
double VertexMergeFinalDistScaling
::StatusCode StatusCode
StatusCode definition for legacy code.
StatusCode processPrimaryVertices()
Class describing a truth particle in the MC record.
std::vector< CutFunc > m_trackSelectionFuncs
bool doAssociateNonSelectedTracks
StatusCode refitVertexWithSuggestion(WrkVrt &, const Amg::Vector3D &)
refit the vertex with suggestion
uint8_t numPixelLayer1_Hits
uint8_t numSctBarrelLayer2_Hits
std::vector< double > vertexCov
VKalVrt fit vertex 4-momentum.
double Chi2
VKalVrt fit covariance.
bool doRemoveNonLeptonVertices
void lockLeptonDecorations(const SG::AuxVectorData *cont) const
static void fillTrackSummary(track_summary &summary, const xAOD::TrackParticle *trk)
retrieve the track hit information
bool selectTrack_d0Cut(const xAOD::TrackParticle *) const
std::vector< TrackSelectionAlg > m_trackSelectionAlgs
double(VrtSecInclusive::*)(const WrkVrt &, const WrkVrt &) const AlgForVerticesPair
virtual StatusCode execute()
double significanceBetweenVertices(const WrkVrt &, const WrkVrt &) const
calculate the significance (Mahalanobis distance) between two reconstructed vertices
StatusCode selectTracksInDet()
double mergeByShufflingAllowance
unsigned long closestWrkVrtIndex
list of track parameters wrt the reconstructed vertex
bool patternCheckOuterOnly(const uint32_t &pattern, const Amg::Vector3D &vertex)
double ndof() const
stores the value of some observable to the closest WrkVrt ( observable = e.g. significance )
StatusCode refitAndSelectGoodQualityVertices(std::vector< WrkVrt > *)
finalization of the vertex and store to xAOD::VertexContainer
const AtlasDetectorID * m_atlasId
std::map< std::string, PatternStrategyFunc > m_patternStrategyFuncs
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
get a handle on the Track to Vertex tool
std::optional< SG::Decorator< char > > m_decor_isAssociated
bool doSelectTracksFromElectrons
bool selectTrack_z0Cut(const xAOD::TrackParticle *) const
bool selectTrack_d0errCut(const xAOD::TrackParticle *) const
SG::WriteDecorHandleKey< xAOD::EventInfo > m_vertexingStatusKey
std::optional< SG::Decorator< char > > m_decor_isSelected
StatusCode categorizeVertexTruthTopology(xAOD::Vertex *vertex)
bool getSVImpactParameters(const xAOD::TrackParticle *trk, const Amg::Vector3D &vertex, std::vector< double > &impactParameters, std::vector< double > &impactParErrors)
get secondary vertex impact parameters
Ensure that the ATLAS eigen extensions are properly loaded.
StatusCode refitVertex(WrkVrt &)
refit the vertex.
double improveChi2ProbThreshold
std::vector< ExtrapolatedPoint > ExtrapolatedPattern
std::string PrimVrtLocation
StatusCode fillAANT_SelectedBaseTracks()
void selectTrack(const xAOD::TrackParticle *)
Vertexing Algorithm Member Functions.
std::optional< SG::Decorator< char > > m_decor_is_svtrk_final
bool doMergeFinalVerticesDistance
static size_t nTrkCommon(std::vector< WrkVrt > *WrkVrtSet, const std::pair< unsigned, unsigned > &pairIndex)
returns the number of tracks commonly present in both vertices
std::deque< long int > selectedTrackIndices
flagged true for good vertex candidates
bool doReassembleVertices
Eigen::Matrix< double, 3, 1 > Vector3D
double associateMaxZ0Signif
StatusCode selectTracksFromMuons()
bool doTightPVcompatibilityCut
unsigned nTracksTotal() const
StatusCode selectTracksFromElectrons()
std::vector< std::pair< int, int > > m_incomp
void lockTrackDecorations(const xAOD::TrackParticle *trk, bool onlySelection) const
lock decorations at the end of the algorithm
uint8_t numSctBarrelLayer3_Hits
std::vector< const xAOD::TrackParticle * > m_associatedTracks
double closestWrkVrtValue
stores the index of the closest WrkVrt in std::vector<WrkVrt>
StatusCode disassembleVertex(std::vector< WrkVrt > *, const unsigned &vertexIndex)
bool checkTrackHitPatternToVertex(const xAOD::TrackParticle *trk, const Amg::Vector3D &vertex)
A classical method with hard-coded geometry.
static bool patternCheckRun1OuterOnly(const uint32_t &pattern, const Amg::Vector3D &vertex)
bool passedFakeReject(const Amg::Vector3D &FitVertex, const xAOD::TrackParticle *itrk, const xAOD::TrackParticle *jtrk)
Flag false if the consistituent tracks are not consistent with the vertex position.
void printWrkSet(const std::vector< WrkVrt > *WrkVrtSet, const std::string &name)
print the contents of reconstructed vertices
Class describing a Vertex.
static bool patternCheckRun2OuterOnly(const uint32_t &pattern, const Amg::Vector3D &vertex)
std::string truthParticleFilter
bool doSelectTracksWithLRTCuts
double fitQuality() const
StatusCode(VrtSecInclusive::*)() TrackSelectionAlg
std::vector< std::vector< double > > TrkAtVrt
total charge of the vertex
StatusCode fillAANT_SecondaryVertices(xAOD::VertexContainer *)
virtual StatusCode initEvent()
static void removeTrackFromVertex(std::vector< WrkVrt > *, std::vector< std::deque< long int > > *, const long int &, const long int &)
struct JobProperties m_jp
std::optional< VertexELType > m_decor_svLink
void removeInconsistentTracks(WrkVrt &)
Remove inconsistent tracks from vertices.
std::string TrackLocation
std::map< const xAOD::TruthVertex *, bool > m_matchMap
StatusCode monitorVertexingAlgorithmStep(std::vector< WrkVrt > *, const std::string &name, bool final=false)
monitor the intermediate status of vertexing
std::vector< const xAOD::TrackParticle * > m_selectedTracks
Manage lookup of vectors of auxiliary data.
Class describing a TrackParticle.
double VertexMergeFinalDistCut
virtual StatusCode initialize()
bool(VrtSecInclusive::*)(const xAOD::TrackParticle *trk, const Amg::Vector3D &vertex) PatternStrategyFunc
std::vector< const xAOD::TruthVertex * > m_tracingTruthVertices
setBGCode setTAP setLVL2ErrorBits bool
bool selectTrack_z0errCut(const xAOD::TrackParticle *) const
double reassembleMaxImpactParameterZ0
Helper class to provide type-safe access to aux data.
StatusCode augmentDVimpactParametersToLeptons(const std::string &containerName)
bool checkTrackHitPatternToVertexByExtrapolation(const xAOD::TrackParticle *trk, const Amg::Vector3D &vertex)
New method with track extrapolation.
bool selectTrack_notPVassociated(const xAOD::TrackParticle *) const
track-by-track selection strategies
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
bool selectTrack_chi2Cut(const xAOD::TrackParticle *) const
void getIntersection(Track *trk, std::vector< IntersectionPos * > &layers, const Trk::Perigee *per)
StatusCode mergeFinalVertices(std::vector< WrkVrt > *)
attempt to merge vertices by lookng at the distance between two vertices
std::string m_checkPatternStrategy
StatusCode addEventInfo()
StatusCode findNtrackVertices(std::vector< WrkVrt > *)
std::map< unsigned, SG::Decorator< float > > m_trkDecors
uint8_t numPixelDisk2_Hits
StatusCode clearNtupleVariables()
std::vector< IPDecoratorType > m_ipDecors