#include <G4VDiscreteProcess.hh>
Inheritance diagram for G4VDiscreteProcess:
Public Member Functions | |
G4VDiscreteProcess (const G4String &, G4ProcessType aType=fNotDefined) | |
G4VDiscreteProcess (G4VDiscreteProcess &) | |
virtual | ~G4VDiscreteProcess () |
virtual G4double | PostStepGetPhysicalInteractionLength (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition) |
virtual G4VParticleChange * | PostStepDoIt (const G4Track &, const G4Step &) |
virtual G4double | AlongStepGetPhysicalInteractionLength (const G4Track &, G4double, G4double, G4double &, G4GPILSelection *) |
virtual G4double | AtRestGetPhysicalInteractionLength (const G4Track &, G4ForceCondition *) |
virtual G4VParticleChange * | AtRestDoIt (const G4Track &, const G4Step &) |
virtual G4VParticleChange * | AlongStepDoIt (const G4Track &, const G4Step &) |
Protected Member Functions | |
virtual G4double | GetMeanFreePath (const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)=0 |
Definition at line 58 of file G4VDiscreteProcess.hh.
G4VDiscreteProcess::G4VDiscreteProcess | ( | const G4String & | , | |
G4ProcessType | aType = fNotDefined | |||
) |
Definition at line 54 of file G4VDiscreteProcess.cc.
References G4VProcess::enableAlongStepDoIt, G4VProcess::enableAtRestDoIt, and G4VDiscreteProcess().
Referenced by G4VDiscreteProcess().
00055 : G4VProcess(aName, aType) 00056 { 00057 enableAtRestDoIt = false; 00058 enableAlongStepDoIt = false; 00059 00060 }
G4VDiscreteProcess::G4VDiscreteProcess | ( | G4VDiscreteProcess & | ) |
Definition at line 66 of file G4VDiscreteProcess.cc.
References G4VDiscreteProcess().
00067 : G4VProcess(right) 00068 { 00069 }
G4VDiscreteProcess::~G4VDiscreteProcess | ( | ) | [virtual] |
virtual G4VParticleChange* G4VDiscreteProcess::AlongStepDoIt | ( | const G4Track & | , | |
const G4Step & | ||||
) | [inline, virtual] |
Implements G4VProcess.
Reimplemented in G4NuclearStopping.
Definition at line 102 of file G4VDiscreteProcess.hh.
virtual G4double G4VDiscreteProcess::AlongStepGetPhysicalInteractionLength | ( | const G4Track & | , | |
G4double | , | |||
G4double | , | |||
G4double & | , | |||
G4GPILSelection * | ||||
) | [inline, virtual] |
Implements G4VProcess.
Reimplemented in G4NuclearStopping.
Definition at line 83 of file G4VDiscreteProcess.hh.
virtual G4VParticleChange* G4VDiscreteProcess::AtRestDoIt | ( | const G4Track & | , | |
const G4Step & | ||||
) | [inline, virtual] |
Implements G4VProcess.
Reimplemented in G4eplusPolarizedAnnihilation, G4eplusAnnihilation, and G4HadronStoppingProcess.
Definition at line 97 of file G4VDiscreteProcess.hh.
virtual G4double G4VDiscreteProcess::AtRestGetPhysicalInteractionLength | ( | const G4Track & | , | |
G4ForceCondition * | ||||
) | [inline, virtual] |
Implements G4VProcess.
Reimplemented in G4eplusPolarizedAnnihilation, G4eplusAnnihilation, and G4HadronStoppingProcess.
Definition at line 91 of file G4VDiscreteProcess.hh.
virtual G4double G4VDiscreteProcess::GetMeanFreePath | ( | const G4Track & | aTrack, | |
G4double | previousStepSize, | |||
G4ForceCondition * | condition | |||
) | [protected, pure virtual] |
Implemented in G4UnknownDecay, G4VAdjointReverseReaction, G4AnnihiToMuPair, G4GammaConversionToMuons, G4VLowEnergyDiscretePhotonProcess, G4eplusPolarizedAnnihilation, G4PolarizedCompton, G4VEmProcess, G4ForwardXrayTR, G4SynchrotronRadiation, G4SynchrotronRadiationInMat, G4TransitionRadiation, G4VTransitionRadiation, G4VXTRenergyLoss, G4HadronicProcess, G4QAtomicElectronScattering, G4QCoherentChargeExchange, G4QDiffraction, G4QDiscProcessMixer, G4QElastic, G4QInelastic, G4QIonIonElastic, G4QLowEnergy, G4QNGamma, G4QSynchRad, G4OpAbsorption, G4OpBoundaryProcess, G4OpMieHG, G4OpRayleigh, G4OpWLS, and G4NeutronKiller.
Referenced by G4VLowEnergyTestableDiscreteProcess::DumpMeanFreePath(), and PostStepGetPhysicalInteractionLength().
G4VParticleChange * G4VDiscreteProcess::PostStepDoIt | ( | const G4Track & | , | |
const G4Step & | ||||
) | [virtual] |
Implements G4VProcess.
Reimplemented in G4ErrorTrackLengthTarget, G4VErrorLimitProcess, G4UnknownDecay, G4VAdjointReverseReaction, G4AnnihiToMuPair, G4GammaConversionToMuons, G4VEmProcess, G4ForwardXrayTR, G4SynchrotronRadiation, G4SynchrotronRadiationInMat, G4TransitionRadiation, G4VTransitionRadiation, G4VXTRenergyLoss, G4HadronicProcess, G4QAtomicElectronScattering, G4QCoherentChargeExchange, G4QDiffraction, G4QDiscProcessMixer, G4QElastic, G4QInelastic, G4QIonIonElastic, G4QLowEnergy, G4QNGamma, G4QSynchRad, G4HadronElasticProcess, G4WHadronElasticProcess, G4OpAbsorption, G4OpBoundaryProcess, G4OpMieHG, G4OpRayleigh, G4OpWLS, and G4NeutronKiller.
Definition at line 112 of file G4VDiscreteProcess.cc.
References G4VProcess::ClearNumberOfInteractionLengthLeft(), and G4VProcess::pParticleChange.
Referenced by G4VXTRenergyLoss::PostStepDoIt(), G4SynchrotronRadiationInMat::PostStepDoIt(), G4SynchrotronRadiation::PostStepDoIt(), G4QSynchRad::PostStepDoIt(), G4QNGamma::PostStepDoIt(), G4QLowEnergy::PostStepDoIt(), G4QIonIonElastic::PostStepDoIt(), G4QInelastic::PostStepDoIt(), G4QElastic::PostStepDoIt(), G4QDiscProcessMixer::PostStepDoIt(), G4QDiffraction::PostStepDoIt(), G4QCoherentChargeExchange::PostStepDoIt(), G4QAtomicElectronScattering::PostStepDoIt(), G4OpWLS::PostStepDoIt(), G4OpRayleigh::PostStepDoIt(), G4OpMieHG::PostStepDoIt(), G4OpBoundaryProcess::PostStepDoIt(), G4OpAbsorption::PostStepDoIt(), G4GammaConversionToMuons::PostStepDoIt(), G4ForwardXrayTR::PostStepDoIt(), and G4AnnihiToMuPair::PostStepDoIt().
00116 { 00117 // clear NumberOfInteractionLengthLeft 00118 ClearNumberOfInteractionLengthLeft(); 00119 00120 return pParticleChange; 00121 }
G4double G4VDiscreteProcess::PostStepGetPhysicalInteractionLength | ( | const G4Track & | track, | |
G4double | previousStepSize, | |||
G4ForceCondition * | condition | |||
) | [virtual] |
Implements G4VProcess.
Reimplemented in G4ErrorMagFieldLimitProcess, G4ErrorStepLengthLimitProcess, G4ErrorTrackLengthTarget, G4VErrorLimitProcess, G4UnknownDecay, G4eplusPolarizedAnnihilation, G4PolarizedCompton, G4VEmProcess, G4QDiscProcessMixer, G4HadronStoppingProcess, and G4NeutronKiller.
Definition at line 71 of file G4VDiscreteProcess.cc.
References G4VProcess::currentInteractionLength, DBL_MAX, G4DynamicParticle::DumpInfo(), G4cout, G4endl, G4Track::GetDynamicParticle(), G4Track::GetMaterial(), GetMeanFreePath(), G4Material::GetName(), G4VProcess::GetProcessName(), NotForced, G4VProcess::ResetNumberOfInteractionLengthLeft(), G4VProcess::SubtractNumberOfInteractionLengthLeft(), G4VProcess::theNumberOfInteractionLengthLeft, and G4VProcess::verboseLevel.
00076 { 00077 if ( (previousStepSize < 0.0) || (theNumberOfInteractionLengthLeft<=0.0)) { 00078 // beggining of tracking (or just after DoIt of this process) 00079 ResetNumberOfInteractionLengthLeft(); 00080 } else if ( previousStepSize > 0.0) { 00081 // subtract NumberOfInteractionLengthLeft 00082 SubtractNumberOfInteractionLengthLeft(previousStepSize); 00083 } else { 00084 // zero step 00085 // DO NOTHING 00086 } 00087 00088 // condition is set to "Not Forced" 00089 *condition = NotForced; 00090 00091 // get mean free path 00092 currentInteractionLength = GetMeanFreePath(track, previousStepSize, condition); 00093 00094 G4double value; 00095 if (currentInteractionLength <DBL_MAX) { 00096 value = theNumberOfInteractionLengthLeft * currentInteractionLength; 00097 } else { 00098 value = DBL_MAX; 00099 } 00100 #ifdef G4VERBOSE 00101 if (verboseLevel>1){ 00102 G4cout << "G4VDiscreteProcess::PostStepGetPhysicalInteractionLength "; 00103 G4cout << "[ " << GetProcessName() << "]" <<G4endl; 00104 track.GetDynamicParticle()->DumpInfo(); 00105 G4cout << " in Material " << track.GetMaterial()->GetName() <<G4endl; 00106 G4cout << "InteractionLength= " << value/cm <<"[cm] " <<G4endl; 00107 } 00108 #endif 00109 return value; 00110 }