Geant4  10.02.p03
G4FastStep Class Reference

#include <G4FastStep.hh>

Inheritance diagram for G4FastStep:
Collaboration diagram for G4FastStep:

Public Member Functions

void KillPrimaryTrack ()
 
void ProposePrimaryTrackFinalPosition (const G4ThreeVector &, G4bool localCoordinates=true)
 
void SetPrimaryTrackFinalPosition (const G4ThreeVector &, G4bool localCoordinates=true)
 
void ProposePrimaryTrackFinalTime (G4double)
 
void SetPrimaryTrackFinalTime (G4double)
 
void ProposePrimaryTrackFinalProperTime (G4double)
 
void SetPrimaryTrackFinalProperTime (G4double)
 
void ProposePrimaryTrackFinalMomentumDirection (const G4ThreeVector &, G4bool localCoordinates=true)
 
void SetPrimaryTrackFinalMomentum (const G4ThreeVector &, G4bool localCoordinates=true)
 
void ProposePrimaryTrackFinalKineticEnergy (G4double)
 
void SetPrimaryTrackFinalKineticEnergy (G4double)
 
void ProposePrimaryTrackFinalKineticEnergyAndDirection (G4double, const G4ThreeVector &, G4bool localCoordinates=true)
 
void SetPrimaryTrackFinalKineticEnergyAndDirection (G4double, const G4ThreeVector &, G4bool localCoordinates=true)
 
void ProposePrimaryTrackFinalPolarization (const G4ThreeVector &, G4bool localCoordinates=true)
 
void SetPrimaryTrackFinalPolarization (const G4ThreeVector &, G4bool localCoordinates=true)
 
void ProposePrimaryTrackPathLength (G4double)
 
void SetPrimaryTrackPathLength (G4double)
 
void ProposePrimaryTrackFinalEventBiasingWeight (G4double)
 
void SetPrimaryTrackFinalEventBiasingWeight (G4double)
 
void SetNumberOfSecondaryTracks (G4int)
 
G4int GetNumberOfSecondaryTracks ()
 
G4Track * CreateSecondaryTrack (const G4DynamicParticle &, G4ThreeVector, G4ThreeVector, G4double, G4bool localCoordinates=true)
 
G4Track * CreateSecondaryTrack (const G4DynamicParticle &, G4ThreeVector, G4double, G4bool localCoordinates=true)
 
G4Track * GetSecondaryTrack (G4int)
 
void ProposeTotalEnergyDeposited (G4double anEnergyPart)
 
void SetTotalEnergyDeposited (G4double anEnergyPart)
 
G4double GetTotalEnergyDeposited () const
 
void ForceSteppingHitInvocation ()
 
 G4FastStep ()
 
virtual ~G4FastStep ()
 
G4bool operator== (const G4FastStep &right) const
 
G4bool operator!= (const G4FastStep &right) const
 
G4Step * UpdateStepForAtRest (G4Step *Step)
 
G4Step * UpdateStepForPostStep (G4Step *Step)
 
void Initialize (const G4FastTrack &)
 
void DumpInfo () const
 
G4bool CheckIt (const G4Track &)
 

Protected Member Functions

 G4FastStep (const G4FastStep &right)
 
G4FastStepoperator= (const G4FastStep &right)
 

Private Member Functions

void Initialize (const G4Track &)
 
void SetMomentumChange (G4double Px, G4double Py, G4double Pz)
 
void SetMomentumChange (const G4ThreeVector &Pfinal)
 

Private Attributes

G4ParticleMomentum theMomentumChange
 
G4ThreeVector thePolarizationChange
 
G4double theEnergyChange
 
G4ThreeVector thePositionChange
 
G4double theTimeChange
 
G4double theProperTimeChange
 
const G4FastTrackfFastTrack
 
G4double theWeightChange
 

Detailed Description

Definition at line 91 of file G4FastStep.hh.

Constructor & Destructor Documentation

◆ G4FastStep() [1/2]

G4FastStep::G4FastStep ( )

Definition at line 297 of file G4FastStep.cc.

