Geant4-11
Data Structures | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
G4ITTransportation Class Reference

#include <G4ITTransportation.hh>

Inheritance diagram for G4ITTransportation:
G4VITProcess G4VProcess G4DNABrownianTransportation

Data Structures

struct  G4ITTransportationState
 

Public Member Functions

virtual G4VParticleChangeAlongStepDoIt (const G4Track &track, const G4Step &stepData)
 
virtual G4double AlongStepGetPhysicalInteractionLength (const G4Track &track, G4double, G4double currentMinimumStep, G4double &currentSafety, G4GPILSelection *selection)
 
G4double AlongStepGPIL (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
 
virtual G4VParticleChangeAtRestDoIt (const G4Track &, const G4Step &)
 
virtual G4double AtRestGetPhysicalInteractionLength (const G4Track &, G4ForceCondition *)
 
G4double AtRestGPIL (const G4Track &track, G4ForceCondition *condition)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void BuildWorkerPhysicsTable (const G4ParticleDefinition &part)
 
virtual void ComputeStep (const G4Track &, const G4Step &, const double timeStep, double &spaceStep)
 
virtual void DumpInfo () const
 
void EnableShortStepOptimisation (G4bool optimise=true)
 
virtual void EndTracking ()
 
 G4ITTransportation (const G4ITTransportation &)
 
 G4ITTransportation (const G4String &aName="ITTransportation", G4int verbosityLevel=0)
 
G4double GetCurrentInteractionLength () const
 
G4double GetInteractionTimeLeft ()
 
const G4VProcessGetMasterProcess () const
 
G4double GetMaxEnergyKilled () const
 
G4double GetNumberOfInteractionLengthLeft () const
 
const G4StringGetPhysicsTableFileName (const G4ParticleDefinition *, const G4String &directory, const G4String &tableName, G4bool ascii=false)
 
G4double GetPILfactor () const
 
size_t GetProcessID () const
 
virtual const G4ProcessManagerGetProcessManager ()
 
const G4StringGetProcessName () const
 
G4shared_ptr< G4ProcessState_LockGetProcessState ()
 
G4int GetProcessSubType () const
 
G4ProcessType GetProcessType () const
 
G4PropagatorInFieldGetPropagatorInField ()
 
G4double GetSumEnergyKilled () const
 
G4double GetThresholdImportantEnergy () const
 
G4int GetThresholdTrials () const
 
G4double GetThresholdWarningEnergy () const
 
G4double GetTotalNumberOfInteractionLengthTraversed () const
 
G4int GetVerboseLevel () const
 
G4bool isAlongStepDoItIsEnabled () const
 
virtual G4bool IsApplicable (const G4ParticleDefinition &)
 
G4bool isAtRestDoItIsEnabled () const
 
G4bool isPostStepDoItIsEnabled () const
 
G4bool IsStepLimitedByGeometry ()
 
G4bool operator!= (const G4VITProcess &right) const
 
G4bool operator!= (const G4VProcess &right) const
 
G4bool operator== (const G4VITProcess &right) const
 
G4bool operator== (const G4VProcess &right) const
 
virtual G4VParticleChangePostStepDoIt (const G4Track &track, const G4Step &)
 
virtual G4double PostStepGetPhysicalInteractionLength (const G4Track &, G4double, G4ForceCondition *pForceCond)
 
G4double PostStepGPIL (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
virtual void PreparePhysicsTable (const G4ParticleDefinition &)
 
virtual void PrepareWorkerPhysicsTable (const G4ParticleDefinition &)
 
virtual void ProcessDescription (std::ostream &outfile) const
 
G4bool ProposesTimeStep () const
 
void ResetKilledStatistics (G4int report=1)
 
virtual void ResetNumberOfInteractionLengthLeft ()
 
void ResetProcessState ()
 
virtual G4bool RetrievePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
virtual void SetMasterProcess (G4VProcess *masterP)
 
void SetPILfactor (G4double value)
 
virtual void SetProcessManager (const G4ProcessManager *)
 
void SetProcessState (G4shared_ptr< G4ProcessState_Lock > aProcInfo)
 
void SetProcessSubType (G4int)
 
void SetProcessType (G4ProcessType)
 
void SetPropagatorInField (G4PropagatorInField *pFieldPropagator)
 
void SetThresholdImportantEnergy (G4double newEnImp)
 
void SetThresholdTrials (G4int newMaxTrials)
 
void SetThresholdWarningEnergy (G4double newEnWarn)
 
void SetVerboseLevel (G4int verboseLevel)
 
virtual void StartTracking (G4Track *aTrack)
 
virtual G4bool StorePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
virtual ~G4ITTransportation ()
 

Static Public Member Functions

static const size_t & GetMaxProcessIndex ()
 
static const G4StringGetProcessTypeName (G4ProcessType)
 

Protected Member Functions

virtual void ClearInteractionTimeLeft ()
 
virtual void ClearNumberOfInteractionLengthLeft ()
 
void CreateInfo ()
 
G4bool DoesGlobalFieldExist ()
 
template<typename T >
T * GetState ()
 
G4bool InstantiateProcessState ()
 
void RetrieveProcessInfo ()
 
void SetInstantiateProcessState (G4bool flag)
 
virtual void SubtractNumberOfInteractionLengthLeft (G4double previousStepSize)
 

Protected Attributes

G4ParticleChange aParticleChange
 
const G4ProcessManageraProcessManager = nullptr
 
G4bool enableAlongStepDoIt = true
 
G4bool enableAtRestDoIt = true
 
G4bool enablePostStepDoIt = true
 
G4PropagatorInFieldfFieldPropagator
 
G4ITNavigator * fLinearNavigator
 
G4double fMaxEnergyKilled
 
G4ParticleChangeForTransport fParticleChange
 
G4bool fProposesTimeStep
 
G4ITSafetyHelperfpSafetyHelper
 
G4shared_ptr< G4ProcessStatefpState
 
G4bool fShortStepOptimisation
 
G4double fSumEnergyKilled
 
G4double fThreshold_Important_Energy
 
G4double fThreshold_Warning_Energy
 
G4int fThresholdTrials
 
G4double fUnimportant_Energy
 
G4int fVerboseLevel
 
G4VParticleChangepParticleChange = nullptr
 
G4double theInitialNumberOfInteractionLength = -1.0
 
G4String thePhysicsTableFileName
 
G4double thePILfactor = 1.0
 
G4String theProcessName
 
G4int theProcessSubType = -1
 
G4ProcessType theProcessType = fNotDefined
 
G4int verboseLevel = 0
 

Private Member Functions

G4ITTransportationoperator= (const G4ITTransportation &)
 

Private Attributes

G4doublecurrentInteractionLength
 
G4bool fInstantiateProcessState
 
static size_t * fNbProcess = 0
 
size_t fProcessID
 
G4ProcessTablefProcessTable = nullptr
 
G4VProcessmasterProcessShadow = nullptr
 
G4doubletheInteractionTimeLeft
 
G4doubletheNumberOfInteractionLengthLeft
 

Detailed Description

Definition at line 73 of file G4ITTransportation.hh.

Constructor & Destructor Documentation

◆ G4ITTransportation() [1/2]

G4ITTransportation::G4ITTransportation ( const G4String aName = "ITTransportation",
G4int  verbosityLevel = 0 
)

Definition at line 96 of file G4ITTransportation.cc.

96 :
101 fUnimportant_Energy(1 * MeV), // Not used
102 fSumEnergyKilled(0.0),
103 fMaxEnergyKilled(0.0),
104 fShortStepOptimisation(false), // Old default: true (=fast short steps)
105 fVerboseLevel(verbose)
106{
108 G4TransportationManager* transportMgr;
110 G4ITTransportationManager* ITtransportMgr;
112 fLinearNavigator = ITtransportMgr->GetNavigatorForTracking();
113 fFieldPropagator = transportMgr->GetPropagatorInField();
114 fpSafetyHelper = ITtransportMgr->GetSafetyHelper(); // New
115
116 // Cannot determine whether a field exists here, as it would
117 // depend on the relative order of creating the detector's
118 // field and this process. That order is not guaranted.
119 // Instead later the method DoesGlobalFieldExist() is called
120
121 enableAtRestDoIt = false;
122 enableAlongStepDoIt = true;
123 enablePostStepDoIt = true;
128
129 G4VITProcess::fpState.reset(new G4ITTransportationState());
130 /*
131 if(fTransportationState == 0)
132 {
133 G4cout << "KILL in G4ITTransportation::G4ITTransportation" << G4endl;
134 abort();
135 }
136 */
137}
@ fLowEnergyTransportation
@ fTransportation
static constexpr double MeV
Definition: G4SIunits.hh:200
static G4ITTransportationManager * GetTransportationManager()
G4ITNavigator * GetNavigatorForTracking() const
G4ITSafetyHelper * GetSafetyHelper() const
G4ParticleChangeForTransport fParticleChange
G4double fThreshold_Important_Energy
void SetInstantiateProcessState(G4bool flag)
G4PropagatorInField * fFieldPropagator
G4ITSafetyHelper * fpSafetyHelper
G4ITNavigator * fLinearNavigator
static G4TransportationManager * GetTransportationManager()
G4PropagatorInField * GetPropagatorInField() const
void SetInstantiateProcessState(G4bool flag)
G4shared_ptr< G4ProcessState > fpState
G4VITProcess(const G4String &name, G4ProcessType type=fNotDefined)
Definition: G4VITProcess.cc:34
G4bool enableAtRestDoIt
Definition: G4VProcess.hh:359
G4bool enableAlongStepDoIt
Definition: G4VProcess.hh:360
void SetProcessSubType(G4int)
Definition: G4VProcess.hh:406
G4bool enablePostStepDoIt
Definition: G4VProcess.hh:361
G4VParticleChange * pParticleChange
Definition: G4VProcess.hh:321

References G4VProcess::enableAlongStepDoIt, G4VProcess::enableAtRestDoIt, G4VProcess::enablePostStepDoIt, fFieldPropagator, fInstantiateProcessState, fLinearNavigator, fLowEnergyTransportation, fParticleChange, fpSafetyHelper, G4VITProcess::fpState, G4ITTransportationManager::GetNavigatorForTracking(), G4TransportationManager::GetPropagatorInField(), G4ITTransportationManager::GetSafetyHelper(), G4TransportationManager::GetTransportationManager(), G4ITTransportationManager::GetTransportationManager(), G4VProcess::pParticleChange, SetInstantiateProcessState(), G4VITProcess::SetInstantiateProcessState(), and G4VProcess::SetProcessSubType().

◆ ~G4ITTransportation()

G4ITTransportation::~G4ITTransportation ( )
virtual

Definition at line 215 of file G4ITTransportation.cc.

216{
217#ifdef G4VERBOSE
218 if ((fVerboseLevel > 0) && (fSumEnergyKilled > 0.0))
219 {
220 G4cout << " G4ITTransportation: Statistics for looping particles "
221 << G4endl;
222 G4cout << " Sum of energy of loopers killed: "
224 G4cout << " Max energy of loopers killed: "
226 }
227#endif
228}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout

References fMaxEnergyKilled, fSumEnergyKilled, fVerboseLevel, G4cout, and G4endl.

◆ G4ITTransportation() [2/2]

G4ITTransportation::G4ITTransportation ( const G4ITTransportation right)

Definition at line 139 of file G4ITTransportation.cc.

139 :
140 G4VITProcess(right)
141{
142 // Copy attributes
151
152 // Setup Navigators
153 G4TransportationManager* transportMgr;
155 G4ITTransportationManager* ITtransportMgr;
157 fLinearNavigator = ITtransportMgr->GetNavigatorForTracking();
158 fFieldPropagator = transportMgr->GetPropagatorInField();
159 fpSafetyHelper = ITtransportMgr->GetSafetyHelper(); // New
160
161 // Cannot determine whether a field exists here, as it would
162 // depend on the relative order of creating the detector's
163 // field and this process. That order is not guaranted.
164 // Instead later the method DoesGlobalFieldExist() is called
165
166 enableAtRestDoIt = false;
167 enableAlongStepDoIt = true;
168 enablePostStepDoIt = true;
169
174}

References G4VProcess::enableAlongStepDoIt, G4VProcess::enableAtRestDoIt, G4VProcess::enablePostStepDoIt, fFieldPropagator, fInstantiateProcessState, fLinearNavigator, fMaxEnergyKilled, fParticleChange, fpSafetyHelper, fShortStepOptimisation, fSumEnergyKilled, fThreshold_Important_Energy, fThreshold_Warning_Energy, fThresholdTrials, fUnimportant_Energy, fVerboseLevel, G4ITTransportationManager::GetNavigatorForTracking(), G4TransportationManager::GetPropagatorInField(), G4ITTransportationManager::GetSafetyHelper(), G4TransportationManager::GetTransportationManager(), G4ITTransportationManager::GetTransportationManager(), G4VProcess::pParticleChange, SetInstantiateProcessState(), and G4VITProcess::SetInstantiateProcessState().

Member Function Documentation

◆ AlongStepDoIt()

G4VParticleChange * G4ITTransportation::AlongStepDoIt ( const G4Track track,
const G4Step stepData 
)
virtual

!!!!!!! A REVOIR !!!!


Implements G4VProcess.

Reimplemented in G4DNABrownianTransportation.

Definition at line 689 of file G4ITTransportation.cc.

691{
692
693#if defined (DEBUG_MEM)
694 MemStat mem_first, mem_second, mem_diff;
695#endif
696
697#if defined (DEBUG_MEM)
698 mem_first = MemoryUsage();
699#endif
700
702
703 // G4cout << "G4ITTransportation::AlongStepDoIt" << G4endl;
704 // set pdefOpticalPhoton
705 // Andrea Dotti: the following statement should be in a single line:
706 // G4-MT transformation tools get confused if statement spans two lines
707 // If needed contact: adotti@slac.stanford.edu
708 static G4ThreadLocal G4ParticleDefinition* pdefOpticalPhoton = 0;
709 if (!pdefOpticalPhoton) pdefOpticalPhoton =
710 G4ParticleTable::GetParticleTable()->FindParticle("opticalphoton");
711
712 static G4ThreadLocal G4int noCalls = 0;
713 noCalls++;
714
715 fParticleChange.Initialize(track);
716
717 // Code for specific process
718 //
719 fParticleChange.ProposePosition(State(fTransportEndPosition));
720 fParticleChange.ProposeMomentumDirection(State(fTransportEndMomentumDir));
721 fParticleChange.ProposeEnergy(State(fTransportEndKineticEnergy));
722 fParticleChange.SetMomentumChanged(State(fMomentumChanged));
723
724 fParticleChange.ProposePolarization(State(fTransportEndSpin));
725
726 G4double deltaTime = 0.0;
727
728 // Calculate Lab Time of Flight (ONLY if field Equations used it!)
729 // G4double endTime = State(fCandidateEndGlobalTime);
730 // G4double delta_time = endTime - startTime;
731
732 G4double startTime = track.GetGlobalTime();
736 if (State(fEndGlobalTimeComputed) == false)
737 {
738 // The time was not integrated .. make the best estimate possible
739 //
740 G4double initialVelocity = stepData.GetPreStepPoint()->GetVelocity();
741 G4double stepLength = track.GetStepLength();
742
743 deltaTime = 0.0; // in case initialVelocity = 0
744 if (track.GetParticleDefinition() == pdefOpticalPhoton)
745 {
746 // For only Optical Photon, final velocity is used
747 double finalVelocity = track.CalculateVelocityForOpticalPhoton();
748 fParticleChange.ProposeVelocity(finalVelocity);
749 deltaTime = stepLength / finalVelocity;
750 }
751 else if (initialVelocity > 0.0)
752 {
753 deltaTime = stepLength / initialVelocity;
754 }
755
756 State(fCandidateEndGlobalTime) = startTime + deltaTime;
757 }
758 else
759 {
760 deltaTime = State(fCandidateEndGlobalTime) - startTime;
761 }
762
763 fParticleChange.ProposeGlobalTime(State(fCandidateEndGlobalTime));
764 fParticleChange.ProposeLocalTime(track.GetLocalTime() + deltaTime);
765 /*
766 // Now Correct by Lorentz factor to get delta "proper" Time
767
768 G4double restMass = track.GetDynamicParticle()->GetMass() ;
769 G4double deltaProperTime = deltaTime*( restMass/track.GetTotalEnergy() ) ;
770
771 fParticleChange.ProposeProperTime(track.GetProperTime() + deltaProperTime) ;
772 */
773
774 fParticleChange.ProposeTrueStepLength(track.GetStepLength());
775
778
779 // If the particle is caught looping or is stuck (in very difficult
780 // boundaries) in a magnetic field (doing many steps)
781 // THEN this kills it ...
782 //
783 if (State(fParticleIsLooping))
784 {
785 G4double endEnergy = State(fTransportEndKineticEnergy);
786
787 if ((endEnergy < fThreshold_Important_Energy) || (State(fNoLooperTrials)
789 {
790 // Kill the looping particle
791 //
792 // G4cout << "G4ITTransportation will killed the molecule"<< G4endl;
794
795 // 'Bare' statistics
796 fSumEnergyKilled += endEnergy;
797 if (endEnergy > fMaxEnergyKilled)
798 {
799 fMaxEnergyKilled = endEnergy;
800 }
801
802#ifdef G4VERBOSE
803 if ((fVerboseLevel > 1) || (endEnergy > fThreshold_Warning_Energy))
804 {
805 G4cout
806 << " G4ITTransportation is killing track that is looping or stuck "
807 << G4endl<< " This track has " << track.GetKineticEnergy() / MeV
808 << " MeV energy." << G4endl;
809 G4cout << " Number of trials = " << State(fNoLooperTrials)
810 << " No of calls to AlongStepDoIt = " << noCalls
811 << G4endl;
812 }
813#endif
814 State(fNoLooperTrials) = 0;
815 }
816 else
817 {
818 State(fNoLooperTrials)++;
819#ifdef G4VERBOSE
820 if ((fVerboseLevel > 2))
821 {
822 G4cout << " G4ITTransportation::AlongStepDoIt(): Particle looping - "
823 << " Number of trials = " << State(fNoLooperTrials)
824 << " No of calls to = " << noCalls << G4endl;
825 }
826#endif
827 }
828 }
829 else
830 {
831 State(fNoLooperTrials)=0;
832 }
833
834 // Another (sometimes better way) is to use a user-limit maximum Step size
835 // to alleviate this problem ..
836
837 // Introduce smooth curved trajectories to particle-change
838 //
841
842#if defined (DEBUG_MEM)
843 mem_second = MemoryUsage();
844 mem_diff = mem_second-mem_first;
845 G4cout << "\t || MEM || End of G4ITTransportation::AlongStepDoIt, diff is: "
846 << mem_diff << G4endl;
847#endif
848
849 return &fParticleChange;
850}
#define State(theXInfo)
#define PrepareState()
@ fStopAndKill
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
void SetPointerToVectorOfAuxiliaryPoints(std::vector< G4ThreeVector > *vec)
void ProposeLocalTime(G4double t)
void ProposeVelocity(G4double finalVelocity)
void ProposeGlobalTime(G4double t)
std::vector< G4ThreeVector > * GimmeTrajectoryVectorAndForgetIt() const
G4double GetVelocity() const
G4StepPoint * GetPreStepPoint() const
void ProposeTrackStatus(G4TrackStatus status)
void ProposeTrueStepLength(G4double truePathLength)
MemStat MemoryUsage()
Definition: G4MemStat.cc:55
#define G4ThreadLocal
Definition: tls.hh:77

References G4Track::CalculateVelocityForOpticalPhoton(), fFieldPropagator, G4ParticleTable::FindParticle(), fMaxEnergyKilled, fParticleChange, fStopAndKill, fSumEnergyKilled, fThreshold_Important_Energy, fThreshold_Warning_Energy, fThresholdTrials, fVerboseLevel, G4cout, G4endl, G4ThreadLocal, G4Track::GetGlobalTime(), G4Track::GetKineticEnergy(), G4Track::GetLocalTime(), G4Track::GetParticleDefinition(), G4ParticleTable::GetParticleTable(), G4Step::GetPreStepPoint(), G4Track::GetStepLength(), G4StepPoint::GetVelocity(), G4PropagatorInField::GimmeTrajectoryVectorAndForgetIt(), G4ParticleChangeForTransport::Initialize(), G4MemStat::MemoryUsage(), MeV, PrepareState, G4ParticleChange::ProposeEnergy(), G4ParticleChange::ProposeGlobalTime(), G4ParticleChange::ProposeLocalTime(), G4ParticleChange::ProposeMomentumDirection(), G4ParticleChange::ProposePolarization(), G4ParticleChange::ProposePosition(), G4VParticleChange::ProposeTrackStatus(), G4VParticleChange::ProposeTrueStepLength(), G4ParticleChange::ProposeVelocity(), G4ParticleChangeForTransport::SetMomentumChanged(), G4ParticleChangeForTransport::SetPointerToVectorOfAuxiliaryPoints(), and State.

Referenced by G4DNABrownianTransportation::AlongStepDoIt().

◆ AlongStepGetPhysicalInteractionLength()

G4double G4ITTransportation::AlongStepGetPhysicalInteractionLength ( const G4Track track,
G4double  ,
G4double  currentMinimumStep,
G4double currentSafety,
G4GPILSelection selection 
)
virtual

Implements G4VProcess.

Reimplemented in G4DNABrownianTransportation.

Definition at line 252 of file G4ITTransportation.cc.

258{
260 G4double geometryStepLength(-1.0), newSafety(-1.0);
261
262 State(fParticleIsLooping) = false;
263 State(fEndGlobalTimeComputed) = false;
264 State(fGeometryLimitedStep) = false;
265
266 // Initial actions moved to StartTrack()
267 // --------------------------------------
268 // Note: in case another process changes touchable handle
269 // it will be necessary to add here (for all steps)
270 // State(fCurrentTouchableHandle) = track.GetTouchableHandle();
271
272 // GPILSelection is set to defaule value of CandidateForSelection
273 // It is a return value
274 //
275 *selection = CandidateForSelection;
276
277 // Get initial Energy/Momentum of the track
278 //
279 const G4DynamicParticle* pParticle = track.GetDynamicParticle();
280// const G4ParticleDefinition* pParticleDef = pParticle->GetDefinition() ;
281 G4ThreeVector startMomentumDir = pParticle->GetMomentumDirection();
282 G4ThreeVector startPosition = track.GetPosition();
283
284 // G4double theTime = track.GetGlobalTime() ;
285
286 // The Step Point safety can be limited by other geometries and/or the
287 // assumptions of any process - it's not always the geometrical safety.
288 // We calculate the starting point's isotropic safety here.
289 //
290 G4ThreeVector OriginShift = startPosition - State(fPreviousSftOrigin);
291 G4double MagSqShift = OriginShift.mag2();
292 if (MagSqShift >= sqr(State(fPreviousSafety)))
293 {
294 currentSafety = 0.0;
295 }
296 else
297 {
298 currentSafety = State(fPreviousSafety) - std::sqrt(MagSqShift);
299 }
300
301 // Is the particle charged ?
302 //
303 G4double particleCharge = pParticle->GetCharge();
304
305 // There is no need to locate the current volume. It is Done elsewhere:
306 // On track construction
307 // By the tracking, after all AlongStepDoIts, in "Relocation"
308
309 // Check whether the particle have an (EM) field force exerting upon it
310 //
311 G4FieldManager* fieldMgr = 0;
312 G4bool fieldExertsForce = false;
313 if ((particleCharge != 0.0))
314 {
316 if (fieldMgr != 0)
317 {
318 // Message the field Manager, to configure it for this track
319 fieldMgr->ConfigureForTrack(&track);
320 // Moved here, in order to allow a transition
321 // from a zero-field status (with fieldMgr->(field)0
322 // to a finite field status
323
324 // If the field manager has no field, there is no field !
325 fieldExertsForce = (fieldMgr->GetDetectorField() != 0);
326 }
327 }
328
329 // G4cout << " G4Transport: field exerts force= " << fieldExertsForce
330 // << " fieldMgr= " << fieldMgr << G4endl;
331
332 // Choose the calculation of the transportation: Field or not
333 //
334 if (!fieldExertsForce)
335 {
336 G4double linearStepLength;
337 if (fShortStepOptimisation && (currentMinimumStep <= currentSafety))
338 {
339 // The Step is guaranteed to be taken
340 //
341 geometryStepLength = currentMinimumStep;
342 State(fGeometryLimitedStep) = false;
343 }
344 else
345 {
346 // Find whether the straight path intersects a volume
347 //
348 // fLinearNavigator->SetNavigatorState(GetIT(track)->GetTrackingInfo()->GetNavigatorState());
349 linearStepLength = fLinearNavigator->ComputeStep(startPosition,
350 startMomentumDir,
351 currentMinimumStep,
352 newSafety);
353
354// G4cout << "linearStepLength : " << G4BestUnit(linearStepLength,"Length")
355// << " | currentMinimumStep: " << currentMinimumStep
356// << " | trackID: " << track.GetTrackID() << G4endl;
357
358 // Remember last safety origin & value.
359 //
360 State(fPreviousSftOrigin) = startPosition;
361 State(fPreviousSafety) = newSafety;
362
363 G4TrackStateManager& trackStateMan = GetIT(track)->GetTrackingInfo()
365 fpSafetyHelper->LoadTrackState(trackStateMan);
366 // fpSafetyHelper->SetTrackState(state);
368 State(fTransportEndPosition));
370
371 // The safety at the initial point has been re-calculated:
372 //
373 currentSafety = newSafety;
374
375 State(fGeometryLimitedStep) = (linearStepLength <= currentMinimumStep);
376 if (State(fGeometryLimitedStep))
377 {
378 // The geometry limits the Step size (an intersection was found.)
379 geometryStepLength = linearStepLength;
380 }
381 else
382 {
383 // The full Step is taken.
384 geometryStepLength = currentMinimumStep;
385 }
386 }
387 State(fEndPointDistance) = geometryStepLength;
388
389 // Calculate final position
390 //
391 State(fTransportEndPosition) = startPosition
392 + geometryStepLength * startMomentumDir;
393
394 // Momentum direction, energy and polarisation are unchanged by transport
395 //
396 State(fTransportEndMomentumDir) = startMomentumDir;
397 State(fTransportEndKineticEnergy) = track.GetKineticEnergy();
398 State(fTransportEndSpin) = track.GetPolarization();
399 State(fParticleIsLooping) = false;
400 State(fMomentumChanged) = false;
401 State(fEndGlobalTimeComputed) = true;
402 State(theInteractionTimeLeft) = State(fEndPointDistance)
403 / track.GetVelocity();
404 State(fCandidateEndGlobalTime) = State(theInteractionTimeLeft)
405 + track.GetGlobalTime();
406/*
407 G4cout << "track.GetVelocity() : "
408 << track.GetVelocity() << G4endl;
409 G4cout << "State(endpointDistance) : "
410 << G4BestUnit(State(endpointDistance),"Length") << G4endl;
411 G4cout << "State(theInteractionTimeLeft) : "
412 << G4BestUnit(State(theInteractionTimeLeft),"Time") << G4endl;
413 G4cout << "track.GetGlobalTime() : "
414 << G4BestUnit(track.GetGlobalTime(),"Time") << G4endl;
415*/
416 }
417 else // A field exerts force
418 {
419
420 G4ExceptionDescription exceptionDescription;
421 exceptionDescription
422 << "ITTransportation does not support external fields.";
423 exceptionDescription
424 << " If you are dealing with a tradiational MC simulation, ";
425 exceptionDescription << "please use G4Transportation.";
426
427 G4Exception("G4ITTransportation::AlongStepGetPhysicalInteractionLength",
428 "NoExternalFieldSupport", FatalException, exceptionDescription);
429 /*
430 G4double momentumMagnitude = pParticle->GetTotalMomentum() ;
431 // G4ThreeVector EndUnitMomentum ;
432 G4double lengthAlongCurve ;
433 G4double restMass = pParticleDef->GetPDGMass() ;
434
435 fFieldPropagator->SetChargeMomentumMass( particleCharge, // in e+ units
436 momentumMagnitude, // in Mev/c
437 restMass ) ;
438
439 G4ThreeVector spin = track.GetPolarization() ;
440 G4FieldTrack aFieldTrack = G4FieldTrack( startPosition,
441 track.GetMomentumDirection(),
442 0.0,
443 track.GetKineticEnergy(),
444 restMass,
445 track.GetVelocity(),
446 track.GetGlobalTime(), // Lab.
447 track.GetProperTime(), // Part.
448 &spin ) ;
449 if( currentMinimumStep > 0 )
450 {
451 // Do the Transport in the field (non recti-linear)
452 //
453 lengthAlongCurve = fFieldPropagator->ComputeStep( aFieldTrack,
454 currentMinimumStep,
455 currentSafety,
456 track.GetVolume() ) ;
457 State(fGeometryLimitedStep)= lengthAlongCurve < currentMinimumStep;
458 if( State(fGeometryLimitedStep) )
459 {
460 geometryStepLength = lengthAlongCurve ;
461 }
462 else
463 {
464 geometryStepLength = currentMinimumStep ;
465 }
466
467 // Remember last safety origin & value.
468 //
469 State(fPreviousSftOrigin) = startPosition ;
470 State(fPreviousSafety) = currentSafety ;
471 fpSafetyHelper->SetCurrentSafety( newSafety, startPosition);
472 }
473 else
474 {
475 geometryStepLength = lengthAlongCurve= 0.0 ;
476 State(fGeometryLimitedStep) = false ;
477 }
478
479 // Get the End-Position and End-Momentum (Dir-ection)
480 //
481 State(fTransportEndPosition) = aFieldTrack.GetPosition() ;
482
483 // Momentum: Magnitude and direction can be changed too now ...
484 //
485 State(fMomentumChanged) = true ;
486 State(fTransportEndMomentumDir) = aFieldTrack.GetMomentumDir() ;
487
488 State(fTransportEndKineticEnergy) = aFieldTrack.GetKineticEnergy() ;
489
490 if( fFieldPropagator->GetCurrentFieldManager()->DoesFieldChangeEnergy() )
491 {
492 // If the field can change energy, then the time must be integrated
493 // - so this should have been updated
494 //
495 State(fCandidateEndGlobalTime) = aFieldTrack.GetLabTimeOfFlight();
496 State(fEndGlobalTimeComputed) = true;
497
498 State(theInteractionTimeLeft) = State(fCandidateEndGlobalTime) -
499 track.GetGlobalTime() ;
500
501 // was ( State(fCandidateEndGlobalTime) != track.GetGlobalTime() );
502 // a cleaner way is to have FieldTrack knowing whether time is updated.
503 }
504 else
505 {
506 // The energy should be unchanged by field transport,
507 // - so the time changed will be calculated elsewhere
508 //
509 State(fEndGlobalTimeComputed) = false;
510
511 // Check that the integration preserved the energy
512 // - and if not correct this!
513 G4double startEnergy= track.GetKineticEnergy();
514 G4double endEnergy= State(fTransportEndKineticEnergy);
515
516 static G4int no_inexact_steps=0, no_large_ediff;
517 G4double absEdiff = std::fabs(startEnergy- endEnergy);
518 if( absEdiff > perMillion * endEnergy )
519 {
520 no_inexact_steps++;
521 // Possible statistics keeping here ...
522 }
523 #ifdef G4VERBOSE
524 if( fVerboseLevel > 1 )
525 {
526 if( std::fabs(startEnergy- endEnergy) > perThousand * endEnergy )
527 {
528 static G4int no_warnings= 0, warnModulo=1, moduloFactor= 10;
529 no_large_ediff ++;
530 if( (no_large_ediff% warnModulo) == 0 )
531 {
532 no_warnings++;
533 G4cout << "WARNING - G4Transportation::AlongStepGetPIL() "
534 << " Energy change in Step is above 1^-3 relative value. " << G4endl
535 << " Relative change in 'tracking' step = "
536 << std::setw(15) << (endEnergy-startEnergy)/startEnergy << G4endl
537 << " Starting E= " << std::setw(12) << startEnergy / MeV << " MeV "
538 << G4endl
539 << " Ending E= " << std::setw(12) << endEnergy / MeV << " MeV "
540 << G4endl;
541 G4cout << " Energy has been corrected -- however, review"
542 << " field propagation parameters for accuracy." << G4endl;
543 if( (fVerboseLevel > 2 ) || (no_warnings<4) ||
544 (no_large_ediff == warnModulo * moduloFactor) )
545 {
546 G4cout << " These include EpsilonStepMax(/Min) in G4FieldManager "
547 << " which determine fractional error per step for integrated quantities. "
548 << G4endl
549 << " Note also the influence of the permitted number of integration steps."
550 << G4endl;
551 }
552 G4cerr << "ERROR - G4Transportation::AlongStepGetPIL()" << G4endl
553 << " Bad 'endpoint'. Energy change detected"
554 << " and corrected. "
555 << " Has occurred already "
556 << no_large_ediff << " times." << G4endl;
557 if( no_large_ediff == warnModulo * moduloFactor )
558 {
559 warnModulo *= moduloFactor;
560 }
561 }
562 }
563 } // end of if (fVerboseLevel)
564 #endif
565 // Correct the energy for fields that conserve it
566 // This - hides the integration error
567 // - but gives a better physical answer
568 State(fTransportEndKineticEnergy)= track.GetKineticEnergy();
569 }
570
571 State(fTransportEndSpin) = aFieldTrack.GetSpin();
572 State(fParticleIsLooping) = fFieldPropagator->IsParticleLooping() ;
573 State(endpointDistance) = (State(fTransportEndPosition) -
574 startPosition).mag() ;
575 // State(theInteractionTimeLeft) =
576 track.GetVelocity()/State(endpointDistance) ;
577 */
578 }
579
580 // If we are asked to go a step length of 0, and we are on a boundary
581 // then a boundary will also limit the step -> we must flag this.
582 //
583 if (currentMinimumStep == 0.0)
584 {
585 if (currentSafety == 0.0)
586 {
587 State(fGeometryLimitedStep) = true;
588// G4cout << "!!!! Safety is NULL, on the Boundary !!!!!" << G4endl;
589// G4cout << " Track position : " << track.GetPosition() /nanometer
590// << G4endl;
591 }
592 }
593
594 // Update the safety starting from the end-point,
595 // if it will become negative at the end-point.
596 //
597 if (currentSafety < State(fEndPointDistance))
598 {
599 // if( particleCharge == 0.0 )
600 // G4cout << " Avoiding call to ComputeSafety : charge = 0.0 " << G4endl;
601
602 if (particleCharge != 0.0)
603 {
604
605 G4double endSafety = fLinearNavigator->ComputeSafety(
606 State(fTransportEndPosition));
607 currentSafety = endSafety;
608 State(fPreviousSftOrigin) = State(fTransportEndPosition);
609 State(fPreviousSafety) = currentSafety;
610
611 /*
612 G4VTrackStateHandle state =
613 GetIT(track)->GetTrackingInfo()->GetTrackState(fpSafetyHelper);
614 */
615 G4TrackStateManager& trackStateMan = GetIT(track)->GetTrackingInfo()
617 fpSafetyHelper->LoadTrackState(trackStateMan);
618 // fpSafetyHelper->SetTrackState(state);
619 fpSafetyHelper->SetCurrentSafety(currentSafety,
620 State(fTransportEndPosition));
622
623 // Because the Stepping Manager assumes it is from the start point,
624 // add the StepLength
625 //
626 currentSafety += State(fEndPointDistance);
627
628#ifdef G4DEBUG_TRANSPORT
629 G4cout.precision(12);
630 G4cout << "***G4Transportation::AlongStepGPIL ** " << G4endl;
631 G4cout << " Called Navigator->ComputeSafety at "
632 << State(fTransportEndPosition)
633 << " and it returned safety= " << endSafety << G4endl;
634 G4cout << " Adding endpoint distance " << State(fEndPointDistance)
635 << " to obtain pseudo-safety= " << currentSafety << G4endl;
636#endif
637 }
638 }
639
640 // fParticleChange.ProposeTrueStepLength(geometryStepLength) ;
641
642// G4cout << "G4ITTransportation::AlongStepGetPhysicalInteractionLength = "
643// << G4BestUnit(geometryStepLength,"Length") << G4endl;
644
645 return geometryStepLength;
646}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
@ CandidateForSelection
#define fPreviousSftOrigin
#define fPreviousSafety
G4IT * GetIT(const G4Track *track)
Definition: G4IT.cc:48
bool G4bool
Definition: G4Types.hh:86
virtual void ConfigureForTrack(const G4Track *)
const G4Field * GetDetectorField() const
void SetCurrentSafety(G4double val, const G4ThreeVector &pos)
G4TrackingInformation * GetTrackingInfo()
Definition: G4IT.hh:143
G4FieldManager * FindAndSetFieldManager(G4VPhysicalVolume *pCurrentPhysVol)
virtual void LoadTrackState(G4TrackStateManager &manager)
virtual void ResetTrackState()
G4double GetVelocity() const
G4VPhysicalVolume * GetVolume() const
G4double GetGlobalTime() const
G4double GetKineticEnergy() const
const G4ThreeVector & GetPolarization() const
G4TrackStateManager & GetTrackStateManager()
G4double * theInteractionTimeLeft
T sqr(const T &x)
Definition: templates.hh:128

References CandidateForSelection, G4FieldManager::ConfigureForTrack(), FatalException, fFieldPropagator, G4PropagatorInField::FindAndSetFieldManager(), fLinearNavigator, fPreviousSafety, fPreviousSftOrigin, fpSafetyHelper, fShortStepOptimisation, G4cout, G4endl, G4Exception(), G4DynamicParticle::GetCharge(), G4FieldManager::GetDetectorField(), G4Track::GetDynamicParticle(), G4Track::GetGlobalTime(), GetIT(), G4Track::GetKineticEnergy(), G4DynamicParticle::GetMomentumDirection(), G4Track::GetPolarization(), G4Track::GetPosition(), G4IT::GetTrackingInfo(), G4TrackingInformation::GetTrackStateManager(), G4Track::GetVelocity(), G4Track::GetVolume(), G4TrackStateDependent< T >::LoadTrackState(), CLHEP::Hep3Vector::mag2(), PrepareState, G4TrackStateDependent< T >::ResetTrackState(), G4ITSafetyHelper::SetCurrentSafety(), sqr(), State, and G4VITProcess::theInteractionTimeLeft.

Referenced by G4DNABrownianTransportation::AlongStepGetPhysicalInteractionLength().

◆ AlongStepGPIL()

G4double G4VProcess::AlongStepGPIL ( const G4Track track,
G4double  previousStepSize,
G4double  currentMinimumStep,
G4double proposedSafety,
G4GPILSelection selection 
)
inlineinherited

Definition at line 461 of file G4VProcess.hh.

466{
467 return AlongStepGetPhysicalInteractionLength(track, previousStepSize,
468 currentMinimumStep, proposedSafety, selection);
469}
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)=0

References G4VProcess::AlongStepGetPhysicalInteractionLength().

Referenced by G4SteppingManager::DefinePhysicalStepLength(), and G4ITStepProcessor::DoDefinePhysicalStepLength().

◆ AtRestDoIt()

virtual G4VParticleChange * G4ITTransportation::AtRestDoIt ( const G4Track ,
const G4Step  
)
inlinevirtual

Implements G4VProcess.

Definition at line 113 of file G4ITTransportation.hh.

114 {
115 return 0;
116 }

◆ AtRestGetPhysicalInteractionLength()

virtual G4double G4ITTransportation::AtRestGetPhysicalInteractionLength ( const G4Track ,
G4ForceCondition  
)
inlinevirtual

Implements G4VProcess.

Definition at line 106 of file G4ITTransportation.hh.

108 {
109 return -1.0;
110 }

◆ AtRestGPIL()

G4double G4VProcess::AtRestGPIL ( const G4Track track,
G4ForceCondition condition 
)
inlineinherited

Definition at line 472 of file G4VProcess.hh.

474{
476}
G4double condition(const G4ErrorSymMatrix &m)
G4double thePILfactor
Definition: G4VProcess.hh:352
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition)=0

References G4VProcess::AtRestGetPhysicalInteractionLength(), condition(), and G4VProcess::thePILfactor.

Referenced by G4ITStepProcessor::GetAtRestIL(), and G4SteppingManager::InvokeAtRestDoItProcs().

◆ BuildPhysicsTable()

void G4ITTransportation::BuildPhysicsTable ( const G4ParticleDefinition )
virtual

◆ BuildWorkerPhysicsTable()

void G4VProcess::BuildWorkerPhysicsTable ( const G4ParticleDefinition part)
virtualinherited

Reimplemented in G4BiasingProcessInterface.

Definition at line 200 of file G4VProcess.cc.

201{
202 BuildPhysicsTable(part);
203}
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
Definition: G4VProcess.hh:187

References G4VProcess::BuildPhysicsTable().

Referenced by G4BiasingProcessInterface::BuildWorkerPhysicsTable().

◆ ClearInteractionTimeLeft()

void G4VITProcess::ClearInteractionTimeLeft ( )
inlineprotectedvirtualinherited

Definition at line 258 of file G4VITProcess.hh.

259{
260 fpState->theInteractionTimeLeft = -1.0;
261}

References G4VITProcess::fpState.

Referenced by G4VITRestProcess::AtRestDoIt(), G4DNAElectronHoleRecombination::AtRestDoIt(), and G4DNAMolecularDissociation::AtRestDoIt().

◆ ClearNumberOfInteractionLengthLeft()

void G4VITProcess::ClearNumberOfInteractionLengthLeft ( )
inlineprotectedvirtualinherited

◆ ComputeStep()

void G4ITTransportation::ComputeStep ( const G4Track track,
const G4Step ,
const double  timeStep,
double &  spaceStep 
)
virtual

Reimplemented in G4DNABrownianTransportation.

Definition at line 648 of file G4ITTransportation.cc.

652{
654 const G4DynamicParticle* pParticle = track.GetDynamicParticle();
655 G4ThreeVector startMomentumDir = pParticle->GetMomentumDirection();
656 G4ThreeVector startPosition = track.GetPosition();
657
658 track.CalculateVelocity();
659 G4double initialVelocity = track.GetVelocity();
660
661 State(fGeometryLimitedStep) = false;
662
664 // !!! CASE NO FIELD !!!
666 State(fCandidateEndGlobalTime) = timeStep + track.GetGlobalTime();
667 State(fEndGlobalTimeComputed) = true;
668
669 // Choose the calculation of the transportation: Field or not
670 //
671 if (!State(fMomentumChanged))
672 {
673 // G4cout << "Momentum has not changed" << G4endl;
674 fParticleChange.ProposeVelocity(initialVelocity);
675 oPhysicalStep = initialVelocity * timeStep;
676
677 // Calculate final position
678 //
679 State(fTransportEndPosition) = startPosition
680 + oPhysicalStep * startMomentumDir;
681 }
682}

References G4Track::CalculateVelocity(), fParticleChange, G4Track::GetDynamicParticle(), G4Track::GetGlobalTime(), G4DynamicParticle::GetMomentumDirection(), G4Track::GetPosition(), G4Track::GetVelocity(), PrepareState, G4ParticleChange::ProposeVelocity(), and State.

Referenced by G4ITStepProcessor::DoDefinePhysicalStepLength(), and G4ITStepProcessor::FindTransportationStep().

◆ CreateInfo()

void G4VITProcess::CreateInfo ( )
protectedinherited

◆ DoesGlobalFieldExist()

G4bool G4ITTransportation::DoesGlobalFieldExist ( )
protected

Definition at line 235 of file G4ITTransportation.cc.

236{
237 G4TransportationManager* transportMgr;
239
240 // fFieldExists= transportMgr->GetFieldManager()->DoesFieldExist();
241 // return fFieldExists;
242 return transportMgr->GetFieldManager()->DoesFieldExist();
243}
G4bool DoesFieldExist() const
G4FieldManager * GetFieldManager() const

References G4FieldManager::DoesFieldExist(), G4TransportationManager::GetFieldManager(), and G4TransportationManager::GetTransportationManager().

Referenced by StartTracking().

◆ DumpInfo()

void G4VProcess::DumpInfo ( ) const
virtualinherited

Reimplemented in G4AdjointAlongStepWeightCorrection, G4AdjointForcedInteractionForGamma, G4AdjointhMultipleScattering, G4ContinuousGainOfEnergy, G4eAdjointMultipleScattering, G4eInverseBremsstrahlung, G4eInverseCompton, G4eInverseIonisation, G4InversePEEffect, G4IonInverseIonisation, G4PolarizedAnnihilation, G4PolarizedBremsstrahlung, G4PolarizedCompton, G4PolarizedGammaConversion, G4PolarizedIonisation, G4PolarizedPhotoElectric, G4Cerenkov, G4ForwardXrayTR, G4GammaXTRadiator, G4GaussXTRadiator, G4RegularXTRadiator, G4Scintillation, G4StrawTubeXTRadiator, G4SynchrotronRadiation, G4TransitionRadiation, G4TransparentRegXTRadiator, G4VTransitionRadiation, G4VXTRenergyLoss, G4XTRGammaRadModel, G4XTRRegularRadModel, and G4XTRTransparentRegRadModel.

Definition at line 167 of file G4VProcess.cc.

168{
169 G4cout << "Process Name " << theProcessName ;
170 G4cout << " : Type[" << GetProcessTypeName(theProcessType) << "]";
171 G4cout << " : SubType[" << theProcessSubType << "]"<< G4endl;
172}
static const G4String & GetProcessTypeName(G4ProcessType)
Definition: G4VProcess.cc:134
G4ProcessType theProcessType
Definition: G4VProcess.hh:346
G4int theProcessSubType
Definition: G4VProcess.hh:349
G4String theProcessName
Definition: G4VProcess.hh:341

References G4cout, G4endl, G4VProcess::GetProcessTypeName(), G4VProcess::theProcessName, G4VProcess::theProcessSubType, and G4VProcess::theProcessType.

Referenced by G4ProcessTable::DumpInfo(), export_G4VProcess(), G4Scintillation::ProcessDescription(), G4Cerenkov::ProcessDescription(), and G4ProcessManagerMessenger::SetNewValue().

◆ EnableShortStepOptimisation()

void G4ITTransportation::EnableShortStepOptimisation ( G4bool  optimise = true)
inline

◆ EndTracking()

void G4VProcess::EndTracking ( )
virtualinherited

◆ GetCurrentInteractionLength()

G4double G4VProcess::GetCurrentInteractionLength ( ) const
inlineinherited

◆ GetInteractionTimeLeft()

G4double G4VITProcess::GetInteractionTimeLeft ( )
inlineinherited

Definition at line 273 of file G4VITProcess.hh.

274{
275 if (fpState) return fpState->theInteractionTimeLeft;
276
277 return -1;
278}

References G4VITProcess::fpState.

Referenced by G4ITStepProcessor::DoDefinePhysicalStepLength().

◆ GetMasterProcess()

const G4VProcess * G4VProcess::GetMasterProcess ( ) const
inlineinherited

◆ GetMaxEnergyKilled()

G4double G4ITTransportation::GetMaxEnergyKilled ( ) const
inline

◆ GetMaxProcessIndex()

const size_t & G4VITProcess::GetMaxProcessIndex ( )
inlinestaticinherited

Definition at line 285 of file G4VITProcess.hh.

286{
287 if (!fNbProcess) fNbProcess = new size_t(0);
288 return *fNbProcess;
289}
static size_t * fNbProcess

References G4VITProcess::fNbProcess.

Referenced by G4TrackingInformation::GetProcessState().

◆ GetNumberOfInteractionLengthLeft()

G4double G4VProcess::GetNumberOfInteractionLengthLeft ( ) const
inlineinherited

Definition at line 431 of file G4VProcess.hh.

432{
434}

References G4VProcess::theNumberOfInteractionLengthLeft.

◆ GetPhysicsTableFileName()

const G4String & G4VProcess::GetPhysicsTableFileName ( const G4ParticleDefinition particle,
const G4String directory,
const G4String tableName,
G4bool  ascii = false 
)
inherited

Definition at line 181 of file G4VProcess.cc.

186{
187 G4String thePhysicsTableFileExt;
188 if (ascii) thePhysicsTableFileExt = ".asc";
189 else thePhysicsTableFileExt = ".dat";
190
191 thePhysicsTableFileName = directory + "/";
192 thePhysicsTableFileName += tableName + "." + theProcessName + ".";
194 + thePhysicsTableFileExt;
195
197}
const G4String & GetParticleName() const
G4String thePhysicsTableFileName
Definition: G4VProcess.hh:344

References G4ParticleDefinition::GetParticleName(), G4VProcess::thePhysicsTableFileName, and G4VProcess::theProcessName.

Referenced by export_G4VProcess(), G4GammaGeneralProcess::RetrievePhysicsTable(), G4VEmProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrieveTable(), G4GammaGeneralProcess::StorePhysicsTable(), G4VEmProcess::StorePhysicsTable(), G4VMultipleScattering::StorePhysicsTable(), and G4VEnergyLossProcess::StoreTable().

◆ GetPILfactor()

G4double G4VProcess::GetPILfactor ( ) const
inlineinherited

Definition at line 455 of file G4VProcess.hh.

456{
457 return thePILfactor;
458}

References G4VProcess::thePILfactor.

Referenced by export_G4VProcess().

◆ GetProcessID()

size_t G4VITProcess::GetProcessID ( ) const
inlineinherited

◆ GetProcessManager()

const G4ProcessManager * G4VProcess::GetProcessManager ( )
inlinevirtualinherited

Reimplemented in G4BiasingProcessInterface, and G4WrapperProcess.

Definition at line 494 of file G4VProcess.hh.

495{
496 return aProcessManager;
497}
const G4ProcessManager * aProcessManager
Definition: G4VProcess.hh:319

References G4VProcess::aProcessManager.

Referenced by G4BiasingProcessInterface::GetProcessManager(), and G4WrapperProcess::GetProcessManager().

◆ GetProcessName()

const G4String & G4VProcess::GetProcessName ( ) const
inlineinherited

Definition at line 382 of file G4VProcess.hh.

383{
384 return theProcessName;
385}

References G4VProcess::theProcessName.

Referenced by G4VEnergyLossProcess::ActivateForcedInteraction(), G4VEmProcess::ActivateForcedInteraction(), G4ProcessManager::ActivateProcess(), G4VEmProcess::ActivateSecondaryBiasing(), G4VEnergyLossProcess::ActivateSecondaryBiasing(), G4ParallelGeometriesLimiterProcess::AddParallelWorld(), G4IonQMDPhysics::AddProcess(), G4IonINCLXXPhysics::AddProcess(), G4ProcessManager::AddProcess(), G4ProcessPlacer::AddProcessAs(), G4ITSteppingVerbose::AlongStepDoItAllDone(), G4SteppingVerbose::AlongStepDoItAllDone(), G4SteppingVerboseWithUnits::AlongStepDoItAllDone(), G4ITSteppingVerbose::AlongStepDoItOneByOne(), G4SteppingVerbose::AlongStepDoItOneByOne(), G4SteppingVerboseWithUnits::AlongStepDoItOneByOne(), G4VContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4ParallelWorldProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4VContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4BOptnLeadingParticle::ApplyFinalStateBiasing(), G4ITSteppingVerbose::AtRestDoItInvoked(), G4SteppingVerbose::AtRestDoItInvoked(), G4SteppingVerboseWithUnits::AtRestDoItInvoked(), G4ITSteppingVerbose::AtRestDoItOneByOne(), G4VRestContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousProcess::AtRestGetPhysicalInteractionLength(), G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestProcess::AtRestGetPhysicalInteractionLength(), G4VRestProcess::AtRestGetPhysicalInteractionLength(), G4HadronicProcess::BiasCrossSectionByFactor(), G4VXTRenergyLoss::BuildAngleForEnergyBank(), G4VEnergyLossProcess::BuildDEDXTable(), G4VUserPhysicsList::BuildIntegralPhysicsTable(), G4VEmProcess::BuildLambdaTable(), G4VEnergyLossProcess::BuildLambdaTable(), G4DNABrownianTransportation::BuildPhysicsTable(), G4GammaGeneralProcess::BuildPhysicsTable(), G4VEmProcess::BuildPhysicsTable(), G4VEnergyLossProcess::BuildPhysicsTable(), G4VMultipleScattering::BuildPhysicsTable(), G4LossTableManager::BuildPhysicsTable(), G4LossTableManager::BuildTables(), G4HadronicProcess::CheckEnergyMomentumConservation(), G4ProcessManager::CheckOrderingParameters(), G4HadronicProcess::CheckResult(), G4StackChecker::ClassifyNewTrack(), G4BOptrForceCollision::ConfigureForWorker(), G4RunManagerKernel::ConfirmCoupledTransportation(), G4FastSimulationPhysics::ConstructProcess(), G4GenericBiasingPhysics::ConstructProcess(), G4IonElasticPhysics::ConstructProcess(), G4LossTableManager::CopyTables(), G4RichTrajectory::CreateAttValues(), G4RichTrajectoryPoint::CreateAttValues(), G4VPhononProcess::CreateSecondary(), G4EmExtraParameters::DefineRegParamForEM(), G4EmExtraParameters::DefineRegParamForLoss(), G4HadronicProcessStore::DeRegisterExtraProcess(), G4ITSteppingVerbose::DPSLAlongStep(), G4SteppingVerbose::DPSLAlongStep(), G4SteppingVerboseWithUnits::DPSLAlongStep(), G4ITSteppingVerbose::DPSLPostStep(), G4SteppingVerbose::DPSLPostStep(), G4SteppingVerboseWithUnits::DPSLPostStep(), G4HadronicProcessStore::Dump(), G4HadronicProcess::DumpState(), G4MuonicAtomDecay::DumpState(), G4ExceptionHandler::DumpTrackInfo(), export_G4VProcess(), G4EmCalculator::FindEmModel(), G4VEmProcess::FindLambdaMax(), G4BiasingProcessInterface::G4BiasingProcessInterface(), G4Cerenkov::G4Cerenkov(), G4ErrorEnergyLoss::G4ErrorEnergyLoss(), G4ErrorTrackLengthTarget::G4ErrorTrackLengthTarget(), G4FastSimulationManagerProcess::G4FastSimulationManagerProcess(), G4ImportanceProcess::G4ImportanceProcess(), G4MaxTimeCuts::G4MaxTimeCuts(), G4MicroElecSurface::G4MicroElecSurface(), G4MinEkineCuts::G4MinEkineCuts(), G4OpAbsorption::G4OpAbsorption(), G4OpBoundaryProcess::G4OpBoundaryProcess(), G4OpMieHG::G4OpMieHG(), G4OpRayleigh::G4OpRayleigh(), G4OpWLS::G4OpWLS(), G4OpWLS2::G4OpWLS2(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4ParallelWorldScoringProcess::G4ParallelWorldScoringProcess(), G4Scintillation::G4Scintillation(), G4ScoreSplittingProcess::G4ScoreSplittingProcess(), G4SpecialCuts::G4SpecialCuts(), G4StepLimiter::G4StepLimiter(), G4UCNAbsorption::G4UCNAbsorption(), G4UCNBoundaryProcess::G4UCNBoundaryProcess(), G4UCNLoss::G4UCNLoss(), G4UCNMultiScattering::G4UCNMultiScattering(), G4UserSpecialCuts::G4UserSpecialCuts(), G4WeightCutOffProcess::G4WeightCutOffProcess(), G4WeightWindowProcess::G4WeightWindowProcess(), G4HadronicProcess::GetElementCrossSection(), G4VEmProcess::GetEmProcess(), G4GammaGeneralProcess::GetEmProcess(), G4WeightWindowProcess::GetName(), G4ProcessManager::GetProcess(), G4ProcessManager::GetProcessVectorIndex(), G4GammaGeneralProcess::GetSubProcessName(), G4ProcessManager::InActivateProcess(), G4hhIonisation::InitialiseEnergyLossProcess(), G4ProcessTable::Insert(), G4ITStepProcessor::InvokeAlongStepDoItProcs(), G4SteppingManager::InvokeAlongStepDoItProcs(), G4SteppingManager::InvokeAtRestDoItProcs(), G4SteppingManager::InvokePSDIP(), G4LossTableManager::LocalPhysicsTables(), G4ErrorPropagator::MakeOneStep(), G4VEmProcess::PostStepDoIt(), G4ITSteppingVerbose::PostStepDoItAllDone(), G4SteppingVerbose::PostStepDoItAllDone(), G4SteppingVerboseWithUnits::PostStepDoItAllDone(), G4ITSteppingVerbose::PostStepDoItOneByOne(), G4SteppingVerbose::PostStepDoItOneByOne(), G4SteppingVerboseWithUnits::PostStepDoItOneByOne(), G4VITDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength(), G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength(), G4ITSteppingVerbose::PostStepVerbose(), G4EmConfigurator::PrepareModels(), G4HadronStoppingProcess::PreparePhysicsTable(), G4GammaGeneralProcess::PreparePhysicsTable(), G4VEmProcess::PreparePhysicsTable(), G4VEnergyLossProcess::PreparePhysicsTable(), G4VMultipleScattering::PreparePhysicsTable(), G4LossTableManager::PreparePhysicsTable(), G4HadronicProcessStore::Print(), G4HadronicProcessStore::PrintHtml(), G4AnnihiToMuPair::PrintInfoDefinition(), G4GammaConversionToMuons::PrintInfoDefinition(), G4hImpactIonisation::PrintInfoDefinition(), G4ProcessPlacer::PrintProcVec(), G4VEnergyLossProcess::PrintWarning(), G4VEmProcess::PrintWarning(), G4SynchrotronRadiation::ProcessDescription(), G4Decay::ProcessDescription(), G4DecayWithSpin::ProcessDescription(), G4PionDecayMakeSpin::ProcessDescription(), G4UnknownDecay::ProcessDescription(), G4ChannelingOptrChangeCrossSection::ProposeOccurenceBiasingOperation(), G4StackManager::PushOneTrack(), G4HadronicProcessStore::Register(), G4LossTableManager::Register(), G4LossTableManager::RegisterExtraParticle(), G4HadronicProcessStore::RegisterExtraProcess(), G4HadronicProcessStore::RegisterParticle(), G4WrapperProcess::RegisterProcess(), G4PhysicsListHelper::RegisterProcess(), G4ProcessTable::Remove(), G4ParallelGeometriesLimiterProcess::RemoveParallelWorld(), G4ProcessManager::RemoveProcess(), G4ProcessPlacer::RemoveProcess(), G4GammaGeneralProcess::RetrievePhysicsTable(), G4VEmProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrievePhysicsTable(), G4VEmProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCSDARangeTable(), G4VEnergyLossProcess::SetInverseRangeTable(), G4VEnergyLossProcess::SetLambdaTable(), G4ProcessTableMessenger::SetNewValue(), G4ProcessTable::SetProcessActivation(), G4ProcessManager::SetProcessOrdering(), G4ProcessManager::SetProcessOrderingToFirst(), G4ProcessManager::SetProcessOrderingToLast(), G4ProcessManager::SetProcessOrderingToSecond(), G4VEnergyLossProcess::SetRangeTableForLoss(), G4VEnergyLossProcess::SetSecondaryRangeTable(), G4FastSimulationManagerProcess::SetWorldVolume(), G4ITSteppingVerbose::ShowStep(), G4SteppingVerbose::ShowStep(), G4SteppingVerboseWithUnits::ShowStep(), G4ChannelingOptrChangeCrossSection::StartRun(), G4ITSteppingVerbose::StepInfo(), G4SteppingVerbose::StepInfo(), G4SteppingVerboseWithUnits::StepInfo(), G4ITSteppingVerbose::StepInfoForLeadingTrack(), G4VEmProcess::StorePhysicsTable(), G4VMultipleScattering::StorePhysicsTable(), G4VEnergyLossProcess::StreamInfo(), G4VEmProcess::StreamInfo(), G4VMultipleScattering::StreamInfo(), G4EmCalculator::UpdateParticle(), G4ParallelWorldScoringProcess::Verbose(), G4ScoreSplittingProcess::Verbose(), G4ITSteppingVerbose::VerboseTrack(), G4SteppingVerbose::VerboseTrack(), and G4SteppingVerboseWithUnits::VerboseTrack().

◆ GetProcessState()

G4shared_ptr< G4ProcessState_Lock > G4VITProcess::GetProcessState ( )
inlineinherited

Definition at line 120 of file G4VITProcess.hh.

121 {
123 }
#define UpcastProcessState(destinationType)
Definition: G4VITProcess.hh:82

References UpcastProcessState.

◆ GetProcessSubType()

G4int G4VProcess::GetProcessSubType ( ) const
inlineinherited

◆ GetProcessType()

G4ProcessType G4VProcess::GetProcessType ( ) const
inlineinherited

◆ GetProcessTypeName()

const G4String & G4VProcess::GetProcessTypeName ( G4ProcessType  aType)
staticinherited

Definition at line 134 of file G4VProcess.cc.

135{
136 switch (aType)
137 {
138 case fNotDefined: return typeNotDefined; break;
139 case fTransportation: return typeTransportation; break;
140 case fElectromagnetic: return typeElectromagnetic; break;
141 case fOptical: return typeOptical; break;
142 case fHadronic: return typeHadronic; break;
144 case fDecay: return typeDecay; break;
145 case fGeneral: return typeGeneral; break;
146 case fParameterisation: return typeParameterisation; break;
147 case fUserDefined: return typeUserDefined; break;
148 case fPhonon: return typePhonon; break;
149 default: ;
150 }
151 return noType;
152}
@ fOptical
@ fPhonon
@ fParameterisation
@ fGeneral
@ fDecay
@ fElectromagnetic
@ fHadronic
@ fUserDefined
@ fPhotolepton_hadron
@ fNotDefined
static const G4String typeNotDefined
Definition: G4VProcess.cc:119
static const G4String typeParameterisation
Definition: G4VProcess.cc:127
static const G4String typePhotolepton_hadron
Definition: G4VProcess.cc:124
static const G4String typeElectromagnetic
Definition: G4VProcess.cc:121
static const G4String noType
Definition: G4VProcess.cc:130
static const G4String typeUserDefined
Definition: G4VProcess.cc:128
static const G4String typeDecay
Definition: G4VProcess.cc:125
static const G4String typeTransportation
Definition: G4VProcess.cc:120
static const G4String typeHadronic
Definition: G4VProcess.cc:123
static const G4String typeOptical
Definition: G4VProcess.cc:122
static const G4String typeGeneral
Definition: G4VProcess.cc:126
static const G4String typePhonon
Definition: G4VProcess.cc:129

References fDecay, fElectromagnetic, fGeneral, fHadronic, fNotDefined, fOptical, fParameterisation, fPhonon, fPhotolepton_hadron, fTransportation, fUserDefined, anonymous_namespace{G4VProcess.cc}::noType, anonymous_namespace{G4VProcess.cc}::typeDecay, anonymous_namespace{G4VProcess.cc}::typeElectromagnetic, anonymous_namespace{G4VProcess.cc}::typeGeneral, anonymous_namespace{G4VProcess.cc}::typeHadronic, anonymous_namespace{G4VProcess.cc}::typeNotDefined, anonymous_namespace{G4VProcess.cc}::typeOptical, anonymous_namespace{G4VProcess.cc}::typeParameterisation, anonymous_namespace{G4VProcess.cc}::typePhonon, anonymous_namespace{G4VProcess.cc}::typePhotolepton_hadron, anonymous_namespace{G4VProcess.cc}::typeTransportation, and anonymous_namespace{G4VProcess.cc}::typeUserDefined.

Referenced by G4RichTrajectory::CreateAttValues(), G4RichTrajectoryPoint::CreateAttValues(), G4ProcessManager::DumpInfo(), G4VProcess::DumpInfo(), G4ProcessTableMessenger::G4ProcessTableMessenger(), G4ProcessTableMessenger::GetProcessType(), G4ProcessTableMessenger::GetProcessTypeName(), and G4ProcessTableMessenger::SetNumberOfProcessType().

◆ GetPropagatorInField()

G4PropagatorInField * G4ITTransportation::GetPropagatorInField ( )

◆ GetState()

template<typename T >
T * G4VITProcess::GetState ( )
inlineprotectedinherited

Definition at line 212 of file G4VITProcess.hh.

213 {
214 return fpState->GetState<T>();
215 }

References G4VITProcess::fpState.

◆ GetSumEnergyKilled()

G4double G4ITTransportation::GetSumEnergyKilled ( ) const
inline

◆ GetThresholdImportantEnergy()

G4double G4ITTransportation::GetThresholdImportantEnergy ( ) const
inline

◆ GetThresholdTrials()

G4int G4ITTransportation::GetThresholdTrials ( ) const
inline

◆ GetThresholdWarningEnergy()

G4double G4ITTransportation::GetThresholdWarningEnergy ( ) const
inline

◆ GetTotalNumberOfInteractionLengthTraversed()

G4double G4VProcess::GetTotalNumberOfInteractionLengthTraversed ( ) const
inlineinherited

◆ GetVerboseLevel()

G4int G4ITTransportation::GetVerboseLevel ( ) const
inline

◆ InstantiateProcessState()

G4bool G4ITTransportation::InstantiateProcessState ( )
inlineprotected

Definition at line 259 of file G4ITTransportation.hh.

260 {
262 }

References fInstantiateProcessState.

◆ isAlongStepDoItIsEnabled()

G4bool G4VProcess::isAlongStepDoItIsEnabled ( ) const
inlineinherited

Definition at line 506 of file G4VProcess.hh.

507{
508 return enableAlongStepDoIt;
509}

References G4VProcess::enableAlongStepDoIt.

Referenced by G4ProcessManager::CheckOrderingParameters().

◆ IsApplicable()

virtual G4bool G4VProcess::IsApplicable ( const G4ParticleDefinition )
inlinevirtualinherited

Reimplemented in G4DNAAttachment, G4DNAChargeDecrease, G4DNAChargeIncrease, G4DNADissociation, G4DNAElastic, G4DNAElectronSolvation, G4DNAExcitation, G4DNAIonisation, G4DNAPlasmonExcitation, G4DNAPositronium, G4DNARotExcitation, G4DNAVibExcitation, G4hImpactIonisation, G4RadioactiveDecay, G4HadronicAbsorptionBertini, G4HadronicAbsorptionFritiof, G4HadronicAbsorptionFritiofWithBinaryCascade, G4HadronStoppingProcess, G4MuonicAtomDecay, G4MuonMinusAtomicCapture, G4MuonMinusCapture, G4WrapperProcess, G4PhononDownconversion, G4NeutronKiller, G4ComptonScattering, G4GammaConversion, G4PhotoElectricEffect, G4GammaGeneralProcess, G4Decay, G4UnknownDecay, G4AdjointProcessEquivalentToDirectProcess, G4DNAElectronHoleRecombination, G4DNAMolecularDissociation, G4AnnihiToMuPair, G4GammaConversionToMuons, G4JAEAElasticScattering, G4LowECapture, G4MicroElecElastic, G4MicroElecInelastic, G4MicroElecLOPhononScattering, G4RayleighScattering, G4PolarizedCompton, G4PolarizedGammaConversion, G4PolarizedPhotoElectric, G4SynchrotronRadiation, G4SynchrotronRadiationInMat, G4VXTRenergyLoss, G4HadronInelasticProcess, G4NoProcess, G4ChargeExchangeProcess, G4MuonNuclearProcess, G4UCNAbsorption, G4UCNBoundaryProcess, G4UCNLoss, G4UCNMultiScattering, G4NeutronCaptureProcess, G4MicroElecSurface, G4ErrorEnergyLoss, G4Cerenkov, G4Scintillation, G4TransitionRadiation, G4VTransitionRadiation, G4OpAbsorption, G4OpBoundaryProcess, G4OpMieHG, G4OpRayleigh, G4OpWLS, G4OpWLS2, G4Channeling, G4VPhononProcess, G4NeutronFissionProcess, G4CoulombScattering, G4eBremsstrahlung, G4eIonisation, G4eMultipleScattering, G4eplusAnnihilation, G4hMultipleScattering, G4ionIonisation, G4NuclearStopping, G4AdjointhMultipleScattering, G4eAdjointMultipleScattering, G4eeToHadrons, G4hBremsstrahlung, G4hhIonisation, G4hPairProduction, G4mplIonisation, G4ePairProduction, G4MuBremsstrahlung, G4MuIonisation, G4MuMultipleScattering, G4MuPairProduction, G4PolarizedIonisation, G4hIonisation, G4VEmProcess, and G4BiasingProcessInterface.

Definition at line 182 of file G4VProcess.hh.

182{ return true; }

Referenced by G4ProcessManager::AddProcess(), export_G4VProcess(), G4WrapperProcess::IsApplicable(), G4AdjointProcessEquivalentToDirectProcess::IsApplicable(), and G4BiasingProcessInterface::IsApplicable().

◆ isAtRestDoItIsEnabled()

G4bool G4VProcess::isAtRestDoItIsEnabled ( ) const
inlineinherited

Definition at line 500 of file G4VProcess.hh.

501{
502 return enableAtRestDoIt;
503}

References G4VProcess::enableAtRestDoIt.

Referenced by G4ProcessManager::CheckOrderingParameters().

◆ isPostStepDoItIsEnabled()

G4bool G4VProcess::isPostStepDoItIsEnabled ( ) const
inlineinherited

Definition at line 512 of file G4VProcess.hh.

513{
514 return enablePostStepDoIt;
515}

References G4VProcess::enablePostStepDoIt.

Referenced by G4ProcessManager::CheckOrderingParameters().

◆ IsStepLimitedByGeometry()

G4bool G4ITTransportation::IsStepLimitedByGeometry ( )
inline

Definition at line 97 of file G4ITTransportation.hh.

98 {
99 return GetState<G4ITTransportationState>()->fGeometryLimitedStep;
100 }

◆ operator!=() [1/2]

G4bool G4VITProcess::operator!= ( const G4VITProcess right) const
inherited

◆ operator!=() [2/2]

G4bool G4VProcess::operator!= ( const G4VProcess right) const
inherited

Definition at line 161 of file G4VProcess.cc.

162{
163 return (this != &right);
164}

◆ operator=()

G4ITTransportation & G4ITTransportation::operator= ( const G4ITTransportation )
private

Definition at line 176 of file G4ITTransportation.cc.

177{
178// if (this == &right) return *this;
179 return *this;
180}

◆ operator==() [1/2]

G4bool G4VITProcess::operator== ( const G4VITProcess right) const
inherited

◆ operator==() [2/2]

G4bool G4VProcess::operator== ( const G4VProcess right) const
inherited

Definition at line 155 of file G4VProcess.cc.

156{
157 return (this == &right);
158}

◆ PostStepDoIt()

G4VParticleChange * G4ITTransportation::PostStepDoIt ( const G4Track track,
const G4Step  
)
virtual

Implements G4VProcess.

Reimplemented in G4DNABrownianTransportation.

Definition at line 871 of file G4ITTransportation.cc.

873{
874 // G4cout << "G4ITTransportation::PostStepDoIt" << G4endl;
875
877 G4TouchableHandle retCurrentTouchable; // The one to return
878 G4bool isLastStep = false;
879
880 // Initialize ParticleChange (by setting all its members equal
881 // to corresponding members in G4Track)
882 fParticleChange.Initialize(track); // To initialise TouchableChange
883
884 fParticleChange.ProposeTrackStatus(track.GetTrackStatus());
885
886 // If the Step was determined by the volume boundary,
887 // logically relocate the particle
888
889 if (State(fGeometryLimitedStep))
890 {
891
892 if(fVerboseLevel)
893 {
894 G4cout << "Step is limited by geometry "
895 << "track ID : " << track.GetTrackID() << G4endl;
896 }
897
898 // fCurrentTouchable will now become the previous touchable,
899 // and what was the previous will be freed.
900 // (Needed because the preStepPoint can point to the previous touchable)
901
902 if ( State(fCurrentTouchableHandle)->GetVolume() == 0)
903 {
904 G4ExceptionDescription exceptionDescription;
905 exceptionDescription << "No current touchable found ";
906 G4Exception(" G4ITTransportation::PostStepDoIt", "G4ITTransportation001",
907 FatalErrorInArgument, exceptionDescription);
908 }
909
910 fLinearNavigator->SetGeometricallyLimitedStep();
911 fLinearNavigator->LocateGlobalPointAndUpdateTouchableHandle(
912 track.GetPosition(), track.GetMomentumDirection(),
913 State(fCurrentTouchableHandle), true);
914 // Check whether the particle is out of the world volume
915 // If so it has exited and must be killed.
916 //
917 if ( State(fCurrentTouchableHandle)->GetVolume() == 0)
918 {
919 // abort();
920#ifdef G4VERBOSE
921 if (fVerboseLevel > 0)
922 {
923 G4cout << "Track position : " << track.GetPosition() / nanometer
924 << " [nm]" << " Track ID : " << track.GetTrackID() << G4endl;
925 G4cout << "G4ITTransportation will killed the track because "
926 "State(fCurrentTouchableHandle)->GetVolume() == 0"<< G4endl;
927 }
928#endif
930 }
931
932 retCurrentTouchable = State(fCurrentTouchableHandle);
933
934// G4cout << "Current volume : " << track.GetVolume()->GetName()
935// << " Next volume : "
936// << (State(fCurrentTouchableHandle)->GetVolume() ?
937// State(fCurrentTouchableHandle)->GetVolume()->GetName():"OutWorld")
938// << " Position : " << track.GetPosition() / nanometer
939// << " track ID : " << track.GetTrackID()
940// << G4endl;
941
942 fParticleChange.SetTouchableHandle(State(fCurrentTouchableHandle));
943
944 // Update the Step flag which identifies the Last Step in a volume
945 isLastStep = fLinearNavigator->ExitedMotherVolume()
946 || fLinearNavigator->EnteredDaughterVolume();
947
948#ifdef G4DEBUG_TRANSPORT
949 // Checking first implementation of flagging Last Step in Volume
950 G4bool exiting = fLinearNavigator->ExitedMotherVolume();
951 G4bool entering = fLinearNavigator->EnteredDaughterVolume();
952
953 if( ! (exiting || entering) )
954 {
955 G4cout << " Transport> : Proposed isLastStep= " << isLastStep
956 << " Exiting " << fLinearNavigator->ExitedMotherVolume()
957 << " Entering " << fLinearNavigator->EnteredDaughterVolume()
958 << " Track position : " << track.GetPosition() /nanometer << " [nm]"
959 << G4endl;
960 G4cout << " Track position : " << track.GetPosition() /nanometer
961 << G4endl;
962 }
963#endif
964 }
965 else // fGeometryLimitedStep is false
966 {
967 // This serves only to move the Navigator's location
968 //
969// abort();
970 fLinearNavigator->LocateGlobalPointWithinVolume(track.GetPosition());
971
972 // The value of the track's current Touchable is retained.
973 // (and it must be correct because we must use it below to
974 // overwrite the (unset) one in particle change)
975 // It must be fCurrentTouchable too ??
976 //
977 fParticleChange.SetTouchableHandle(track.GetTouchableHandle());
978 retCurrentTouchable = track.GetTouchableHandle();
979
980 isLastStep = false;
981#ifdef G4DEBUG_TRANSPORT
982 // Checking first implementation of flagging Last Step in Volume
983 G4cout << " Transport> Proposed isLastStep= " << isLastStep
984 << " Geometry did not limit step. Position : "
985 << track.GetPosition()/ nanometer << G4endl;
986#endif
987 } // endif ( fGeometryLimitedStep )
988
990
991 const G4VPhysicalVolume* pNewVol = retCurrentTouchable->GetVolume();
992 const G4Material* pNewMaterial = 0;
993 const G4VSensitiveDetector* pNewSensitiveDetector = 0;
994
995 if (pNewVol != 0)
996 {
997 pNewMaterial = pNewVol->GetLogicalVolume()->GetMaterial();
998 pNewSensitiveDetector = pNewVol->GetLogicalVolume()->GetSensitiveDetector();
999 }
1000
1001 // ( <const_cast> pNewMaterial ) ;
1002 // ( <const_cast> pNewSensitiveDetector) ;
1003
1006 (G4VSensitiveDetector *) pNewSensitiveDetector);
1007
1008 const G4MaterialCutsCouple* pNewMaterialCutsCouple = 0;
1009 if (pNewVol != 0)
1010 {
1011 pNewMaterialCutsCouple =
1013 }
1014
1015 if (pNewVol != 0 && pNewMaterialCutsCouple != 0
1016 && pNewMaterialCutsCouple->GetMaterial() != pNewMaterial)
1017 {
1018 // for parametrized volume
1019 //
1020 pNewMaterialCutsCouple = G4ProductionCutsTable::GetProductionCutsTable()
1021 ->GetMaterialCutsCouple(pNewMaterial,
1022 pNewMaterialCutsCouple->GetProductionCuts());
1023 }
1024 fParticleChange.SetMaterialCutsCoupleInTouchable(pNewMaterialCutsCouple);
1025
1026 // temporarily until Get/Set Material of ParticleChange,
1027 // and StepPoint can be made const.
1028 // Set the touchable in ParticleChange
1029 // this must always be done because the particle change always
1030 // uses this value to overwrite the current touchable pointer.
1031 //
1032 fParticleChange.SetTouchableHandle(retCurrentTouchable);
1033
1034 return &fParticleChange;
1035}
@ FatalErrorInArgument
static constexpr double nanometer
Definition: G4SIunits.hh:81
G4VSensitiveDetector * GetSensitiveDetector() const
G4Material * GetMaterial() const
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
const G4Material * GetMaterial() const
G4ProductionCuts * GetProductionCuts() const
void SetMaterialInTouchable(G4Material *fMaterial)
void SetTouchableHandle(const G4TouchableHandle &fTouchable)
void SetMaterialCutsCoupleInTouchable(const G4MaterialCutsCouple *fMaterialCutsCouple)
void SetSensitiveDetectorInTouchable(G4VSensitiveDetector *fSensitiveDetector)
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
static G4ProductionCutsTable * GetProductionCutsTable()
void ProposeLastStepInVolume(G4bool flag)
G4LogicalVolume * GetLogicalVolume() const
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
Definition: G4VTouchable.cc:34

References FatalErrorInArgument, fLinearNavigator, fParticleChange, fStopAndKill, fVerboseLevel, G4cout, G4endl, G4Exception(), G4VPhysicalVolume::GetLogicalVolume(), G4LogicalVolume::GetMaterial(), G4MaterialCutsCouple::GetMaterial(), G4LogicalVolume::GetMaterialCutsCouple(), G4ProductionCutsTable::GetMaterialCutsCouple(), G4Track::GetMomentumDirection(), G4Track::GetPosition(), G4MaterialCutsCouple::GetProductionCuts(), G4ProductionCutsTable::GetProductionCutsTable(), G4LogicalVolume::GetSensitiveDetector(), G4Track::GetTouchableHandle(), G4Track::GetTrackID(), G4Track::GetTrackStatus(), G4VTouchable::GetVolume(), G4ParticleChangeForTransport::Initialize(), nanometer, PrepareState, G4VParticleChange::ProposeLastStepInVolume(), G4VParticleChange::ProposeTrackStatus(), G4ParticleChangeForTransport::SetMaterialCutsCoupleInTouchable(), G4ParticleChangeForTransport::SetMaterialInTouchable(), G4ParticleChangeForTransport::SetSensitiveDetectorInTouchable(), G4ParticleChangeForTransport::SetTouchableHandle(), and State.

Referenced by G4DNABrownianTransportation::PostStepDoIt().

◆ PostStepGetPhysicalInteractionLength()

G4double G4ITTransportation::PostStepGetPhysicalInteractionLength ( const G4Track ,
G4double  ,
G4ForceCondition pForceCond 
)
virtual

Implements G4VProcess.

Definition at line 859 of file G4ITTransportation.cc.

863{
864 *pForceCond = Forced;
865 return DBL_MAX; // was kInfinity ; but convention now is DBL_MAX
866}
@ Forced
#define DBL_MAX
Definition: templates.hh:62

References DBL_MAX, and Forced.

◆ PostStepGPIL()

G4double G4VProcess::PostStepGPIL ( const G4Track track,
G4double  previousStepSize,
G4ForceCondition condition 
)
inlineinherited

Definition at line 479 of file G4VProcess.hh.

482{
483 return thePILfactor *
484 PostStepGetPhysicalInteractionLength(track, previousStepSize, condition);
485}
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)=0

