CMS 3D CMS Logo

MaterialEffectsUpdator Class Reference

Interface for adding material effects during propagation. More...

#include <TrackingTools/MaterialEffects/interface/MaterialEffectsUpdator.h>

Inheritance diagram for MaterialEffectsUpdator:

CombinedMaterialEffectsUpdator EnergyLossUpdator MultipleScatteringUpdator

List of all members.

Public Member Functions

virtual MaterialEffectsUpdatorclone () 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


Detailed Description

Interface for adding material effects during propagation.

Updates to TrajectoryStateOnSurface are implemented in this class. Ported from ORCA.

Date
2007/08/22 23:05:20
Revision
1.6
Author:
todorov, cerati

Definition at line 18 of file MaterialEffectsUpdator.h.


Constructor & Destructor Documentation

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.

00031 {}


Member Function Documentation

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().

00073                                                                                                 {
00074     return true;
00075   }

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.

00077                                                                                                   {
00078   }

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 }


Member Data Documentation

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]

Definition at line 81 of file MaterialEffectsUpdator.h.

Referenced by mass().

AlgebraicSymMatrix55 MaterialEffectsUpdator::theNullMatrix [static, protected]

Definition at line 87 of file MaterialEffectsUpdator.h.

Referenced by deltaLocalError().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:28:03 2009 for CMSSW by  doxygen 1.5.4