G4DNASmoluchowskiReactionModel Class Reference

#include <G4DNASmoluchowskiReactionModel.hh>

Inheritance diagram for G4DNASmoluchowskiReactionModel:

G4VDNAReactionModel

Public Member Functions

 G4DNASmoluchowskiReactionModel ()
virtual ~G4DNASmoluchowskiReactionModel ()
 G4DNASmoluchowskiReactionModel (const G4DNASmoluchowskiReactionModel &)
virtual void Initialise (const G4Molecule *, const G4Track &)
virtual void InitialiseToPrint (const G4Molecule *)
virtual G4double GetReactionRadius (const G4Molecule *, const G4Molecule *)
virtual G4double GetReactionRadius (const G4int)
virtual G4bool FindReaction (const G4Track &, const G4Track &, const G4double, G4double &, const G4bool)

Detailed Description

G4DNASmoluchowskiReactionModel should be used for very fast reactions (high reaction rate) : the reactions between reactants occuring at encounter. When the time step is constrained this model uses brownian bridge : "Absorbing (Smoluchowski) boundary condition" Reference : On the simulation of diffusion processes close to boundaries, N. J. B. Green, Molecular Physics, 65: 6, 1399 — 1408(1988)

Definition at line 58 of file G4DNASmoluchowskiReactionModel.hh.


Constructor & Destructor Documentation

G4DNASmoluchowskiReactionModel::G4DNASmoluchowskiReactionModel (  ) 

Definition at line 33 of file G4DNASmoluchowskiReactionModel.cc.

00033                                                                : G4VDNAReactionModel()
00034 {
00035     fReactionData = 0 ;
00036 }

G4DNASmoluchowskiReactionModel::~G4DNASmoluchowskiReactionModel (  )  [virtual]

Definition at line 51 of file G4DNASmoluchowskiReactionModel.cc.

00052 {
00053     fReactionData = 0 ;
00054 }

G4DNASmoluchowskiReactionModel::G4DNASmoluchowskiReactionModel ( const G4DNASmoluchowskiReactionModel  ) 

Definition at line 38 of file G4DNASmoluchowskiReactionModel.cc.

00038                                                                                                             :
00039     G4VDNAReactionModel(__right)
00040 {
00041     fReactionData = 0 ;
00042 }


Member Function Documentation

G4bool G4DNASmoluchowskiReactionModel::FindReaction ( const G4Track ,
const G4Track ,
const   G4double,
G4double ,
const   G4bool 
) [virtual]

Implements G4VDNAReactionModel.

Definition at line 79 of file G4DNASmoluchowskiReactionModel.cc.

References FatalErrorInArgument, G4Exception(), G4UniformRand, G4Step::GetDeltaTime(), G4Molecule::GetDiffusionCoefficient(), GetMolecule(), G4Molecule::GetName(), G4StepPoint::GetPosition(), G4Track::GetPosition(), G4Step::GetPreStepPoint(), and G4Track::GetStep().

00084 {
00085     G4double __postStepSeparation = 0;
00086     bool __do_break = false ;
00087     G4double __R2 = __R*__R ;
00088     int k = 0 ;
00089 
00090     for(; k < 3 ; k++)
00091     {
00092         __postStepSeparation += std::pow(__trackA.GetPosition()[k] - __trackB.GetPosition()[k],2);
00093 
00094         if(__postStepSeparation > __R2)
00095         {
00096             __do_break = true  ;
00097             break ;
00098         }
00099     }
00100 
00101     if(__do_break == false)
00102     {
00103          // The loop was not break
00104          // => __r^2 < __R^2
00105         __r = std::sqrt(__postStepSeparation);
00106         return true;
00107     }
00108     else if(__alongStepReaction == true)
00109     {
00110         //G4cout << "alongStepReaction==true" << G4endl;
00111         //Along step cheack and
00112         // the loop has break
00113 
00114         // Continue loop
00115         for(; k < 3 ; k++)
00116         {
00117             __postStepSeparation += std::pow(__trackA.GetPosition()[k] - __trackB.GetPosition()[k],2);
00118         }
00119         // Use Green approach : the Brownian bridge
00120         __r = (__postStepSeparation = std::sqrt(__postStepSeparation) );
00121 
00122         G4Molecule* __moleculeA = GetMolecule(__trackA);
00123         G4Molecule* __moleculeB = GetMolecule(__trackB);
00124 
00125         G4double __D = __moleculeA->GetDiffusionCoefficient() + __moleculeB->GetDiffusionCoefficient();
00126 
00127         G4ThreeVector __preStepPositionA = __trackA.GetStep()->GetPreStepPoint() ->GetPosition();
00128         G4ThreeVector __preStepPositionB = __trackB.GetStep()->GetPreStepPoint() ->GetPosition();
00129 
00130         if(__preStepPositionA == __trackA.GetPosition())
00131         {
00132             G4ExceptionDescription exceptionDescription ;
00133             exceptionDescription << "The molecule : " <<  __moleculeA->GetName();
00134             exceptionDescription << " did not move since the previous step ";
00135             G4Exception("G4DNASmoluchowskiReactionModel::FindReaction","G4DNASmoluchowskiReactionModel",
00136                         FatalErrorInArgument,exceptionDescription);
00137         }
00138 
00139         G4double __preStepSeparation = (__preStepPositionA - __preStepPositionB).mag();
00140 
00141         G4double __probabiltyOfEncounter =  std::exp(-(__preStepSeparation - __R)*(__postStepSeparation - __R)
00142                                         / (__D* (__trackB.GetStep()->GetDeltaTime())));
00143         G4double __selectedPOE = G4UniformRand();
00144 
00145         if(__selectedPOE<=__probabiltyOfEncounter)  return true;
00146     }
00147 
00148     return false ;
00149 }

G4double G4DNASmoluchowskiReactionModel::GetReactionRadius ( const   G4int  )  [virtual]

Implements G4VDNAReactionModel.

Definition at line 73 of file G4DNASmoluchowskiReactionModel.cc.

00074 {
00075     G4double __output = (*fReactionData)[__i] -> GetReducedReactionRadius();
00076     return  __output ;
00077 }

G4double G4DNASmoluchowskiReactionModel::GetReactionRadius ( const G4Molecule ,
const G4Molecule  
) [virtual]

Implements G4VDNAReactionModel.

Definition at line 66 of file G4DNASmoluchowskiReactionModel.cc.

References G4VDNAReactionModel::fReactionTable.

00068 {
00069     G4double __output = fReactionTable -> GetReactionData(mol1,mol2)->GetReducedReactionRadius();
00070     return  __output ;
00071 }

void G4DNASmoluchowskiReactionModel::Initialise ( const G4Molecule __molecule,
const G4Track  
) [virtual]

This macro is defined in AddClone_def

Reimplemented from G4VDNAReactionModel.

Definition at line 56 of file G4DNASmoluchowskiReactionModel.cc.

References G4VDNAReactionModel::fReactionTable, and G4DNAMolecularReactionTable::GetReactionData().

00057 {
00058     fReactionData = fReactionTable->GetReactionData(__molecule);
00059 }

void G4DNASmoluchowskiReactionModel::InitialiseToPrint ( const G4Molecule  )  [virtual]

Implements G4VDNAReactionModel.

Definition at line 61 of file G4DNASmoluchowskiReactionModel.cc.

References G4VDNAReactionModel::fReactionTable, and G4DNAMolecularReactionTable::GetReactionData().

00062 {
00063     fReactionData = fReactionTable->GetReactionData(__molecule);
00064 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:51:48 2013 for Geant4 by  doxygen 1.4.7