73 G4cout <<
"Calling G4SancheSolvatationModel::Initialise()" <<
G4endl;
78 exceptionDescription <<
"Attempting to calculate cross section for wrong particle";
79 G4Exception(
"G4DNAOneStepSolvatationModel::CrossSectionPerVolume",
"G4DNAOneStepSolvatationModel001",
103 G4cout <<
"Calling CrossSectionPerVolume() of G4SancheSolvatationModel"
114 if(waterDensity!= 0.0)
128 G4double sigma = std::sqrt(1.57) / 2 * expectationValue;
130 G4double XValueForfMax = std::sqrt(2. * sigma * sigma);
131 G4double fMaxValue = std::sqrt(2. / 3.14) * 1. / (sigma * sigma * sigma)
132 * (XValueForfMax * XValueForfMax)
133 * std::exp(-1. / 2. * (XValueForfMax * XValueForfMax) / (sigma * sigma));
152 G4double f = std::sqrt(2./3.14) * 1/std::pow(sigma, 3) * R*R * std::exp(-1./2. * R*R/(sigma*sigma));
154 if(aRandomfValue < f)
162 G4double theta = std::acos(costheta);
165 G4double xDirection = R * std::cos(phi) * std::sin(theta);
166 G4double yDirection = R * std::sin(theta) * std::sin(phi);
171 return RandDirection;
184 G4cout <<
"Calling SampleSecondaries() of G4SancheSolvatationModel" <<
G4endl;
191 (-0.003*std::pow(k/
eV,6) + 0.0749*std::pow(k/
eV,5) - 0.7197*std::pow(k/
eV,4)
192 + 3.1384*std::pow(k/
eV,3) - 5.6926*std::pow(k/
eV,2) + 5.6237*k/
eV - 0.7883)*
nanometer;
static G4Electron * ElectronDefinition()
G4double ExcitationEnergy(G4int level)
std::ostringstream G4ExceptionDescription
G4double GetKineticEnergy() const
CLHEP::Hep3Vector G4ThreeVector
G4double HighEnergyLimit() const
G4DNAOneStepSolvatationModel(const G4ParticleDefinition *p=0, const G4String &nam="DNASancheSolvatationModel")
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
void CreateSolvatedElectron(const G4Track *, G4ThreeVector *finalPosition=0)
On the same idea as the previous method but for solvated electron.
static const double nanometer
const G4ThreeVector & GetPosition() const
const std::vector< G4double > * fpWaterDensity
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetHighEnergyLimit(G4double)
G4GLOB_DLL std::ostream G4cout
const std::vector< double > * GetNumMolPerVolTableFor(const G4Material *) const
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static G4DNAChemistryManager * Instance()
static G4DNAMolecularMaterial * Instance()
G4ThreeVector RadialDistributionOfProducts(G4double Rrms) const
G4ParticleChangeForGamma * fParticleChangeForGamma
const G4Track * GetCurrentTrack() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
void ProposeTrackStatus(G4TrackStatus status)
void SetLowEnergyLimit(G4double)
G4int sign(const T t)
A simple sign function that allows us to port fortran code to c++ more easily.
virtual ~G4DNAOneStepSolvatationModel()
G4ParticleChangeForGamma * GetParticleChangeForGamma()