References condition(), G4VProcess::PostStepGetPhysicalInteractionLength(), and G4VProcess::thePILfactor.

Referenced by G4SteppingManager::DefinePhysicalStepLength(), and G4ITStepProcessor::DoDefinePhysicalStepLength().

◆ PreparePhysicsTable()

virtual void G4VProcess::PreparePhysicsTable ( const G4ParticleDefinition )
inlinevirtualinherited

◆ PrepareWorkerPhysicsTable()

void G4VProcess::PrepareWorkerPhysicsTable ( const G4ParticleDefinition part)
virtualinherited

Reimplemented in G4BiasingProcessInterface.

Definition at line 206 of file G4VProcess.cc.

207{
209}
virtual void PreparePhysicsTable(const G4ParticleDefinition &)
Definition: G4VProcess.hh:194

References G4VProcess::PreparePhysicsTable().

Referenced by G4BiasingProcessInterface::PrepareWorkerPhysicsTable().

◆ ProcessDescription()

void G4VProcess::ProcessDescription ( std::ostream &  outfile) const
virtualinherited

Reimplemented in G4AdjointAlongStepWeightCorrection, G4AdjointForcedInteractionForGamma, G4AdjointhMultipleScattering, G4ContinuousGainOfEnergy, G4eAdjointMultipleScattering, G4eInverseBremsstrahlung, G4eInverseCompton, G4eInverseIonisation, G4InversePEEffect, G4IonInverseIonisation, G4eeToHadrons, G4hBremsstrahlung, G4hhIonisation, G4hPairProduction, G4mplIonisation, G4RayleighScattering, G4ePairProduction, G4MuBremsstrahlung, G4MuIonisation, G4MuMultipleScattering, G4MuPairProduction, G4PolarizedAnnihilation, G4PolarizedBremsstrahlung, G4PolarizedCompton, G4PolarizedGammaConversion, G4PolarizedIonisation, G4PolarizedPhotoElectric, G4ComptonScattering, G4CoulombScattering, G4eBremsstrahlung, G4eIonisation, G4eMultipleScattering, G4eplusAnnihilation, G4GammaConversion, G4hIonisation, G4hMultipleScattering, G4ionIonisation, G4NuclearStopping, G4PhotoElectricEffect, G4ForwardXrayTR, G4GammaXTRadiator, G4GaussXTRadiator, G4RegularXTRadiator, G4Scintillation, G4StrawTubeXTRadiator, G4SynchrotronRadiation, G4TransitionRadiation, G4TransparentRegXTRadiator, G4VTransitionRadiation, G4VXTRenergyLoss, G4XTRGammaRadModel, G4XTRRegularRadModel, G4XTRTransparentRegRadModel, G4Cerenkov, G4Radioactivation, G4RadioactiveDecay, G4ElectronNuclearProcess, G4MuonNuclearProcess, G4NeutrinoElectronProcess, G4NeutronFissionProcess, G4PositronNuclearProcess, G4HadronicAbsorptionBertini, G4HadronicAbsorptionFritiof, G4HadronicAbsorptionFritiofWithBinaryCascade, G4HadronStoppingProcess, G4MuonicAtomDecay, G4MuonMinusAtomicCapture, G4MuonMinusCapture, G4Transportation, G4NeutronCaptureProcess, G4GammaGeneralProcess, G4Decay, G4DecayWithSpin, G4PionDecayMakeSpin, G4UnknownDecay, G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering, G4HadronicProcess, G4ElNeutrinoNucleusProcess, G4HadronElasticProcess, and G4MuNeutrinoNucleusProcess.

