G4VITProcess Class Reference

#include <G4VITProcess.hh>

Inheritance diagram for G4VITProcess:

G4VProcess G4DNASecondOrderReaction G4ITTransportation G4VITRestDiscreteProcess G4VITRestProcess G4DNABrownianTransportation G4DNAMolecularDecay

Public Member Functions

 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
G4ProcessState_LockGetProcessState ()
void SetProcessState (G4ProcessState_Lock *aProcInfo)
virtual void StartTracking (G4Track *)
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
G4double GetInteractionTimeLeft ()
virtual void ResetNumberOfInteractionLengthLeft ()
G4bool ProposesTimeStep () const

Static Public Member Functions

static const size_t & GetMaxProcessIndex ()

Protected Member Functions

void RetrieveProcessInfo ()
void CreateInfo ()
virtual void ClearInteractionTimeLeft ()
virtual void SubtractNumberOfInteractionLengthLeft (G4double previousStepSize)
virtual void ClearNumberOfInteractionLengthLeft ()
void SetInstantiateProcessState (G4bool flag)
G4bool InstantiateProcessState ()

Protected Attributes

G4ProcessStatefpState
G4bool fProposesTimeStep

Data Structures

struct  G4ProcessState

Detailed Description

G4VITProcess inherits from G4VProcess. A G4VITProcess is able to save its current state for a given track into G4IT. This state may be retrieve latter on to be used by the G4VITProcess. Each G4VITProcess is tagged.

Definition at line 63 of file G4VITProcess.hh.


Constructor & Destructor Documentation

G4VITProcess::G4VITProcess ( const G4String name,
G4ProcessType  type = fNotDefined 
)

Definition at line 34 of file G4VITProcess.cc.

References fProposesTimeStep, and SetInstantiateProcessState().

00034                                                                    :
00035     G4VProcess( name, type ),
00036     fpState (0),
00037     fProcessID(fNbProcess)
00038 {
00039         fNbProcess++;
00040         SetInstantiateProcessState(true);
00041         currentInteractionLength            = 0;
00042         theInteractionTimeLeft              = 0;
00043         theNumberOfInteractionLengthLeft    = 0;
00044         fProposesTimeStep = false;
00045 }

G4VITProcess::~G4VITProcess (  )  [virtual]

Definition at line 57 of file G4VITProcess.cc.

00058 {
00059     //dtor
00060     // As the owner, G4IT should delete fProcessState
00061 }

G4VITProcess::G4VITProcess ( const G4VITProcess other  ) 

Definition at line 63 of file G4VITProcess.cc.

References fInstantiateProcessState, fProposesTimeStep, and fpState.

00063                                                      : G4VProcess(other), fProcessID(other.fProcessID)
00064 {
00065         //copy ctor
00066         fpState                             = 0 ;
00067         currentInteractionLength            = 0;
00068         theInteractionTimeLeft              = 0;
00069         theNumberOfInteractionLengthLeft    = 0;
00070         fInstantiateProcessState            = other.fInstantiateProcessState;
00071         fProposesTimeStep                   = other.fProposesTimeStep;
00072 }


Member Function Documentation

virtual void G4VITProcess::BuildPhysicsTable ( const G4ParticleDefinition  )  [inline, virtual]

Reimplemented from G4VProcess.

Reimplemented in G4ITTransportation, G4DNABrownianTransportation, and G4DNASecondOrderReaction.

Definition at line 100 of file G4VITProcess.hh.

00100 {}

void G4VITProcess::ClearInteractionTimeLeft (  )  [inline, protected, virtual]

Definition at line 179 of file G4VITProcess.hh.

References fpState, and G4VITProcess::G4ProcessState::theInteractionTimeLeft.

Referenced by G4DNAMolecularDecay::AtRestDoIt().

00180 {
00181     fpState->theInteractionTimeLeft = -1.0;
00182 }

void G4VITProcess::ClearNumberOfInteractionLengthLeft (  )  [inline, protected, virtual]

Reimplemented from G4VProcess.

Definition at line 184 of file G4VITProcess.hh.

References fpState, and G4VITProcess::G4ProcessState::theNumberOfInteractionLengthLeft.

