#include <G4DNASmoluchowskiReactionModel.hh>
Inheritance diagram for G4DNASmoluchowskiReactionModel:
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) |
Definition at line 58 of file G4DNASmoluchowskiReactionModel.hh.
G4DNASmoluchowskiReactionModel::G4DNASmoluchowskiReactionModel | ( | ) |
Definition at line 33 of file G4DNASmoluchowskiReactionModel.cc.
00033 : G4VDNAReactionModel() 00034 { 00035 fReactionData = 0 ; 00036 }
G4DNASmoluchowskiReactionModel::~G4DNASmoluchowskiReactionModel | ( | ) | [virtual] |
G4DNASmoluchowskiReactionModel::G4DNASmoluchowskiReactionModel | ( | const G4DNASmoluchowskiReactionModel & | ) |
Definition at line 38 of file G4DNASmoluchowskiReactionModel.cc.
00038 : 00039 G4VDNAReactionModel(__right) 00040 { 00041 fReactionData = 0 ; 00042 }
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 }