13 virtual void operator()(
const double X[3],
double B[3])
14 { assert(0 &&
"Method not defined");};
24 void Update(){
for (
int i=0;i<3;i++){P[i]=D[i]/fabs(Pinv);}}
25 void Print(
const char *tit)
const;
30 typedef std::list<TRKutaPoint> TRKutaList;
41 void ZetMag (
const double *h);
42 static void SetMAG (
TRKuttaMag* mag){ fgMag = mag ;};
43 void Set (
int charge,
const double xyz[3],
const double mom[3]);
44 void SetEmx(
const double *err=0);
47 void SetDerOn(
int derOn=1){ fDerOn =derOn;}
48 int IsDerOn()
const {
return fDerOn;}
52 double Move(
double step);
54 double Eval(
double step,
double xyz[3]=0,
double mom[3]=0)
const;
57 double Path(
const double point[3],
int idir=0,
int ndca=3)
const;
60 double Path(
double x,
double y,
int idir=0)
const ;
65 double Dca(
double x,
double y,
double *dcaErr=0)
const ;
66 double Dca(
const double point[3],
double *dcaErr)
const;
68 const double *Pos()
const {
return fInp.X;}
69 const double *Dir()
const {
return fInp.D;}
70 const double *Mom()
const {
return fInp.P;}
71 const double *Mag()
const {
return fBOut ;}
72 double MomTot()
const {
return fabs(1./fInp.Pinv);}
73 double Pinv()
const {
return fInp.Pinv;}
74 void SetPinv(
double Pinv) {fInp.Pinv=Pinv;fInp.Update();}
75 int Charge()
const {
return fCharge;}
76 double GetCurv()
const;
79 const THDer3d_t *Der()
const {
return fDer3d;}
80 const TkDir_t &TkDir(
int idx)
const {
return fDer3d->mTkDir[idx];}
82 void Print(Option_t *opt=
"")
const;
84 static void Test(
int flag=3);
87 static void TestBak();
88 static void TestDer();
89 static void TestDer2();
90 static void TestErr (
int charge=1);
91 static void TestErr2(
int charge=1);
92 static void TestSign();
97 void grkuta(
double CHARGE,
double STEP
98 ,
const TRKutaPars_t &VECT,TRKutaPars_t &VOUT)
const;
110 mutable TRKutaPars_t fOut;
111 mutable double fBInp[3];
112 mutable double fBOut[3];
120 #endif // TRUNGEKUTTA_H
double Move()
Move to point founded before.
double Eval(double step, double xyz[3]=0, double mom[3]=0) const
Evaluate params with given step along helix.
double Dca(double x, double y, double *dcaErr=0) const
DCA to given 2dim point (with error matrix)
static void TestErr(int charge=1)
void Backward()
Change direction.
double Path(const double point[3], int idir=0, int ndca=3) const