Definition at line 175 of file G4VProcess.cc.

176{
177 outFile << "This process has not yet been described\n";
178}

Referenced by G4LossTableManager::DumpHtml(), G4HadronicProcessStore::PrintHtml(), and G4GammaGeneralProcess::ProcessDescription().

◆ ProposesTimeStep()

G4bool G4VITProcess::ProposesTimeStep ( ) const
inlineinherited

◆ ResetKilledStatistics()

void G4ITTransportation::ResetKilledStatistics ( G4int  report = 1)
inline

◆ ResetNumberOfInteractionLengthLeft()

void G4VITProcess::ResetNumberOfInteractionLengthLeft ( )
inlinevirtualinherited

◆ ResetProcessState()

void G4VITProcess::ResetProcessState ( )
inlineinherited

◆ RetrievePhysicsTable()

virtual G4bool G4VProcess::RetrievePhysicsTable ( const G4ParticleDefinition ,
const G4String ,
G4bool   
)
inlinevirtualinherited

◆ RetrieveProcessInfo()

void G4VITProcess::RetrieveProcessInfo ( )
protectedinherited

◆ SetInstantiateProcessState()

void G4ITTransportation::SetInstantiateProcessState ( G4bool  flag)
inlineprotected

Definition at line 254 of file G4ITTransportation.hh.

