00001
00010 #ifndef __JBLHELIX_H
00011 #define __JBLHELIX_H
00012
00013
00014 class ThreeVector;
00015 class TwoVector;
00016
00017
00019
00033 class JBLHelix {
00034 public:
00036 JBLHelix (double kappa,
00037 double phi0,
00038 double theta,
00039 double dca,
00040 double z0
00041 );
00043 JBLHelix (double par_[]
00044 );
00046 ~JBLHelix();
00047
00049 double getPar (int i
00050 );
00052 JBLHelix& setPar (int i,
00053 double par_
00054 );
00055
00057
00069 int getClosestApproach (const JBLHelix& h1,
00070 double& s0,
00071 double& s1,
00072 double& s02nd,
00073 double& s12nd
00074 ) const;
00076 double getClosestS (const TwoVector& p
00077 ) const;
00079 double getClosestS (const ThreeVector& p
00080 ) const;
00082 void getTrajectoryPointEx (double s,
00083 ThreeVector& p
00084 ) const;
00086 ThreeVector getTrajectoryPoint (double s
00087 ) const;
00089 double getTrajectoryZ (double s
00090 ) const;
00091
00093 void getCenterPointEx (TwoVector& p
00094 ) const;
00096 TwoVector getCenterPoint () const;
00097
00099 double getNormalS (double s) const;
00100
00101 private:
00102 enum {NPAR = 5};
00103 double par[NPAR];
00104 };
00105
00106 #endif // __JBLHELIX_H