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