298  : G4VParticleChange()
299 {
300  if (verboseLevel>2)
301  {
302  G4cerr << "G4FastStep::G4FastStep() " << G4endl;
303  }
304 }
#define G4endl
Definition: G4ios.hh:61
G4GLOB_DLL std::ostream G4cerr

◆ ~G4FastStep()

G4FastStep::~G4FastStep ( )
virtual

Definition at line 306 of file G4FastStep.cc.

307 {
308  if (verboseLevel>2)
309  {
310  G4cerr << "G4FastStep::~G4FastStep() " << G4endl;
311  }
312 }
#define G4endl
Definition: G4ios.hh:61
G4GLOB_DLL std::ostream G4cerr

◆ G4FastStep() [2/2]

G4FastStep::G4FastStep ( const G4FastStep right)
protected

Definition at line 315 of file G4FastStep.cc.

316  : G4VParticleChange()
317 {
318  *this = right;
319 }

Member Function Documentation

◆ CheckIt()

G4bool G4FastStep::CheckIt ( const G4Track &  aTrack)

Definition at line 479 of file G4FastStep.cc.

480 {
481  //
482  // In the G4FastStep::CheckIt
483  // We only check a bit
484  //
485  // If the user violates the energy,
486  // We don't care, we agree.
487  //
488  // But for theMomentumDirectionChange,
489  // We do pay attention.
490  // And if too large is its range,
491  // We issue an Exception.
492  //
493  //
494  // It means, the G4FastStep::CheckIt issues an exception only for the
495  // theMomentumDirectionChange which should be an unit vector
496  // and it corrects it because it could cause problems for the ulterior
497  // tracking.For the rest, only warning are issued.
498 
499  G4bool itsOK = true;
500  G4bool exitWithError = false;
501  G4double accuracy;
502 
503  // Energy should not be larger than the initial value
504  accuracy = ( theEnergyChange - aTrack.GetKineticEnergy())/MeV;
505  if (accuracy > GetAccuracyForWarning())
506  {
508  ed << "The energy becomes larger than the initial value, difference = " << accuracy << " MeV" << G4endl;
509  G4Exception("G4FastStep::CheckIt(const G4Track& aTrack)",
510  "FastSim006",
511  JustWarning, ed);
512  itsOK = false;
513  if (accuracy > GetAccuracyForException()) {exitWithError = true;}
514  }
515 
516  G4bool itsOKforMomentum = true;
517  if ( theEnergyChange >0.)
518  {
519  accuracy = std::abs(theMomentumChange.mag2()-1.0);
520  if (accuracy > GetAccuracyForWarning())
521  {
523  ed << "The Momentum Change is not a unit vector, difference = " << accuracy << G4endl;
524  G4Exception("G4FastStep::CheckIt(const G4Track& aTrack)",
525  "FastSim007",
526  JustWarning, ed);
527  itsOK = itsOKforMomentum = false;
528  if (accuracy > GetAccuracyForException()) {exitWithError = true;}
529  }
530  }
531 
532  accuracy = (aTrack.GetGlobalTime()- theTimeChange)/ns;
533  if (accuracy > GetAccuracyForWarning())
534  {
536  ed << "The global time is getting backward, difference = " << accuracy << " ns" << G4endl;
537  G4Exception("G4FastStep::CheckIt(const G4Track& aTrack)",
538  "FastSim008",
539  JustWarning, ed);
540  itsOK = false;
541  }
542 
543  accuracy = (aTrack.GetProperTime() - theProperTimeChange )/ns;
544  if (accuracy > GetAccuracyForWarning())
545  {
547  ed << "The proper time is getting backward, difference = " << accuracy << " ns" << G4endl;
548  G4Exception("G4FastStep::CheckIt(const G4Track& aTrack)",
549  "FastSim009",
550  JustWarning, ed);
551  itsOK = false;
552  }
553 
554  if (!itsOK)
555  {
556  G4cout << "ERROR - G4FastStep::CheckIt() " << G4endl;
557  G4cout << " Pointer : " << this << G4endl ;
558  DumpInfo();
559  }
560 
561  // Exit with error
562  if (exitWithError)
563  {
565  ed << "An inaccuracy in G4FastStep is beyond tolerance." << G4endl;
566  G4Exception("G4FastStep::CheckIt(const G4Track& aTrack)",
567  "FastSim010",
568  FatalException, ed);
569  }
570 
571  //correction for Momentum only.
572  if (!itsOKforMomentum) {
573  G4double vmag = theMomentumChange.mag();
575  }
576 
577  itsOK = (itsOK) && G4VParticleChange::CheckIt(aTrack);
578  return itsOK;
579 }
static const double MeV
Definition: G4SIunits.hh:211
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
double mag2() const
G4GLOB_DLL std::ostream G4cout
bool G4bool
Definition: G4Types.hh:79
double mag() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4ParticleMomentum theMomentumChange
Definition: G4FastStep.hh:348
G4double theProperTimeChange
Definition: G4FastStep.hh:363
G4double theEnergyChange
Definition: G4FastStep.hh:354
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
void DumpInfo() const
Definition: G4FastStep.cc:435
#define ns
Definition: xmlparse.cc:614
G4double theTimeChange
Definition: G4FastStep.hh:360
Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateSecondaryTrack() [1/2]

