56 fFastTrack=&fastTrack;
79 theWeightChange = currentTrack.
GetWeight();
104 if (localCoordinates)
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&)",
346 pPostStepPoint->
SetWeight( theWeightChange );
379 pPostStepPoint->
SetWeight( theWeightChange );
402 G4cout <<
" Momentum Direct - x : " << std::setw(20) << theMomentumChange.
x() <<
G4endl;
403 G4cout <<
" Momentum Direct - y : " << std::setw(20) << theMomentumChange.
y() <<
G4endl;
404 G4cout <<
" Momentum Direct - z : " << std::setw(20) << theMomentumChange.
z() <<
G4endl;
408 G4cout <<
" Polarization - x : " << std::setw(20) << thePolarizationChange.
x() <<
G4endl;
409 G4cout <<
" Polarization - y : " << std::setw(20) << thePolarizationChange.
y() <<
G4endl;
410 G4cout <<
" Polarization - z : " << std::setw(20) << thePolarizationChange.
z() <<
G4endl;
435 G4bool exitWithError =
false;
443 ed <<
"The energy becomes larger than the initial value, difference = " << accuracy <<
" MeV" <<
G4endl;
444 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
451 G4bool itsOKforMomentum =
true;
452 if ( theEnergyChange >0.)
454 accuracy = std::abs(theMomentumChange.
mag2()-1.0);
458 ed <<
"The Momentum Change is not a unit vector, difference = " << accuracy <<
G4endl;
459 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
462 itsOK = itsOKforMomentum =
false;
471 ed <<
"The global time is getting backward, difference = " << accuracy <<
" ns" <<
G4endl;
472 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
482 ed <<
"The proper time is getting backward, difference = " << accuracy <<
" ns" <<
G4endl;
483 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
500 ed <<
"An inaccuracy in G4FastStep is beyond tolerance." <<
G4endl;
501 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
507 if (!itsOKforMomentum) {
509 theMomentumChange = (1./vmag)*theMomentumChange;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4GLOB_DLL std::ostream G4cerr
G4GLOB_DLL std::ostream G4cout
void SetPolarization(const G4ThreeVector &)
void SetMomentumDirection(const G4ThreeVector &aDirection)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
G4double GetProperTime() const
const G4ThreeVector & GetPolarization() const
void SetPrimaryTrackFinalKineticEnergyAndDirection(G4double, const G4ThreeVector &, G4bool localCoordinates=true)
G4Step * UpdateStepForPostStep(G4Step *Step)
void SetPrimaryTrackFinalPosition(const G4ThreeVector &, G4bool localCoordinates=true)
void SetPrimaryTrackFinalPolarization(const G4ThreeVector &, G4bool localCoordinates=true)
void ProposePrimaryTrackFinalKineticEnergyAndDirection(G4double, const G4ThreeVector &, G4bool localCoordinates=true)
void SetPrimaryTrackFinalMomentum(const G4ThreeVector &, G4bool localCoordinates=true)
G4bool CheckIt(const G4Track &)
void ProposePrimaryTrackFinalPosition(const G4ThreeVector &, G4bool localCoordinates=true)
void SetPrimaryTrackFinalKineticEnergy(G4double)
void ProposePrimaryTrackFinalPolarization(const G4ThreeVector &, G4bool localCoordinates=true)
void ProposePrimaryTrackFinalMomentumDirection(const G4ThreeVector &, G4bool localCoordinates=true)
G4Step * UpdateStepForAtRest(G4Step *Step)
G4Track * CreateSecondaryTrack(const G4DynamicParticle &, G4ThreeVector, G4ThreeVector, G4double, G4bool localCoordinates=true)
void Initialize(const G4FastTrack &)
const G4Track * GetPrimaryTrack() const
const G4AffineTransform * GetInverseAffineTransformation() const
void SetKineticEnergy(const G4double aValue)
void SetWeight(G4double aValue)
void SetProperTime(const G4double aValue)
void SetGlobalTime(const G4double aValue)
void SetPosition(const G4ThreeVector &aValue)
void AddLocalTime(const G4double aValue)
void SetMomentumDirection(const G4ThreeVector &aValue)
void SetPolarization(const G4ThreeVector &aValue)
G4Track * GetTrack() const
G4StepPoint * GetPostStepPoint() const
G4double GetWeight() const
const G4ThreeVector & GetPosition() const
G4double GetGlobalTime() const
G4double GetProperTime() const
const G4DynamicParticle * GetDynamicParticle() const
G4double GetKineticEnergy() const
virtual G4bool CheckIt(const G4Track &)
void ProposeTrackStatus(G4TrackStatus status)
G4SteppingControl theSteppingControlFlag
virtual void Initialize(const G4Track &)
G4double GetAccuracyForException() const
void AddSecondary(G4Track *aSecondary)
G4double GetAccuracyForWarning() const
virtual void DumpInfo() const
G4Step * UpdateStepInfo(G4Step *Step)