 |
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;
177 TLorentzVector& Momentum,
189 TLorentzVector& Momentum,
202 TLorentzVector& Momentum,
212 const TLorentzVector& Momentum,
214 const long int& Charge,
292 const long int Charge,
299 const long int Charge,
306 const long int Charge,
312 const long int Charge,
326 Gaudi::Property<double>
m_IDsizeR{
this,
"IDsizeR", 1150.0};
327 Gaudi::Property<double>
m_IDsizeZ{
this,
"IDsizeZ", 3000.0};
328 Gaudi::Property<double>
m_MSsizeR{
this,
"MSsizeR", 8000.0};
329 Gaudi::Property<double>
m_MSsizeZ{
this,
"MSsizeZ", 10000.0};
332 Gaudi::Property<std::vector<double>>
m_c_MassInputParticles{
this,
"InputParticleMasses", {},
"List of masses of input particles (pions assumed if absent)"};
334 ToolHandle<IExtrapolator>
m_extPropagator{
this,
"Extrapolator",
"",
"External propagator"};
338 "AtlasFieldCacheCondObj",
340 "Name of the Magnetic Field key" };
341 Gaudi::Property<bool>
m_firstMeasuredPoint{
this,
"FirstMeasuredPoint",
false,
"Use FirstMeasuredPoint strategy in fits"};
344 "Use radius of FirstMeasuredRadiusLimit as maximal vertex radius"};
345 Gaudi::Property<bool>
m_makeExtendedVertex{
this,
"MakeExtendedVertex",
false,
"Return VxCandidate with full covariance matrix"};
346 Gaudi::Property<bool>
m_useFixedField{
this,
"useFixedField",
false,
"Use fixed magnetic field instead of exact Atlas one"};
350 Gaudi::Property<bool>
m_useAprioriVertex{
this,
"useAprioriVertexCnst",
false,
"Use a priori vertex constraint"};
351 Gaudi::Property<bool>
m_useThetaCnst{
this,
"useThetaCnst",
false,
"Use angle dTheta=0 constraint"};
352 Gaudi::Property<bool>
m_usePhiCnst{
this,
"usePhiCnst",
false,
"Use angle dPhi=0 constraint"};
353 Gaudi::Property<bool>
m_usePointingCnst{
this,
"usePointingCnst",
false,
"Use pointing to other vertex constraint"};
354 Gaudi::Property<bool>
m_useZPointingCnst{
this,
"useZPointingCnst",
false,
"Use ZPointing to other vertex constraint"};
355 Gaudi::Property<bool>
m_usePassNear{
this,
"usePassNearCnst",
false,
"Use combined particle pass near other vertex constraint"};
356 Gaudi::Property<bool>
m_usePassWithTrkErr{
this,
"usePassWithTrkErrCnst",
false,
"Use pass near with combined particle errors constraint"};
463 static void makeSimpleCascade(std::vector< std::vector<int> > &, std::vector< std::vector<int> > &,
464 CascadeState& cstate) ;
465 static void printSimpleCascade(std::vector< std::vector<int> > &, std::vector< std::vector<int> > &,
466 const CascadeState& cstate) ;
467 static int findPositions(
const std::vector<int> &,
const std::vector<int> &, std::vector<int> &) ;
519 const std::vector<dvect>&,
528 std::span<const xAOD::TrackParticle* const>
list,
533 const std::vector<const xAOD::NeutralParticle*>&
list,
538 const std::vector<const TrackParameters*>& InpTrk,
543 const std::vector<const NeutralParameters*>& InpTrk,
559 TLorentzVector& Momentum,
563 std::vector<std::vector<double>>& TrkAtVrt,
571 const std::vector<double>& VKPerigee,
572 const std::vector<double>& VKCov,
Gaudi::Property< int > m_IterationNumber
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
Gaudi::Property< std::vector< double > > m_c_CovVrtForConstraint
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.
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.
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.
Gaudi::Property< bool > m_usePhiCnst
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
Gaudi::Property< bool > m_usePassWithTrkErr
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
Gaudi::Property< double > m_IDsizeR
virtual double VKalGetImpact(const xAOD::TrackParticle *, const Amg::Vector3D &Vertex, const long int Charge, dvect &Impact, dvect &ImpactError, IVKalState &istate) const override final
Gaudi::Property< bool > m_allowUltraDisplaced
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
Gaudi::Property< double > m_MSsizeZ
double m_cnstRadiusRef[2]
Gaudi::Property< bool > m_useAprioriVertex
static int getCascadeNDoF(const CascadeState &cstate)
bool const RAWDATA *ch2 const
bool convertAmg5SymMtx(const AmgSymMatrix(5) *, double[15]) const
Support class for PropertyMgr.
Amg::Vector3D trkRefGlobPos
static int VKalGetNDOF(const State &state)
Gaudi::Property< int > m_Robustness
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
Gaudi::Property< double > m_MSsizeR
VKalVrtControl m_vkalFitControl
std::vector< double > dvect
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
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
void setAthenaPropagator(const Trk::IExtrapolator *)
Gaudi::Property< double > m_cascadeCnstPrecision
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
Gaudi::Property< std::vector< double > > m_c_MassInputParticles
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< double > m_IterationPrecision
std::vector< TrkMatControl > m_trkControl
virtual void setCnstType(int, IVKalState &istate) const override final
CalibratedSpacePoint::State State
double m_awgt[NTrMaxVFit][15]
bool m_allowUltraDisplaced
std::vector< VertexID > inPointingV
Gaudi::Property< bool > m_usePointingCnst
virtual StatusCode finalize() override final
std::vector< const xAOD::TrackParticle * > m_partListForCascade
NeutralParticle_v1 NeutralParticle
Reference the current persistent version:
Gaudi::Property< bool > m_firstMeasuredRadiusLimit
Base class for VKal state object.
std::vector< double > m_MassInputParticles
static const Perigee * GetPerigee(const TrackParameters *i_ntrk)
bool m_frozenVersionForBTagging
Gaudi::Property< bool > m_usePassNear
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)
Gaudi::Property< bool > m_useThetaCnst
Gaudi::Property< double > m_massForConstraint
long int m_ich[NTrMaxVFit]
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Gaudi::Property< bool > m_frozenVersionForBTagging
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
Gaudi::Property< bool > m_firstMeasuredPointLimit
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]
std::vector< double > m_ApproximateVertex
Gaudi::Property< bool > m_useFixedField
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
void VKalVrtConfigureFitterCore(int NTRK, State &state) const
Gaudi::Property< bool > m_useZPointingCnst
=============================================================================
Gaudi::Property< double > m_RobustScale
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
Gaudi::Property< bool > m_firstMeasuredPoint
std::vector< VertexID > pseudoInVrt
std::vector< double > m_CovVrtForConstraint
Gaudi::Property< std::vector< double > > m_c_VertexForConstraint
virtual void setMassInputParticles(const std::vector< double > &, IVKalState &istate) const override final
Gaudi::Property< bool > m_makeExtendedVertex
double m_apar[NTrMaxVFit][5]
std::vector< double > m_ErrMtx
std::vector< double > m_VertexForConstraint
virtual std::unique_ptr< IVKalState > makeState(const EventContext &ctx) const override final
Gaudi::Property< double > m_IDsizeZ