G4Track * G4FastStep::CreateSecondaryTrack ( const G4DynamicParticle dynamics,
G4ThreeVector  polarization,
G4ThreeVector  position,
G4double  time,
G4bool  localCoordinates = true 
)

Definition at line 202 of file G4FastStep.cc.

207 {
208  G4DynamicParticle dummyDynamics(dynamics);
209 
210  // ------------------------------------------
211  // Add the polarization to the dummyDynamics:
212  // ------------------------------------------
213  dummyDynamics.SetPolarization(polarization.x(),
214  polarization.y(),
215  polarization.z());
216 
217  return CreateSecondaryTrack(dummyDynamics, position, time, localCoordinates);
218 }
G4Track * CreateSecondaryTrack(const G4DynamicParticle &, G4ThreeVector, G4ThreeVector, G4double, G4bool localCoordinates=true)
Definition: G4FastStep.cc:202
double x() const
double y() const
double z() const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateSecondaryTrack() [2/2]

G4Track * G4FastStep::CreateSecondaryTrack ( const G4DynamicParticle dynamics,
G4ThreeVector  position,
G4double  time,
G4bool  localCoordinates = true 
)

Definition at line 224 of file G4FastStep.cc.

228 {
229  // ----------------------------------------
230  // Quantities in global coordinates system.
231  //
232  // The allocated globalDynamics is deleted
233  // by the destructor of the G4Track.
234  // ----------------------------------------
235  G4DynamicParticle* globalDynamics =
236  new G4DynamicParticle(dynamics);
237  G4ThreeVector globalPosition(position);
238 
239  // -----------------------------------
240  // Convert to global system if needed:
241  // -----------------------------------
242  if (localCoordinates)
243  {
244  // -- Momentum Direction:
245  globalDynamics->SetMomentumDirection(fFastTrack->
246  GetInverseAffineTransformation()->
247  TransformAxis(globalDynamics->
248  GetMomentumDirection()));
249  // -- Polarization:
250  G4ThreeVector globalPolarization;
251  globalPolarization = fFastTrack->GetInverseAffineTransformation()->
252  TransformAxis(globalDynamics->GetPolarization());
253  globalDynamics->SetPolarization(
254  globalPolarization.x(),
255  globalPolarization.y(),
256  globalPolarization.z()
257  );
258 
259  // -- Position:
260  globalPosition = fFastTrack->GetInverseAffineTransformation()->
261  TransformPoint(globalPosition);
262  }
263 
264  //-------------------------------------
265  // Create the G4Track of the secondary:
266  //-------------------------------------
267  G4Track* secondary = new G4Track(
268  globalDynamics,
269  time,
270  globalPosition
271  );
272 
273  //-------------------------------
274  // and feed the changes:
275  //-------------------------------
276  AddSecondary(secondary);
277 
278  //--------------------------------------
279  // returns the pointer on the secondary:
280  //--------------------------------------
281  return secondary;
282 }
const G4AffineTransform * GetInverseAffineTransformation() const
Definition: G4FastTrack.hh:238
const G4FastTrack * fFastTrack
Definition: G4FastStep.hh:366
void SetMomentumDirection(const G4ThreeVector &aDirection)
void SetPolarization(G4double polX, G4double polY, G4double polZ)
double x() const
double y() const
const G4ThreeVector & GetPolarization() const
double z() const
Here is the call graph for this function:

