Geant4  10.02.p03
G4BiasingProcessInterface Class Reference

#include <G4BiasingProcessInterface.hh>

Inheritance diagram for G4BiasingProcessInterface:
Collaboration diagram for G4BiasingProcessInterface:

Public Member Functions

 G4BiasingProcessInterface (G4String name="biasWrapper(0)")
 
 G4BiasingProcessInterface (G4VProcess *wrappedProcess, G4bool wrappedIsAtRest, G4bool wrappedIsAlongStep, G4bool wrappedIsPostStep, G4String useThisName="")
 
 ~G4BiasingProcessInterface ()
 
G4VProcessGetWrappedProcess () const
 
G4VBiasingOperatorGetCurrentBiasingOperator () const
 
G4VBiasingOperatorGetPreviousBiasingOperator () const
 
G4VBiasingOperationGetCurrentNonPhysicsBiasingOperation () const
 
G4VBiasingOperationGetPreviousNonPhysicsBiasingOperation () const
 
G4VBiasingOperationGetCurrentOccurenceBiasingOperation () const
 
G4VBiasingOperationGetPreviousOccurenceBiasingOperation () const
 
G4VBiasingOperationGetCurrentFinalStateBiasingOperation () const
 
G4VBiasingOperationGetPreviousFinalStateBiasingOperation () const
 
const std::vector< const G4BiasingProcessInterface *> & GetBiasingProcessInterfaces () const
 
const std::vector< const G4BiasingProcessInterface *> & GetPhysicsBiasingProcessInterfaces () const
 
const std::vector< const G4BiasingProcessInterface *> & GetNonPhysicsBiasingProcessInterfaces () const
 
const G4BiasingProcessSharedDataGetSharedData () const
 
G4bool GetIsFirstPostStepGPILInterface (G4bool physOnly=true) const
 
G4bool GetIsLastPostStepGPILInterface (G4bool physOnly=true) const
 
G4bool GetIsFirstPostStepDoItInterface (G4bool physOnly=true) const
 
G4bool GetIsLastPostStepDoItInterface (G4bool physOnly=true) const
 
G4bool IsFirstPostStepGPILInterface (G4bool physOnly=true) const
 
G4bool IsLastPostStepGPILInterface (G4bool physOnly=true) const
 
G4bool IsFirstPostStepDoItInterface (G4bool physOnly=true) const
 
G4bool IsLastPostStepDoItInterface (G4bool physOnly=true) const
 
G4bool GetWrappedProcessIsAtRest () const
 
G4bool GetWrappedProcessIsAlong () const
 
G4bool GetWrappedProcessIsPost () const
 
G4double GetPreviousStepSize () const
 
G4double GetCurrentMinimumStep () const
 
G4double GetProposedSafety () const
 
void SetProposedSafety (G4double sft)
 
G4double GetPostStepGPIL () const
 
G4double GetAlongStepGPIL () const
 
void StartTracking (G4Track *track)
 
void EndTracking ()
 
