CMS 3D CMS Logo

List of all members | Public Member Functions
GsfMultiStateUpdator Class Reference

#include <GsfMultiStateUpdator.h>

Inheritance diagram for GsfMultiStateUpdator:
TrajectoryStateUpdator

Public Member Functions

GsfMultiStateUpdatorclone () const override
 
 GsfMultiStateUpdator ()
 
TrajectoryStateOnSurface update (const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
 
- Public Member Functions inherited from TrajectoryStateUpdator
 TrajectoryStateUpdator ()
 
virtual ~TrajectoryStateUpdator ()
 

Detailed Description

Class which updates a Gaussian mixture trajectory state with the information from a reconstructed hit according to the Gaussian-sum filter (GSF) strategy. The relevant formulas can be derived from those described in R. Fruhwirth, Computer Physics Communications 100 (1997), 1.

Definition at line 16 of file GsfMultiStateUpdator.h.

Constructor & Destructor Documentation

◆ GsfMultiStateUpdator()

GsfMultiStateUpdator::GsfMultiStateUpdator ( )
inline

Definition at line 18 of file GsfMultiStateUpdator.h.

Referenced by clone().

18 {}

Member Function Documentation

◆ clone()

GsfMultiStateUpdator* GsfMultiStateUpdator::clone ( void  ) const
inlineoverridevirtual

Implements TrajectoryStateUpdator.

Definition at line 22 of file GsfMultiStateUpdator.h.

References GsfMultiStateUpdator().

22 { return new GsfMultiStateUpdator(*this); }

◆ update()

TrajectoryStateOnSurface GsfMultiStateUpdator::update ( const TrajectoryStateOnSurface tsos,
const TrackingRecHit aRecHit 
) const
overridevirtual

Implements TrajectoryStateUpdator.

Definition at line 13 of file GsfMultiStateUpdator.cc.

References TrajectoryStateOnSurface::curvilinearError(), TrajectoryStateOnSurface::globalParameters(), mps_fire::i, TrajectoryStateOnSurface::isValid(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), GlobalTrajectoryParameters::magneticField(), CurvilinearTrajectoryError::matrix(), LocalTrajectoryError::posDef(), mps_fire::result, TrajectoryStateOnSurface::surface(), KFUpdator::update(), LocalTrajectoryError::valid(), PosteriorWeightsCalculator::weights(), and hltDeepSecondaryVertexTagInfosPFPuppi_cfi::weights.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), GsfConstraintAtVertex::constrainAtPoint(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

14  {
15  if (!tsos.isValid()) {
16  edm::LogError("GsfMultiStateUpdator") << "Trying to update trajectory state with invalid TSOS! ";
17  return TrajectoryStateOnSurface();
18  }
19 
20  GetComponents comps(tsos);
21  auto const& predictedComponents = comps();
22  if (predictedComponents.empty()) {
23  edm::LogError("GsfMultiStateUpdator") << "Trying to update trajectory state with zero components! ";
24  return TrajectoryStateOnSurface();
25  }
26 
27  auto&& weights = PosteriorWeightsCalculator(predictedComponents).weights(aRecHit);
28  if (weights.empty()) {
29  edm::LogError("GsfMultiStateUpdator") << " no weights could be retreived. invalid updated state !.";
30  return TrajectoryStateOnSurface();
31  }
32 
34 
35  int i = 0;
36  for (auto const& tsosI : predictedComponents) {
37  TrajectoryStateOnSurface updatedTSOS = KFUpdator().update(tsosI, aRecHit);
38 
39  if (double det;
40  updatedTSOS.isValid() && updatedTSOS.localError().valid() && updatedTSOS.localError().posDef() &&
41  (det = 0., updatedTSOS.curvilinearError().matrix().Sub<AlgebraicSymMatrix22>(0, 0).Det(det) && det > 0) &&
42  (det = 0., updatedTSOS.curvilinearError().matrix().Sub<AlgebraicSymMatrix33>(0, 0).Det(det) && det > 0) &&
43  (det = 0., updatedTSOS.curvilinearError().matrix().Sub<AlgebraicSymMatrix44>(0, 0).Det(det) && det > 0) &&
44  (det = 0., updatedTSOS.curvilinearError().matrix().Det2(det) && det > 0)) {
46  updatedTSOS.localParameters(),
47  updatedTSOS.localError(),
48  updatedTSOS.surface(),
49  &(tsos.globalParameters().magneticField()),
50  tsosI.surfaceSide()));
51  } else {
52  edm::LogError("GsfMultiStateUpdator") << "KF updated state " << i << " is invalid. skipping.";
53  }
54  ++i;
55  }
56 
57  return result.combinedState();
58 }
const LocalTrajectoryError & localError() const
const GlobalTrajectoryParameters & globalParameters() const
GeometricSearchDet Det
Definition: DetBelowR.h:8
const LocalTrajectoryParameters & localParameters() const
Log< level::Error, false > LogError
const SurfaceType & surface() const
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
Definition: KFUpdator.cc:177
std::vector< double > weights(const TrackingRecHit &tsos) const
Create random state.
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > AlgebraicSymMatrix44
const CurvilinearTrajectoryError & curvilinearError() const
const AlgebraicSymMatrix55 & matrix() const
const MagneticField & magneticField() const
ROOT::Math::SMatrix< double, 2, 2, ROOT::Math::MatRepSym< double, 2 > > AlgebraicSymMatrix22
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33