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);
DisplacementType GetDisplacementType() const
virtual std::vector< G4ThreeVector > GetProductsDisplacement(const G4MolecularDissociationChannel *) const
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
const G4MoleculeDefinition * GetDefinition() const
virtual ~G4DNAWaterDissociationDisplacer()
std::function< G4double(G4double)> fProba1DFunction
G4ThreeVector G4RandomDirection()
static const G4double eps
G4MolecularConfiguration * GetProduct(int) const
virtual G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDissociationChannel *) const
G4DNARevertProbability fFastElectronDistrib
static G4DLLIMPORT const DisplacementType DissociativeAttachment
G4GLOB_DLL std::ostream G4cout
static G4double ElectronProbaDistribution(G4double r)
static G4H3O * Definition()
G4DNAWaterDissociationDisplacer()
std::vector< G4double > fElectronThermalization
static DisplacementType AddDisplacement()
double Revert(double probaForSearchedTime, std::function< double(double)> &funct)
static G4OH * Definition()
G4ThreeVector radialDistributionOfElectron() const
G4int GetNbProducts() const
G4ThreeVector radialDistributionOfProducts(G4double r_rms) const
static G4H2 * Definition()
static G4Hydrogen * Definition()