81 if (
this == &rhs)
return *
this;
93 const G4Track& trackB,
94 const double currentStepTime,
96 bool userStepTimeLimit)
106 "You have to give a reaction model to the molecular reaction process");
107 G4Exception(
"G4DNAMolecularReaction::TestReactibility",
109 exceptionDescription);
115 "You have to give a reaction table to the molecular reaction process");
116 G4Exception(
"G4DNAMolecularReaction::TestReactibility",
118 exceptionDescription);
128 if (currentStepTime == 0.)
130 userStepTimeLimit =
false;
140 G4cout <<
"\033[1;39;36m" <<
"G4MolecularReaction " <<
G4endl;
143 <<
" real distance : " <<
G4BestUnit((trackA.GetPosition() - trackB.GetPosition()).mag(),
"Length")
144 <<
" calculated distance by model (= -1 if real distance > reaction radius and the user limitation step is not reached) : " 148 G4cout <<
"TrackID A : " << trackA.GetTrackID()
149 <<
", TrackID B : " << trackB.GetTrackID()
150 <<
" | MolA " << moleculeA->
GetName()
151 <<
", MolB " << moleculeB->
GetName()
154 G4cout <<
"--------------------------------------------" <<
G4endl;
161 const G4Track& trackB)
175 G4cout <<
"G4DNAMolecularReaction::MakeReaction" <<
G4endl;
176 G4cout<<
"TrackA n°" << trackA.GetTrackID()
177 <<
"\t | Track B n°" << trackB.GetTrackID() <<
G4endl;
179 G4cout<<
"Track A : Position : " <<
G4BestUnit(trackA.GetPosition(),
"Length")
180 <<
"\t Global Time : " <<
G4BestUnit(trackA.GetGlobalTime(),
"Time")<< G4endl;
182 G4cout<<
"Track B : Position : " <<
G4BestUnit(trackB.GetPosition() ,
"Length")
183 <<
"\t Global Time : " <<
G4BestUnit(trackB.GetGlobalTime(),
"Time")<< G4endl;
187 G4cout <<
"--------------------------------------------" <<
G4endl;
203 G4ThreeVector reactionSite = sqrD1 / numerator * trackA.GetPosition()
204 + sqrD2 / numerator * trackB.GetPosition();
206 for (
G4int j = 0; j < nbProducts; j++)
209 G4Track* productTrack = product->
BuildTrack(trackA.GetGlobalTime(),
216 productTrack->SetTrackStatus(fAlive);
G4DNAMolecularReaction & operator=(const G4DNAMolecularReaction &other)
virtual G4bool TestReactibility(const G4Track &, const G4Track &, const double currentStepTime, const double previousStepTime, bool userStepTimeLimit)
virtual void Push(G4Track *track)
std::ostringstream G4ExceptionDescription
const G4String & GetName() const
ReturnType & reference_cast(OriginalType &source)
G4MolecularConfiguration * GetProduct(G4int i) const
static G4ITFinder * Instance()
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
const G4ITReactionTable * fpReactionTable
G4GLOB_DLL std::ostream G4cout
virtual ~G4DNAMolecularReaction()
void Initialize(const G4Track &, const G4Track &, G4VParticleChange *particleChangeA=0, G4VParticleChange *particleChangeB=0)
virtual G4double GetReactionRadius(G4MolecularConfiguration *, G4MolecularConfiguration *)=0
G4MolecularConfiguration * GetMolecularConfiguration() const
G4Molecule * GetMolecule(const G4Track &track)
const G4DNAMolecularReactionTable *& fMolReactionTable
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4Track * BuildTrack(G4double globalTime, const G4ThreeVector &Position)
G4int GetNbProducts() const
const G4DNAMolecularReactionData * GetReactionData(G4MolecularConfiguration *, G4MolecularConfiguration *) const
virtual G4bool FindReaction(const G4Track &, const G4Track &, const G4double, G4double &, const G4bool)=0
G4double GetDiffusionCoefficient() const
G4VDNAReactionModel * fReactionModel
G4ITReactionChange * fpChanges
virtual G4ITReactionChange * MakeReaction(const G4Track &, const G4Track &)
void AddSecondary(G4Track *aSecondary)