virtual G4double PostStepGetPhysicalInteractionLength (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
virtual G4VParticleChange * PostStepDoIt (const G4Track &track, const G4Step &step)
 
virtual G4double AlongStepGetPhysicalInteractionLength (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
 
virtual G4VParticleChange * AlongStepDoIt (const G4Track &track, const G4Step &step)
 
virtual G4double AtRestGetPhysicalInteractionLength (const G4Track &, G4ForceCondition *)
 
virtual G4VParticleChange * AtRestDoIt (const G4Track &, const G4Step &)
 
virtual G4bool IsApplicable (const G4ParticleDefinition &pd)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &pd)
 
virtual void PreparePhysicsTable (const G4ParticleDefinition &pd)
 
virtual G4bool StorePhysicsTable (const G4ParticleDefinition *pd, const G4String &s, G4bool f)
 
virtual G4bool RetrievePhysicsTable (const G4ParticleDefinition *pd, const G4String &s, G4bool f)
 
virtual void SetProcessManager (const G4ProcessManager *)
 
virtual const G4ProcessManagerGetProcessManager ()
 
virtual void ResetNumberOfInteractionLengthLeft ()
 
virtual void SetMasterProcess (G4VProcess *masterP)
 
virtual void BuildWorkerPhysicsTable (const G4ParticleDefinition &pd)
 
virtual void PrepareWorkerPhysicsTable (const G4ParticleDefinition &pd)
 
- Public Member Functions inherited from G4VProcess
 G4VProcess (const G4String &aName="NoName", G4ProcessType aType=fNotDefined)
 
 G4VProcess (const G4VProcess &right)
 
virtual ~G4VProcess ()
 
G4int operator== (const G4VProcess &right) const
 
G4int operator!= (const G4VProcess &right) const
 
G4double GetCurrentInteractionLength () const
 
void SetPILfactor (G4double value)
 
G4double GetPILfactor () const
 
G4double AlongStepGPIL (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
 
G4double AtRestGPIL (const G4Track &track, G4ForceCondition *condition)
 
G4double PostStepGPIL (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
const G4StringGetPhysicsTableFileName (const G4ParticleDefinition *, const G4String &directory, const G4String &tableName, G4bool ascii=false)
 
const G4StringGetProcessName () const
 
G4ProcessType GetProcessType () const
 
void SetProcessType (G4ProcessType)
 
G4int GetProcessSubType () const
 
void SetProcessSubType (G4int)
 
G4double GetNumberOfInteractionLengthLeft () const
 
G4double GetTotalNumberOfInteractionLengthTraversed () const
 
G4bool isAtRestDoItIsEnabled () const
 
G4bool isAlongStepDoItIsEnabled () const
 
G4bool isPostStepDoItIsEnabled () const
 
virtual void DumpInfo () const
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
const G4VProcessGetMasterProcess () const
 

Static Public Member Functions

static const G4BiasingProcessSharedDataGetSharedData (const G4ProcessManager *)
 
- Static Public Member Functions inherited from G4VProcess
static const G4StringGetProcessTypeName (G4ProcessType)
 

Private Member Functions

void SetUpFirstLastFlags ()
 
void ResetForUnbiasedTracking ()
 
void ReorderBiasingVectorAsGPIL ()
 
G4int IdxFirstLast (G4int firstLast, G4int GPILDoIt, G4int physAll) const
 
void InvokeWrappedProcessPostStepGPIL (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 

Private Attributes

G4Track * fCurrentTrack
 
G4double fPreviousStepSize
 
G4double fCurrentMinimumStep
 
G4double fProposedSafety
 
G4VBiasingOperationfOccurenceBiasingOperation
 
G4VBiasingOperationfFinalStateBiasingOperation
 
G4VBiasingOperationfNonPhysicsBiasingOperation
 
G4VBiasingOperationfPreviousOccurenceBiasingOperation
 
G4VBiasingOperationfPreviousFinalStateBiasingOperation
 
G4VBiasingOperationfPreviousNonPhysicsBiasingOperation
 
G4bool fResetWrappedProcessInteractionLength
 
G4VProcessfWrappedProcess
 
const G4bool fIsPhysicsBasedBiasing
 
const G4bool fWrappedProcessIsAtRest
 
const G4bool fWrappedProcessIsAlong
 
const G4bool fWrappedProcessIsPost
 
G4double fWrappedProcessPostStepGPIL
 
G4double fBiasingPostStepGPIL
 
G4double fWrappedProcessInteractionLength
 
G4ForceCondition fWrappedProcessForceCondition
 
G4ForceCondition fBiasingForceCondition
 
G4double fWrappedProcessAlongStepGPIL
 
G4double fBiasingAlongStepGPIL
 
G4GPILSelection fWrappedProcessGPILSelection
 
G4GPILSelection fBiasingGPILSelection
 
const G4VBiasingInteractionLawfBiasingInteractionLaw
 
const G4VBiasingInteractionLawfPreviousBiasingInteractionLaw
 
G4InteractionLawPhysicalfPhysicalInteractionLaw
 
G4ParticleChangeForOccurenceBiasingfOccurenceBiasingParticleChange
 
G4ParticleChange * fParticleChange
 
G4ParticleChangeForNothingfDummyParticleChange
 
G4bool fFirstLastFlags [8]
 
G4bool fIamFirstGPIL
 
const G4ProcessManagerfProcessManager
 
G4BiasingProcessSharedDatafSharedData
 

Static Private Attributes

static G4Cache< G4boolfResetInteractionLaws
 
static G4Cache< G4boolfCommonStart
 
static G4Cache< G4boolfCommonEnd
 
static G4Cache< G4boolfDoCommonConfigure
 
static G4MapCache< const G4ProcessManager *, G4BiasingProcessSharedData *> fSharedDataMap
 

Additional Inherited Members

- Protected Member Functions inherited from G4VProcess
void SubtractNumberOfInteractionLengthLeft (G4double previousStepSize)
 
void ClearNumberOfInteractionLengthLeft ()
 
- Protected Attributes inherited from G4VProcess
const G4ProcessManageraProcessManager
 
G4VParticleChange * pParticleChange
 
G4ParticleChange aParticleChange
 
G4double theNumberOfInteractionLengthLeft
 
G4double currentInteractionLength
 
G4double theInitialNumberOfInteractionLength
 
G4String theProcessName
 
G4String thePhysicsTableFileName
 
G4ProcessType theProcessType
 
G4int theProcessSubType
 
G4double thePILfactor
 
G4bool enableAtRestDoIt
 
G4bool enableAlongStepDoIt
 
G4bool enablePostStepDoIt
 
G4int verboseLevel
 

Detailed Description

Definition at line 71 of file G4BiasingProcessInterface.hh.

Constructor & Destructor Documentation

◆ G4BiasingProcessInterface() [1/2]

G4BiasingProcessInterface::G4BiasingProcessInterface ( G4String  name = "biasWrapper(0)")

Definition at line 44 of file G4BiasingProcessInterface.cc.

45  : G4VProcess ( name ),
46  fCurrentTrack ( nullptr ),
47  fPreviousStepSize (-1.0), fCurrentMinimumStep( -1.0 ), fProposedSafety ( -1.0),
51  fWrappedProcess ( nullptr ),
52  fIsPhysicsBasedBiasing ( false ),
53  fWrappedProcessIsAtRest ( false ),
54  fWrappedProcessIsAlong ( false ),
55  fWrappedProcessIsPost ( false ),
57  fBiasingPostStepGPIL ( -1.0 ),
59  fWrappedProcessForceCondition ( NotForced ),
60  fBiasingForceCondition ( NotForced ),
62  fBiasingAlongStepGPIL ( -1.0 ),
63  fWrappedProcessGPILSelection ( NotCandidateForSelection ),
64  fBiasingGPILSelection ( NotCandidateForSelection ),
65  fBiasingInteractionLaw ( nullptr ),
67  fPhysicalInteractionLaw ( nullptr ),
69  fIamFirstGPIL ( false ),
70  fProcessManager ( nullptr ),
71  fSharedData ( nullptr )
72 {
73  for (G4int i = 0 ; i < 8 ; i++) fFirstLastFlags[i] = false;
74  fResetInteractionLaws.Put( true );
75  fCommonStart.Put(true);
76  fCommonEnd.Put(true);
77  fDoCommonConfigure.Put(true);
78 }
void Put(const value_type &val) const
Definition: G4Cache.hh:286
G4VBiasingOperation * fPreviousFinalStateBiasingOperation
G4VBiasingOperation * fFinalStateBiasingOperation
static G4Cache< G4bool > fCommonEnd
G4VBiasingOperation * fNonPhysicsBiasingOperation
static G4Cache< G4bool > fResetInteractionLaws
G4VProcess(const G4String &aName="NoName", G4ProcessType aType=fNotDefined)
Definition: G4VProcess.cc:52
static G4Cache< G4bool > fDoCommonConfigure
G4VBiasingOperation * fPreviousOccurenceBiasingOperation
const G4ProcessManager * fProcessManager
int G4int
Definition: G4Types.hh:78
const G4VBiasingInteractionLaw * fPreviousBiasingInteractionLaw
static G4Cache< G4bool > fCommonStart
const G4VBiasingInteractionLaw * fBiasingInteractionLaw
G4VBiasingOperation * fPreviousNonPhysicsBiasingOperation
G4VBiasingOperation * fOccurenceBiasingOperation
G4ParticleChangeForOccurenceBiasing * fOccurenceBiasingParticleChange
G4InteractionLawPhysical * fPhysicalInteractionLaw
G4BiasingProcessSharedData * fSharedData
Here is the call graph for this function:

◆ G4BiasingProcessInterface() [2/2]

G4BiasingProcessInterface::G4BiasingProcessInterface ( G4VProcess wrappedProcess,
G4bool  wrappedIsAtRest,
G4bool  wrappedIsAlongStep,
G4bool  wrappedIsPostStep,
G4String  useThisName = "" 
)

Definition at line 81 of file G4BiasingProcessInterface.cc.

84  : G4VProcess( useThisName != "" ? useThisName : "biasWrapper("+wrappedProcess->GetProcessName()+")",
85  wrappedProcess->GetProcessType()),
86  fCurrentTrack ( nullptr ),
87  fPreviousStepSize (-1.0), fCurrentMinimumStep( -1.0 ), fProposedSafety ( -1.0),
90  fWrappedProcess ( wrappedProcess ),
91  fIsPhysicsBasedBiasing ( true ),
92  fWrappedProcessIsAtRest ( wrappedIsAtRest ),
93  fWrappedProcessIsAlong ( wrappedIsAlongStep ),
94  fWrappedProcessIsPost ( wrappedIsPostStep ),
96  fBiasingPostStepGPIL ( -1.0 ),
98  fWrappedProcessForceCondition ( NotForced ),
99  fBiasingForceCondition ( NotForced ),
101  fBiasingAlongStepGPIL ( -1.0 ),
102  fWrappedProcessGPILSelection ( NotCandidateForSelection ),
103  fBiasingGPILSelection ( NotCandidateForSelection ),
104  fBiasingInteractionLaw ( nullptr ),
105  fPreviousBiasingInteractionLaw ( nullptr ),
106  fPhysicalInteractionLaw ( nullptr ),
108  fIamFirstGPIL ( false ),
109  fProcessManager ( nullptr ),
110  fSharedData ( nullptr )
111 {
112  for (G4int i = 0 ; i < 8 ; i++) fFirstLastFlags[i] = false;
113  fResetInteractionLaws.Put( true );
114  fCommonStart.Put(true);
115  fCommonEnd.Put(true);
116  fDoCommonConfigure.Put(true);
117 
119 
120  // -- create physical interaction law:
121  fPhysicalInteractionLaw = new G4InteractionLawPhysical("PhysicalInteractionLawFor("+GetProcessName()+")");
122  // -- instantiate particle change wrapper for occurence biaising:
124  fParticleChange = new G4ParticleChange();
125  // -- instantiate a "do nothing" particle change:
127 }
void Put(const value_type &val) const
Definition: G4Cache.hh:286
G4VBiasingOperation * fPreviousFinalStateBiasingOperation
G4VBiasingOperation * fFinalStateBiasingOperation
static G4Cache< G4bool > fCommonEnd
G4VBiasingOperation * fNonPhysicsBiasingOperation
static G4Cache< G4bool > fResetInteractionLaws
G4VProcess(const G4String &aName="NoName", G4ProcessType aType=fNotDefined)
Definition: G4VProcess.cc:52
static G4Cache< G4bool > fDoCommonConfigure
G4ParticleChangeForNothing * fDummyParticleChange
G4VBiasingOperation * fPreviousOccurenceBiasingOperation
const G4ProcessManager * fProcessManager
int G4int
Definition: G4Types.hh:78
const G4VBiasingInteractionLaw * fPreviousBiasingInteractionLaw
G4int GetProcessSubType() const
Definition: G4VProcess.hh:426
const G4String & GetProcessName() const
Definition: G4VProcess.hh:408
static G4Cache< G4bool > fCommonStart
const G4VBiasingInteractionLaw * fBiasingInteractionLaw
G4VBiasingOperation * fPreviousNonPhysicsBiasingOperation
void SetProcessSubType(G4int)
Definition: G4VProcess.hh:432
G4VBiasingOperation * fOccurenceBiasingOperation
G4ParticleChangeForOccurenceBiasing * fOccurenceBiasingParticleChange
G4ProcessType GetProcessType() const
Definition: G4VProcess.hh:414
G4InteractionLawPhysical * fPhysicalInteractionLaw
G4BiasingProcessSharedData * fSharedData
Here is the call graph for this function:

◆ ~G4BiasingProcessInterface()

G4BiasingProcessInterface::~G4BiasingProcessInterface ( )

Definition at line 131 of file G4BiasingProcessInterface.cc.

132 {
135  if ( fParticleChange ) delete fParticleChange;
137 }
G4ParticleChangeForNothing * fDummyParticleChange
G4ParticleChangeForOccurenceBiasing * fOccurenceBiasingParticleChange
G4InteractionLawPhysical * fPhysicalInteractionLaw

Member Function Documentation

◆ AlongStepDoIt()

G4VParticleChange * G4BiasingProcessInterface::AlongStepDoIt ( const G4Track &  track,
const G4Step &  step 
)
virtual

Implements G4VProcess.

Definition at line 584 of file G4BiasingProcessInterface.cc.

586 {
587  // ---------------------------------------
588  // -- case outside of volume with biasing:
589  // ---------------------------------------
591  {
593  else
594  {
596  return fDummyParticleChange;
597  }
598  }
599 
600  // -----------------------------------
601  // -- case inside volume with biasing:
602  // -----------------------------------
604  else
605  {
607  fOccurenceBiasingParticleChange->ProposeTrackStatus( track.GetTrackStatus() );
608  }
609  G4double weightForNonInteraction (1.0);
610  if ( fBiasingInteractionLaw != 0 )
611  {
612  weightForNonInteraction =
614  fBiasingInteractionLaw ->ComputeNonInteractionProbabilityAt(step.GetStepLength());
615 
616  fOccurenceBiasingOperation->AlongMoveBy( this, &step, weightForNonInteraction );
617 
618  if ( weightForNonInteraction <= 0. )
619  {
621  ed << " Negative non interaction weight : w_NI = " << weightForNonInteraction <<
622  " p_NI(phys) = " << fPhysicalInteractionLaw->ComputeNonInteractionProbabilityAt(step.GetStepLength()) <<
623  " p_NI(bias) = " << fBiasingInteractionLaw ->ComputeNonInteractionProbabilityAt(step.GetStepLength()) <<
624  " step length = " << step.GetStepLength() <<
625  " biasing interaction law = `" << fBiasingInteractionLaw->GetName() << "'" << G4endl;
626  G4Exception(" G4BiasingProcessInterface::AlongStepDoIt(...)",
627  "BIAS.GEN.04",
628  JustWarning,
629  ed);
630  }
631 
632  }
633 
635 
637 
638 }
virtual void Initialize(const G4Track &track)
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4ParticleChangeForNothing * fDummyParticleChange
const G4VBiasingInteractionLaw * fBiasingInteractionLaw
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4VBiasingOperation * fOccurenceBiasingOperation
virtual G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &stepData)=0
G4ParticleChangeForOccurenceBiasing * fOccurenceBiasingParticleChange
const G4String & GetName() const
#define G4endl
Definition: G4ios.hh:61
virtual void AlongMoveBy(const G4BiasingProcessInterface *, const G4Step *, G4double)
G4InteractionLawPhysical * fPhysicalInteractionLaw
virtual G4double ComputeNonInteractionProbabilityAt(G4double length) const
G4BiasingProcessSharedData * fSharedData
double G4double
Definition: G4Types.hh:76
G4VBiasingOperator * fCurrentBiasingOperator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ AlongStepGetPhysicalInteractionLength()

G4double G4BiasingProcessInterface::AlongStepGetPhysicalInteractionLength ( const G4Track &  track,
G4double  previousStepSize,
G4double  currentMinimumStep,
G4double proposedSafety,
G4GPILSelection *  selection 
)
virtual

Implements G4VProcess.

Definition at line 506 of file G4BiasingProcessInterface.cc.

511 {
512  // -- for helper methods:
513  fCurrentMinimumStep = currentMinimumStep;
514  fProposedSafety = proposedSafety;
515 
516 
517  // -- initialization default case:
519  *selection = NotCandidateForSelection;
520  // ---------------------------------------
521  // -- case outside of volume with biasing:
522  // ---------------------------------------
524  {
527  previousStepSize,
528  currentMinimumStep,
529  proposedSafety,
530  selection);
532  }
533 
534  // --------------------------------------------------------------------
535  // -- non-physics based biasing: no along operation expected (for now):
536  // --------------------------------------------------------------------
538 
539  // ----------------------
540  // -- physics-based case:
541  // ----------------------
542  if ( fOccurenceBiasingOperation == 0 )
543  {
546  previousStepSize,
547  currentMinimumStep,
548  proposedSafety,
549  selection);
551  }
552 
553 
554  // ----------------------------------------------------------
555  // -- From here we have an valid occurence biasing operation:
556  // ----------------------------------------------------------
557  // -- Give operation opportunity to shorten step proposed by physics process:
559  G4double minimumStep = fBiasingAlongStepGPIL < currentMinimumStep ? fBiasingAlongStepGPIL : currentMinimumStep ;
560  // -- wrapped process is called with minimum step ( <= currentMinimumStep passed ) : an along process can not
561  // -- have its operation stretched over what it expects:
563  {
565  previousStepSize,
566  minimumStep,
567  proposedSafety,
568  selection);
569  fWrappedProcessGPILSelection = *selection;
571  }
572  else
573  {
576  }
577 
578  *selection = fBiasingGPILSelection;
579 
581 
582 }
virtual G4double ProposeAlongStepLimit(const G4BiasingProcessInterface *)
G4VBiasingOperation * fOccurenceBiasingOperation
virtual G4GPILSelection ProposeGPILSelection(const G4GPILSelection wrappedProcessSelection)
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)=0
G4BiasingProcessSharedData * fSharedData
double G4double
Definition: G4Types.hh:76
#define DBL_MAX
Definition: templates.hh:83
G4VBiasingOperator * fCurrentBiasingOperator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ AtRestDoIt()

