16 fFieldStrength(0), fOrigin(), fMomentum(), fCharge(0)
27 TVector3 dirRadius =
fMomentum.Cross(magField).Unit();
32 TVector3 zeroCircle =
fOrigin - circleCenter;
35 Double_t arcLength = ratioPtPl * zLength;
37 Double_t newPhi = deltaPhi + zeroCircle.Phi();
39 TVector3 newOrigin = zeroCircle;
40 newOrigin.SetPhi(newPhi);
41 newOrigin += circleCenter;
45 newMomentum.RotateZ(deltaPhi);
47 std::cout <<
"PndHelixPropagator::PropagateToZ " << zPos << std::endl;
48 std::cout <<
"Origin: ";
fOrigin.Print(); std::cout << std::endl;
49 std::cout <<
"Momentum: ";
fMomentum.Print(); std::cout <<
" Ratio Pt/Pl: " << ratioPtPl <<
" Radius: " <<
Radius() <<
" "; dirRadius.Print(); std::cout << std::endl;
50 std::cout <<
"circleCenter: "; circleCenter.Print(); std::cout << std::endl;
51 std::cout <<
"zeroCircle: "; zeroCircle.Print(); std::cout << std::endl;
52 std::cout <<
"Phi: " << zeroCircle.Phi() <<
" deltaPhi: " << deltaPhi <<
" newPhi: " << newPhi << std::endl;
53 std::cout <<
"NewOrigin: "; newOrigin.Print(); std::cout << std::endl;
54 std::cout <<
"NewMomentum: "; newMomentum.Print(); std::cout << std::endl;
57 FairTrackPar result(newOrigin.x(), newOrigin.y(), newOrigin.z(), newMomentum.Px(), newMomentum.Py(), newMomentum.Pz(),
fCharge);
66 TVector3 dirRadius =
fMomentum.Cross(magField).Unit();
72 TVector3 zeroCircle =
fOrigin - circleCenter;
74 TVector3 negCircleCenter = -circleCenter;
76 Double_t deltaPhi = negCircleCenter.DeltaPhi(zeroCircle);
78 TVector3 newOrigin = negCircleCenter.Unit() *
Radius() + circleCenter;
84 newMomentum.RotateZ(deltaPhi);
86 std::cout <<
"PndHelixPropagator::PropagateToXYPos" << std::endl;
87 std::cout <<
"Origin: ";
fOrigin.Print(); std::cout << std::endl;
88 std::cout <<
"Momentum: ";
fMomentum.Print(); std::cout <<
" Ratio Pt/Pl: " << ratioPtPl <<
" Radius: " <<
Radius() <<
" "; dirRadius.Print(); std::cout << std::endl;
89 std::cout <<
"circleCenter: "; circleCenter.Print(); std::cout <<
" " << circleCenter.Pt() << std::endl;
90 std::cout <<
"zeroCircle: "; zeroCircle.Print(); std::cout << std::endl;
91 std::cout <<
"Phi: " << zeroCircle.Phi() <<
" deltaPhi: " << deltaPhi << std::endl;
92 std::cout <<
"NewOrigin: "; newOrigin.Print(); std::cout << std::endl;
93 std::cout <<
"NewMomentum: "; newMomentum.Print(); std::cout << std::endl;
96 FairTrackPar result(newOrigin.x(), newOrigin.y(), newOrigin.z(), newMomentum.Px(), newMomentum.Py(), newMomentum.Pz(),
fCharge);
104 std::cout <<
"*** -E- PndHelixPropagator::PropagateToS not yet implemented!" << std::endl;
105 return FairTrackPar();
112 TVector3 dirRadius =
fMomentum.Cross(magField).Unit();
120 TVector3 zeroCircle =
fOrigin - circleCenter;
122 Double_t newPhi = zeroCircle.Phi() + stepInRad;
123 TVector3 newOrigin = zeroCircle;
124 newOrigin.SetPhi(newPhi);
125 newOrigin += circleCenter;
133 newMomentum.RotateZ(stepInRad);
135 std::cout <<
"PndHelixPropagator::PropagateByAngle " << step << std::endl;
136 std::cout <<
"Origin: ";
fOrigin.Print(); std::cout << std::endl;
137 std::cout <<
"Momentum: ";
fMomentum.Print(); std::cout <<
" Ratio Pt/Pl: " << ratioPtPl <<
" Radius: " <<
Radius() <<
" "; dirRadius.Print(); std::cout << std::endl;
138 std::cout <<
"circleCenter: "; circleCenter.Print(); std::cout << std::endl;
139 std::cout <<
"zeroCircle: "; zeroCircle.Print(); std::cout << std::endl;
140 std::cout <<
"Phi: " << zeroCircle.Phi() <<
" deltaPhi: " << stepInRad <<
" newPhi: " << newPhi << std::endl;
141 std::cout <<
"NewOrigin: "; newOrigin.Print(); std::cout << std::endl;
142 std::cout <<
"NewMomentum: "; newMomentum.Print(); std::cout << std::endl;
145 FairTrackPar result(newOrigin.x(), newOrigin.y(), newOrigin.z(), newMomentum.Px(), newMomentum.Py(), newMomentum.Pz(),
fCharge);
FairTrackPar PropagateByAngle(Double_t step)
virtual ~PndHelixPropagator()
FairTrackPar PropagateToS(Double_t)
FairTrackPar PropagateToZ(Double_t zPos)
FairTrackPar PropagateToXYPos(TVector2 xyPos)