BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
VFHelix Class Reference

VFHelix parameter class. More...

#include <Helix.h>

Public Member Functions

 VFHelix (const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
 Constructor with pivot, helix parameter a, and its error matrix.
 VFHelix (const HepPoint3D &pivot, const HepVector &a)
 Constructor without error matrix.
 VFHelix (const HepPoint3D &position, const Hep3Vector &momentum, double charge)
 Constructor with position, momentum, and charge.
virtual ~VFHelix ()
 Destructor.
const HepPoint3Dcenter (void) const
 returns position of helix center(z = 0.);
const HepPoint3Dpivot (void) const
 returns pivot position.
double radius (void) const
 returns radious of helix.
HepPoint3D x (double dPhi=0.) const
 returns position after rotating angle dPhi in phi direction.
double * x (double dPhi, double p[3]) const
HepPoint3D x (double dPhi, HepSymMatrix &Ex) const
 returns position and convariance matrix(Ex) after rotation.
Hep3Vector direction (double dPhi=0.) const
 returns direction vector after rotating angle dPhi in phi direction.
Hep3Vector momentum (double dPhi=0.) const
 returns momentum vector after rotating angle dPhi in phi direction.
Hep3Vector momentum (double dPhi, HepSymMatrix &Em) const
 returns momentum vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum (double dPhi, double mass) const
 returns 4momentum vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum (double dPhi, double mass, HepSymMatrix &Em) const
 returns 4momentum vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum (double dPhi, double mass, HepPoint3D &x, HepSymMatrix &Emx) const
 returns 4momentum vector after rotating angle dPhi in phi direction.
double dr (void) const
 returns an element of parameters.
double phi0 (void) const
double kappa (void) const
double dz (void) const
double tanl (void) const
double curv (void) const
double sinPhi0 (void) const
double cosPhi0 (void) const
const HepVector & a (void) const
 returns helix parameters.
const HepSymMatrix & Ea (void) const
 returns error matrix.
const HepVector & a (const HepVector &newA)
 sets helix parameters.
const HepSymMatrix & Ea (const HepSymMatrix &newdA)
 sets helix paramters and error matrix.
const HepPoint3Dpivot (const HepPoint3D &newPivot)
 sets pivot position.
void set (const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
 sets helix pivot position, parameters, and error matrix.
void ignoreErrorMatrix (void)
double bFieldZ (double)
 sets/returns z componet of the magnetic field.
double bFieldZ (void) const
VFHelixoperator= (const VFHelix &)
 Copy operator.
HepMatrix delApDelA (const HepVector &ap) const
HepMatrix delXDelA (double phi) const
HepMatrix delMDelA (double phi) const
HepMatrix del4MDelA (double phi, double mass) const
HepMatrix del4MXDelA (double phi, double mass) const
 VFHelix (const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
 Constructor with pivot, helix parameter a, and its error matrix.
 VFHelix (const HepPoint3D &pivot, const HepVector &a)
 Constructor without error matrix.
 VFHelix (const HepPoint3D &position, const Hep3Vector &momentum, double charge)
 Constructor with position, momentum, and charge.
virtual ~VFHelix ()
 Destructor.
const HepPoint3Dcenter (void) const
 returns position of helix center(z = 0.);
const HepPoint3Dpivot (void) const
 returns pivot position.
double radius (void) const
 returns radious of helix.
HepPoint3D x (double dPhi=0.) const
 returns position after rotating angle dPhi in phi direction.
double * x (double dPhi, double p[3]) const
HepPoint3D x (double dPhi, HepSymMatrix &Ex) const
 returns position and convariance matrix(Ex) after rotation.
Hep3Vector direction (double dPhi=0.) const
 returns direction vector after rotating angle dPhi in phi direction.
Hep3Vector momentum (double dPhi=0.) const
 returns momentum vector after rotating angle dPhi in phi direction.
Hep3Vector momentum (double dPhi, HepSymMatrix &Em) const
 returns momentum vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum (double dPhi, double mass) const
 returns 4momentum vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum (double dPhi, double mass, HepSymMatrix &Em) const
 returns 4momentum vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum (double dPhi, double mass, HepPoint3D &x, HepSymMatrix &Emx) const
 returns 4momentum vector after rotating angle dPhi in phi direction.
double dr (void) const
 returns an element of parameters.
double phi0 (void) const
double kappa (void) const
double dz (void) const
double tanl (void) const
double curv (void) const
double sinPhi0 (void) const
double cosPhi0 (void) const
const HepVector & a (void) const
 returns helix parameters.
const HepSymMatrix & Ea (void) const
 returns error matrix.
const HepVector & a (const HepVector &newA)
 sets helix parameters.
const HepSymMatrix & Ea (const HepSymMatrix &newdA)
 sets helix paramters and error matrix.
const HepPoint3Dpivot (const HepPoint3D &newPivot)
 sets pivot position.
void set (const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
 sets helix pivot position, parameters, and error matrix.
void ignoreErrorMatrix (void)
double bFieldZ (double)
 sets/returns z componet of the magnetic field.
double bFieldZ (void) const
VFHelixoperator= (const VFHelix &)
 Copy operator.
HepMatrix delApDelA (const HepVector &ap) const
HepMatrix delXDelA (double phi) const
HepMatrix delMDelA (double phi) const
HepMatrix del4MDelA (double phi, double mass) const
HepMatrix del4MXDelA (double phi, double mass) const
 VFHelix (const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
 Constructor with pivot, helix parameter a, and its error matrix.
 VFHelix (const HepPoint3D &pivot, const HepVector &a)
 Constructor without error matrix.
 VFHelix (const HepPoint3D &position, const Hep3Vector &momentum, double charge)
 Constructor with position, momentum, and charge.
virtual ~VFHelix ()
 Destructor.
const HepPoint3Dcenter (void) const
 returns position of helix center(z = 0.);
const HepPoint3Dpivot (void) const
 returns pivot position.
double radius (void) const
 returns radious of helix.
HepPoint3D x (double dPhi=0.) const
 returns position after rotating angle dPhi in phi direction.
double * x (double dPhi, double p[3]) const
HepPoint3D x (double dPhi, HepSymMatrix &Ex) const
 returns position and convariance matrix(Ex) after rotation.
Hep3Vector direction (double dPhi=0.) const
 returns direction vector after rotating angle dPhi in phi direction.
Hep3Vector momentum (double dPhi=0.) const
 returns momentum vector after rotating angle dPhi in phi direction.
Hep3Vector momentum (double dPhi, HepSymMatrix &Em) const
 returns momentum vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum (double dPhi, double mass) const
 returns 4momentum vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum (double dPhi, double mass, HepSymMatrix &Em) const
 returns 4momentum vector after rotating angle dPhi in phi direction.
HepLorentzVector momentum (double dPhi, double mass, HepPoint3D &x, HepSymMatrix &Emx) const
 returns 4momentum vector after rotating angle dPhi in phi direction.
double dr (void) const
 returns an element of parameters.
double phi0 (void) const
double kappa (void) const
double dz (void) const
double tanl (void) const
double curv (void) const
double sinPhi0 (void) const
double cosPhi0 (void) const
const HepVector & a (void) const
 returns helix parameters.
const HepSymMatrix & Ea (void) const
 returns error matrix.
const HepVector & a (const HepVector &newA)
 sets helix parameters.
const HepSymMatrix & Ea (const HepSymMatrix &newdA)
 sets helix paramters and error matrix.
const HepPoint3Dpivot (const HepPoint3D &newPivot)
 sets pivot position.
void set (const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
 sets helix pivot position, parameters, and error matrix.
void ignoreErrorMatrix (void)
double bFieldZ (double)
 sets/returns z componet of the magnetic field.
double bFieldZ (void) const
VFHelixoperator= (const VFHelix &)
 Copy operator.
HepMatrix delApDelA (const HepVector &ap) const
HepMatrix delXDelA (double phi) const
HepMatrix delMDelA (double phi) const
HepMatrix del4MDelA (double phi, double mass) const
HepMatrix del4MXDelA (double phi, double mass) const

Static Public Attributes

static const double ConstantAlpha = 333.564095
 Constant alpha for uniform field.

Detailed Description

VFHelix parameter class.

Definition at line 38 of file Analysis/VertexFit/include/VertexFit/Helix.h.

Constructor & Destructor Documentation

◆ VFHelix() [1/9]

VFHelix::VFHelix ( const HepPoint3D & pivot,
const HepVector & a,
const HepSymMatrix & Ea )

Constructor with pivot, helix parameter a, and its error matrix.

Definition at line 33 of file Analysis/VertexFit/src/Helix.cxx.

34 : m_bField( 10.0 )
35 , m_alpha( 333.564095 )
36 , m_pivot( pivot )
37 , m_a( a )
38 , m_Ea( Ea )
39 , m_matrixValid( true ) {
40 // m_alpha = 10000. / 2.99792458 / m_bField;
41 // m_alpha = 333.564095;
42 m_bField = 10 * VertexFitBField::instance()->getBFieldZRef();
43 m_alpha = 10000. / 2.99792458 / m_bField;
44 // std::cout << "m_bField = " << m_bField << " m_alpha = " << m_alpha << std::endl;
45 updateCache();
46}
const HepPoint3D & pivot(void) const
returns pivot position.
const HepSymMatrix & Ea(void) const
returns error matrix.
const HepVector & a(void) const
returns helix parameters.

Referenced by operator=().

◆ VFHelix() [2/9]

VFHelix::VFHelix ( const HepPoint3D & pivot,
const HepVector & a )

Constructor without error matrix.

Definition at line 48 of file Analysis/VertexFit/src/Helix.cxx.

49 : m_bField( 10.0 )
50 , m_alpha( 333.564095 )
51 , m_pivot( pivot )
52 , m_a( a )
53 , m_Ea( HepSymMatrix( 5, 0 ) )
54 , m_matrixValid( false ) {
55 // m_alpha = 333.564095;
56 m_bField = 10 * VertexFitBField::instance()->getBFieldZRef();
57 m_alpha = 10000. / 2.99792458 / m_bField;
58
59 updateCache();
60}

◆ VFHelix() [3/9]

VFHelix::VFHelix ( const HepPoint3D & position,
const Hep3Vector & momentum,
double charge )

Constructor with position, momentum, and charge.

Definition at line 62 of file Analysis/VertexFit/src/Helix.cxx.

63 : m_bField( 10.0 )
64 , m_alpha( 333.564095 )
65 , m_pivot( position )
66 , m_a( HepVector( 5, 0 ) )
67 , m_Ea( HepSymMatrix( 5, 0 ) )
68 , m_matrixValid( false ) {
69
70 m_bField = 10 * VertexFitBField::instance()->getBFieldZRef();
71 m_alpha = 10000. / 2.99792458 / m_bField;
72
73 m_a[0] = 0.;
74 m_a[1] = fmod( atan2( -momentum.x(), momentum.y() ) + M_PI4, M_PI2 );
75 m_a[3] = 0.;
76 double perp( momentum.perp() );
77 if ( perp != 0.0 )
78 {
79 m_a[2] = charge / perp;
80 m_a[4] = momentum.z() / perp;
81 }
82 else
83 {
84 m_a[2] = charge * ( DBL_MAX );
85 if ( momentum.z() >= 0 ) { m_a[4] = ( DBL_MAX ); }
86 else { m_a[4] = -( DBL_MAX ); }
87 }
88 // m_alpha = 333.564095;
89 updateCache();
90}
const double M_PI2
const double M_PI4
Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.

◆ ~VFHelix() [1/3]

VFHelix::~VFHelix ( )
virtual

Destructor.

Definition at line 92 of file Analysis/VertexFit/src/Helix.cxx.

92{}

◆ VFHelix() [4/9]

VFHelix::VFHelix ( const HepPoint3D & pivot,
const HepVector & a,
const HepSymMatrix & Ea )

Constructor with pivot, helix parameter a, and its error matrix.

◆ VFHelix() [5/9]

VFHelix::VFHelix ( const HepPoint3D & pivot,
const HepVector & a )

Constructor without error matrix.

◆ VFHelix() [6/9]

VFHelix::VFHelix ( const HepPoint3D & position,
const Hep3Vector & momentum,
double charge )

Constructor with position, momentum, and charge.

◆ ~VFHelix() [2/3]

virtual VFHelix::~VFHelix ( )
virtual

Destructor.

◆ VFHelix() [7/9]

VFHelix::VFHelix ( const HepPoint3D & pivot,
const HepVector & a,
const HepSymMatrix & Ea )

Constructor with pivot, helix parameter a, and its error matrix.

◆ VFHelix() [8/9]

VFHelix::VFHelix ( const HepPoint3D & pivot,
const HepVector & a )

Constructor without error matrix.

◆ VFHelix() [9/9]

VFHelix::VFHelix ( const HepPoint3D & position,
const Hep3Vector & momentum,
double charge )

Constructor with position, momentum, and charge.

◆ ~VFHelix() [3/3]

virtual VFHelix::~VFHelix ( )
virtual

Destructor.

Member Function Documentation

◆ a() [1/6]

const HepVector & VFHelix::a ( const HepVector & newA)
inline

sets helix parameters.

Definition at line 199 of file Analysis/VertexFit/include/VertexFit/Helix.h.

199 {
200 m_a = i;
201 updateCache();
202 return m_a;
203}

◆ a() [2/6]

const HepVector & VFHelix::a ( const HepVector & newA)

sets helix parameters.

◆ a() [3/6]

const HepVector & VFHelix::a ( const HepVector & newA)

sets helix parameters.

◆ a() [4/6]

◆ a() [5/6]

const HepVector & VFHelix::a ( void ) const

returns helix parameters.

◆ a() [6/6]

const HepVector & VFHelix::a ( void ) const

returns helix parameters.

◆ bFieldZ() [1/6]

double VFHelix::bFieldZ ( double a)
inline

sets/returns z componet of the magnetic field.

Definition at line 207 of file Analysis/VertexFit/include/VertexFit/Helix.h.

207 {
208 m_bField = a;
209 m_alpha = 10000. / 2.99792458 / m_bField;
210 updateCache();
211 return m_bField;
212}

◆ bFieldZ() [2/6]

double VFHelix::bFieldZ ( double )

sets/returns z componet of the magnetic field.

◆ bFieldZ() [3/6]

double VFHelix::bFieldZ ( double )

sets/returns z componet of the magnetic field.

◆ bFieldZ() [4/6]

double VFHelix::bFieldZ ( void ) const
inline

Definition at line 214 of file Analysis/VertexFit/include/VertexFit/Helix.h.

214{ return m_bField; }

◆ bFieldZ() [5/6]

double VFHelix::bFieldZ ( void ) const

◆ bFieldZ() [6/6]

double VFHelix::bFieldZ ( void ) const

◆ center() [1/3]

const HepPoint3D & VFHelix::center ( void ) const
inline

returns position of helix center(z = 0.);

Definition at line 175 of file Analysis/VertexFit/include/VertexFit/Helix.h.

175{ return m_center; }

◆ center() [2/3]

const HepPoint3D & VFHelix::center ( void ) const

returns position of helix center(z = 0.);

◆ center() [3/3]

const HepPoint3D & VFHelix::center ( void ) const

returns position of helix center(z = 0.);

◆ cosPhi0() [1/3]

double VFHelix::cosPhi0 ( void ) const
inline

Definition at line 218 of file Analysis/VertexFit/include/VertexFit/Helix.h.

218{ return m_cp; }

◆ cosPhi0() [2/3]

double VFHelix::cosPhi0 ( void ) const

◆ cosPhi0() [3/3]

double VFHelix::cosPhi0 ( void ) const

◆ curv() [1/3]

double VFHelix::curv ( void ) const
inline

Definition at line 193 of file Analysis/VertexFit/include/VertexFit/Helix.h.

193{ return m_r; }

◆ curv() [2/3]

double VFHelix::curv ( void ) const

◆ curv() [3/3]

double VFHelix::curv ( void ) const

◆ del4MDelA() [1/3]

HepMatrix VFHelix::del4MDelA ( double phi,
double mass ) const

Definition at line 524 of file Analysis/VertexFit/src/Helix.cxx.

524 {
525 //
526 // Calculate Jacobian (@4m/@a)
527 // Vector a is helix parameters and phi is internal parameter.
528 // Vector 4m is 4 momentum.
529 //
530
531 HepMatrix d4MDA( 4, 5, 0 );
532
533 double phi0 = m_ac[1];
534 double cpa = m_ac[2];
535 double tnl = m_ac[4];
536
537 double cosf0phi = cos( phi0 + phi );
538 double sinf0phi = sin( phi0 + phi );
539
540 double rho;
541 if ( cpa != 0. ) rho = 1. / cpa;
542 else rho = ( DBL_MAX );
543
544 double charge = 1.;
545 if ( cpa < 0. ) charge = -1.;
546
547 double E = sqrt( rho * rho * ( 1. + tnl * tnl ) + mass * mass );
548
549 d4MDA[0][1] = -fabs( rho ) * cosf0phi;
550 d4MDA[0][2] = charge * rho * rho * sinf0phi;
551
552 d4MDA[1][1] = -fabs( rho ) * sinf0phi;
553 d4MDA[1][2] = -charge * rho * rho * cosf0phi;
554
555 d4MDA[2][2] = -charge * rho * rho * tnl;
556 d4MDA[2][4] = fabs( rho );
557
558 if ( cpa != 0.0 && E != 0.0 )
559 {
560 d4MDA[3][2] = ( -1. - tnl * tnl ) / ( cpa * cpa * cpa * E );
561 d4MDA[3][4] = tnl / ( cpa * cpa * E );
562 }
563 else
564 {
565 d4MDA[3][2] = ( DBL_MAX );
566 d4MDA[3][4] = ( DBL_MAX );
567 }
568 return d4MDA;
569}
double mass

Referenced by momentum().

◆ del4MDelA() [2/3]

HepMatrix VFHelix::del4MDelA ( double phi,
double mass ) const

◆ del4MDelA() [3/3]

HepMatrix VFHelix::del4MDelA ( double phi,
double mass ) const

◆ del4MXDelA() [1/3]

HepMatrix VFHelix::del4MXDelA ( double phi,
double mass ) const

Definition at line 571 of file Analysis/VertexFit/src/Helix.cxx.

571 {
572 //
573 // Calculate Jacobian (@4mx/@a)
574 // Vector a is helix parameters and phi is internal parameter.
575 // Vector 4xm is 4 momentum and position.
576 //
577
578 HepMatrix d4MXDA( 7, 5, 0 );
579
580 const double& dr = m_ac[0];
581 const double& phi0 = m_ac[1];
582 const double& cpa = m_ac[2];
583 const double& dz = m_ac[3];
584 const double& tnl = m_ac[4];
585
586 double cosf0phi = cos( phi0 + phi );
587 double sinf0phi = sin( phi0 + phi );
588
589 double rho;
590 if ( cpa != 0. ) rho = 1. / cpa;
591 else rho = ( DBL_MAX );
592
593 double charge = 1.;
594 if ( cpa < 0. ) charge = -1.;
595
596 double E = sqrt( rho * rho * ( 1. + tnl * tnl ) + mass * mass );
597
598 d4MXDA[0][1] = -fabs( rho ) * cosf0phi;
599 d4MXDA[0][2] = charge * rho * rho * sinf0phi;
600
601 d4MXDA[1][1] = -fabs( rho ) * sinf0phi;
602 d4MXDA[1][2] = -charge * rho * rho * cosf0phi;
603
604 d4MXDA[2][2] = -charge * rho * rho * tnl;
605 d4MXDA[2][4] = fabs( rho );
606
607 if ( cpa != 0.0 && E != 0.0 )
608 {
609 d4MXDA[3][2] = ( -1. - tnl * tnl ) / ( cpa * cpa * cpa * E );
610 d4MXDA[3][4] = tnl / ( cpa * cpa * E );
611 }
612 else
613 {
614 d4MXDA[3][2] = ( DBL_MAX );
615 d4MXDA[3][4] = ( DBL_MAX );
616 }
617
618 d4MXDA[4][0] = m_cp;
619 d4MXDA[4][1] = -dr * m_sp + m_r * ( -m_sp + sinf0phi );
620 if ( cpa != 0.0 ) { d4MXDA[4][2] = -( m_r / cpa ) * ( m_cp - cosf0phi ); }
621 else { d4MXDA[4][2] = ( DBL_MAX ); }
622
623 d4MXDA[5][0] = m_sp;
624 d4MXDA[5][1] = dr * m_cp + m_r * ( m_cp - cosf0phi );
625 if ( cpa != 0.0 )
626 {
627 d4MXDA[5][2] = -( m_r / cpa ) * ( m_sp - sinf0phi );
628
629 d4MXDA[6][2] = ( m_r / cpa ) * tnl * phi;
630 }
631 else
632 {
633 d4MXDA[5][2] = ( DBL_MAX );
634
635 d4MXDA[6][2] = ( DBL_MAX );
636 }
637
638 d4MXDA[6][3] = 1.;
639 d4MXDA[6][4] = -m_r * phi;
640
641 return d4MXDA;
642}
double dr(void) const
returns an element of parameters.

Referenced by momentum().

◆ del4MXDelA() [2/3]

HepMatrix VFHelix::del4MXDelA ( double phi,
double mass ) const

◆ del4MXDelA() [3/3]

HepMatrix VFHelix::del4MXDelA ( double phi,
double mass ) const

◆ delApDelA() [1/3]

HepMatrix VFHelix::delApDelA ( const HepVector & ap) const

Definition at line 392 of file Analysis/VertexFit/src/Helix.cxx.

392 {
393 //
394 // Calculate Jacobian (@ap/@a)
395 // Vector ap is new helix parameters and a is old helix parameters.
396 //
397
398 HepMatrix dApDA( 5, 5, 0 );
399
400 const double& dr = m_ac[0];
401 const double& phi0 = m_ac[1];
402 const double& cpa = m_ac[2];
403 const double& dz = m_ac[3];
404 const double& tnl = m_ac[4];
405
406 double drp = ap[0];
407 double phi0p = ap[1];
408 double cpap = ap[2];
409 double dzp = ap[3];
410 double tnlp = ap[4];
411
412 double rdr = m_r + dr;
413 double rdrpr;
414 if ( ( m_r + drp ) != 0.0 ) { rdrpr = 1. / ( m_r + drp ); }
415 else { rdrpr = ( DBL_MAX ); }
416 // double csfd = cos(phi0)*cos(phi0p) + sin(phi0)*sin(phi0p);
417 // double snfd = cos(phi0)*sin(phi0p) - sin(phi0)*cos(phi0p);
418 double csfd = cos( phi0p - phi0 );
419 double snfd = sin( phi0p - phi0 );
420 double phid = fmod( phi0p - phi0 + M_PI8, M_PI2 );
421 if ( phid > M_PI ) phid = phid - M_PI2;
422
423 dApDA[0][0] = csfd;
424 dApDA[0][1] = rdr * snfd;
425 if ( cpa != 0.0 ) { dApDA[0][2] = ( m_r / cpa ) * ( 1.0 - csfd ); }
426 else { dApDA[0][2] = ( DBL_MAX ); }
427
428 dApDA[1][0] = -rdrpr * snfd;
429 dApDA[1][1] = rdr * rdrpr * csfd;
430 if ( cpa != 0.0 ) { dApDA[1][2] = ( m_r / cpa ) * rdrpr * snfd; }
431 else { dApDA[1][2] = ( DBL_MAX ); }
432
433 dApDA[2][2] = 1.0;
434
435 dApDA[3][0] = m_r * rdrpr * tnl * snfd;
436 dApDA[3][1] = m_r * tnl * ( 1.0 - rdr * rdrpr * csfd );
437 if ( cpa != 0.0 ) { dApDA[3][2] = ( m_r / cpa ) * tnl * ( phid - m_r * rdrpr * snfd ); }
438 else { dApDA[3][2] = ( DBL_MAX ); }
439 dApDA[3][3] = 1.0;
440 dApDA[3][4] = -m_r * phid;
441
442 dApDA[4][4] = 1.0;
443
444 return dApDA;
445}
const double M_PI8
#define M_PI
Definition TConstant.h:4

Referenced by pivot().

◆ delApDelA() [2/3]

HepMatrix VFHelix::delApDelA ( const HepVector & ap) const

◆ delApDelA() [3/3]

HepMatrix VFHelix::delApDelA ( const HepVector & ap) const

◆ delMDelA() [1/3]

HepMatrix VFHelix::delMDelA ( double phi) const

Definition at line 489 of file Analysis/VertexFit/src/Helix.cxx.

489 {
490 //
491 // Calculate Jacobian (@m/@a)
492 // Vector a is helix parameters and phi is internal parameter.
493 // Vector m is momentum.
494 //
495
496 HepMatrix dMDA( 3, 5, 0 );
497
498 const double& phi0 = m_ac[1];
499 const double& cpa = m_ac[2];
500 const double& tnl = m_ac[4];
501
502 double cosf0phi = cos( phi0 + phi );
503 double sinf0phi = sin( phi0 + phi );
504
505 double rho;
506 if ( cpa != 0. ) rho = 1. / cpa;
507 else rho = ( DBL_MAX );
508
509 double charge = 1.;
510 if ( cpa < 0. ) charge = -1.;
511
512 dMDA[0][1] = -fabs( rho ) * cosf0phi;
513 dMDA[0][2] = charge * rho * rho * sinf0phi;
514
515 dMDA[1][1] = -fabs( rho ) * sinf0phi;
516 dMDA[1][2] = -charge * rho * rho * cosf0phi;
517
518 dMDA[2][2] = -charge * rho * rho * tnl;
519 dMDA[2][4] = fabs( rho );
520
521 return dMDA;
522}

Referenced by momentum().

◆ delMDelA() [2/3]

HepMatrix VFHelix::delMDelA ( double phi) const

◆ delMDelA() [3/3]

HepMatrix VFHelix::delMDelA ( double phi) const

◆ delXDelA() [1/3]

HepMatrix VFHelix::delXDelA ( double phi) const

Definition at line 447 of file Analysis/VertexFit/src/Helix.cxx.

447 {
448 //
449 // Calculate Jacobian (@x/@a)
450 // Vector a is helix parameters and phi is internal parameter
451 // which specifys the point to be calculated for Ex(phi).
452 //
453
454 HepMatrix dXDA( 3, 5, 0 );
455
456 const double& dr = m_ac[0];
457 const double& phi0 = m_ac[1];
458 const double& cpa = m_ac[2];
459 const double& dz = m_ac[3];
460 const double& tnl = m_ac[4];
461
462 double cosf0phi = cos( phi0 + phi );
463 double sinf0phi = sin( phi0 + phi );
464
465 dXDA[0][0] = m_cp;
466 dXDA[0][1] = -dr * m_sp + m_r * ( -m_sp + sinf0phi );
467 if ( cpa != 0.0 ) { dXDA[0][2] = -( m_r / cpa ) * ( m_cp - cosf0phi ); }
468 else { dXDA[0][2] = ( DBL_MAX ); }
469 // dXDA[0][3] = 0.0;
470 // dXDA[0][4] = 0.0;
471
472 dXDA[1][0] = m_sp;
473 dXDA[1][1] = dr * m_cp + m_r * ( m_cp - cosf0phi );
474 if ( cpa != 0.0 ) { dXDA[1][2] = -( m_r / cpa ) * ( m_sp - sinf0phi ); }
475 else { dXDA[1][2] = ( DBL_MAX ); }
476 // dXDA[1][3] = 0.0;
477 // dXDA[1][4] = 0.0;
478
479 // dXDA[2][0] = 0.0;
480 // dXDA[2][1] = 0.0;
481 if ( cpa != 0.0 ) { dXDA[2][2] = ( m_r / cpa ) * tnl * phi; }
482 else { dXDA[2][2] = ( DBL_MAX ); }
483 dXDA[2][3] = 1.0;
484 dXDA[2][4] = -m_r * phi;
485
486 return dXDA;
487}

Referenced by x().

◆ delXDelA() [2/3]

HepMatrix VFHelix::delXDelA ( double phi) const

◆ delXDelA() [3/3]

HepMatrix VFHelix::delXDelA ( double phi) const

◆ direction() [1/3]

Hep3Vector VFHelix::direction ( double dPhi = 0.) const
inline

returns direction vector after rotating angle dPhi in phi direction.

Definition at line 181 of file Analysis/VertexFit/include/VertexFit/Helix.h.

181{ return momentum( phi ).unit(); }
**********INTEGER nmxhep !maximum number of particles DOUBLE PRECISION vhep INTEGER jdahep COMMON hepevt $ !serial number $ !number of particles $ !status code $ !particle ident KF $ !parent particles $ !childreen particles $ !four momentum

◆ direction() [2/3]

Hep3Vector VFHelix::direction ( double dPhi = 0.) const

returns direction vector after rotating angle dPhi in phi direction.

◆ direction() [3/3]

Hep3Vector VFHelix::direction ( double dPhi = 0.) const

returns direction vector after rotating angle dPhi in phi direction.

◆ dr() [1/3]

double VFHelix::dr ( void ) const
inline

returns an element of parameters.

Definition at line 183 of file Analysis/VertexFit/include/VertexFit/Helix.h.

183{ return m_ac[0]; }

Referenced by del4MXDelA(), delApDelA(), delXDelA(), and pivot().

◆ dr() [2/3]

double VFHelix::dr ( void ) const

returns an element of parameters.

◆ dr() [3/3]

double VFHelix::dr ( void ) const

returns an element of parameters.

◆ dz() [1/3]

double VFHelix::dz ( void ) const
inline

Definition at line 189 of file Analysis/VertexFit/include/VertexFit/Helix.h.

189{ return m_ac[3]; }

Referenced by del4MXDelA(), delApDelA(), delXDelA(), and pivot().

◆ dz() [2/3]

double VFHelix::dz ( void ) const

◆ dz() [3/3]

double VFHelix::dz ( void ) const

◆ Ea() [1/6]

const HepSymMatrix & VFHelix::Ea ( const HepSymMatrix & newdA)
inline

sets helix paramters and error matrix.

Definition at line 205 of file Analysis/VertexFit/include/VertexFit/Helix.h.

205{ return m_Ea = i; }

◆ Ea() [2/6]

const HepSymMatrix & VFHelix::Ea ( const HepSymMatrix & newdA)

sets helix paramters and error matrix.

◆ Ea() [3/6]

const HepSymMatrix & VFHelix::Ea ( const HepSymMatrix & newdA)

sets helix paramters and error matrix.

◆ Ea() [4/6]

const HepSymMatrix & VFHelix::Ea ( void ) const
inline

returns error matrix.

Definition at line 197 of file Analysis/VertexFit/include/VertexFit/Helix.h.

197{ return m_Ea; }

Referenced by set(), and VFHelix().

◆ Ea() [5/6]

const HepSymMatrix & VFHelix::Ea ( void ) const

returns error matrix.

◆ Ea() [6/6]

const HepSymMatrix & VFHelix::Ea ( void ) const

returns error matrix.

◆ ignoreErrorMatrix() [1/3]

void VFHelix::ignoreErrorMatrix ( void )

unsets error matrix. Error calculations will be ignored after this function call until an error matrix be set again. 0 matrix will be return as a return value for error matrix when you call functions which returns an error matrix.

Definition at line 644 of file Analysis/VertexFit/src/Helix.cxx.

644 {
645 m_matrixValid = false;
646 m_Ea *= 0.;
647}

◆ ignoreErrorMatrix() [2/3]

void VFHelix::ignoreErrorMatrix ( void )

unsets error matrix. Error calculations will be ignored after this function call until an error matrix be set again. 0 matrix will be return as a return value for error matrix when you call functions which returns an error matrix.

◆ ignoreErrorMatrix() [3/3]

void VFHelix::ignoreErrorMatrix ( void )

unsets error matrix. Error calculations will be ignored after this function call until an error matrix be set again. 0 matrix will be return as a return value for error matrix when you call functions which returns an error matrix.

◆ kappa() [1/3]

double VFHelix::kappa ( void ) const
inline

Definition at line 187 of file Analysis/VertexFit/include/VertexFit/Helix.h.

187{ return m_ac[2]; }

Referenced by pivot().

◆ kappa() [2/3]

double VFHelix::kappa ( void ) const

◆ kappa() [3/3]

double VFHelix::kappa ( void ) const

◆ momentum() [1/15]

HepLorentzVector VFHelix::momentum ( double dPhi,
double mass ) const

returns 4momentum vector after rotating angle dPhi in phi direction.

Definition at line 187 of file Analysis/VertexFit/src/Helix.cxx.

187 {
188 //
189 // Calculate momentum.
190 //
191 // Pt = | 1/kappa | (GeV/c)
192 //
193 // Px = -Pt * sin(phi0 + phi)
194 // Py = Pt * cos(phi0 + phi)
195 // Pz = Pt * tan(lambda)
196 //
197 // E = sqrt( 1/kappa/kappa * (1+tan(lambda)*tan(lambda)) + mass*mass )
198
199 double pt = fabs( m_pt );
200 double px = -pt * sin( m_ac[1] + phi );
201 double py = pt * cos( m_ac[1] + phi );
202 double pz = pt * m_ac[4];
203 double E = sqrt( pt * pt * ( 1. + m_ac[4] * m_ac[4] ) + mass * mass );
204
205 return HepLorentzVector( px, py, pz, E );
206}

◆ momentum() [2/15]

HepLorentzVector VFHelix::momentum ( double dPhi,
double mass ) const

returns 4momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [3/15]

HepLorentzVector VFHelix::momentum ( double dPhi,
double mass ) const

returns 4momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [4/15]

HepLorentzVector VFHelix::momentum ( double dPhi,
double mass,
HepPoint3D & x,
HepSymMatrix & Emx ) const

returns 4momentum vector after rotating angle dPhi in phi direction.

Definition at line 232 of file Analysis/VertexFit/src/Helix.cxx.

233 {
234 //
235 // Calculate momentum.
236 //
237 // Pt = | 1/kappa | (GeV/c)
238 //
239 // Px = -Pt * sin(phi0 + phi)
240 // Py = Pt * cos(phi0 + phi)
241 // Pz = Pt * tan(lambda)
242 //
243 // E = sqrt( 1/kappa/kappa * (1+tan(lambda)*tan(lambda)) + mass*mass )
244
245 double pt = fabs( m_pt );
246 double px = -pt * sin( m_ac[1] + phi );
247 double py = pt * cos( m_ac[1] + phi );
248 double pz = pt * m_ac[4];
249 double E = sqrt( pt * pt * ( 1. + m_ac[4] * m_ac[4] ) + mass * mass );
250
251 x.setX( m_pivot.x() + m_ac[0] * m_cp + m_r * ( m_cp - cos( m_ac[1] + phi ) ) );
252 x.setY( m_pivot.y() + m_ac[0] * m_sp + m_r * ( m_sp - sin( m_ac[1] + phi ) ) );
253 x.setZ( m_pivot.z() + m_ac[3] - m_r * m_ac[4] * phi );
254
255 if ( m_matrixValid ) Emx = m_Ea.similarity( del4MXDelA( phi, mass ) );
256 else Emx = m_Ea;
257
258 return HepLorentzVector( px, py, pz, E );
259}
HepPoint3D x(double dPhi=0.) const
returns position after rotating angle dPhi in phi direction.
HepMatrix del4MXDelA(double phi, double mass) const

◆ momentum() [5/15]

HepLorentzVector VFHelix::momentum ( double dPhi,
double mass,
HepPoint3D & x,
HepSymMatrix & Emx ) const

returns 4momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [6/15]

HepLorentzVector VFHelix::momentum ( double dPhi,
double mass,
HepPoint3D & x,
HepSymMatrix & Emx ) const

returns 4momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [7/15]

HepLorentzVector VFHelix::momentum ( double dPhi,
double mass,
HepSymMatrix & Em ) const

returns 4momentum vector after rotating angle dPhi in phi direction.

Definition at line 208 of file Analysis/VertexFit/src/Helix.cxx.

208 {
209 //
210 // Calculate momentum.
211 //
212 // Pt = | 1/kappa | (GeV/c)
213 //
214 // Px = -Pt * sin(phi0 + phi)
215 // Py = Pt * cos(phi0 + phi)
216 // Pz = Pt * tan(lambda)
217 //
218 // E = sqrt( 1/kappa/kappa * (1+tan(lambda)*tan(lambda)) + mass*mass )
219
220 double pt = fabs( m_pt );
221 double px = -pt * sin( m_ac[1] + phi );
222 double py = pt * cos( m_ac[1] + phi );
223 double pz = pt * m_ac[4];
224 double E = sqrt( pt * pt * ( 1. + m_ac[4] * m_ac[4] ) + mass * mass );
225
226 if ( m_matrixValid ) Em = m_Ea.similarity( del4MDelA( phi, mass ) );
227 else Em = m_Ea;
228
229 return HepLorentzVector( px, py, pz, E );
230}
HepMatrix del4MDelA(double phi, double mass) const

◆ momentum() [8/15]

HepLorentzVector VFHelix::momentum ( double dPhi,
double mass,
HepSymMatrix & Em ) const

returns 4momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [9/15]

HepLorentzVector VFHelix::momentum ( double dPhi,
double mass,
HepSymMatrix & Em ) const

returns 4momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [10/15]

Hep3Vector VFHelix::momentum ( double dPhi,
HepSymMatrix & Em ) const

returns momentum vector after rotating angle dPhi in phi direction.

Definition at line 165 of file Analysis/VertexFit/src/Helix.cxx.

165 {
166 //
167 // Calculate momentum.
168 //
169 // Pt = | 1/kappa | (GeV/c)
170 //
171 // Px = -Pt * sin(phi0 + phi)
172 // Py = Pt * cos(phi0 + phi)
173 // Pz = Pt * tan(lambda)
174 //
175
176 double pt = fabs( m_pt );
177 double px = -pt * sin( m_ac[1] + phi );
178 double py = pt * cos( m_ac[1] + phi );
179 double pz = pt * m_ac[4];
180
181 if ( m_matrixValid ) Em = m_Ea.similarity( delMDelA( phi ) );
182 else Em = m_Ea;
183
184 return Hep3Vector( px, py, pz );
185}
HepMatrix delMDelA(double phi) const

◆ momentum() [11/15]

Hep3Vector VFHelix::momentum ( double dPhi,
HepSymMatrix & Em ) const

returns momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [12/15]

Hep3Vector VFHelix::momentum ( double dPhi,
HepSymMatrix & Em ) const

returns momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [13/15]

Hep3Vector VFHelix::momentum ( double dPhi = 0.) const

returns momentum vector after rotating angle dPhi in phi direction.

Definition at line 146 of file Analysis/VertexFit/src/Helix.cxx.

146 {
147 //
148 // Calculate momentum.
149 //
150 // Pt = | 1/kappa | (GeV/c)
151 //
152 // Px = -Pt * sin(phi0 + phi)
153 // Py = Pt * cos(phi0 + phi)
154 // Pz = Pt * tan(lambda)
155 //
156
157 double pt = fabs( m_pt );
158 double px = -pt * sin( m_ac[1] + phi );
159 double py = pt * cos( m_ac[1] + phi );
160 double pz = pt * m_ac[4];
161
162 return Hep3Vector( px, py, pz );
163}

Referenced by VFHelix().

◆ momentum() [14/15]

Hep3Vector VFHelix::momentum ( double dPhi = 0.) const

returns momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [15/15]

Hep3Vector VFHelix::momentum ( double dPhi = 0.) const

returns momentum vector after rotating angle dPhi in phi direction.

◆ operator=() [1/3]

VFHelix & VFHelix::operator= ( const VFHelix & i)

Copy operator.

Definition at line 334 of file Analysis/VertexFit/src/Helix.cxx.

334 {
335 if ( this == &i ) return *this;
336
337 m_bField = i.m_bField;
338 m_alpha = i.m_alpha;
339 m_pivot = i.m_pivot;
340 m_a = i.m_a;
341 m_Ea = i.m_Ea;
342 m_matrixValid = i.m_matrixValid;
343
344 m_center = i.m_center;
345 m_cp = i.m_cp;
346 m_sp = i.m_sp;
347 m_pt = i.m_pt;
348 m_r = i.m_r;
349 m_ac[0] = i.m_ac[0];
350 m_ac[1] = i.m_ac[1];
351 m_ac[2] = i.m_ac[2];
352 m_ac[3] = i.m_ac[3];
353 m_ac[4] = i.m_ac[4];
354
355 return *this;
356}

◆ operator=() [2/3]

VFHelix & VFHelix::operator= ( const VFHelix & )

Copy operator.

◆ operator=() [3/3]

VFHelix & VFHelix::operator= ( const VFHelix & )

Copy operator.

◆ phi0() [1/3]

double VFHelix::phi0 ( void ) const
inline

Definition at line 185 of file Analysis/VertexFit/include/VertexFit/Helix.h.

185{ return m_ac[1]; }

Referenced by del4MDelA(), del4MXDelA(), delApDelA(), delMDelA(), delXDelA(), and pivot().

◆ phi0() [2/3]

double VFHelix::phi0 ( void ) const

◆ phi0() [3/3]

double VFHelix::phi0 ( void ) const

◆ pivot() [1/6]

const HepPoint3D & VFHelix::pivot ( const HepPoint3D & newPivot)

sets pivot position.

Definition at line 261 of file Analysis/VertexFit/src/Helix.cxx.

261 {
262 const double& dr = m_ac[0];
263 const double& phi0 = m_ac[1];
264 const double& kappa = m_ac[2];
265 const double& dz = m_ac[3];
266 const double& tanl = m_ac[4];
267
268 double rdr = dr + m_r;
269 double phi = fmod( phi0 + M_PI4, M_PI2 );
270 double csf0 = cos( phi );
271 double snf0 = ( 1. - csf0 ) * ( 1. + csf0 );
272 snf0 = sqrt( ( snf0 > 0. ) ? snf0 : 0. );
273 if ( phi > M_PI ) snf0 = -snf0;
274
275 double xc = m_pivot.x() + rdr * csf0;
276 double yc = m_pivot.y() + rdr * snf0;
277 double csf, snf;
278 if ( m_r != 0.0 )
279 {
280 csf = ( xc - newPivot.x() ) / m_r;
281 snf = ( yc - newPivot.y() ) / m_r;
282 double anrm = sqrt( csf * csf + snf * snf );
283 if ( anrm != 0.0 )
284 {
285 csf /= anrm;
286 snf /= anrm;
287 phi = atan2( snf, csf );
288 }
289 else
290 {
291 csf = 1.0;
292 snf = 0.0;
293 phi = 0.0;
294 }
295 }
296 else
297 {
298 csf = 1.0;
299 snf = 0.0;
300 phi = 0.0;
301 }
302 double phid = fmod( phi - phi0 + M_PI8, M_PI2 );
303 if ( phid > M_PI ) phid = phid - M_PI2;
304 double drp = ( m_pivot.x() + dr * csf0 + m_r * ( csf0 - csf ) - newPivot.x() ) * csf +
305 ( m_pivot.y() + dr * snf0 + m_r * ( snf0 - snf ) - newPivot.y() ) * snf;
306 double dzp = m_pivot.z() + dz - m_r * tanl * phid - newPivot.z();
307
308 HepVector ap( 5 );
309 ap[0] = drp;
310 ap[1] = fmod( phi + M_PI4, M_PI2 );
311 ap[2] = kappa;
312 ap[3] = dzp;
313 ap[4] = tanl;
314
315 // if (m_matrixValid) m_Ea.assign(delApDelA(ap) * m_Ea * delApDelA(ap).T());
316 if ( m_matrixValid ) m_Ea = m_Ea.similarity( delApDelA( ap ) );
317
318 m_a = ap;
319 m_pivot = newPivot;
320
321 //...Are these needed?...iw...
322 updateCache();
323 return m_pivot;
324}
HepMatrix delApDelA(const HepVector &ap) const

◆ pivot() [2/6]

const HepPoint3D & VFHelix::pivot ( const HepPoint3D & newPivot)

sets pivot position.

◆ pivot() [3/6]

const HepPoint3D & VFHelix::pivot ( const HepPoint3D & newPivot)

sets pivot position.

◆ pivot() [4/6]

◆ pivot() [5/6]

const HepPoint3D & VFHelix::pivot ( void ) const

returns pivot position.

◆ pivot() [6/6]

const HepPoint3D & VFHelix::pivot ( void ) const

returns pivot position.

◆ radius() [1/3]

double VFHelix::radius ( void ) const
inline

returns radious of helix.

Definition at line 179 of file Analysis/VertexFit/include/VertexFit/Helix.h.

179{ return m_r; }

◆ radius() [2/3]

double VFHelix::radius ( void ) const

returns radious of helix.

◆ radius() [3/3]

double VFHelix::radius ( void ) const

returns radious of helix.

◆ set() [1/3]

void VFHelix::set ( const HepPoint3D & pivot,
const HepVector & a,
const HepSymMatrix & Ea )

sets helix pivot position, parameters, and error matrix.

Definition at line 326 of file Analysis/VertexFit/src/Helix.cxx.

326 {
327 m_pivot = pivot;
328 m_a = a;
329 m_Ea = Ea;
330 m_matrixValid = true;
331 updateCache();
332}

◆ set() [2/3]

void VFHelix::set ( const HepPoint3D & pivot,
const HepVector & a,
const HepSymMatrix & Ea )

sets helix pivot position, parameters, and error matrix.

◆ set() [3/3]

void VFHelix::set ( const HepPoint3D & pivot,
const HepVector & a,
const HepSymMatrix & Ea )

sets helix pivot position, parameters, and error matrix.

◆ sinPhi0() [1/3]

double VFHelix::sinPhi0 ( void ) const
inline

Definition at line 216 of file Analysis/VertexFit/include/VertexFit/Helix.h.

216{ return m_sp; }

◆ sinPhi0() [2/3]

double VFHelix::sinPhi0 ( void ) const

◆ sinPhi0() [3/3]

double VFHelix::sinPhi0 ( void ) const

◆ tanl() [1/3]

double VFHelix::tanl ( void ) const
inline

Definition at line 191 of file Analysis/VertexFit/include/VertexFit/Helix.h.

191{ return m_ac[4]; }

Referenced by pivot().

◆ tanl() [2/3]

double VFHelix::tanl ( void ) const

◆ tanl() [3/3]

double VFHelix::tanl ( void ) const

◆ x() [1/9]

double * VFHelix::x ( double dPhi,
double p[3] ) const

Definition at line 110 of file Analysis/VertexFit/src/Helix.cxx.

110 {
111 //
112 // Calculate position (x,y,z) along helix.
113 //
114 // x = x0 + dr * cos(phi0) + (alpha / kappa) * (cos(phi0) - cos(phi0+phi))
115 // y = y0 + dr * sin(phi0) + (alpha / kappa) * (sin(phi0) - sin(phi0+phi))
116 // z = z0 + dz - (alpha / kappa) * tan(lambda) * phi
117 //
118
119 p[0] = m_pivot.x() + m_ac[0] * m_cp + m_r * ( m_cp - cos( m_ac[1] + phi ) );
120 p[1] = m_pivot.y() + m_ac[0] * m_sp + m_r * ( m_sp - sin( m_ac[1] + phi ) );
121 p[2] = m_pivot.z() + m_ac[3] - m_r * m_ac[4] * phi;
122
123 return p;
124}

◆ x() [2/9]

double * VFHelix::x ( double dPhi,
double p[3] ) const

◆ x() [3/9]

double * VFHelix::x ( double dPhi,
double p[3] ) const

◆ x() [4/9]

HepPoint3D VFHelix::x ( double dPhi,
HepSymMatrix & Ex ) const

returns position and convariance matrix(Ex) after rotation.

Definition at line 126 of file Analysis/VertexFit/src/Helix.cxx.

126 {
127 double x = m_pivot.x() + m_ac[0] * m_cp + m_r * ( m_cp - cos( m_ac[1] + phi ) );
128 double y = m_pivot.y() + m_ac[0] * m_sp + m_r * ( m_sp - sin( m_ac[1] + phi ) );
129 double z = m_pivot.z() + m_ac[3] - m_r * m_ac[4] * phi;
130
131 //
132 // Calculate position error matrix.
133 // Ex(phi) = (@x/@a)(Ea)(@x/@a)^T, phi is deflection angle to specify the
134 // point to be calcualted.
135 //
136 // HepMatrix dXDA(3, 5, 0);
137 // dXDA = delXDelA(phi);
138 // Ex.assign(dXDA * m_Ea * dXDA.T());
139
140 if ( m_matrixValid ) Ex = m_Ea.similarity( delXDelA( phi ) );
141 else Ex = m_Ea;
142
143 return HepPoint3D( x, y, z );
144}
HepGeom::Point3D< double > HepPoint3D
HepMatrix delXDelA(double phi) const

◆ x() [5/9]

HepPoint3D VFHelix::x ( double dPhi,
HepSymMatrix & Ex ) const

returns position and convariance matrix(Ex) after rotation.

◆ x() [6/9]

HepPoint3D VFHelix::x ( double dPhi,
HepSymMatrix & Ex ) const

returns position and convariance matrix(Ex) after rotation.

◆ x() [7/9]

HepPoint3D VFHelix::x ( double dPhi = 0.) const

returns position after rotating angle dPhi in phi direction.

Definition at line 94 of file Analysis/VertexFit/src/Helix.cxx.

94 {
95 //
96 // Calculate position (x,y,z) along helix.
97 //
98 // x = x0 + dr * cos(phi0) + (alpha / kappa) * (cos(phi0) - cos(phi0+phi))
99 // y = y0 + dr * sin(phi0) + (alpha / kappa) * (sin(phi0) - sin(phi0+phi))
100 // z = z0 + dz - (alpha / kappa) * tan(lambda) * phi
101 //
102
103 double x = m_pivot.x() + m_ac[0] * m_cp + m_r * ( m_cp - cos( m_ac[1] + phi ) );
104 double y = m_pivot.y() + m_ac[0] * m_sp + m_r * ( m_sp - sin( m_ac[1] + phi ) );
105 double z = m_pivot.z() + m_ac[3] - m_r * m_ac[4] * phi;
106
107 return HepPoint3D( x, y, z );
108}

Referenced by momentum(), x(), and x().

◆ x() [8/9]

HepPoint3D VFHelix::x ( double dPhi = 0.) const

returns position after rotating angle dPhi in phi direction.

◆ x() [9/9]

HepPoint3D VFHelix::x ( double dPhi = 0.) const

returns position after rotating angle dPhi in phi direction.

Member Data Documentation

◆ ConstantAlpha

const double VFHelix::ConstantAlpha = 333.564095
static

Constant alpha for uniform field.

Definition at line 145 of file Analysis/VertexFit/include/VertexFit/Helix.h.

Referenced by del4MXDelA().


The documentation for this class was generated from the following files: