00001 #ifndef CONSTRAINTFITOUTPUT_H
00002 #define CONSTRAINTFITOUTPUT_H
00003 #include "EventPrimitives/EventPrimitives.h"
00004 #include "TLorentzVector.h"
00005
00006 namespace ZMassConstraint
00007 {
00008 class ConstraintFitOutput
00009 {
00010 public:
00011
00013 ConstraintFitOutput(){}
00014 ~ConstraintFitOutput() {}
00015
00017 unsigned int getNConstituents() const { return m_particleList.size(); }
00018
00020 const TLorentzVector& getConstituentFourVector(int index) const { return m_particleList.at(index); }
00021
00023 void getCompositeFourVector(TLorentzVector& lv) const
00024 { lv = TLorentzVector(); for( auto lv1 : m_particleList ) lv += lv1; }
00025
00027 Amg::MatrixX getConstituentCovariancePhiThetaP(int index) const
00028 { return m_covariancePhiThetaP.block(5*index +2, 5*index+2, 3, 3); }
00029
00031 void getConstituentCovariancePhiThetaP(int index, AmgMatrix(3,3)& outMatrix) const
00032 { outMatrix = m_covariancePhiThetaP.block(5*index +2, 5*index+2, 3, 3); }
00033
00035 Amg::MatrixX getConstituentCovarianced0z0PhiThetaP(int index) const
00036 { return m_covariancePhiThetaP.block(5*index, 5*index, 5, 5); }
00037
00039 void getConstituentCovarianced0z0PhiThetaP(int index, AmgMatrix(5,5)& outMatrix) const
00040 { outMatrix = m_covariancePhiThetaP.block(5*index, 5*index, 5, 5); }
00041
00043 const Amg::MatrixX& getConstituentCovariancePhiThetaP() const
00044 { return m_covariancePhiThetaP; }
00045
00047 void setFitOutput(const std::vector<TLorentzVector>& particleList,
00048 const Amg::MatrixX& covarXYZ,
00049 const Amg::MatrixX& covard0z0PhiThetaP)
00050 { m_particleList = particleList; m_covariance = covarXYZ; m_covariancePhiThetaP = covard0z0PhiThetaP; }
00051
00052 protected:
00053 std::vector<TLorentzVector> m_particleList;
00054 Amg::MatrixX m_covariance;
00055 Amg::MatrixX m_covariancePhiThetaP;
00056 };
00057 }
00058
00059 #endif