|
ATLAS Offline Software
|
Go to the documentation of this file.
7 #ifndef TRKVKALVRTFITTER_VKALVRTFITTER_H
8 #define TRKVKALVRTFITTER_VKALVRTFITTER_H
11 #include "GaudiKernel/ToolHandle.h"
36 typedef std::vector<double>
dvect;
38 class IMagneticFieldTool;
104 const EventContext& ctx,
144 double massConstraint = 0.)
const override final;
149 double massConstraint = 0.)
const override final;
155 double massConstraint = 0.)
const override final;
159 bool FirstDecayAtPV = false)
const override final;
166 double massConstraint)
const override final;
171 const EventContext& ctx)
const override final;
177 TLorentzVector& Momentum,
184 bool ifCovV0 = false)
const override final;
189 TLorentzVector& Momentum,
196 bool ifCovV0 = false)
const override final;
202 TLorentzVector& Momentum,
209 bool ifCovV0 = false)
const override final;
212 const TLorentzVector& Momentum,
214 const long int& Charge,
246 bool = false)
const override final;
292 const long int Charge,
299 const long int Charge,
306 const long int Charge,
312 const long int Charge,
336 "AtlasFieldCacheCondObj",
338 "Name of the Magnetic Field key" };
453 static void makeSimpleCascade(std::vector< std::vector<int> > &, std::vector< std::vector<int> > &,
454 CascadeState& cstate) ;
455 static void printSimpleCascade(std::vector< std::vector<int> > &, std::vector< std::vector<int> > &,
456 const CascadeState& cstate) ;
457 static int findPositions(
const std::vector<int> &,
const std::vector<int> &, std::vector<int> &) ;
509 const std::vector<dvect>&,
518 std::span<const xAOD::TrackParticle* const>
list,
523 const std::vector<const xAOD::NeutralParticle*>&
list,
528 const std::vector<const TrackParameters*>& InpTrk,
533 const std::vector<const NeutralParameters*>& InpTrk,
549 TLorentzVector& Momentum,
553 std::vector<std::vector<double>>& TrkAtVrt,
561 const std::vector<double>& VKPerigee,
562 const std::vector<double>& VKCov,
std::array< float, 7 > Weights
const TrackParameters * m_globalFirstHit
static int findPositions(const std::vector< int > &, const std::vector< int > &, std::vector< int > &)
virtual StatusCode VKalVrtFit(const std::vector< const xAOD::TrackParticle * > &, const std::vector< const xAOD::NeutralParticle * > &, Amg::Vector3D &Vertex, TLorentzVector &Momentum, long int &Charge, dvect &ErrorMatrix, dvect &Chi2PerTrk, std::vector< std::vector< double >> &TrkAtVrt, double &Chi2, IVKalState &istate, bool ifCovV0=false) const override final
std::vector< cascadeV > m_cascadeVList
StatusCode CvtNeutralParameters(const std::vector< const NeutralParameters * > &InpTrk, int &ntrk, State &state) const
StatusCode CvtNeutralParticle(const std::vector< const xAOD::NeutralParticle * > &list, int &ntrk, State &state) const
xAOD::Vertex * makeXAODVertex(int, const Amg::Vector3D &, const dvect &, const dvect &, const std::vector< dvect > &, double, State &state) const
span(T *ptr, std::size_t sz) -> span< T >
A couple needed deduction guides.
SimpleProperty< double > m_IterationPrecision
SimpleProperty< double > m_cascadeCnstPrecision
virtual std::unique_ptr< xAOD::Vertex > fit(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &vectorTrk, const Amg::Vector3D &startingPoint) const
Interface for xAOD::TrackParticle with starting point Event Context aware interface.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
std::vector< double > m_c_VertexForConstraint
virtual void setVertexForConstraint(const xAOD::Vertex &, IVKalState &istate) const override final
virtual void setCovVrtForConstraint(double XX, double XY, double YY, double XZ, double YZ, double ZZ, IVKalState &istate) const override final
void initState(const EventContext &ctx, State &state) const
const IExtrapolator * m_InDetExtrapolator
Pointer to Extrapolator AlgTool.
virtual std::unique_ptr< Trk::Perigee > CreatePerigee(const std::vector< double > &VKPerigee, const std::vector< double > &VKCov, IVKalState &istate) const override final
virtual void setRobustness(int, IVKalState &istate) const override final
void VKalTransform(double MAG, double A0V, double ZV, double PhiV, double ThetaV, double PInv, const double[15], long int &Charge, double[5], double[15]) const
std::vector< double > m_c_MassInputParticles
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Amg::Vector3D trkSavedLocalVertex
static void FillMatrixP(AmgSymMatrix(5)&, std::vector< double > &)
virtual StatusCode VKalVrtFitFast(std::span< const xAOD::TrackParticle *const >, Amg::Vector3D &Vertex, double &minDZ, IVKalState &istate) const
std::vector< std::vector< int > > m_partMassCnstTrk
std::vector< double > m_partMassForCascade
static void makeSimpleCascade(std::vector< std::vector< int > > &, std::vector< std::vector< int > > &, CascadeState &cstate)
VertexID nextVertex(const std::vector< const xAOD::TrackParticle * > &list, std::span< const double > particleMass, IVKalState &istate, double massConstraint=0.) const override final
ToolHandle< IExtrapolator > m_extPropagator
StatusCode CvtTrackParameters(const std::vector< const TrackParameters * > &InpTrk, int &ntrk, State &state) const
VKalExtPropagator * m_fitPropagator
virtual double VKalGetImpact(const xAOD::TrackParticle *, const Amg::Vector3D &Vertex, const long int Charge, dvect &Impact, dvect &ImpactError, IVKalState &istate) const override final
std::vector< double > m_c_CovVrtForConstraint
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
StatusCode CvtPerigee(const std::vector< const Perigee * > &list, int &ntrk, State &state) const
const TrackParameters * TrkPnt
SimpleProperty< double > m_RobustScale
static int getCascadeNDoF(const CascadeState &cstate)
bool const RAWDATA *ch2 const
bool convertAmg5SymMtx(const AmgSymMatrix(5) *, double[15]) const
Amg::Vector3D trkRefGlobPos
static int VKalGetNDOF(const State &state)
static int indexInV(const VertexID &, const CascadeState &cstate)
virtual StatusCode VKalGetFullCov(long int, dvect &CovMtx, IVKalState &istate, bool=false) const override final
std::vector< double > m_partMassCnst
VxCascadeInfo * fitCascade(IVKalState &istate, const Vertex *primVertex=0, bool FirstDecayAtPV=false) const override final
std::unique_ptr< CascadeState > m_cascadeState
VKalVrtControl m_vkalFitControl
std::vector< double > dvect
SimpleProperty< int > m_Robustness
virtual StatusCode VKalGetMassError(double &Mass, double &MassError, const IVKalState &istate) const override final
TrackParticle_v1 TrackParticle
Reference the current persistent version:
VertexID startVertex(const std::vector< const xAOD::TrackParticle * > &list, std::span< const double > particleMass, IVKalState &istate, double massConstraint=0.) const override final
Interface for cascade fit.
AmgSymMatrix(5) &GXFTrackState
std::vector< int > trkInVrt
SimpleProperty< double > m_IDsizeR
virtual void setMassForConstraint(double Mass, IVKalState &istate) const override final
StatusCode addMassConstraint(VertexID Vertex, const std::vector< const xAOD::TrackParticle * > &tracksInConstraint, const std::vector< VertexID > &verticesInConstraint, IVKalState &istate, double massConstraint) const override final
SimpleProperty< double > m_massForConstraint
void setAthenaPropagator(const Trk::IExtrapolator *)
static void printSimpleCascade(std::vector< std::vector< int > > &, std::vector< std::vector< int > > &, const CascadeState &cstate)
virtual void setApproximateVertex(double X, double Y, double Z, IVKalState &istate) const override final
::StatusCode StatusCode
StatusCode definition for legacy code.
std::vector< TrkMatControl > m_trkControl
virtual void setCnstType(int, IVKalState &istate) const override final
SimpleProperty< bool > m_makeExtendedVertex
double m_awgt[NTrMaxVFit][15]
SimpleProperty< double > m_IDsizeZ
std::vector< VertexID > inPointingV
virtual StatusCode finalize() override final
std::vector< const xAOD::TrackParticle * > m_partListForCascade
NeutralParticle_v1 NeutralParticle
Reference the current persistent version:
Base class for VKal state object.
std::vector< double > m_MassInputParticles
static const Perigee * GetPerigee(const TrackParameters *i_ntrk)
bool m_frozenVersionForBTagging
SimpleProperty< bool > m_useFixedField
SimpleProperty< bool > m_firstMeasuredPointLimit
Ensure that the ATLAS eigen extensions are properly loaded.
Definition of ATLAS Math & Geometry primitives (Amg)
void VKalToTrkTrack(double curBMAG, double vp1, double vp2, double vp3, double &tp1, double &tp2, double &tp3) const
virtual StatusCode initialize() override final
VKalAtlasMagFld m_fitField
static Amg::MatrixX * GiveFullMatrix(int NTrk, std::vector< double > &)
static int getSimpleVIndex(const VertexID &, const CascadeState &cstate)
long int m_ich[NTrMaxVFit]
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Eigen::Matrix< double, 3, 1 > Vector3D
virtual StatusCode VKalGetTrkWeights(dvect &Weights, const IVKalState &istate) const override final
int VKalVrtFit3(int ntrk, Amg::Vector3D &Vertex, TLorentzVector &Momentum, long int &Charge, dvect &ErrorMatrix, dvect &Chi2PerTrk, std::vector< std::vector< double >> &TrkAtVrt, double &Chi2, State &state, bool ifCovV0) const
virtual std::unique_ptr< IVKalState > makeState() const
MagField::AtlasFieldCache m_fieldCache
std::vector< VertexID > mergedIN
virtual void setRobustScale(double, IVKalState &istate) const override final
Class describing a Vertex.
std::vector< int > trkInVrt
std::vector< PartialMassConstraint > m_partMassCnstForCascade
double m_parfs[NTrMaxVFit][3]
SimpleProperty< int > m_IterationNumber
std::vector< double > m_ApproximateVertex
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
void VKalVrtConfigureFitterCore(int NTRK, State &state) const
double m_massForConstraint
virtual StatusCode VKalVrtCvtTool(const Amg::Vector3D &Vertex, const TLorentzVector &Momentum, const dvect &CovVrtMom, const long int &Charge, dvect &Perigee, dvect &CovPerigee, IVKalState &istate) const override final
virtual xAOD::Vertex * fit(const std::vector< const TrackParameters * > &perigeeList, const Amg::Vector3D &startingPoint) const override final
Interface for MeasuredPerigee with starting point.
StatusCode CvtTrackParticle(std::span< const xAOD::TrackParticle *const > list, int &ntrk, State &state) const
const EventContext * m_eventContext
std::vector< VertexID > pseudoInVrt
std::vector< double > m_CovVrtForConstraint
virtual void setMassInputParticles(const std::vector< double > &, IVKalState &istate) const override final
SimpleProperty< bool > m_firstMeasuredPoint
double m_apar[NTrMaxVFit][5]
std::vector< double > m_ErrMtx
bool m_frozenVersionForBTagging
std::vector< double > m_VertexForConstraint
virtual std::unique_ptr< IVKalState > makeState(const EventContext &ctx) const override final