Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4StepPoint.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// G4StepPoint
27//
28// Class description:
29//
30// This class represents information associated with each end
31// of a Step like the space/time data of the particle.
32
33// Author: Hisaya Kurashige, 16 February 2000
34// --------------------------------------------------------------------
35#ifndef G4StepPoint_hh
36#define G4StepPoint_hh 1
37
38#include <cmath> // Include from 'system'
40
41#include "globals.hh" // Include from 'global'
42#include "G4Allocator.hh" // Include from 'global'
43#include "G4ThreeVector.hh" // Include from 'geometry'
44#include "G4VPhysicalVolume.hh" // Include from 'geometry'
45#include "G4SteppingControl.hh"
46#include "G4StepStatus.hh" // Include from 'track'
47#include "G4TouchableHandle.hh" // Include from 'geometry'
48#include "G4Material.hh"
49#include "G4LogicalVolume.hh"
50
51class G4VProcess;
54
56{
57 public:
58
59 G4StepPoint() = default;
60 ~G4StepPoint()= default;
61 // Constructor/Destructor
62
63 G4StepPoint(const G4StepPoint&) = default;
65 // Copy Constructor and assignment operator
66
67 const G4ThreeVector& GetPosition() const;
68 void SetPosition(const G4ThreeVector& aValue);
69 void AddPosition(const G4ThreeVector& aValue);
70 // Position
71
73 void SetLocalTime(const G4double aValue);
74 void AddLocalTime(const G4double aValue);
75 // Time since the track is created
76
78 void SetGlobalTime(const G4double aValue);
79 void AddGlobalTime(const G4double aValue);
80 // Time since the event in which the track belongs is created
81
83 void SetProperTime(const G4double aValue);
84 void AddProperTime(const G4double aValue);
85 // Proper time of the particle
86
90 // Direction of momentum (should be an unit vector)
91
93 // Total momentum of the track
94
96 // Total energy of the track
97
99 void SetKineticEnergy(const G4double aValue);
100 void AddKineticEnergy(const G4double aValue);
101 // Kinetic Energy of the track
102
105 // Velocity
106
108 // Velocity of the track in unit of c(light velocity)
109
111 // Gamma factor (1/sqrt[1-beta*beta]) of the track
112
114
118
121
124
127
129 void SetSafety(const G4double aValue);
130
132 void SetPolarization(const G4ThreeVector& aValue);
133 void AddPolarization(const G4ThreeVector& aValue);
134
136 void SetStepStatus(const G4StepStatus aValue);
137
139 // If the pointer is 0, this means the Step is defined
140 // by the user defined limit in the current volume
142
144 void SetMass(G4double value);
145
147 void SetCharge(G4double value);
148
151
152 void SetWeight(G4double aValue);
154
155 private:
156
157 G4ThreeVector fPosition;
158 G4double fGlobalTime = 0.0;
159 // Time since event is created
160 G4double fLocalTime = 0.0;
161 // Time since track is created
162 G4double fProperTime = 0.0;
163 // Time since track is created (in rest frame of particle)
164 G4ThreeVector fMomentumDirection;
165 G4double fKineticEnergy = 0.0;
166 G4double fVelocity = 0.0;
167 // Momentum,energy and velocity
168 G4TouchableHandle fpTouchable;
169 // Touchable Handle
170 G4Material* fpMaterial = nullptr;
171 // Material of the volmue
172 const G4MaterialCutsCouple* fpMaterialCutsCouple = nullptr;
173 // MaterialCutsCouple of the volmue
174 G4VSensitiveDetector* fpSensitiveDetector = nullptr;
175 G4double fSafety = 0.0;
176 G4ThreeVector fPolarization;
177 G4StepStatus fStepStatus = fUndefined;
178 // DoIt type which defined the current Step.
179 const G4VProcess* fpProcessDefinedStep = nullptr;
180 // Process which defined the current Step.
181 G4double fMass = 0.0;
182 // Dynamical mass of the particle
183 G4double fCharge = 0.0;
184 // Dynamical Charge of the particle
185 G4double fMagneticMoment = 0.0;
186 // Dynamical MagneticMoment of the particle
187 G4double fWeight = 0.0;
188 // Track Weight
189};
190
191#include "G4StepPoint.icc"
192
193#endif
G4StepStatus
Definition: G4StepStatus.hh:40
@ fUndefined
Definition: G4StepStatus.hh:55
double G4double
Definition: G4Types.hh:83
void AddPolarization(const G4ThreeVector &aValue)
G4double GetMass() const
void SetLocalTime(const G4double aValue)
G4double GetTotalEnergy() const
void SetMagneticMoment(G4double value)
G4double GetMagneticMoment() const
void SetSensitiveDetector(G4VSensitiveDetector *)
void SetKineticEnergy(const G4double aValue)
void SetWeight(G4double aValue)
void SetMaterial(G4Material *)
void AddKineticEnergy(const G4double aValue)
G4StepStatus GetStepStatus() const
void SetMass(G4double value)
G4double GetVelocity() const
void SetSafety(const G4double aValue)
void SetCharge(G4double value)
G4double GetProperTime() const
G4double GetBeta() const
G4StepPoint & operator=(const G4StepPoint &)
Definition: G4StepPoint.cc:34
const G4VTouchable * GetTouchable() const
void SetStepStatus(const G4StepStatus aValue)
G4double GetGlobalTime() const
void AddProperTime(const G4double aValue)
void SetVelocity(G4double v)
G4double GetCharge() const
G4double GetSafety() const
const G4VProcess * GetProcessDefinedStep() const
G4double GetGamma() const
void AddPosition(const G4ThreeVector &aValue)
void SetProcessDefinedStep(const G4VProcess *aValue)
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4Material * GetMaterial() const
G4ThreeVector GetMomentum() const
const G4ThreeVector & GetPosition() const
void SetProperTime(const G4double aValue)
const G4ThreeVector & GetMomentumDirection() const
const G4TouchableHandle & GetTouchableHandle() const
void SetMaterialCutsCouple(const G4MaterialCutsCouple *)
void AddGlobalTime(const G4double aValue)
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
G4double GetLocalTime() const
G4VSensitiveDetector * GetSensitiveDetector() const
G4StepPoint(const G4StepPoint &)=default
void SetGlobalTime(const G4double aValue)
G4VPhysicalVolume * GetPhysicalVolume() const
void SetPosition(const G4ThreeVector &aValue)
const G4ThreeVector & GetPolarization() const
~G4StepPoint()=default
G4StepPoint()=default
G4double GetKineticEnergy() const
G4double GetWeight() const
void AddLocalTime(const G4double aValue)
void SetMomentumDirection(const G4ThreeVector &aValue)
void SetPolarization(const G4ThreeVector &aValue)
void AddMomentumDirection(const G4ThreeVector &aValue)