87 G4cout <<
"Calling G4DNAOneStepThermalizationModel::Initialise()" <<
G4endl;
92 exceptionDescription <<
"G4DNAOneStepThermalizationModel can only be applied "
94 G4Exception(
"G4DNAOneStepThermalizationModel::CrossSectionPerVolume",
95 "G4DNAOneStepThermalizationModel001",
108 GetNavigatorForTracking();
131 G4cout <<
"Calling CrossSectionPerVolume() of G4DNAOneStepThermalizationModel"
142 if(waterDensity!= 0.0)
157 G4double sigma = std::sqrt(1.57) / 2 * expectationValue;
159 G4double XValueForfMax = std::sqrt(2. * sigma * sigma);
160 G4double fMaxValue = std::sqrt(2. / 3.14)
161 * 1. / (sigma * sigma * sigma)
162 * (XValueForfMax * XValueForfMax)
163 * std::exp(-1. / 2. * (XValueForfMax * XValueForfMax)
183 G4double f = std::sqrt(2./3.14) * 1/std::pow(sigma, 3)
184 * R*R * std::exp(-1./2. * R*R/(sigma*sigma));
186 if(aRandomfValue < f)
194 G4double theta = std::acos(costheta);
197 G4double xDirection = R * std::cos(phi) * std::sin(theta);
198 G4double yDirection = R * std::sin(theta) * std::sin(phi);
204 return RandDirection;
218 G4cout <<
"Calling SampleSecondaries() of G4DNAOneStepThermalizationModel"
228 (-0.003*std::pow(k_eV,6)
229 + 0.0749*std::pow(k_eV,5)
230 - 0.7197*std::pow(k_eV,4)
231 + 3.1384*std::pow(k_eV,3)
232 - 5.6926*std::pow(k_eV,2)
239 const G4Track * theIncomingTrack =
247 double displacementMag = displacement.mag();
257 displacement/displacementMag,
261 if(safety <= displacementMag)
264 + (displacement/displacementMag)*safety*0.80;
static G4Electron * ElectronDefinition()
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
G4double ExcitationEnergy(G4int level)
std::ostringstream G4ExceptionDescription
G4double GetKineticEnergy() const
CLHEP::Hep3Vector G4ThreeVector
G4double HighEnergyLimit() const
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
G4DNAOneStepThermalizationModel(const G4ParticleDefinition *p=0, const G4String &nam="DNASancheSolvatationModel")
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetHighEnergyLimit(G4double)
G4GLOB_DLL std::ostream G4cout
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static G4TransportationManager * GetTransportationManager()
static G4DNAChemistryManager * Instance()
static G4DNAMolecularMaterial * Instance()
const std::vector< G4double > * fpWaterDensity
const G4VTouchable * GetTouchable() const
const G4Track * GetCurrentTrack() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
virtual G4double CrossSectionPerVolume(const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
virtual ~G4DNAOneStepThermalizationModel()
void ProposeTrackStatus(G4TrackStatus status)
void SetLowEnergyLimit(G4double)
G4VPhysicalVolume * GetWorldVolume() const
G4int sign(const T t)
A simple sign function that allows us to port fortran code to c++ more easily.
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4ParticleChangeForGamma * fParticleChangeForGamma
G4ThreeVector RadialDistributionOfProducts(G4double Rrms) const
G4ITNavigator * fNavigator