32 AmgVector(5) VectPerig; VectPerig.setZero();
34 double CovVertTrk[15]; std::fill(CovVertTrk,CovVertTrk+15,0.);
35 double tmp_refFrameX=0, tmp_refFrameY=0, tmp_refFrameZ=0;
49 for (
auto i_ntrk = InpTrk.begin(); i_ntrk != InpTrk.end(); ++i_ntrk) {
51 mPer = &(*i_ntrk)->perigeeParameters();
52 if( mPer==
nullptr )
continue;
56 tmp_refFrameX += perGlobalPos.x() ;
57 tmp_refFrameY += perGlobalPos.y() ;
58 tmp_refFrameZ += perGlobalPos.z() ;
69 if(counter == 0)
return StatusCode::FAILURE;
70 tmp_refFrameX /= counter;
71 tmp_refFrameY /= counter;
72 tmp_refFrameZ /= counter;
73 Amg::Vector3D refGVertex (tmp_refFrameX, tmp_refFrameY, tmp_refFrameZ);
83 for (
auto i_ntrk = InpTrk.begin(); i_ntrk != InpTrk.end(); ++i_ntrk) {
87 mPer = &(*i_ntrk)->perigeeParameters();
88 if( mPer==
nullptr )
continue;
90 if( !
convertAmg5SymMtx(mPer->covariance(), CovVertTrk) )
return StatusCode::FAILURE;
98 VectPerig = tmpPer.parameters();
101 if(fabs(effectiveBMAG) < 0.01) effectiveBMAG=0.01;
103 VKalTransform( effectiveBMAG, (
double)VectPerig[0], (
double)VectPerig[1],
104 (
double)VectPerig[2], (
double)VectPerig[3], (
double)VectPerig[4], CovVertTrk,
109 return StatusCode::FAILURE;
118 return StatusCode::SUCCESS;
130 std::vector<const xAOD::NeutralParticle*>::const_iterator i_ntrk;
131 AmgVector(5) VectPerig; VectPerig.setZero();
133 double CovVertTrk[15]; std::fill(CovVertTrk,CovVertTrk+15,0.);
134 double tmp_refFrameX=0, tmp_refFrameY=0, tmp_refFrameZ=0;
148 for (i_ntrk = InpTrk.begin(); i_ntrk != InpTrk.end(); ++i_ntrk) {
150 mPer = &(*i_ntrk)->perigeeParameters();
151 if( mPer==
nullptr )
continue;
153 if(fabs(perGlobalPos.z()) >
m_IDsizeZ)
return StatusCode::FAILURE;
154 if( perGlobalPos.perp() >
m_IDsizeR)
return StatusCode::FAILURE;
155 tmp_refFrameX += perGlobalPos.x() ;
156 tmp_refFrameY += perGlobalPos.y() ;
157 tmp_refFrameZ += perGlobalPos.z() ;
168 if(counter == 0)
return StatusCode::FAILURE;
169 tmp_refFrameX /= counter;
170 tmp_refFrameY /= counter;
171 tmp_refFrameZ /= counter;
172 Amg::Vector3D refGVertex (tmp_refFrameX, tmp_refFrameY, tmp_refFrameZ);
183 for (i_ntrk = InpTrk.begin(); i_ntrk != InpTrk.end(); ++i_ntrk) {
187 mPer = &(*i_ntrk)->perigeeParameters();
188 if( mPer==
nullptr )
continue;
190 if( !
convertAmg5SymMtx(mPer->covariance(), CovVertTrk) )
return StatusCode::FAILURE;
199 VectPerig = tmpPer.parameters();
202 if(fabs(effectiveBMAG) < 0.01) effectiveBMAG=0.01;
203 VKalTransform( effectiveBMAG, (
double)VectPerig[0], (
double)VectPerig[1],
204 (
double)VectPerig[2], (
double)VectPerig[3], (
double)VectPerig[4], CovVertTrk,
215 return StatusCode::FAILURE;
223 return StatusCode::SUCCESS;
232 mPer =
dynamic_cast<const Perigee*
> (i_ntrk);
#define AmgSymMatrix(dim)
const Amg::Vector3D & momentum() const
Access method for the momentum.
virtual constexpr SurfaceType surfaceType() const override=0
Returns the Surface Type enum for the surface used to define the derived class.
const Amg::Vector3D & position() const
Access method for the position.
double charge() const
Returns the charge.
Class describing the Line to which the Perigee refers to.
VKalAtlasMagFld m_fitField
std::vector< double > m_MassInputParticles
long int m_ich[NTrMaxVFit]
double m_apar[NTrMaxVFit][5]
bool m_allowUltraDisplaced
double m_awgt[NTrMaxVFit][15]
std::vector< TrkMatControl > m_trkControl
bool convertAmg5SymMtx(const AmgSymMatrix(5) *, double[15]) const
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< double > m_IDsizeZ
static const Perigee * GetPerigee(const TrackParameters *i_ntrk)
StatusCode CvtTrackParticle(std::span< const xAOD::TrackParticle *const > list, int &ntrk, State &state) const
Gaudi::Property< double > m_IDsizeR
StatusCode CvtNeutralParticle(const std::vector< const xAOD::NeutralParticle * > &list, int &ntrk, State &state) const
virtual void getMagFld(const double, const double, const double, double &, double &, double &) override
void setAtlasMagRefFrame(double, double, double)
double getEffField(double bx, double by, double bz, double phi, double theta)
Eigen::Matrix< double, 3, 1 > Vector3D
::StatusCode StatusCode
StatusCode definition for legacy code.
constexpr double chargedPionMassInMeV
the mass of the charged pion (in MeV)
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
ParametersT< NeutralParametersDim, Neutral, PerigeeSurface > NeutralPerigee
ParametersBase< TrackParametersDim, Charged > TrackParameters
Amg::Vector3D trkRefGlobPos
const TrackParameters * TrkPnt
Amg::Vector3D trkSavedLocalVertex