◆ DumpInfo()

void G4FastStep::DumpInfo ( ) const

Definition at line 435 of file G4FastStep.cc.

436 {
437 // use base-class DumpInfo
438  G4VParticleChange::DumpInfo();
439 
440  G4cout.precision(3);
441  G4cout << " Position - x (mm) : "
442  << std::setw(20) << thePositionChange.x()/mm
443  << G4endl;
444  G4cout << " Position - y (mm) : "
445  << std::setw(20) << thePositionChange.y()/mm
446  << G4endl;
447  G4cout << " Position - z (mm) : "
448  << std::setw(20) << thePositionChange.z()/mm
449  << G4endl;
450  G4cout << " Time (ns) : "
451  << std::setw(20) << theTimeChange/ns
452  << G4endl;
453  G4cout << " Proper Time (ns) : "
454  << std::setw(20) << theProperTimeChange/ns
455  << G4endl;
456  G4cout << " Momentum Direct - x : "
457  << std::setw(20) << theMomentumChange.x()
458  << G4endl;
459  G4cout << " Momentum Direct - y : "
460  << std::setw(20) << theMomentumChange.y()
461  << G4endl;
462  G4cout << " Momentum Direct - z : "
463  << std::setw(20) << theMomentumChange.z()
464  << G4endl;
465  G4cout << " Kinetic Energy (MeV): "
466  << std::setw(20) << theEnergyChange/MeV
467  << G4endl;
468  G4cout << " Polarization - x : "
469  << std::setw(20) << thePolarizationChange.x()
470  << G4endl;
471  G4cout << " Polarization - y : "
472  << std::setw(20) << thePolarizationChange.y()
473  << G4endl;
474  G4cout << " Polarization - z : "
475  << std::setw(20) << thePolarizationChange.z()
476  << G4endl;
477 }
static const double MeV
Definition: G4SIunits.hh:211
G4ThreeVector thePolarizationChange
Definition: G4FastStep.hh:351
G4GLOB_DLL std::ostream G4cout
double x() const
G4ParticleMomentum theMomentumChange
Definition: G4FastStep.hh:348
double y() const
G4double theProperTimeChange
Definition: G4FastStep.hh:363
double z() const
G4double theEnergyChange
Definition: G4FastStep.hh:354
G4ThreeVector thePositionChange
Definition: G4FastStep.hh:357
#define G4endl
Definition: G4ios.hh:61
static const double mm
Definition: G4SIunits.hh:114
#define ns
Definition: xmlparse.cc:614
G4double theTimeChange
Definition: G4FastStep.hh:360
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ForceSteppingHitInvocation()

void G4FastStep::ForceSteppingHitInvocation ( )

◆ GetNumberOfSecondaryTracks()

G4int G4FastStep::GetNumberOfSecondaryTracks ( )

◆ GetSecondaryTrack()

G4Track* G4FastStep::GetSecondaryTrack ( G4int  )

◆ GetTotalEnergyDeposited()

G4double G4FastStep::GetTotalEnergyDeposited ( ) const

◆ Initialize() [1/2]

void G4FastStep::Initialize ( const G4FastTrack fastTrack)

Definition at line 53 of file G4FastStep.cc.

