CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions | Private Attributes

reco::GhostTrackPrediction Class Reference

#include <GhostTrackPrediction.h>

List of all members.

Public Types

typedef ROOT::Math::SMatrix
< double,
6, 6, ROOT::Math::MatRepSym
< double, 6 > > 
CartesianError
typedef ROOT::Math::SMatrix
< double,
4, 4, ROOT::Math::MatRepSym
< double, 4 > > 
Error
typedef ROOT::Math::SVector
< double, 4 > 
Vector

Public Member Functions

CartesianError cartesianError (double lambda=0.) const
double cotTheta () const
const Errorcovariance () const
CurvilinearTrajectoryError curvilinearError () const
const GlobalVector direction () const
double eta () const
FreeTrajectoryState fts (const MagneticField *fieldProvider) const
 GhostTrackPrediction (const Vector &prediction, const Error &error)
 GhostTrackPrediction ()
 GhostTrackPrediction (const GlobalPoint &priorPosition, const GlobalError &priorError, const GlobalVector &direction, const GlobalError &directionError)
 GhostTrackPrediction (const GlobalTrajectoryParameters &trajectory, const CurvilinearTrajectoryError &error)
 GhostTrackPrediction (const Track &track)
 GhostTrackPrediction (const GlobalPoint &priorPosition, const GlobalError &priorError, const GlobalVector &direction, double coneRadius)
GlobalTrajectoryParameters globalTrajectory (const MagneticField *fieldProvider) const
double ip () const
double lambda (const GlobalPoint &point) const
const GlobalPoint origin () const
double phi () const
GlobalPoint position (double lambda=0.) const
GlobalError positionError (double lambda=0.) const
const Vectorprediction () const
double rho () const
double rho2 () const
double sz () const
double theta () const
Track track (double ndof=0., double chi2=0.) const
double z () const

Private Member Functions

void init (const GlobalPoint &priorPosition, const GlobalError &priorError, const GlobalVector &direction, const GlobalError &directionError)

Private Attributes

Error covariance_
Vector prediction_

Detailed Description

Definition at line 21 of file GhostTrackPrediction.h.


Member Typedef Documentation

typedef ROOT::Math::SMatrix<double, 6, 6, ROOT::Math::MatRepSym<double, 6> > reco::GhostTrackPrediction::CartesianError

Definition at line 29 of file GhostTrackPrediction.h.

typedef ROOT::Math::SMatrix<double, 4, 4, ROOT::Math::MatRepSym<double, 4> > reco::GhostTrackPrediction::Error

Definition at line 27 of file GhostTrackPrediction.h.

typedef ROOT::Math::SVector<double, 4> reco::GhostTrackPrediction::Vector

Definition at line 25 of file GhostTrackPrediction.h.


Constructor & Destructor Documentation

reco::GhostTrackPrediction::GhostTrackPrediction ( ) [inline]

Definition at line 31 of file GhostTrackPrediction.h.

{}
reco::GhostTrackPrediction::GhostTrackPrediction ( const Vector prediction,
const Error error 
) [inline]

Definition at line 32 of file GhostTrackPrediction.h.

GhostTrackPrediction::GhostTrackPrediction ( const GlobalPoint priorPosition,
const GlobalError priorError,
const GlobalVector direction,
double  coneRadius 
)

Definition at line 104 of file GhostTrackPrediction.cc.

References init(), AlCaHLTBitMon_ParallelJobs::p, P, perp(), alignCSCRings::r, diffTwoXMLs::r2, mathSSE::sqrt(), and lumiQTWidget::t.

{
        double dTheta = std::cosh((double)direction.eta()) * coneRadius;

        double r2 = direction.mag2();
        double r = std::sqrt(r2);
        double perp = direction.perp();
        double P = direction.x() / perp;
        double p = direction.y() / perp;
        double T = direction.z() / r;
        double t = perp / r;
        double h2 = dTheta * dTheta;
        double d2 = coneRadius * coneRadius;

        GlobalError cov(r2 * (T*T * P*P * h2 + t*t * p*p * d2),
                        r2 * p*P * (T*T * h2 - t*t * d2),
                        r2 * (T*T * p*p * h2 + t*t * P*P * d2),
                        -r2 * t*T * P * h2,
                        -r2 * t*T * p * h2,
                        r2 * t*t * h2);

        init(priorPosition, priorError, direction, cov);
}
reco::GhostTrackPrediction::GhostTrackPrediction ( const GlobalPoint priorPosition,
const GlobalError priorError,
const GlobalVector direction,
const GlobalError directionError 
) [inline]

Definition at line 41 of file GhostTrackPrediction.h.

References init().

        { init(priorPosition, priorError, direction, directionError); }
GhostTrackPrediction::GhostTrackPrediction ( const GlobalTrajectoryParameters trajectory,
const CurvilinearTrajectoryError error 
)

