CMS 3D CMS Logo

Public Types | Public Member Functions | Private Attributes

ThirdHitZPrediction Class Reference

#include <ThirdHitZPrediction.h>

List of all members.

Public Types

typedef PixelRecoRange< float > Range

Public Member Functions

Range operator() (const GlobalPoint &p3, float erroRPhi3) const
 ThirdHitZPrediction (const GlobalPoint &p1, float erroRPhi1, float errorZ1, const GlobalPoint &p2, float erroRPhi2, float errorZ2, double curvature, double nSigma=3.)

Private Attributes

double dR12
double dS12
double dZ12
double sqr_errorXY12
double sqr_errorXY2
double theCurvature
double theErrorZ1
double theErrorZ2
double theNSigma
GlobalPoint thePoint2

Detailed Description

Definition at line 9 of file ThirdHitZPrediction.h.


Member Typedef Documentation

Definition at line 11 of file ThirdHitZPrediction.h.


Constructor & Destructor Documentation

ThirdHitZPrediction::ThirdHitZPrediction ( const GlobalPoint p1,
float  erroRPhi1,
float  errorZ1,
const GlobalPoint p2,
float  erroRPhi2,
float  errorZ2,
double  curvature,
double  nSigma = 3. 
) [inline]

Definition at line 12 of file ThirdHitZPrediction.h.

References abs, dR12, dS12, dZ12, alignCSCRings::e, p1, and theCurvature.

                                                             : 
    thePoint2(p2),
    sqr_errorXY12(erroRPhi1*erroRPhi1+erroRPhi2*erroRPhi2),
    sqr_errorXY2(erroRPhi2*erroRPhi2),
    theErrorZ1(errorZ1),
    theErrorZ2(errorZ2),
    theCurvature(curvature), theNSigma(nSigma){
    auto d = p2-p1;
    dR12 = d.perp();   if (dR12 < 1.e-5) dR12 = 1.e-5;
    dS12 = std::abs(0.5*dR12*theCurvature) <1 ? std::asin(0.5*dR12*theCurvature) : 1.;
    dZ12 = d.z();
  }

Member Function Documentation

ThirdHitZPrediction::Range ThirdHitZPrediction::operator() ( const GlobalPoint p3,
float  erroRPhi3 
) const

Definition at line 8 of file ThirdHitZPrediction.cc.

References abs, dR12, dS12, dZ12, alignCSCRings::e, error, perp(), slope, funct::sqr(), sqr_errorXY12, sqr_errorXY2, mathSSE::sqrt(), theCurvature, theErrorZ1, theErrorZ2, theNSigma, thePoint2, and PV3DBase< T, PVType, FrameType >::z().

{
  double dR23 = (thePoint3-thePoint2).perp();

  double slope = dR23/dR12;
  if (    (theCurvature > 1.e-4) 
          && (std::abs(0.5*dR23*theCurvature) < 1.) 
          ) slope = std::asin(0.5*dR23*theCurvature)/dS12;

  double z3 = thePoint2.z() + dZ12*slope;

  double sqr_errorXY23 = sqr_errorXY2+sqr(erroRPhi3);
  double error = sqrt( sqr( (1+dR23/dR12)*theErrorZ2 )
                       + sqr( dR23/dR12 * theErrorZ1 )
                       + sqr(dZ12/dR12 )*sqr_errorXY23 
                       + sqr((dZ12/dR12)*(dR23/dR12))*sqr_errorXY12
                       );
  error *= theNSigma;
  return Range(z3-error,z3+error);
}

Member Data Documentation

double ThirdHitZPrediction::dR12 [private]

Definition at line 29 of file ThirdHitZPrediction.h.

Referenced by operator()(), and ThirdHitZPrediction().

double ThirdHitZPrediction::dS12 [private]

Definition at line 29 of file ThirdHitZPrediction.h.

Referenced by operator()(), and ThirdHitZPrediction().

double ThirdHitZPrediction::dZ12 [private]

Definition at line 29 of file ThirdHitZPrediction.h.

Referenced by operator()(), and ThirdHitZPrediction().

Definition at line 30 of file ThirdHitZPrediction.h.

Referenced by operator()().

Definition at line 31 of file ThirdHitZPrediction.h.

Referenced by operator()().

Definition at line 33 of file ThirdHitZPrediction.h.

Referenced by operator()(), and ThirdHitZPrediction().

Definition at line 32 of file ThirdHitZPrediction.h.

Referenced by operator()().

Definition at line 32 of file ThirdHitZPrediction.h.

Referenced by operator()().

Definition at line 34 of file ThirdHitZPrediction.h.

Referenced by operator()().

Definition at line 28 of file ThirdHitZPrediction.h.

Referenced by operator()().