53template<
typename MODEL>
 
   69template<
typename MODEL>
 
   77template<
typename MODEL>
 
   84    G4cout << 
"Calling G4DNAOneStepThermalizationModel::Initialise()" 
   90    errMsg << 
"G4DNAOneStepThermalizationModel can only be applied " 
   92    G4Exception(
"G4DNAOneStepThermalizationModel::CrossSectionPerVolume",
 
   93                "G4DNAOneStepThermalizationModel001",
 
  100    fIsInitialised = 
true;
 
  101    fpParticleChangeForGamma = GetParticleChangeForGamma();
 
  106  GetNavigatorForTracking();
 
  113      fpNavigator->SetWorldVolume(world);
 
  124template<
typename MODEL>
 
  133  if(fVerboseLevel > 1)
 
  134    G4cout << 
"Calling CrossSectionPerVolume() of G4DNAOneStepThermalizationModel" 
  138  if(ekin > HighEnergyLimit()){
 
  144  if(waterDensity!= 0.0){
 
  151template<
typename MODEL>
 
  153  return MODEL::GetRmean(k);
 
  159template<
typename MODEL>
 
  163  return MODEL::GetPenetration(k, displacement);
 
  167template<
typename MODEL>
 
  177    G4cout << 
"Calling SampleSecondaries() of G4DNAOneStepThermalizationModel" 
  183  if (k <= HighEnergyLimit())
 
  185    fpParticleChangeForGamma->ProposeTrackStatus(
fStopAndKill);
 
  186    fpParticleChangeForGamma->ProposeLocalEnergyDeposit(k);
 
  191      GetPenetration(k, displacement);
 
  194      const G4Track * theIncomingTrack =
 
  195      fpParticleChangeForGamma->GetCurrentTrack();
 
  198      fpNavigator->SetWorldVolume(theIncomingTrack->
GetTouchable()->
 
  202      double displacementMag = displacement.
mag();
 
  208      double mag_displacement = displacement.
mag();
 
  209      G4ThreeVector displacement_direction = displacement/mag_displacement;
 
  226      fpNavigator->ResetHierarchyAndLocate(theIncomingTrack->
GetPosition(),
 
  231      fpNavigator->ComputeStep(theIncomingTrack->
GetPosition(),
 
  232                              displacement/displacementMag,
 
  236      if(safety <= displacementMag)
 
  239        + (displacement/displacementMag)*safety*0.80;
 
  245      fpParticleChangeForGamma->SetProposedKineticEnergy(25.e-3*
eV);
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
static constexpr double eV
G4GLOB_DLL std::ostream G4cout
void CreateSolvatedElectron(const G4Track *, G4ThreeVector *pFinalPosition=nullptr)
static G4DNAChemistryManager * Instance()
static G4bool IsActivated()
static G4DNAMolecularMaterial * Instance()
G4double ExcitationEnergy(G4int level)
G4double GetKineticEnergy() const
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
const G4String & GetParticleName() const
G4ParticleChangeForGamma * fpParticleChangeForGamma
const std::vector< G4double > * fpWaterDensity
virtual ~G4TDNAOneStepThermalizationModel()
void GetPenetration(G4double energy, G4ThreeVector &displacement)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
double GetRmean(double energy)
G4TDNAOneStepThermalizationModel(const G4ParticleDefinition *p=0, const G4String &nam="DNAOneStepThermalizationModel")
const G4ThreeVector & GetPosition() const
const G4VTouchable * GetTouchable() const
static G4TransportationManager * GetTransportationManager()
void SetHighEnergyLimit(G4double)
void SetLowEnergyLimit(G4double)