59 : fCurrentStepNumber(0), fPosition(aValuePosition),
60 fGlobalTime(aValueTime), fLocalTime(0.),
62 fParentID(0), fTrackID(0),
64 fpDynamicParticle(apValueDynamicParticle),
66 fBelowThreshold(false), fGoodForTracking(false),
67 fStepLength(0.0), fWeight(1.0),
69 fVtxKineticEnergy(0.0),
70 fpLVAtVertex(0), fpCreatorProcess(0),
71 fCreatorModelIndex(-1),
73 prev_mat(0), groupvel(0),
74 prev_velocity(0.0), prev_momentum(0.0),
75 is_OpticalPhoton(false),
76 useGivenVelocity(false)
86 is_OpticalPhoton = (fpDynamicParticle->
GetDefinition() == fOpticalPhoton);
97 : fCurrentStepNumber(0),
98 fGlobalTime(0), fLocalTime(0.),
100 fParentID(0), fTrackID(0),
102 fpDynamicParticle(0),
104 fBelowThreshold(false), fGoodForTracking(false),
105 fStepLength(0.0), fWeight(1.0),
107 fVtxKineticEnergy(0.0),
108 fpLVAtVertex(0), fpCreatorProcess(0),
109 fCreatorModelIndex(-1),
110 fpUserInformation(0),
111 prev_mat(0), groupvel(0),
112 prev_velocity(0.0), prev_momentum(0.0),
113 is_OpticalPhoton(false),
114 useGivenVelocity(false)
121 : fCurrentStepNumber(0),
122 fGlobalTime(0), fLocalTime(0.),
124 fParentID(0), fTrackID(0),
126 fpDynamicParticle(0),
128 fBelowThreshold(false), fGoodForTracking(false),
129 fStepLength(0.0), fWeight(1.0),
131 fVtxKineticEnergy(0.0),
132 fpLVAtVertex(0), fpCreatorProcess(0),
133 fCreatorModelIndex(-1),
134 fpUserInformation(0),
135 prev_mat(0), groupvel(0),
136 prev_velocity(0.0), prev_momentum(0.0),
137 is_OpticalPhoton(false),
138 useGivenVelocity(false)
147 delete fpDynamicParticle;
148 delete fpUserInformation;
155 if (
this != &right) {
156 fPosition = right.fPosition;
157 fGlobalTime = right.fGlobalTime;
158 fLocalTime = right.fLocalTime;
159 fTrackLength = right.fTrackLength;
160 fWeight = right.fWeight;
161 fStepLength = right.fStepLength;
168 fCurrentStepNumber = 0;
171 fVelocity = right.fVelocity;
177 fTrackStatus = right.fTrackStatus;
178 fBelowThreshold = right.fBelowThreshold;
179 fGoodForTracking = right.fGoodForTracking;
186 fVtxPosition = right.fVtxPosition;
187 fpLVAtVertex = right.fpLVAtVertex;
188 fVtxKineticEnergy = right.fVtxKineticEnergy;
189 fVtxMomentumDirection = right.fVtxMomentumDirection;
192 fpCreatorProcess = 0;
193 fpUserInformation = 0;
195 prev_mat = right.prev_mat;
196 groupvel = right.groupvel;
197 prev_velocity = right.prev_velocity;
198 prev_momentum = right.prev_momentum;
200 is_OpticalPhoton = right.is_OpticalPhoton;
201 useGivenVelocity = right.useGivenVelocity;
217 if (useGivenVelocity)
return fVelocity;
237 velocity =
c_light*std::sqrt(T*(T+2.))/(T+1.0);
239 velocity = velTable->
Value(T);
255 G4bool update_groupvel =
false;
265 if ((mat != 0) && ((mat != prev_mat)||(groupvel==0))) {
269 update_groupvel =
true;
273 if (groupvel != 0 ) {
276 velocity = prev_velocity;
281 if( update_groupvel || (current_momentum != prev_momentum) ) {
283 groupvel->
Value(current_momentum);
284 prev_velocity = velocity;
285 prev_momentum = current_momentum;
static G4VelocityTable * GetVelocityTable()
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4MaterialPropertyVector * GetProperty(const char *key)
G4ThreadLocal G4Allocator< G4Track > * aTrackAllocator
G4double GetKineticEnergy() const
static G4double GetMinTOfVelocityTable()
G4Material * GetMaterial() const
G4ParticleDefinition * GetDefinition() const
G4double GetTotalMomentum() const
G4double CalculateVelocityForOpticalPhoton() const
static G4int GetNbinOfVelocityTable()
G4double Value(G4double theEnergy, size_t &lastidx) const
G4double CalculateVelocity() const
static void SetVelocityTableProperties(G4double t_max, G4double t_min, G4int nbin)
G4Material * GetMaterial() const
static G4int GetNbinOfVelocityTable()
G4LogicalVolume * GetLogicalVolume() const
static G4ParticleTable * GetParticleTable()
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
static G4double GetMinTOfVelocityTable()
static void SetVelocityTableProperties(G4double t_max, G4double t_min, G4int nbin)
static G4double GetMaxTOfVelocityTable()
static G4double GetMaxTOfVelocityTable()
G4double Value(G4double theEnergy)
void CopyTrackInfo(const G4Track &)