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 }