00001 #include "TrackingTools/KalmanUpdators/interface/Strip1DMeasurementTransformator.h" 00002 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" 00003 00004 Strip1DMeasurementTransformator::Strip1DMeasurementTransformator(const TSOS& tsos, 00005 const TransientTrackingRecHit& hit) : 00006 theRecHit(hit), 00007 theState(tsos), 00008 theTopology(0) { 00009 00010 init(); 00011 } 00012 00013 void Strip1DMeasurementTransformator::init() { 00014 00015 theTopology = 00016 dynamic_cast<const StripTopology*>(&(hit().detUnit()->topology())); 00017 } 00018 00019 double Strip1DMeasurementTransformator::hitParameters() const { 00020 00021 return topology()->measurementPosition(hit().localPosition()).x(); 00022 } 00023 00024 AlgebraicVector5 Strip1DMeasurementTransformator::trajectoryParameters() const { 00025 00026 return state().localParameters().vector(); 00027 } 00028 00029 double Strip1DMeasurementTransformator::projectedTrajectoryParameters() const { 00030 00031 return topology()->measurementPosition(state().localPosition()).x(); 00032 } 00033 00034 double Strip1DMeasurementTransformator::hitError() const { 00035 00036 return 00037 topology()->measurementError(hit().localPosition(), 00038 hit().localPositionError()).uu(); 00039 } 00040 00041 const AlgebraicSymMatrix55 & Strip1DMeasurementTransformator::trajectoryError() const { 00042 00043 return state().localError().matrix(); 00044 } 00045 00046 double Strip1DMeasurementTransformator::projectedTrajectoryError() const { 00047 00048 return 00049 topology()->measurementError(state().localPosition(), 00050 state().localError().positionError()).uu(); 00051 } 00052 00053 AlgebraicMatrix15 Strip1DMeasurementTransformator::projectionMatrix() const { 00054 00055 // H(measurement <- local) 00056 // m_meas = H*x_local + c 00057 AlgebraicMatrix15 H; 00058 00059 double phi = 00060 topology()->stripAngle(topology()->strip(state().localPosition())); 00061 double pitch = topology()->localPitch(state().localPosition()); 00062 H(0,3) = cos(phi)/pitch; H(0,4) = sin(phi)/pitch; 00063 00064 return H; 00065 } 00066 00067 00068 00069 00070 00071