54 {
55  // keeps the fastTrack reference
56  fFastTrack=&fastTrack;
57 
58  // currentTrack will be used to Initialize the other data members
59  const G4Track& currentTrack = *(fFastTrack->GetPrimaryTrack());
60 
61  // use base class's method at first
62  G4VParticleChange::Initialize(currentTrack);
63 
64  // set Energy/Momentum etc. equal to those of the parent particle
65  const G4DynamicParticle* pParticle = currentTrack.GetDynamicParticle();
66  theEnergyChange = pParticle->GetKineticEnergy();
69  theProperTimeChange = pParticle->GetProperTime();
70 
71  // set Position/Time etc. equal to those of the parent track
72  thePositionChange = currentTrack.GetPosition();
73  theTimeChange = currentTrack.GetGlobalTime();
74 
75  // switch off stepping hit invokation by default:
76  theSteppingControlFlag = AvoidHitInvocation;
77 
78  // event biasing weigth:
79  theWeightChange = currentTrack.GetWeight();
80 }
const G4FastTrack * fFastTrack
Definition: G4FastStep.hh:366
void Initialize()
Definition: errprop.cc:101
G4ThreeVector thePolarizationChange
Definition: G4FastStep.hh:351
G4double GetKineticEnergy() const
G4double theWeightChange
Definition: G4FastStep.hh:369
G4double GetProperTime() const
G4ParticleMomentum theMomentumChange
Definition: G4FastStep.hh:348
G4double theProperTimeChange
Definition: G4FastStep.hh:363
const G4ThreeVector & GetMomentumDirection() const
const G4ThreeVector & GetPolarization() const
G4double theEnergyChange
Definition: G4FastStep.hh:354
G4ThreeVector thePositionChange
Definition: G4FastStep.hh:357
const G4Track * GetPrimaryTrack() const
Definition: G4FastTrack.hh:208
G4double theTimeChange
Definition: G4FastStep.hh:360
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Initialize() [2/2]

void G4FastStep::Initialize ( const G4Track &  )
private

Definition at line 286 of file G4FastStep.cc.

