43#define State(theXInfo) (GetState<SecondOrderReactionState>()->theXInfo)
46void G4DNASecondOrderReaction::Create()
88 if (
this == &rhs)
return *
this;
122 exceptionDescription <<
"G4DNASecondOrderReaction was already initialised. ";
123 exceptionDescription <<
"You cannot set a reaction after initialisation.";
124 G4Exception(
"G4DNASecondOrderReaction::SetReaction",
"G4DNASecondOrderReaction001",
144 if(mol ==
nullptr)
return DBL_MAX;
153 if(molDensity == 0.0)
155 if(
State(fIsInGoodMaterial))
159 State(fIsInGoodMaterial) =
false;
171 State(fIsInGoodMaterial) =
true;
187 if(
State(fPreviousTimeAtPreStepPoint) != -1)
190 State(fPreviousTimeAtPreStepPoint) ;
199 (previousTimeStep < 0.0) ||
200 (
fpState->theNumberOfInteractionLengthLeft<=0.0)) {
203 }
else if ( previousTimeStep > 0.0) {
220 value =
fpState->theNumberOfInteractionLengthLeft
221 * (
fpState->currentInteractionLength);
227 G4cout <<
"G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength ";
231 G4cout <<
"InteractionLength= " << value/cm <<
"[cm] " <<
G4endl;
254 G4cout <<
">>> Beginning of G4DNASecondOrderReaction verbose" <<
G4endl;
258 G4cout <<
">>> End of G4DNASecondOrderReaction verbose <<<" <<
G4endl;
265 State(fPreviousTimeAtPreStepPoint) = -1;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
@ fLowEnergyTransportation
G4Molecule * GetMolecule(const G4Track &track)
G4GLOB_DLL std::ostream G4cout
virtual void AddIndirectDamage(const G4String &baseName, const G4Molecule *molecule, const G4ThreeVector &position, G4double time)
static G4DNADamage * Instance()
const std::vector< G4double > * GetNumMolPerVolTableFor(const G4Material *) const
Retrieve a table of molecular densities (number of molecules per unit volume) in the G4 unit system f...
static G4DNAMolecularMaterial * Instance()
G4DNASecondOrderReaction & operator=(const G4DNASecondOrderReaction &)
const std::vector< double > * fpMoleculeDensity
~G4DNASecondOrderReaction() override
const G4MolecularConfiguration * fpMolecularConfiguration
const G4Material * fpMaterial
G4DNASecondOrderReaction(const G4String &aName="DNASecondOrderReaction", G4ProcessType type=fDecay)
void SetReaction(const G4MolecularConfiguration *, const G4Material *, double)
G4ParticleChange fParticleChange
void StartTracking(G4Track *) override
G4double fMolarMassOfMaterial
void BuildPhysicsTable(const G4ParticleDefinition &) override
G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &) override
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition) override
void DumpInfo(G4int mode=0) const
G4double GetMassOfMolecule() const
std::size_t GetIndex() const
const G4String & GetName() const
const G4MolecularConfiguration * GetMolecularConfiguration() const
const G4String & GetName() const override
void Initialize(const G4Track &) override
const G4ThreeVector & GetPosition() const
G4double GetGlobalTime() const
G4Material * GetMaterial() const
const G4DynamicParticle * GetDynamicParticle() const
void SetInstantiateProcessState(G4bool flag)
virtual void SubtractNumberOfInteractionLengthLeft(G4double previousStepSize)
G4shared_ptr< G4ProcessState > fpState
void StartTracking(G4Track *) override
void ResetNumberOfInteractionLengthLeft() override
void ProposeTrackStatus(G4TrackStatus status)
G4bool enableAlongStepDoIt
void SetProcessSubType(G4int)
virtual void StartTracking(G4Track *)
G4bool enablePostStepDoIt
G4VParticleChange * pParticleChange
const G4String & GetProcessName() const
static G4VScheduler * Instance()
G4double fPreviousTimeAtPreStepPoint
SecondOrderReactionState()