50 #include "G4TrackFastVector.hh" 76 theSteppingControlFlag = AvoidHitInvocation;
90 ProposeTrackStatus(fStopAndKill) ;
104 if (localCoordinates)
106 TransformPoint(position);
130 if (localCoordinates)
132 TransformAxis(momentum);
156 if (localCoordinates)
158 TransformAxis(direction);
183 if (localCoordinates)
185 TransformAxis(globalPolarization);
242 if (localCoordinates)
246 GetInverseAffineTransformation()->
247 TransformAxis(globalDynamics->
248 GetMomentumDirection()));
254 globalPolarization.
x(),
255 globalPolarization.
y(),
256 globalPolarization.
z()
261 TransformPoint(globalPosition);
267 G4Track* secondary =
new G4Track(
276 AddSecondary(secondary);
289 tellWhatIsWrong <<
"G4FastStep can be initialised only through G4FastTrack." 291 G4Exception(
"G4FastStep::Initialize(const G4Track&)",
298 : G4VParticleChange()
316 : G4VParticleChange()
326 G4VParticleChange::operator=(right);
327 theListOfSecondaries = right.theListOfSecondaries;
328 theSizeOftheListOfSecondaries = right.theSizeOftheListOfSecondaries;
329 theNumberOfSecondaries = right.theNumberOfSecondaries;
330 theStatusChange = right.theStatusChange;
336 theTrueStepLength = right.theTrueStepLength;
337 theLocalEnergyDeposit = right.theLocalEnergyDeposit;
338 theSteppingControlFlag = right.theSteppingControlFlag;
350 return ((G4VParticleChange *)
this == (G4VParticleChange *) &right);
355 return ((G4VParticleChange *)
this != (G4VParticleChange *) &right);
371 G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint();
372 G4Track* aTrack = pStep->GetTrack();
386 - aTrack->GetGlobalTime());
392 if (debugFlag)
CheckIt(*aTrack);
396 return UpdateStepInfo(pStep);
404 G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint();
405 G4Track* aTrack = pStep->GetTrack();
419 - aTrack->GetGlobalTime());
425 if (debugFlag)
CheckIt(*aTrack);
428 return UpdateStepInfo(pStep);
438 G4VParticleChange::DumpInfo();
441 G4cout <<
" Position - x (mm) : " 444 G4cout <<
" Position - y (mm) : " 447 G4cout <<
" Position - z (mm) : " 453 G4cout <<
" Proper Time (ns) : " 456 G4cout <<
" Momentum Direct - x : " 459 G4cout <<
" Momentum Direct - y : " 462 G4cout <<
" Momentum Direct - z : " 465 G4cout <<
" Kinetic Energy (MeV): " 468 G4cout <<
" Polarization - x : " 471 G4cout <<
" Polarization - y : " 474 G4cout <<
" Polarization - z : " 500 G4bool exitWithError =
false;
505 if (accuracy > GetAccuracyForWarning())
508 ed <<
"The energy becomes larger than the initial value, difference = " << accuracy <<
" MeV" <<
G4endl;
509 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
513 if (accuracy > GetAccuracyForException()) {exitWithError =
true;}
516 G4bool itsOKforMomentum =
true;
520 if (accuracy > GetAccuracyForWarning())
523 ed <<
"The Momentum Change is not a unit vector, difference = " << accuracy <<
G4endl;
524 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
527 itsOK = itsOKforMomentum =
false;
528 if (accuracy > GetAccuracyForException()) {exitWithError =
true;}
533 if (accuracy > GetAccuracyForWarning())
536 ed <<
"The global time is getting backward, difference = " << accuracy <<
" ns" <<
G4endl;
537 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
544 if (accuracy > GetAccuracyForWarning())
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) {
577 itsOK = (itsOK) && G4VParticleChange::CheckIt(aTrack);
void ProposePrimaryTrackFinalMomentumDirection(const G4ThreeVector &, G4bool localCoordinates=true)
const G4AffineTransform * GetInverseAffineTransformation() const
void SetPrimaryTrackFinalKineticEnergy(G4double)
void SetPrimaryTrackFinalPolarization(const G4ThreeVector &, G4bool localCoordinates=true)
std::ostringstream G4ExceptionDescription
const G4FastTrack * fFastTrack
G4Step * UpdateStepForPostStep(G4Step *Step)
G4Track * CreateSecondaryTrack(const G4DynamicParticle &, G4ThreeVector, G4ThreeVector, G4double, G4bool localCoordinates=true)
G4ThreeVector thePolarizationChange
void SetMomentumDirection(const G4ThreeVector &aDirection)
void SetPrimaryTrackFinalMomentum(const G4ThreeVector &, G4bool localCoordinates=true)
G4bool CheckIt(const G4Track &)
void Initialize(const G4FastTrack &)
G4FastStep & operator=(const G4FastStep &right)
G4double GetKineticEnergy() const
void ProposePrimaryTrackFinalPosition(const G4ThreeVector &, G4bool localCoordinates=true)
G4GLOB_DLL std::ostream G4cout
G4bool operator==(const G4FastStep &right) const
void SetPolarization(G4double polX, G4double polY, G4double polZ)
G4double GetProperTime() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void SetPrimaryTrackFinalKineticEnergyAndDirection(G4double, const G4ThreeVector &, G4bool localCoordinates=true)
G4ParticleMomentum theMomentumChange
G4Step * UpdateStepForAtRest(G4Step *Step)
G4double theProperTimeChange
const G4ThreeVector & GetMomentumDirection() const
G4bool operator!=(const G4FastStep &right) const
const G4ThreeVector & GetPolarization() const
G4ThreeVector thePositionChange
void SetPrimaryTrackFinalPosition(const G4ThreeVector &, G4bool localCoordinates=true)
const G4Track * GetPrimaryTrack() const
void ProposePrimaryTrackFinalPolarization(const G4ThreeVector &, G4bool localCoordinates=true)
void SetMomentumChange(G4double Px, G4double Py, G4double Pz)
G4GLOB_DLL std::ostream G4cerr
void ProposePrimaryTrackFinalKineticEnergyAndDirection(G4double, const G4ThreeVector &, G4bool localCoordinates=true)