287 {
288  G4ExceptionDescription tellWhatIsWrong;
289  tellWhatIsWrong << "G4FastStep can be initialised only through G4FastTrack."
290  << G4endl;
291  G4Exception("G4FastStep::Initialize(const G4Track&)",
292  "FastSim005",
294  tellWhatIsWrong);
295 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:

◆ KillPrimaryTrack()

void G4FastStep::KillPrimaryTrack ( )

Definition at line 87 of file G4FastStep.cc.

88 {
90  ProposeTrackStatus(fStopAndKill) ;
91 }
void SetPrimaryTrackFinalKineticEnergy(G4double)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator!=()

G4bool G4FastStep::operator!= ( const G4FastStep right) const

Definition at line 353 of file G4FastStep.cc.

354 {
355  return ((G4VParticleChange *)this != (G4VParticleChange *) &right);
356 }

◆ operator=()

G4FastStep & G4FastStep::operator= ( const G4FastStep right)
protected

Definition at line 322 of file G4FastStep.cc.

323 {
324  if (this != &right)
325  {
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;
340  }
341  return *this;
342 }
G4ThreeVector thePolarizationChange
Definition: G4FastStep.hh:351
G4double theWeightChange
Definition: G4FastStep.hh:369
G4ParticleMomentum theMomentumChange
Definition: G4FastStep.hh:348
G4double theEnergyChange
Definition: G4FastStep.hh:354
G4ThreeVector thePositionChange
Definition: G4FastStep.hh:357
G4double theTimeChange
Definition: G4FastStep.hh:360

◆ operator==()

G4bool G4FastStep::operator== ( const G4FastStep right) const

Definition at line 348 of file G4FastStep.cc.

349 {
350  return ((G4VParticleChange *)this == (G4VParticleChange *) &right);
351 }

◆ ProposePrimaryTrackFinalEventBiasingWeight()

void G4FastStep::ProposePrimaryTrackFinalEventBiasingWeight ( G4double  )

◆ ProposePrimaryTrackFinalKineticEnergy()

void G4FastStep::ProposePrimaryTrackFinalKineticEnergy ( G4double  )

◆ ProposePrimaryTrackFinalKineticEnergyAndDirection()

void G4FastStep::ProposePrimaryTrackFinalKineticEnergyAndDirection ( G4double  kineticEnergy,
const G4ThreeVector direction,
G4bool  localCoordinates = true 
)

Definition at line 150 of file G4FastStep.cc.

153 {
154  // Compute global direction if needed...
155  G4ThreeVector globalDirection = direction;
156  if (localCoordinates)
157  globalDirection =fFastTrack->GetInverseAffineTransformation()->
158  TransformAxis(direction);
159  // ...and feed the globalMomentum (ensuring unitarity)
160  SetMomentumChange(globalDirection.unit());
161  SetPrimaryTrackFinalKineticEnergy(kineticEnergy);
162 }
const G4AffineTransform * GetInverseAffineTransformation() const
Definition: G4FastTrack.hh:238
void SetPrimaryTrackFinalKineticEnergy(G4double)
const G4FastTrack * fFastTrack
Definition: G4FastStep.hh:366
Hep3Vector unit() const
void SetMomentumChange(G4double Px, G4double Py, G4double Pz)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ProposePrimaryTrackFinalMomentumDirection()

void G4FastStep::ProposePrimaryTrackFinalMomentumDirection ( const G4ThreeVector momentum,
G4bool  localCoordinates = true 
)

Definition at line 124 of file G4FastStep.cc.

126 {
127  // Compute the momentum in global reference
128  // system if needed ...
129  G4ThreeVector globalMomentum = momentum;
130  if (localCoordinates)
131  globalMomentum = fFastTrack->GetInverseAffineTransformation()->
132  TransformAxis(momentum);
133  // ...and feed the globalMomentum (ensuring unitarity)
134  SetMomentumChange(globalMomentum.unit());
135 }
const G4AffineTransform * GetInverseAffineTransformation() const
Definition: G4FastTrack.hh:238
const G4FastTrack * fFastTrack
Definition: G4FastStep.hh:366
Hep3Vector unit() const
void SetMomentumChange(G4double Px, G4double Py, G4double Pz)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ProposePrimaryTrackFinalPolarization()

void G4FastStep::ProposePrimaryTrackFinalPolarization ( const G4ThreeVector polarization,
G4bool  localCoordinates = true 
)

Definition at line 178 of file G4FastStep.cc.

180 {
181  // Compute polarization in global system if needed:
182  G4ThreeVector globalPolarization(polarization);
183  if (localCoordinates)
184  globalPolarization = fFastTrack->GetInverseAffineTransformation()->
185  TransformAxis(globalPolarization);
186  // Feed the particle globalPolarization:
187  thePolarizationChange = globalPolarization;
188 }
const G4AffineTransform * GetInverseAffineTransformation() const
Definition: G4FastTrack.hh:238
const G4FastTrack * fFastTrack
Definition: G4FastStep.hh:366
G4ThreeVector thePolarizationChange
Definition: G4FastStep.hh:351
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ProposePrimaryTrackFinalPosition()

void G4FastStep::ProposePrimaryTrackFinalPosition ( const G4ThreeVector position,
G4bool  localCoordinates = true 
)

Definition at line 98 of file G4FastStep.cc.

100 {
101  // Compute the position coordinate in global
102  // reference system if needed ...
103  G4ThreeVector globalPosition = position;
104  if (localCoordinates)
105  globalPosition = fFastTrack->GetInverseAffineTransformation()->
106  TransformPoint(position);
107  // ...and feed the globalPosition:
108  thePositionChange = globalPosition;
109 }
const G4AffineTransform * GetInverseAffineTransformation() const
Definition: G4FastTrack.hh:238
const G4FastTrack * fFastTrack
Definition: G4FastStep.hh:366
#define position
Definition: xmlparse.cc:622
G4ThreeVector thePositionChange
Definition: G4FastStep.hh:357
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ProposePrimaryTrackFinalProperTime()

void G4FastStep::ProposePrimaryTrackFinalProperTime ( G4double  )

◆ ProposePrimaryTrackFinalTime()

void G4FastStep::ProposePrimaryTrackFinalTime ( G4double  )

◆ ProposePrimaryTrackPathLength()

void G4FastStep::ProposePrimaryTrackPathLength ( G4double  )
Here is the caller graph for this function:

◆ ProposeTotalEnergyDeposited()

void G4FastStep::ProposeTotalEnergyDeposited ( G4double  anEnergyPart)
Here is the caller graph for this function:

◆ SetMomentumChange() [1/2]

void G4FastStep::SetMomentumChange ( G4double  Px,
G4double  Py,
G4double  Pz 
)
private
Here is the caller graph for this function:

◆ SetMomentumChange() [2/2]

void G4FastStep::SetMomentumChange ( const G4ThreeVector Pfinal)
private

◆ SetNumberOfSecondaryTracks()

void G4FastStep::SetNumberOfSecondaryTracks ( G4int  )
Here is the caller graph for this function:

◆ SetPrimaryTrackFinalEventBiasingWeight()

void G4FastStep::SetPrimaryTrackFinalEventBiasingWeight ( G4double  )

◆ SetPrimaryTrackFinalKineticEnergy()

void G4FastStep::SetPrimaryTrackFinalKineticEnergy ( G4double  )
Here is the caller graph for this function:

◆ SetPrimaryTrackFinalKineticEnergyAndDirection()

void G4FastStep::SetPrimaryTrackFinalKineticEnergyAndDirection ( G4double  kineticEnergy,
const G4ThreeVector direction,
G4bool  localCoordinates = true 
)

Definition at line 166 of file G4FastStep.cc.

169 {
170  ProposePrimaryTrackFinalKineticEnergyAndDirection(kineticEnergy, direction, localCoordinates);
171 }
void ProposePrimaryTrackFinalKineticEnergyAndDirection(G4double, const G4ThreeVector &, G4bool localCoordinates=true)
Definition: G4FastStep.cc:150
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPrimaryTrackFinalMomentum()

void G4FastStep::SetPrimaryTrackFinalMomentum ( const G4ThreeVector momentum,
G4bool  localCoordinates = true 
)

Definition at line 139 of file G4FastStep.cc.

141 {
142  ProposePrimaryTrackFinalMomentumDirection(momentum, localCoordinates);
143 }
void ProposePrimaryTrackFinalMomentumDirection(const G4ThreeVector &, G4bool localCoordinates=true)
Definition: G4FastStep.cc:124
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPrimaryTrackFinalPolarization()

void G4FastStep::SetPrimaryTrackFinalPolarization ( const G4ThreeVector polarization,
G4bool  localCoordinates = true 
)

Definition at line 192 of file G4FastStep.cc.

194 {
195  ProposePrimaryTrackFinalPolarization(polarization, localCoordinates);
196 }
void ProposePrimaryTrackFinalPolarization(const G4ThreeVector &, G4bool localCoordinates=true)
Definition: G4FastStep.cc:178
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPrimaryTrackFinalPosition()

void G4FastStep::SetPrimaryTrackFinalPosition ( const G4ThreeVector position,
G4bool  localCoordinates = true 
)

Definition at line 113 of file G4FastStep.cc.

115 {
116  ProposePrimaryTrackFinalPosition(position, localCoordinates);
117 }
void ProposePrimaryTrackFinalPosition(const G4ThreeVector &, G4bool localCoordinates=true)
Definition: G4FastStep.cc:98
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPrimaryTrackFinalProperTime()

void G4FastStep::SetPrimaryTrackFinalProperTime ( G4double  )

◆ SetPrimaryTrackFinalTime()

void G4FastStep::SetPrimaryTrackFinalTime ( G4double  )

◆ SetPrimaryTrackPathLength()

void G4FastStep::SetPrimaryTrackPathLength ( G4double  )
Here is the caller graph for this function:

◆ SetTotalEnergyDeposited()

void G4FastStep::SetTotalEnergyDeposited ( G4double  anEnergyPart)
Here is the caller graph for this function:

◆ UpdateStepForAtRest()

G4Step * G4FastStep::UpdateStepForAtRest ( G4Step *  Step)

Definition at line 399 of file G4FastStep.cc.

400 {
401  // A physics process always calculates the final state of the particle
402 
403  // G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint();
404  G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint();
405  G4Track* aTrack = pStep->GetTrack();
406  // G4double mass = aTrack->GetDynamicParticle()->GetMass();
407 
408  // update kinetic energy and momentum direction
409  pPostStepPoint->SetMomentumDirection(theMomentumChange);
410  pPostStepPoint->SetKineticEnergy( theEnergyChange );
411 
412  // update polarization
413  pPostStepPoint->SetPolarization( thePolarizationChange );
414 
415  // update position and time
416  pPostStepPoint->SetPosition( thePositionChange );
417  pPostStepPoint->SetGlobalTime( theTimeChange );
418  pPostStepPoint->AddLocalTime( theTimeChange
419  - aTrack->GetGlobalTime());
420  pPostStepPoint->SetProperTime( theProperTimeChange );
421 
422  // update weight
423  pPostStepPoint->SetWeight( theWeightChange );
424 
425  if (debugFlag) CheckIt(*aTrack);
426 
427  // Update the G4Step specific attributes
428  return UpdateStepInfo(pStep);
429 }
G4ThreeVector thePolarizationChange
Definition: G4FastStep.hh:351
G4bool CheckIt(const G4Track &)
Definition: G4FastStep.cc:479
G4double theWeightChange
Definition: G4FastStep.hh:369
G4ParticleMomentum theMomentumChange
Definition: G4FastStep.hh:348
G4double theProperTimeChange
Definition: G4FastStep.hh:363
G4double theEnergyChange
Definition: G4FastStep.hh:354
G4ThreeVector thePositionChange
Definition: G4FastStep.hh:357
G4double theTimeChange
Definition: G4FastStep.hh:360
Here is the call graph for this function:

◆ UpdateStepForPostStep()

G4Step * G4FastStep::UpdateStepForPostStep ( G4Step *  Step)

Definition at line 362 of file G4FastStep.cc.

363 {
364  // A physics process always calculates the final state of the particle
365 
366  // Take note that the return type of GetMomentumChange is a
367  // pointer to G4ParticleMometum. Also it is a normalized
368  // momentum vector.
369 
370  // G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint();
371  G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint();
372  G4Track* aTrack = pStep->GetTrack();
373  // G4double mass = aTrack->GetDynamicParticle()->GetMass();
374 
375  // update kinetic energy and momentum direction
376  pPostStepPoint->SetMomentumDirection(theMomentumChange);
377  pPostStepPoint->SetKineticEnergy( theEnergyChange );
378 
379  // update polarization
380  pPostStepPoint->SetPolarization( thePolarizationChange );
381 
382  // update position and time
383  pPostStepPoint->SetPosition( thePositionChange );
384  pPostStepPoint->SetGlobalTime( theTimeChange );
385  pPostStepPoint->AddLocalTime( theTimeChange
386  - aTrack->GetGlobalTime());
387  pPostStepPoint->SetProperTime( theProperTimeChange );
388 
389  // update weight
390  pPostStepPoint->SetWeight( theWeightChange );
391 
392  if (debugFlag) CheckIt(*aTrack);
393 
394 
395  // Update the G4Step specific attributes
396  return UpdateStepInfo(pStep);
397 }
G4ThreeVector thePolarizationChange
Definition: G4FastStep.hh:351
G4bool CheckIt(const G4Track &)
Definition: G4FastStep.cc:479
G4double theWeightChange
Definition: G4FastStep.hh:369
G4ParticleMomentum theMomentumChange
Definition: G4FastStep.hh:348
G4double theProperTimeChange
Definition: G4FastStep.hh:363
G4double theEnergyChange
Definition: G4FastStep.hh:354
G4ThreeVector thePositionChange
Definition: G4FastStep.hh:357
G4double theTimeChange
Definition: G4FastStep.hh:360
Here is the call graph for this function:

Member Data Documentation

◆ fFastTrack

const G4FastTrack* G4FastStep::fFastTrack
private

Definition at line 366 of file G4FastStep.hh.

◆ theEnergyChange

G4double G4FastStep::theEnergyChange
private

Definition at line 354 of file G4FastStep.hh.

◆ theMomentumChange

G4ParticleMomentum G4FastStep::theMomentumChange
private

Definition at line 348 of file G4FastStep.hh.

◆ thePolarizationChange

G4ThreeVector G4FastStep::thePolarizationChange
private

Definition at line 351 of file G4FastStep.hh.

◆ thePositionChange

G4ThreeVector G4FastStep::thePositionChange
private

Definition at line 357 of file G4FastStep.hh.

◆ theProperTimeChange

G4double G4FastStep::theProperTimeChange
private

Definition at line 363 of file G4FastStep.hh.

◆ theTimeChange

G4double G4FastStep::theTimeChange
private

Definition at line 360 of file G4FastStep.hh.

◆ theWeightChange

G4double G4FastStep::theWeightChange
private

Definition at line 369 of file G4FastStep.hh.


The documentation for this class was generated from the following files: