// ****************************************************** // DecayTreeFitter Package // We thank the original author Wouter Hulsbergen // (BaBar, LHCb) for providing the sources. // http://arxiv.org/abs/physics/0503191v1 (2005) // Adaptation & Development for PANDA: Ralf Kliemt (2015) // ****************************************************** //#include "Event/Particle.h" #include "RecoComposite.h" #include "FitParams.h" #include "TMatrixD.h" #include "RhoCalculationTools.h" using namespace DecayTreeFitter; ClassImp(RecoComposite); extern int vtxverbose ; DecayTreeFitter::RecoComposite::RecoComposite(RhoCandidate* bc, const ParticleBase* amother) : ParticleBase(bc,amother),m_m(),m_matrixV(),m_hasEnergy(true) { //bool massconstraint = bc && bc->constraint(RecoConstraint::Mass) ; //m_hasEnergy = !massconstraint ; updCache() ; } TMatrixDSym convertToHepSymMatrix(const TMatrixD& M) { //FIXME does that go with the RhoCandidate? int dim = M.GetNrows() ; TMatrixDSym rc(dim) ; for(int irow=0; irowPos() ; TLorentzVector mom = particle()->P4() ; m_m = TVectorD(dimM()) ; m_m(0) = pos.x() ; m_m(1) = pos.y() ; m_m(2) = pos.z() ; m_m(3) = mom.Px() ; m_m(4) = mom.Py() ; m_m(5) = mom.Pz() ; if(hasEnergy()) m_m(6) = mom.E() ; TMatrixDSym cov7 = convertToHepSymMatrix( particle()->Cov7()) ;//FIXME The conversion shall be checked cov7.GetSub(0,dimM(),m_matrixV) ; // so either 7 or 6, depending on mass constraint if(vtxverbose>=4) { std::cout << "cov matrix of external candidate: " << name().c_str() << " " << dimM() << std::endl; m_matrixV.Print(); } } DecayTreeFitter::RecoComposite::~RecoComposite() {} ErrCode DecayTreeFitter::RecoComposite::initPar1(FitParams* fitparams) { if(vtxverbose>5){std::cout<<"RecoComposite::initPar1: - "<par()(indmap[row]) = m_m(row) ; return ErrCode::success ; } ErrCode DecayTreeFitter::RecoComposite::initPar2(FitParams* fitparams) { if(vtxverbose>5){std::cout<<"RecoComposite::initPar2: - "<par()(indmap[row]) - m_m(row) ; p.r(row) = m_m(row) - fitparams->par()(indmap[row]) ; //RK turned sign. It's "measurement - step before". p.H(row,indmap[row]) = 1 ; for(int col=0; col6){ std::cout<<"RecoComposite::projectRecoComposite(): projection is:"<dim(),dimM()) ; projectRecoComposite(fitparams,p) ; return p.chiSquare() ; }