CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/src/TrackingTools/MaterialEffects/src/VolumeMultipleScatteringEstimator.cc

Go to the documentation of this file.
00001 #include "TrackingTools/MaterialEffects/interface/VolumeMultipleScatteringEstimator.h"
00002 
00003 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00004 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00005 #include "TrackingTools/MaterialEffects/interface/VolumeMaterialEffectsEstimator.h"
00006 #include "TrackingTools/MaterialEffects/interface/VolumeMaterialEffectsEstimate.h"
00007 #include "TrackingTools/MaterialEffects/interface/VolumeMediumProperties.h"
00008 
00009 VolumeMaterialEffectsEstimate 
00010 VolumeMultipleScatteringEstimator::estimate (const TrajectoryStateOnSurface refTSOS,
00011                                              double pathLength,
00012                                              const VolumeMediumProperties& medium) const
00013 {
00014   //
00015   // Initialise the update to the covariance matrix
00016   // (dP is constantly 0).
00017   //
00018   AlgebraicSymMatrix55 deltaCov;        // assume initialization to 0 ...
00019   //
00020   // Now get information on medium
00021   //
00022   // Momentum vector
00023   double p = refTSOS.localMomentum().mag();
00024   // MediumProperties mp(0.02, .5e-4);
00025   // calculate general physics things
00026   const double amscon = 1.8496e-4;    // (13.6MeV)**2
00027   const double m = mass();            // use mass hypothesis from constructor
00028   double e     = sqrt(p*p + m*m);
00029   double beta  = p/e;
00030   // calculate the multiple scattering angle
00031   double radLen = pathLength / medium.x0(); // effective rad. length
00032   double sigth2 = 0.;                       // sigma(theta)
00033   if (radLen > 0) {
00034     double a = (1. + 0.038*log(radLen))/(beta*p);
00035     sigth2 = amscon*radLen*a*a;
00036   }
00037   // Create update (transformation of independant variations
00038   //   on positions and angles in a cartesian system 
00039   //   with z-axis parallel to the track.
00040   deltaCov(1,1) = deltaCov(2,2) = sigth2;
00041   deltaCov(3,3) = deltaCov(4,4) = sigth2/3.*pathLength*pathLength;
00042   deltaCov(1,3) = deltaCov(3,1) = 
00043     deltaCov(2,4) = deltaCov(4,2) = sigth2/2.;     // correlation of sqrt(3)/2
00044   return VolumeMaterialEffectsEstimate(0.,deltaCov);
00045 }
00046 
00047 VolumeMultipleScatteringEstimator*
00048 VolumeMultipleScatteringEstimator::clone () const
00049 {
00050   return new VolumeMultipleScatteringEstimator(*this);
00051 }