CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/TrackingTools/IPTools/interface/IPTools.h

Go to the documentation of this file.
00001 #ifndef TrackingTools_IPTools_h
00002 #define TrackingTools_IPTools_h
00003 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00004 #include "DataFormats/GeometryCommonDetAlgo/interface/Measurement1D.h"
00005 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00006 #include "DataFormats/VertexReco/interface/Vertex.h"
00007 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00008 #include <utility>
00009 #include "DataFormats/CLHEP/interface/Migration.h"
00010 #include "TrackingTools/PatternTools/interface/TransverseImpactPointExtrapolator.h"
00011 #include "RecoVertex/VertexTools/interface/VertexDistance.h"
00012 #include "RecoVertex/VertexTools/interface/VertexDistance3D.h"
00013 #include "RecoVertex/VertexTools/interface/VertexDistanceXY.h"
00014 #include "RecoVertex/VertexPrimitives/interface/VertexState.h"
00015 
00016 
00017  
00018 namespace IPTools
00019 {
00025         std::pair<bool,Measurement1D> absoluteImpactParameter3D(const reco::TransientTrack & transientTrack, const  reco::Vertex & vertex);
00026 
00033         std::pair<bool,Measurement1D> absoluteTransverseImpactParameter(const reco::TransientTrack & transientTrack, const  reco::Vertex & vertex);
00034 
00040         std::pair<bool,Measurement1D> signedTransverseImpactParameter(const reco::TransientTrack & track,
00041                  const GlobalVector & direction, const  reco::Vertex & vertex);
00042 
00049         std::pair<bool,Measurement1D> signedImpactParameter3D(const reco::TransientTrack & track,
00050                  const GlobalVector & direction, const  reco::Vertex & vertex);
00051 
00053         std::pair<bool,Measurement1D> absoluteImpactParameter(const TrajectoryStateOnSurface & tsos  , const  reco::Vertex & vertex, VertexDistance & distanceComputer) ;
00054 
00055 
00056         inline  TrajectoryStateOnSurface transverseExtrapolate(const TrajectoryStateOnSurface & track,const GlobalPoint & vertexPosition, const MagneticField * field)
00057         {
00058                  TransverseImpactPointExtrapolator extrapolator(field);
00059                  return extrapolator.extrapolate(track, vertexPosition);
00060         }
00061 
00062 
00063 
00064         TrajectoryStateOnSurface closestApproachToJet(const TrajectoryStateOnSurface & state, const reco::Vertex & vertex,
00065                  const GlobalVector& aJetDirection,const MagneticField * field);
00066 
00067         GlobalVector linearImpactParameter(const TrajectoryStateOnSurface & aTSOS, const GlobalPoint & point);
00068 
00069         
00070         std::pair<bool,Measurement1D> linearizedSignedImpactParameter3D(const TrajectoryStateOnSurface & state,
00071                  const GlobalVector & direction, const  reco::Vertex & vertex);
00072         
00073         inline std::pair<bool,Measurement1D> linearizedSignedImpactParameter3D(const reco::TransientTrack & transientTrack,
00074                  const GlobalVector & direction, const  reco::Vertex & vertex)
00075         {
00076           // extrapolate to the point of closest approach to the jet axis
00077           TrajectoryStateOnSurface closestToJetState = closestApproachToJet(transientTrack.impactPointState(), vertex, direction,transientTrack.field());
00078          return linearizedSignedImpactParameter3D(closestToJetState,direction,vertex);
00079         }
00080         
00081        std::pair<bool,Measurement1D> signedDecayLength3D(const TrajectoryStateOnSurface & state,
00082                  const GlobalVector & direction, const  reco::Vertex & vertex);
00083 
00084        inline std::pair<bool,Measurement1D> signedDecayLength3D(const reco::TransientTrack & transientTrack,
00085                  const GlobalVector & direction, const  reco::Vertex & vertex)
00086         {
00087           // extrapolate to the point of closest approach to the jet axis
00088           TrajectoryStateOnSurface closestToJetState = closestApproachToJet(transientTrack.impactPointState(), vertex, direction,transientTrack.field());
00089          return signedDecayLength3D(closestToJetState,direction,vertex);
00090         }
00091  
00092 
00093         std::pair<double,Measurement1D> jetTrackDistance(const reco::TransientTrack & track, const GlobalVector & direction,
00094                  const reco::Vertex & vertex);
00095 }
00096 
00097 #endif