Referenced by G4VITRestProcess::AtRestDoIt(), G4VITRestDiscreteProcess::AtRestDoIt(), G4DNAMolecularDecay::AtRestDoIt(), and G4VITRestDiscreteProcess::PostStepDoIt().

00185 {
00186     fpState->theNumberOfInteractionLengthLeft =  -1.0;
00187 }

void G4VITProcess::CreateInfo (  )  [protected]

G4double G4VITProcess::GetInteractionTimeLeft (  )  [inline]

Definition at line 194 of file G4VITProcess.hh.

References fpState, and G4VITProcess::G4ProcessState::theInteractionTimeLeft.

Referenced by G4ITStepProcessor::DoDefinePhysicalStepLength().

00195 {
00196     if(fpState)
00197         return fpState->theInteractionTimeLeft ;
00198 
00199     return -1 ;
00200 }

const size_t & G4VITProcess::GetMaxProcessIndex (  )  [inline, static]

Definition at line 207 of file G4VITProcess.hh.

Referenced by G4TrackingInformation::GetProcessState().

00208 {
00209     return fNbProcess ;
00210 }

size_t G4VITProcess::GetProcessID (  )  const [inline]

Definition at line 80 of file G4VITProcess.hh.

Referenced by G4ITStepProcessor::DoDefinePhysicalStepLength(), G4ITStepProcessor::FindTransportationStep(), G4ITStepProcessor::GetAtRestIL(), G4ITStepProcessor::InvokeAlongStepDoItProcs(), G4ITStepProcessor::InvokeAtRestDoItProcs(), and G4ITStepProcessor::InvokePSDIP().

00081     {
00082         return fProcessID;
00083     }

G4ProcessState_Lock* G4VITProcess::GetProcessState (  )  [inline]

Definition at line 85 of file G4VITProcess.hh.

References fpState.

00086     {
00087         return fpState;
00088     }

G4bool G4VITProcess::InstantiateProcessState (  )  [inline, protected]

Reimplemented in G4ITTransportation.

Definition at line 161 of file G4VITProcess.hh.

Referenced by StartTracking().

00161 { return fInstantiateProcessState; }

G4int G4VITProcess::operator!= ( const G4VITProcess right  )  const

G4VITProcess & G4VITProcess::operator= ( const G4VITProcess other  ) 

Definition at line 74 of file G4VITProcess.cc.

00075 {
00076         if (this == &rhs) return *this; // handle self assignment
00077         //assignment operator
00078         return *this;
00079 }

G4int G4VITProcess::operator== ( const G4VITProcess right  )  const

G4bool G4VITProcess::ProposesTimeStep (  )  const [inline]

Definition at line 202 of file G4VITProcess.hh.

References fProposesTimeStep.

Referenced by G4DNABrownianTransportation::ComputeStep(), and G4ITStepProcessor::DoDefinePhysicalStepLength().

00203 {
00204     return fProposesTimeStep;
00205 }

void G4VITProcess::ResetNumberOfInteractionLengthLeft (  )  [inline, virtual]

WARNING : Redefine the method of G4VProcess reset (determine the value of)NumberOfInteractionLengthLeft

Reimplemented from G4VProcess.

Definition at line 189 of file G4VITProcess.hh.

References fpState, G4UniformRand, and G4VITProcess::G4ProcessState::theNumberOfInteractionLengthLeft.

Referenced by G4VITRestProcess::AtRestGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), and G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength().

00190 {
00191     fpState->theNumberOfInteractionLengthLeft =  -std::log( G4UniformRand() );
00192 }

void G4VITProcess::RetrieveProcessInfo (  )  [protected]

void G4VITProcess::SetInstantiateProcessState ( G4bool  flag  )  [inline, protected]

Reimplemented in G4ITTransportation.

Definition at line 158 of file G4VITProcess.hh.

Referenced by G4ITTransportation::G4ITTransportation(), and G4VITProcess().

00159     { fInstantiateProcessState = flag; }

void G4VITProcess::SetProcessState ( G4ProcessState_Lock aProcInfo  )  [inline]

Definition at line 90 of file G4VITProcess.hh.

References fpState.

