56 fFastTrack=&fastTrack;
79 theWeightChange = currentTrack.
GetWeight();
104 if (localCoordinates)
106 TransformPoint(position);
108 thePositionChange = globalPosition;
130 if (localCoordinates)
132 TransformAxis(momentum);
134 SetMomentumChange(globalMomentum.
unit());
156 if (localCoordinates)
158 TransformAxis(direction);
160 SetMomentumChange(globalDirection.
unit());
183 if (localCoordinates)
185 TransformAxis(globalPolarization);
187 thePolarizationChange = globalPolarization;
242 if (localCoordinates)
246 GetInverseAffineTransformation()->
247 TransformAxis(globalDynamics->
248 GetMomentumDirection()));
254 globalPolarization.
x(),
255 globalPolarization.
y(),
256 globalPolarization.
z()
261 TransformPoint(globalPosition);
289 tellWhatIsWrong <<
"G4FastStep can be initialised only through G4FastTrack."
291 G4Exception(
"G4FastStep::Initialize(const G4Track&)",
331 theMomentumChange = right.theMomentumChange;
332 thePolarizationChange = right.thePolarizationChange;
333 thePositionChange = right.thePositionChange;
334 theTimeChange = right.theTimeChange;
335 theEnergyChange = right.theEnergyChange;
339 theWeightChange = right.theWeightChange;
390 pPostStepPoint->
SetWeight( theWeightChange );
423 pPostStepPoint->
SetWeight( theWeightChange );
441 G4cout <<
" Position - x (mm) : "
442 << std::setw(20) << thePositionChange.
x()/
mm
444 G4cout <<
" Position - y (mm) : "
445 << std::setw(20) << thePositionChange.
y()/
mm
447 G4cout <<
" Position - z (mm) : "
448 << std::setw(20) << thePositionChange.
z()/
mm
451 << std::setw(20) << theTimeChange/
ns
453 G4cout <<
" Proper Time (ns) : "
454 << std::setw(20) << theProperTimeChange/
ns
456 G4cout <<
" Momentum Direct - x : "
457 << std::setw(20) << theMomentumChange.
x()
459 G4cout <<
" Momentum Direct - y : "
460 << std::setw(20) << theMomentumChange.
y()
462 G4cout <<
" Momentum Direct - z : "
463 << std::setw(20) << theMomentumChange.
z()
465 G4cout <<
" Kinetic Energy (MeV): "
466 << std::setw(20) << theEnergyChange/
MeV
468 G4cout <<
" Polarization - x : "
469 << std::setw(20) << thePolarizationChange.
x()
471 G4cout <<
" Polarization - y : "
472 << std::setw(20) << thePolarizationChange.
y()
474 G4cout <<
" Polarization - z : "
475 << std::setw(20) << thePolarizationChange.
z()
500 G4bool exitWithError =
false;
508 ed <<
"The energy becomes larger than the initial value, difference = " << accuracy <<
" MeV" <<
G4endl;
509 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
516 G4bool itsOKforMomentum =
true;
517 if ( theEnergyChange >0.)
519 accuracy = std::abs(theMomentumChange.
mag2()-1.0);
523 ed <<
"The Momentum Change is not a unit vector, difference = " << accuracy <<
G4endl;
524 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
527 itsOK = itsOKforMomentum =
false;
536 ed <<
"The global time is getting backward, difference = " << accuracy <<
" ns" <<
G4endl;
537 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
547 ed <<
"The proper time is getting backward, difference = " << accuracy <<
" ns" <<
G4endl;
548 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
565 ed <<
"An inaccuracy in G4FastStep is beyond tolerance." <<
G4endl;
566 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
572 if (!itsOKforMomentum) {
574 theMomentumChange = (1./vmag)*theMomentumChange;