G4VParticleChange * G4BiasingProcessInterface::AtRestDoIt ( const G4Track &  track,
const G4Step &  step 
)
virtual

Implements G4VProcess.

Definition at line 646 of file G4BiasingProcessInterface.cc.

648 {
649  return fWrappedProcess->AtRestDoIt(track, step);
650 }
virtual G4VParticleChange * AtRestDoIt(const G4Track &track, const G4Step &stepData)=0
Here is the call graph for this function:
Here is the caller graph for this function:

◆ AtRestGetPhysicalInteractionLength()

G4double G4BiasingProcessInterface::AtRestGetPhysicalInteractionLength ( const G4Track &  track,
G4ForceCondition *  condition 
)
virtual

Implements G4VProcess.

Definition at line 641 of file G4BiasingProcessInterface.cc.

643 {
645 }
G4double condition(const G4ErrorSymMatrix &m)
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition)=0
Here is the call graph for this function:
Here is the caller graph for this function:

◆ BuildPhysicsTable()

void G4BiasingProcessInterface::BuildPhysicsTable ( const G4ParticleDefinition pd)
virtual

Reimplemented from G4VProcess.

Definition at line 676 of file G4BiasingProcessInterface.cc.

677 {
678  // -- Sequential mode : called second (after PreparePhysicsTable(..))
679  // -- MT mode : called second (after PreparePhysicsTable(..)) by master thread.
680  // -- Corresponding process instance not used then by tracking.
681  // -- PreparePhysicsTable(...) has been called first for all processes,
682  // -- so the first/last flags and G4BiasingProcessInterface vector of processes have
683  // -- been properly setup, fIamFirstGPIL is valid.
684  if ( fWrappedProcess != 0 )
685  {
687  }
688 
689  if ( fIamFirstGPIL )
690  {
691  // -- Re-order vector of processes to match that of the GPIL
692  // -- (made for fIamFirstGPIL, but important is to have it made once):
694  // -- Let operators to configure themselves for the master thread or for sequential mode.
695  // -- Intended here is in particular the registration to physics model catalog.
696  // -- The fDoCommonConfigure is to ensure that this Configure is made by only one process (othewise each first process makes the call):
697  if ( fDoCommonConfigure.Get() )
698  {
699  for ( size_t optr = 0 ; optr < ( G4VBiasingOperator::GetBiasingOperators() ).size() ; optr ++)
701  fDoCommonConfigure.Put(false);
702  }
703 
704  }
705 }
void Put(const value_type &val) const
Definition: G4Cache.hh:286
static G4Cache< G4bool > fDoCommonConfigure
value_type & Get() const
Definition: G4Cache.hh:282
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
Definition: G4VProcess.hh:210
static const std::vector< G4VBiasingOperator *> & GetBiasingOperators()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ BuildWorkerPhysicsTable()

void G4BiasingProcessInterface::BuildWorkerPhysicsTable ( const G4ParticleDefinition pd)
virtual

Reimplemented from G4VProcess.

Definition at line 773 of file G4BiasingProcessInterface.cc.

774 {
775  // -- Sequential mode : not called
776  // -- MT mode : called after PrepareWorkerPhysicsTable(..)
777  // -- PrepareWorkerPhysicsTable(...) has been called first for all processes,
778  // -- so the first/last flags and G4BiasingProcessInterface vector of processes have
779  // -- been properly setup, fIamFirstGPIL is valid.
780  if ( fWrappedProcess != 0 )
781  {
783  }
784 
785  if ( fIamFirstGPIL )
786  {
787  // -- Re-order vector of processes to match that of the GPIL
788  // -- (made for fIamFirstGPIL, but important is to have it made once):
790  // -- Let operators to configure themselves for the worker thread, if needed.
791  // -- Registration to physics model catalog **IS NOT** to be made here, but in Configure().
792  // -- The fDoCommonConfigure is to ensure that this Configure is made by only one process (othewise each first process makes the call):
793  if ( fDoCommonConfigure.Get() )
794  {
795  for ( size_t optr = 0 ; optr < ( G4VBiasingOperator::GetBiasingOperators() ).size() ; optr ++)
796  ( G4VBiasingOperator::GetBiasingOperators() )[optr]->ConfigureForWorker( );
797  fDoCommonConfigure.Put(false);
798  }
799  }
800 }
void Put(const value_type &val) const
Definition: G4Cache.hh:286
static G4Cache< G4bool > fDoCommonConfigure
value_type & Get() const
Definition: G4Cache.hh:282
virtual void BuildWorkerPhysicsTable(const G4ParticleDefinition &part)
Definition: G4VProcess.cc:202
static const std::vector< G4VBiasingOperator *> & GetBiasingOperators()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ EndTracking()

void G4BiasingProcessInterface::EndTracking ( )
virtual

Reimplemented from G4VProcess.

Definition at line 186 of file G4BiasingProcessInterface.cc.

187 {
191 
192  // -- Inform operators of end of tracking:
193  if ( fCommonEnd.Get() )
194  {
195  fCommonEnd.Put( false );// = false;
196  fCommonStart.Put( true );// = true;
197 
198  for ( size_t optr = 0 ; optr < ( G4VBiasingOperator::GetBiasingOperators() ).size() ; optr ++)
200 
201  // -- §§ for above loop, do as in StartTracking.
202  }
203 }
void Put(const value_type &val) const
Definition: G4Cache.hh:286
static G4Cache< G4bool > fCommonEnd
value_type & Get() const
Definition: G4Cache.hh:282
static G4Cache< G4bool > fCommonStart
const G4VBiasingInteractionLaw * fBiasingInteractionLaw
static const std::vector< G4VBiasingOperator *> & GetBiasingOperators()
G4BiasingProcessSharedData * fSharedData
virtual void EndTracking()
Definition: G4VProcess.cc:113
G4VBiasingOperator * fCurrentBiasingOperator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetAlongStepGPIL()

G4double G4BiasingProcessInterface::GetAlongStepGPIL ( ) const
inline

Definition at line 155 of file G4BiasingProcessInterface.hh.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetBiasingProcessInterfaces()

const std::vector< const G4BiasingProcessInterface* >& G4BiasingProcessInterface::GetBiasingProcessInterfaces ( ) const
inline

Definition at line 108 of file G4BiasingProcessInterface.hh.

109  {return fSharedData-> fPublicBiasingProcessInterfaces;}
G4BiasingProcessSharedData * fSharedData

◆ GetCurrentBiasingOperator()

G4VBiasingOperator* G4BiasingProcessInterface::GetCurrentBiasingOperator ( ) const
inline

Definition at line 94 of file G4BiasingProcessInterface.hh.

94 {return fSharedData-> fCurrentBiasingOperator; }
G4BiasingProcessSharedData * fSharedData

◆ GetCurrentFinalStateBiasingOperation()

G4VBiasingOperation* G4BiasingProcessInterface::GetCurrentFinalStateBiasingOperation ( ) const
inline

Definition at line 101 of file G4BiasingProcessInterface.hh.

101 { return fFinalStateBiasingOperation; }
G4VBiasingOperation * fFinalStateBiasingOperation

◆ GetCurrentMinimumStep()

G4double G4BiasingProcessInterface::GetCurrentMinimumStep ( ) const
inline

Definition at line 150 of file G4BiasingProcessInterface.hh.

◆ GetCurrentNonPhysicsBiasingOperation()

G4VBiasingOperation* G4BiasingProcessInterface::GetCurrentNonPhysicsBiasingOperation ( ) const
inline

Definition at line 97 of file G4BiasingProcessInterface.hh.

G4VBiasingOperation * fNonPhysicsBiasingOperation

◆ GetCurrentOccurenceBiasingOperation()

G4VBiasingOperation* G4BiasingProcessInterface::GetCurrentOccurenceBiasingOperation ( ) const
inline

Definition at line 99 of file G4BiasingProcessInterface.hh.

