CMS 3D CMS Logo

SignedTransverseImpactParameter Class Reference

Transverse track impact parameter signed according to the jet direction. More...

#include <RecoBTag/BTagTools/interface/SignedTransverseImpactParameter.h>

List of all members.

Public Member Functions

std::pair< bool, Measurement1Dapply (const reco::TransientTrack &, const GlobalVector &, const reco::Vertex &) const
 SignedTransverseImpactParameter ()
std::pair< bool, Measurement1DzImpactParameter (const reco::TransientTrack &, const GlobalVector &, const reco::Vertex &) const


Detailed Description

Transverse track impact parameter signed according to the jet direction.

Definition at line 16 of file SignedTransverseImpactParameter.h.


Constructor & Destructor Documentation

SignedTransverseImpactParameter::SignedTransverseImpactParameter (  )  [inline]

Definition at line 22 of file SignedTransverseImpactParameter.h.

00022 {};


Member Function Documentation

pair< bool, Measurement1D > SignedTransverseImpactParameter::apply ( const reco::TransientTrack track,
const GlobalVector direction,
const reco::Vertex vertex 
) const

Definition at line 20 of file SignedTransverseImpactParameter.cc.

References funct::A, funct::abs(), reco::Vertex::covariance(), reco::TransientTrack::field(), TrajectoryStateOnSurface::freeState(), reco::TransientTrack::impactPointState(), LogDebug, funct::sqrt(), PV3DBase< T, PVType, FrameType >::x(), reco::Vertex::x(), x, PV3DBase< T, PVType, FrameType >::y(), reco::Vertex::y(), PV3DBase< T, PVType, FrameType >::z(), and reco::Vertex::z().

Referenced by ImpactParameterAlgorithm::tag().

00022        {
00023 
00024   TrajectoryStateOnSurface stateOnSurface = track.impactPointState();
00025 
00026   FreeTrajectoryState * FTS =  stateOnSurface.freeState(); //aRecTrack.stateAtFirstPoint().freeTrajectoryState());
00027 
00028   GlobalPoint vertexPosition(vertex.x(),vertex.y(),vertex.z());
00029  
00030   double theValue;
00031   double theError;
00032   TransverseImpactPointExtrapolator TIPE(track.field());
00033   TrajectoryStateOnSurface TSOS = TIPE.extrapolate(*FTS, vertexPosition);
00034 
00035   if(!TSOS.isValid()){
00036     theValue=0.;
00037     theError=0.;
00038   }
00039   else{
00040     
00041     GlobalPoint D0(TSOS.globalPosition());
00042     
00043     GlobalVector DD0(D0.x()-vertex.x(),D0.y()-vertex.y(),0.);
00044     GlobalVector JetDir(direction);
00045     double ps = DD0.dot(JetDir);
00046     theValue = DD0.mag()*(ps/abs(ps));
00047 
00048     //error calculation
00049     
00050     AlgebraicVector6 deriv;
00051     AlgebraicVector3 deriv_v;
00052     GlobalVector dd0 = DD0.unit();//check
00053     
00054     deriv_v[0] = - dd0.x();
00055     deriv_v[1] = - dd0.y();
00056     deriv_v[2] = - dd0.z();
00057     
00058     deriv[0] = dd0.x();
00059     deriv[1] = dd0.y();
00060     deriv[2] = dd0.z();
00061     deriv[3] =  0.;
00062     deriv[4] =  0.;
00063     deriv[5] =  0.;
00064     //cout << TSOS.cartesianError().matrix() << endl;
00065     //cout << deriv << endl;   
00066     double E1 = ROOT::Math::Similarity(deriv,TSOS.cartesianError().matrix());
00067     double E2 = ROOT::Math::Similarity(deriv_v,vertex.covariance());
00068              // (aJet.vertex().positionError().matrix()).similarity(deriv_v);
00069     theError = sqrt(E1+E2);
00070     LogDebug("BTagTools") << "Tk error : " << E1 << " , Vtx error : " << E2 << "  tot : " << theError;
00071 
00072  }//end if
00073   
00074   bool x = true;
00075   
00076   Measurement1D A(theValue, theError);
00077   return pair<bool,Measurement1D>(x,A);
00078 }// end constructor declaration

pair< bool, Measurement1D > SignedTransverseImpactParameter::zImpactParameter ( const reco::TransientTrack track,
const GlobalVector direction,
const reco::Vertex vertex 
) const

Definition at line 82 of file SignedTransverseImpactParameter.cc.

References reco::Vertex::covariance(), reco::TransientTrack::field(), reco::TransientTrack::impactPointState(), LogDebug, funct::sqrt(), true, PV3DBase< T, PVType, FrameType >::x(), reco::Vertex::x(), PV3DBase< T, PVType, FrameType >::y(), reco::Vertex::y(), PV3DBase< T, PVType, FrameType >::z(), and reco::Vertex::z().

00083                                                                      {
00084   
00085   TransverseImpactPointExtrapolator TIPE(track.field()) ;
00086   TrajectoryStateOnSurface TSOS  = track.impactPointState();
00087 
00088   if ( !TSOS.isValid() ) {
00089     LogDebug("BTagTools") << "====>>>> SignedTransverseImpactParameter::zImpactParameter : TSOS not valid"  ;
00090     return pair<bool,Measurement1D> (false,Measurement1D(0.0,0.0)) ;
00091   }
00092 
00093   GlobalPoint PV(vertex.x(),vertex.y(),vertex.z());
00094   TrajectoryStateOnSurface statePCA = TIPE.extrapolate( TSOS , PV ) ;
00095 
00096   if ( !statePCA.isValid() ) {
00097     LogDebug("BTagTools") << "====>>>> SignedTransverseImpactParameter::zImpactParameter : statePCA not valid"  ;
00098     return pair<bool,Measurement1D> (false,Measurement1D(0.0,0.0)) ;
00099   }
00100 
00101   GlobalPoint PCA = statePCA.globalPosition() ;
00102 
00103   // sign as in rphi
00104   GlobalVector PVPCA ( PCA.x()-PV.x() , PCA.y()-PV.y() , 0. );
00105   GlobalVector JetDir(direction);
00106   double sign = PVPCA.dot(JetDir);
00107   sign /= fabs(sign) ;
00108 
00109   // z IP
00110   double deltaZ = fabs(PCA.z()-PV.z()) * sign ;
00111   
00112   // error
00113   double errPvZ2 = vertex.covariance()(2,2) ;
00114   //CW  cout << "CW number or rows and columns : " << statePCA.cartesianError().matrix().num_row() << " , "
00115   //CW                                             << statePCA.cartesianError().matrix().num_col() << endl ;
00116   double errTrackZ2 =  statePCA.cartesianError().matrix()(2,2) ;
00117   double errZ = sqrt ( errPvZ2 + errTrackZ2 ) ;
00118 
00119   // CW alt. -> gives the same!!
00120   //  double errTZAlt = statePCA.localError().matrix()[4][4] ;
00121   //CW
00122   
00123   return pair<bool,Measurement1D> ( true , Measurement1D( deltaZ , errZ ) ) ;
00124 }


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:31:32 2009 for CMSSW by  doxygen 1.5.4