CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
deep_helpers.cc
Go to the documentation of this file.
2 
3 namespace btagbtvdeep {
4 
5  // remove infs and NaNs with value (adapted from DeepNTuples)
6  const float catch_infs(const float in,
7  const float replace_value) {
8  if(in==in){ // check if NaN
9  if(std::isinf(in))
10  return replace_value;
11  else if(in < -1e32 || in > 1e32)
12  return replace_value;
13  return in;
14  }
15  return replace_value;
16  }
17 
18  // remove infs/NaN and bound (adapted from DeepNTuples)
19  const float catch_infs_and_bound(const float in,
20  const float replace_value,
21  const float lowerbound,
22  const float upperbound,
23  const float offset,
24  const bool use_offsets){
25  float withoutinfs=catch_infs(in,replace_value);
26  if(withoutinfs+offset<lowerbound) return lowerbound;
27  if(withoutinfs+offset>upperbound) return upperbound;
28  if(use_offsets)
29  withoutinfs+=offset;
30  return withoutinfs;
31  }
32 
33 
34  // 2D distance between SV and PV (adapted from DeepNTuples)
36  VertexDistanceXY dist;
38  reco::Vertex svtx(svcand.vertex(), csv);
39  return dist.distance(svtx, pv);
40  }
41 
42  //3D distance between SV and PV (adapted from DeepNTuples)
44  VertexDistance3D dist;
46  reco::Vertex svtx(svcand.vertex(), csv);
47  return dist.distance(svtx, pv);
48  }
49 
50  // dot product between SV and PV (adapted from DeepNTuples)
53  reco::Candidate::Vector d(sv.vx() - pv.x(), sv.vy() - pv.y(), sv.vz() - pv.z());
54  return p.Unit().Dot(d.Unit());
55  }
56 
57  // compute minimum dr between SVs and a candidate (from DeepNTuples, now polymorphic)
58  float mindrsvpfcand(const std::vector<reco::VertexCompositePtrCandidate> & svs,
59  const reco::Candidate* cand, float mindr) {
60 
61  for (unsigned int i0=0; i0<svs.size(); ++i0) {
62 
63  float tempdr = reco::deltaR(svs[i0],*cand);
64  if (tempdr<mindr) { mindr = tempdr; }
65 
66  }
67  return mindr;
68  }
69 
70  // instantiate template
71  template bool sv_vertex_comparator<reco::VertexCompositePtrCandidate, reco::Vertex>(const reco::VertexCompositePtrCandidate&,
72  const reco::VertexCompositePtrCandidate&,
73  const reco::Vertex&);
74 
75 }
virtual void fillVertexCovariance(CovarianceMatrix &v) const
fill SMatrix
float vertexDdotP(const reco::VertexCompositePtrCandidate &sv, const reco::Vertex &pv)
Definition: deep_helpers.cc:51
Measurement1D vertexD3d(const reco::VertexCompositePtrCandidate &svcand, const reco::Vertex &pv)
Definition: deep_helpers.cc:43
math::XYZVector Vector
point in the space
Definition: Candidate.h:43
double vy() const override
y coordinate of vertex position
double y() const
y coordinate
Definition: Vertex.h:113
math::Error< dimension >::type CovarianceMatrix
covariance error matrix (3x3)
Definition: Vertex.h:45
Measurement1D distance(const GlobalPoint &vtx1Position, const GlobalError &vtx1PositionError, const GlobalPoint &vtx2Position, const GlobalError &vtx2PositionError) const override
const float catch_infs_and_bound(const float in, const float replace_value, const float lowerbound, const float upperbound, const float offset=0., const bool use_offsets=true)
Definition: deep_helpers.cc:19
Vector momentum() const final
spatial momentum vector
Measurement1D distance(const GlobalPoint &vtx1Position, const GlobalError &vtx1PositionError, const GlobalPoint &vtx2Position, const GlobalError &vtx2PositionError) const override
float mindrsvpfcand(const std::vector< reco::VertexCompositePtrCandidate > &svs, const reco::Candidate *cand, float mindr=0.4)
Definition: deep_helpers.cc:58
Measurement1D vertexDxy(const reco::VertexCompositePtrCandidate &svcand, const reco::Vertex &pv)
Definition: deep_helpers.cc:35
const Point & vertex() const override
vertex position (overwritten by PF...)
def pv(vc)
Definition: MetAnalyzer.py:6
double z() const
z coordinate
Definition: Vertex.h:115
auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:28
double vz() const override
z coordinate of vertex position
double x() const
x coordinate
Definition: Vertex.h:111
const float catch_infs(const float in, const float replace_value)
Definition: deep_helpers.cc:6
double vx() const override
x coordinate of vertex position