CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_6/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 #include "FWCore/Utilities/interface/Likely.h"
00007 
00008 
00009 const GeomDetUnit * TransientTrackingRecHit::detUnit() const
00010 {
00011   return dynamic_cast<const GeomDetUnit*>(det());
00012 }
00013 
00014 
00015 GlobalPoint TransientTrackingRecHit::globalPosition() const {
00016   if unlikely(! hasGlobalPosition_){
00017     globalPosition_ = surface()->toGlobal(localPosition());
00018     hasGlobalPosition_ = true;
00019     return globalPosition_;
00020   }else{
00021     return globalPosition_;
00022   }
00023 }
00024 
00025 
00026 #ifdef TTRH_NOGE
00027 GlobalError TransientTrackingRecHit::globalPositionError() const {
00028   return ErrorFrameTransformer().transform( localPositionError(), *surface() );
00029 }
00030 #else
00031 GlobalError TransientTrackingRecHit::globalPositionError() const {
00032   if unlikely(! hasGlobalError_){
00033     setPositionErrors();
00034     return globalError_;
00035   }else{
00036     return globalError_;
00037   }
00038 
00039 }   
00040 #endif
00041 
00042 float 
00043 TransientTrackingRecHit::errorGlobalR() const {
00044   if unlikely(!hasGlobalError_){
00045     setPositionErrors();
00046     return errorR_;
00047   }else{
00048     return errorR_;
00049   }
00050 }
00051 
00052 float 
00053 TransientTrackingRecHit::errorGlobalZ() const {
00054   if unlikely(!hasGlobalError_){
00055     setPositionErrors();
00056     return errorZ_;
00057   }else{
00058     return errorZ_;
00059   }
00060 }
00061 
00062 float 
00063 TransientTrackingRecHit::errorGlobalRPhi() const {
00064   if unlikely(!hasGlobalError_){
00065     setPositionErrors();
00066     return errorRPhi_;
00067   }else{
00068     return errorRPhi_;
00069   }
00070 }
00071 
00072 void
00073 TransientTrackingRecHit::setPositionErrors() const {
00074 #ifdef TTRH_NOGE
00075 GlobalError  
00076 #endif
00077   globalError_ = ErrorFrameTransformer::transform( localPositionError(), *surface() );
00078   errorRPhi_ = globalPosition().perp()*sqrt(globalError_.phierr(globalPosition())); 
00079   errorR_ = sqrt(globalError_.rerr(globalPosition()));
00080   errorZ_ = sqrt(globalError_.czz());
00081   hasGlobalError_ = true;
00082 }
00083 
00084 TransientTrackingRecHit::ConstRecHitContainer TransientTrackingRecHit::transientHits() const 
00085 {
00086   // no components by default
00087   return ConstRecHitContainer();
00088 }
00089 
00090 TransientTrackingRecHit::RecHitPointer 
00091 TransientTrackingRecHit::clone( const TrajectoryStateOnSurface& ts) const {
00092   return RecHitPointer(const_cast<TransientTrackingRecHit*>(this));
00093 }