63 Ionisation_DissociationDecay)
66 A1B1_DissociationDecay)
69 B1A1_DissociationDecay)
72 B1A1_DissociationDecay2)
78 DissociativeAttachment)
170theDecayChannel)
const
173 G4double RMSMotherMoleculeDisplacement(0.);
177 case Ionisation_DissociationDecay:
178 RMSMotherMoleculeDisplacement = 2.0 *
nanometer;
180 case A1B1_DissociationDecay:
181 RMSMotherMoleculeDisplacement = 0. *
nanometer;
183 case B1A1_DissociationDecay:
184 RMSMotherMoleculeDisplacement = 0. *
nanometer;
186 case B1A1_DissociationDecay2:
187 RMSMotherMoleculeDisplacement = 0. *
nanometer;
190 RMSMotherMoleculeDisplacement = 2.0 *
nanometer;
192 case DissociativeAttachment:
193 RMSMotherMoleculeDisplacement = 0. *
nanometer;
197 if (RMSMotherMoleculeDisplacement == 0)
204 return RandDirection;
214 vector<G4ThreeVector> theProductDisplacementVector(nbProducts);
216 typedef map<const G4MoleculeDefinition*, G4double> RMSmap;
223 case Ionisation_DissociationDecay:
247 for (
int i = 0; i < nbProducts; i++)
250 G4double theRMSDisplacement = theRMSmap[pProduct->GetDefinition()];
252 if (theRMSDisplacement == 0.)
259 theProductDisplacementVector[i] = RandDirection;
264 case A1B1_DissociationDecay:
275 for (
G4int i = 0; i < nbProducts; i++)
281 theProductDisplacementVector[i] = -1. / 18. * RandDirection;
285 theProductDisplacementVector[i] = +17. / 18. * RandDirection;
290 case B1A1_DissociationDecay:
303 for (
G4int i = 0; i < nbProducts; ++i)
312 theProductDisplacementVector[i] = -16. / 18. * RandDirection;
320 G4ThreeVector OxygenDisplacement = +2. / 18. * RandDirection;
323 auto OHDisplacement =
328 OHDisplacement = 0.5 * OHDisplacement;
332 OHDisplacement = -0.5 * OHDisplacement;
335 theProductDisplacementVector[i] =
336 OHDisplacement + OxygenDisplacement;
343 case B1A1_DissociationDecay2:
351 for(
G4int i =0; i < nbProducts; ++i)
365 if(NbOfH==0) HDisplacement = 0.5*HDisplacement;
366 else HDisplacement = -0.5*HDisplacement;
367 theProductDisplacementVector[i] = HDisplacement;
399 for (
G4int i = 0; i < nbProducts; i++)
402 auto theRMSDisplacement = theRMSmap[pProduct->GetDefinition()];
404 if (theRMSDisplacement == 0)
412 theProductDisplacementVector[i] = RandDirection;
421 case DissociativeAttachment:
433 for (
G4int i = 0; i < nbProducts; ++i)
442 theProductDisplacementVector[i] = -16. / 18. * RandDirection;
450 G4ThreeVector OxygenDisplacement = +2. / 18. * RandDirection;
453 auto OHDisplacement =
458 OHDisplacement = 0.5 * OHDisplacement;
462 OHDisplacement = -0.5 * OHDisplacement;
464 theProductDisplacementVector[i] = OHDisplacement +
472 return theProductDisplacementVector;
481 static const double inverse_sqrt_3 = 1. / sqrt(3.);
482 double sigma = Rrms * inverse_sqrt_3;
@ fMeesungnoensolid2002eSolvation
@ fTerrisol1990eSolvation
G4CT_COUNT_IMPL(G4DNAWaterDissociationDisplacer, Ionisation_DissociationDecay) G4CT_COUNT_IMPL(G4DNAWaterDissociationDisplacer
static constexpr double eV
static constexpr double nanometer
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDissociationChannel *) const override
std::vector< G4ThreeVector > GetProductsDisplacement(const G4MolecularDissociationChannel *) const override
G4DNAModelSubType dnaSubType
G4ThreeVector radialDistributionOfElectron() const
G4ThreeVector radialDistributionOfProducts(G4double r_rms) const
virtual ~G4DNAWaterDissociationDisplacer()
static G4Electron_aq * Definition()
static G4EmParameters * Instance()
G4DNAModelSubType DNAeSolvationSubType() const
static G4H2 * Definition()
static G4H3O * Definition()
static G4Hydrogen * Definition()
Product * GetProduct(int) const
DisplacementType GetDisplacementType() const
G4int GetNbProducts() const
const G4String & GetName() const
static G4OH * Definition()
static G4Oxygen * Definition()
ThreeVector shoot(const G4int Ap, const G4int Af)
static void GetPenetration(G4double energy, G4ThreeVector &displacement)
static void GetPenetration(G4double energy, G4ThreeVector &displacement)
static void GetPenetration(G4double energy, G4ThreeVector &displacement)
static void GetPenetration(G4double energy, G4ThreeVector &displacement)
static void GetPenetration(G4double energy, G4ThreeVector &displacement)