Definition at line 133 of file GhostTrackPrediction.cc.

                                                                 :
        prediction_(convert(trajectory)),
        covariance_(convert(prediction_, error))
{
}
GhostTrackPrediction::GhostTrackPrediction ( const Track track)

Definition at line 141 of file GhostTrackPrediction.cc.

                                                             :
        prediction_(convert(
                            GlobalTrajectoryParameters(
                                                       GlobalPoint(track.vx(), track.vy(), track.vz()),
                                                       GlobalVector(track.px(), track.py(), track.pz()),
                                                       0, 0))),
        covariance_(convert(prediction_, track.covariance()))
{
}

Member Function Documentation

Matrix6S GhostTrackPrediction::cartesianError ( double  lambda = 0.) const

Definition at line 167 of file GhostTrackPrediction.cc.

References funct::cos(), covariance(), ip(), lambda(), phi(), funct::sin(), x, and detailsBasic3DVector::y.

Referenced by reco::TrackGhostTrackState::vertexStateOnGhostTrack(), reco::VertexGhostTrackState::vertexStateOnGhostTrack(), and reco::TrackGhostTrackState::vertexStateOnMeasurement().

{
        double x = std::cos(phi());
        double y = std::sin(phi());

        Matrix64 jacobian;
        jacobian(0, 1) = -y;
        jacobian(0, 3) = -y * lambda - x * ip();
        jacobian(1, 1) = x;
        jacobian(1, 3) = x * lambda - y * ip();
        jacobian(2, 0) = 1.;
        jacobian(2, 2) = lambda;
        jacobian(3, 3) = -y;
        jacobian(4, 3) = x;
        jacobian(5, 2) = 1.;

        return ROOT::Math::Similarity(jacobian, covariance());
}
double reco::GhostTrackPrediction::cotTheta ( ) const [inline]

Definition at line 54 of file GhostTrackPrediction.h.

References prediction_.

Referenced by curvilinearError(), direction(), eta(), rho2(), and theta().

{ return prediction_[2]; }
const Error& reco::GhostTrackPrediction::covariance ( void  ) const [inline]
CurvilinearTrajectoryError GhostTrackPrediction::curvilinearError ( ) const

Definition at line 192 of file GhostTrackPrediction.cc.

References cotTheta(), covariance(), rho2(), mathSSE::sqrt(), and z().

Referenced by fts(), and track().

{
  double rho2I = 1. / rho2();
  double rhoI = std::sqrt(rho2I);
  
  Matrix54 jacobian;
  jacobian(1, 2) = rho2I;
  jacobian(2, 3) = 1.;
  jacobian(3, 1) = 1.;
  jacobian(4, 0) = rhoI;
  jacobian(4, 2) = - z() * rhoI * cotTheta() * rho2I;
  
  AlgebraicSymMatrix55 err = Similarity(jacobian, covariance());
  err(0, 0) = 1.;
  
  return CurvilinearTrajectoryError(err);
}
const GlobalVector reco::GhostTrackPrediction::direction ( ) const [inline]
double reco::GhostTrackPrediction::eta ( void  ) const [inline]

Definition at line 61 of file GhostTrackPrediction.h.

References cotTheta(), funct::log(), and rho().

Referenced by reco::SequentialGhostTrackFitter::stable().

{ return -std::log(rho() - cotTheta()); }
FreeTrajectoryState GhostTrackPrediction::fts ( const MagneticField fieldProvider) const

Definition at line 210 of file GhostTrackPrediction.cc.

References curvilinearError(), and globalTrajectory().

Referenced by transientGhostTrack().

{
  return FreeTrajectoryState(globalTrajectory(fieldProvider),
                             curvilinearError());
}
GlobalTrajectoryParameters GhostTrackPrediction::globalTrajectory ( const MagneticField fieldProvider) const

Definition at line 187 of file GhostTrackPrediction.cc.

References direction(), and origin().

Referenced by fts().

                                                                                                          {
  return GlobalTrajectoryParameters(origin(), direction(),
                                    0, fieldProvider);
}
void GhostTrackPrediction::init ( const GlobalPoint priorPosition,
const GlobalError priorError,
const GlobalVector direction,
const GlobalError directionError 
) [private]

Definition at line 65 of file GhostTrackPrediction.cc.

References covariance_, dir, prof2calltree::l, GlobalErrorBase< T, ErrorWeightType >::matrix_new(), perp2(), prediction_, and mathSSE::sqrt().

Referenced by GhostTrackPrediction().