G4VBiasingOperation * fOccurenceBiasingOperation
Here is the caller graph for this function:

◆ GetIsFirstPostStepDoItInterface()

G4bool G4BiasingProcessInterface::GetIsFirstPostStepDoItInterface ( G4bool  physOnly = true) const

Definition at line 837 of file G4BiasingProcessInterface.cc.

838 {
839  G4int iPhys = ( physOnly ) ? 1 : 0;
840  return fFirstLastFlags[IdxFirstLast( 1, 0, iPhys)];
841 }
int G4int
Definition: G4Types.hh:78
G4int IdxFirstLast(G4int firstLast, G4int GPILDoIt, G4int physAll) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetIsFirstPostStepGPILInterface()

G4bool G4BiasingProcessInterface::GetIsFirstPostStepGPILInterface ( G4bool  physOnly = true) const

Definition at line 823 of file G4BiasingProcessInterface.cc.

824 {
825  G4int iPhys = ( physOnly ) ? 1 : 0;
826  return fFirstLastFlags[IdxFirstLast( 1, 1, iPhys)];
827 }
int G4int
Definition: G4Types.hh:78
G4int IdxFirstLast(G4int firstLast, G4int GPILDoIt, G4int physAll) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetIsLastPostStepDoItInterface()

G4bool G4BiasingProcessInterface::GetIsLastPostStepDoItInterface ( G4bool  physOnly = true) const

Definition at line 844 of file G4BiasingProcessInterface.cc.

845 {
846  G4int iPhys = ( physOnly ) ? 1 : 0;
847  return fFirstLastFlags[IdxFirstLast( 0, 0, iPhys)];
848 }
int G4int
Definition: G4Types.hh:78
G4int IdxFirstLast(G4int firstLast, G4int GPILDoIt, G4int physAll) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetIsLastPostStepGPILInterface()

G4bool G4BiasingProcessInterface::GetIsLastPostStepGPILInterface ( G4bool  physOnly = true) const

Definition at line 830 of file G4BiasingProcessInterface.cc.

831 {
832  G4int iPhys = ( physOnly ) ? 1 : 0;
833  return fFirstLastFlags[IdxFirstLast( 0, 1, iPhys)];
834 }
int G4int
Definition: G4Types.hh:78
G4int IdxFirstLast(G4int firstLast, G4int GPILDoIt, G4int physAll) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNonPhysicsBiasingProcessInterfaces()

const std::vector< const G4BiasingProcessInterface* >& G4BiasingProcessInterface::GetNonPhysicsBiasingProcessInterfaces ( ) const
inline

Definition at line 112 of file G4BiasingProcessInterface.hh.

std::vector< const G4BiasingProcessInterface *> fPublicNonPhysicsBiasingProcessInterfaces
G4BiasingProcessSharedData * fSharedData

◆ GetPhysicsBiasingProcessInterfaces()

const std::vector< const G4BiasingProcessInterface* >& G4BiasingProcessInterface::GetPhysicsBiasingProcessInterfaces ( ) const
inline

Definition at line 110 of file G4BiasingProcessInterface.hh.

111  {return fSharedData-> fPublicPhysicsBiasingProcessInterfaces;}
G4BiasingProcessSharedData * fSharedData

◆ GetPostStepGPIL()

G4double G4BiasingProcessInterface::GetPostStepGPIL ( ) const
inline

Definition at line 154 of file G4BiasingProcessInterface.hh.

Here is the caller graph for this function:

◆ GetPreviousBiasingOperator()

G4VBiasingOperator* G4BiasingProcessInterface::GetPreviousBiasingOperator ( ) const
inline

Definition at line 95 of file G4BiasingProcessInterface.hh.

G4BiasingProcessSharedData * fSharedData
G4VBiasingOperator * fPreviousBiasingOperator

◆ GetPreviousFinalStateBiasingOperation()

G4VBiasingOperation* G4BiasingProcessInterface::GetPreviousFinalStateBiasingOperation ( ) const
inline

Definition at line 102 of file G4BiasingProcessInterface.hh.

G4VBiasingOperation * fPreviousFinalStateBiasingOperation

◆ GetPreviousNonPhysicsBiasingOperation()

G4VBiasingOperation* G4BiasingProcessInterface::GetPreviousNonPhysicsBiasingOperation ( ) const
inline

Definition at line 98 of file G4BiasingProcessInterface.hh.

G4VBiasingOperation * fPreviousNonPhysicsBiasingOperation

◆ GetPreviousOccurenceBiasingOperation()

G4VBiasingOperation* G4BiasingProcessInterface::GetPreviousOccurenceBiasingOperation ( ) const
inline

Definition at line 100 of file G4BiasingProcessInterface.hh.

G4VBiasingOperation * fPreviousOccurenceBiasingOperation
Here is the caller graph for this function:

◆ GetPreviousStepSize()

G4double G4BiasingProcessInterface::GetPreviousStepSize ( ) const
inline

Definition at line 149 of file G4BiasingProcessInterface.hh.

Here is the caller graph for this function:

◆ GetProcessManager()

const G4ProcessManager * G4BiasingProcessInterface::GetProcessManager ( )
virtual

Reimplemented from G4VProcess.

Definition at line 766 of file G4BiasingProcessInterface.cc.

767 {
768  if ( fWrappedProcess != 0 ) return fWrappedProcess->GetProcessManager();
769  else return G4VProcess::GetProcessManager();
770 }
virtual const G4ProcessManager * GetProcessManager()
Definition: G4VProcess.hh:514
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetProposedSafety()

G4double G4BiasingProcessInterface::GetProposedSafety ( ) const
inline

Definition at line 151 of file G4BiasingProcessInterface.hh.

◆ GetSharedData() [1/2]

const G4BiasingProcessSharedData* G4BiasingProcessInterface::GetSharedData ( ) const
inline

Definition at line 116 of file G4BiasingProcessInterface.hh.

116 { return fSharedData; }
G4BiasingProcessSharedData * fSharedData
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetSharedData() [2/2]

const G4BiasingProcessSharedData * G4BiasingProcessInterface::GetSharedData ( const G4ProcessManager mgr)
static

Definition at line 140 of file G4BiasingProcessInterface.cc.

141 {
142  G4MapCache< const G4ProcessManager*,
143  G4BiasingProcessSharedData* >::const_iterator itr = fSharedDataMap.Find( mgr );
144  if ( itr != fSharedDataMap.End( ) )
145  {
146  return (*itr).second;
147  }
148  else return 0;
149 }
iterator End()
Definition: G4Cache.hh:411
static G4MapCache< const G4ProcessManager *, G4BiasingProcessSharedData *> fSharedDataMap
iterator Find(const key_type &k)
Definition: G4Cache.hh:417
Here is the call graph for this function:

◆ GetWrappedProcess()

G4VProcess* G4BiasingProcessInterface::GetWrappedProcess ( ) const
inline

Definition at line 86 of file G4BiasingProcessInterface.hh.

Here is the caller graph for this function:

◆ GetWrappedProcessIsAlong()

G4bool G4BiasingProcessInterface::GetWrappedProcessIsAlong ( ) const
inline

Definition at line 144 of file G4BiasingProcessInterface.hh.

◆ GetWrappedProcessIsAtRest()

G4bool G4BiasingProcessInterface::GetWrappedProcessIsAtRest ( ) const
inline

Definition at line 143 of file G4BiasingProcessInterface.hh.

◆ GetWrappedProcessIsPost()

G4bool G4BiasingProcessInterface::GetWrappedProcessIsPost ( ) const
inline

Definition at line 145 of file G4BiasingProcessInterface.hh.

◆ IdxFirstLast()

G4int G4BiasingProcessInterface::IdxFirstLast ( G4int  firstLast,
G4int  GPILDoIt,
G4int  physAll 
) const
inlineprivate

Definition at line 251 of file G4BiasingProcessInterface.hh.

252  {
253  // -- be careful : all arguments are *assumed* to be 0 or 1. No check
254  // -- for that is provided. Should be of pure internal usage.
255  return 4*firstLast + 2*GPILDoIt + physAll;
256  }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ InvokeWrappedProcessPostStepGPIL()

void G4BiasingProcessInterface::InvokeWrappedProcessPostStepGPIL ( const G4Track &  track,
G4double  previousStepSize,
G4ForceCondition *  condition 
)
private

Definition at line 968 of file G4BiasingProcessInterface.cc.

971 {
972  G4double usedPreviousStepSize = previousStepSize;
973  // -- if the physics process has been under occurence biasing in the previous step
974  // -- we reset it, as we don't know if it will be biased again or not in this
975  // -- step. The pity is that PostStepGPIL and interaction length (cross-section)
976  // -- calculations are done both in the PostStepGPIL of the process, while here we
977  // -- are just interested in the calculation of the cross-section. This is a pity
978  // -- as this forces to re-generated a random number for nothing.
980  {
983  // -- We set "previous step size" as 0.0, to let the process believe this is first step:
984  usedPreviousStepSize = 0.0;
985  }
986  // -- GPIL response:
989  // -- and (inverse) cross-section:
991 }
G4double condition(const G4ErrorSymMatrix &m)
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)=0
virtual void ResetNumberOfInteractionLengthLeft()
Definition: G4VProcess.cc:95
G4double GetCurrentInteractionLength() const
Definition: G4VProcess.hh:462
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsApplicable()

G4bool G4BiasingProcessInterface::IsApplicable ( const G4ParticleDefinition pd)
virtual

Reimplemented from G4VProcess.

Definition at line 653 of file G4BiasingProcessInterface.cc.

654 {
655  if ( fWrappedProcess != 0 ) return fWrappedProcess->IsApplicable(pd);
656  else return true;
657 }
virtual G4bool IsApplicable(const G4ParticleDefinition &)
Definition: G4VProcess.hh:205
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsFirstPostStepDoItInterface()

G4bool G4BiasingProcessInterface::IsFirstPostStepDoItInterface ( G4bool  physOnly = true) const

Definition at line 897 of file G4BiasingProcessInterface.cc.

