CMS 3D CMS Logo

GsfMaterialEffectsUpdator.cc
Go to the documentation of this file.
2 
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 
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;
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  //
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  //
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,
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