255 {
257 }

References fInstantiateProcessState.

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

◆ SetMasterProcess()

void G4VProcess::SetMasterProcess ( G4VProcess masterP)
virtualinherited

◆ SetPILfactor()

void G4VProcess::SetPILfactor ( G4double  value)
inlineinherited

Definition at line 449 of file G4VProcess.hh.

450{
451 if (value>0.) { thePILfactor = value; }
452}

References G4VProcess::thePILfactor.

Referenced by export_G4VProcess().

◆ SetProcessManager()

void G4VProcess::SetProcessManager ( const G4ProcessManager procMan)
inlinevirtualinherited

◆ SetProcessState()

void G4VITProcess::SetProcessState ( G4shared_ptr< G4ProcessState_Lock aProcInfo)
inlineinherited

◆ SetProcessSubType()

void G4VProcess::SetProcessSubType ( G4int  value)
inlineinherited

Definition at line 406 of file G4VProcess.hh.

407{
408 theProcessSubType = value;
409}

References G4VProcess::theProcessSubType.

Referenced by G4DNAElectronHoleRecombination::Create(), G4DNASecondOrderReaction::Create(), G4AnnihiToMuPair::G4AnnihiToMuPair(), G4BiasingProcessInterface::G4BiasingProcessInterface(), G4Cerenkov::G4Cerenkov(), G4ComptonScattering::G4ComptonScattering(), G4CoulombScattering::G4CoulombScattering(), G4CoupledTransportation::G4CoupledTransportation(), G4Decay::G4Decay(), G4DecayWithSpin::G4DecayWithSpin(), G4DNAAttachment::G4DNAAttachment(), G4DNABrownianTransportation::G4DNABrownianTransportation(), G4DNAChargeDecrease::G4DNAChargeDecrease(), G4DNAChargeIncrease::G4DNAChargeIncrease(), G4DNAElastic::G4DNAElastic(), G4DNAElectronSolvation::G4DNAElectronSolvation(), G4DNAExcitation::G4DNAExcitation(), G4DNAIonisation::G4DNAIonisation(), G4DNAMolecularDissociation::G4DNAMolecularDissociation(), G4DNAScavengerProcess::G4DNAScavengerProcess(), G4DNAVibExcitation::G4DNAVibExcitation(), G4eBremsstrahlung::G4eBremsstrahlung(), G4eeToHadrons::G4eeToHadrons(), G4eIonisation::G4eIonisation(), G4ePairProduction::G4ePairProduction(), G4eplusAnnihilation::G4eplusAnnihilation(), G4FastSimulationManagerProcess::G4FastSimulationManagerProcess(), G4GammaConversion::G4GammaConversion(), G4GammaConversionToMuons::G4GammaConversionToMuons(), G4GammaGeneralProcess::G4GammaGeneralProcess(), G4HadronicProcess::G4HadronicProcess(), G4hhIonisation::G4hhIonisation(), G4hIonisation::G4hIonisation(), G4ionIonisation::G4ionIonisation(), G4ITTransportation(), G4JAEAElasticScattering::G4JAEAElasticScattering(), G4MicroElecElastic::G4MicroElecElastic(), G4MicroElecInelastic::G4MicroElecInelastic(), G4MicroElecLOPhononScattering::G4MicroElecLOPhononScattering(), G4MicroElecSurface::G4MicroElecSurface(), G4mplIonisation::G4mplIonisation(), G4MuBremsstrahlung::G4MuBremsstrahlung(), G4MuIonisation::G4MuIonisation(), G4MuonMinusAtomicCapture::G4MuonMinusAtomicCapture(), G4MuPairProduction::G4MuPairProduction(), G4NeutronKiller::G4NeutronKiller(), G4NuclearStopping::G4NuclearStopping(), G4OpAbsorption::G4OpAbsorption(), G4OpBoundaryProcess::G4OpBoundaryProcess(), G4OpMieHG::G4OpMieHG(), G4OpRayleigh::G4OpRayleigh(), G4OpWLS::G4OpWLS(), G4OpWLS2::G4OpWLS2(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4PhotoElectricEffect::G4PhotoElectricEffect(), G4PionDecayMakeSpin::G4PionDecayMakeSpin(), G4PolarizedCompton::G4PolarizedCompton(), G4PolarizedGammaConversion::G4PolarizedGammaConversion(), G4PolarizedIonisation::G4PolarizedIonisation(), G4PolarizedPhotoElectric::G4PolarizedPhotoElectric(), G4RadioactiveDecay::G4RadioactiveDecay(), G4RayleighScattering::G4RayleighScattering(), G4Scintillation::G4Scintillation(), G4StepLimiter::G4StepLimiter(), G4SynchrotronRadiation::G4SynchrotronRadiation(), G4SynchrotronRadiationInMat::G4SynchrotronRadiationInMat(), G4TransitionRadiation::G4TransitionRadiation(), G4Transportation::G4Transportation(), G4UCNAbsorption::G4UCNAbsorption(), G4UCNBoundaryProcess::G4UCNBoundaryProcess(), G4UCNLoss::G4UCNLoss(), G4UCNMultiScattering::G4UCNMultiScattering(), G4UnknownDecay::G4UnknownDecay(), G4UserSpecialCuts::G4UserSpecialCuts(), G4VMultipleScattering::G4VMultipleScattering(), G4VTransitionRadiation::G4VTransitionRadiation(), G4VXTRenergyLoss::G4VXTRenergyLoss(), and G4Decay::SetExtDecayer().

◆ SetProcessType()

void G4VProcess::SetProcessType ( G4ProcessType  aType)
inlineinherited

Definition at line 394 of file G4VProcess.hh.

395{
396 theProcessType = aType;
397}

References G4VProcess::theProcessType.

Referenced by G4MaxTimeCuts::G4MaxTimeCuts(), and G4MinEkineCuts::G4MinEkineCuts().

◆ SetPropagatorInField()

void G4ITTransportation::SetPropagatorInField ( G4PropagatorInField pFieldPropagator)

◆ SetThresholdImportantEnergy()

void G4ITTransportation::SetThresholdImportantEnergy ( G4double  newEnImp)
inline

◆ SetThresholdTrials()

void G4ITTransportation::SetThresholdTrials ( G4int  newMaxTrials)
inline

◆ SetThresholdWarningEnergy()

void G4ITTransportation::SetThresholdWarningEnergy ( G4double  newEnWarn)
inline

◆ SetVerboseLevel()

void G4ITTransportation::SetVerboseLevel ( G4int  verboseLevel)
inline

◆ StartTracking()

void G4ITTransportation::StartTracking ( G4Track aTrack)
virtual

Reimplemented from G4VITProcess.

Reimplemented in G4DNABrownianTransportation.

Definition at line 1041 of file G4ITTransportation.cc.

1042{
1045 {
1046// G4VITProcess::fpState = new G4ITTransportationState();
1047 G4VITProcess::fpState.reset(new G4ITTransportationState());
1048 // Will set in the same time fTransportationState
1049 }
1050
1053 GetIT(track)->GetTrackingInfo()->GetTrackStateManager());
1054
1055 // The actions here are those that were taken in AlongStepGPIL
1056 // when track.GetCurrentStepNumber()==1
1057
1058 // reset safety value and center
1059 //
1060 // State(fPreviousSafety) = 0.0 ;
1061 // State(fPreviousSftOrigin) = G4ThreeVector(0.,0.,0.) ;
1062
1063 // reset looping counter -- for motion in field
1064 // State(fNoLooperTrials)= 0;
1065 // Must clear this state .. else it depends on last track's value
1066 // --> a better solution would set this from state of suspended track TODO ?
1067 // Was if( aTrack->GetCurrentStepNumber()==1 ) { .. }
1068
1069 // ChordFinder reset internal state
1070 //
1072 {
1074 // Resets all state of field propagator class (ONLY)
1075 // including safety values (in case of overlaps and to wipe for first track).
1076
1077 // G4ChordFinder* chordF= fFieldPropagator->GetChordFinder();
1078 // if( chordF ) chordF->ResetStepEstimate();
1079 }
1080
1081 // Make sure to clear the chord finders of all fields (ie managers)
1082 static G4ThreadLocal G4FieldManagerStore* fieldMgrStore = 0;
1083 if (!fieldMgrStore) fieldMgrStore = G4FieldManagerStore::GetInstance();
1084 fieldMgrStore->ClearAllChordFindersState();
1085
1086 // Update the current touchable handle (from the track's)
1087 //
1088 PrepareState()
1089 State(fCurrentTouchableHandle) = track->GetTouchableHandle();
1090
1092}
static G4FieldManagerStore * GetInstance()
virtual void StartTracking(G4Track *aTrack)
virtual void NewTrackState()
virtual void SaveTrackState(G4TrackStateManager &manager)
virtual void StartTracking(G4Track *)
Definition: G4VProcess.cc:87

