57 fFastTrack=&fastTrack;
80 theWeightChange = currentTrack.
GetWeight();
105 if (localCoordinates)
107 TransformPoint(position);
109 thePositionChange = globalPosition;
131 if (localCoordinates)
133 TransformAxis(momentum);
135 SetMomentumChange(globalMomentum.
unit());
157 if (localCoordinates)
159 TransformAxis(direction);
161 SetMomentumChange(globalDirection.
unit());
184 if (localCoordinates)
186 TransformAxis(globalPolarization);
188 thePolarizationChange = globalPolarization;
243 if (localCoordinates)
247 GetInverseAffineTransformation()->
248 TransformAxis(globalDynamics->
249 GetMomentumDirection()));
255 globalPolarization.
x(),
256 globalPolarization.
y(),
257 globalPolarization.
z()
262 TransformPoint(globalPosition);
290 tellWhatIsWrong <<
"G4FastStep can be initialised only through G4FastTrack."
292 G4Exception(
"G4FastStep::Initialize(const G4Track&)",
300 theEnergyChange ( 0.0 ),
301 theTimeChange ( 0.0 ),
302 theProperTimeChange( 0.0 ),
303 fFastTrack ( nullptr ),
304 theWeightChange ( 0.0 )
337 theMomentumChange = right.theMomentumChange;
338 thePolarizationChange = right.thePolarizationChange;
339 thePositionChange = right.thePositionChange;
340 theProperTimeChange = right.theProperTimeChange;
341 theTimeChange = right.theTimeChange;
342 theEnergyChange = right.theEnergyChange;
346 theWeightChange = right.theWeightChange;
347 fFastTrack = right.fFastTrack;
398 pPostStepPoint->
SetWeight( theWeightChange );
431 pPostStepPoint->
SetWeight( theWeightChange );
454 G4cout <<
" Momentum Direct - x : " << std::setw(20) << theMomentumChange.
x() <<
G4endl;
455 G4cout <<
" Momentum Direct - y : " << std::setw(20) << theMomentumChange.
y() <<
G4endl;
456 G4cout <<
" Momentum Direct - z : " << std::setw(20) << theMomentumChange.
z() <<
G4endl;
460 G4cout <<
" Polarization - x : " << std::setw(20) << thePolarizationChange.
x() <<
G4endl;
461 G4cout <<
" Polarization - y : " << std::setw(20) << thePolarizationChange.
y() <<
G4endl;
462 G4cout <<
" Polarization - z : " << std::setw(20) << thePolarizationChange.
z() <<
G4endl;
487 G4bool exitWithError =
false;
495 ed <<
"The energy becomes larger than the initial value, difference = " << accuracy <<
" MeV" <<
G4endl;
496 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
503 G4bool itsOKforMomentum =
true;
504 if ( theEnergyChange >0.)
506 accuracy = std::abs(theMomentumChange.
mag2()-1.0);
510 ed <<
"The Momentum Change is not a unit vector, difference = " << accuracy <<
G4endl;
511 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
514 itsOK = itsOKforMomentum =
false;
523 ed <<
"The global time is getting backward, difference = " << accuracy <<
" ns" <<
G4endl;
524 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
534 ed <<
"The proper time is getting backward, difference = " << accuracy <<
" ns" <<
G4endl;
535 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
552 ed <<
"An inaccuracy in G4FastStep is beyond tolerance." <<
G4endl;
553 G4Exception(
"G4FastStep::CheckIt(const G4Track& aTrack)",
559 if (!itsOKforMomentum) {
561 theMomentumChange = (1./vmag)*theMomentumChange;
virtual void Initialize(const G4Track &)
const G4Track * GetPrimaryTrack() const
void SetPosition(const G4ThreeVector &aValue)
void ProposePrimaryTrackFinalMomentumDirection(const G4ThreeVector &, G4bool localCoordinates=true)
void SetPrimaryTrackFinalKineticEnergy(G4double)
G4VParticleChange & operator=(const G4VParticleChange &right)
void SetPrimaryTrackFinalPolarization(const G4ThreeVector &, G4bool localCoordinates=true)
G4int theSizeOftheListOfSecondaries
std::ostringstream G4ExceptionDescription
G4double GetProperTime() const
G4double GetKineticEnergy() const
const G4DynamicParticle * GetDynamicParticle() const
G4double GetProperTime() const
const G4AffineTransform * GetInverseAffineTransformation() const
G4Step * UpdateStepForPostStep(G4Step *Step)
const G4ThreeVector & GetPosition() const
G4TrackFastVector * theListOfSecondaries
void SetWeight(G4double aValue)
G4Track * CreateSecondaryTrack(const G4DynamicParticle &, G4ThreeVector, G4ThreeVector, G4double, G4bool localCoordinates=true)
void SetMomentumDirection(const G4ThreeVector &aDirection)
virtual void DumpInfo() const
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
void SetPrimaryTrackFinalMomentum(const G4ThreeVector &, G4bool localCoordinates=true)
G4bool CheckIt(const G4Track &)
void Initialize(const G4FastTrack &)
G4bool operator==(const G4FastStep &right) const
G4bool operator!=(const G4FastStep &right) const
void AddLocalTime(const G4double aValue)
G4FastStep & operator=(const G4FastStep &right)
void SetGlobalTime(const G4double aValue)
void SetMomentumDirection(const G4ThreeVector &aValue)
virtual G4bool CheckIt(const G4Track &)
G4double GetKineticEnergy() const
void SetPolarization(const G4ThreeVector &aValue)
void ProposePrimaryTrackFinalPosition(const G4ThreeVector &, G4bool localCoordinates=true)
G4GLOB_DLL std::ostream G4cout
G4double theTrueStepLength
const G4ThreeVector & GetMomentumDirection() const
G4SteppingControl theSteppingControlFlag
G4double theLocalEnergyDeposit
G4int theNumberOfSecondaries
G4double GetGlobalTime() const
void SetPolarization(G4double polX, G4double polY, G4double polZ)
void AddSecondary(G4Track *aSecondary)
void SetProperTime(const G4double aValue)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void SetPrimaryTrackFinalKineticEnergyAndDirection(G4double, const G4ThreeVector &, G4bool localCoordinates=true)
G4Step * UpdateStepInfo(G4Step *Step)
G4Step * UpdateStepForAtRest(G4Step *Step)
G4StepPoint * GetPostStepPoint() const
const G4ThreeVector & GetPolarization() const
G4double GetWeight() const
G4double GetAccuracyForException() const
static constexpr double MeV
void SetPrimaryTrackFinalPosition(const G4ThreeVector &, G4bool localCoordinates=true)
G4TrackStatus theStatusChange
void ProposePrimaryTrackFinalPolarization(const G4ThreeVector &, G4bool localCoordinates=true)
void ProposeTrackStatus(G4TrackStatus status)
void SetKineticEnergy(const G4double aValue)
G4Track * GetTrack() const
G4double GetAccuracyForWarning() const
G4GLOB_DLL std::ostream G4cerr
void ProposePrimaryTrackFinalKineticEnergyAndDirection(G4double, const G4ThreeVector &, G4bool localCoordinates=true)