23 template <
class T>
T inline sqr(
T t) {
return t*
t;}
36 str <<
"\t pt: " << pt.
value() <<
"+/-"<<pt.
error()
37 <<
"\t phi: " << phi.
value() <<
"+/-"<<phi.
error()
38 <<
"\t cot: " << cotTheta.
value() <<
"+/-"<<cotTheta.
error()
39 <<
"\t tip: " << tip.
value() <<
"+/-"<<tip.
error()
40 <<
"\t zip: " << zip.
value() <<
"+/-"<<zip.
error()
53 float cosTheta =
cos(theta);
54 float sinTheta =
sin(theta);
58 float pt_v = track.
pt();
60 float covIPtTheta = track.
covariance(TrackBase::i_qoverp, TrackBase::i_lambda);
61 float errInvPt2 = ( errInvP2
62 +
sqr(cosTheta/pt_v)*errLambda2
63 + 2*(cosTheta/pt_v)*covIPtTheta
71 return print(pt, phi, cotTheta, tip, zip, track.
chi2(), track.
charge());
82 float errPhi2 = curv.
matrix()(3,3);
83 float errLambda2 = curv.
matrix()(2,2);
84 float errInvP2 = curv.
matrix()(1,1);
85 float covIPtTheta = curv.
matrix()(1,2);
86 float cosTheta =
cos(theta_v);
87 float sinTheta =
sin(theta_v);
88 float errInvPt2 = ( errInvP2
89 +
sqr(cosTheta/pt_v)*errLambda2
90 + 2*(cosTheta/pt_v)*covIPtTheta) /
sqr(sinTheta);
91 float errCotTheta =
sqrt(errLambda2)/
sqr(sinTheta) ;
105 return print(pt, phi, cotTheta, tip, zip, 0., state.
charge());
113 LogTrace(
"")<<
" *** PixelTrackBuilder::checkState: ";
115 LogTrace(
"")<<
"INPUT, TSOS:"<<endl<<state;
124 tscpBuilder(*(state.freeState()), origin);
140 const std::vector<const TrackingRecHit* >& hits,
145 LogDebug(
"PixelTrackBuilder::build");
146 LogTrace(
"")<<
"reconstructed TRIPLET kinematics:\n"<<
print(pt,phi,cotTheta,tip,zip,chi2,charge);
149 double cosTheta = cotTheta.
value()*sinTheta;
150 int tipSign = tip.
value() > 0 ? 1 : -1;
154 m(0,0) =
sqr(sinTheta) * (
174 sp*tipSign, -cp*tipSign, 0,
180 Plane impPointPlane(origin, rot);
187 LogTrace(
"")<<
"constructed TSOS :\n"<<
print(impactPointState);
189 int ndof = 2*hits.size()-5;
199 LogTrace(
"") <<
"RECONSTRUCTED TRACK "<<origin<<
"\n"<<
print(*track,origin)<<std::endl;
GlobalPoint globalPosition() const
LocalPoint localPosition() const
double d0Error() const
error on d0
Local3DVector LocalVector
pointer clone() const override
const FreeTrajectoryState & theState() const
double theta() const
polar angle
std::string print(const Track &, edm::Verbosity=edm::Concise)
Track print utility.
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
Geom::Theta< T > theta() const
double phi() const
azimuthal angle of momentum vector
TrackCharge charge() const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
Geom::Theta< T > theta() const
const SurfaceType & surface() const
double chi2() const
chi-squared of the fit
const LocalTrajectoryError & localError() const
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
CovarianceMatrix covariance() const
return track covariance matrix
double pt() const
track transverse momentum
Cos< T >::type cos(const T &t)
reco::Track * build(const Measurement1D &pt, const Measurement1D &phi, const Measurement1D &cotTheta, const Measurement1D &tip, const Measurement1D &zip, float chi2, int charge, const std::vector< const TrackingRecHit * > &hits, const MagneticField *mf, const GlobalPoint &reference=GlobalPoint(0, 0, 0)) const
double phiError() const
error on phi
const AlgebraicSymMatrix55 & matrix() const
double qoverpError() const
error on signed transverse curvature
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
double dzError() const
error on dz
const SurfaceType & surface() const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
XYZPointD XYZPoint
point in space with cartesian internal representation
void addReference() const
double lambdaError() const
error on lambda
GlobalVector globalMomentum() const
const AlgebraicSymMatrix55 & matrix() const
Square< F >::type sqr(const F &f)
const RotationType & rotation() const
LocalVector localMomentum() const
int charge() const
track electric charge
const CurvilinearTrajectoryError & curvilinearError() const
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
edm::Service< TFileService > fs