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),
72 prev_mat(0), groupvel(0),
73 prev_velocity(0.0), prev_momentum(0.0),
74 is_OpticalPhoton(false),
75 useGivenVelocity(false)
77 static G4bool isFirstTime =
true;
85 is_OpticalPhoton = (fpDynamicParticle->
GetDefinition() == fOpticalPhoton);
96 : fCurrentStepNumber(0),
97 fGlobalTime(0), fLocalTime(0.),
99 fParentID(0), fTrackID(0),
101 fpDynamicParticle(0),
103 fBelowThreshold(false), fGoodForTracking(false),
104 fStepLength(0.0), fWeight(1.0),
106 fVtxKineticEnergy(0.0),
107 fpLVAtVertex(0), fpCreatorProcess(0),
108 fpUserInformation(0),
109 prev_mat(0), groupvel(0),
110 prev_velocity(0.0), prev_momentum(0.0),
111 is_OpticalPhoton(false),
112 useGivenVelocity(false)
118 : fCurrentStepNumber(0),
119 fGlobalTime(0), fLocalTime(0.),
121 fParentID(0), fTrackID(0),
123 fpDynamicParticle(0),
125 fBelowThreshold(false), fGoodForTracking(false),
126 fStepLength(0.0), fWeight(1.0),
128 fVtxKineticEnergy(0.0),
129 fpLVAtVertex(0), fpCreatorProcess(0),
130 fpUserInformation(0),
131 prev_mat(0), groupvel(0),
132 prev_velocity(0.0), prev_momentum(0.0),
133 is_OpticalPhoton(false),
134 useGivenVelocity(false)
143 delete fpDynamicParticle;
144 delete fpUserInformation;
151 if (
this != &right) {
152 fPosition = right.fPosition;
153 fGlobalTime = right.fGlobalTime;
154 fLocalTime = right.fLocalTime;
155 fTrackLength = right.fTrackLength;
156 fWeight = right.fWeight;
157 fStepLength = right.fStepLength;
164 fCurrentStepNumber = 0;
167 fVelocity = right.fVelocity;
173 fTrackStatus = right.fTrackStatus;
174 fBelowThreshold = right.fBelowThreshold;
175 fGoodForTracking = right.fGoodForTracking;
182 fVtxPosition = right.fVtxPosition;
183 fpLVAtVertex = right.fpLVAtVertex;
184 fVtxKineticEnergy = right.fVtxKineticEnergy;
185 fVtxMomentumDirection = right.fVtxMomentumDirection;
188 fpCreatorProcess = 0;
189 fpUserInformation = 0;
191 prev_mat = right.prev_mat;
192 groupvel = right.groupvel;
193 prev_velocity = right.prev_velocity;
194 prev_momentum = right.prev_momentum;
196 is_OpticalPhoton = right.is_OpticalPhoton;
197 useGivenVelocity = right.useGivenVelocity;
213 if (useGivenVelocity)
return fVelocity;
233 velocity = c_light*std::sqrt(T*(T+2.))/(T+1.0);
235 velocity = velTable->
Value(T);
251 G4bool update_groupvel =
false;
261 if ((mat != 0) && ((mat != prev_mat)||(groupvel==0))) {
265 update_groupvel =
true;
269 if (groupvel != 0 ) {
272 velocity = prev_velocity;
277 if( update_groupvel || (current_momentum != prev_momentum) ) {
279 groupvel->
Value(current_momentum);
280 prev_velocity = velocity;
281 prev_momentum = current_momentum;
G4Allocator< G4Track > aTrackAllocator
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double GetTotalMomentum() const
G4Material * GetMaterial() const
G4MaterialPropertyVector * GetProperty(const char *key)
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
G4double Value(G4double theEnergy)
G4double CalculateVelocityForOpticalPhoton() const
static G4double GetMinTOfVelocityTable()
void CopyTrackInfo(const G4Track &)
static G4double GetMaxTOfVelocityTable()
G4Material * GetMaterial() const
G4double CalculateVelocity() const
static G4int GetNbinOfVelocityTable()
static void SetVelocityTableProperties(G4double t_max, G4double t_min, G4int nbin)
G4LogicalVolume * GetLogicalVolume() const
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
static G4VelocityTable * GetVelocityTable()
static void SetVelocityTableProperties(G4double t_max, G4double t_min, G4int nbin)
G4double Value(G4double theEnergy)
static G4double GetMaxTOfVelocityTable()
static G4double GetMinTOfVelocityTable()
static G4int GetNbinOfVelocityTable()