00001 #ifndef FinalTreeBuilder_H 00002 #define FinalTreeBuilder_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h" 00006 #include "RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h" 00007 #include "RecoVertex/VertexPrimitives/interface/CachingVertex.h" 00008 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h" 00009 #include "RecoVertex/KinematicFitPrimitives/interface/Matrices.h" 00010 00016 class FinalTreeBuilder{ 00017 00018 public: 00019 FinalTreeBuilder(); 00020 00021 ~FinalTreeBuilder(); 00022 00023 RefCountedKinematicTree buildTree(const CachingVertex<6>& vtx, 00024 vector<RefCountedKinematicParticle> input) const; 00025 00026 private: 00027 00028 typedef ReferenceCountingPointer<VertexTrack<6> > RefCountedVertexTrack; 00029 typedef ReferenceCountingPointer<LinearizedTrackState<6> > RefCountedLinearizedTrackState; 00030 typedef ReferenceCountingPointer<RefittedTrackState<6> > RefCountedRefittedTrackState; 00031 00032 //internal calculation and helper methods 00033 AlgebraicMatrix momentumPart(vector<KinematicRefittedTrackState *> rStates, 00034 const CachingVertex<6>& vtx, 00035 const AlgebraicVector7& par)const; 00036 00037 KinematicVertexFactory * kvFactory; 00038 VirtualKinematicParticleFactory * pFactory; 00039 }; 00040 00041 #endif