24#include "GaudiKernel/GaudiException.h"
176 using elParams = std::pair<egammaParameters::ParamDef, double>;
177 std::vector<elParams>::const_iterator p =
m_parameters.begin();
180 if ( (*p).first == key ) {
190 using elParams = std::pair<egammaParameters::ParamDef, bool>;
196 if ( (*p).first == key ) {
207 using elParams = std::pair<egammaParameters::ParamDef, int>;
213 if ( (*p).first == key ){
236 using elParams = std::pair<egammaParameters::ParamDef, double>;
237 std::vector<elParams>::iterator p =
m_parameters.begin();
240 if ( (*p).first == key )
break;
251 throw GaudiException(
"parameter not saved",
"EMConvert::set_parameter(...)", StatusCode::FAILURE);
259 using elParams = std::pair<egammaParameters::ParamDef, bool>;
264 if ( (*p).first == key )
break;
275 throw GaudiException(
"parameter not saved",
"EMConvert::set_parameter(...)", StatusCode::FAILURE);
283 using elParams = std::pair<egammaParameters::ParamDef, int>;
288 if ( (*p).first == key )
break;
299 throw GaudiException(
"parameter not saved",
"EMConvert::set_parameter(...)", StatusCode::FAILURE);
693 throw GaudiException(
"Parameters not saved, no VxCandidate",
"EMConvert::fillDetails(...)", StatusCode::FAILURE);
711 int numTracksAtVertex = trks.size();
731 if(numTracksAtVertex>1){
763 int numTracksAtVertex = trks.size();
764 for(
int i=0; i<numTracksAtVertex; i++){
786 if(numTracksAtVertex<2){
888 if(vertex_numTracks()>0){
893 hepSymMatrix->fillSymmetric(0,0, vertex_Covxx());
894 hepSymMatrix->fillSymmetric(0,1, vertex_Covxy());
895 hepSymMatrix->fillSymmetric(0,2, vertex_Covxz());
896 hepSymMatrix->fillSymmetric(0,3, vertex_Covphi1x());
897 hepSymMatrix->fillSymmetric(0,4, vertex_Covtheta1x());
898 hepSymMatrix->fillSymmetric(0,5, vertex_CovqOverP1x());
899 hepSymMatrix->fillSymmetric(0,6, vertex_Covphi2x());
900 hepSymMatrix->fillSymmetric(0,7, vertex_Covtheta2x());
901 hepSymMatrix->fillSymmetric(0,8, vertex_CovqOverP2x());
902 hepSymMatrix->fillSymmetric(1,1, vertex_Covyy());
903 hepSymMatrix->fillSymmetric(1,2, vertex_Covyz());
904 hepSymMatrix->fillSymmetric(1,3, vertex_Covphi1y());
905 hepSymMatrix->fillSymmetric(1,4, vertex_Covtheta1y());
906 hepSymMatrix->fillSymmetric(1,5, vertex_CovqOverP1y());
907 hepSymMatrix->fillSymmetric(1,6, vertex_Covphi2y());
908 hepSymMatrix->fillSymmetric(1,7, vertex_Covtheta2y());
909 hepSymMatrix->fillSymmetric(1,8, vertex_CovqOverP2y());
910 hepSymMatrix->fillSymmetric(2,2, vertex_Covzz());
911 hepSymMatrix->fillSymmetric(2,3, vertex_Covphi1z());
912 hepSymMatrix->fillSymmetric(2,4, vertex_Covtheta1z());
913 hepSymMatrix->fillSymmetric(2,5, vertex_CovqOverP1z());
914 hepSymMatrix->fillSymmetric(2,6, vertex_Covphi2z());
915 hepSymMatrix->fillSymmetric(2,7, vertex_Covtheta2z());
916 hepSymMatrix->fillSymmetric(2,8, vertex_CovqOverP2z());
917 hepSymMatrix->fillSymmetric(3,3, vertex_Covphi1phi1());
918 hepSymMatrix->fillSymmetric(3,4, vertex_Covphi1theta1());
919 hepSymMatrix->fillSymmetric(3,5, vertex_Covphi1qOverP1());
920 hepSymMatrix->fillSymmetric(3,6, vertex_Covphi1phi2());
921 hepSymMatrix->fillSymmetric(3,7, vertex_Covphi1theta2());
922 hepSymMatrix->fillSymmetric(3,8, vertex_Covphi1qOverP2());
923 hepSymMatrix->fillSymmetric(4,4, vertex_Covtheta1theta1());
924 hepSymMatrix->fillSymmetric(4,5, vertex_Covtheta1qOverP1());
925 hepSymMatrix->fillSymmetric(4,6, vertex_Covtheta1phi2());
926 hepSymMatrix->fillSymmetric(4,7, vertex_Covtheta1theta2());
927 hepSymMatrix->fillSymmetric(4,8, vertex_Covtheta1qOverP2());
928 hepSymMatrix->fillSymmetric(5,5, vertex_CovqOverP1qOverP1());
929 hepSymMatrix->fillSymmetric(5,6, vertex_CovqOverP1phi2());
930 hepSymMatrix->fillSymmetric(5,7, vertex_CovqOverP1theta2());
931 hepSymMatrix->fillSymmetric(5,8, vertex_CovqOverP1qOverP2());
932 hepSymMatrix->fillSymmetric(6,6, vertex_Covphi2phi2());
933 hepSymMatrix->fillSymmetric(6,7, vertex_Covphi2theta2());
934 hepSymMatrix->fillSymmetric(6,8, vertex_Covphi2qOverP2());
935 hepSymMatrix->fillSymmetric(7,7, vertex_Covtheta2theta2());
936 hepSymMatrix->fillSymmetric(7,8, vertex_Covtheta2qOverP2());
937 hepSymMatrix->fillSymmetric(8,8, vertex_CovqOverP2qOverP2());
950 Trk::ExtendedVxCandidate* evxCand =
nullptr;
951 Trk::VxCandidate* vxCand =
nullptr;
952 std::vector<Trk::VxTrackAtVertex*> vxTrkAtVx;
963 const Trk::PerigeeSurface surface(globPos);
971 Trk::VxTrackAtVertex* vxtrk1 = new Trk::VxTrackAtVertex(
vertex_track1_chi2(), trkParams);
972 vxTrkAtVx.push_back(vxtrk1);
975 Trk::VxTrackAtVertex* vxtrk2 =
nullptr;
977 const Trk::PerigeeSurface surface2(globPos);
987 vxTrkAtVx.push_back(vxtrk2);
992 vxCand = new Trk::VxCandidate(*vx, vxTrkAtVx);
void fillSymmetric(size_t i, size_t j, Scalar value)
method to fill elements for a symmetric matrix
An interface for getting the name of a class as a string.
Provide an interface for finding inheritance information at run time.
#define SG_ADD_BASE(D, B)
Add a new base class B to class D.
#define AmgSymMatrix(dim)
std::atomic< const char * > ClassID_traits< ViewVector< DV > >::s_name
static std::string name()
Return the name of class T as a string.
EM convert property class data class.
void set_convMatchDeltaEta1(double)
bool convAngleMatch() const
conversion angle matches egamma angle
void set_vertex_Covtheta1phi2(double)
void set_vertex_Covxy(double)
double vertex_CovqOverP2qOverP2() const
double vertex_Covphi2phi2() const
double vertex_Covd01d01() const
refitted track covariance matrix and correlations with vertex position
double vertex_Covxy() const
double vertex_Covphi1theta2() const
virtual const std::string & className() const
void set_convMatchDeltaPhi2(double)
double vertex_Covphi1phi1() const
void set_vertex_Covphi1qOverP1(double)
void set_vertex_Covyy(double)
void set_vertex_CovqOverP1phi2(double)
void set_vertex_Covtheta1y(double)
double vertex_track2_chi2() const
track2 chi2
void set_vertex_Covtheta1qOverP1(double)
void set_vertex_track1_chi2(double)
double convMatchDeltaEta2_refit() const
Delta eta of match between 2nd track and cluster (after refit)
void set_vertex_Covtheta1theta2(double)
virtual bool boolParameter(egammaParameters::ParamDef) const
void set_vertex_Covz02z02(double)
void set_vertex_Covd02theta2(double)
virtual bool hasBoolParameter(egammaParameters::ParamDef) const
void set_vertex_track2_qOverP(double)
void set_vertex_Covz01phi1(double)
void set_vertex_Covphi1theta1(double)
double vertex_Covphi2qOverP2() const
void fillDummy()
fill the details with dummy values (so we can avoid uninitialized values when the conversion refit is...
void set_parameter(egammaParameters::ParamDef, double, bool overwrite=false)
general parameter setting
void set_convTrackMatch(bool)
void set_vertex_CovqOverP1theta2(double)
void set_vertex_CovqOverP1y(double)
void set_convMatchDeltaEta1_refit(double)
double vertex_Covyz() const
double convMatchDeltaPhi2() const
Delta phi of match between 2nd track and cluster.
void set_vertex_Covd01theta1(double)
void set_vertex_track1_author(int)
double vertex_Covz01qOverP1() const
void set_convMatchDeltaEta2(double)
void set_parameterBool(egammaParameters::ParamDef, bool, bool overwrite=false)
double vertex_Covtheta2y() const
void set_vertex_Covtheta1theta1(double)
void set_convMatchDeltaPhi1_refit(double)
void set_vertex_Covphi2qOverP2(double)
double convMatchDeltaPhi2_refit() const
Delta phi of match between 2nd track and cluster (after refit)
double vertex_Covd01z01() const
double vertex_Covtheta2qOverP2() const
double vertex_Covz01theta1() const
std::vector< std::pair< egammaParameters::ParamDef, double > > m_parameters
double vertex_Covd02qOverP2() const
int ambiguityResult() const
void set_vertex_Covd01z01(double)
void set_vertex_CovqOverP2z(double)
void set_vertex_CovqOverP1x(double)
void set_vertex_CovqOverP1z(double)
double convMatchDeltaPhi1_refit() const
Delta phi of match between track or photon and cluster (after refit)
void set_vertex_track2_chi2(double)
double vertex_Covd02z02() const
double vertex_Covtheta2theta2() const
double vertex_Covtheta1phi2() const
void set_vertex_Covphi1y(double)
double vertex_Covphi1qOverP2() const
void set_vertex_Covd01phi1(double)
int vertex_track2_author() const
track2 author
void set_vertex_track1_qOverP(double)
double vertex_Covtheta2x() const
double vertex_Covyy() const
void set_vertex_Covyz(double)
void set_vertex_Covz01theta1(double)
double vertex_Covtheta1qOverP2() const
double vertex_Covd02phi2() const
double vertex_Covphi1qOverP1() const
double vertex_CovqOverP2y() const
double vertex_Covd01qOverP1() const
double vertex_Covz02z02() const
void set_vertex_numTracks(int)
double vertex_chi2() const
vertex fit quality
void set_vertex_CovqOverP2y(double)
int vertex_track1_author() const
track1 author
virtual double parameter(egammaParameters::ParamDef) const
general parameter retrieval
void set_vertex_CovqOverP1qOverP2(double)
double vertex_CovqOverP2z() const
double vertex_Covtheta1theta2() const
double vertex_Covtheta1y() const
double vertex_Covz02theta2() const
void set_vertex_track1_theta(double)
void set_vertex_Covphi1qOverP2(double)
double vertex_Covphi1y() const
double vertex_Covtheta1theta1() const
double vertex_Covz01z01() const
double vertex_Covphi1theta1() const
double vertex_track1_phi() const
track1 global momentum (cartesian coordinates)
virtual bool hasIntParameter(egammaParameters::ParamDef) const
void set_vertex_Covz02qOverP2(double)
double vertex_Covd02d02() const
void set_vertex_Covd02phi2(double)
void set_vertex_Covphi2y(double)
void set_vertex_y(double)
void set_parameterInt(egammaParameters::ParamDef, int, bool overwrite=false)
double vertex_Covxx() const
vertex position covariance matrix (cartesian coordinates)
double convMatchDeltaEta1() const
Delta eta of match between track or photon and cluster.
void set_vertex_Covtheta2z(double)
void set_ambiguityResult(int)
double vertex_track2_phi() const
track2 global momentum (cartesian coordinates)
double vertex_Covd01theta1() const
void set_vertex_Covtheta2theta2(double)
double vertex_Covxz() const
void set_vertex_Covphi1z(double)
void set_vertex_Covtheta1qOverP2(double)
void set_vertex_Covz01qOverP1(double)
double vertex_Covphi1phi2() const
void set_vertex_Covtheta2y(double)
void set_vertex_Covzz(double)
bool convTrackMatch() const
conversion track matches egamma track
double vertex_Covtheta1qOverP1() const
void set_convMatchDeltaEta2_refit(double)
int vertex_numTracks() const
double vertex_Covz01phi1() const
EMConvert()
Default constructor.
double vertex_Covtheta1z() const
double convMatchDeltaEta1_refit() const
Delta eta of match between track or photon and cluster (after refit)
void set_vertex_CovqOverP1qOverP1(double)
double vertex_Covphi2z() const
double vertex_Covphi2theta2() const
void set_convMatchDeltaPhi1(double)
void set_vertex_z(double)
double vertex_Covphi2x() const
void set_convAngleMatch(bool)
void set_vertex_Covd01d01(double)
void fillVxTracks(const Trk::VxCandidate *vxCand, int trkAuthor)
double vertex_track1_theta() const
void set_vertex_CovqOverP2qOverP2(double)
double vertex_Covz02qOverP2() const
void set_vertex_Covz01z01(double)
void set_vertex_Covphi1phi1(double)
double vertex_track1_chi2() const
track1 chi2
void set_vertex_chi2(double)
double vertex_Covphi1z() const
double vertex_Covtheta2z() const
void set_vertex_Covphi1x(double)
void set_vertex_x(double)
double vertex_Covphi1x() const
double vertex_track1_qOverP() const
double vertex_Covd02theta2() const
double convMatchDeltaPhi1() const
Delta phi of match between track or photon and cluster.
void set_convMatchDeltaPhi2_refit(double)
double vertex_CovqOverP1z() const
Amg::MatrixX * getVxErrorMatrix() const
get the full vertex error matrix from the stored egammaParameters
void set_vertex_Covxx(double)
double vertex_Covd01phi1() const
void set_vertex_Covz02theta2(double)
std::vector< std::pair< egammaParameters::ParamDef, int > > m_parametersInt
double vertex_Covtheta1x() const
double vertex_CovqOverP2x() const
void set_vertex_Covz02phi2(double)
void set_vertex_CovqOverP2x(double)
void set_vertex_track1_phi(double)
Trk::VxCandidate * getVxCandidate() const
get the VxCandidate from the stored egammaParameters
void set_vertex_Covd02d02(double)
double vertex_track2_qOverP() const
void set_vertex_Covd02z02(double)
void set_vertex_Covtheta2qOverP2(double)
void set_vertex_Covtheta1x(double)
void set_vertex_track2_theta(double)
double convMatchDeltaEta2() const
Delta eta of match between 2nd track and cluster.
double vertex_CovqOverP1y() const
void fillVxDetails(const Trk::VxCandidate *vxCand, int trkAuthor)
void set_vertex_Covd02qOverP2(double)
double vertex_Covz02phi2() const
void set_vertex_Covphi1theta2(double)
double vertex_Covphi2y() const
void set_vertex_Covd01qOverP1(double)
double vertex_CovqOverP1theta2() const
double vertex_x() const
vertex position (cartesian coordinates)
void set_vertex_track2_author(int)
void set_vertex_Covxz(double)
virtual bool hasParameter(egammaParameters::ParamDef) const
double vertex_Covzz() const
void set_vertex_Covphi2theta2(double)
virtual int intParameter(egammaParameters::ParamDef) const
void set_vertex_Covtheta1z(double)
double vertex_track2_theta() const
std::vector< std::pair< egammaParameters::ParamDef, bool > > m_parametersBool
void fillVertex(const Trk::VxCandidate *vxCand)
fill the vertex variables from a Trk::VxCandidate *\/
void set_vertex_Covphi2z(double)
double vertex_CovqOverP1qOverP2() const
void set_vertex_track2_phi(double)
double vertex_CovqOverP1qOverP1() const
double vertex_CovqOverP1x() const
void set_vertex_Covphi2phi2(double)
void set_vertex_Covtheta2x(double)
void set_vertex_Covphi1phi2(double)
double vertex_CovqOverP1phi2() const
void set_vertex_Covphi2x(double)
Extends the standard Trk::VxCandidate to store the full covariance matrix of a fitted vertex all part...
const Amg::MatrixX * fullCovariance(void) const
Full covariance matrix access method.
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
double chiSquared() const
returns the of the overall track fit
const Trk::FitQuality & fitQuality() const
Fit quality access method.
const Amg::Vector3D & position() const
return position of vertex
std::vector< Trk::VxTrackAtVertex * > * vxTrackAtVertex(void)
Unconst pointer to the vector of tracks Required by some of the vertex fitters.
const Trk::RecVertex & recVertex(void) const
Returns a reference to reconstructed vertex.
The VxTrackAtVertex is a common class for all present TrkVertexFitters The VxTrackAtVertex is designe...
const TrackParameters * perigeeAtVertex(void) const
Perigee parameters with respect to fitted vertex d_0 and z_0 are equal to 0 in case the trajectory wa...
FitQuality trackQuality(void) const
Returns a pointer to the original track if any.
egDetail()=default
Default constructor.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 3, 1 > Vector3D
@ z
global position (cartesian)
ParametersBase< TrackParametersDim, Charged > TrackParameters
@ refittedVertex_Covphi2phi2
@ refittedVertex_CovqOverP2y
@ refittedVertex_Covyz
refitted vertex covariance item (y,z)
@ refittedVertex_Covphi1qOverP1
@ refittedVertex_CovqOverP1qOverP1
@ refittedVertex_Covz01theta1
@ refittedVertex_CovqOverP2qOverP2
@ refittedVertex_Covd01z01
@ refittedVertex_Covphi1theta2
@ refittedVertex_track2_chi2
refitted track chi2 after vertex fit
@ convMatchDeltaEta2_refit
@ refittedVertex_Covd01theta1
@ refittedVertex_CovqOverP2z
@ refittedVertex_Covxy
refitted vertex covariance item (x,y)
@ refittedVertex_Covphi1phi2
@ refittedVertex_Covphi2qOverP2
@ refittedVertex_Covxz
refitted vertex covariance item (x,z)
@ refittedVertex_Covtheta1x
@ refittedVertex_track1_phi
refitted track global momentum after vertex fit
@ refittedVertex_chi2
refitted vertex fit quality variables
@ refittedVertex_Covtheta2y
@ refittedVertex_CovqOverP1x
@ refittedVertex_x
refitted vertex position (cartesian coordinates)
@ refittedVertex_track2_author
refitted track author
@ refittedVertex_Covz02z02
@ refittedVertex_Covtheta2theta2
@ refittedVertex_Covphi2theta2
@ refittedVertex_Covphi2y
@ refittedVertex_Covz01qOverP1
@ refittedVertex_Covphi2z
@ refittedVertex_Covphi2x
@ refittedVertex_Covtheta2qOverP2
@ refittedVertex_Covz02phi2
@ refittedVertex_CovqOverP1qOverP2
@ refittedVertex_Covd01qOverP1
@ refittedVertex_track1_chi2
refitted track chi2 after vertex fit
@ refittedVertex_CovqOverP1y
@ refittedVertex_CovqOverP1theta2
@ refittedVertex_Covphi1phi1
refitted track covariance matrix and correlations with vertex position
@ refittedVertex_Covd02z02
@ refittedVertex_Covphi1qOverP2
@ refittedVertex_Covz01z01
@ refittedVertex_Covd02theta2
@ refittedVertex_Covxx
refitted vertex covariance matrix entries (cartesian coordinates)
@ convMatchDeltaPhi2_refit
@ convMatchDeltaEta1_refit
@ refittedVertex_Covphi1x
@ refittedVertex_track2_theta
@ refittedVertex_Covtheta2z
@ refittedVertex_CovqOverP2x
@ refittedVertex_numTracks
@ refittedVertex_Covz01phi1
@ refittedVertex_Covyy
refitted vertex covariance item (y,y)
@ refittedVertex_Covphi1y
@ refittedVertex_Covtheta1qOverP2
@ convTrackMatch
from EMConvert, true if a conversion is matched to the track associated to the cluster
@ refittedVertex_track2_qOverP
@ linkIndex
link index for multiple track and vertex matches
@ refittedVertex_Covtheta1y
@ refittedVertex_Covtheta1phi2
@ refittedVertex_CovqOverP1phi2
@ refittedVertex_Covz02qOverP2
@ refittedVertex_track1_theta
@ refittedVertex_Covzz
refitted vertex covariance item (z,z)
@ refittedVertex_Covtheta2x
@ refittedVertex_Covd02phi2
@ refittedVertex_Covtheta1theta1
@ refittedVertex_track2_phi
refitted track global momentum after vertex fit
@ ambiguityResult
ambiguity resolultion result, electron/photon
@ refittedVertex_Covphi1theta1
@ refittedVertex_Covd02qOverP2
@ refittedVertex_track1_qOverP
@ refittedVertex_Covphi1z
@ refittedVertex_Covd02d02
@ refittedVertex_Covtheta1qOverP1
@ refittedVertex_Covd01phi1
@ refittedVertex_Covd01d01
@ refittedVertex_track1_author
refitted track author
@ refittedVertex_Covz02theta2
@ convMatchDeltaPhi1_refit
@ convAngleMatch
from EMConvert, true if a conversion is matched within an angle of 0,05 to the cluster
@ refittedVertex_Covtheta1theta2
@ refittedVertex_CovqOverP1z
@ refittedVertex_Covtheta1z
const double EgParamUndefined