Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GB05BOptrSplitAndKillByCrossSection Class Reference

#include <GB05BOptrSplitAndKillByCrossSection.hh>

Inheritance diagram for GB05BOptrSplitAndKillByCrossSection:
Collaboration diagram for GB05BOptrSplitAndKillByCrossSection:

Public Member Functions

 GB05BOptrSplitAndKillByCrossSection (G4String particleToBias, G4String name="SplitAndKillByXS")
 
virtual ~GB05BOptrSplitAndKillByCrossSection ()
 
virtual void StartRun ()
 
void AddProcessToEquipoise (G4String processName)
 
- Public Member Functions inherited from G4VBiasingOperator
 G4VBiasingOperator (G4String name)
 
virtual ~G4VBiasingOperator ()
 
virtual void Configure ()
 
virtual void ConfigureForWorker ()
 
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 ()
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VBiasingOperator
static const std::vector
< G4VBiasingOperator * > & 
GetBiasingOperators ()
 
static G4VBiasingOperatorGetBiasingOperator (const G4LogicalVolume *)
 
- Protected Member Functions inherited from G4VBiasingOperator
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)
 

Detailed Description

Definition at line 58 of file GB05BOptrSplitAndKillByCrossSection.hh.

Constructor & Destructor Documentation

GB05BOptrSplitAndKillByCrossSection::GB05BOptrSplitAndKillByCrossSection ( G4String  particleToBias,
G4String  name = "SplitAndKillByXS" 
)

Definition at line 42 of file GB05BOptrSplitAndKillByCrossSection.cc.

44  : G4VBiasingOperator(name),
45  fSetup(true)
46 {
47  fParticleToBias = G4ParticleTable::GetParticleTable()->FindParticle(particleName);
48 
49  if ( fParticleToBias == 0 )
50  {
52  ed << "Particle `" << particleName << "' not found !" << G4endl;
53  G4Exception("GB05BOptrSplitAndKillByCrossSection(...)",
54  "exGB05.01",
56  ed);
57  }
58 
59  fSplitAndKillByCrossSection =
60  new GB05BOptnSplitAndKillByCrossSection("splitterFor_"+particleName);
61 
62 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
static G4ParticleTable * GetParticleTable()
G4VBiasingOperator(G4String name)
#define G4endl
Definition: G4ios.hh:61

Here is the call graph for this function:

GB05BOptrSplitAndKillByCrossSection::~GB05BOptrSplitAndKillByCrossSection ( )
virtual

Definition at line 66 of file GB05BOptrSplitAndKillByCrossSection.cc.

67 {
68  delete fSplitAndKillByCrossSection;
69 }

Member Function Documentation

void GB05BOptrSplitAndKillByCrossSection::AddProcessToEquipoise ( G4String  processName)

Definition at line 183 of file GB05BOptrSplitAndKillByCrossSection.cc.

184 {
185  fProcessesToEquipoise.push_back( processName );
186 }

Here is the caller graph for this function:

void GB05BOptrSplitAndKillByCrossSection::StartRun ( )
virtual

Reimplemented from G4VBiasingOperator.

Definition at line 73 of file GB05BOptrSplitAndKillByCrossSection.cc.

74 {
75  // ---------------
76  // -- Setup stage:
77  // ---------------
78  // -- Start by collecting the pointer of the physics processes
79  // -- considered for the splitting by cross-sections. Doing so,
80  // -- this also verifies that these physics processes are each
81  // -- under control of a G4BiasingProcessInterface wrapper.
82  if ( fSetup )
83  {
84  const G4ProcessManager* processManager = fParticleToBias->GetProcessManager();
85  const G4BiasingProcessSharedData* sharedData =
87  if ( sharedData )
88  {
89  for ( size_t i = 0 ; i < fProcessesToEquipoise.size() ; i++ )
90  {
91  G4bool processFound(false);
92  for ( size_t j = 0 ;
93  j < (sharedData->GetPhysicsBiasingProcessInterfaces()).size();
94  j++ )
95  {
96  const G4BiasingProcessInterface* wrapperProcess =
97  (sharedData->GetPhysicsBiasingProcessInterfaces())[j];
98  if ( fProcessesToEquipoise[i] ==
99  wrapperProcess->GetWrappedProcess()->GetProcessName() )
100  {
101  fProcesses.push_back( wrapperProcess->GetWrappedProcess() );
102  processFound = true;
103  break;
104  }
105  }
106  if ( !processFound )
107  {
108  G4String particleName = "(unknown)";
109  if ( fParticleToBias != nullptr )
110  {
111  particleName = fParticleToBias->GetParticleName();
112  }
114  ed << "Process `" << fProcessesToEquipoise[i]
115  << "' not found for particle `" << particleName << "'"
116  << G4endl;
117  G4Exception("GB05BOptrSplitAndKillByCrossSection::StartRun(...)",
118  "exGB05.02",
119  JustWarning,
120  ed);
121  }
122  }
123  }
124  fSetup = false;
125  }
126 
127  if ( fProcessesToEquipoise.size() == 0 || fProcesses.size() == 0 )
128  {
130  ed << "No processes to counterbalance for defined or found ! "
131  << "Biasing will do nothing."
132  << G4endl;
133  G4Exception("GB05BOptrSplitAndKillByCrossSection::StartRun(...)",
134  "exGB05.03",
135  JustWarning,
136  ed);
137  }
138 
139 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
const std::vector< const G4BiasingProcessInterface * > & GetPhysicsBiasingProcessInterfaces() const
const G4String & GetParticleName() const
G4VProcess * GetWrappedProcess() const
bool G4bool
Definition: G4Types.hh:79
const G4String & GetProcessName() const
Definition: G4VProcess.hh:408
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4ProcessManager * GetProcessManager() const
#define G4endl
Definition: G4ios.hh:61
const G4BiasingProcessSharedData * GetSharedData() const

Here is the call graph for this function:


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