BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Reconstruction/MdcPatRec/TrkBase/include/TrkBase/TrkHelixUtils.h
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// File and Version Information:
3// $Id: TrkHelixUtils.h,v 1.2 2006/03/28 01:02:36 zhangy Exp $
4//
5// Description: package of utility routines for doing things to helices.
6// No data members. I'll probably want to put this someplace else
7// eventually.
8//
9// Environment:
10// Software developed for the BaBar Detector at the SLAC B-Factory.
11//
12// Author(s): Steve Schaffner
13//
14//------------------------------------------------------------------------
15
16#ifndef TRKHELIXUTILS_H
17#define TRKHELIXUTILS_H
18#include "CLHEP/Geometry/Point3D.h"
19#include "CLHEP/Matrix/Matrix.h"
20#include "CLHEP/Matrix/SymMatrix.h"
21#include "CLHEP/Matrix/Vector.h"
22#include "CLHEP/Vector/ThreeVector.h"
23#include "PatBField/BField.h"
24#ifndef ENABLE_BACKWARDS_COMPATIBILITY
25typedef HepGeom::Point3D<double> HepPoint3D;
26#endif
27using CLHEP::Hep3Vector;
28using CLHEP::HepMatrix;
29using CLHEP::HepSymMatrix;
30using CLHEP::HepVector;
32
33class TrkExchangePar;
34class BesPointErr;
35class BesVectorErr;
36class NeutParams;
37
38// Class interface //
39class TrkHelixUtils {
40
41public:
43
44 // Create a helix-set from a position and a momentum.
45 // Uses nominal B field to determine curvature.
46 static TrkExchangePar helixFromMom( const HepPoint3D& vertex, const Hep3Vector& p,
47 double sign, const BField& );
48
49 // Does the same, but gives *real* errors on the parameters
50 // (instead of a default error matrix)
51 // Uses nominal B field to determine curvature.
52 static TrkExchangePar helixFromMomErr( const BesPointErr& vertex, const BesVectorErr& p,
53 const HepMatrix& cxp, double sign, const BField& );
54 // Does the same but for neutrals
55 static NeutParams lineFromMomErr( const BesPointErr& vertex, const BesVectorErr& p,
56 const HepMatrix& cxp, double sign, const BField& );
57
58 // Jacobian for transforming std helix params to new set defined at fltNew
59 static HepMatrix jacobianExtrapolate( const TrkExchangePar&, double fltNew );
60
61 // Actually transform the error matrix, as above
62 static HepSymMatrix extrapolateCov( TrkExchangePar&, double fltNew );
63
64 // Path length (3-d) to intersection with cylinder at radius rad.
65 static double fltToRad( const TrkExchangePar& hel, double rad );
66
67private:
68 // Preempt
69 TrkHelixUtils& operator=( const TrkHelixUtils& );
71};
72
73#endif
HepGeom::Point3D< double > HepPoint3D
static double fltToRad(const TrkExchangePar &hel, double rad)
static NeutParams lineFromMomErr(const BesPointErr &vertex, const BesVectorErr &p, const HepMatrix &cxp, double sign, const BField &)
static TrkExchangePar helixFromMomErr(const BesPointErr &vertex, const BesVectorErr &p, const HepMatrix &cxp, double sign, const BField &)
static TrkExchangePar helixFromMom(const HepPoint3D &vertex, const Hep3Vector &p, double sign, const BField &)
static HepMatrix jacobianExtrapolate(const TrkExchangePar &, double fltNew)
static HepSymMatrix extrapolateCov(TrkExchangePar &, double fltNew)