Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions
G4VBiasingOperator Class Referenceabstract

#include <G4VBiasingOperator.hh>

Inheritance diagram for G4VBiasingOperator:
G4BOptrForceCollision GB01BOptrChangeCrossSection GB01BOptrMultiParticleChangeCrossSection GB02BOptrMultiParticleForceCollision

Public Member Functions

 G4VBiasingOperator (G4String name)
 
virtual ~G4VBiasingOperator ()
 
virtual void StartRun ()
 
virtual void StartTracking (const G4Track *)
 
virtual void EndTracking ()
 
const G4String GetName () const
 
void AttachTo (const G4LogicalVolume *)
 
G4BiasingAppliedCase GetPreviousBiasingAppliedCase () const
 
G4VBiasingOperationGetProposedOccurenceBiasingOperation (const G4Track *track, const G4BiasingProcessInterface *callingProcess)
 
G4VBiasingOperationGetProposedFinalStateBiasingOperation (const G4Track *track, const G4BiasingProcessInterface *callingProcess)
 
G4VBiasingOperationGetProposedNonPhysicsBiasingOperation (const G4Track *track, const G4BiasingProcessInterface *callingProcess)
 
void ExitingBiasing (const G4Track *track, const G4BiasingProcessInterface *callingProcess)
 
void ReportOperationApplied (const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
 
void ReportOperationApplied (const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *occurenceOperationApplied, G4double weightForOccurenceInteraction, G4VBiasingOperation *finalStateOperationApplied, const G4VParticleChange *particleChangeProduced)
 
const G4VBiasingOperationGetPreviousNonPhysicsAppliedOperation ()
 
const G4VBiasingOperationGetBirthOperation (const G4Track *)
 

Static Public Member Functions

static const std::vector
< G4VBiasingOperator * > & 
GetBiasingOperators ()
 
static G4VBiasingOperatorGetBiasingOperator (const G4LogicalVolume *)
 

Protected Member Functions

virtual G4VBiasingOperationProposeNonPhysicsBiasingOperation (const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
 
virtual G4VBiasingOperationProposeOccurenceBiasingOperation (const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
 
virtual G4VBiasingOperationProposeFinalStateBiasingOperation (const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
 
virtual void OperationApplied (const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
 
virtual void OperationApplied (const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *occurenceOperationApplied, G4double weightForOccurenceInteraction, G4VBiasingOperation *finalStateOperationApplied, const G4VParticleChange *particleChangeProduced)
 
virtual void ExitBiasing (const G4Track *track, const G4BiasingProcessInterface *callingProcess)
 
void RememberSecondaries (const G4BiasingProcessInterface *callingProcess, const G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
 
void ForgetTrack (const G4Track *track)
 

Detailed Description

Definition at line 191 of file G4VBiasingOperator.hh.

Constructor & Destructor Documentation

G4VBiasingOperator::G4VBiasingOperator ( G4String  name)

Definition at line 37 of file G4VBiasingOperator.cc.

References G4VectorCache< VALTYPE >::Push_back().

38  : fName(name)
39 {
40  fOperators.Push_back(this);
41 }
void Push_back(const value_type &val)
Definition: G4Cache.hh:304
G4VBiasingOperator::~G4VBiasingOperator ( )
virtual

Definition at line 43 of file G4VBiasingOperator.cc.

44 {
45 }

Member Function Documentation

void G4VBiasingOperator::AttachTo ( const G4LogicalVolume logical)

Definition at line 47 of file G4VBiasingOperator.cc.

References G4MapCache< KEYTYPE, VALTYPE >::End(), G4MapCache< KEYTYPE, VALTYPE >::Find(), G4endl, G4Exception(), G4LogicalVolume::GetName(), GetName(), and JustWarning.

Referenced by GB01DetectorConstruction::Construct(), and GB02DetectorConstruction::ConstructSDandField().

48 {
50  it = fLogicalToSetupMap.Find(logical);
51  if ( it == fLogicalToSetupMap.End() ) fLogicalToSetupMap[logical] = this;
52  else if ( (*it).second != this )
53  {
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;
58  G4Exception("G4VBiasingOperator::AttachTo(...)",
59  "BIAS.MNG.01",
61  ed);
62  }
63 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4String GetName() const
iterator End()
Definition: G4Cache.hh:382
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
iterator Find(const key_type &k)
Definition: G4Cache.hh:388
#define G4endl
Definition: G4ios.hh:61
const G4String GetName() const
virtual void G4VBiasingOperator::EndTracking ( )
inlinevirtual

Definition at line 268 of file G4VBiasingOperator.hh.

268 {}
void G4VBiasingOperator::ExitBiasing ( const G4Track track,
const G4BiasingProcessInterface callingProcess 
)
protectedvirtual

Reimplemented in G4BOptrForceCollision.

Definition at line 233 of file G4VBiasingOperator.cc.

Referenced by ExitingBiasing().

234 {}
void G4VBiasingOperator::ExitingBiasing ( const G4Track track,
const G4BiasingProcessInterface callingProcess 
)

Definition at line 194 of file G4VBiasingOperator.cc.

References BAC_None, and ExitBiasing().

Referenced by G4BiasingProcessInterface::EndTracking(), and G4BiasingProcessInterface::PostStepGetPhysicalInteractionLength().

195 {
196  ExitBiasing( track, callingProcess );
197 
198  // -- reset all data members:
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 ;
209 }
virtual void ExitBiasing(const G4Track *track, const G4BiasingProcessInterface *callingProcess)
void G4VBiasingOperator::ForgetTrack ( const G4Track track)
protected

Definition at line 223 of file G4VBiasingOperator.cc.

References G4BiasingTrackDataStore::GetBiasingTrackData(), and G4BiasingTrackDataStore::GetInstance().

Referenced by G4BOptrForceCollision::ExitBiasing().

224 {
226  if ( biasingData != 0 ) delete biasingData;
227 }
static G4BiasingTrackDataStore * GetInstance()
G4BiasingTrackData * GetBiasingTrackData(const G4Track *track)
G4VBiasingOperator * G4VBiasingOperator::GetBiasingOperator ( const G4LogicalVolume logical)
static

Definition at line 66 of file G4VBiasingOperator.cc.

References G4MapCache< KEYTYPE, VALTYPE >::End(), and G4MapCache< KEYTYPE, VALTYPE >::Find().

Referenced by G4BiasingProcessInterface::PostStepGetPhysicalInteractionLength().

67 {
69  it = fLogicalToSetupMap.Find(logical);
70  if ( it == fLogicalToSetupMap.End() ) return 0;
71  else return (*it).second;
72 }
iterator End()
Definition: G4Cache.hh:382
iterator Find(const key_type &k)
Definition: G4Cache.hh:388
static const std::vector< G4VBiasingOperator* >& G4VBiasingOperator::GetBiasingOperators ( )
inlinestatic
const G4VBiasingOperation * G4VBiasingOperator::GetBirthOperation ( const G4Track track)

Definition at line 113 of file G4VBiasingOperator.cc.

References G4BiasingTrackDataStore::GetBiasingTrackData(), G4BiasingTrackData::GetBirthOperation(), and G4BiasingTrackDataStore::GetInstance().

114 {
116  if ( biasingData != 0 ) return biasingData->GetBirthOperation();
117  else return 0;
118 }
static G4BiasingTrackDataStore * GetInstance()
const G4VBiasingOperation * GetBirthOperation() const
G4BiasingTrackData * GetBiasingTrackData(const G4Track *track)
const G4String G4VBiasingOperator::GetName ( void  ) const
inline
G4BiasingAppliedCase G4VBiasingOperator::GetPreviousBiasingAppliedCase ( ) const
inline

Definition at line 280 of file G4VBiasingOperator.hh.

280 {return fPreviousBiasingAppliedCase;}
const G4VBiasingOperation* G4VBiasingOperator::GetPreviousNonPhysicsAppliedOperation ( )
inline

Definition at line 304 of file G4VBiasingOperator.hh.

304 {return fPreviousAppliedNonPhysicsBiasingOperation;}
G4VBiasingOperation * G4VBiasingOperator::GetProposedFinalStateBiasingOperation ( const G4Track track,
const G4BiasingProcessInterface callingProcess 
)

Definition at line 83 of file G4VBiasingOperator.cc.

References ProposeFinalStateBiasingOperation().

Referenced by G4BiasingProcessInterface::PostStepDoIt().

84 {
85  fFinalStateBiasingOperation = ProposeFinalStateBiasingOperation(track, callingProcess);
86  // G4cout << GetName() << " Final State : ";
87  // if ( fFinalStateBiasingOperation ) G4cout << fFinalStateBiasingOperation->GetName() << G4endl;
88  // else G4cout << " (none) " << G4endl;
89  return fFinalStateBiasingOperation;
90 }
virtual G4VBiasingOperation * ProposeFinalStateBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
G4VBiasingOperation * G4VBiasingOperator::GetProposedNonPhysicsBiasingOperation ( const G4Track track,
const G4BiasingProcessInterface callingProcess 
)

Definition at line 92 of file G4VBiasingOperator.cc.

References ProposeNonPhysicsBiasingOperation().

Referenced by G4BiasingProcessInterface::PostStepGetPhysicalInteractionLength().

93 {
94  fNonPhysicsBiasingOperation = ProposeNonPhysicsBiasingOperation(track, callingProcess);
95  // G4cout << GetName() << " Non Physics : ";
96  // if ( fNonPhysicsBiasingOperation ) G4cout << fNonPhysicsBiasingOperation->GetName() << G4endl;
97  // else G4cout << " (none) " << G4endl;
98  return fNonPhysicsBiasingOperation;
99 }
virtual G4VBiasingOperation * ProposeNonPhysicsBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
G4VBiasingOperation * G4VBiasingOperator::GetProposedOccurenceBiasingOperation ( const G4Track track,
const G4BiasingProcessInterface callingProcess 
)

Definition at line 74 of file G4VBiasingOperator.cc.

References ProposeOccurenceBiasingOperation().

Referenced by G4BiasingProcessInterface::PostStepGetPhysicalInteractionLength().

75 {
76  fOccurenceBiasingOperation = ProposeOccurenceBiasingOperation(track, callingProcess);
77  // G4cout << GetName() << " Occurence : ";
78  // if ( fOccurenceBiasingOperation ) G4cout << fOccurenceBiasingOperation->GetName() << G4endl;
79  // else G4cout << " (none) " << G4endl;
80  return fOccurenceBiasingOperation;
81 }
virtual G4VBiasingOperation * ProposeOccurenceBiasingOperation(const G4Track *track, const G4BiasingProcessInterface *callingProcess)=0
void G4VBiasingOperator::OperationApplied ( const G4BiasingProcessInterface callingProcess,
G4BiasingAppliedCase  biasingCase,
G4VBiasingOperation operationApplied,
const G4VParticleChange particleChangeProduced 
)
protectedvirtual

Reimplemented in G4BOptrForceCollision.

Definition at line 235 of file G4VBiasingOperator.cc.

Referenced by ReportOperationApplied().

237 {}
void G4VBiasingOperator::OperationApplied ( const G4BiasingProcessInterface callingProcess,
G4BiasingAppliedCase  biasingCase,
G4VBiasingOperation occurenceOperationApplied,
G4double  weightForOccurenceInteraction,
G4VBiasingOperation finalStateOperationApplied,
const G4VParticleChange particleChangeProduced 
)
protectedvirtual

Definition at line 238 of file G4VBiasingOperator.cc.

241 {}
virtual G4VBiasingOperation* G4VBiasingOperator::ProposeFinalStateBiasingOperation ( const G4Track track,
const G4BiasingProcessInterface callingProcess 
)
protectedpure virtual
virtual G4VBiasingOperation* G4VBiasingOperator::ProposeNonPhysicsBiasingOperation ( const G4Track track,
const G4BiasingProcessInterface callingProcess 
)
protectedpure virtual
virtual G4VBiasingOperation* G4VBiasingOperator::ProposeOccurenceBiasingOperation ( const G4Track track,
const G4BiasingProcessInterface callingProcess 
)
protectedpure virtual
void G4VBiasingOperator::RememberSecondaries ( const G4BiasingProcessInterface callingProcess,
const G4VBiasingOperation operationApplied,
const G4VParticleChange particleChangeProduced 
)
protected

Definition at line 212 of file G4VBiasingOperator.cc.

References G4VParticleChange::GetNumberOfSecondaries(), and G4VParticleChange::GetSecondary().

Referenced by G4BOptrForceCollision::OperationApplied().

215 {
216  for (G4int i2nd = 0; i2nd < particleChangeProduced->GetNumberOfSecondaries (); i2nd++)
217  new G4BiasingTrackData( particleChangeProduced->GetSecondary (i2nd),
218  operationApplied,
219  this,
220  callingProcess);
221 }
G4int GetNumberOfSecondaries() const
G4Track * GetSecondary(G4int anIndex) const
int G4int
Definition: G4Types.hh:78
void G4VBiasingOperator::ReportOperationApplied ( const G4BiasingProcessInterface callingProcess,
G4BiasingAppliedCase  biasingCase,
G4VBiasingOperation operationApplied,
const G4VParticleChange particleChangeProduced 
)

Definition at line 121 of file G4VBiasingOperator.cc.

References BAC_DenyInteraction, BAC_FinalState, BAC_None, BAC_NonPhysics, BAC_Occurence, G4Exception(), JustWarning, and OperationApplied().

Referenced by G4BiasingProcessInterface::PostStepDoIt().

125 {
126  fPreviousBiasingAppliedCase = biasingCase;
127  // if ( operationApplied != 0 )
128  // {
129  // if ( operationApplied->GetRememberSecondaries() )
130  // {
131  // for (G4int i2nd = 0; i2nd < particleChangeProduced->GetNumberOfSecondaries (); i2nd++)
132  // new G4BiasingTrackData( particleChangeProduced->GetSecondary (i2nd),
133  // operationApplied,
134  // this,
135  // callingProcess);
136  // }
137  // }
138  fPreviousAppliedOccurenceBiasingOperation = 0;
139  fPreviousAppliedFinalStateBiasingOperation = 0;
140  fPreviousAppliedNonPhysicsBiasingOperation = 0;
141  switch ( biasingCase )
142  {
143  case BAC_None:
144  break;
145  case BAC_NonPhysics:
146  fPreviousAppliedNonPhysicsBiasingOperation = operationApplied ;
147  break;
148  case BAC_DenyInteraction:
149  fPreviousAppliedOccurenceBiasingOperation = operationApplied;
150  break;
151  case BAC_FinalState:
152  fPreviousAppliedFinalStateBiasingOperation = operationApplied;
153  break;
154  case BAC_Occurence:
155  G4Exception("G4VBiasingOperator::ReportOperationApplied(...)",
156  "BIAS.MNG.02",
157  JustWarning,
158  "Internal logic error, please report !");
159  break;
160  default:
161  G4Exception("G4VBiasingOperator::ReportOperationApplied(...)",
162  "BIAS.MNG.03",
163  JustWarning,
164  "Internal logic error, please report !");
165  }
166  OperationApplied( callingProcess, biasingCase, operationApplied, particleChangeProduced );
167 }
virtual void OperationApplied(const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
void G4VBiasingOperator::ReportOperationApplied ( const G4BiasingProcessInterface callingProcess,
G4BiasingAppliedCase  biasingCase,
G4VBiasingOperation occurenceOperationApplied,
G4double  weightForOccurenceInteraction,
G4VBiasingOperation finalStateOperationApplied,
const G4VParticleChange particleChangeProduced 
)

Definition at line 169 of file G4VBiasingOperator.cc.

References OperationApplied().

175 {
176  fPreviousBiasingAppliedCase = biasingCase;
177  // G4VBiasingOperation* operation(finalStateOperationApplied != 0 ? finalStateOperationApplied : occurenceOperationApplied);
178  // G4bool remember = occurenceOperationApplied->GetRememberSecondaries();
179  // if ( finalStateOperationApplied != 0 ) remember = remember || finalStateOperationApplied->GetRememberSecondaries();
180  // if ( remember )
181  // {
182  // for (G4int i2nd = 0; i2nd < particleChangeProduced->GetNumberOfSecondaries (); i2nd++)
183  // new G4BiasingTrackData( particleChangeProduced->GetSecondary (i2nd),
184  // operation,
185  // this,
186  // callingProcess);
187  // }
188  fPreviousAppliedOccurenceBiasingOperation = occurenceOperationApplied;
189  fPreviousAppliedFinalStateBiasingOperation = finalStateOperationApplied;
190  OperationApplied( callingProcess, biasingCase, occurenceOperationApplied, weightForOccurenceInteraction, finalStateOperationApplied, particleChangeProduced );
191 }
virtual void OperationApplied(const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
virtual void G4VBiasingOperator::StartRun ( )
inlinevirtual

Definition at line 265 of file G4VBiasingOperator.hh.

265 {}
virtual void G4VBiasingOperator::StartTracking ( const G4Track )
inlinevirtual

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