898 {
899  G4bool isFirst = true;
901  G4int thisIdx(-1);
902  for (G4int i = 0; i < pv->size(); i++ ) if ( (*pv)(i) == this ) { thisIdx = i; break; }
903  for ( size_t i = 0; i < (fSharedData->fBiasingProcessInterfaces).size(); i++ )
904  {
905  if ( (fSharedData->fBiasingProcessInterfaces)[i]->fIsPhysicsBasedBiasing || !physOnly )
906  {
907  G4int thatIdx(-1);
908  for (G4int j = 0; j < pv->size(); j++ ) if ( (*pv)(j) == (fSharedData->fBiasingProcessInterfaces)[i] ) { thatIdx = j; break; }
909  if ( thisIdx > thatIdx )
910  {
911  isFirst = false;
912  break;
913  }
914  }
915  }
916  return isFirst;
917 }
std::vector< G4BiasingProcessInterface *> fBiasingProcessInterfaces
const G4ProcessManager * fProcessManager
G4ProcessVector * GetPostStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
int G4int
Definition: G4Types.hh:78
bool G4bool
Definition: G4Types.hh:79
G4int size() const
G4BiasingProcessSharedData * fSharedData
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsFirstPostStepGPILInterface()

G4bool G4BiasingProcessInterface::IsFirstPostStepGPILInterface ( G4bool  physOnly = true) const

Definition at line 851 of file G4BiasingProcessInterface.cc.

852 {
853  G4bool isFirst = true;
855  G4int thisIdx(-1);
856  for (G4int i = 0; i < pv->size(); i++ ) if ( (*pv)(i) == this ) { thisIdx = i; break; }
857  for ( size_t i = 0; i < (fSharedData->fBiasingProcessInterfaces).size(); i++ )
858  {
859  if ( (fSharedData->fBiasingProcessInterfaces)[i]->fIsPhysicsBasedBiasing || !physOnly )
860  {
861  G4int thatIdx(-1);
862  for (G4int j = 0; j < pv->size(); j++ ) if ( (*pv)(j) == (fSharedData->fBiasingProcessInterfaces)[i] ) { thatIdx = j; break; }
863  if ( thisIdx > thatIdx )
864  {
865  isFirst = false;
866  break;
867  }
868  }
869  }
870  return isFirst;
871 }
std::vector< G4BiasingProcessInterface *> fBiasingProcessInterfaces
const G4ProcessManager * fProcessManager
G4ProcessVector * GetPostStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
int G4int
Definition: G4Types.hh:78
bool G4bool
Definition: G4Types.hh:79
G4int size() const
G4BiasingProcessSharedData * fSharedData
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsLastPostStepDoItInterface()

G4bool G4BiasingProcessInterface::IsLastPostStepDoItInterface ( G4bool  physOnly = true) const

Definition at line 920 of file G4BiasingProcessInterface.cc.

921 {
922  G4bool isLast = true;
924  G4int thisIdx(-1);
925  for (G4int i = 0; i < pv->size(); i++ ) if ( (*pv)(i) == this ) { thisIdx = i; break; }
926  for ( size_t i = 0; i < (fSharedData->fBiasingProcessInterfaces).size(); i++ )
927  {
928  if ( (fSharedData->fBiasingProcessInterfaces)[i]->fIsPhysicsBasedBiasing || !physOnly )
929  {
930  G4int thatIdx(-1);
931  for (G4int j = 0; j < pv->size(); j++ ) if ( (*pv)(j) == (fSharedData->fBiasingProcessInterfaces)[i] ) { thatIdx = j; break; }
932  if ( thisIdx < thatIdx )
933  {
934  isLast = false;
935  break;
936  }
937  }
938  }
939  return isLast;
940 }
std::vector< G4BiasingProcessInterface *> fBiasingProcessInterfaces
const G4ProcessManager * fProcessManager
G4ProcessVector * GetPostStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
int G4int
Definition: G4Types.hh:78
bool G4bool
Definition: G4Types.hh:79
G4int size() const
G4BiasingProcessSharedData * fSharedData
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsLastPostStepGPILInterface()

G4bool G4BiasingProcessInterface::IsLastPostStepGPILInterface ( G4bool  physOnly = true) const

Definition at line 874 of file G4BiasingProcessInterface.cc.

875 {
876  G4bool isLast = true;
878  G4int thisIdx(-1);
879  for (G4int i = 0; i < pv->size(); i++ ) if ( (*pv)(i) == this ) { thisIdx = i; break; }
880  for ( size_t i = 0; i < (fSharedData->fBiasingProcessInterfaces).size(); i++ )
881  {
882  if ( (fSharedData->fBiasingProcessInterfaces)[i]->fIsPhysicsBasedBiasing || !physOnly )
883  {
884  G4int thatIdx(-1);
885  for (G4int j = 0; j < pv->size(); j++ ) if ( (*pv)(j) == (fSharedData->fBiasingProcessInterfaces)[i] ) { thatIdx = j; break; }
886  if ( thisIdx < thatIdx )
887  {
888  isLast = false;
889  break;
890  }
891  }
892  }
893  return isLast;
894 }
std::vector< G4BiasingProcessInterface *> fBiasingProcessInterfaces
const G4ProcessManager * fProcessManager
G4ProcessVector * GetPostStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
int G4int
Definition: G4Types.hh:78
bool G4bool
Definition: G4Types.hh:79
G4int size() const
G4BiasingProcessSharedData * fSharedData
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PostStepDoIt()

G4VParticleChange * G4BiasingProcessInterface::PostStepDoIt ( const G4Track &  track,
const G4Step &  step 
)
virtual

Implements G4VProcess.

Definition at line 384 of file G4BiasingProcessInterface.cc.

386 {
387  // ---------------------------------------
388  // -- case outside of volume with biasing:
389  // ---------------------------------------
391 
392  // ----------------------------
393  // -- non-physics biasing case:
394  // ----------------------------
395  if ( !fIsPhysicsBasedBiasing )
396  {
397  G4VParticleChange* particleChange = fNonPhysicsBiasingOperation->GenerateBiasingFinalState( &track, &step );
398  (fSharedData->fCurrentBiasingOperator)->ReportOperationApplied( this, BAC_NonPhysics, fNonPhysicsBiasingOperation, particleChange );
399  return particleChange;
400  }
401 
402  // -- physics biasing case:
403  // ------------------------
404  // -- It proceeds with the following logic:
405  // -- 1) Obtain the final state
406  // -- This final state may be analog or biased.
407  // -- The biased final state is obtained through a biasing operator
408  // -- returned by the operator.
409  // -- 2) The biased final state may be asked to be "force as it is"
410  // -- in what case the particle change is returned as is to the
411  // -- stepping.
412  // -- In all other cases (analog final state or biased final but
413  // -- not forced) the final state weight may be modified by the
414  // -- occurence biasing, if such an occurence biasing is at play.
415 
416  // -- Get final state, biased or analog:
417  G4VParticleChange* finalStateParticleChange;
419  fFinalStateBiasingOperation = (fSharedData->fCurrentBiasingOperator)->GetProposedFinalStateBiasingOperation( &track, this );
420  // -- Flag below is to force the biased generated particle change to be retruned "as is" to the stepping, disregarding there
421  // -- was or not a occurence biasing that would apply. Weight relevance under full responsibility of the biasing operation.
422  G4bool forceBiasedFinalState = false;
423  if ( fFinalStateBiasingOperation != 0 )
424  {
425  finalStateParticleChange = fFinalStateBiasingOperation->ApplyFinalStateBiasing( this, &track, &step, forceBiasedFinalState );
426  BAC = BAC_FinalState;
427  }
428  else
429  {
430  finalStateParticleChange = fWrappedProcess->PostStepDoIt(track, step);
431  BAC = BAC_None ;
432  }
433 
434  // -- if no occurence biasing operation, we're done:
435  if ( fOccurenceBiasingOperation == 0 )
436  {
437  (fSharedData->fCurrentBiasingOperator)->ReportOperationApplied( this, BAC, fFinalStateBiasingOperation, finalStateParticleChange );
438  return finalStateParticleChange;
439  }
440 
441  // -- if biased final state has been asked to be forced, we're done:
442  if ( forceBiasedFinalState )
443  {
444  (fSharedData->fCurrentBiasingOperator)->ReportOperationApplied( this, BAC, fFinalStateBiasingOperation, finalStateParticleChange );
445  return finalStateParticleChange;
446  }
447 
448 
449  // -- If occurence biasing, applies the occurence biasing weight correction on top of final state (biased or not):
450  G4double weightForInteraction = 1.0;
451  if ( !fBiasingInteractionLaw->IsSingular() ) weightForInteraction =
453  fBiasingInteractionLaw ->ComputeEffectiveCrossSectionAt(step.GetStepLength());
454  else
455  {
456  // -- at this point effective XS can only be infinite, if not, there is a logic problem
458  {
460  ed << "Internal inconsistency in cross-section handling. Please report !" << G4endl;
461  G4Exception(" G4BiasingProcessInterface::PostStepDoIt(...)",
462  "BIAS.GEN.02",
463  JustWarning,
464  ed);
465  // -- if XS is infinite, weight is zero (and will stay zero), but we'll do differently.
466  // -- Should foresee in addition something to remember that in case of singular
467  // -- distribution, weight can only be partly calculated
468  }
469  }
470 
471  if ( weightForInteraction <= 0. )
472  {
474  ed << " Negative interaction weight : w_I = "
475  << weightForInteraction <<
476  " XS_I(phys) = " << fBiasingInteractionLaw ->ComputeEffectiveCrossSectionAt(step.GetStepLength()) <<
477  " XS_I(bias) = " << fPhysicalInteractionLaw->ComputeEffectiveCrossSectionAt(step.GetStepLength()) <<
478  " step length = " << step.GetStepLength() <<
479  " Interaction law = `" << fBiasingInteractionLaw << "'" <<
480  G4endl;
481  G4Exception(" G4BiasingProcessInterface::PostStepDoIt(...)",
482  "BIAS.GEN.03",
483  JustWarning,
484  ed);
485 
486  }
487 
488  (fSharedData->fCurrentBiasingOperator)->ReportOperationApplied( this, BAC,
489  fOccurenceBiasingOperation, weightForInteraction,
490  fFinalStateBiasingOperation, finalStateParticleChange );
491 
492 
494  fOccurenceBiasingParticleChange->SetSecondaryWeightByProcess( true );
495  fOccurenceBiasingParticleChange->SetWrappedParticleChange( finalStateParticleChange );
496  fOccurenceBiasingParticleChange->ProposeTrackStatus( finalStateParticleChange->GetTrackStatus() );
497  fOccurenceBiasingParticleChange->StealSecondaries(); // -- this also makes weightForInteraction applied to secondaries stolen
498 
499  // -- finish:
501 
502 }
G4VBiasingOperation * fFinalStateBiasingOperation
G4VBiasingOperation * fNonPhysicsBiasingOperation
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
virtual G4VParticleChange * ApplyFinalStateBiasing(const G4BiasingProcessInterface *, const G4Track *, const G4Step *, G4bool &)=0
virtual G4bool IsSingular() const
virtual G4double ComputeEffectiveCrossSectionAt(G4double length) const =0
G4BiasingAppliedCase
const G4VBiasingInteractionLaw * fBiasingInteractionLaw
bool G4bool
Definition: G4Types.hh:79
virtual G4VParticleChange * GenerateBiasingFinalState(const G4Track *, const G4Step *)=0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
virtual G4double ComputeEffectiveCrossSectionAt(G4double length) const
virtual G4bool IsEffectiveCrossSectionInfinite() const
G4VBiasingOperation * fOccurenceBiasingOperation
G4ParticleChangeForOccurenceBiasing * fOccurenceBiasingParticleChange
#define G4endl
Definition: G4ios.hh:61
G4InteractionLawPhysical * fPhysicalInteractionLaw
G4BiasingProcessSharedData * fSharedData
double G4double
Definition: G4Types.hh:76
virtual G4VParticleChange * PostStepDoIt(const G4Track &track, const G4Step &stepData)=0
G4VBiasingOperator * fCurrentBiasingOperator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PostStepGetPhysicalInteractionLength()

