SND@LHC Software
Loading...
Searching...
No Matches
genfit::HelixTrackModel Class Reference

Helix track model for testing purposes. More...

#include <HelixTrackModel.h>

Inheritance diagram for genfit::HelixTrackModel:
Collaboration diagram for genfit::HelixTrackModel:

Public Member Functions

 HelixTrackModel (const TVector3 &pos, const TVector3 &mom, double charge)
 
TVector3 getPos (double tracklength) const
 
void getPosMom (double tracklength, TVector3 &pos, TVector3 &mom) const
 
void getPosDir (double tracklength, TVector3 &pos, TVector3 &dir) const
 

Private Attributes

double sgn_
 
double mom_
 
double R_
 
TVector3 center_
 
double alpha0_
 
double theta_
 

Detailed Description

Helix track model for testing purposes.

Definition at line 41 of file HelixTrackModel.h.

Constructor & Destructor Documentation

◆ HelixTrackModel()

genfit::HelixTrackModel::HelixTrackModel ( const TVector3 &  pos,
const TVector3 &  mom,
double  charge 
)

Definition at line 28 of file HelixTrackModel.cc.

28 {
29
30 mom_ = mom.Mag();
31
33 std::cout<<"check " << B.Y() << "\n";
34 // B must point in Z direction
35 // assert(B.X() == 0);
36 // assert(B.Y() == 0);
37
38 double Bz = B.Z();
39
40 // calc helix parameters
41 TVector3 dir2D(mom);
42 dir2D.SetZ(0);
43 dir2D.SetMag(1.);
44 R_ = 100.*mom.Perp()/(0.0299792458*Bz) / fabs(charge);
45 sgn_ = 1;
46 if (charge<0) sgn_=-1.;
47 center_ = pos + sgn_ * R_ * dir2D.Orthogonal();
48 alpha0_ = (pos-center_).Phi();
49
50 theta_ = mom.Theta();
51
52 //std::cout<<"radius " << R_ << " center ";
53 //center_.Print();
54
55}
TVector3 getFieldVal(const TVector3 &position)
This does NOT use the cache!
static FieldManager * getInstance()
Get singleton instance.

Member Function Documentation

◆ getPos()

TVector3 genfit::HelixTrackModel::getPos ( double  tracklength) const

Definition at line 58 of file HelixTrackModel.cc.

58 {
59
60 TVector3 pos;
61
62 double angle = alpha0_ - sgn_ * tracklength / R_ * sin(theta_);
63
64 TVector3 radius(R_,0,0);
65 radius.SetPhi(angle);
66 pos = center_ + radius;
67 pos.SetZ(center_.Z() - sgn_ * ((alpha0_-angle)*R_ * tan(theta_-M_PI/2.)) );
68
69 return pos;
70}

◆ getPosDir()

void genfit::HelixTrackModel::getPosDir ( double  tracklength,
TVector3 &  pos,
TVector3 &  dir 
) const
inline

Definition at line 50 of file HelixTrackModel.h.

50 {
51 getPosMom(tracklength, pos, dir);
52 dir.SetMag(1);
53 }
void getPosMom(double tracklength, TVector3 &pos, TVector3 &mom) const

◆ getPosMom()

void genfit::HelixTrackModel::getPosMom ( double  tracklength,
TVector3 &  pos,
TVector3 &  mom 
) const

Definition at line 72 of file HelixTrackModel.cc.

72 {
73
74 double angle = alpha0_ - sgn_ * tracklength / R_ * sin(theta_);
75
76 TVector3 radius(R_,0,0);
77 radius.SetPhi(angle);
78 pos = center_ + radius;
79 pos.SetZ(center_.Z() - sgn_ * ((alpha0_-angle)*R_ * tan(theta_-M_PI/2.)) );
80
81 mom.SetXYZ(1,1,1);
82 mom.SetTheta(theta_);
83 mom.SetPhi(angle - sgn_*M_PI/2.);
84 mom.SetMag(mom_);
85
86 /*std::cout<<"tracklength " << tracklength << "\n";
87 std::cout<<"angle " << angle << "\n";
88 std::cout<<"radius vector "; radius.Print();
89 std::cout<<"pos "; pos.Print();
90 std::cout<<"mom "; mom.Print();*/
91
92}

Member Data Documentation

◆ alpha0_

double genfit::HelixTrackModel::alpha0_
private

Definition at line 62 of file HelixTrackModel.h.

◆ center_

TVector3 genfit::HelixTrackModel::center_
private

Definition at line 61 of file HelixTrackModel.h.

◆ mom_

double genfit::HelixTrackModel::mom_
private

Definition at line 59 of file HelixTrackModel.h.

◆ R_

double genfit::HelixTrackModel::R_
private

Definition at line 60 of file HelixTrackModel.h.

◆ sgn_

double genfit::HelixTrackModel::sgn_
private

Definition at line 58 of file HelixTrackModel.h.

◆ theta_

double genfit::HelixTrackModel::theta_
private

Definition at line 63 of file HelixTrackModel.h.


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