References G4PropagatorInField::ClearPropagatorState(), DoesGlobalFieldExist(), fFieldPropagator, fInstantiateProcessState, fpSafetyHelper, G4VITProcess::fpState, G4ThreadLocal, G4FieldManagerStore::GetInstance(), GetIT(), G4Track::GetTouchableHandle(), G4TrackStateDependent< T >::NewTrackState(), PrepareState, G4TrackStateDependent< T >::SaveTrackState(), G4VITProcess::StartTracking(), G4VProcess::StartTracking(), and State.

Referenced by G4DNABrownianTransportation::StartTracking().

◆ StorePhysicsTable()

virtual G4bool G4VProcess::StorePhysicsTable ( const G4ParticleDefinition ,
const G4String ,
G4bool   
)
inlinevirtualinherited

◆ SubtractNumberOfInteractionLengthLeft()

void G4VITProcess::SubtractNumberOfInteractionLengthLeft ( G4double  previousStepSize)
inlineprotectedvirtualinherited

Definition at line 292 of file G4VITProcess.hh.

293{
294 if (fpState->currentInteractionLength > 0.0)
295 {
296 fpState->theNumberOfInteractionLengthLeft -= previousStepSize
297 / fpState->currentInteractionLength;
298 if (fpState->theNumberOfInteractionLengthLeft < 0.)
299 {
300 fpState->theNumberOfInteractionLengthLeft = CLHEP::perMillion;
301 }
302
303 }
304 else
305 {
306#ifdef G4VERBOSE
307 if (verboseLevel > 0)
308 {
309 G4cerr << "G4VITProcess::SubtractNumberOfInteractionLengthLeft()";
310 G4cerr << " [" << theProcessName << "]" << G4endl;
311 G4cerr << " currentInteractionLength = "
312 << fpState->currentInteractionLength << " [mm]";
313 G4cerr << " previousStepSize = " << previousStepSize << " [mm]";
314 G4cerr << G4endl;
315 }
316#endif
317 G4String msg = "Negative currentInteractionLength for ";
318 msg += theProcessName;
319 G4Exception("G4VITProcess::SubtractNumberOfInteractionLengthLeft()",
320 "ProcMan201",EventMustBeAborted,
321 msg);
322 }
323}
@ EventMustBeAborted
G4GLOB_DLL std::ostream G4cerr
static constexpr double perMillion

