CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SVTimeHelpers.h
Go to the documentation of this file.
1 #ifndef __RecoVertex_AdaptiveVertexFinder_SVTimeHelpers_h__
2 #define __RecoVertex_AdaptiveVertexFinder_SVTimeHelpers_h__
3 
6 
8 
9 namespace svhelper {
10 
11  inline void updateVertexTime(TransientVertex& vtx) {
12  const auto& trks = vtx.originalTracks();
13  double meantime = 0., expv_x2 = 0., normw = 0., timecov = 0.;
14  for (const auto& trk : trks) {
15  if (edm::isFinite(trk.timeExt())) {
16  const double time = trk.timeExt();
17  const double inverr = 1.0 / trk.dtErrorExt();
18  const double w = inverr * inverr;
19  meantime += time * w;
20  expv_x2 += time * time * w;
21  normw += w;
22  }
23  }
24  if (normw > 0.) {
25  meantime = meantime / normw;
26  expv_x2 = expv_x2 / normw;
27  timecov = expv_x2 - meantime * meantime;
28  auto err = vtx.positionError().matrix4D();
29  err(3, 3) = timecov / (double)trks.size();
30  vtx = TransientVertex(vtx.position(), meantime, err, vtx.originalTracks(), vtx.totalChiSquared());
31  }
32  }
33 } // namespace svhelper
34 
35 #endif
GlobalError positionError() const
float totalChiSquared() const
constexpr bool isFinite(T x)
const AlgebraicSymMatrix44 & matrix4D() const
std::vector< reco::TransientTrack > const & originalTracks() const
GlobalPoint position() const
void updateVertexTime(TransientVertex &vtx)
Definition: SVTimeHelpers.h:11
T w() const