TrackingTools
GsfTracking
src
GsfMaterialEffectsUpdator.cc
Go to the documentation of this file.
1
#include "
TrackingTools/GsfTracking/interface/GsfMaterialEffectsUpdator.h
"
2
3
#include "
TrackingTools/GsfTools/interface/MultiTrajectoryStateAssembler.h
"
4
#include "
TrackingTools/TrajectoryState/interface/SurfaceSideDefinition.h
"
5
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
6
#include "
FWCore/Utilities/interface/Exception.h
"
7
//
8
// Update of the trajectory state (implemented in base class since general for
9
// all classes returning deltaPs and deltaCovs.
10
//
11
12
using namespace
SurfaceSideDefinition
;
13
14
TrajectoryStateOnSurface
GsfMaterialEffectsUpdator::updateState
(
const
TrajectoryStateOnSurface
& TSoS,
15
const
PropagationDirection
propDir)
const
{
16
//
17
// get components of input state and check if material is associated to surface
18
//
19
const
Surface
& surface = TSoS.
surface
();
20
if
(!surface.
mediumProperties
().
isValid
())
21
return
TSoS;
22
SurfaceSide
side = propDir ==
alongMomentum
?
afterSurface
:
beforeSurface
;
23
// single input state?
24
if
(!TSoS.
singleState
())
25
throw
cms::Exception
(
"LogicError"
) <<
"GsfMaterialEffectsUpdator::updateState used with MultiTSOS"
;
26
auto
weight
= TSoS.
weight
();
27
//
28
// Get components (will force recalculation, if necessary)
29
//
30
#if __clang__
31
std::vector<Effect> effects(
size
());
32
compute
(TSoS, propDir, effects.
data
());
33
#else
34
Effect
effects[
size
()];
35
compute
(TSoS, propDir, effects);
36
#endif
37
38
//
39
// prepare output vector
40
//
41
MultiTrajectoryStateAssembler
result
;
42
//
43
// loop over components
44
//
45
LogDebug
(
"GsfMaterialEffectsUpdator"
) <<
"found "
<<
size
() <<
" components "
46
<<
" input state has weight "
<< TSoS.
weight
();
47
for
(
auto
const
& effect : effects) {
48
LogDebug
(
"GsfMaterialEffectsUpdatorDETAIL"
) <<
"w, dp, sigp = "
<< effect.weight <<
", "
<< effect.deltaP <<
", "
49
<<
std::sqrt
(effect.deltaCov[
materialEffect::elos
]);
50
//
51
// Update momentum. In case of failure: return invalid state.
52
// Use deltaP method to ensure update of cache, if necessary!
53
//
54
LocalTrajectoryParameters
lp = TSoS.
localParameters
();
55
if
(!lp.
updateP
(effect.deltaP))
56
return
TrajectoryStateOnSurface
();
57
//
58
// Update covariance matrix?
59
//
60
if
(TSoS.
hasError
()) {
61
AlgebraicSymMatrix55
eloc = TSoS.
localError
().
matrix
();
62
effect.deltaCov.add(eloc);
63
result
.addState(
TrajectoryStateOnSurface
(
weight
* effect.weight,
64
lp,
65
LocalTrajectoryError
(eloc),
66
surface,
67
&(TSoS.
globalParameters
().
magneticField
()),
68
side));
69
LogDebug
(
"GsfMaterialEffectsUpdatorDETAIL"
) <<
"adding state with weight "
<<
weight
* effect.weight;
70
}
else
{
71
result
.addState(
TrajectoryStateOnSurface
(lp, surface, &(TSoS.
globalParameters
().
magneticField
()), side));
72
}
73
}
74
LogDebug
(
"GsfMaterialEffectsUpdator"
) <<
" output state has weight "
<<
result
.combinedState().weight();
75
return
result
.combinedState();
76
}
MessageLogger.h
materialEffect::Effect
Definition:
MaterialEffectsUpdator.h:40
MultiTrajectoryStateAssembler
Definition:
MultiTrajectoryStateAssembler.h:13
Surface
Definition:
Surface.h:36
SurfaceSideDefinition::SurfaceSide
SurfaceSide
Definition:
SurfaceSideDefinition.h:8
SurfaceSideDefinition::afterSurface
Definition:
SurfaceSideDefinition.h:8
bookConverter.compute
def compute(min, max)
Definition:
bookConverter.py:106
LocalTrajectoryError::matrix
const AlgebraicSymMatrix55 & matrix() const
Definition:
LocalTrajectoryError.h:60
materialEffect::elos
Definition:
MaterialEffectsUpdator.h:19
Surface::mediumProperties
const MediumProperties & mediumProperties() const
Definition:
Surface.h:83
LocalTrajectoryParameters
Definition:
LocalTrajectoryParameters.h:25
TrajectoryStateOnSurface
Definition:
TrajectoryStateOnSurface.h:16
TrajectoryStateOnSurface::hasError
bool hasError() const
Definition:
TrajectoryStateOnSurface.h:56
SurfaceSideDefinition::beforeSurface
Definition:
SurfaceSideDefinition.h:8
mathSSE::sqrt
T sqrt(T t)
Definition:
SSEVec.h:19
TrajectoryStateOnSurface::weight
double weight() const
Definition:
TrajectoryStateOnSurface.h:80
LocalTrajectoryParameters::updateP
bool updateP(float dP)
Update of momentum by a scalar dP.
Definition:
LocalTrajectoryParameters.h:149
MultiTrajectoryStateAssembler.h
TrajectoryStateOnSurface::localParameters
const LocalTrajectoryParameters & localParameters() const
Definition:
TrajectoryStateOnSurface.h:73
SurfaceSideDefinition.h
LocalTrajectoryError
Definition:
LocalTrajectoryError.h:20
LogDebug
#define LogDebug(id)
Definition:
MessageLogger.h:233
SurfaceSideDefinition
Definition:
SurfaceSideDefinition.h:7
MediumProperties::isValid
bool isValid() const
Definition:
MediumProperties.h:26
PropagationDirection
PropagationDirection
Definition:
PropagationDirection.h:4
TrajectoryStateOnSurface::singleState
bool singleState() const
Definition:
TrajectoryStateOnSurface.h:86
ProxyBase11::data
const T & data() const
Definition:
ProxyBase11.h:51
Exception.h
GlobalTrajectoryParameters::magneticField
const MagneticField & magneticField() const
Definition:
GlobalTrajectoryParameters.h:106
GsfMaterialEffectsUpdator::updateState
virtual TrajectoryStateOnSurface updateState(const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const
Definition:
GsfMaterialEffectsUpdator.cc:14
TrajectoryStateOnSurface::surface
const SurfaceType & surface() const
Definition:
TrajectoryStateOnSurface.h:78
mps_fire.result
result
Definition:
mps_fire.py:311
GsfMaterialEffectsUpdator.h
cms::Exception
Definition:
Exception.h:70
TrajectoryStateOnSurface::globalParameters
const GlobalTrajectoryParameters & globalParameters() const
Definition:
TrajectoryStateOnSurface.h:64
TrajectoryStateOnSurface::localError
const LocalTrajectoryError & localError() const
Definition:
TrajectoryStateOnSurface.h:77
AlgebraicSymMatrix55
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
Definition:
AlgebraicROOTObjects.h:23
alongMomentum
Definition:
PropagationDirection.h:4
weight
Definition:
weight.py:1
findQualityFiles.size
size
Write out results.
Definition:
findQualityFiles.py:443
Generated for CMSSW Reference Manual by
1.8.16