References EventMustBeAborted, G4VITProcess::fpState, G4cerr, G4endl, G4Exception(), CLHEP::perMillion, G4VProcess::theProcessName, and G4VProcess::verboseLevel.

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

Field Documentation

◆ aParticleChange

G4ParticleChange G4VProcess::aParticleChange
protectedinherited

◆ aProcessManager

const G4ProcessManager* G4VProcess::aProcessManager = nullptr
protectedinherited

Definition at line 319 of file G4VProcess.hh.

Referenced by G4VProcess::GetProcessManager(), and G4VProcess::SetProcessManager().

◆ currentInteractionLength

G4double* G4VITProcess::currentInteractionLength
privateinherited

Definition at line 254 of file G4VITProcess.hh.

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

◆ enableAlongStepDoIt

G4bool G4VProcess::enableAlongStepDoIt = true
protectedinherited

◆ enableAtRestDoIt

G4bool G4VProcess::enableAtRestDoIt = true
protectedinherited

◆ enablePostStepDoIt

G4bool G4VProcess::enablePostStepDoIt = true
protectedinherited

◆ fFieldPropagator

G4PropagatorInField* G4ITTransportation::fFieldPropagator
protected

◆ fInstantiateProcessState

G4bool G4ITTransportation::fInstantiateProcessState
private