G4double G4BiasingProcessInterface::PostStepGetPhysicalInteractionLength ( const G4Track &  track,
G4double  previousStepSize,
G4ForceCondition *  condition 
)
virtual

Implements G4VProcess.

Definition at line 207 of file G4BiasingProcessInterface.cc.

210 {
211  // ---------------------------------------------------------------------------------------------
212  // -- The "biasing master" takes care for all biasing processes of update of biasing operators
213  // -- and invokes all PostStepGPIL of physical wrapped processes (anticipate stepping manager
214  // -- call ! ) so that all cross-sections are updated with current step, and available right
215  // -- away to the biasing operator.
216  // ---------------------------------------------------------------------------------------------
217  if ( fIamFirstGPIL )
218  {
219  // -- Update previous biasing operator:
221  // -- If new volume, get possible new biasing operator:
222  // ----------------------------------------------------
223  // -- [Note : bug with this first step ! Does not work if previous step was concurrently limited with geometry. Might make use of safety at last point ?]
224  G4bool firstStepInVolume = ( (track.GetStep()->GetPreStepPoint()->GetStepStatus() == fGeomBoundary) || (track.GetCurrentStepNumber() == 1) );
225  fSharedData->fIsNewOperator = false;
227  if ( firstStepInVolume )
228  {
229  G4VBiasingOperator* newOperator = G4VBiasingOperator::GetBiasingOperator( track.GetVolume()->GetLogicalVolume() );
230  fSharedData->fCurrentBiasingOperator = newOperator ;
231  if ( newOperator != fSharedData->fPreviousBiasingOperator )
232  {
234  fSharedData->fIsNewOperator = ( newOperator != 0 );
235  }
236  }
237 
238 
239  // -- calls to wrapped process PostStepGPIL's:
240  // -------------------------------------------
241  // -- Each physics wrapper process has its
242  // -- fWrappedProcessPostStepGPIL ,
243  // -- fWrappedProcessForceCondition ,
244  // -- fWrappedProcessInteractionLength
245  // -- updated.
247  {
248  for ( size_t i = 0 ; i < (fSharedData->fPhysicsBiasingProcessInterfaces).size(); i++ )
249  (fSharedData->fPhysicsBiasingProcessInterfaces)[i]->InvokeWrappedProcessPostStepGPIL( track, previousStepSize, condition );
250  }
251  }
252 
253 
254  // -- Remember previous operator and proposed operations, if any, and reset:
255  // -------------------------------------------------------------------------
256  // -- remember only in case some biasing might be called
257  if ( ( fSharedData->fPreviousBiasingOperator != 0 ) ||
259  {
264  // -- reset:
269  // -- Physics PostStep and AlongStep GPIL
270  // fWrappedProcessPostStepGPIL : updated by InvokeWrappedProcessPostStepGPIL(...) above
272  // fWrappedProcessInteractionLength : updated by InvokeWrappedProcessPostStepGPIL(...) above; inverse of analog cross-section.
273  // fWrappedProcessForceCondition : updated by InvokeWrappedProcessPostStepGPIL(...) above
274  fBiasingForceCondition = NotForced;
277  fWrappedProcessGPILSelection = NotCandidateForSelection;
278  fBiasingGPILSelection = NotCandidateForSelection;
279  // -- for helper:
280  fPreviousStepSize = previousStepSize;
281  }
282 
283 
284  // -- previous step size value; it is switched to zero if resetting a wrapped process:
285  // -- (same trick used than in InvokedWrappedProcessPostStepGPIL )
286  G4double usedPreviousStepSize = previousStepSize;
287 
288  // ----------------------------------------------
289  // -- If leaving a biasing operator, let it know:
290  // ----------------------------------------------
292  {
293  (fSharedData->fPreviousBiasingOperator)->ExitingBiasing( &track, this );
294  // -- if no further biasing operator, reset process behavior to standard tracking:
296  {
299  {
300  // -- if the physics process has been under occurence biasing, reset it:
302  {
305  // -- We set "previous step size" as 0.0, to let the process believe this is first step:
306  usedPreviousStepSize = 0.0;
307  }
308  }
309  }
310  }
311 
312 
313  // --------------------------------------------------------------
314  // -- no operator : analog tracking if physics-based, or nothing:
315  // --------------------------------------------------------------
317  {
318  // -- take note of the "usedPreviousStepSize" value:
320  else
321  {
322  *condition = NotForced;
323  return DBL_MAX;
324  }
325  }
326 
327 
328 
329  // --------------------------------------------------
330  // -- A biasing operator exists. Proceed with
331  // -- treating non-physics and physics biasing cases:
332  //---------------------------------------------------
333 
334  // -- non-physics-based biasing case:
335  // ----------------------------------
336  if ( !fIsPhysicsBasedBiasing )
337  {
338  fNonPhysicsBiasingOperation = (fSharedData->fCurrentBiasingOperator)->GetProposedNonPhysicsBiasingOperation( &track, this );
339  if ( fNonPhysicsBiasingOperation == 0 )
340  {
341  *condition = NotForced;
342  return DBL_MAX;
343  }
345  }
346 
347 
348  // -- Physics based biasing case:
349  // ------------------------------
350  // -- Ask for possible GPIL biasing operation:
351  fOccurenceBiasingOperation = (fSharedData->fCurrentBiasingOperator)->GetProposedOccurenceBiasingOperation( &track, this );
352 
353 
354  // -- no operation for occurence biasing, analog GPIL returns the wrapped process GPIL and condition values
355  if ( fOccurenceBiasingOperation == 0 )
356  {
359  }
360 
361  // -- A valid GPIL biasing operation has been proposed:
362  // -- 0) remember wrapped process will need to be reset on biasing exit, if particle survives:
364  // -- 1) update process interaction length for reference analog interaction law ( fWrappedProcessInteractionLength updated/collected above):
366  // -- 2) Collect biasing interaction law:
367  // -- The interaction law pointer is collected as a const pointer to the interaction law object.
368  // -- This interaction law will be kept under control of the biasing operation, which is the only
369  // -- entity that will change the state of the biasing interaction law.
370  // -- The force condition for biasing is asked at the same time, passing the analog one as default:
373  // -- 3) Ask operation to sample the biasing interaction law:
375 
376  // -- finish
378  return fBiasingPostStepGPIL;
379 
380 }
G4double condition(const G4ErrorSymMatrix &m)
G4VBiasingOperation * fPreviousFinalStateBiasingOperation
G4VBiasingOperation * fFinalStateBiasingOperation
G4VBiasingOperation * fNonPhysicsBiasingOperation
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)=0
G4double GetSampledInteractionLength() const
virtual void ResetNumberOfInteractionLengthLeft()
Definition: G4VProcess.cc:95
G4VBiasingOperation * fPreviousOccurenceBiasingOperation
const G4VBiasingInteractionLaw * fPreviousBiasingInteractionLaw
std::vector< G4BiasingProcessInterface *> fPhysicsBiasingProcessInterfaces
const G4VBiasingInteractionLaw * fBiasingInteractionLaw
bool G4bool
Definition: G4Types.hh:79
G4VBiasingOperation * fPreviousNonPhysicsBiasingOperation
void SetPhysicalCrossSection(G4double crossSection)
static G4VBiasingOperator * GetBiasingOperator(const G4LogicalVolume *)
G4VBiasingOperation * fOccurenceBiasingOperation
virtual const G4VBiasingInteractionLaw * ProvideOccurenceBiasingInteractionLaw(const G4BiasingProcessInterface *, G4ForceCondition &)=0
G4InteractionLawPhysical * fPhysicalInteractionLaw
G4BiasingProcessSharedData * fSharedData
double G4double
Definition: G4Types.hh:76
#define DBL_MAX
Definition: templates.hh:83
G4VBiasingOperator * fPreviousBiasingOperator
virtual G4double DistanceToApplyOperation(const G4Track *, G4double, G4ForceCondition *)=0
G4VBiasingOperator * fCurrentBiasingOperator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PreparePhysicsTable()

