File indexing completed on 2023-03-17 11:17:10
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() {}
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
0033 const reco::Vertex &pv,
0034 const SV &sv,
0035 const GlobalVector &direction,
0036 bool withPVError);
0037 static Measurement1D computeDist3d(
0038
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 }
0052
0053 #endif