CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/RecoVertex/VertexTools/interface/InvariantMassFromVertex.h

Go to the documentation of this file.
00001 #ifndef InvariantMassFromVertex_H
00002 #define InvariantMassFromVertex_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 #include "DataFormats/GeometryCommonDetAlgo/interface/Measurement1D.h"
00011 #include "DataFormats/Math/interface/LorentzVector.h"
00012 #include "Math/Vector4D.h"
00013 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
00014 
00020 class InvariantMassFromVertex{
00021 
00022 public:
00023   typedef ROOT::Math::PxPyPzMVector LorentzVector;
00024 
00025   Measurement1D invariantMass(const CachingVertex<5>& vertex,
00026                           const std::vector<double> & masses) const;
00027 
00028   Measurement1D invariantMass(const CachingVertex<5>& vertex,
00029                           const double mass) const;
00030 
00034   LorentzVector p4 (const CachingVertex<5>& vertex,
00035                           const std::vector<double> & masses) const;
00036 
00040   LorentzVector p4 (const CachingVertex<5>& vertex,
00041                           const double mass) const;
00042 
00043   GlobalVector momentum(const CachingVertex<5>& vertex) const;
00044 
00045 
00046 private:
00047 
00048  typedef ReferenceCountingPointer<VertexTrack<5> > RefCountedVertexTrack;
00049  typedef ReferenceCountingPointer<LinearizedTrackState<5> > RefCountedLinearizedTrackState;
00050  typedef ReferenceCountingPointer<RefittedTrackState<5> > RefCountedRefittedTrackState;
00051 
00052   double uncertainty(const LorentzVector & p4, const CachingVertex<5>& vertex,
00053         const std::vector<double> & masses) const;
00054 };
00055 
00056 #endif