Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:24:32

0001 #ifndef RecoBTag_SecondaryVertex_TemplatedSecondaryVertex_h
0002 #define RecoBTag_SecondaryVertex_TemplatedSecondaryVertex_h
0003 
0004 #include "DataFormats/GeometryCommonDetAlgo/interface/Measurement1D.h"
0005 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0006 #include "DataFormats/VertexReco/interface/Vertex.h"
0007 
0008 namespace reco {
0009 
0010   template <class SV>
0011   class TemplatedSecondaryVertex : public SV {
0012   public:
0013     TemplatedSecondaryVertex() {}
0014     TemplatedSecondaryVertex(const reco::Vertex &pv,
0015                              const SV &sv,
0016                              const GlobalVector &direction,
0017                              bool withPVError = false)
0018         : SV(sv),
0019           dist1d_(computeDist1d(pv, sv, direction, withPVError)),
0020           dist2d_(computeDist2d(pv, sv, direction, withPVError)),
0021           dist3d_(computeDist3d(pv, sv, direction, withPVError)) {}
0022 
0023     ~TemplatedSecondaryVertex() {}  //NOLINT
0024     inline Measurement1D dist1d() const { return dist1d_; }
0025     inline Measurement1D dist2d() const { return dist2d_; }
0026     inline Measurement1D dist3d() const { return dist3d_; }
0027     static Measurement1D computeDist1d(const reco::Vertex &pv,
0028                                        const SV &sv,
0029                                        const GlobalVector &direction,
0030                                        bool withPVError);
0031     static Measurement1D computeDist2d(
0032         //      const reco::Vertex &pv, const reco::Vertex &sv,
0033         const reco::Vertex &pv,
0034         const SV &sv,
0035         const GlobalVector &direction,
0036         bool withPVError);
0037     static Measurement1D computeDist3d(
0038         //      const reco::Vertex &pv, const reco::Vertex &sv,
0039         const reco::Vertex &pv,
0040         const SV &sv,
0041         const GlobalVector &direction,
0042         bool withPVError);
0043     operator reco::Vertex();
0044 
0045   private:
0046     Measurement1D dist1d_;
0047     Measurement1D dist2d_;
0048     Measurement1D dist3d_;
0049   };
0050 
0051 }  // namespace reco
0052 
0053 #endif  // RecoBTag_SecondaryVertex_TemplatedSecondaryVertex_h