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:
271 G4double theRMSDisplacement = 2.4 * nanometer;
275 for (
G4int i = 0; i < nbProducts; i++)
281 theProductDisplacementVector[i] = -1. / 18. * RandDirection;
285 theProductDisplacementVector[i] = +17. / 18. * RandDirection;
290 case B1A1_DissociationDecay:
298 G4double theRMSDisplacement = 0.8 * nanometer;
303 for (
G4int i = 0; i < nbProducts; ++i)
306 if (pProduct->GetDefinition() == G4H2::Definition())
312 theProductDisplacementVector[i] = -16. / 18. * RandDirection;
320 G4ThreeVector OxygenDisplacement = +2. / 18. * RandDirection;
321 G4double OHRMSDisplacement = 1.1 * nanometer;
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)
360 G4double HRMSDisplacement = 1.6 * nanometer;
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:
428 G4double theRMSDisplacement = 0.8 * nanometer;
433 for (
G4int i = 0; i < nbProducts; ++i)
436 if (pProduct->GetDefinition() == G4H2::Definition())
442 theProductDisplacementVector[i] = -16. / 18. * RandDirection;
450 G4ThreeVector OxygenDisplacement = +2. / 18. * RandDirection;
451 G4double OHRMSDisplacement = 1.1 * nanometer;
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;
483 double x = G4RandGauss::shoot(0., sigma);
484 double y = G4RandGauss::shoot(0., sigma);
485 double z = G4RandGauss::shoot(0., sigma);
#define G4CT_COUNT_IMPL(enumName, flagName)
@ fMeesungnoensolid2002eSolvation
@ fTerrisol1990eSolvation
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDissociationChannel *) const override
std::vector< G4ThreeVector > GetProductsDisplacement(const G4MolecularDissociationChannel *) const override
G4ThreeVector radialDistributionOfElectron() const
G4ThreeVector radialDistributionOfProducts(G4double r_rms) const
virtual ~G4DNAWaterDissociationDisplacer()
static G4Electron_aq * Definition()
static G4EmParameters * Instance()
G4DNAModelSubType DNAeSolvationSubType() const
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()
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)