TrackingTools
GsfTracking
src
GsfMultiStateUpdator.cc
Go to the documentation of this file.
1
#include "
TrackingTools/GsfTracking/interface/GsfMultiStateUpdator.h
"
2
#include "
TrackingTools/GsfTools/interface/GetComponents.h
"
3
#include "
TrackingTools/KalmanUpdators/interface/KFUpdator.h
"
4
#include "
TrackingTools/PatternTools/interface/MeasurementExtractor.h
"
5
#include "
TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h
"
6
#include "
DataFormats/GeometrySurface/interface/BoundPlane.h
"
7
#include "
TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h
"
8
#include "
TrackingTools/GsfTools/interface/BasicMultiTrajectoryState.h
"
9
#include "
TrackingTools/GsfTracking/interface/PosteriorWeightsCalculator.h
"
10
#include "
TrackingTools/GsfTools/interface/MultiTrajectoryStateAssembler.h
"
11
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
12
13
TrajectoryStateOnSurface
GsfMultiStateUpdator::update
(
const
TrajectoryStateOnSurface
& tsos,
14
const
TrackingRecHit
& aRecHit)
const
{
15
GetComponents
comps(tsos);
16
auto
const
& predictedComponents = comps();
17
if
(predictedComponents.empty()) {
18
edm::LogError
(
"GsfMultiStateUpdator"
) <<
"Trying to update trajectory state with zero components! "
;
19
return
TrajectoryStateOnSurface
();
20
}
21
22
auto
&&
weights
=
PosteriorWeightsCalculator
(predictedComponents).
weights
(aRecHit);
23
if
(
weights
.empty()) {
24
edm::LogError
(
"GsfMultiStateUpdator"
) <<
" no weights could be retreived. invalid updated state !."
;
25
return
TrajectoryStateOnSurface
();
26
}
27
28
MultiTrajectoryStateAssembler
result
;
29
30
int
i
= 0;
31
for
(
auto
const
& tsosI : predictedComponents) {
32
TrajectoryStateOnSurface
updatedTSOS =
KFUpdator
().
update
(tsosI, aRecHit);
33
34
if
(
double
det;
35
updatedTSOS.
isValid
() && updatedTSOS.
localError
().
valid
() && updatedTSOS.
localError
().
posDef
() &&
36
(det = 0., updatedTSOS.
curvilinearError
().
matrix
().Sub<
AlgebraicSymMatrix22
>(0, 0).
Det
(det) && det > 0) &&
37
(det = 0., updatedTSOS.
curvilinearError
().
matrix
().Sub<
AlgebraicSymMatrix33
>(0, 0).
Det
(det) && det > 0) &&
38
(det = 0., updatedTSOS.
curvilinearError
().
matrix
().Sub<
AlgebraicSymMatrix44
>(0, 0).
Det
(det) && det > 0) &&
39
(det = 0., updatedTSOS.
curvilinearError
().
matrix
().Det2(det) && det > 0)) {
40
result
.addState(
TrajectoryStateOnSurface
(
weights
[
i
],
41
updatedTSOS.
localParameters
(),
42
updatedTSOS.
localError
(),
43
updatedTSOS.
surface
(),
44
&(tsos.
globalParameters
().
magneticField
()),
45
tsosI.surfaceSide()));
46
}
else
{
47
edm::LogError
(
"GsfMultiStateUpdator"
) <<
"KF updated state "
<<
i
<<
" is invalid. skipping."
;
48
}
49
++
i
;
50
}
51
52
return
result
.combinedState();
53
}
GetComponents.h
KFUpdator
Definition:
KFUpdator.h:32
mps_fire.i
i
Definition:
mps_fire.py:429
PosteriorWeightsCalculator
Definition:
PosteriorWeightsCalculator.h:13
TrajectoryStateOnSurface::localError
const LocalTrajectoryError & localError() const
Definition:
TrajectoryStateOnSurface.h:77
MessageLogger.h
mps_fire.result
result
Definition:
mps_fire.py:311
TrajectoryStateOnSurface::globalParameters
const GlobalTrajectoryParameters & globalParameters() const
Definition:
TrajectoryStateOnSurface.h:64
BasicMultiTrajectoryState.h
Det
GeometricSearchDet Det
Definition:
DetBelowR.h:8
TrackingRecHit
Definition:
TrackingRecHit.h:21
TrajectoryStateOnSurface::localParameters
const LocalTrajectoryParameters & localParameters() const
Definition:
TrajectoryStateOnSurface.h:73
GsfMultiStateUpdator.h
edm::LogError
Log< level::Error, false > LogError
Definition:
MessageLogger.h:123
TrajectoryStateOnSurface
Definition:
TrajectoryStateOnSurface.h:16
TrajectoryStateOnSurface::surface
const SurfaceType & surface() const
Definition:
TrajectoryStateOnSurface.h:78
TransientTrackingRecHit.h
MultiTrajectoryStateAssembler.h
KFUpdator.h
KFUpdator::update
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
Definition:
KFUpdator.cc:177
BoundPlane.h
PosteriorWeightsCalculator::weights
std::vector< double > weights(const TrackingRecHit &tsos) const
Create random state.
Definition:
PosteriorWeightsCalculator.cc:11
hltDeepSecondaryVertexTagInfosPFPuppi_cfi.weights
weights
Definition:
hltDeepSecondaryVertexTagInfosPFPuppi_cfi.py:71
LocalTrajectoryError::valid
bool valid() const
Definition:
LocalTrajectoryError.h:32
AlgebraicSymMatrix44
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > AlgebraicSymMatrix44
Definition:
AlgebraicROOTObjects.h:22
TrajectoryStateOnSurface::curvilinearError
const CurvilinearTrajectoryError & curvilinearError() const
Definition:
TrajectoryStateOnSurface.h:72
CurvilinearTrajectoryError::matrix
const AlgebraicSymMatrix55 & matrix() const
Definition:
CurvilinearTrajectoryError.h:61
GlobalTrajectoryParameters::magneticField
const MagneticField & magneticField() const
Definition:
GlobalTrajectoryParameters.h:106
AlgebraicSymMatrix22
ROOT::Math::SMatrix< double, 2, 2, ROOT::Math::MatRepSym< double, 2 > > AlgebraicSymMatrix22
Definition:
AlgebraicROOTObjects.h:20
PosteriorWeightsCalculator.h
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition:
TrajectoryStateOnSurface.h:54
TrajectoryStateOnSurface.h
AlgebraicSymMatrix33
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33
Definition:
AlgebraicROOTObjects.h:21
MultiTrajectoryStateAssembler
Definition:
MultiTrajectoryStateAssembler.h:13
LocalTrajectoryError::posDef
bool posDef() const
Definition:
LocalTrajectoryError.h:35
GetComponents
Definition:
GetComponents.h:4
MeasurementExtractor.h
GsfMultiStateUpdator::update
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
Definition:
GsfMultiStateUpdator.cc:13
Generated for CMSSW Reference Manual by
1.8.14