50 it = fLogicalToSetupMap.
Find(logical);
51 if ( it == fLogicalToSetupMap.
End() ) fLogicalToSetupMap[logical] =
this;
52 else if ( (*it).second !=
this )
55 ed <<
"Biasing operator `" <<
GetName()
56 <<
"' can not be attached to Logical volume `"
57 << logical->
GetName() <<
"' which is already used by an other operator !" <<
G4endl;
69 it = fLogicalToSetupMap.
Find(logical);
70 if ( it == fLogicalToSetupMap.
End() )
return 0;
71 else return (*it).second;
80 return fOccurenceBiasingOperation;
89 return fFinalStateBiasingOperation;
98 return fNonPhysicsBiasingOperation;
126 fPreviousBiasingAppliedCase = biasingCase;
138 fPreviousAppliedOccurenceBiasingOperation = 0;
139 fPreviousAppliedFinalStateBiasingOperation = 0;
140 fPreviousAppliedNonPhysicsBiasingOperation = 0;
141 switch ( biasingCase )
146 fPreviousAppliedNonPhysicsBiasingOperation = operationApplied ;
149 fPreviousAppliedOccurenceBiasingOperation = operationApplied;
152 fPreviousAppliedFinalStateBiasingOperation = operationApplied;
155 G4Exception(
"G4VBiasingOperator::ReportOperationApplied(...)",
158 "Internal logic error, please report !");
161 G4Exception(
"G4VBiasingOperator::ReportOperationApplied(...)",
164 "Internal logic error, please report !");
166 OperationApplied( callingProcess, biasingCase, operationApplied, particleChangeProduced );
172 G4double weightForOccurenceInteraction,
176 fPreviousBiasingAppliedCase = biasingCase;
188 fPreviousAppliedOccurenceBiasingOperation = occurenceOperationApplied;
189 fPreviousAppliedFinalStateBiasingOperation = finalStateOperationApplied;
190 OperationApplied( callingProcess, biasingCase, occurenceOperationApplied, weightForOccurenceInteraction, finalStateOperationApplied, particleChangeProduced );
199 fOccurenceBiasingOperation = 0 ;
200 fFinalStateBiasingOperation = 0 ;
201 fNonPhysicsBiasingOperation = 0 ;
202 fPreviousProposedOccurenceBiasingOperation = 0 ;
203 fPreviousProposedFinalStateBiasingOperation = 0 ;
204 fPreviousProposedNonPhysicsBiasingOperation = 0 ;
205 fPreviousAppliedOccurenceBiasingOperation = 0 ;
206 fPreviousAppliedFinalStateBiasingOperation = 0 ;
207 fPreviousAppliedNonPhysicsBiasingOperation = 0 ;
208 fPreviousBiasingAppliedCase =
BAC_None ;
226 if ( biasingData != 0 )
delete biasingData;
G4VBiasingOperation * GetProposedFinalStateBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
virtual void OperationApplied(const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
G4int GetNumberOfSecondaries() const
G4Track * GetSecondary(G4int anIndex) const
static G4BiasingTrackDataStore * GetInstance()
std::ostringstream G4ExceptionDescription
const G4VBiasingOperation * GetBirthOperation() const
G4VBiasingOperation * GetProposedOccurenceBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
virtual G4VBiasingOperation * ProposeFinalStateBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
virtual ~G4VBiasingOperator()
G4BiasingTrackData * GetBiasingTrackData(const G4Track *track)
virtual void ExitBiasing(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
virtual G4VBiasingOperation * ProposeOccurenceBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
void AttachTo(const G4LogicalVolume *)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
virtual G4VBiasingOperation * ProposeNonPhysicsBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
static G4VBiasingOperator * GetBiasingOperator(const G4LogicalVolume *)
void ForgetTrack(const G4Track *track)
void Push_back(const value_type &val)
iterator Find(const key_type &k)
G4VBiasingOperator(G4String name)
void RememberSecondaries(const G4BiasingProcessInterface *callingProcess, const G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
void ReportOperationApplied(const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
G4VBiasingOperation * GetProposedNonPhysicsBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
void ExitingBiasing(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
const G4VBiasingOperation * GetBirthOperation(const G4Track *)
const G4String GetName() const