233 std::vector<G4KineticTrack *>::iterator i;
240 std::map <G4int, G4VNuclearField*, std::less<G4int> >::iterator fieldIter=
theFieldMap->find(encoding);
243 if ( fieldIter !=
theFieldMap->end() ) currentField=fieldIter->second;
260 #ifdef debug_1_RKPropagation 261 G4cout <<
" kt,timeStep, Intersection times tenter, tleave " 262 <<kt<<
" / state= " <<kt->
GetState() <<
" / " <<
" "<< currTimeStep <<
" / " << t_enter <<
" / " << t_leave <<
G4endl;
277 if(currTimeStep ==
DBL_MAX)currTimeStep = t_leave*1.05;
279 if ( currTimeStep >= t_leave )
294 if(t_enter > currTimeStep)
302 currTimeStep -= t_enter;
309 if(newE <= kt->GetActualMass())
347 if(currTimeStep > t_leave)
349 currTimeStep = t_leave;
353 #ifdef debug_1_RKPropagation 354 G4cerr <<
"RKPropagation is_exiting?, t_leave, curTimeStep " <<is_exiting<<
" "<<t_leave <<
" " <<currTimeStep<<
G4endl;
355 G4cout <<
"RKPropagation Ekin, field, projectile potential, p " 368 if (currTimeStep > 0 &&
373 #ifdef debug_1_RKPropagation 374 G4cout <<
"RKPropagation Ekin, field, p " 394 if(t_in < 0 && t_out >= 0)
408 if ( std::abs(currentField->
GetField(savePos)) > 0. &&
413 newE += currentField->
GetField(savePos)
419 if(newE < kt->GetActualMass())
421 #ifdef debug_1_RKPropagation 422 G4cout <<
"RKPropagation-Transport: problem with particle exiting - ignored" <<
G4endl;
443 if(newE < kt->GetActualMass())
445 #ifdef debug_1_RKPropagation const G4ParticleDefinition * GetDefinition() const
G4bool FieldTransport(G4KineticTrack *track, const G4double timestep)
const G4ThreeVector & GetPosition() const
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepLorentzRotation G4LorentzRotation
virtual G4double GetField(const G4ThreeVector &aPosition)=0
const G4LorentzVector & GetTrackingMomentum() const
G4GLOB_DLL std::ostream G4cout
CascadeState SetState(const CascadeState new_state)
G4V3DNucleus * theNucleus
G4int GetPDGEncoding() const
G4ThreeVector theMomentumTranfer
static G4Proton * Proton()
static G4Neutron * Neutron()
G4double GetProjectilePotential() const
G4double GetActualMass() const
void SetTrackingMomentum(const G4LorentzVector &a4Momentum)
virtual G4double GetMass()=0
CascadeState GetState() const
G4bool GetSphereIntersectionTimes(const G4KineticTrack *track, G4double &t1, G4double &t2)
std::map< G4int, G4VNuclearField *, std::less< G4int > > * theFieldMap
G4bool FreeTransport(G4KineticTrack *track, const G4double timestep)
G4GLOB_DLL std::ostream G4cerr