CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/TrackingTools/TransientTrackingRecHit/src/TransientTrackingRecHit.cc

Go to the documentation of this file.
00001 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
00002 #include "DataFormats/GeometryCommonDetAlgo/interface/ErrorFrameTransformer.h"
00003 
00004 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h"
00005 
00006 const GeomDetUnit * TransientTrackingRecHit::detUnit() const
00007 {
00008   return dynamic_cast<const GeomDetUnit*>(det());
00009 }
00010 
00011 
00012 GlobalPoint TransientTrackingRecHit::globalPosition() const {
00013   if(! hasGlobalPosition_){
00014     globalPosition_ = surface()->toGlobal(localPosition());
00015     hasGlobalPosition_ = true;
00016     return globalPosition_;
00017   }else{
00018     return globalPosition_;
00019   }
00020 }
00021 
00022 GlobalError TransientTrackingRecHit::globalPositionError() const {
00023   if(! hasGlobalError_){
00024     setPositionErrors();
00025     return globalError_;
00026   }else{
00027     return globalError_;
00028   }
00029 
00030 }   
00031 
00032 float 
00033 TransientTrackingRecHit::errorGlobalR() const {
00034   if(!hasGlobalError_){
00035     setPositionErrors();
00036     return errorR_;
00037   }else{
00038     return errorR_;
00039   }
00040 }
00041 
00042 float 
00043 TransientTrackingRecHit::errorGlobalZ() const {
00044   if(!hasGlobalError_){
00045     setPositionErrors();
00046     return errorZ_;
00047   }else{
00048     return errorZ_;
00049   }
00050 }
00051 
00052 float 
00053 TransientTrackingRecHit::errorGlobalRPhi() const {
00054   if(!hasGlobalError_){
00055     setPositionErrors();
00056     return errorRPhi_;
00057   }else{
00058     return errorRPhi_;
00059   }
00060 }
00061 
00062 void
00063 TransientTrackingRecHit::setPositionErrors() const {
00064   globalError_ = ErrorFrameTransformer().transform( localPositionError(), *surface() );
00065   errorRPhi_ = globalPosition().perp()*sqrt(globalError_.phierr(globalPosition())); 
00066   errorR_ = sqrt(globalError_.rerr(globalPosition()));
00067   errorZ_ = sqrt(globalError_.czz());
00068   hasGlobalError_ = true;
00069 }
00070 
00071 TransientTrackingRecHit::ConstRecHitContainer TransientTrackingRecHit::transientHits() const 
00072 {
00073   // no components by default
00074   return ConstRecHitContainer();
00075 }
00076 
00077 TransientTrackingRecHit::RecHitPointer 
00078 TransientTrackingRecHit::clone( const TrajectoryStateOnSurface& ts) const {
00079   return RecHitPointer(const_cast<TransientTrackingRecHit*>(this));
00080 }