CMS 3D CMS Logo

Public Member Functions

VolumeMultipleScatteringEstimator Class Reference

#include <VolumeMultipleScatteringEstimator.h>

Inheritance diagram for VolumeMultipleScatteringEstimator:
VolumeMaterialEffectsEstimator

List of all members.

Public Member Functions

virtual
VolumeMultipleScatteringEstimator
clone () const
virtual
VolumeMaterialEffectsEstimate 
estimate (const TrajectoryStateOnSurface refTSOS, double pathLength, const VolumeMediumProperties &medium) const
 Creates an estimate.
 VolumeMultipleScatteringEstimator (float mass)
 Constructor with explicit mass hypothesis.
virtual ~VolumeMultipleScatteringEstimator ()

Detailed Description

Estimation of multiple scattering for a finite step size in a volume. Based on path length and medium properties; neglects "higher order effects" like magnetic field, orientation of the exit surface, etc.

Definition at line 17 of file VolumeMultipleScatteringEstimator.h.


Constructor & Destructor Documentation

VolumeMultipleScatteringEstimator::VolumeMultipleScatteringEstimator ( float  mass) [inline]

Constructor with explicit mass hypothesis.

Definition at line 21 of file VolumeMultipleScatteringEstimator.h.

Referenced by clone().

virtual VolumeMultipleScatteringEstimator::~VolumeMultipleScatteringEstimator ( ) [inline, virtual]

Definition at line 24 of file VolumeMultipleScatteringEstimator.h.

{}

Member Function Documentation

VolumeMultipleScatteringEstimator * VolumeMultipleScatteringEstimator::clone ( void  ) const [virtual]
VolumeMaterialEffectsEstimate VolumeMultipleScatteringEstimator::estimate ( const TrajectoryStateOnSurface  refTSOS,
double  pathLength,
const VolumeMediumProperties medium 
) const [virtual]

Creates an estimate.

Implements VolumeMaterialEffectsEstimator.

Definition at line 10 of file VolumeMultipleScatteringEstimator.cc.

References a, beta, TrajectoryStateOnSurface::localMomentum(), funct::log(), m, PV3DBase< T, PVType, FrameType >::mag(), VolumeMaterialEffectsEstimator::mass(), AlCaHLTBitMon_ParallelJobs::p, mathSSE::sqrt(), and VolumeMediumProperties::x0().

Referenced by NavPropagator::propagateInVolume(), and NavPropagator::propagateWithPath().

{
  //
  // Initialise the update to the covariance matrix
  // (dP is constantly 0).
  //
  AlgebraicSymMatrix55 deltaCov;        // assume initialization to 0 ...
  //
  // Now get information on medium
  //
  // Momentum vector
  double p = refTSOS.localMomentum().mag();
  // MediumProperties mp(0.02, .5e-4);
  // calculate general physics things
  const double amscon = 1.8496e-4;    // (13.6MeV)**2
  const double m = mass();            // use mass hypothesis from constructor
  double e     = sqrt(p*p + m*m);
  double beta  = p/e;
  // calculate the multiple scattering angle
  double radLen = pathLength / medium.x0(); // effective rad. length
  double sigth2 = 0.;                       // sigma(theta)
  if (radLen > 0) {
    double a = (1. + 0.038*log(radLen))/(beta*p);
    sigth2 = amscon*radLen*a*a;
  }
  // Create update (transformation of independant variations
  //   on positions and angles in a cartesian system 
  //   with z-axis parallel to the track.
  deltaCov(1,1) = deltaCov(2,2) = sigth2;
  deltaCov(3,3) = deltaCov(4,4) = sigth2/3.*pathLength*pathLength;
  deltaCov(1,3) = deltaCov(3,1) = 
    deltaCov(2,4) = deltaCov(4,2) = sigth2/2.;     // correlation of sqrt(3)/2
  return VolumeMaterialEffectsEstimate(0.,deltaCov);
}