38 fOccurenceBiasingOperation (nullptr),
39 fFinalStateBiasingOperation (nullptr),
40 fNonPhysicsBiasingOperation (nullptr),
41 fPreviousProposedOccurenceBiasingOperation (nullptr),
42 fPreviousProposedFinalStateBiasingOperation(nullptr),
43 fPreviousProposedNonPhysicsBiasingOperation(nullptr),
44 fPreviousAppliedOccurenceBiasingOperation (nullptr),
45 fPreviousAppliedFinalStateBiasingOperation (nullptr),
46 fPreviousAppliedNonPhysicsBiasingOperation (nullptr),
47 fPreviousBiasingAppliedCase (
BAC_None)
64 else if ( (*it).second !=
this )
67 ed <<
"Biasing operator `" <<
GetName()
68 <<
"' can not be attached to Logical volume `"
69 << logical->
GetName() <<
"' which is already used by an other operator !" <<
G4endl;
83 else return (*it).second;
113 switch ( biasingCase )
127 G4Exception(
"G4VBiasingOperator::ReportOperationApplied(...)",
130 "Internal logic error, please report !");
133 G4Exception(
"G4VBiasingOperator::ReportOperationApplied(...)",
136 "Internal logic error, please report !");
138 OperationApplied( callingProcess, biasingCase, operationApplied, particleChangeProduced );
144 G4double weightForOccurenceInteraction,
151 OperationApplied( callingProcess, biasingCase, occurenceOperationApplied, weightForOccurenceInteraction, finalStateOperationApplied, particleChangeProduced );
206 for (
size_t i = 0 ; i < G4VBiasingOperator::fOperators.
Size() ; i++ ) G4VBiasingOperator::fOperators[i]->StartRun();
const G4VBiasingOperation * fPreviousProposedOccurenceBiasingOperation
G4VBiasingOperation * GetProposedFinalStateBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
virtual void OperationApplied(const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
G4ApplicationState fPreviousState
std::ostringstream G4ExceptionDescription
G4BiasingAppliedCase fPreviousBiasingAppliedCase
G4VBiasingOperation * GetProposedOccurenceBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
virtual G4VBiasingOperation * ProposeFinalStateBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
virtual ~G4VBiasingOperator()
G4bool Notify(G4ApplicationState requestedState)
virtual void ExitBiasing(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
const G4VBiasingOperation * fPreviousAppliedOccurenceBiasingOperation
static G4VectorCache< G4VBiasingOperator * > fOperators
static G4MapCache< const G4LogicalVolume *, G4VBiasingOperator * > fLogicalToSetupMap
G4BiasingOperatorStateNotifier()
virtual G4VBiasingOperation * ProposeOccurenceBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
const G4VBiasingOperation * fPreviousAppliedNonPhysicsBiasingOperation
const G4VBiasingOperation * fPreviousProposedFinalStateBiasingOperation
void AttachTo(const G4LogicalVolume *)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
const G4VBiasingOperation * fPreviousAppliedFinalStateBiasingOperation
virtual G4VBiasingOperation * ProposeNonPhysicsBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
static G4VBiasingOperator * GetBiasingOperator(const G4LogicalVolume *)
void Push_back(const value_type &val)
iterator Find(const key_type &k)
G4VBiasingOperator(G4String name)
G4VBiasingOperation * fFinalStateBiasingOperation
~G4BiasingOperatorStateNotifier()
static G4Cache< G4BiasingOperatorStateNotifier * > fStateNotifier
G4VBiasingOperation * fOccurenceBiasingOperation
const G4String & GetName() const
void ReportOperationApplied(const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
const G4VBiasingOperation * fPreviousProposedNonPhysicsBiasingOperation
G4VBiasingOperation * GetProposedNonPhysicsBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
void ExitingBiasing(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
void Put(const value_type &val) const
G4VBiasingOperation * fNonPhysicsBiasingOperation
const G4String GetName() const