CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/TrackingTools/TransientTrackingRecHit/src/HelpertRecHit2DLocalPos.cc

Go to the documentation of this file.
00001 #include "TrackingTools/TransientTrackingRecHit/interface/HelpertRecHit2DLocalPos.h"
00002 #include "DataFormats/GeometryCommonDetAlgo/interface/ErrorFrameTransformer.h"
00003 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
00004 #include "DataFormats/TrackingRecHit/interface/AlignmentPositionError.h"
00005 
00006 void
00007 HelpertRecHit2DLocalPos::updateWithAPE(LocalError& le, const GeomDet& det) {
00008   if ( det.alignmentPositionError() != 0) {
00009     LocalError lape =
00010       ErrorFrameTransformer().transform( det.alignmentPositionError()->globalError(),
00011                                          det.surface());
00012     le = LocalError(le.xx()+lape.xx(),
00013                     le.xy()+lape.xy(),
00014                     le.yy()+lape.yy());
00015   }
00016 }
00017 
00018 AlgebraicSymMatrix HelpertRecHit2DLocalPos::parError( const LocalError& le,
00019                                                       const GeomDet& det)
00020 {
00021   AlgebraicSymMatrix m(2);
00022   if ( det.alignmentPositionError() != 0) {
00023     LocalError lape =
00024       ErrorFrameTransformer().transform( det.alignmentPositionError()->globalError(),
00025                                          det.surface());
00026     m[0][0] = le.xx()+lape.xx();
00027     m[0][1] = le.xy()+lape.xy();
00028     m[1][1] = le.yy()+lape.yy();
00029   } else {
00030     m[0][0] = le.xx();
00031     m[0][1] = le.xy();
00032     m[1][1] = le.yy();
00033   };
00034   return m;
00035 }
00036 
00037 void
00038 HelpertRecHit2DLocalPos::getKfComponents(KfComponentsHolder & holder,
00039                                          const TrackingRecHit &hit2dLocalPos,
00040                                          const GeomDet& det)
00041 {
00042     hit2dLocalPos.getKfComponents(holder);
00043     if ( det.alignmentPositionError() != 0) {
00044         LocalError lape =
00045             ErrorFrameTransformer().transform( det.alignmentPositionError()->globalError(),
00046                     det.surface());
00047         AlgebraicSymMatrix22 &m = holder.errors<2>();
00048         m(0, 0) += lape.xx();
00049         m(0, 1) += lape.xy();
00050         m(1, 1) += lape.yy();
00051     }
00052 }
00053 
00054 void
00055 HelpertRecHit2DLocalPos::getKfComponents(KfComponentsHolder & holder,
00056                                          const SiStripRecHit1D& hit1D,
00057                                          const GeomDet& det)
00058 {
00059     hit1D.getKfComponents(holder);
00060     if ( det.alignmentPositionError() != 0) {
00061         LocalError lape =
00062             ErrorFrameTransformer().transform( det.alignmentPositionError()->globalError(),
00063                     det.surface());
00064         AlgebraicSymMatrix11 &m = holder.errors<1>();
00065         m(0, 0) += lape.xx();
00066     }
00067 }