69 G4int decayType = theDecayChannel -> GetDisplacementType();
71 G4double RMSMotherMoleculeDisplacement=0;
75 RMSMotherMoleculeDisplacement = 2.0 * nanometer ;
79 RMSMotherMoleculeDisplacement = 0. * nanometer ;
83 RMSMotherMoleculeDisplacement = 0. * nanometer ;
87 RMSMotherMoleculeDisplacement = 2.0 * nanometer ;
91 RMSMotherMoleculeDisplacement = 0. * nanometer ;
94 if(RMSMotherMoleculeDisplacement==0)
98 G4ThreeVector RandDirection = radialDistributionOfProducts(RMSMotherMoleculeDisplacement);
100 return RandDirection;
107 G4int nbProducts = theDecayChannel -> GetNbProducts();
108 vector<G4ThreeVector> theProductDisplacementVector (nbProducts);
110 typedef map<const G4MoleculeDefinition*,G4double> RMSmap ;
113 G4int decayType = theDecayChannel -> GetDisplacementType();
136 for(
int i = 0; i < nbProducts ; i++)
142 if(theRMSDisplacement==0)
148 G4ThreeVector RandDirection = radialDistributionOfProducts(theRMSDisplacement);
149 theProductDisplacementVector[i] = RandDirection;
157 G4double theRMSDisplacement = 2.4 * nanometer;
158 G4ThreeVector RandDirection = radialDistributionOfProducts(theRMSDisplacement);
160 for(
G4int i =0 ; i < nbProducts ; i++)
165 theProductDisplacementVector[i] = -1./18.*RandDirection;
169 theProductDisplacementVector[i] = +17./18.*RandDirection;
177 G4double theRMSDisplacement = 0.8 * nanometer;
178 G4ThreeVector RandDirection = radialDistributionOfProducts(theRMSDisplacement);
181 for(
G4int i =0 ; i < nbProducts ; i++)
186 theProductDisplacementVector[i] = -2./18.*RandDirection;
191 G4double OHRMSDisplacement = 1.1 * nanometer;
193 G4ThreeVector OHDisplacement = radialDistributionOfProducts(OHRMSDisplacement) ;
197 OHDisplacement = 1./2.*OHDisplacement;
201 OHDisplacement = -1./2.*OHDisplacement;
204 theProductDisplacementVector[i] = OHDisplacement + OxygenDisplacement;
231 for(
G4int i =0 ; i < nbProducts ; i++)
237 if(theRMSDisplacement==0)
243 G4ThreeVector RandDirection = radialDistributionOfProducts(theRMSDisplacement);
244 theProductDisplacementVector[i] = RandDirection;
256 G4double theRMSDisplacement = 0.8 * nanometer;
257 G4ThreeVector RandDirection = radialDistributionOfProducts(theRMSDisplacement);
260 for(
G4int i =0 ; i < nbProducts ; i++)
265 theProductDisplacementVector[i] = -2./18.*RandDirection;
270 G4double OHRMSDisplacement = 1.1 * nanometer;
272 G4ThreeVector OHDisplacement = radialDistributionOfProducts(OHRMSDisplacement) ;
276 OHDisplacement = 1./2.*OHDisplacement;
280 OHDisplacement = -1./2.*OHDisplacement;
283 theProductDisplacementVector[i] = OHDisplacement + OxygenDisplacement;
290 return theProductDisplacementVector;
298 G4double expectationValue = 2.*sqrt(2./3.14)*sigma;
300 G4double XValueForfMax = sqrt(2.*sigma*sigma);
301 G4double fMaxValue = sqrt(2./3.14) * 1./(sigma*sigma*sigma) *
302 (XValueForfMax*XValueForfMax)*
303 exp(-1./2. * (XValueForfMax*XValueForfMax)/(sigma*sigma));
322 G4double f = sqrt(2./3.14) * 1/pow(sigma, 3) * R*R * exp(-1./2. * R*R/(sigma*sigma));
324 if(aRandomfValue < f)
335 G4double xDirection = R*cos(phi)* sin(theta);
336 G4double yDirection = R*sin(theta)*sin(phi);
338 G4ThreeVector RandDirection(xDirection, yDirection, zDirection);
340 return RandDirection;
352 G4double fMaxValue = 4. * XValueForfMax *
353 exp(-2. * XValueForfMax);
374 if(aRandomfValue < f)
387 G4double xDirection = Rnano*cos(phi)* sin(theta);
388 G4double yDirection = Rnano*sin(theta)*sin(phi);
389 G4double zDirection = Rnano*costheta;
390 G4ThreeVector RandDirection(xDirection, yDirection, zDirection);
392 return RandDirection;
CLHEP::Hep3Vector G4ThreeVector
G4DLLIMPORT std::ostream G4cout
static G4DLLEXPORT const DisplacementType DissociativeAttachment
virtual G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDecayChannel *) const
static G4DLLIMPORT const DisplacementType A1B1_DissociationDecay
static G4DLLIMPORT const DisplacementType Ionisation_DissociationDecay
G4ThreeVector radialDistributionOfElectron() const
static G4DLLIMPORT const DisplacementType B1A1_DissociationDecay
G4DNAMolecularDecayDisplacer()
virtual ~G4DNAMolecularDecayDisplacer()
virtual std::vector< G4ThreeVector > GetProductsDisplacement(const G4MolecularDecayChannel *) const
static G4DLLIMPORT const DisplacementType AutoIonisation
static G4Electron_aq * Definition()
static G4H2 * Definition()
static G4H3O * Definition()
static G4Hydrogen * Definition()
const G4Molecule * GetProduct(int) const
const G4MoleculeDefinition * GetDefinition() const
static G4OH * Definition()
static DisplacementType AddDisplacement()