CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Protected Member Functions | Private Attributes
GsfMaterialEffectsUpdator Class Referenceabstract

#include <GsfMaterialEffectsUpdator.h>

Inheritance diagram for GsfMaterialEffectsUpdator:
GsfBetheHeitlerUpdator GsfCombinedMaterialEffectsUpdator GsfMaterialEffectsAdapter GsfMultipleScatteringUpdator

Public Types

typedef materialEffect::Covariance Covariance
 
typedef materialEffect::CovIndex CovIndex
 
typedef materialEffect::Effect Effect
 

Public Member Functions

virtual GsfMaterialEffectsUpdatorclone () const =0
 
virtual void compute (const TrajectoryStateOnSurface &, const PropagationDirection, Effect effects[]) const =0
 
 GsfMaterialEffectsUpdator (float mass, uint32_t is)
 
float mass () const
 
size_t size () const
 
virtual TrajectoryStateOnSurface updateState (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const
 
virtual ~GsfMaterialEffectsUpdator ()
 

Protected Member Functions

void resize (size_t is)
 

Private Attributes

uint32_t m_size
 
float theMass
 

Detailed Description

Interface for adding material effects during propagation as a Gaussian mixture. Similar to MaterialEffectsUpdator, but returns MultiTrajectoryState.

Definition at line 15 of file GsfMaterialEffectsUpdator.h.

Member Typedef Documentation

Definition at line 17 of file GsfMaterialEffectsUpdator.h.

Definition at line 19 of file GsfMaterialEffectsUpdator.h.

Definition at line 18 of file GsfMaterialEffectsUpdator.h.

Constructor & Destructor Documentation

GsfMaterialEffectsUpdator::GsfMaterialEffectsUpdator ( float  mass,
uint32_t  is 
)
inline

Constructor with explicit mass hypothesis

Definition at line 23 of file GsfMaterialEffectsUpdator.h.

virtual GsfMaterialEffectsUpdator::~GsfMaterialEffectsUpdator ( )
inlinevirtual

Definition at line 25 of file GsfMaterialEffectsUpdator.h.

25 {}

Member Function Documentation

virtual GsfMaterialEffectsUpdator* GsfMaterialEffectsUpdator::clone ( ) const
pure virtual
virtual void GsfMaterialEffectsUpdator::compute ( const TrajectoryStateOnSurface ,
const PropagationDirection  ,
Effect  effects[] 
) const
pure virtual
float GsfMaterialEffectsUpdator::mass ( ) const
inline

Particle mass assigned at construction.

Definition at line 35 of file GsfMaterialEffectsUpdator.h.

References theMass.

Referenced by Particle.Particle::__str__(), DiObject.DiMuon::__str__(), and GsfMultipleScatteringUpdator::compute().

void GsfMaterialEffectsUpdator::resize ( size_t  is)
inlineprotected

Definition at line 45 of file GsfMaterialEffectsUpdator.h.

References m_size.

Referenced by GsfBetheHeitlerUpdator::GsfBetheHeitlerUpdator().

size_t GsfMaterialEffectsUpdator::size ( void  ) const
inline
TrajectoryStateOnSurface GsfMaterialEffectsUpdator::updateState ( const TrajectoryStateOnSurface TSoS,
const PropagationDirection  propDir 
) const
virtual

Updates TrajectoryStateOnSurface with material effects (momentum and covariance matrix are potentially affected.

Definition at line 14 of file GsfMaterialEffectsUpdator.cc.

References MultiTrajectoryStateAssembler::addState(), SurfaceSideDefinition::afterSurface, alongMomentum, SurfaceSideDefinition::beforeSurface, MultiTrajectoryStateAssembler::combinedState(), bookConverter::compute(), ProxyBase11< T >::data(), materialEffect::elos, TrajectoryStateOnSurface::globalParameters(), TrajectoryStateOnSurface::hasError(), MediumProperties::isValid(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), LogDebug, GlobalTrajectoryParameters::magneticField(), LocalTrajectoryError::matrix(), Surface::mediumProperties(), mps_fire::result, TrajectoryStateOnSurface::singleState(), findQualityFiles::size, mathSSE::sqrt(), TrajectoryStateOnSurface::surface(), LocalTrajectoryParameters::updateP(), histoStyle::weight, and TrajectoryStateOnSurface::weight().

Referenced by FullConvolutionWithMaterial::operator()().

15  {
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 }
const LocalTrajectoryParameters & localParameters() const
void addState(const TrajectoryStateOnSurface)
const T & data() const
Definition: ProxyBase11.h:51
tuple result
Definition: mps_fire.py:311
const SurfaceType & surface() const
T sqrt(T t)
Definition: SSEVec.h:19
const AlgebraicSymMatrix55 & matrix() const
const LocalTrajectoryError & localError() const
const GlobalTrajectoryParameters & globalParameters() const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
virtual void compute(const TrajectoryStateOnSurface &, const PropagationDirection, Effect effects[]) const =0
const MagneticField & magneticField() const
int weight
Definition: histoStyle.py:51
bool isValid() const
const MediumProperties & mediumProperties() const
Definition: Surface.h:83
bool updateP(float dP)
Update of momentum by a scalar dP.
#define LogDebug(id)

Member Data Documentation

uint32_t GsfMaterialEffectsUpdator::m_size
private

Definition at line 49 of file GsfMaterialEffectsUpdator.h.

Referenced by resize(), and size().

float GsfMaterialEffectsUpdator::theMass
private

Definition at line 48 of file GsfMaterialEffectsUpdator.h.

Referenced by mass().