◆ fLinearNavigator

G4ITNavigator* G4ITTransportation::fLinearNavigator
protected

◆ fMaxEnergyKilled

G4double G4ITTransportation::fMaxEnergyKilled
protected

Definition at line 241 of file G4ITTransportation.hh.

Referenced by AlongStepDoIt(), G4ITTransportation(), and ~G4ITTransportation().

◆ fNbProcess

size_t * G4VITProcess::fNbProcess = 0
privateinherited

◆ fParticleChange

G4ParticleChangeForTransport G4ITTransportation::fParticleChange
protected

◆ fProcessID

size_t G4VITProcess::fProcessID
privateinherited

◆ fProcessTable

G4ProcessTable* G4VProcess::fProcessTable = nullptr
privateinherited

Definition at line 374 of file G4VProcess.hh.

Referenced by G4VProcess::G4VProcess(), and G4VProcess::~G4VProcess().

◆ fProposesTimeStep

G4bool G4VITProcess::fProposesTimeStep
protectedinherited

◆ fpSafetyHelper

G4ITSafetyHelper* G4ITTransportation::fpSafetyHelper
protected

◆ fpState

G4shared_ptr<G4ProcessState> G4VITProcess::fpState
protectedinherited

◆ fShortStepOptimisation

G4bool G4ITTransportation::fShortStepOptimisation
protected

◆ fSumEnergyKilled

G4double G4ITTransportation::fSumEnergyKilled
protected

Definition at line 240 of file G4ITTransportation.hh.

Referenced by AlongStepDoIt(), G4ITTransportation(), and ~G4ITTransportation().

◆ fThreshold_Important_Energy

G4double G4ITTransportation::fThreshold_Important_Energy
protected

Definition at line 232 of file G4ITTransportation.hh.

Referenced by AlongStepDoIt(), and G4ITTransportation().

◆ fThreshold_Warning_Energy

G4double G4ITTransportation::fThreshold_Warning_Energy
protected

Definition at line 231 of file G4ITTransportation.hh.

Referenced by AlongStepDoIt(), and G4ITTransportation().

◆ fThresholdTrials

G4int G4ITTransportation::fThresholdTrials
protected

Definition at line 233 of file G4ITTransportation.hh.

Referenced by AlongStepDoIt(), and G4ITTransportation().

◆ fUnimportant_Energy

G4double G4ITTransportation::fUnimportant_Energy
protected

Definition at line 236 of file G4ITTransportation.hh.

Referenced by G4ITTransportation().

◆ fVerboseLevel

G4int G4ITTransportation::fVerboseLevel
protected

◆ masterProcessShadow

G4VProcess* G4VProcess::masterProcessShadow = nullptr
privateinherited

Definition at line 370 of file G4VProcess.hh.

Referenced by G4VProcess::GetMasterProcess(), and G4VProcess::SetMasterProcess().

◆ pParticleChange

