71 return (2*r+1)*exp(-2*r);
78 fFastElectronDistrib(0, 10, 0.001)
83 std::placeholders::_1);
89 double eps = 1./((int)nBins);
97 for(
size_t i = 1 ; i < nBins ; ++i)
120 G4double RMSMotherMoleculeDisplacement = 0;
124 RMSMotherMoleculeDisplacement = 2.0 *
nanometer;
128 RMSMotherMoleculeDisplacement = 0. *
nanometer;
132 RMSMotherMoleculeDisplacement = 0. *
nanometer;
136 RMSMotherMoleculeDisplacement = 2.0 *
nanometer;
140 RMSMotherMoleculeDisplacement = 0. *
nanometer;
143 if (RMSMotherMoleculeDisplacement == 0)
148 RMSMotherMoleculeDisplacement);
150 return RandDirection;
155 vector<G4ThreeVector>
160 vector<G4ThreeVector> theProductDisplacementVector(nbProducts);
162 typedef map<const G4MoleculeDefinition*, G4double> RMSmap;
187 for(
int i = 0; i < nbProducts; i++)
193 if(theRMSDisplacement==0)
200 theProductDisplacementVector[i] = RandDirection;
212 for(
G4int i =0; i < nbProducts; i++)
218 theProductDisplacementVector[i] = -1./18.*RandDirection;
222 theProductDisplacementVector[i] = +17./18.*RandDirection;
235 for(
G4int i =0; i < nbProducts; i++)
240 theProductDisplacementVector[i] = -2./18.*RandDirection;
247 auto OHDisplacement =
252 OHDisplacement = 1./2.*OHDisplacement;
256 OHDisplacement = -1./2.*OHDisplacement;
259 theProductDisplacementVector[i] =
260 OHDisplacement + OxygenDisplacement;
287 for(
G4int i =0; i < nbProducts; i++)
290 auto theRMSDisplacement = theRMSmap[product->
GetDefinition()];
292 if(theRMSDisplacement==0)
300 theProductDisplacementVector[i] = RandDirection;
317 for(
G4int i =0; i < nbProducts; i++)
322 theProductDisplacementVector[i] = -2./18.*RandDirection;
329 auto OHDisplacement =
334 OHDisplacement = 1./2.*OHDisplacement;
338 OHDisplacement = -1./2.*OHDisplacement;
341 theProductDisplacementVector[i] = OHDisplacement + OxygenDisplacement;
348 return theProductDisplacementVector;
357 static const double inverse_sqrt_3 = 1./sqrt(3.);
358 double sigma = Rrms*inverse_sqrt_3;
372 size_t bin = size_t(rand_value*nBins);
The pointer G4MolecularConfiguration will be shared by all the molecules having the same molecule def...
ThreeVector shoot(const G4int Ap, const G4int Af)
static G4DLLIMPORT const DisplacementType AutoIonisation
static G4DLLIMPORT const DisplacementType B1A1_DissociationDecay
static G4Electron_aq * Definition()
static G4DLLIMPORT const DisplacementType A1B1_DissociationDecay
CLHEP::Hep3Vector G4ThreeVector
static G4DLLIMPORT const DisplacementType Ionisation_DissociationDecay
static const double nanometer
G4ThreeVector radialDistributionOfElectron() const
virtual ~G4DNAWaterDissociationDisplacer()
std::function< G4double(G4double)> fProba1DFunction
G4ThreeVector G4RandomDirection()
static const G4double eps
G4int GetNbProducts() const
G4DNARevertProbability fFastElectronDistrib
static G4DLLIMPORT const DisplacementType DissociativeAttachment
G4GLOB_DLL std::ostream G4cout
static G4double ElectronProbaDistribution(G4double r)
DisplacementType GetDisplacementType() const
G4MolecularConfiguration * GetProduct(int) const
static G4H3O * Definition()
G4DNAWaterDissociationDisplacer()
std::vector< G4double > fElectronThermalization
static DisplacementType AddDisplacement()
const G4double x[NPOINTSGL]
double Revert(double probaForSearchedTime, std::function< double(double)> &funct)
const G4MoleculeDefinition * GetDefinition() const
static G4OH * Definition()
static G4H2 * Definition()
virtual G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDissociationChannel *) const
G4ThreeVector radialDistributionOfProducts(G4double r_rms) const
virtual std::vector< G4ThreeVector > GetProductsDisplacement(const G4MolecularDissociationChannel *) const
static G4Hydrogen * Definition()