00001 #ifndef ConstrainedTreeBuilder_H 00002 #define ConstrainedTreeBuilder_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h" 00006 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h" 00007 00015 class ConstrainedTreeBuilder 00016 { 00017 00018 public: 00019 00020 ConstrainedTreeBuilder(); 00021 00022 ~ConstrainedTreeBuilder(); 00023 00029 RefCountedKinematicTree buildTree(const std::vector<RefCountedKinematicParticle> & initialParticles, 00030 const std::vector<KinematicState> & finalStates, 00031 const RefCountedKinematicVertex vtx, const AlgebraicMatrix& fCov) const; 00032 00033 private: 00034 00035 RefCountedKinematicTree buildTree(const RefCountedKinematicParticle virtualParticle, 00036 const RefCountedKinematicVertex vtx, const std::vector<RefCountedKinematicParticle> & particles) const; 00037 00041 AlgebraicMatrix covarianceMatrix(std::vector<RefCountedKinematicParticle> rPart, 00042 const AlgebraicVector7& newPar, 00043 const AlgebraicMatrix& fitCov)const; 00044 00045 VirtualKinematicParticleFactory * pFactory; 00046 KinematicVertexFactory * vFactory; 00047 }; 00048 #endif