{

        double perp2 = direction.perp2();
        GlobalVector dir = direction / std::sqrt(perp2);
        double tip = priorPosition.y() * dir.x() - priorPosition.x() * dir.y();
        double l = priorPosition.x() * dir.x() + priorPosition.y() * dir.y();

        prediction_[0] = priorPosition.z() - dir.z() * l;
        prediction_[1] = tip;
        prediction_[2] = dir.z();
        prediction_[3] = dir.phi();

        Matrix46 jacobian;
        jacobian(0, 0) = -dir.x() * dir.z();
        jacobian(1, 0) = -dir.y();
        jacobian(0, 1) = -dir.y() * dir.z();
        jacobian(1, 1) = dir.x();
        jacobian(0, 2) = 1.;
        jacobian(0, 3) = -dir.z() * priorPosition.x();
        jacobian(1, 3) = priorPosition.y();
        jacobian(3, 3) = -dir.y();
        jacobian(0, 4) = -dir.z() * priorPosition.y();
        jacobian(1, 4) = -priorPosition.x();
        jacobian(3, 4) = dir.x();
        jacobian(0, 5) = -l;
        jacobian(2, 5) = 1.;

        Matrix6S origCov;
        origCov.Place_at(priorError.matrix_new(), 0, 0);
        origCov.Place_at(directionError.matrix_new() / perp2, 3, 3);

        covariance_ =  ROOT::Math::Similarity(jacobian, origCov);
}
double reco::GhostTrackPrediction::ip ( ) const [inline]

Definition at line 53 of file GhostTrackPrediction.h.

References prediction_.

Referenced by cartesianError(), origin(), positionError(), and reco::SequentialGhostTrackFitter::stable().

{ return prediction_[1]; }
double reco::GhostTrackPrediction::lambda ( const GlobalPoint point) const [inline]
const GlobalPoint reco::GhostTrackPrediction::origin ( ) const [inline]
double reco::GhostTrackPrediction::phi ( void  ) const [inline]
GlobalPoint reco::GhostTrackPrediction::position ( double  lambda = 0.) const [inline]
GlobalError GhostTrackPrediction::positionError ( double  lambda = 0.) const

Definition at line 151 of file GhostTrackPrediction.cc.

References funct::cos(), covariance(), ip(), lambda(), phi(), funct::sin(), x, and detailsBasic3DVector::y.

Referenced by TrackIPProducer::produce(), and vertexAtState().

{
        double x = std::cos(phi());
        double y = std::sin(phi());

        Matrix34 jacobian;
        jacobian(0, 1) = -y;
        jacobian(0, 3) = -y * lambda - x * ip();
        jacobian(1, 1) = x;
        jacobian(1, 3) = x * lambda - y * ip();
        jacobian(2, 0) = 1.;
        jacobian(2, 2) = lambda;

        return ROOT::Math::Similarity(jacobian, covariance());
}
const Vector& reco::GhostTrackPrediction::prediction ( ) const [inline]

Definition at line 63 of file GhostTrackPrediction.h.

References prediction_.

Referenced by TrackIPProducer::produce(), and reco::KalmanGhostTrackUpdater::update().

{ return prediction_; }
double reco::GhostTrackPrediction::rho ( ) const [inline]

Definition at line 58 of file GhostTrackPrediction.h.

References rho2(), and mathSSE::sqrt().

Referenced by eta(), reco::PositiveSideGhostTrackFitter::fit(), and sz().

{ return std::sqrt(rho2()); }
double reco::GhostTrackPrediction::rho2 ( ) const [inline]
double reco::GhostTrackPrediction::sz ( ) const [inline]

Definition at line 59 of file GhostTrackPrediction.h.

References rho(), and z().

Referenced by reco::SequentialGhostTrackFitter::stable().

{ return z() / rho(); }
double reco::GhostTrackPrediction::theta ( void  ) const [inline]

Definition at line 60 of file GhostTrackPrediction.h.

References cotTheta(), and M_PI_2.

{ return M_PI_2 - std::atan(cotTheta()); }
Track GhostTrackPrediction::track ( double  ndof = 0.,
double  chi2 = 0. 
) const

Definition at line 216 of file GhostTrackPrediction.cc.

References curvilinearError(), dir, direction(), origin(), and point.

Referenced by reco::GhostTrack::operator Track().

{
  GlobalPoint origin = this->origin();
  GlobalVector dir = direction().unit();
  
  Track::Point point(origin.x(), origin.y(), origin.z());
  Track::Vector vector(dir.x(), dir.y(), dir.z());
  
  return Track(chi2, ndof, point, vector, 0, curvilinearError());
}
double reco::GhostTrackPrediction::z ( ) const [inline]

Definition at line 52 of file GhostTrackPrediction.h.

References prediction_.

Referenced by curvilinearError(), origin(), and sz().

{ return prediction_[0]; }

Member Data Documentation

Definition at line 95 of file GhostTrackPrediction.h.

Referenced by covariance(), and init().

Definition at line 94 of file GhostTrackPrediction.h.

Referenced by cotTheta(), init(), ip(), phi(), prediction(), and z().