Referenced by G4ITStepProcessor::DoDefinePhysicalStepLength(), G4ITStepProcessor::FindTransportationStep(), G4ITStepProcessor::GetAtRestIL(), G4ITStepProcessor::InvokeAlongStepDoItProcs(), G4ITStepProcessor::InvokeAtRestDoItProcs(), and G4ITStepProcessor::InvokePSDIP().

00091     {
00092         fpState = (G4ProcessState*) aProcInfo;
00093     }

void G4VITProcess::StartTracking ( G4Track  )  [virtual]

Reimplemented from G4VProcess.

Reimplemented in G4ITTransportation, G4DNABrownianTransportation, and G4DNASecondOrderReaction.

Definition at line 81 of file G4VITProcess.cc.

References G4VITProcess::G4ProcessState::currentInteractionLength, fpState, GetIT(), G4IT::GetTrackingInfo(), InstantiateProcessState(), G4TrackingInformation::RecordProcessState(), G4VITProcess::G4ProcessState::theInteractionTimeLeft, and G4VITProcess::G4ProcessState::theNumberOfInteractionLengthLeft.

Referenced by G4ITTransportation::StartTracking(), and G4DNASecondOrderReaction::StartTracking().

00082 {
00083     G4TrackingInformation* trackingInfo = GetIT(track)->GetTrackingInfo();
00084     if(InstantiateProcessState())
00085     {
00086         fpState = new G4ProcessState();
00087     }
00088 
00089     theNumberOfInteractionLengthLeft    = &(fpState->theNumberOfInteractionLengthLeft );
00090     theInteractionTimeLeft              = &(fpState->theInteractionTimeLeft           );
00091     currentInteractionLength            = &(fpState->currentInteractionLength         );
00092     trackingInfo->RecordProcessState(fpState,fProcessID);
00093     fpState = 0;
00094 }

void G4VITProcess::SubtractNumberOfInteractionLengthLeft ( G4double  previousStepSize  )  [protected, virtual]

Reimplemented from G4VProcess.

Definition at line 96 of file G4VITProcess.cc.

References G4VITProcess::G4ProcessState::currentInteractionLength, EventMustBeAborted, fpState, G4cerr, G4endl, G4Exception(), G4VITProcess::G4ProcessState::theNumberOfInteractionLengthLeft, G4VProcess::theProcessName, and G4VProcess::verboseLevel.

Referenced by G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), and G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength().

00098 {
00099   if (fpState->currentInteractionLength>0.0) {
00100     fpState->theNumberOfInteractionLengthLeft -= previousStepSize/(fpState->currentInteractionLength);
00101     if(fpState->theNumberOfInteractionLengthLeft<0.) {
00102        fpState->theNumberOfInteractionLengthLeft=perMillion;
00103     }
00104 
00105   } else {
00106 #ifdef G4VERBOSE
00107     if (verboseLevel>0) {
00108       G4cerr << "G4VProcess::SubtractNumberOfInteractionLengthLeft()";
00109       G4cerr << " [" << theProcessName << "]" <<G4endl;
00110       G4cerr << " currentInteractionLength = " << *currentInteractionLength/cm << " [cm]";
00111       G4cerr << " previousStepSize = " << previousStepSize/cm << " [cm]";
00112       G4cerr << G4endl;
00113     }
00114 #endif
00115     G4Exception("G4VProcess::SubtractNumberOfInteractionLengthLeft()",
00116                 "Negative currentInteractionLength",EventMustBeAborted,theProcessName);
00117   }
00118 }


Field Documentation

G4bool G4VITProcess::fProposesTimeStep [protected]

Definition at line 163 of file G4VITProcess.hh.

Referenced by G4VITProcess(), and ProposesTimeStep().

G4ProcessState* G4VITProcess::fpState [protected]

Definition at line 139 of file G4VITProcess.hh.

Referenced by G4VITRestProcess::AtRestGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), ClearInteractionTimeLeft(), ClearNumberOfInteractionLengthLeft(), G4VITProcess(), GetInteractionTimeLeft(), GetProcessState(), G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength(), ResetNumberOfInteractionLengthLeft(), SetProcessState(), StartTracking(), G4ITTransportation::StartTracking(), G4DNASecondOrderReaction::StartTracking(), G4DNABrownianTransportation::StartTracking(), and SubtractNumberOfInteractionLengthLeft().


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:49 2013 for Geant4 by  doxygen 1.4.7