39#define State(theXInfo) (GetState<SecondOrderReactionState>()->theXInfo)
42void G4DNASecondOrderReaction::Create()
85 if (
this == &rhs)
return *
this;
119 exceptionDescription <<
"G4DNASecondOrderReaction was already initialised. ";
120 exceptionDescription <<
"You cannot set a reaction after initialisation.";
121 G4Exception(
"G4DNASecondOrderReaction::SetReaction",
"G4DNASecondOrderReaction001",
150 if(molDensity == 0.0)
152 if(
State(fIsInGoodMaterial))
156 State(fIsInGoodMaterial) =
false;
168 State(fIsInGoodMaterial) =
true;
184 if(
State(fPreviousTimeAtPreStepPoint) != -1)
187 State(fPreviousTimeAtPreStepPoint) ;
196 (previousTimeStep < 0.0) ||
197 (
fpState->theNumberOfInteractionLengthLeft<=0.0)) {
200 }
else if ( previousTimeStep > 0.0) {
217 value =
fpState->theNumberOfInteractionLengthLeft
218 * (
fpState->currentInteractionLength);
224 G4cout <<
"G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength ";
228 G4cout <<
"InteractionLength= " << value/cm <<
"[cm] " <<
G4endl;
251 G4cout <<
">>> Beginning of G4DNASecondOrderReaction verbose" <<
G4endl;
255 G4cout <<
">>> End of G4DNASecondOrderReaction verbose <<<" <<
G4endl;
262 State(fPreviousTimeAtPreStepPoint) = -1;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4Molecule * GetMolecule(const G4Track &track)
G4GLOB_DLL std::ostream G4cout
virtual void AddIndirectDamage(const G4String &baseName, const G4Molecule *molecule, const G4ThreeVector &position, double 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()
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
G4DNASecondOrderReaction & operator=(const G4DNASecondOrderReaction &)
const std::vector< double > * fpMoleculeDensity
const G4MolecularConfiguration * fpMolecularConfiguration
const G4Material * fpMaterial
virtual ~G4DNASecondOrderReaction()
G4DNASecondOrderReaction(const G4String &aName="DNASecondOrderReaction", G4ProcessType type=fDecay)
void StartTracking(G4Track *)
void SetReaction(const G4MolecularConfiguration *, const G4Material *, double)
G4ParticleChange fParticleChange
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
G4double fMolarMassOfMaterial
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
void DumpInfo(G4int mode=0) const
G4double GetMassOfMolecule() const
const G4String & GetName() const
const G4MolecularConfiguration * GetMolecularConfiguration() const
const G4String & GetName() const
virtual void Initialize(const G4Track &)
const G4ThreeVector & GetPosition() const
G4double GetGlobalTime() const
G4Material * GetMaterial() const
const G4DynamicParticle * GetDynamicParticle() const
virtual void StartTracking(G4Track *)
void SetInstantiateProcessState(G4bool flag)
virtual void SubtractNumberOfInteractionLengthLeft(G4double previousStepSize)
G4shared_ptr< G4ProcessState > fpState
virtual void ResetNumberOfInteractionLengthLeft()
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()