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;
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;
178 G4ThreeVector RandDirection = radialDistributionOfProducts(theRMSDisplacement);
181 for(
G4int i =0 ; i < nbProducts ; i++)
186 theProductDisplacementVector[i] = -2./18.*RandDirection;
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;
257 G4ThreeVector RandDirection = radialDistributionOfProducts(theRMSDisplacement);
260 for(
G4int i =0 ; i < nbProducts ; i++)
265 theProductDisplacementVector[i] = -2./18.*RandDirection;
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;