G4VParticleChange* G4VProcess::pParticleChange = nullptr
protectedinherited

Definition at line 321 of file G4VProcess.hh.

Referenced by G4VMultipleScattering::AddEmModel(), G4VEmProcess::AddEmModel(), G4VEnergyLossProcess::AddEmModel(), G4ImportanceProcess::AlongStepDoIt(), G4WeightCutOffProcess::AlongStepDoIt(), G4WeightWindowProcess::AlongStepDoIt(), G4VContinuousDiscreteProcess::AlongStepDoIt(), G4VContinuousProcess::AlongStepDoIt(), G4VRestContinuousDiscreteProcess::AlongStepDoIt(), G4VRestContinuousProcess::AlongStepDoIt(), G4ParallelWorldProcess::AlongStepDoIt(), G4ParallelWorldScoringProcess::AlongStepDoIt(), G4VITRestProcess::AtRestDoIt(), G4VRestContinuousDiscreteProcess::AtRestDoIt(), G4VRestContinuousProcess::AtRestDoIt(), G4VRestDiscreteProcess::AtRestDoIt(), G4VRestProcess::AtRestDoIt(), G4ParallelWorldProcess::AtRestDoIt(), G4ParallelWorldScoringProcess::AtRestDoIt(), G4ScoreSplittingProcess::AtRestDoIt(), G4VITRestDiscreteProcess::AtRestDoIt(), G4eplusAnnihilation::AtRestDoIt(), G4DNAElectronHoleRecombination::Create(), G4DNASecondOrderReaction::Create(), G4VEnergyLossProcess::FillSecondariesAlongStep(), G4Decay::G4Decay(), G4DNAMolecularDissociation::G4DNAMolecularDissociation(), G4DNAScavengerProcess::G4DNAScavengerProcess(), G4ImportanceProcess::G4ImportanceProcess(), G4ITTransportation(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4ParallelWorldScoringProcess::G4ParallelWorldScoringProcess(), G4RadioactiveDecay::G4RadioactiveDecay(), G4ScoreSplittingProcess::G4ScoreSplittingProcess(), G4Transportation::G4Transportation(), G4UnknownDecay::G4UnknownDecay(), G4VEmProcess::G4VEmProcess(), G4VEnergyLossProcess::G4VEnergyLossProcess(), G4VMultipleScattering::G4VMultipleScattering(), G4VProcess::G4VProcess(), G4VXTRenergyLoss::G4VXTRenergyLoss(), G4WeightCutOffProcess::G4WeightCutOffProcess(), G4WeightWindowProcess::G4WeightWindowProcess(), G4VITDiscreteProcess::PostStepDoIt(), G4VContinuousDiscreteProcess::PostStepDoIt(), G4VDiscreteProcess::PostStepDoIt(), G4VRestContinuousDiscreteProcess::PostStepDoIt(), G4VRestDiscreteProcess::PostStepDoIt(), G4ParallelWorldProcess::PostStepDoIt(), G4ParallelWorldScoringProcess::PostStepDoIt(), G4ScoreSplittingProcess::PostStepDoIt(), G4NeutronKiller::PostStepDoIt(), G4VITRestDiscreteProcess::PostStepDoIt(), G4LowECapture::PostStepDoIt(), G4VEmProcess::PostStepDoIt(), G4VEnergyLossProcess::PostStepDoIt(), G4Cerenkov::PostStepDoIt(), and G4VTransitionRadiation::PostStepDoIt().

◆ theInitialNumberOfInteractionLength

G4double G4VProcess::theInitialNumberOfInteractionLength = -1.0
protectedinherited

◆ theInteractionTimeLeft

G4double* G4VITProcess::theInteractionTimeLeft
privateinherited

◆ theNumberOfInteractionLengthLeft

G4double* G4VITProcess::theNumberOfInteractionLengthLeft
privateinherited

Definition at line 253 of file G4VITProcess.hh.

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

◆ thePhysicsTableFileName

G4String G4VProcess::thePhysicsTableFileName
protectedinherited

Definition at line 344 of file G4VProcess.hh.

Referenced by G4VProcess::GetPhysicsTableFileName().

◆ thePILfactor

G4double G4VProcess::thePILfactor = 1.0
protectedinherited

◆ theProcessName

G4String G4VProcess::theProcessName
protectedinherited

◆ theProcessSubType

G4int G4VProcess::theProcessSubType = -1
protectedinherited

◆ theProcessType

G4ProcessType G4VProcess::theProcessType = fNotDefined
protectedinherited

◆ verboseLevel

G4int G4VProcess::verboseLevel = 0
protectedinherited

Definition at line 356 of file G4VProcess.hh.

Referenced by G4VEnergyLossProcess::ActivateForcedInteraction(), G4VEmProcess::ActivateForcedInteraction(), G4VEmProcess::ActivateSecondaryBiasing(), G4VEnergyLossProcess::ActivateSecondaryBiasing(), G4LowECapture::AddRegion(), G4CoupledTransportation::AlongStepDoIt(), G4Transportation::AlongStepDoIt(), G4VContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4ParallelWorldProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4CoupledTransportation::AlongStepGetPhysicalInteractionLength(), G4Transportation::AlongStepGetPhysicalInteractionLength(), G4VContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4hImpactIonisation::AntiProtonParametrisedDEDX(), G4ParallelWorldScoringProcess::AtRestDoIt(), G4VRestContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousProcess::AtRestGetPhysicalInteractionLength(), G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestProcess::AtRestGetPhysicalInteractionLength(), G4VRestProcess::AtRestGetPhysicalInteractionLength(), G4VXTRenergyLoss::BuildAngleForEnergyBank(), G4VXTRenergyLoss::BuildAngleTable(), G4VEnergyLossProcess::BuildDEDXTable(), G4VXTRenergyLoss::BuildEnergyTable(), G4VXTRenergyLoss::BuildGlobalAngleTable(), G4VEmProcess::BuildLambdaTable(), G4hImpactIonisation::BuildLambdaTable(), G4VEnergyLossProcess::BuildLambdaTable(), G4hImpactIonisation::BuildLossTable(), G4DNABrownianTransportation::BuildPhysicsTable(), G4GammaGeneralProcess::BuildPhysicsTable(), G4LowECapture::BuildPhysicsTable(), G4VEmProcess::BuildPhysicsTable(), G4VEnergyLossProcess::BuildPhysicsTable(), G4VMultipleScattering::BuildPhysicsTable(), G4SynchrotronRadiation::BuildPhysicsTable(), G4VXTRenergyLoss::BuildPhysicsTable(), G4hImpactIonisation::BuildPhysicsTable(), G4ChargeExchangeProcess::BuildPhysicsTable(), G4OpRayleigh::CalculateRayleighMeanFreePaths(), G4PolarizedAnnihilation::ComputeSaturationFactor(), G4PolarizedCompton::ComputeSaturationFactor(), G4PolarizedIonisation::ComputeSaturationFactor(), G4DNAElectronHoleRecombination::Create(), G4DNASecondOrderReaction::Create(), G4VPhononProcess::CreateSecondary(), G4VProcess::EndTracking(), G4VEmProcess::FindLambdaMax(), G4Cerenkov::G4Cerenkov(), G4ChargeExchangeProcess::G4ChargeExchangeProcess(), G4CoupledTransportation::G4CoupledTransportation(), G4DNAMolecularDissociation::G4DNAMolecularDissociation(), G4DNAScavengerProcess::G4DNAScavengerProcess(), G4ErrorEnergyLoss::G4ErrorEnergyLoss(), G4FastSimulationManagerProcess::G4FastSimulationManagerProcess(), G4GaussXTRadiator::G4GaussXTRadiator(), G4ImportanceProcess::G4ImportanceProcess(), G4MaxTimeCuts::G4MaxTimeCuts(), G4MicroElecSurface::G4MicroElecSurface(), G4MinEkineCuts::G4MinEkineCuts(), G4OpAbsorption::G4OpAbsorption(), G4OpBoundaryProcess::G4OpBoundaryProcess(), G4OpMieHG::G4OpMieHG(), G4OpRayleigh::G4OpRayleigh(), G4OpWLS::G4OpWLS(), G4OpWLS2::G4OpWLS2(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4ParallelWorldScoringProcess::G4ParallelWorldScoringProcess(), G4PolarizedIonisation::G4PolarizedIonisation(), G4Scintillation::G4Scintillation(), G4ScoreSplittingProcess::G4ScoreSplittingProcess(), G4SpecialCuts::G4SpecialCuts(), G4StepLimiter::G4StepLimiter(), G4StrawTubeXTRadiator::G4StrawTubeXTRadiator(), G4SynchrotronRadiation::G4SynchrotronRadiation(), G4TransparentRegXTRadiator::G4TransparentRegXTRadiator(), G4Transportation::G4Transportation(), G4UCNAbsorption::G4UCNAbsorption(), G4UCNBoundaryProcess::G4UCNBoundaryProcess(), G4UCNLoss::G4UCNLoss(), G4UCNMultiScattering::G4UCNMultiScattering(), G4UserSpecialCuts::G4UserSpecialCuts(), G4VXTRenergyLoss::G4VXTRenergyLoss(), G4WeightCutOffProcess::G4WeightCutOffProcess(), G4WeightWindowProcess::G4WeightWindowProcess(), G4VXTRenergyLoss::GetAngleVector(), G4ChargeExchangeProcess::GetElementCrossSection(), G4VXTRenergyLoss::GetGasZmuProduct(), G4PhononDownconversion::GetMeanFreePath(), G4PhononScattering::GetMeanFreePath(), G4PolarizedCompton::GetMeanFreePath(), G4VXTRenergyLoss::GetMeanFreePath(), G4UCNAbsorption::GetMeanFreePath(), G4PolarizedAnnihilation::GetMeanFreePath(), G4PolarizedIonisation::GetMeanFreePath(), G4SynchrotronRadiation::GetMeanFreePath(), G4VXTRenergyLoss::GetNumberOfPhotons(), G4VXTRenergyLoss::GetPlateZmuProduct(), G4SynchrotronRadiation::GetRandomEnergySR(), G4VProcess::GetVerboseLevel(), G4hhIonisation::InitialiseEnergyLossProcess(), G4eeToHadrons::InitialiseProcess(), G4hImpactIonisation::InitializeMe(), G4UCNBoundaryProcess::MRreflect(), G4UCNBoundaryProcess::MRreflectHigh(), G4DNASecondOrderReaction::PostStepDoIt(), G4ParallelWorldScoringProcess::PostStepDoIt(), G4ScoreSplittingProcess::PostStepDoIt(), G4DNAScavengerProcess::PostStepDoIt(), G4VEmProcess::PostStepDoIt(), G4NeutrinoElectronProcess::PostStepDoIt(), G4UCNAbsorption::PostStepDoIt(), G4UCNBoundaryProcess::PostStepDoIt(), G4UCNLoss::PostStepDoIt(), G4UCNMultiScattering::PostStepDoIt(), G4MicroElecSurface::PostStepDoIt(), G4Cerenkov::PostStepDoIt(), G4Scintillation::PostStepDoIt(), G4VXTRenergyLoss::PostStepDoIt(), G4ElNeutrinoNucleusProcess::PostStepDoIt(), G4HadronElasticProcess::PostStepDoIt(), G4MuNeutrinoNucleusProcess::PostStepDoIt(), G4OpAbsorption::PostStepDoIt(), G4OpBoundaryProcess::PostStepDoIt(), G4OpMieHG::PostStepDoIt(), G4OpRayleigh::PostStepDoIt(), G4OpWLS::PostStepDoIt(), G4OpWLS2::PostStepDoIt(), G4CoupledTransportation::PostStepDoIt(), G4VITDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength(), G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4DNAScavengerProcess::PostStepGetPhysicalInteractionLength(), G4PolarizedAnnihilation::PostStepGetPhysicalInteractionLength(), G4PolarizedCompton::PostStepGetPhysicalInteractionLength(), G4PolarizedIonisation::PostStepGetPhysicalInteractionLength(), G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength(), G4GammaGeneralProcess::PreparePhysicsTable(), G4VEmProcess::PreparePhysicsTable(), G4VEnergyLossProcess::PreparePhysicsTable(), G4VMultipleScattering::PreparePhysicsTable(), G4hImpactIonisation::ProtonParametrisedDEDX(), G4UCNBoundaryProcess::Reflect(), G4CoupledTransportation::ReportInexactEnergy(), G4CoupledTransportation::ReportMissingLogger(), G4GammaGeneralProcess::RetrievePhysicsTable(), G4VEmProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrieveTable(), G4VEmProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCSDARangeTable(), G4CoupledTransportation::SetHighLooperThresholds(), G4Transportation::SetHighLooperThresholds(), G4VEnergyLossProcess::SetInverseRangeTable(), G4LowECapture::SetKinEnergyLimit(), G4NeutronKiller::SetKinEnergyLimit(), G4VEnergyLossProcess::SetLambdaTable(), G4CoupledTransportation::SetLowLooperThresholds(), G4Transportation::SetLowLooperThresholds(), G4VEnergyLossProcess::SetRangeTableForLoss(), G4VEnergyLossProcess::SetSecondaryRangeTable(), G4NeutronKiller::SetTimeLimit(), G4VProcess::SetVerboseLevel(), G4Cerenkov::SetVerboseLevel(), G4Scintillation::SetVerboseLevel(), G4OpAbsorption::SetVerboseLevel(), G4OpBoundaryProcess::SetVerboseLevel(), G4OpMieHG::SetVerboseLevel(), G4OpRayleigh::SetVerboseLevel(), G4OpWLS::SetVerboseLevel(), G4OpWLS2::SetVerboseLevel(), G4FastSimulationManagerProcess::SetWorldVolume(), G4GaussXTRadiator::SpectralXTRdEdx(), G4RegularXTRadiator::SpectralXTRdEdx(), G4TransparentRegXTRadiator::SpectralXTRdEdx(), G4XTRRegularRadModel::SpectralXTRdEdx(), G4VProcess::StartTracking(), G4CoupledTransportation::StartTracking(), G4VEmProcess::StorePhysicsTable(), G4VMultipleScattering::StorePhysicsTable(), G4VEnergyLossProcess::StoreTable(), G4VEnergyLossProcess::StreamInfo(), G4VEmProcess::StreamInfo(), G4VMultipleScattering::StreamInfo(), G4VITProcess::SubtractNumberOfInteractionLengthLeft(), and G4VProcess::SubtractNumberOfInteractionLengthLeft().


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