#include <TrackingTools/MaterialEffects/interface/MaterialEffectsUpdator.h>
Public Member Functions | |
virtual MaterialEffectsUpdator * | clone () const =0 |
virtual const AlgebraicSymMatrix55 & | deltaLocalError (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const |
Contribution to covariance matrix (in local co-ordinates) from material effects. | |
virtual double | deltaP (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const |
Change in |p| from material effects. | |
float | mass () const |
Particle mass assigned at construction. | |
MaterialEffectsUpdator (float mass) | |
Constructor with explicit mass hypothesis. | |
virtual TrajectoryStateOnSurface | updateState (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const |
Updates TrajectoryStateOnSurface with material effects (momentum and covariance matrix are potentially affected. | |
virtual | ~MaterialEffectsUpdator () |
Default constructor (mass from configurable). | |
Protected Member Functions | |
virtual bool | newArguments (const TrajectoryStateOnSurface &, const PropagationDirection) const |
virtual void | storeArguments (const TrajectoryStateOnSurface &, const PropagationDirection) const |
Protected Attributes | |
AlgebraicSymMatrix55 | theDeltaCov |
double | theDeltaP |
Static Protected Attributes | |
static AlgebraicSymMatrix55 | theNullMatrix |
Private Member Functions | |
virtual void | compute (const TrajectoryStateOnSurface &, const PropagationDirection) const =0 |
Private Attributes | |
float | theMass |
Updates to TrajectoryStateOnSurface are implemented in this class. Ported from ORCA.
Definition at line 18 of file MaterialEffectsUpdator.h.
MaterialEffectsUpdator::MaterialEffectsUpdator | ( | float | mass | ) | [inline] |
Constructor with explicit mass hypothesis.
Definition at line 23 of file MaterialEffectsUpdator.h.
00023 : 00024 theMass(mass), 00025 theDeltaP(0.), 00026 theDeltaCov() {}
virtual MaterialEffectsUpdator::~MaterialEffectsUpdator | ( | ) | [inline, virtual] |
Default constructor (mass from configurable).
Definition at line 31 of file MaterialEffectsUpdator.h.
virtual MaterialEffectsUpdator* MaterialEffectsUpdator::clone | ( | ) | const [pure virtual] |
Implemented in CombinedMaterialEffectsUpdator, EnergyLossUpdator, and MultipleScatteringUpdator.
virtual void MaterialEffectsUpdator::compute | ( | const TrajectoryStateOnSurface & | , | |
const | PropagationDirection | |||
) | const [private, pure virtual] |
Implemented in CombinedMaterialEffectsUpdator, EnergyLossUpdator, and MultipleScatteringUpdator.
Referenced by deltaLocalError(), and deltaP().
virtual const AlgebraicSymMatrix55& MaterialEffectsUpdator::deltaLocalError | ( | const TrajectoryStateOnSurface & | TSoS, | |
const PropagationDirection | propDir | |||
) | const [inline, virtual] |
Contribution to covariance matrix (in local co-ordinates) from material effects.
Definition at line 51 of file MaterialEffectsUpdator.h.
References compute(), Surface::mediumProperties(), newArguments(), TrajectoryStateOnSurface::surface(), theDeltaCov, and theNullMatrix.
Referenced by CombinedMaterialEffectsUpdator::compute(), and updateState().
00052 { 00053 // check for material 00054 if ( !TSoS.surface().mediumProperties() ) return theNullMatrix; 00055 // check for change (avoid using compute method if possible) 00056 if ( newArguments(TSoS,propDir) ) compute(TSoS,propDir); 00057 return theDeltaCov; 00058 }
virtual double MaterialEffectsUpdator::deltaP | ( | const TrajectoryStateOnSurface & | TSoS, | |
const PropagationDirection | propDir | |||
) | const [inline, virtual] |
Change in |p| from material effects.
Reimplemented in MultipleScatteringUpdator.
Definition at line 40 of file MaterialEffectsUpdator.h.
References compute(), Surface::mediumProperties(), newArguments(), TrajectoryStateOnSurface::surface(), and theDeltaP.
Referenced by CombinedMaterialEffectsUpdator::compute(), and updateState().
00040 { 00041 // check for material 00042 if ( !TSoS.surface().mediumProperties() ) return 0.; 00043 // check for change (avoid using compute method if possible) 00044 if ( newArguments(TSoS,propDir) ) compute(TSoS,propDir); 00045 return theDeltaP; 00046 }
float MaterialEffectsUpdator::mass | ( | ) | const [inline] |
Particle mass assigned at construction.
Definition at line 61 of file MaterialEffectsUpdator.h.
References theMass.
Referenced by MultipleScatteringUpdator::compute(), EnergyLossUpdator::compute(), and EnergyLossUpdator::computeBetheBloch().
00061 { 00062 return theMass; 00063 }
virtual bool MaterialEffectsUpdator::newArguments | ( | const TrajectoryStateOnSurface & | , | |
const | PropagationDirection | |||
) | const [inline, protected, virtual] |
Reimplemented in EnergyLossUpdator, and MultipleScatteringUpdator.
Definition at line 73 of file MaterialEffectsUpdator.h.
Referenced by deltaLocalError(), and deltaP().
virtual void MaterialEffectsUpdator::storeArguments | ( | const TrajectoryStateOnSurface & | , | |
const | PropagationDirection | |||
) | const [inline, protected, virtual] |
Reimplemented in EnergyLossUpdator, and MultipleScatteringUpdator.
Definition at line 77 of file MaterialEffectsUpdator.h.
TrajectoryStateOnSurface MaterialEffectsUpdator::updateState | ( | const TrajectoryStateOnSurface & | TSoS, | |
const PropagationDirection | propDir | |||
) | const [virtual] |
Updates TrajectoryStateOnSurface with material effects (momentum and covariance matrix are potentially affected.
Definition at line 11 of file MaterialEffectsUpdator.cc.
References SurfaceSideDefinition::afterSurface, alongMomentum, anyDirection, SurfaceSideDefinition::atCenterOfSurface, SurfaceSideDefinition::beforeSurface, deltaLocalError(), deltaP(), TrajectoryStateOnSurface::globalParameters(), TrajectoryStateOnSurface::hasError(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), lp, GlobalTrajectoryParameters::magneticField(), LocalTrajectoryError::matrix(), Surface::mediumProperties(), oppositeToMomentum, TrajectoryStateOnSurface::surface(), TrajectoryStateOnSurface::surfaceSide(), and LocalTrajectoryParameters::updateP().
Referenced by ReferenceTrajectory::construct().
00012 { 00013 // 00014 // Check if 00015 // - material is associated to surface 00016 // - propagation direction is not anyDirection 00017 // - side of surface is not atCenterOfSurface (could be handled with 50% material?) 00018 // 00019 const Surface& surface = TSoS.surface(); 00020 if ( !surface.mediumProperties() || propDir==anyDirection || 00021 TSoS.surfaceSide()==atCenterOfSurface ) return TSoS; 00022 // 00023 // Check, if already on right side of surface 00024 // 00025 if ( (propDir==alongMomentum && TSoS.surfaceSide()==afterSurface ) || 00026 (propDir==oppositeToMomentum && TSoS.surfaceSide()==beforeSurface ) ) return TSoS; 00027 // 00028 // Update momentum. In case of failure: return invalid state 00029 // 00030 LocalTrajectoryParameters lp = TSoS.localParameters(); 00031 if ( !lp.updateP(deltaP(TSoS,propDir)) ) 00032 return TrajectoryStateOnSurface(); 00033 // 00034 // Update covariance matrix? 00035 // 00036 SurfaceSide side = propDir==alongMomentum ? afterSurface : beforeSurface; 00037 if ( TSoS.hasError() ) { 00038 AlgebraicSymMatrix55 eloc = TSoS.localError().matrix() + deltaLocalError(TSoS,propDir); 00039 return TrajectoryStateOnSurface(lp,LocalTrajectoryError(eloc),surface, 00040 &(TSoS.globalParameters().magneticField()),side); 00041 } 00042 else { 00043 return TrajectoryStateOnSurface(lp,surface,&(TSoS.globalParameters().magneticField()),side); 00044 } 00045 }
AlgebraicSymMatrix55 MaterialEffectsUpdator::theDeltaCov [mutable, protected] |
Definition at line 86 of file MaterialEffectsUpdator.h.
Referenced by MultipleScatteringUpdator::compute(), CombinedMaterialEffectsUpdator::compute(), EnergyLossUpdator::compute(), EnergyLossUpdator::computeBetheBloch(), EnergyLossUpdator::computeElectrons(), and deltaLocalError().
double MaterialEffectsUpdator::theDeltaP [mutable, protected] |
Definition at line 85 of file MaterialEffectsUpdator.h.
Referenced by CombinedMaterialEffectsUpdator::compute(), EnergyLossUpdator::compute(), EnergyLossUpdator::computeBetheBloch(), EnergyLossUpdator::computeElectrons(), and deltaP().
float MaterialEffectsUpdator::theMass [private] |
AlgebraicSymMatrix55 MaterialEffectsUpdator::theNullMatrix [static, protected] |