Import Geant4 11.3.0.beta source tree
This commit is contained in:
+21
-1
@@ -6,11 +6,31 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2024-04-21 Gabriele Cosmo (track-V11-01-02)
|
||||
## 2024-06-01 Makoto Asai (track-V11-02-03)
|
||||
- Add optional copy of touchables when copy constructing G4Track to support
|
||||
subevent parallelism
|
||||
- Co-working with event-V11-02-04, run-V11-02-06.
|
||||
|
||||
## 2024-05-03 Ben Morgan (track-V11-02-02)
|
||||
- Remove use of no longer supported TiMemory.
|
||||
|
||||
## 2024-04-21 Gabriele Cosmo (track-V11-02-01)
|
||||
- Fixed compilation error in G4VParticleChange on Windows VC++ with
|
||||
C++20 Standard enabled.
|
||||
Based on [GitHub PR#69](https://github.com/Geant4/geant4/pull/69).
|
||||
|
||||
## 2024-04-12 Vladimir Ivanchenko (track-V11-02-00)
|
||||
- G4Track, G4Step, G4StepPoint - added keyword "inline" to all inline method
|
||||
declaration, improve comments
|
||||
- G4Step - move methods to compute delta energy and momentum to inline removing
|
||||
G4Exception but improving comments to these methods, removed G4ThreadLocal
|
||||
variable from this container
|
||||
- G4VParticleChange - improve layout of variables
|
||||
- G4ParticleChangeForGamma, G4ParticleChangeForLoss - reserve vector of
|
||||
secondaries
|
||||
- This MR provides identical results, the main purpose - more easy reading of
|
||||
class headers, expected CPU speed-up likely tiny.
|
||||
|
||||
## 2023-09-12 Makoto Asai (track-V11-01-01)
|
||||
- Adding fSuspendAndWait to G4TrackStatus.
|
||||
- G4TrackStatus is mutable in G4Track so that it may be modified in stacking.
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
#ifndef G4Step_hh
|
||||
#define G4Step_hh 1
|
||||
|
||||
#include <cstdlib> // Include from 'system'
|
||||
#include <cstdlib> // Include from 'system'
|
||||
#include <cmath> // Include from 'system'
|
||||
#include "G4ios.hh" // Include from 'system'
|
||||
#include <iomanip> // Include from 'system'
|
||||
@@ -53,7 +53,6 @@
|
||||
#include "G4StepPoint.hh" // Include from 'track'
|
||||
#include "G4StepStatus.hh" // Include from 'track'
|
||||
#include "G4TrackVector.hh" // Include from 'tracking'
|
||||
#include "G4Profiler.hh" // Include from 'global'
|
||||
|
||||
class G4Polyline; // Forward declaration.
|
||||
class G4Track; // Forward declaration.
|
||||
@@ -61,9 +60,6 @@ class G4Track; // Forward declaration.
|
||||
class G4Step
|
||||
{
|
||||
public:
|
||||
// the profiler aliases are only used when compiled with GEANT4_USE_TIMEMORY
|
||||
using ProfilerConfig = G4ProfilerConfig<G4ProfileType::Step>;
|
||||
|
||||
G4Step();
|
||||
~G4Step();
|
||||
// Constructor/Destructor
|
||||
@@ -72,111 +68,110 @@ class G4Step
|
||||
G4Step& operator=(const G4Step&);
|
||||
// Copy Constructor and assignment operator
|
||||
|
||||
G4Track* GetTrack() const;
|
||||
void SetTrack(G4Track* value);
|
||||
inline G4Track* GetTrack() const;
|
||||
inline void SetTrack(G4Track* value);
|
||||
// Current track
|
||||
|
||||
G4StepPoint* GetPreStepPoint() const;
|
||||
void SetPreStepPoint(G4StepPoint* value);
|
||||
G4StepPoint* ResetPreStepPoint(G4StepPoint* value=nullptr);
|
||||
inline G4StepPoint* GetPreStepPoint() const;
|
||||
inline void SetPreStepPoint(G4StepPoint* value);
|
||||
inline G4StepPoint* ResetPreStepPoint(G4StepPoint* value=nullptr);
|
||||
// Pre-Step points
|
||||
// If Set method is invoked, the previous StepPoint object is deleted.
|
||||
// If Reset method is invoked, the previous StepPoint object is not deleted
|
||||
// but its pointer is returned. Thus it's the caller's responsibility to
|
||||
// properly delete it.
|
||||
|
||||
G4StepPoint* GetPostStepPoint() const;
|
||||
void SetPostStepPoint(G4StepPoint* value);
|
||||
G4StepPoint* ResetPostStepPoint(G4StepPoint* value=nullptr);
|
||||
inline G4StepPoint* GetPostStepPoint() const;
|
||||
inline void SetPostStepPoint(G4StepPoint* value);
|
||||
inline G4StepPoint* ResetPostStepPoint(G4StepPoint* value=nullptr);
|
||||
// Post-Step points
|
||||
// If Set method is invoked, the previous StepPoint object is deleted.
|
||||
// If Reset method is invoked, the previous StepPoint object is not deleted
|
||||
// but its pointer is returned. Thus it's the caller's responsibility to
|
||||
// properly delete it.
|
||||
|
||||
G4double GetStepLength() const;
|
||||
void SetStepLength(G4double value);
|
||||
inline G4double GetStepLength() const;
|
||||
inline void SetStepLength(G4double value);
|
||||
// Before the end of the AlongStepDoIt loop, StepLength keeps
|
||||
// the initial value which is determined by the shortest geometrical Step
|
||||
// proposed by a physics process. After finishing the AlongStepDoIt,
|
||||
// it will be set equal to 'StepLength' in G4Step
|
||||
|
||||
G4double GetTotalEnergyDeposit() const;
|
||||
void SetTotalEnergyDeposit(G4double value);
|
||||
inline G4double GetTotalEnergyDeposit() const;
|
||||
inline void SetTotalEnergyDeposit(G4double value);
|
||||
// Total energy deposit
|
||||
|
||||
G4double GetNonIonizingEnergyDeposit() const;
|
||||
void SetNonIonizingEnergyDeposit(G4double value);
|
||||
inline G4double GetNonIonizingEnergyDeposit() const;
|
||||
inline void SetNonIonizingEnergyDeposit(G4double value);
|
||||
// Total non-ionizing energy deposit
|
||||
|
||||
G4SteppingControl GetControlFlag() const;
|
||||
void SetControlFlag(G4SteppingControl StepControlFlag);
|
||||
inline G4SteppingControl GetControlFlag() const;
|
||||
inline void SetControlFlag(G4SteppingControl StepControlFlag);
|
||||
// Control flag for stepping
|
||||
|
||||
void AddTotalEnergyDeposit(G4double value);
|
||||
void ResetTotalEnergyDeposit();
|
||||
inline void AddTotalEnergyDeposit(G4double value);
|
||||
inline void ResetTotalEnergyDeposit();
|
||||
// Manipulation of total energy deposit
|
||||
|
||||
void AddNonIonizingEnergyDeposit(G4double value);
|
||||
void ResetNonIonizingEnergyDeposit();
|
||||
inline void AddNonIonizingEnergyDeposit(G4double value);
|
||||
inline void ResetNonIonizingEnergyDeposit();
|
||||
// Manipulation of non-ionizing energy deposit
|
||||
|
||||
G4bool IsFirstStepInVolume() const;
|
||||
G4bool IsLastStepInVolume() const;
|
||||
inline G4bool IsFirstStepInVolume() const;
|
||||
inline G4bool IsLastStepInVolume() const;
|
||||
|
||||
void SetFirstStepFlag();
|
||||
void ClearFirstStepFlag();
|
||||
void SetLastStepFlag();
|
||||
void ClearLastStepFlag();
|
||||
inline void SetFirstStepFlag();
|
||||
inline void ClearFirstStepFlag();
|
||||
inline void SetLastStepFlag();
|
||||
inline void ClearLastStepFlag();
|
||||
// Get/Set/Clear flag for initial/last step
|
||||
// NOTE: flags are not used
|
||||
|
||||
G4ThreeVector GetDeltaPosition() const;
|
||||
G4double GetDeltaTime() const;
|
||||
inline G4ThreeVector GetDeltaPosition() const;
|
||||
inline G4double GetDeltaTime() const;
|
||||
// Difference of position, time, momentum and energy
|
||||
|
||||
G4ThreeVector GetDeltaMomentum() const;
|
||||
G4double GetDeltaEnergy() const;
|
||||
// These methods will be deleted
|
||||
// NOTE: use GetTotalEnergyDeposit() to obtain energy loss in material
|
||||
inline G4ThreeVector GetDeltaMomentum() const;
|
||||
inline G4double GetDeltaEnergy() const;
|
||||
// These methods provide difference between track energy and momentum
|
||||
// at a step, it is incorrect to use these methods to compute energy
|
||||
// deposition in media during the step, because secondary particles may
|
||||
// be produced. For energy deposition use the method GetTotalEnergyDeposit()
|
||||
|
||||
void InitializeStep(G4Track* aValue);
|
||||
inline void InitializeStep(G4Track* aValue);
|
||||
// Initialize contents of G4Step
|
||||
|
||||
void UpdateTrack();
|
||||
inline void UpdateTrack();
|
||||
// Update track by using G4Step information
|
||||
|
||||
void CopyPostToPreStepPoint();
|
||||
inline void CopyPostToPreStepPoint();
|
||||
// Copy PostStepPoint to PreStepPoint
|
||||
|
||||
G4Polyline* CreatePolyline() const;
|
||||
// For visualization
|
||||
|
||||
inline void SetPointerToVectorOfAuxiliaryPoints(std::vector<G4ThreeVector>* vec);
|
||||
inline std::vector<G4ThreeVector>* GetPointerToVectorOfAuxiliaryPoints() const;
|
||||
// Auxiliary points modifiers
|
||||
|
||||
// --- Secondary buckets ---
|
||||
|
||||
std::size_t GetNumberOfSecondariesInCurrentStep() const;
|
||||
inline std::size_t GetNumberOfSecondariesInCurrentStep() const;
|
||||
// Secondaries in the current step
|
||||
|
||||
const std::vector<const G4Track*>* GetSecondaryInCurrentStep() const;
|
||||
|
||||
const G4TrackVector* GetSecondary() const;
|
||||
G4TrackVector* GetfSecondary();
|
||||
G4TrackVector* NewSecondaryVector();
|
||||
inline const G4TrackVector* GetSecondary() const;
|
||||
inline G4TrackVector* GetfSecondary();
|
||||
inline G4TrackVector* NewSecondaryVector();
|
||||
// NOTE: Secondary bucket of the Step contains
|
||||
// all secondaries during tracking the current track
|
||||
// (i.e. NOT secondaries produced in the current step)
|
||||
// all these methods give same object (i.e. G4TrackVector )
|
||||
// but 2nd one will create bucket in addition
|
||||
|
||||
void DeleteSecondaryVector();
|
||||
inline void DeleteSecondaryVector();
|
||||
// Just delete secondary bucket
|
||||
// NOTE: G4Track objects inside the bucket are not deleted
|
||||
|
||||
void SetSecondary(G4TrackVector* value);
|
||||
inline void SetSecondary(G4TrackVector* value);
|
||||
// Add secondary tracks to the bucket
|
||||
|
||||
protected:
|
||||
|
||||
@@ -129,6 +129,16 @@ inline void G4Step::ResetNonIonizingEnergyDeposit()
|
||||
fNonIonizingEnergyDeposit = 0.;
|
||||
}
|
||||
|
||||
inline G4double G4Step::GetDeltaEnergy() const
|
||||
{
|
||||
return fpPostStepPoint->GetKineticEnergy() - fpPreStepPoint->GetKineticEnergy();
|
||||
}
|
||||
|
||||
inline G4ThreeVector G4Step::GetDeltaMomentum() const
|
||||
{
|
||||
return fpPostStepPoint->GetMomentum() - fpPreStepPoint->GetMomentum();
|
||||
}
|
||||
|
||||
inline void G4Step::SetControlFlag(G4SteppingControl value)
|
||||
{
|
||||
fpSteppingControlFlag = value;
|
||||
|
||||
@@ -57,100 +57,100 @@ class G4StepPoint
|
||||
public:
|
||||
|
||||
G4StepPoint() = default;
|
||||
~G4StepPoint()= default;
|
||||
~G4StepPoint()= default;
|
||||
// Constructor/Destructor
|
||||
|
||||
G4StepPoint(const G4StepPoint&) = default;
|
||||
G4StepPoint& operator=(const G4StepPoint&);
|
||||
// Copy Constructor and assignment operator
|
||||
|
||||
const G4ThreeVector& GetPosition() const;
|
||||
void SetPosition(const G4ThreeVector& aValue);
|
||||
void AddPosition(const G4ThreeVector& aValue);
|
||||
inline const G4ThreeVector& GetPosition() const;
|
||||
inline void SetPosition(const G4ThreeVector& aValue);
|
||||
inline void AddPosition(const G4ThreeVector& aValue);
|
||||
// Position
|
||||
|
||||
G4double GetLocalTime() const;
|
||||
void SetLocalTime(const G4double aValue);
|
||||
void AddLocalTime(const G4double aValue);
|
||||
inline G4double GetLocalTime() const;
|
||||
inline void SetLocalTime(const G4double aValue);
|
||||
inline void AddLocalTime(const G4double aValue);
|
||||
// Time since the track is created
|
||||
|
||||
G4double GetGlobalTime() const;
|
||||
void SetGlobalTime(const G4double aValue);
|
||||
void AddGlobalTime(const G4double aValue);
|
||||
inline G4double GetGlobalTime() const;
|
||||
inline void SetGlobalTime(const G4double aValue);
|
||||
inline void AddGlobalTime(const G4double aValue);
|
||||
// Time since the event in which the track belongs is created
|
||||
|
||||
G4double GetProperTime() const;
|
||||
void SetProperTime(const G4double aValue);
|
||||
void AddProperTime(const G4double aValue);
|
||||
inline G4double GetProperTime() const;
|
||||
inline void SetProperTime(const G4double aValue);
|
||||
inline void AddProperTime(const G4double aValue);
|
||||
// Proper time of the particle
|
||||
|
||||
const G4ThreeVector& GetMomentumDirection() const;
|
||||
void SetMomentumDirection(const G4ThreeVector& aValue);
|
||||
void AddMomentumDirection(const G4ThreeVector& aValue);
|
||||
inline const G4ThreeVector& GetMomentumDirection() const;
|
||||
inline void SetMomentumDirection(const G4ThreeVector& aValue);
|
||||
inline void AddMomentumDirection(const G4ThreeVector& aValue);
|
||||
// Direction of momentum (should be an unit vector)
|
||||
|
||||
G4ThreeVector GetMomentum() const;
|
||||
inline G4ThreeVector GetMomentum() const;
|
||||
// Total momentum of the track
|
||||
|
||||
G4double GetTotalEnergy() const;
|
||||
inline G4double GetTotalEnergy() const;
|
||||
// Total energy of the track
|
||||
|
||||
G4double GetKineticEnergy() const;
|
||||
void SetKineticEnergy(const G4double aValue);
|
||||
void AddKineticEnergy(const G4double aValue);
|
||||
inline G4double GetKineticEnergy() const;
|
||||
inline void SetKineticEnergy(const G4double aValue);
|
||||
inline void AddKineticEnergy(const G4double aValue);
|
||||
// Kinetic Energy of the track
|
||||
|
||||
G4double GetVelocity() const;
|
||||
void SetVelocity(G4double v);
|
||||
inline G4double GetVelocity() const;
|
||||
inline void SetVelocity(G4double v);
|
||||
// Velocity
|
||||
|
||||
G4double GetBeta() const;
|
||||
inline G4double GetBeta() const;
|
||||
// Velocity of the track in unit of c(light velocity)
|
||||
|
||||
G4double GetGamma() const;
|
||||
inline G4double GetGamma() const;
|
||||
// Gamma factor (1/sqrt[1-beta*beta]) of the track
|
||||
|
||||
G4VPhysicalVolume* GetPhysicalVolume() const;
|
||||
inline G4VPhysicalVolume* GetPhysicalVolume() const;
|
||||
|
||||
const G4VTouchable* GetTouchable() const;
|
||||
const G4TouchableHandle& GetTouchableHandle() const;
|
||||
void SetTouchableHandle(const G4TouchableHandle& apValue);
|
||||
inline const G4VTouchable* GetTouchable() const;
|
||||
inline const G4TouchableHandle& GetTouchableHandle() const;
|
||||
inline void SetTouchableHandle(const G4TouchableHandle& apValue);
|
||||
|
||||
G4Material* GetMaterial() const;
|
||||
void SetMaterial(G4Material*);
|
||||
inline G4Material* GetMaterial() const;
|
||||
inline void SetMaterial(G4Material*);
|
||||
|
||||
const G4MaterialCutsCouple* GetMaterialCutsCouple() const;
|
||||
void SetMaterialCutsCouple(const G4MaterialCutsCouple*);
|
||||
inline const G4MaterialCutsCouple* GetMaterialCutsCouple() const;
|
||||
inline void SetMaterialCutsCouple(const G4MaterialCutsCouple*);
|
||||
|
||||
G4VSensitiveDetector* GetSensitiveDetector() const;
|
||||
void SetSensitiveDetector(G4VSensitiveDetector*);
|
||||
inline G4VSensitiveDetector* GetSensitiveDetector() const;
|
||||
inline void SetSensitiveDetector(G4VSensitiveDetector*);
|
||||
|
||||
G4double GetSafety() const;
|
||||
void SetSafety(const G4double aValue);
|
||||
inline G4double GetSafety() const;
|
||||
inline void SetSafety(const G4double aValue);
|
||||
|
||||
const G4ThreeVector& GetPolarization() const;
|
||||
void SetPolarization(const G4ThreeVector& aValue);
|
||||
void AddPolarization(const G4ThreeVector& aValue);
|
||||
inline const G4ThreeVector& GetPolarization() const;
|
||||
inline void SetPolarization(const G4ThreeVector& aValue);
|
||||
inline void AddPolarization(const G4ThreeVector& aValue);
|
||||
|
||||
G4StepStatus GetStepStatus() const;
|
||||
void SetStepStatus(const G4StepStatus aValue);
|
||||
inline G4StepStatus GetStepStatus() const;
|
||||
inline void SetStepStatus(const G4StepStatus aValue);
|
||||
|
||||
const G4VProcess* GetProcessDefinedStep() const;
|
||||
inline const G4VProcess* GetProcessDefinedStep() const;
|
||||
// If the pointer is 0, this means the Step is defined
|
||||
// by the user defined limit in the current volume
|
||||
void SetProcessDefinedStep(const G4VProcess* aValue);
|
||||
inline void SetProcessDefinedStep(const G4VProcess* aValue);
|
||||
|
||||
G4double GetMass() const;
|
||||
void SetMass(G4double value);
|
||||
inline G4double GetMass() const;
|
||||
inline void SetMass(G4double value);
|
||||
|
||||
G4double GetCharge() const;
|
||||
void SetCharge(G4double value);
|
||||
inline G4double GetCharge() const;
|
||||
inline void SetCharge(G4double value);
|
||||
|
||||
G4double GetMagneticMoment() const;
|
||||
void SetMagneticMoment(G4double value);
|
||||
inline G4double GetMagneticMoment() const;
|
||||
inline void SetMagneticMoment(G4double value);
|
||||
|
||||
void SetWeight(G4double aValue);
|
||||
G4double GetWeight() const;
|
||||
inline void SetWeight(G4double aValue);
|
||||
inline G4double GetWeight() const;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
@@ -56,7 +56,6 @@
|
||||
#include "G4VUserTrackInformation.hh"
|
||||
#include "G4PhysicsModelCatalog.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4Profiler.hh"
|
||||
|
||||
class G4Step; // Forward declaration
|
||||
class G4MaterialCutsCouple;
|
||||
@@ -66,9 +65,6 @@ class G4VProcess;
|
||||
class G4Track
|
||||
{
|
||||
public:
|
||||
// the profiler aliases are only used when compiled with GEANT4_USE_TIMEMORY
|
||||
using ProfilerConfig = G4ProfilerConfig<G4ProfileType::Track>;
|
||||
|
||||
G4Track();
|
||||
// Default constructor
|
||||
G4Track(G4DynamicParticle* apValueDynamicParticle,
|
||||
@@ -76,7 +72,7 @@ class G4Track
|
||||
const G4ThreeVector& aValuePosition);
|
||||
// Constructor - aValueTime is a global time
|
||||
|
||||
G4Track(const G4Track&);
|
||||
G4Track(const G4Track&,G4bool copyTouchables = true);
|
||||
// Copy Constructor - copies members other than tracking information
|
||||
|
||||
~G4Track();
|
||||
@@ -94,137 +90,135 @@ class G4Track
|
||||
inline G4bool operator!=(const G4Track&);
|
||||
// Equality operators
|
||||
|
||||
void CopyTrackInfo(const G4Track&);
|
||||
void CopyTrackInfo(const G4Track&, G4bool copyTouchables = true);
|
||||
// Copy information of the track (w/o tracking information)
|
||||
|
||||
G4int GetTrackID() const;
|
||||
void SetTrackID(const G4int aValue);
|
||||
inline G4int GetTrackID() const;
|
||||
inline void SetTrackID(const G4int aValue);
|
||||
// Get/Set functions track ID
|
||||
|
||||
G4int GetParentID() const;
|
||||
void SetParentID(const G4int aValue);
|
||||
inline G4int GetParentID() const;
|
||||
inline void SetParentID(const G4int aValue);
|
||||
|
||||
const G4DynamicParticle* GetDynamicParticle() const;
|
||||
inline const G4DynamicParticle* GetDynamicParticle() const;
|
||||
// Dynamic particle
|
||||
|
||||
const G4ParticleDefinition* GetParticleDefinition() const;
|
||||
inline const G4ParticleDefinition* GetParticleDefinition() const;
|
||||
// Particle definition
|
||||
G4ParticleDefinition* GetDefinition() const;
|
||||
inline G4ParticleDefinition* GetDefinition() const;
|
||||
// Obsolete, for backwards compatibility...
|
||||
|
||||
const G4ThreeVector& GetPosition() const;
|
||||
void SetPosition(const G4ThreeVector& aValue);
|
||||
inline const G4ThreeVector& GetPosition() const;
|
||||
inline void SetPosition(const G4ThreeVector& aValue);
|
||||
// Position, time
|
||||
|
||||
G4double GetGlobalTime() const;
|
||||
void SetGlobalTime(const G4double aValue);
|
||||
inline G4double GetGlobalTime() const;
|
||||
inline void SetGlobalTime(const G4double aValue);
|
||||
// Time since the event in which the track belongs is created
|
||||
|
||||
G4double GetLocalTime() const;
|
||||
void SetLocalTime(const G4double aValue);
|
||||
inline G4double GetLocalTime() const;
|
||||
inline void SetLocalTime(const G4double aValue);
|
||||
// Time since the current track is created
|
||||
|
||||
G4double GetProperTime() const;
|
||||
void SetProperTime(const G4double aValue);
|
||||
inline G4double GetProperTime() const;
|
||||
inline void SetProperTime(const G4double aValue);
|
||||
// Proper time of the current track
|
||||
|
||||
G4VPhysicalVolume* GetVolume() const;
|
||||
G4VPhysicalVolume* GetNextVolume() const;
|
||||
inline G4VPhysicalVolume* GetVolume() const;
|
||||
inline G4VPhysicalVolume* GetNextVolume() const;
|
||||
// Volume, material, touchable
|
||||
|
||||
G4Material* GetMaterial() const;
|
||||
G4Material* GetNextMaterial() const;
|
||||
inline G4Material* GetMaterial() const;
|
||||
inline G4Material* GetNextMaterial() const;
|
||||
|
||||
const G4MaterialCutsCouple* GetMaterialCutsCouple() const;
|
||||
const G4MaterialCutsCouple* GetNextMaterialCutsCouple() const;
|
||||
inline const G4MaterialCutsCouple* GetMaterialCutsCouple() const;
|
||||
inline const G4MaterialCutsCouple* GetNextMaterialCutsCouple() const;
|
||||
|
||||
const G4VTouchable* GetTouchable() const;
|
||||
const G4TouchableHandle& GetTouchableHandle() const;
|
||||
void SetTouchableHandle(const G4TouchableHandle& apValue);
|
||||
inline const G4VTouchable* GetTouchable() const;
|
||||
inline const G4TouchableHandle& GetTouchableHandle() const;
|
||||
inline void SetTouchableHandle(const G4TouchableHandle& apValue);
|
||||
|
||||
const G4VTouchable* GetNextTouchable() const;
|
||||
const G4TouchableHandle& GetNextTouchableHandle() const;
|
||||
void SetNextTouchableHandle(const G4TouchableHandle& apValue);
|
||||
inline const G4VTouchable* GetNextTouchable() const;
|
||||
inline const G4TouchableHandle& GetNextTouchableHandle() const;
|
||||
inline void SetNextTouchableHandle(const G4TouchableHandle& apValue);
|
||||
|
||||
const G4VTouchable* GetOriginTouchable() const;
|
||||
const G4TouchableHandle& GetOriginTouchableHandle() const;
|
||||
void SetOriginTouchableHandle(const G4TouchableHandle& apValue);
|
||||
inline const G4VTouchable* GetOriginTouchable() const;
|
||||
inline const G4TouchableHandle& GetOriginTouchableHandle() const;
|
||||
inline void SetOriginTouchableHandle(const G4TouchableHandle& apValue);
|
||||
|
||||
G4double GetKineticEnergy() const;
|
||||
void SetKineticEnergy(const G4double aValue);
|
||||
inline G4double GetKineticEnergy() const;
|
||||
inline G4double GetTotalEnergy() const;
|
||||
inline void SetKineticEnergy(const G4double aValue);
|
||||
// Energy
|
||||
|
||||
G4double GetTotalEnergy() const;
|
||||
|
||||
const G4ThreeVector& GetMomentumDirection() const;
|
||||
void SetMomentumDirection(const G4ThreeVector& aValue);
|
||||
inline G4ThreeVector GetMomentum() const;
|
||||
inline const G4ThreeVector& GetMomentumDirection() const;
|
||||
inline void SetMomentumDirection(const G4ThreeVector& aValue);
|
||||
// Momentum
|
||||
|
||||
G4ThreeVector GetMomentum() const;
|
||||
|
||||
G4double GetVelocity() const;
|
||||
void SetVelocity(G4double val);
|
||||
inline G4double GetVelocity() const;
|
||||
inline void SetVelocity(G4double val);
|
||||
// Velocity
|
||||
|
||||
G4double CalculateVelocity() const;
|
||||
inline G4double CalculateVelocity() const;
|
||||
G4double CalculateVelocityForOpticalPhoton() const;
|
||||
|
||||
G4bool UseGivenVelocity() const;
|
||||
void UseGivenVelocity(G4bool val);
|
||||
inline G4bool UseGivenVelocity() const;
|
||||
inline void UseGivenVelocity(G4bool val);
|
||||
|
||||
const G4ThreeVector& GetPolarization() const;
|
||||
void SetPolarization(const G4ThreeVector& aValue);
|
||||
inline const G4ThreeVector& GetPolarization() const;
|
||||
inline void SetPolarization(const G4ThreeVector& aValue);
|
||||
// Polarization
|
||||
|
||||
G4TrackStatus GetTrackStatus() const;
|
||||
void SetTrackStatus(const G4TrackStatus aTrackStatus);
|
||||
inline G4TrackStatus GetTrackStatus() const;
|
||||
inline void SetTrackStatus(const G4TrackStatus aTrackStatus);
|
||||
// Track status, flags for tracking
|
||||
|
||||
G4bool IsBelowThreshold() const;
|
||||
void SetBelowThresholdFlag(G4bool value = true);
|
||||
inline G4bool IsBelowThreshold() const;
|
||||
inline void SetBelowThresholdFlag(G4bool value = true);
|
||||
// The flag of "BelowThreshold" is set to true
|
||||
// If this track energy is below threshold energy
|
||||
// in this material is determined by the range cut value
|
||||
|
||||
G4bool IsGoodForTracking() const;
|
||||
void SetGoodForTrackingFlag(G4bool value = true);
|
||||
inline G4bool IsGoodForTracking() const;
|
||||
inline void SetGoodForTrackingFlag(G4bool value = true);
|
||||
// The flag of "GoodForTracking" is set by processes
|
||||
// if this track should be tracked
|
||||
// even if the energy is below threshold
|
||||
|
||||
G4double GetTrackLength() const;
|
||||
void AddTrackLength(const G4double aValue);
|
||||
inline G4double GetTrackLength() const;
|
||||
inline void AddTrackLength(const G4double aValue);
|
||||
// Accumulated track length
|
||||
|
||||
const G4Step* GetStep() const;
|
||||
void SetStep(const G4Step* aValue);
|
||||
inline const G4Step* GetStep() const;
|
||||
inline void SetStep(const G4Step* aValue);
|
||||
// Step information
|
||||
|
||||
G4int GetCurrentStepNumber() const;
|
||||
void IncrementCurrentStepNumber();
|
||||
inline G4int GetCurrentStepNumber() const;
|
||||
inline void IncrementCurrentStepNumber();
|
||||
|
||||
G4double GetStepLength() const;
|
||||
void SetStepLength(G4double value);
|
||||
inline G4double GetStepLength() const;
|
||||
inline void SetStepLength(G4double value);
|
||||
// Before the end of the AlongStepDoIt() loop, StepLength keeps
|
||||
// the initial value which is determined by the shortest geometrical Step
|
||||
// proposed by a physics process. After finishing the AlongStepDoIt(),
|
||||
// it will be set equal to 'StepLength' in G4Step
|
||||
|
||||
const G4ThreeVector& GetVertexPosition() const;
|
||||
void SetVertexPosition(const G4ThreeVector& aValue);
|
||||
inline const G4ThreeVector& GetVertexPosition() const;
|
||||
inline void SetVertexPosition(const G4ThreeVector& aValue);
|
||||
// Vertex (where this track was created) information
|
||||
|
||||
const G4ThreeVector& GetVertexMomentumDirection() const;
|
||||
void SetVertexMomentumDirection(const G4ThreeVector& aValue);
|
||||
inline const G4ThreeVector& GetVertexMomentumDirection() const;
|
||||
inline void SetVertexMomentumDirection(const G4ThreeVector& aValue);
|
||||
|
||||
G4double GetVertexKineticEnergy() const;
|
||||
void SetVertexKineticEnergy(const G4double aValue);
|
||||
inline G4double GetVertexKineticEnergy() const;
|
||||
inline void SetVertexKineticEnergy(const G4double aValue);
|
||||
|
||||
const G4LogicalVolume* GetLogicalVolumeAtVertex() const;
|
||||
void SetLogicalVolumeAtVertex(const G4LogicalVolume*);
|
||||
inline const G4LogicalVolume* GetLogicalVolumeAtVertex() const;
|
||||
inline void SetLogicalVolumeAtVertex(const G4LogicalVolume*);
|
||||
|
||||
const G4VProcess* GetCreatorProcess() const;
|
||||
void SetCreatorProcess(const G4VProcess* aValue);
|
||||
inline const G4VProcess* GetCreatorProcess() const;
|
||||
inline void SetCreatorProcess(const G4VProcess* aValue);
|
||||
|
||||
inline void SetCreatorModelID(const G4int id);
|
||||
inline G4int GetCreatorModelID() const;
|
||||
@@ -258,12 +252,12 @@ class G4Track
|
||||
// the above "Get" methods return, respectively: nullptr, 0, false,
|
||||
// 0, "", 0.
|
||||
|
||||
G4double GetWeight() const;
|
||||
void SetWeight(G4double aValue);
|
||||
inline G4double GetWeight() const;
|
||||
inline void SetWeight(G4double aValue);
|
||||
// Track weight; methods for manipulating a weight for this track
|
||||
|
||||
G4VUserTrackInformation* GetUserInformation() const;
|
||||
void SetUserInformation(G4VUserTrackInformation* aValue) const;
|
||||
inline G4VUserTrackInformation* GetUserInformation() const;
|
||||
inline void SetUserInformation(G4VUserTrackInformation* aValue) const;
|
||||
// User information
|
||||
|
||||
void SetAuxiliaryTrackInformation(G4int id,
|
||||
@@ -363,6 +357,8 @@ class G4Track
|
||||
G4bool useGivenVelocity = false;
|
||||
// do not calculate velocity and just use current fVelocity
|
||||
// if this flag is set
|
||||
|
||||
G4bool fCopyTouchables = true;
|
||||
};
|
||||
|
||||
#include "G4Track.icc"
|
||||
|
||||
@@ -231,9 +231,6 @@ class G4VParticleChange
|
||||
|
||||
const G4Track* theCurrentTrack = nullptr;
|
||||
|
||||
std::vector<G4Track*> theListOfSecondaries;
|
||||
// The vector of secondaries
|
||||
|
||||
G4TrackStatus theStatusChange = fAlive;
|
||||
// The changed (final) track status of a given particle
|
||||
|
||||
@@ -284,6 +281,9 @@ class G4VParticleChange
|
||||
// Flag for setting weight of secondaries
|
||||
|
||||
G4bool debugFlag = false;
|
||||
|
||||
std::vector<G4Track*> theListOfSecondaries;
|
||||
// The vector of secondaries
|
||||
};
|
||||
|
||||
#include "G4VParticleChange.icc"
|
||||
|
||||
@@ -41,6 +41,7 @@ G4ParticleChangeForGamma::G4ParticleChangeForGamma()
|
||||
{
|
||||
// Disable flag to avoid check of each secondary at each step
|
||||
debugFlag = false;
|
||||
SetNumberOfSecondaries(2);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
@@ -38,6 +38,7 @@ G4ParticleChangeForLoss::G4ParticleChangeForLoss()
|
||||
{
|
||||
// Disable flag that is enabled in G4VParticleChange if G4VERBOSE.
|
||||
debugFlag = false;
|
||||
SetNumberOfSecondaries(1);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
@@ -49,14 +49,8 @@ G4Step::~G4Step()
|
||||
delete fpPreStepPoint;
|
||||
delete fpPostStepPoint;
|
||||
|
||||
secondaryInCurrentStep->clear();
|
||||
delete secondaryInCurrentStep;
|
||||
|
||||
if(fSecondary != nullptr)
|
||||
{
|
||||
fSecondary->clear();
|
||||
delete fSecondary;
|
||||
}
|
||||
delete fSecondary;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
@@ -165,39 +159,6 @@ G4Step& G4Step::operator=(const G4Step& right)
|
||||
return *this;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
G4ThreeVector G4Step::GetDeltaMomentum() const
|
||||
{
|
||||
static G4ThreadLocal G4bool isFirstTime = true;
|
||||
if(isFirstTime)
|
||||
{
|
||||
isFirstTime = false;
|
||||
#ifdef G4VERBOSE
|
||||
G4Exception("G4Step::GetDeltaMomentum()", "Warning", JustWarning,
|
||||
"This method is obsolete and will be removed soon");
|
||||
#endif
|
||||
}
|
||||
|
||||
return fpPostStepPoint->GetMomentum() - fpPreStepPoint->GetMomentum();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
G4double G4Step::GetDeltaEnergy() const
|
||||
{
|
||||
static G4ThreadLocal G4bool isFirstTime = true;
|
||||
if(isFirstTime)
|
||||
{
|
||||
isFirstTime = false;
|
||||
#ifdef G4VERBOSE
|
||||
G4Exception("G4Step::GetDeltaEnergy()", "Warning", JustWarning,
|
||||
"This method is obsolete and will be removed soon");
|
||||
#endif
|
||||
}
|
||||
|
||||
return fpPostStepPoint->GetKineticEnergy() -
|
||||
fpPreStepPoint->GetKineticEnergy();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
const std::vector<const G4Track*>* G4Step::GetSecondaryInCurrentStep() const
|
||||
{
|
||||
|
||||
@@ -65,10 +65,12 @@ G4Track::G4Track()
|
||||
{}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
G4Track::G4Track(const G4Track& right)
|
||||
G4Track::G4Track(const G4Track& right,G4bool copyTouchables)
|
||||
: fVelocity(c_light)
|
||||
{
|
||||
fCopyTouchables = copyTouchables;
|
||||
*this = right;
|
||||
fCopyTouchables = true;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
@@ -92,9 +94,11 @@ G4Track& G4Track::operator=(const G4Track& right)
|
||||
fStepLength = right.fStepLength;
|
||||
|
||||
// additional fields required for geometrical splitting
|
||||
fpTouchable = right.fpTouchable;
|
||||
fpNextTouchable = right.fpNextTouchable;
|
||||
fpOriginTouchable = right.fpOriginTouchable;
|
||||
if(fCopyTouchables) {
|
||||
fpTouchable = right.fpTouchable;
|
||||
fpNextTouchable = right.fpNextTouchable;
|
||||
fpOriginTouchable = right.fpOriginTouchable;
|
||||
}
|
||||
|
||||
// Track ID (and Parent ID) is not copied and set to zero for new track
|
||||
fTrackID = 0;
|
||||
@@ -151,9 +155,11 @@ G4Track& G4Track::operator=(const G4Track& right)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
void G4Track::CopyTrackInfo(const G4Track& right)
|
||||
void G4Track::CopyTrackInfo(const G4Track& right, G4bool copyTouchables)
|
||||
{
|
||||
fCopyTouchables = copyTouchables;
|
||||
*this = right;
|
||||
fCopyTouchables = true;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user