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

Helix parameter class. More...

#include <Dedx_Helix.h>

Public Member Functions

 Dedx_Helix (const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
 Constructor with pivot, helix parameter a, and its error matrix.
 Dedx_Helix (const HepPoint3D &pivot, const HepVector &a)
 Constructor without error matrix.
 Dedx_Helix (const HepPoint3D &position, const Hep3Vector &momentum, double charge)
 Constructor with position, momentum, and charge.
virtual ~Dedx_Helix ()
 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
Dedx_Helixoperator= (const Dedx_Helix &)
 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
 Dedx_Helix (const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
 Constructor with pivot, helix parameter a, and its error matrix.
 Dedx_Helix (const HepPoint3D &pivot, const HepVector &a)
 Constructor without error matrix.
 Dedx_Helix (const HepPoint3D &position, const Hep3Vector &momentum, double charge)
 Constructor with position, momentum, and charge.
virtual ~Dedx_Helix ()
 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
Dedx_Helixoperator= (const Dedx_Helix &)
 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
 Dedx_Helix (const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
 Constructor with pivot, helix parameter a, and its error matrix.
 Dedx_Helix (const HepPoint3D &pivot, const HepVector &a)
 Constructor without error matrix.
 Dedx_Helix (const HepPoint3D &position, const Hep3Vector &momentum, double charge)
 Constructor with position, momentum, and charge.
virtual ~Dedx_Helix ()
 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
Dedx_Helixoperator= (const Dedx_Helix &)
 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

Constructor & Destructor Documentation

◆ Dedx_Helix() [1/9]

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

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

Definition at line 119 of file Dedx_Helix.cxx.

121 : // m_bField(10.0),
122 // m_alpha(333.564095),
123 m_pivot( pivot )
124 , m_a( a )
125 , m_matrixValid( true )
126 , m_Ea( Ea ) {
127 // ISvcLocator * SvcLocator = Gaudi::SvcLocator();
128 StatusCode scmgn = Gaudi::svcLocator()->service( "MagneticFieldSvc", m_pmgnIMF );
129 if ( scmgn != StatusCode::SUCCESS )
130 {
131 // log << MSG::ERROR << "Unable to open Magnetic field service"<<endmsg;
132 std::cout << "Unable to open Magnetic field service" << std::endl;
133 }
134 m_bField = 10000 * ( m_pmgnIMF->getReferField() );
135 m_alpha = 10000. / 2.99792458 / m_bField;
136 // m_alpha = 222.376063;
137 updateCache();
138}
const HepVector & a(void) const
returns helix parameters.
const HepSymMatrix & Ea(void) const
returns error matrix.
const HepPoint3D & pivot(void) const
returns pivot position.

Referenced by operator=().

◆ Dedx_Helix() [2/9]

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

Constructor without error matrix.

Definition at line 140 of file Dedx_Helix.cxx.

142 : // m_bField(10.0),
143 // m_alpha(333.564095),
144 m_pivot( pivot )
145 , m_a( a )
146 , m_matrixValid( false )
147 , m_Ea( HepSymMatrix( 5, 0 ) ) {
148 StatusCode scmgn = Gaudi::svcLocator()->service( "MagneticFieldSvc", m_pmgnIMF );
149 if ( scmgn != StatusCode::SUCCESS )
150 {
151 // log << MSG::ERROR << "Unable to open Magnetic field service"<<endmsg;
152 std::cout << "Unable to open Magnetic field service" << std::endl;
153 }
154 m_bField = 10000 * ( m_pmgnIMF->getReferField() );
155 m_alpha = 10000. / 2.99792458 / m_bField;
156 // cout<<"m_bField is = "<<m_bField<<" m_alpha is = "<<m_alpha<<endl;
157 // m_alpha = 222.376063;
158 updateCache();
159}

◆ Dedx_Helix() [3/9]

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

Constructor with position, momentum, and charge.

Definition at line 161 of file Dedx_Helix.cxx.

163 : // m_bField(10.0),
164 // m_alpha(333.564095),
165 m_pivot( position )
166 , m_a( HepVector( 5, 0 ) )
167 , m_matrixValid( false )
168 , m_Ea( HepSymMatrix( 5, 0 ) ) {
169 StatusCode scmgn = Gaudi::svcLocator()->service( "MagneticFieldSvc", m_pmgnIMF );
170 if ( scmgn != StatusCode::SUCCESS )
171 {
172 // log << MSG::ERROR << "Unable to open Magnetic field service"<<endmsg;
173 std::cout << "Unable to open Magnetic field service" << std::endl;
174 }
175 m_bField = 10000 * ( m_pmgnIMF->getReferField() );
176 m_alpha = 10000. / 2.99792458 / m_bField;
177
178 m_a[0] = 0.;
179 m_a[1] = fmod( atan2( -momentum.x(), momentum.y() ) + M_PI4, M_PI2 );
180 m_a[3] = 0.;
181 double perp( momentum.perp() );
182 if ( perp != 0.0 )
183 {
184 m_a[2] = charge / perp;
185 m_a[4] = momentum.z() / perp;
186 }
187 else
188 {
189 m_a[2] = charge * ( DBL_MAX );
190 if ( momentum.z() >= 0 ) { m_a[4] = ( DBL_MAX ); }
191 else { m_a[4] = -( DBL_MAX ); }
192 }
193 // m_alpha = 222.376063;
194 updateCache();
195}
const double M_PI2
const double M_PI4
Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.

◆ ~Dedx_Helix() [1/3]

Dedx_Helix::~Dedx_Helix ( )
virtual

Destructor.

Definition at line 197 of file Dedx_Helix.cxx.

197{}

◆ Dedx_Helix() [4/9]

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

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

◆ Dedx_Helix() [5/9]

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

Constructor without error matrix.

◆ Dedx_Helix() [6/9]

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

Constructor with position, momentum, and charge.

◆ ~Dedx_Helix() [2/3]

virtual Dedx_Helix::~Dedx_Helix ( )
virtual

Destructor.

◆ Dedx_Helix() [7/9]

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

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

◆ Dedx_Helix() [8/9]

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

Constructor without error matrix.

◆ Dedx_Helix() [9/9]

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

Constructor with position, momentum, and charge.

◆ ~Dedx_Helix() [3/3]

virtual Dedx_Helix::~Dedx_Helix ( )
virtual

Destructor.

Member Function Documentation

◆ a() [1/6]

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

sets helix parameters.

Definition at line 198 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

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

◆ a() [2/6]

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

sets helix parameters.

◆ a() [3/6]

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

sets helix parameters.

◆ a() [4/6]

const HepVector & Dedx_Helix::a ( void ) const
inline

returns helix parameters.

Definition at line 194 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

194{ return m_a; }

Referenced by bFieldZ(), Dedx_Helix(), Dedx_Helix(), DedxCorrecSvc::PathL(), and set().

◆ a() [5/6]

const HepVector & Dedx_Helix::a ( void ) const

returns helix parameters.

◆ a() [6/6]

const HepVector & Dedx_Helix::a ( void ) const

returns helix parameters.

◆ bFieldZ() [1/6]

double Dedx_Helix::bFieldZ ( double a)
inline

sets/returns z componet of the magnetic field.

Definition at line 206 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

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

◆ bFieldZ() [2/6]

double Dedx_Helix::bFieldZ ( double )

sets/returns z componet of the magnetic field.

◆ bFieldZ() [3/6]

double Dedx_Helix::bFieldZ ( double )

sets/returns z componet of the magnetic field.

◆ bFieldZ() [4/6]

double Dedx_Helix::bFieldZ ( void ) const
inline

Definition at line 213 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

213{ return m_bField; }

◆ bFieldZ() [5/6]

double Dedx_Helix::bFieldZ ( void ) const

◆ bFieldZ() [6/6]

double Dedx_Helix::bFieldZ ( void ) const

◆ center() [1/3]

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

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

Definition at line 174 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

174{ return m_center; }

◆ center() [2/3]

const HepPoint3D & Dedx_Helix::center ( void ) const

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

◆ center() [3/3]

const HepPoint3D & Dedx_Helix::center ( void ) const

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

◆ cosPhi0() [1/3]

double Dedx_Helix::cosPhi0 ( void ) const
inline

Definition at line 217 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

217{ return m_cp; }

◆ cosPhi0() [2/3]

double Dedx_Helix::cosPhi0 ( void ) const

◆ cosPhi0() [3/3]

double Dedx_Helix::cosPhi0 ( void ) const

◆ curv() [1/3]

double Dedx_Helix::curv ( void ) const
inline

Definition at line 192 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

192{ return m_r; }

◆ curv() [2/3]

double Dedx_Helix::curv ( void ) const

◆ curv() [3/3]

double Dedx_Helix::curv ( void ) const

◆ del4MDelA() [1/3]

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

Definition at line 635 of file Dedx_Helix.cxx.

635 {
636 //
637 // Calculate Jacobian (@4m/@a)
638 // Vector a is helix parameters and phi is internal parameter.
639 // Vector 4m is 4 momentum.
640 //
641
642 HepMatrix d4MDA( 4, 5, 0 );
643
644 double phi0 = m_ac[1];
645 double cpa = m_ac[2];
646 double tnl = m_ac[4];
647
648 double cosf0phi = cos( phi0 + phi );
649 double sinf0phi = sin( phi0 + phi );
650
651 double rho;
652 if ( cpa != 0. ) rho = 1. / cpa;
653 else rho = ( DBL_MAX );
654
655 double charge = 1.;
656 if ( cpa < 0. ) charge = -1.;
657
658 double E = sqrt( rho * rho * ( 1. + tnl * tnl ) + mass * mass );
659
660 d4MDA[0][1] = -fabs( rho ) * cosf0phi;
661 d4MDA[0][2] = charge * rho * rho * sinf0phi;
662
663 d4MDA[1][1] = -fabs( rho ) * sinf0phi;
664 d4MDA[1][2] = -charge * rho * rho * cosf0phi;
665
666 d4MDA[2][2] = -charge * rho * rho * tnl;
667 d4MDA[2][4] = fabs( rho );
668
669 if ( cpa != 0.0 && E != 0.0 )
670 {
671 d4MDA[3][2] = ( -1. - tnl * tnl ) / ( cpa * cpa * cpa * E );
672 d4MDA[3][4] = tnl / ( cpa * cpa * E );
673 }
674 else
675 {
676 d4MDA[3][2] = ( DBL_MAX );
677 d4MDA[3][4] = ( DBL_MAX );
678 }
679 return d4MDA;
680}
double mass

Referenced by momentum().

◆ del4MDelA() [2/3]

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

◆ del4MDelA() [3/3]

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

◆ del4MXDelA() [1/3]

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

Definition at line 682 of file Dedx_Helix.cxx.

682 {
683 //
684 // Calculate Jacobian (@4mx/@a)
685 // Vector a is helix parameters and phi is internal parameter.
686 // Vector 4xm is 4 momentum and position.
687 //
688
689 HepMatrix d4MXDA( 7, 5, 0 );
690
691 const double& dr = m_ac[0];
692 const double& phi0 = m_ac[1];
693 const double& cpa = m_ac[2];
694 const double& dz = m_ac[3];
695 const double& tnl = m_ac[4];
696
697 double cosf0phi = cos( phi0 + phi );
698 double sinf0phi = sin( phi0 + phi );
699
700 double rho;
701 if ( cpa != 0. ) rho = 1. / cpa;
702 else rho = ( DBL_MAX );
703
704 double charge = 1.;
705 if ( cpa < 0. ) charge = -1.;
706
707 double E = sqrt( rho * rho * ( 1. + tnl * tnl ) + mass * mass );
708
709 d4MXDA[0][1] = -fabs( rho ) * cosf0phi;
710 d4MXDA[0][2] = charge * rho * rho * sinf0phi;
711
712 d4MXDA[1][1] = -fabs( rho ) * sinf0phi;
713 d4MXDA[1][2] = -charge * rho * rho * cosf0phi;
714
715 d4MXDA[2][2] = -charge * rho * rho * tnl;
716 d4MXDA[2][4] = fabs( rho );
717
718 if ( cpa != 0.0 && E != 0.0 )
719 {
720 d4MXDA[3][2] = ( -1. - tnl * tnl ) / ( cpa * cpa * cpa * E );
721 d4MXDA[3][4] = tnl / ( cpa * cpa * E );
722 }
723 else
724 {
725 d4MXDA[3][2] = ( DBL_MAX );
726 d4MXDA[3][4] = ( DBL_MAX );
727 }
728
729 d4MXDA[4][0] = m_cp;
730 d4MXDA[4][1] = -dr * m_sp + m_r * ( -m_sp + sinf0phi );
731 if ( cpa != 0.0 ) { d4MXDA[4][2] = -( m_r / cpa ) * ( m_cp - cosf0phi ); }
732 else { d4MXDA[4][2] = ( DBL_MAX ); }
733
734 d4MXDA[5][0] = m_sp;
735 d4MXDA[5][1] = dr * m_cp + m_r * ( m_cp - cosf0phi );
736 if ( cpa != 0.0 )
737 {
738 d4MXDA[5][2] = -( m_r / cpa ) * ( m_sp - sinf0phi );
739
740 d4MXDA[6][2] = ( m_r / cpa ) * tnl * phi;
741 }
742 else
743 {
744 d4MXDA[5][2] = ( DBL_MAX );
745
746 d4MXDA[6][2] = ( DBL_MAX );
747 }
748
749 d4MXDA[6][3] = 1.;
750 d4MXDA[6][4] = -m_r * phi;
751
752 return d4MXDA;
753}
double dr(void) const
returns an element of parameters.

Referenced by momentum().

◆ del4MXDelA() [2/3]

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

◆ del4MXDelA() [3/3]

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

◆ delApDelA() [1/3]

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

Definition at line 503 of file Dedx_Helix.cxx.

503 {
504 //
505 // Calculate Jacobian (@ap/@a)
506 // Vector ap is new helix parameters and a is old helix parameters.
507 //
508
509 HepMatrix dApDA( 5, 5, 0 );
510
511 const double& dr = m_ac[0];
512 const double& phi0 = m_ac[1];
513 const double& cpa = m_ac[2];
514 const double& dz = m_ac[3];
515 const double& tnl = m_ac[4];
516
517 double drp = ap[0];
518 double phi0p = ap[1];
519 double cpap = ap[2];
520 double dzp = ap[3];
521 double tnlp = ap[4];
522
523 double rdr = m_r + dr;
524 double rdrpr;
525 if ( ( m_r + drp ) != 0.0 ) { rdrpr = 1. / ( m_r + drp ); }
526 else { rdrpr = ( DBL_MAX ); }
527 // double csfd = cos(phi0)*cos(phi0p) + sin(phi0)*sin(phi0p);
528 // double snfd = cos(phi0)*sin(phi0p) - sin(phi0)*cos(phi0p);
529 double csfd = cos( phi0p - phi0 );
530 double snfd = sin( phi0p - phi0 );
531 double phid = fmod( phi0p - phi0 + M_PI8, M_PI2 );
532 if ( phid > M_PI ) phid = phid - M_PI2;
533
534 dApDA[0][0] = csfd;
535 dApDA[0][1] = rdr * snfd;
536 if ( cpa != 0.0 ) { dApDA[0][2] = ( m_r / cpa ) * ( 1.0 - csfd ); }
537 else { dApDA[0][2] = ( DBL_MAX ); }
538
539 dApDA[1][0] = -rdrpr * snfd;
540 dApDA[1][1] = rdr * rdrpr * csfd;
541 if ( cpa != 0.0 ) { dApDA[1][2] = ( m_r / cpa ) * rdrpr * snfd; }
542 else { dApDA[1][2] = ( DBL_MAX ); }
543
544 dApDA[2][2] = 1.0;
545
546 dApDA[3][0] = m_r * rdrpr * tnl * snfd;
547 dApDA[3][1] = m_r * tnl * ( 1.0 - rdr * rdrpr * csfd );
548 if ( cpa != 0.0 ) { dApDA[3][2] = ( m_r / cpa ) * tnl * ( phid - m_r * rdrpr * snfd ); }
549 else { dApDA[3][2] = ( DBL_MAX ); }
550 dApDA[3][3] = 1.0;
551 dApDA[3][4] = -m_r * phid;
552
553 dApDA[4][4] = 1.0;
554
555 return dApDA;
556}
const double M_PI8
#define M_PI
Definition TConstant.h:4

Referenced by pivot().

◆ delApDelA() [2/3]

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

◆ delApDelA() [3/3]

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

◆ delMDelA() [1/3]

HepMatrix Dedx_Helix::delMDelA ( double phi) const

Definition at line 600 of file Dedx_Helix.cxx.

600 {
601 //
602 // Calculate Jacobian (@m/@a)
603 // Vector a is helix parameters and phi is internal parameter.
604 // Vector m is momentum.
605 //
606
607 HepMatrix dMDA( 3, 5, 0 );
608
609 const double& phi0 = m_ac[1];
610 const double& cpa = m_ac[2];
611 const double& tnl = m_ac[4];
612
613 double cosf0phi = cos( phi0 + phi );
614 double sinf0phi = sin( phi0 + phi );
615
616 double rho;
617 if ( cpa != 0. ) rho = 1. / cpa;
618 else rho = ( DBL_MAX );
619
620 double charge = 1.;
621 if ( cpa < 0. ) charge = -1.;
622
623 dMDA[0][1] = -fabs( rho ) * cosf0phi;
624 dMDA[0][2] = charge * rho * rho * sinf0phi;
625
626 dMDA[1][1] = -fabs( rho ) * sinf0phi;
627 dMDA[1][2] = -charge * rho * rho * cosf0phi;
628
629 dMDA[2][2] = -charge * rho * rho * tnl;
630 dMDA[2][4] = fabs( rho );
631
632 return dMDA;
633}

Referenced by momentum().

◆ delMDelA() [2/3]

HepMatrix Dedx_Helix::delMDelA ( double phi) const

◆ delMDelA() [3/3]

HepMatrix Dedx_Helix::delMDelA ( double phi) const

◆ delXDelA() [1/3]

HepMatrix Dedx_Helix::delXDelA ( double phi) const

Definition at line 558 of file Dedx_Helix.cxx.

558 {
559 //
560 // Calculate Jacobian (@x/@a)
561 // Vector a is helix parameters and phi is internal parameter
562 // which specifys the point to be calculated for Ex(phi).
563 //
564
565 HepMatrix dXDA( 3, 5, 0 );
566
567 const double& dr = m_ac[0];
568 const double& phi0 = m_ac[1];
569 const double& cpa = m_ac[2];
570 const double& dz = m_ac[3];
571 const double& tnl = m_ac[4];
572
573 double cosf0phi = cos( phi0 + phi );
574 double sinf0phi = sin( phi0 + phi );
575
576 dXDA[0][0] = m_cp;
577 dXDA[0][1] = -dr * m_sp + m_r * ( -m_sp + sinf0phi );
578 if ( cpa != 0.0 ) { dXDA[0][2] = -( m_r / cpa ) * ( m_cp - cosf0phi ); }
579 else { dXDA[0][2] = ( DBL_MAX ); }
580 // dXDA[0][3] = 0.0;
581 // dXDA[0][4] = 0.0;
582
583 dXDA[1][0] = m_sp;
584 dXDA[1][1] = dr * m_cp + m_r * ( m_cp - cosf0phi );
585 if ( cpa != 0.0 ) { dXDA[1][2] = -( m_r / cpa ) * ( m_sp - sinf0phi ); }
586 else { dXDA[1][2] = ( DBL_MAX ); }
587 // dXDA[1][3] = 0.0;
588 // dXDA[1][4] = 0.0;
589
590 // dXDA[2][0] = 0.0;
591 // dXDA[2][1] = 0.0;
592 if ( cpa != 0.0 ) { dXDA[2][2] = ( m_r / cpa ) * tnl * phi; }
593 else { dXDA[2][2] = ( DBL_MAX ); }
594 dXDA[2][3] = 1.0;
595 dXDA[2][4] = -m_r * phi;
596
597 return dXDA;
598}

Referenced by x().

◆ delXDelA() [2/3]

HepMatrix Dedx_Helix::delXDelA ( double phi) const

◆ delXDelA() [3/3]

HepMatrix Dedx_Helix::delXDelA ( double phi) const

◆ direction() [1/3]

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

returns direction vector after rotating angle dPhi in phi direction.

Definition at line 180 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

180{ 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 Dedx_Helix::direction ( double dPhi = 0.) const

returns direction vector after rotating angle dPhi in phi direction.

◆ direction() [3/3]

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

returns direction vector after rotating angle dPhi in phi direction.

◆ dr() [1/3]

double Dedx_Helix::dr ( void ) const
inline

returns an element of parameters.

Definition at line 182 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

182{ return m_ac[0]; }

Referenced by del4MXDelA(), delApDelA(), delXDelA(), DedxCorrecSvc::PathL(), and pivot().

◆ dr() [2/3]

double Dedx_Helix::dr ( void ) const

returns an element of parameters.

◆ dr() [3/3]

double Dedx_Helix::dr ( void ) const

returns an element of parameters.

◆ dz() [1/3]

double Dedx_Helix::dz ( void ) const
inline

◆ dz() [2/3]

double Dedx_Helix::dz ( void ) const

◆ dz() [3/3]

double Dedx_Helix::dz ( void ) const

◆ Ea() [1/6]

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

sets helix paramters and error matrix.

Definition at line 204 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

204{ return m_Ea = i; }

◆ Ea() [2/6]

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

sets helix paramters and error matrix.

◆ Ea() [3/6]

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

sets helix paramters and error matrix.

◆ Ea() [4/6]

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

returns error matrix.

Definition at line 196 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

196{ return m_Ea; }

Referenced by Dedx_Helix(), and set().

◆ Ea() [5/6]

const HepSymMatrix & Dedx_Helix::Ea ( void ) const

returns error matrix.

◆ Ea() [6/6]

const HepSymMatrix & Dedx_Helix::Ea ( void ) const

returns error matrix.

◆ ignoreErrorMatrix() [1/3]

void Dedx_Helix::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 755 of file Dedx_Helix.cxx.

755 {
756 m_matrixValid = false;
757 m_Ea *= 0.;
758}

◆ ignoreErrorMatrix() [2/3]

void Dedx_Helix::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 Dedx_Helix::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 Dedx_Helix::kappa ( void ) const
inline

Definition at line 186 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

186{ return m_ac[2]; }

Referenced by pivot().

◆ kappa() [2/3]

double Dedx_Helix::kappa ( void ) const

◆ kappa() [3/3]

double Dedx_Helix::kappa ( void ) const

◆ momentum() [1/15]

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

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

Definition at line 298 of file Dedx_Helix.cxx.

298 {
299 //
300 // Calculate momentum.
301 //
302 // Pt = | 1/kappa | (GeV/c)
303 //
304 // Px = -Pt * sin(phi0 + phi)
305 // Py = Pt * cos(phi0 + phi)
306 // Pz = Pt * tan(lambda)
307 //
308 // E = sqrt( 1/kappa/kappa * (1+tan(lambda)*tan(lambda)) + mass*mass )
309
310 double pt = fabs( m_pt );
311 double px = -pt * sin( m_ac[1] + phi );
312 double py = pt * cos( m_ac[1] + phi );
313 double pz = pt * m_ac[4];
314 double E = sqrt( pt * pt * ( 1. + m_ac[4] * m_ac[4] ) + mass * mass );
315
316 return HepLorentzVector( px, py, pz, E );
317}

◆ momentum() [2/15]

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

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

◆ momentum() [3/15]

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

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

◆ momentum() [4/15]

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

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

Definition at line 343 of file Dedx_Helix.cxx.

344 {
345 //
346 // Calculate momentum.
347 //
348 // Pt = | 1/kappa | (GeV/c)
349 //
350 // Px = -Pt * sin(phi0 + phi)
351 // Py = Pt * cos(phi0 + phi)
352 // Pz = Pt * tan(lambda)
353 //
354 // E = sqrt( 1/kappa/kappa * (1+tan(lambda)*tan(lambda)) + mass*mass )
355
356 double pt = fabs( m_pt );
357 double px = -pt * sin( m_ac[1] + phi );
358 double py = pt * cos( m_ac[1] + phi );
359 double pz = pt * m_ac[4];
360 double E = sqrt( pt * pt * ( 1. + m_ac[4] * m_ac[4] ) + mass * mass );
361
362 x.setX( m_pivot.x() + m_ac[0] * m_cp + m_r * ( m_cp - cos( m_ac[1] + phi ) ) );
363 x.setY( m_pivot.y() + m_ac[0] * m_sp + m_r * ( m_sp - sin( m_ac[1] + phi ) ) );
364 x.setZ( m_pivot.z() + m_ac[3] - m_r * m_ac[4] * phi );
365
366 if ( m_matrixValid ) Emx = m_Ea.similarity( del4MXDelA( phi, mass ) );
367 else Emx = m_Ea;
368
369 return HepLorentzVector( px, py, pz, E );
370}
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 Dedx_Helix::momentum ( double dPhi,
double mass,
HepPoint3D & x,
HepSymMatrix & Emx ) const

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

◆ momentum() [6/15]

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

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

◆ momentum() [7/15]

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

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

Definition at line 319 of file Dedx_Helix.cxx.

319 {
320 //
321 // Calculate momentum.
322 //
323 // Pt = | 1/kappa | (GeV/c)
324 //
325 // Px = -Pt * sin(phi0 + phi)
326 // Py = Pt * cos(phi0 + phi)
327 // Pz = Pt * tan(lambda)
328 //
329 // E = sqrt( 1/kappa/kappa * (1+tan(lambda)*tan(lambda)) + mass*mass )
330
331 double pt = fabs( m_pt );
332 double px = -pt * sin( m_ac[1] + phi );
333 double py = pt * cos( m_ac[1] + phi );
334 double pz = pt * m_ac[4];
335 double E = sqrt( pt * pt * ( 1. + m_ac[4] * m_ac[4] ) + mass * mass );
336
337 if ( m_matrixValid ) Em = m_Ea.similarity( del4MDelA( phi, mass ) );
338 else Em = m_Ea;
339
340 return HepLorentzVector( px, py, pz, E );
341}
HepMatrix del4MDelA(double phi, double mass) const

◆ momentum() [8/15]

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

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

◆ momentum() [9/15]

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

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

◆ momentum() [10/15]

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

returns momentum vector after rotating angle dPhi in phi direction.

Definition at line 276 of file Dedx_Helix.cxx.

276 {
277 //
278 // Calculate momentum.
279 //
280 // Pt = | 1/kappa | (GeV/c)
281 //
282 // Px = -Pt * sin(phi0 + phi)
283 // Py = Pt * cos(phi0 + phi)
284 // Pz = Pt * tan(lambda)
285 //
286
287 double pt = fabs( m_pt );
288 double px = -pt * sin( m_ac[1] + phi );
289 double py = pt * cos( m_ac[1] + phi );
290 double pz = pt * m_ac[4];
291
292 if ( m_matrixValid ) Em = m_Ea.similarity( delMDelA( phi ) );
293 else Em = m_Ea;
294
295 return Hep3Vector( px, py, pz );
296}
HepMatrix delMDelA(double phi) const

◆ momentum() [11/15]

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

returns momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [12/15]

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

returns momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [13/15]

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

returns momentum vector after rotating angle dPhi in phi direction.

Definition at line 257 of file Dedx_Helix.cxx.

257 {
258 //
259 // Calculate momentum.
260 //
261 // Pt = | 1/kappa | (GeV/c)
262 //
263 // Px = -Pt * sin(phi0 + phi)
264 // Py = Pt * cos(phi0 + phi)
265 // Pz = Pt * tan(lambda)
266 //
267
268 double pt = fabs( m_pt );
269 double px = -pt * sin( m_ac[1] + phi );
270 double py = pt * cos( m_ac[1] + phi );
271 double pz = pt * m_ac[4];
272
273 return Hep3Vector( px, py, pz );
274}

Referenced by Dedx_Helix().

◆ momentum() [14/15]

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

returns momentum vector after rotating angle dPhi in phi direction.

◆ momentum() [15/15]

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

returns momentum vector after rotating angle dPhi in phi direction.

◆ operator=() [1/3]

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

Copy operator.

Definition at line 445 of file Dedx_Helix.cxx.

445 {
446 if ( this == &i ) return *this;
447
448 m_bField = i.m_bField;
449 m_alpha = i.m_alpha;
450 m_pivot = i.m_pivot;
451 m_a = i.m_a;
452 m_Ea = i.m_Ea;
453 m_matrixValid = i.m_matrixValid;
454
455 m_center = i.m_center;
456 m_cp = i.m_cp;
457 m_sp = i.m_sp;
458 m_pt = i.m_pt;
459 m_r = i.m_r;
460 m_ac[0] = i.m_ac[0];
461 m_ac[1] = i.m_ac[1];
462 m_ac[2] = i.m_ac[2];
463 m_ac[3] = i.m_ac[3];
464 m_ac[4] = i.m_ac[4];
465
466 return *this;
467}

◆ operator=() [2/3]

Dedx_Helix & Dedx_Helix::operator= ( const Dedx_Helix & )

Copy operator.

◆ operator=() [3/3]

Dedx_Helix & Dedx_Helix::operator= ( const Dedx_Helix & )

Copy operator.

◆ phi0() [1/3]

double Dedx_Helix::phi0 ( void ) const
inline

◆ phi0() [2/3]

double Dedx_Helix::phi0 ( void ) const

◆ phi0() [3/3]

double Dedx_Helix::phi0 ( void ) const

◆ pivot() [1/6]

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

sets pivot position.

Definition at line 372 of file Dedx_Helix.cxx.

372 {
373 const double& dr = m_ac[0];
374 const double& phi0 = m_ac[1];
375 const double& kappa = m_ac[2];
376 const double& dz = m_ac[3];
377 const double& tanl = m_ac[4];
378
379 double rdr = dr + m_r;
380 double phi = fmod( phi0 + M_PI4, M_PI2 );
381 double csf0 = cos( phi );
382 double snf0 = ( 1. - csf0 ) * ( 1. + csf0 );
383 snf0 = sqrt( ( snf0 > 0. ) ? snf0 : 0. );
384 if ( phi > M_PI ) snf0 = -snf0;
385
386 double xc = m_pivot.x() + rdr * csf0;
387 double yc = m_pivot.y() + rdr * snf0;
388 double csf, snf;
389 if ( m_r != 0.0 )
390 {
391 csf = ( xc - newPivot.x() ) / m_r;
392 snf = ( yc - newPivot.y() ) / m_r;
393 double anrm = sqrt( csf * csf + snf * snf );
394 if ( anrm != 0.0 )
395 {
396 csf /= anrm;
397 snf /= anrm;
398 phi = atan2( snf, csf );
399 }
400 else
401 {
402 csf = 1.0;
403 snf = 0.0;
404 phi = 0.0;
405 }
406 }
407 else
408 {
409 csf = 1.0;
410 snf = 0.0;
411 phi = 0.0;
412 }
413 double phid = fmod( phi - phi0 + M_PI8, M_PI2 );
414 if ( phid > M_PI ) phid = phid - M_PI2;
415 double drp = ( m_pivot.x() + dr * csf0 + m_r * ( csf0 - csf ) - newPivot.x() ) * csf +
416 ( m_pivot.y() + dr * snf0 + m_r * ( snf0 - snf ) - newPivot.y() ) * snf;
417 double dzp = m_pivot.z() + dz - m_r * tanl * phid - newPivot.z();
418
419 HepVector ap( 5 );
420 ap[0] = drp;
421 ap[1] = fmod( phi + M_PI4, M_PI2 );
422 ap[2] = kappa;
423 ap[3] = dzp;
424 ap[4] = tanl;
425
426 // if (m_matrixValid) m_Ea.assign(delApDelA(ap) * m_Ea * delApDelA(ap).T());
427 if ( m_matrixValid ) m_Ea = m_Ea.similarity( delApDelA( ap ) );
428
429 m_a = ap;
430 m_pivot = newPivot;
431
432 //...Are these needed?...iw...
433 updateCache();
434 return m_pivot;
435}
HepMatrix delApDelA(const HepVector &ap) const

◆ pivot() [2/6]

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

sets pivot position.

◆ pivot() [3/6]

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

sets pivot position.

◆ pivot() [4/6]

const HepPoint3D & Dedx_Helix::pivot ( void ) const
inline

returns pivot position.

Definition at line 176 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

176{ return m_pivot; }

Referenced by Dedx_Helix(), Dedx_Helix(), DedxCorrecSvc::PathL(), and set().

◆ pivot() [5/6]

const HepPoint3D & Dedx_Helix::pivot ( void ) const

returns pivot position.

◆ pivot() [6/6]

const HepPoint3D & Dedx_Helix::pivot ( void ) const

returns pivot position.

◆ radius() [1/3]

double Dedx_Helix::radius ( void ) const
inline

returns radious of helix.

Definition at line 178 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

178{ return m_r; }

◆ radius() [2/3]

double Dedx_Helix::radius ( void ) const

returns radious of helix.

◆ radius() [3/3]

double Dedx_Helix::radius ( void ) const

returns radious of helix.

◆ set() [1/3]

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

sets helix pivot position, parameters, and error matrix.

Definition at line 437 of file Dedx_Helix.cxx.

437 {
438 m_pivot = pivot;
439 m_a = a;
440 m_Ea = Ea;
441 m_matrixValid = true;
442 updateCache();
443}

◆ set() [2/3]

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

sets helix pivot position, parameters, and error matrix.

◆ set() [3/3]

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

sets helix pivot position, parameters, and error matrix.

◆ sinPhi0() [1/3]

double Dedx_Helix::sinPhi0 ( void ) const
inline

Definition at line 215 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

215{ return m_sp; }

◆ sinPhi0() [2/3]

double Dedx_Helix::sinPhi0 ( void ) const

◆ sinPhi0() [3/3]

double Dedx_Helix::sinPhi0 ( void ) const

◆ tanl() [1/3]

double Dedx_Helix::tanl ( void ) const
inline

Definition at line 190 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

190{ return m_ac[4]; }

Referenced by pivot().

◆ tanl() [2/3]

double Dedx_Helix::tanl ( void ) const

◆ tanl() [3/3]

double Dedx_Helix::tanl ( void ) const

◆ x() [1/9]

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

Definition at line 221 of file Dedx_Helix.cxx.

221 {
222 //
223 // Calculate position (x,y,z) along helix.
224 //
225 // x = x0 + dr * cos(phi0) + (alpha / kappa) * (cos(phi0) - cos(phi0+phi))
226 // y = y0 + dr * sin(phi0) + (alpha / kappa) * (sin(phi0) - sin(phi0+phi))
227 // z = z0 + dz - (alpha / kappa) * tan(lambda) * phi
228 //
229
230 p[0] = m_pivot.x() + m_ac[0] * m_cp + m_r * ( m_cp - cos( m_ac[1] + phi ) );
231 p[1] = m_pivot.y() + m_ac[0] * m_sp + m_r * ( m_sp - sin( m_ac[1] + phi ) );
232 p[2] = m_pivot.z() + m_ac[3] - m_r * m_ac[4] * phi;
233
234 return p;
235}

◆ x() [2/9]

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

◆ x() [3/9]

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

◆ x() [4/9]

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

returns position and convariance matrix(Ex) after rotation.

Definition at line 237 of file Dedx_Helix.cxx.

237 {
238 double x = m_pivot.x() + m_ac[0] * m_cp + m_r * ( m_cp - cos( m_ac[1] + phi ) );
239 double y = m_pivot.y() + m_ac[0] * m_sp + m_r * ( m_sp - sin( m_ac[1] + phi ) );
240 double z = m_pivot.z() + m_ac[3] - m_r * m_ac[4] * phi;
241
242 //
243 // Calculate position error matrix.
244 // Ex(phi) = (@x/@a)(Ea)(@x/@a)^T, phi is deflection angle to specify the
245 // point to be calcualted.
246 //
247 // HepMatrix dXDA(3, 5, 0);
248 // dXDA = delXDelA(phi);
249 // Ex.assign(dXDA * m_Ea * dXDA.T());
250
251 if ( m_matrixValid ) Ex = m_Ea.similarity( delXDelA( phi ) );
252 else Ex = m_Ea;
253
254 return HepPoint3D( x, y, z );
255}
HepGeom::Point3D< double > HepPoint3D
HepMatrix delXDelA(double phi) const

◆ x() [5/9]

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

returns position and convariance matrix(Ex) after rotation.

◆ x() [6/9]

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

returns position and convariance matrix(Ex) after rotation.

◆ x() [7/9]

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

returns position after rotating angle dPhi in phi direction.

Definition at line 199 of file Dedx_Helix.cxx.

199 {
200 //
201 // Calculate position (x,y,z) along helix.
202 //
203 // x = x0 + dr * cos(phi0) + (alpha / kappa) * (cos(phi0) - cos(phi0+phi))
204 // y = y0 + dr * sin(phi0) + (alpha / kappa) * (sin(phi0) - sin(phi0+phi))
205 // z = z0 + dz - (alpha / kappa) * tan(lambda) * phi
206 //
207 // m_ac[0] = m_ac[0] *(-1);
208 // cout<<"m_bField is = "<<m_bField<<" m_alpha is = "<<m_alpha<<endl;
209 // cout<<"m_pivot is = "<<m_pivot<<" m_ac is = ("<<m_ac[0]<<" , "<<m_ac[1]<<" ,
210 // "<<m_ac[2]<<" , "<<m_ac[3]<<" ,
211 // "<<m_ac[4]<<" )"<<endl;
212 // cout<<"m_cp is = "<<m_cp<<" "<<" m_sp is = "<<m_sp<<" m_r is = "<<m_r<<endl;
213 // cout<<" m_r + m_ac[0] = "<<m_ac[0] +m_r<<endl;
214 double x = m_pivot.x() + m_ac[0] * m_cp + m_r * ( m_cp - cos( m_ac[1] + phi ) );
215 double y = m_pivot.y() + m_ac[0] * m_sp + m_r * ( m_sp - sin( m_ac[1] + phi ) );
216 double z = m_pivot.z() + m_ac[3] - m_r * m_ac[4] * phi;
217
218 return HepPoint3D( x, y, z );
219}

Referenced by momentum(), DedxCorrecSvc::PathL(), x(), and x().

◆ x() [8/9]

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

returns position after rotating angle dPhi in phi direction.

◆ x() [9/9]

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

returns position after rotating angle dPhi in phi direction.

Member Data Documentation

◆ ConstantAlpha

const double Dedx_Helix::ConstantAlpha = -333.564095
static

Constant alpha for uniform field.

Definition at line 144 of file InstallArea/x86_64-el9-gcc13-dbg/include/DedxCorrecSvc/Dedx_Helix.h.

Referenced by del4MXDelA().


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