void G4BiasingProcessInterface::PreparePhysicsTable ( const G4ParticleDefinition pd)
virtual

Reimplemented from G4VProcess.

Definition at line 708 of file G4BiasingProcessInterface.cc.

709 {
710  // -- Sequential mode : called first (before BuildPhysicsTable(..))
711  // -- MT mode : called first (before BuildPhysicsTable(..)) by master thread.
712  // -- Corresponding process instance not used then by tracking.
713  // -- Let process finding its first/last position in the process manager:
715  if ( fWrappedProcess != 0 )
716  {
718  }
719 }
virtual void PreparePhysicsTable(const G4ParticleDefinition &)
Definition: G4VProcess.hh:217
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PrepareWorkerPhysicsTable()

void G4BiasingProcessInterface::PrepareWorkerPhysicsTable ( const G4ParticleDefinition pd)
virtual

Reimplemented from G4VProcess.

Definition at line 803 of file G4BiasingProcessInterface.cc.

804 {
805  // -- Sequential mode : not called
806  // -- MT mode : called first, before BuildWorkerPhysicsTable(..)
807  // -- Let process finding its first/last position in the process manager:
809 
810  if ( fWrappedProcess != 0 )
811  {
813  }
814 }
virtual void PrepareWorkerPhysicsTable(const G4ParticleDefinition &)
Definition: G4VProcess.cc:207
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReorderBiasingVectorAsGPIL()

void G4BiasingProcessInterface::ReorderBiasingVectorAsGPIL ( )
private

Definition at line 994 of file G4BiasingProcessInterface.cc.

995 {
996  // -- re-order vector of processes to match that of the GPIL:
997  std::vector < G4BiasingProcessInterface* > tmpProcess ( fSharedData->fBiasingProcessInterfaces );
998  ( fSharedData -> fBiasingProcessInterfaces ) . clear();
999  ( fSharedData -> fPhysicsBiasingProcessInterfaces ) . clear();
1000  ( fSharedData -> fNonPhysicsBiasingProcessInterfaces ) . clear();
1001  ( fSharedData -> fPublicBiasingProcessInterfaces ) . clear();
1002  ( fSharedData -> fPublicPhysicsBiasingProcessInterfaces ) . clear();
1003  ( fSharedData -> fPublicNonPhysicsBiasingProcessInterfaces ) . clear();
1004 
1006  for (G4int i = 0; i < pv->size(); i++ )
1007  {
1008  for ( size_t j = 0; j < tmpProcess.size(); j++ )
1009  {
1010  if ( (*pv)(i) == tmpProcess[j] )
1011  {
1012  ( fSharedData -> fBiasingProcessInterfaces ) . push_back( tmpProcess[j] );
1013  ( fSharedData -> fPublicBiasingProcessInterfaces ) . push_back( tmpProcess[j] );
1014  if ( tmpProcess[j] -> fIsPhysicsBasedBiasing )
1015  {
1016  ( fSharedData -> fPhysicsBiasingProcessInterfaces ) . push_back( tmpProcess[j] );
1017  ( fSharedData -> fPublicPhysicsBiasingProcessInterfaces ) . push_back( tmpProcess[j] );
1018  }
1019  else
1020  {
1021  ( fSharedData -> fNonPhysicsBiasingProcessInterfaces ) . push_back( tmpProcess[j] );
1022  ( fSharedData -> fPublicNonPhysicsBiasingProcessInterfaces ) . push_back( tmpProcess[j] );
1023  }
1024  break;
1025  }
1026  }
1027  }
1028 }
std::vector< G4BiasingProcessInterface *> fBiasingProcessInterfaces
const G4ProcessManager * fProcessManager
G4ProcessVector * GetPostStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
int G4int
Definition: G4Types.hh:78
G4int size() const
vec_iX clear()
G4BiasingProcessSharedData * fSharedData
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ResetForUnbiasedTracking()

void G4BiasingProcessInterface::ResetForUnbiasedTracking ( )
private

Definition at line 959 of file G4BiasingProcessInterface.cc.

960 {
965 }
G4VBiasingOperation * fFinalStateBiasingOperation
G4VBiasingOperation * fNonPhysicsBiasingOperation
const G4VBiasingInteractionLaw * fBiasingInteractionLaw
G4VBiasingOperation * fOccurenceBiasingOperation
Here is the caller graph for this function:

◆ ResetNumberOfInteractionLengthLeft()

void G4BiasingProcessInterface::ResetNumberOfInteractionLengthLeft ( )
virtual

Reimplemented from G4VProcess.

Definition at line 817 of file G4BiasingProcessInterface.cc.

818 {
820 }
virtual void ResetNumberOfInteractionLengthLeft()
Definition: G4VProcess.cc:95
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RetrievePhysicsTable()

G4bool G4BiasingProcessInterface::RetrievePhysicsTable ( const G4ParticleDefinition pd,
const G4String s,
G4bool  f 
)
virtual

Reimplemented from G4VProcess.

Definition at line 729 of file G4BiasingProcessInterface.cc.

730 {
731  if ( fWrappedProcess != 0 ) return fWrappedProcess->RetrievePhysicsTable(pd, s, f);
732  else return false;
733 }
virtual G4bool RetrievePhysicsTable(const G4ParticleDefinition *, const G4String &, G4bool)
Definition: G4VProcess.hh:236
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetMasterProcess()

void G4BiasingProcessInterface::SetMasterProcess ( G4VProcess masterP)
virtual

Reimplemented from G4VProcess.

Definition at line 660 of file G4BiasingProcessInterface.cc.

661 {
662  // -- Master for this process:
664  // -- Master for wrapped process:
665  if ( fWrappedProcess != 0 )
666  {
667  const G4BiasingProcessInterface* thisWrapperMaster = (const G4BiasingProcessInterface *)GetMasterProcess();
668  // -- paranoia check: (?)
669  G4VProcess* wrappedMaster = 0;
670  wrappedMaster = thisWrapperMaster->GetWrappedProcess();
671  fWrappedProcess->SetMasterProcess( wrappedMaster );
672  }
673 }
virtual void SetMasterProcess(G4VProcess *masterP)
Definition: G4VProcess.cc:212
const G4VProcess * GetMasterProcess() const
Definition: G4VProcess.hh:538
G4VProcess * GetWrappedProcess() const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetProcessManager()

void G4BiasingProcessInterface::SetProcessManager ( const G4ProcessManager mgr)
virtual

Reimplemented from G4VProcess.

Definition at line 736 of file G4BiasingProcessInterface.cc.

737 {
740 
741  // -- initialize fSharedData pointer:
742  if ( fSharedDataMap.Find(mgr) == fSharedDataMap.End() )
743  {
746  }
747  else fSharedData = fSharedDataMap[mgr] ;
748  // -- augment list of co-operating processes:
749  fSharedData-> fBiasingProcessInterfaces.push_back( this );
750  fSharedData-> fPublicBiasingProcessInterfaces.push_back( this );
751  if ( fIsPhysicsBasedBiasing )
752  {
753  fSharedData-> fPhysicsBiasingProcessInterfaces.push_back( this );
754  fSharedData-> fPublicPhysicsBiasingProcessInterfaces.push_back( this );
755  }
756  else
757  {
758  fSharedData-> fNonPhysicsBiasingProcessInterfaces.push_back( this );
759  fSharedData-> fPublicNonPhysicsBiasingProcessInterfaces.push_back( this );
760  }
761  // -- remember process manager:
762  fProcessManager = mgr;
763 }
virtual void SetProcessManager(const G4ProcessManager *)
Definition: G4VProcess.hh:508
iterator End()
Definition: G4Cache.hh:411
const G4ProcessManager * fProcessManager
static G4MapCache< const G4ProcessManager *, G4BiasingProcessSharedData *> fSharedDataMap
iterator Find(const key_type &k)
Definition: G4Cache.hh:417
G4BiasingProcessSharedData * fSharedData
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetProposedSafety()

void G4BiasingProcessInterface::SetProposedSafety ( G4double  sft)
inline

Definition at line 152 of file G4BiasingProcessInterface.hh.

◆ SetUpFirstLastFlags()

void G4BiasingProcessInterface::SetUpFirstLastFlags ( )
private

Definition at line 943 of file G4BiasingProcessInterface.cc.

944 {
945  for ( G4int iPhys = 0; iPhys < 2; iPhys++ )
946  {
947  G4bool physOnly = ( iPhys == 1 );
948  fFirstLastFlags[IdxFirstLast( 1, 1, iPhys)] = IsFirstPostStepGPILInterface(physOnly);
949  fFirstLastFlags[IdxFirstLast( 0, 1, iPhys)] = IsLastPostStepGPILInterface(physOnly);
950  fFirstLastFlags[IdxFirstLast( 1, 0, iPhys)] = IsFirstPostStepDoItInterface(physOnly);
951  fFirstLastFlags[IdxFirstLast( 0, 0, iPhys)] = IsLastPostStepDoItInterface(physOnly);
952  }
953 
954  // -- for itself, for optimization:
956 }
int G4int
Definition: G4Types.hh:78
G4bool IsLastPostStepGPILInterface(G4bool physOnly=true) const
G4bool IsFirstPostStepDoItInterface(G4bool physOnly=true) const
bool G4bool
Definition: G4Types.hh:79
G4int IdxFirstLast(G4int firstLast, G4int GPILDoIt, G4int physAll) const
G4bool GetIsFirstPostStepGPILInterface(G4bool physOnly=true) const
G4bool IsFirstPostStepGPILInterface(G4bool physOnly=true) const
G4bool IsLastPostStepDoItInterface(G4bool physOnly=true) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ StartTracking()

void G4BiasingProcessInterface::StartTracking ( G4Track *  track)
virtual

Reimplemented from G4VProcess.

Definition at line 152 of file G4BiasingProcessInterface.cc.

