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
00016
00017
00018 AlgebraicSymMatrix55 deltaCov;
00019
00020
00021
00022
00023 double p = refTSOS.localMomentum().mag();
00024
00025
00026 const double amscon = 1.8496e-4;
00027 const double m = mass();
00028 double e = sqrt(p*p + m*m);
00029 double beta = p/e;
00030
00031 double radLen = pathLength / medium.x0();
00032 double sigth2 = 0.;
00033 if (radLen > 0) {
00034 double a = (1. + 0.038*log(radLen))/(beta*p);
00035 sigth2 = amscon*radLen*a*a;
00036 }
00037
00038
00039
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.;
00044 return VolumeMaterialEffectsEstimate(0.,deltaCov);
00045 }
00046
00047 VolumeMultipleScatteringEstimator*
00048 VolumeMultipleScatteringEstimator::clone () const
00049 {
00050 return new VolumeMultipleScatteringEstimator(*this);
00051 }