62 Ionisation_DissociationDecay)
65 A1B1_DissociationDecay)
68 B1A1_DissociationDecay)
74 DissociativeAttachment)
121 G4DNAWaterDissociationDisplacer::G4DNAWaterDissociationDisplacer()
166 theDecayChannel)
const
169 G4double RMSMotherMoleculeDisplacement(0.);
173 case Ionisation_DissociationDecay:
174 RMSMotherMoleculeDisplacement = 2.0 *
nanometer;
176 case A1B1_DissociationDecay:
177 RMSMotherMoleculeDisplacement = 0. *
nanometer;
179 case B1A1_DissociationDecay:
180 RMSMotherMoleculeDisplacement = 0. *
nanometer;
183 RMSMotherMoleculeDisplacement = 2.0 *
nanometer;
185 case DissociativeAttachment:
186 RMSMotherMoleculeDisplacement = 0. *
nanometer;
190 if (RMSMotherMoleculeDisplacement == 0)
195 radialDistributionOfProducts(RMSMotherMoleculeDisplacement);
197 return RandDirection;
202 vector<G4ThreeVector>
207 vector<G4ThreeVector> theProductDisplacementVector(nbProducts);
209 typedef map<const G4MoleculeDefinition*, G4double> RMSmap;
216 case Ionisation_DissociationDecay:
240 for (
int i = 0; i < nbProducts; i++)
243 G4double theRMSDisplacement = theRMSmap[pProduct->GetDefinition()];
245 if (theRMSDisplacement == 0.)
251 auto RandDirection = radialDistributionOfProducts(theRMSDisplacement);
252 theProductDisplacementVector[i] = RandDirection;
257 case A1B1_DissociationDecay:
266 radialDistributionOfProducts(theRMSDisplacement);
268 for (
G4int i = 0; i < nbProducts; i++)
274 theProductDisplacementVector[i] = -1. / 18. * RandDirection;
278 theProductDisplacementVector[i] = +17. / 18. * RandDirection;
283 case B1A1_DissociationDecay:
293 radialDistributionOfProducts(theRMSDisplacement);
296 for (
G4int i = 0; i < nbProducts; ++i)
302 theProductDisplacementVector[i] = -2. / 18. * RandDirection;
307 G4ThreeVector OxygenDisplacement = +16. / 18. * RandDirection;
310 auto OHDisplacement =
311 radialDistributionOfProducts(OHRMSDisplacement);
315 OHDisplacement = 0.5 * OHDisplacement;
319 OHDisplacement = -0.5 * OHDisplacement;
322 theProductDisplacementVector[i] =
323 OHDisplacement + OxygenDisplacement;
355 for (
G4int i = 0; i < nbProducts; i++)
358 auto theRMSDisplacement = theRMSmap[pProduct->GetDefinition()];
360 if (theRMSDisplacement == 0)
367 radialDistributionOfProducts(theRMSDisplacement);
368 theProductDisplacementVector[i] = RandDirection;
372 theProductDisplacementVector[i] = radialDistributionOfElectron();
377 case DissociativeAttachment:
386 radialDistributionOfProducts(theRMSDisplacement);
389 for (
G4int i = 0; i < nbProducts; ++i)
394 theProductDisplacementVector[i] = -2. / 18. * RandDirection;
398 G4ThreeVector OxygenDisplacement = +16. / 18. * RandDirection;
401 auto OHDisplacement =
402 radialDistributionOfProducts(OHRMSDisplacement);
406 OHDisplacement = 0.5 * OHDisplacement;
410 OHDisplacement = -0.5 * OHDisplacement;
412 theProductDisplacementVector[i] = OHDisplacement +
420 return theProductDisplacementVector;
429 static const double inverse_sqrt_3 = 1. / sqrt(3.);
430 double sigma = Rrms * inverse_sqrt_3;