153 {
164 
165  fPreviousStepSize = -1.0;
166 
168 
169  if ( fCommonStart.Get() )
170  {
171  fCommonStart.Put( false );// = false;
172  fCommonEnd.Put(true);// = true;
173 
174  fSharedData-> fCurrentBiasingOperator = 0;
176 
177  // -- §§ Add a "fSharedData->nStarting" here and outside bracket "fSharedData->nStarting++" and " if (fSharedData->nStarting) == fSharedData->(vector interface length)"
178  // -- §§ call to the loop "StartTracking" of operators"
179 
180  for ( size_t optr = 0 ; optr < ( G4VBiasingOperator::GetBiasingOperators() ).size() ; optr ++)
182  }
183 }
void Put(const value_type &val) const
Definition: G4Cache.hh:286
G4VBiasingOperation * fPreviousFinalStateBiasingOperation
G4VBiasingOperation * fFinalStateBiasingOperation
static G4Cache< G4bool > fCommonEnd
G4VBiasingOperation * fNonPhysicsBiasingOperation
value_type & Get() const
Definition: G4Cache.hh:282
G4VBiasingOperation * fPreviousOccurenceBiasingOperation
const G4VBiasingInteractionLaw * fPreviousBiasingInteractionLaw
virtual void StartTracking(G4Track *)
Definition: G4VProcess.cc:101
static G4Cache< G4bool > fCommonStart
const G4VBiasingInteractionLaw * fBiasingInteractionLaw
G4VBiasingOperation * fPreviousNonPhysicsBiasingOperation
G4VBiasingOperation * fOccurenceBiasingOperation
static const std::vector< G4VBiasingOperator *> & GetBiasingOperators()
G4BiasingProcessSharedData * fSharedData
G4VBiasingOperator * fPreviousBiasingOperator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ StorePhysicsTable()

G4bool G4BiasingProcessInterface::StorePhysicsTable ( const G4ParticleDefinition pd,
const G4String s,
G4bool  f 
)
virtual

Reimplemented from G4VProcess.

Definition at line 722 of file G4BiasingProcessInterface.cc.

723 {
724  if ( fWrappedProcess != 0 ) return fWrappedProcess->StorePhysicsTable(pd, s, f);
725  else return false;
726 }
virtual G4bool StorePhysicsTable(const G4ParticleDefinition *, const G4String &, G4bool)
Definition: G4VProcess.hh:231
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ fBiasingAlongStepGPIL

G4double G4BiasingProcessInterface::fBiasingAlongStepGPIL
private

Definition at line 240 of file G4BiasingProcessInterface.hh.

◆ fBiasingForceCondition

G4ForceCondition G4BiasingProcessInterface::fBiasingForceCondition
private

Definition at line 238 of file G4BiasingProcessInterface.hh.

◆ fBiasingGPILSelection

G4GPILSelection G4BiasingProcessInterface::fBiasingGPILSelection
private

Definition at line 242 of file G4BiasingProcessInterface.hh.

◆ fBiasingInteractionLaw

const G4VBiasingInteractionLaw* G4BiasingProcessInterface::fBiasingInteractionLaw
private

Definition at line 244 of file G4BiasingProcessInterface.hh.

◆ fBiasingPostStepGPIL

G4double G4BiasingProcessInterface::fBiasingPostStepGPIL
private

Definition at line 235 of file G4BiasingProcessInterface.hh.

◆ fCommonEnd

G4Cache< G4bool > G4BiasingProcessInterface::fCommonEnd
staticprivate

Definition at line 270 of file G4BiasingProcessInterface.hh.

◆ fCommonStart

G4Cache< G4bool > G4BiasingProcessInterface::fCommonStart
staticprivate

Definition at line 269 of file G4BiasingProcessInterface.hh.

◆ fCurrentMinimumStep

G4double G4BiasingProcessInterface::fCurrentMinimumStep
private

Definition at line 215 of file G4BiasingProcessInterface.hh.

◆ fCurrentTrack

G4Track* G4BiasingProcessInterface::fCurrentTrack
private

Definition at line 213 of file G4BiasingProcessInterface.hh.

◆ fDoCommonConfigure

G4Cache< G4bool > G4BiasingProcessInterface::fDoCommonConfigure
staticprivate

Definition at line 271 of file G4BiasingProcessInterface.hh.

◆ fDummyParticleChange

G4ParticleChangeForNothing* G4BiasingProcessInterface::fDummyParticleChange
private

Definition at line 249 of file G4BiasingProcessInterface.hh.

◆ fFinalStateBiasingOperation

G4VBiasingOperation* G4BiasingProcessInterface::fFinalStateBiasingOperation
private

Definition at line 219 of file G4BiasingProcessInterface.hh.

◆ fFirstLastFlags

G4bool G4BiasingProcessInterface::fFirstLastFlags[8]
private

Definition at line 250 of file G4BiasingProcessInterface.hh.

◆ fIamFirstGPIL

G4bool G4BiasingProcessInterface::fIamFirstGPIL
private

Definition at line 264 of file G4BiasingProcessInterface.hh.

◆ fIsPhysicsBasedBiasing

const G4bool G4BiasingProcessInterface::fIsPhysicsBasedBiasing
private

Definition at line 228 of file G4BiasingProcessInterface.hh.

◆ fNonPhysicsBiasingOperation

G4VBiasingOperation* G4BiasingProcessInterface::fNonPhysicsBiasingOperation
private

Definition at line 220 of file G4BiasingProcessInterface.hh.

◆ fOccurenceBiasingOperation

G4VBiasingOperation* G4BiasingProcessInterface::fOccurenceBiasingOperation
private

Definition at line 218 of file G4BiasingProcessInterface.hh.

◆ fOccurenceBiasingParticleChange

G4ParticleChangeForOccurenceBiasing* G4BiasingProcessInterface::fOccurenceBiasingParticleChange
private

Definition at line 247 of file G4BiasingProcessInterface.hh.

◆ fParticleChange

G4ParticleChange* G4BiasingProcessInterface::fParticleChange
private

Definition at line 248 of file G4BiasingProcessInterface.hh.

◆ fPhysicalInteractionLaw

G4InteractionLawPhysical* G4BiasingProcessInterface::fPhysicalInteractionLaw
private

Definition at line 246 of file G4BiasingProcessInterface.hh.

◆ fPreviousBiasingInteractionLaw

const G4VBiasingInteractionLaw* G4BiasingProcessInterface::fPreviousBiasingInteractionLaw
private

Definition at line 245 of file G4BiasingProcessInterface.hh.

◆ fPreviousFinalStateBiasingOperation

G4VBiasingOperation* G4BiasingProcessInterface::fPreviousFinalStateBiasingOperation
private

Definition at line 222 of file G4BiasingProcessInterface.hh.

◆ fPreviousNonPhysicsBiasingOperation

G4VBiasingOperation* G4BiasingProcessInterface::fPreviousNonPhysicsBiasingOperation
private

Definition at line 223 of file G4BiasingProcessInterface.hh.

◆ fPreviousOccurenceBiasingOperation

G4VBiasingOperation* G4BiasingProcessInterface::fPreviousOccurenceBiasingOperation
private

Definition at line 221 of file G4BiasingProcessInterface.hh.

◆ fPreviousStepSize

G4double G4BiasingProcessInterface::fPreviousStepSize
private

Definition at line 214 of file G4BiasingProcessInterface.hh.

◆ fProcessManager

const G4ProcessManager* G4BiasingProcessInterface::fProcessManager
private

Definition at line 273 of file G4BiasingProcessInterface.hh.

◆ fProposedSafety

G4double G4BiasingProcessInterface::fProposedSafety
private

Definition at line 216 of file G4BiasingProcessInterface.hh.

◆ fResetInteractionLaws

G4Cache< G4bool > G4BiasingProcessInterface::fResetInteractionLaws
staticprivate

Definition at line 268 of file G4BiasingProcessInterface.hh.

◆ fResetWrappedProcessInteractionLength

G4bool G4BiasingProcessInterface::fResetWrappedProcessInteractionLength
private

Definition at line 225 of file G4BiasingProcessInterface.hh.

◆ fSharedData

G4BiasingProcessSharedData* G4BiasingProcessInterface::fSharedData
private

Definition at line 277 of file G4BiasingProcessInterface.hh.

◆ fSharedDataMap

G4MapCache< const G4ProcessManager *, G4BiasingProcessSharedData *> G4BiasingProcessInterface::fSharedDataMap
staticprivate

Definition at line 284 of file G4BiasingProcessInterface.hh.

◆ fWrappedProcess

G4VProcess* G4BiasingProcessInterface::fWrappedProcess
private

Definition at line 227 of file G4BiasingProcessInterface.hh.

◆ fWrappedProcessAlongStepGPIL

G4double G4BiasingProcessInterface::fWrappedProcessAlongStepGPIL
private

Definition at line 239 of file G4BiasingProcessInterface.hh.

◆ fWrappedProcessForceCondition

G4ForceCondition G4BiasingProcessInterface::fWrappedProcessForceCondition
private

Definition at line 237 of file G4BiasingProcessInterface.hh.

◆ fWrappedProcessGPILSelection

G4GPILSelection G4BiasingProcessInterface::fWrappedProcessGPILSelection
private

Definition at line 241 of file G4BiasingProcessInterface.hh.

◆ fWrappedProcessInteractionLength

G4double G4BiasingProcessInterface::fWrappedProcessInteractionLength
private

Definition at line 236 of file G4BiasingProcessInterface.hh.

◆ fWrappedProcessIsAlong

const G4bool G4BiasingProcessInterface::fWrappedProcessIsAlong
private

Definition at line 230 of file G4BiasingProcessInterface.hh.

◆ fWrappedProcessIsAtRest

const G4bool G4BiasingProcessInterface::fWrappedProcessIsAtRest
private

Definition at line 229 of file G4BiasingProcessInterface.hh.

◆ fWrappedProcessIsPost

const G4bool G4BiasingProcessInterface::fWrappedProcessIsPost
private

Definition at line 231 of file G4BiasingProcessInterface.hh.

◆ fWrappedProcessPostStepGPIL

G4double G4BiasingProcessInterface::fWrappedProcessPostStepGPIL
private

Definition at line 234 of file G4BiasingProcessInterface.hh.


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