Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4DNASecondOrderReaction Class Reference

#include <G4DNASecondOrderReaction.hh>

Inheritance diagram for G4DNASecondOrderReaction:
Collaboration diagram for G4DNASecondOrderReaction:

Classes

struct  SecondOrderReactionState
 

Public Member Functions

 G4DNASecondOrderReaction (const G4String &aName="DNASecondOrderReaction", G4ProcessType type=fDecay)
 
virtual ~G4DNASecondOrderReaction ()
 
 G4DNASecondOrderReaction (const G4DNASecondOrderReaction &)
 
G4DNASecondOrderReactionoperator= (const G4DNASecondOrderReaction &)
 
void StartTracking (G4Track *)
 
void SetReaction (const G4MolecularConfiguration *, const G4Material *, double)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual G4double PostStepGetPhysicalInteractionLength (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
virtual G4VParticleChangePostStepDoIt (const G4Track &, const G4Step &)
 
virtual G4double AtRestGetPhysicalInteractionLength (const G4Track &, G4ForceCondition *)
 
virtual G4VParticleChangeAtRestDoIt (const G4Track &, const G4Step &)
 
virtual G4double AlongStepGetPhysicalInteractionLength (const G4Track &, G4double, G4double, G4double &, G4GPILSelection *)
 
virtual G4VParticleChangeAlongStepDoIt (const G4Track &, const G4Step &)
 
- Public Member Functions inherited from G4VITProcess
 G4VITProcess (const G4String &name, G4ProcessType type=fNotDefined)
 
virtual ~G4VITProcess ()
 
 G4VITProcess (const G4VITProcess &other)
 
G4VITProcessoperator= (const G4VITProcess &other)
 
G4int operator== (const G4VITProcess &right) const
 
G4int operator!= (const G4VITProcess &right) const
 
size_t GetProcessID () const
 
G4shared_ptr< G4ProcessState_LockGetProcessState ()
 
void SetProcessState (G4shared_ptr< G4ProcessState_Lock > aProcInfo)
 
void ResetProcessState ()
 
G4double GetInteractionTimeLeft ()
 
virtual void ResetNumberOfInteractionLengthLeft ()
 
G4bool ProposesTimeStep () const
 
- Public Member Functions inherited from G4VProcess
 G4VProcess (const G4String &aName="NoName", G4ProcessType aType=fNotDefined)
 
 G4VProcess (const G4VProcess &right)
 
virtual ~G4VProcess ()
 
G4int operator== (const G4VProcess &right) const
 
G4int operator!= (const G4VProcess &right) const
 
G4double GetCurrentInteractionLength () const
 
void SetPILfactor (G4double value)
 
G4double GetPILfactor () const
 
G4double AlongStepGPIL (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
 
G4double AtRestGPIL (const G4Track &track, G4ForceCondition *condition)
 
G4double PostStepGPIL (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
virtual G4bool IsApplicable (const G4ParticleDefinition &)
 
virtual void PreparePhysicsTable (const G4ParticleDefinition &)
 
virtual G4bool StorePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
virtual G4bool RetrievePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
const G4StringGetPhysicsTableFileName (const G4ParticleDefinition *, const G4String &directory, const G4String &tableName, G4bool ascii=false)
 
const G4StringGetProcessName () const
 
G4ProcessType GetProcessType () const
 
void SetProcessType (G4ProcessType)
 
G4int GetProcessSubType () const
 
void SetProcessSubType (G4int)
 
virtual void EndTracking ()
 
virtual void SetProcessManager (const G4ProcessManager *)
 
virtual const G4ProcessManagerGetProcessManager ()
 
G4double GetNumberOfInteractionLengthLeft () const
 
G4double GetTotalNumberOfInteractionLengthTraversed () const
 
G4bool isAtRestDoItIsEnabled () const
 
G4bool isAlongStepDoItIsEnabled () const
 
G4bool isPostStepDoItIsEnabled () const
 
virtual void DumpInfo () const
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
virtual void SetMasterProcess (G4VProcess *masterP)
 
const G4VProcessGetMasterProcess () const
 
virtual void BuildWorkerPhysicsTable (const G4ParticleDefinition &part)
 
virtual void PrepareWorkerPhysicsTable (const G4ParticleDefinition &)
 

Protected Attributes

G4bool fIsInitialized
 
G4double fReturnedValue
 
const std::vector< double > * fpMoleculeDensity
 
G4double fReactionRate
 
G4double fConcentration
 
G4double fMolarMassOfMaterial
 
G4ParticleChange fParticleChange
 
const G4MolecularConfigurationfpMolecularConfiguration
 
const G4MaterialfpMaterial
 
- Protected Attributes inherited from G4VITProcess
G4shared_ptr< G4ProcessStatefpState
 
G4bool fProposesTimeStep
 
- Protected Attributes inherited from G4VProcess
const G4ProcessManageraProcessManager
 
G4VParticleChangepParticleChange
 
G4ParticleChange aParticleChange
 
G4double theNumberOfInteractionLengthLeft
 
G4double currentInteractionLength
 
G4double theInitialNumberOfInteractionLength
 
G4String theProcessName
 
G4String thePhysicsTableFileName
 
G4ProcessType theProcessType
 
G4int theProcessSubType
 
G4double thePILfactor
 
G4bool enableAtRestDoIt
 
G4bool enableAlongStepDoIt
 
G4bool enablePostStepDoIt
 
G4int verboseLevel
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VITProcess
static const size_t & GetMaxProcessIndex ()
 
- Static Public Member Functions inherited from G4VProcess
static const G4StringGetProcessTypeName (G4ProcessType)
 
- Protected Member Functions inherited from G4VITProcess
void RetrieveProcessInfo ()
 
void CreateInfo ()
 
template<typename T >
T * GetState ()
 
virtual void SubtractNumberOfInteractionLengthLeft (G4double previousStepSize)
 
virtual void ClearInteractionTimeLeft ()
 
virtual void ClearNumberOfInteractionLengthLeft ()
 
void SetInstantiateProcessState (G4bool flag)
 
G4bool InstantiateProcessState ()
 
- Protected Member Functions inherited from G4VProcess
void SubtractNumberOfInteractionLengthLeft (G4double previousStepSize)
 
void ClearNumberOfInteractionLengthLeft ()
 

Detailed Description

Definition at line 55 of file G4DNASecondOrderReaction.hh.

Constructor & Destructor Documentation

G4DNASecondOrderReaction::G4DNASecondOrderReaction ( const G4String aName = "DNASecondOrderReaction",
G4ProcessType  type = fDecay 
)

Definition at line 68 of file G4DNASecondOrderReaction.cc.

68  :
69  G4VITProcess(aName,type)
70 {
71  Create();
72 }
G4VITProcess(const G4String &name, G4ProcessType type=fNotDefined)
Definition: G4VITProcess.cc:35
G4DNASecondOrderReaction::~G4DNASecondOrderReaction ( )
virtual

Definition at line 80 of file G4DNASecondOrderReaction.cc.

81 {
82  ;
83 }
G4DNASecondOrderReaction::G4DNASecondOrderReaction ( const G4DNASecondOrderReaction rhs)

Definition at line 74 of file G4DNASecondOrderReaction.cc.

74  :
75  G4VITProcess(rhs)
76 {
77  Create();
78 }
G4VITProcess(const G4String &name, G4ProcessType type=fNotDefined)
Definition: G4VITProcess.cc:35

Member Function Documentation

virtual G4VParticleChange* G4DNASecondOrderReaction::AlongStepDoIt ( const G4Track ,
const G4Step  
)
inlinevirtual

Implements G4VProcess.

Definition at line 103 of file G4DNASecondOrderReaction.hh.

106  {return 0;}
virtual G4double G4DNASecondOrderReaction::AlongStepGetPhysicalInteractionLength ( const G4Track ,
G4double  ,
G4double  ,
G4double ,
G4GPILSelection  
)
inlinevirtual

Implements G4VProcess.

Definition at line 94 of file G4DNASecondOrderReaction.hh.

100  { return -1.0; }
virtual G4VParticleChange* G4DNASecondOrderReaction::AtRestDoIt ( const G4Track ,
const G4Step  
)
inlinevirtual

Implements G4VProcess.

Definition at line 88 of file G4DNASecondOrderReaction.hh.

91  {return 0;}
virtual G4double G4DNASecondOrderReaction::AtRestGetPhysicalInteractionLength ( const G4Track ,
G4ForceCondition  
)
inlinevirtual

Implements G4VProcess.

Definition at line 83 of file G4DNASecondOrderReaction.hh.

86  { return -1.0; }
void G4DNASecondOrderReaction::BuildPhysicsTable ( const G4ParticleDefinition )
virtual

Reimplemented from G4VITProcess.

Definition at line 98 of file G4DNASecondOrderReaction.cc.

99 {
102  fIsInitialized = true;
103 }
const std::vector< double > * fpMoleculeDensity
static constexpr double Avogadro
const std::vector< double > * GetNumMolPerVolTableFor(const G4Material *) const
static G4DNAMolecularMaterial * Instance()
G4double GetMassOfMolecule() const
Definition: G4Material.hh:242

Here is the call graph for this function:

G4DNASecondOrderReaction & G4DNASecondOrderReaction::operator= ( const G4DNASecondOrderReaction rhs)

Definition at line 84 of file G4DNASecondOrderReaction.cc.

85 {
86  if (this == &rhs) return *this; // handle self assignment
87 
88  //assignment operator
89  return *this;
90 }
G4VParticleChange * G4DNASecondOrderReaction::PostStepDoIt ( const G4Track track,
const G4Step  
)
virtual

Implements G4VProcess.

Definition at line 245 of file G4DNASecondOrderReaction.cc.

246 {
247  G4Molecule* molecule = GetMolecule(track);
248 #ifdef G4VERBOSE
249  if(verboseLevel > 1)
250  {
251  G4cout << "___________" << G4endl;
252  G4cout << ">>> Beginning of G4DNASecondOrderReaction verbose" << G4endl;
253  G4cout << ">>> Returned value : " << G4BestUnit(fReturnedValue,"Time") << G4endl;
254  G4cout << ">>> Time Step : " << G4BestUnit(G4VScheduler::Instance()->GetTimeStep(),"Time") << G4endl;
255  G4cout << ">>> Reaction : " << molecule->GetName() << " + " << fpMaterial->GetName() << G4endl;
256  G4cout << ">>> End of G4DNASecondOrderReaction verbose <<<" << G4endl;
257  }
258 #endif
263  State(fPreviousTimeAtPreStepPoint) = -1;
264  return &fParticleChange;
265 }
G4int verboseLevel
Definition: G4VProcess.hh:368
static G4VScheduler * Instance()
Definition: G4VScheduler.cc:48
virtual void AddIndirectDamage(const G4String &baseName, const G4Molecule *molecule, const G4ThreeVector &position, double time)
Definition: G4DNADamage.cc:96
const G4String & GetName() const
Definition: G4Material.hh:178
const G4ThreeVector & GetPosition() const
static G4DNADamage * Instance()
Definition: G4DNADamage.cc:57
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
const G4String & GetName() const
Definition: G4Molecule.cc:356
G4GLOB_DLL std::ostream G4cout
G4double GetGlobalTime() const
G4Molecule * GetMolecule(const G4Track &track)
Definition: G4Molecule.cc:76
#define State(theXInfo)
virtual void Initialize(const G4Track &)
#define G4endl
Definition: G4ios.hh:61
void ProposeTrackStatus(G4TrackStatus status)
#define DBL_MAX
Definition: templates.hh:83

Here is the call graph for this function:

G4double G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength ( const G4Track track,
G4double  previousStepSize,
G4ForceCondition condition 
)
virtual

Implements G4VProcess.

Definition at line 130 of file G4DNASecondOrderReaction.cc.

133 {
134  // G4cout << "G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength" << G4endl;
135  // G4cout << "For reaction : " << fpMaterial->GetName() << " + " << fpMolecularConfiguration->GetName() << G4endl;
136 
137  //_______________________________________________________________________
138  // Check whether the track is in the good material (maybe composite material)
139  const G4Material* material = track.GetMaterial();
140 
141  G4Molecule* mol = GetMolecule(track);
142  if(!mol) return DBL_MAX;
144  {
145  // G4cout <<"mol->GetMolecularConfiguration() != fpMolecularConfiguration" << G4endl;
146  return DBL_MAX;
147  }
148 
149  G4double molDensity = (*fpMoleculeDensity)[material->GetIndex()];
150 
151  if(molDensity == 0.0) // ie : not found
152  {
153  if(State(fIsInGoodMaterial))
154  {
156  //State(fPreviousTimeAtPreStepPoint) = -1;
157  State(fIsInGoodMaterial) = false;
158  }
159 
160  // G4cout << " Material " << fpMaterial->GetName() << " not found "
161  // <<" | name of current material : " << material->GetName()
162  // << G4endl;
163 
164  return DBL_MAX; // Becareful return here !!
165  }
166 
167  // G4cout << " Va calculer le temps d'interaction " << G4endl;
168 
169  State(fIsInGoodMaterial) = true;
170 
171  // fConcentration = molDensity/fMolarMassOfMaterial;
172  fConcentration = molDensity/CLHEP::Avogadro;
173  // G4cout << "Concentration : " << fConcentration / (g/mole)<< G4endl;
174 
175  //_______________________________________________________________________
176  // Either initialize the lapse of time left
177  // meaning
178  // => the track enters for the first time in the material
179  // or substract the previous time step to the previously calculated lapse
180  // of time left
181  // meaning
182  // => the track has not left this material since the previous call
183  G4double previousTimeStep(-1.);
184 
185  if(State(fPreviousTimeAtPreStepPoint) != -1)
186  {
187  previousTimeStep = track.GetGlobalTime() -
188  State(fPreviousTimeAtPreStepPoint) ;
189  }
190 
191  State(fPreviousTimeAtPreStepPoint) = track.GetGlobalTime();
192 
193  // condition is set to "Not Forced"
194  *pForceCond = NotForced;
195 
196  if (
197  (previousTimeStep < 0.0) ||
198  (fpState->theNumberOfInteractionLengthLeft<=0.0)) {
199  // beggining of tracking (or just after DoIt of this process)
201  } else if ( previousTimeStep > 0.0) {
202  // get mean free path
203  // subtract NumberOfInteractionLengthLeft
204  SubtractNumberOfInteractionLengthLeft( previousTimeStep );
205  } else {
206  // zero time step
207  // Force trigerring the process
208  //*pForceCond = Forced;
209  }
210 
211  fpState->currentInteractionLength = 1/(fReactionRate*fConcentration);
212 
213  // G4cout << "fpState->currentInteractionLength = "
214  // << fpState->currentInteractionLength << G4endl;
215 
216  G4double value;
217  if (fpState->currentInteractionLength <DBL_MAX) {
218  value = fpState->theNumberOfInteractionLengthLeft
219  * (fpState->currentInteractionLength);
220  } else {
221  value = DBL_MAX;
222  }
223 #ifdef G4VERBOSE
224  if (verboseLevel>2) {
225  G4cout << "G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength ";
226  G4cout << "[ " << GetProcessName() << "]" <<G4endl;
227  track.GetDynamicParticle()->DumpInfo();
228  G4cout << " in Material " << track.GetMaterial()->GetName() <<G4endl;
229  G4cout << "InteractionLength= " << value/cm <<"[cm] " <<G4endl;
230  }
231 #endif
232 
233 // G4cout << "currentInteractionLength : " << fpState->currentInteractionLength << G4endl;
234 // G4cout << "Material : " << fpMaterial->GetName()
235 // << "ID: " << track.GetTrackID()
236 // << " Returned time : " << G4BestUnit(value,"Time") << G4endl;
237 
238  if(value < fReturnedValue)
240 
241  return value*-1;
242  // multiple by -1 to indicate to the tracking system that we are returning a time
243 }
G4int verboseLevel
Definition: G4VProcess.hh:368
const G4DynamicParticle * GetDynamicParticle() const
virtual void ResetNumberOfInteractionLengthLeft()
size_t GetIndex() const
Definition: G4Material.hh:262
const G4String & GetName() const
Definition: G4Material.hh:178
void DumpInfo(G4int mode=0) const
G4MolecularConfiguration * GetMolecularConfiguration() const
Definition: G4Molecule.cc:576
static constexpr double Avogadro
virtual void SubtractNumberOfInteractionLengthLeft(G4double previousStepSize)
string material
Definition: eplot.py:19
G4GLOB_DLL std::ostream G4cout
const XML_Char int const XML_Char * value
Definition: expat.h:331
static constexpr double cm
Definition: G4SIunits.hh:119
G4shared_ptr< G4ProcessState > fpState
G4double GetGlobalTime() const
G4Molecule * GetMolecule(const G4Track &track)
Definition: G4Molecule.cc:76
const G4String & GetProcessName() const
Definition: G4VProcess.hh:408
G4Material * GetMaterial() const
#define State(theXInfo)
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
#define DBL_MAX
Definition: templates.hh:83
const G4MolecularConfiguration * fpMolecularConfiguration

Here is the call graph for this function:

void G4DNASecondOrderReaction::SetReaction ( const G4MolecularConfiguration molConf,
const G4Material mat,
double  reactionRate 
)

Definition at line 114 of file G4DNASecondOrderReaction.cc.

116 {
117  if(fIsInitialized)
118  {
119  G4ExceptionDescription exceptionDescription ;
120  exceptionDescription << "G4DNASecondOrderReaction was already initialised. ";
121  exceptionDescription << "You cannot set a reaction after initialisation.";
122  G4Exception("G4DNASecondOrderReaction::SetReaction","G4DNASecondOrderReaction001",
123  FatalErrorInArgument,exceptionDescription);
124  }
125  fpMolecularConfiguration = molConf;
126  fpMaterial = mat;
127  fReactionRate = reactionRate;
128 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
const G4MolecularConfiguration * fpMolecularConfiguration

Here is the call graph for this function:

void G4DNASecondOrderReaction::StartTracking ( G4Track track)
virtual

Reimplemented from G4VITProcess.

Definition at line 106 of file G4DNASecondOrderReaction.cc.

107 {
109  G4VITProcess::fpState.reset(new SecondOrderReactionState());
111 }
virtual void StartTracking(G4Track *)
Definition: G4VProcess.cc:101
virtual void StartTracking(G4Track *)
Definition: G4VITProcess.cc:86
G4shared_ptr< G4ProcessState > fpState

Here is the call graph for this function:

Member Data Documentation

G4double G4DNASecondOrderReaction::fConcentration
protected

Definition at line 127 of file G4DNASecondOrderReaction.hh.

G4bool G4DNASecondOrderReaction::fIsInitialized
protected

Definition at line 121 of file G4DNASecondOrderReaction.hh.

G4double G4DNASecondOrderReaction::fMolarMassOfMaterial
protected

Definition at line 128 of file G4DNASecondOrderReaction.hh.

G4ParticleChange G4DNASecondOrderReaction::fParticleChange
protected

Definition at line 129 of file G4DNASecondOrderReaction.hh.

const G4Material* G4DNASecondOrderReaction::fpMaterial
protected

Definition at line 132 of file G4DNASecondOrderReaction.hh.

const G4MolecularConfiguration* G4DNASecondOrderReaction::fpMolecularConfiguration
protected

Definition at line 131 of file G4DNASecondOrderReaction.hh.

const std::vector<double>* G4DNASecondOrderReaction::fpMoleculeDensity
protected

Definition at line 125 of file G4DNASecondOrderReaction.hh.

G4double G4DNASecondOrderReaction::fReactionRate
protected

Definition at line 126 of file G4DNASecondOrderReaction.hh.

G4double G4DNASecondOrderReaction::fReturnedValue
protected

Definition at line 123 of file G4DNASecondOrderReaction.hh.


The documentation for this class was generated from the following files: