#include <G4EmBiasingManager.hh>
|
| G4EmBiasingManager () |
|
| ~G4EmBiasingManager () |
|
void | Initialise (const G4ParticleDefinition &part, const G4String &procName, G4int verbose) |
|
void | ActivateForcedInteraction (G4double length=0.0, const G4String &r="") |
|
void | ActivateSecondaryBiasing (const G4String ®ion, G4double factor, G4double energyLimit) |
|
G4double | GetStepLimit (G4int coupleIdx, G4double previousStep) |
|
G4double | ApplySecondaryBiasing (std::vector< G4DynamicParticle *> &, const G4Track &track, G4VEmModel *currentModel, G4ParticleChangeForGamma *pParticleChange, G4double &eloss, G4int coupleIdx, G4double tcut, G4double safety=0.0) |
|
G4double | ApplySecondaryBiasing (std::vector< G4DynamicParticle *> &, const G4Track &track, G4VEmModel *currentModel, G4ParticleChangeForLoss *pParticleChange, G4double &eloss, G4int coupleIdx, G4double tcut, G4double safety=0.0) |
|
G4double | ApplySecondaryBiasing (std::vector< G4Track *> &, G4int coupleIdx) |
|
G4bool | SecondaryBiasingRegion (G4int coupleIdx) |
|
G4bool | ForcedInteractionRegion (G4int coupleIdx) |
|
void | ResetForcedInteraction () |
|
Definition at line 67 of file G4EmBiasingManager.hh.
◆ G4EmBiasingManager() [1/2]
G4EmBiasingManager::G4EmBiasingManager |
( |
| ) |
|
Definition at line 65 of file G4EmBiasingManager.cc.
G4VEnergyLossProcess * eIonisation
G4double currentStepLimit
const G4ParticleDefinition * theElectron
static G4Electron * Electron()
◆ ~G4EmBiasingManager()
G4EmBiasingManager::~G4EmBiasingManager |
( |
| ) |
|
◆ G4EmBiasingManager() [2/2]
◆ ActivateForcedInteraction()
void G4EmBiasingManager::ActivateForcedInteraction |
( |
G4double |
length = 0.0 , |
|
|
const G4String & |
r = "" |
|
) |
| |
Definition at line 146 of file G4EmBiasingManager.cc.
151 if(name ==
"" || name ==
"world" || name ==
"World") {
152 name =
"DefaultRegionForTheWorld";
156 G4cout <<
"### G4EmBiasingManager::ForcedInteraction WARNING: " 158 << rname <<
"> is unknown" <<
G4endl;
172 G4cout <<
"### G4EmBiasingManager::ForcedInteraction WARNING: " 173 << val <<
" < 0.0, so no activation for the G4Region <" 174 << rname <<
">" <<
G4endl;
std::vector< const G4Region * > forcedRegions
static const G4double reg
static G4RegionStore * GetInstance()
G4GLOB_DLL std::ostream G4cout
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
std::vector< G4double > lengthForRegion
◆ ActivateSecondaryBiasing()
Definition at line 187 of file G4EmBiasingManager.cc.
196 if(name ==
"" || name ==
"world" || name ==
"World") {
197 name =
"DefaultRegionForTheWorld";
201 G4cout <<
"### G4EmBiasingManager::ActivateBremsstrahlungSplitting " 202 <<
"WARNING: G4Region <" 203 << rname <<
"> is unknown" <<
G4endl;
std::vector< G4double > secBiasedWeight
static const G4double reg
static G4RegionStore * GetInstance()
G4GLOB_DLL std::ostream G4cout
std::vector< const G4Region * > secBiasedRegions
std::vector< G4double > secBiasedEnegryLimit
static const G4double factor
std::vector< G4int > nBremSplitting
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
◆ ApplyRangeCut()
Definition at line 402 of file G4EmBiasingManager.cc.
406 size_t n = vd.size();
412 for(
size_t k=0; k<
n; ++k) {
G4VEnergyLossProcess * eIonisation
static G4LossTableManager * Instance()
G4double GetRangeForLoss(G4double &kineticEnergy, const G4MaterialCutsCouple *)
const G4ParticleDefinition * theElectron
G4double GetKineticEnergy() const
G4VEnergyLossProcess * GetEnergyLossProcess(const G4ParticleDefinition *)
G4ParticleDefinition * GetDefinition() const
◆ ApplyRussianRoulette()
Definition at line 194 of file G4EmBiasingManager.hh.
197 size_t n = vd.size();
199 for(
size_t k=0; k<
n; ++k) {
std::vector< G4double > secBiasedWeight
◆ ApplySecondaryBiasing() [1/3]
Definition at line 320 of file G4EmBiasingManager.cc.
333 size_t n = vd.size();
347 }
else if(1 == nsplit) {
352 G4double tmpEnergy = pPartChange->GetProposedKineticEnergy();
353 G4ThreeVector tmpMomDir = pPartChange->GetProposedMomentumDirection();
357 pPartChange->SetProposedKineticEnergy(tmpEnergy);
358 pPartChange->ProposeMomentumDirection(tmpMomDir);
G4double ApplyRussianRoulette(std::vector< G4DynamicParticle *> &vd, G4int index)
std::vector< G4int > idxSecBiasedCouple
G4double ApplySplitting(std::vector< G4DynamicParticle *> &vd, const G4Track &track, G4VEmModel *currentModel, G4int index, G4double tcut)
std::vector< G4double > secBiasedEnegryLimit
std::vector< G4int > nBremSplitting
void ApplyRangeCut(std::vector< G4DynamicParticle *> &vd, const G4Track &track, G4double &eloss, G4double safety)
◆ ApplySecondaryBiasing() [2/3]
Definition at line 272 of file G4EmBiasingManager.cc.
285 size_t n = vd.size();
299 }
else if(1 == nsplit) {
304 G4double tmpEnergy = pPartChange->GetProposedKineticEnergy();
305 G4ThreeVector tmpMomDir = pPartChange->GetProposedMomentumDirection();
309 pPartChange->SetProposedKineticEnergy(tmpEnergy);
310 pPartChange->ProposeMomentumDirection(tmpMomDir);
G4double ApplyRussianRoulette(std::vector< G4DynamicParticle *> &vd, G4int index)
std::vector< G4int > idxSecBiasedCouple
G4double ApplySplitting(std::vector< G4DynamicParticle *> &vd, const G4Track &track, G4VEmModel *currentModel, G4int index, G4double tcut)
std::vector< G4double > secBiasedEnegryLimit
std::vector< G4int > nBremSplitting
void ApplyRangeCut(std::vector< G4DynamicParticle *> &vd, const G4Track &track, G4double &eloss, G4double safety)
◆ ApplySecondaryBiasing() [3/3]
G4double G4EmBiasingManager::ApplySecondaryBiasing |
( |
std::vector< G4Track *> & |
track, |
|
|
G4int |
coupleIdx |
|
) |
| |
Definition at line 368 of file G4EmBiasingManager.cc.
386 for(
size_t k=0; k<
n; ++k) {
388 const G4Track* t =
track[k];
std::vector< G4double > secBiasedWeight
std::vector< G4int > idxSecBiasedCouple
std::vector< G4double > secBiasedEnegryLimit
std::vector< G4int > nBremSplitting
◆ ApplySplitting()
Definition at line 430 of file G4EmBiasingManager.cc.
439 size_t n = vd.size();
442 if(1 != n || 1.0 <= w) {
return weight; }
450 if(1 < nsplit && trackWeight>w) {
458 for(
G4int k=1; k<nsplit; ++k) {
std::vector< G4double > secBiasedWeight
virtual void SampleSecondaries(std::vector< G4DynamicParticle *> *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin=0.0, G4double tmax=DBL_MAX)=0
std::vector< G4int > nBremSplitting
std::vector< G4DynamicParticle * > tmpSecondaries
◆ ForcedInteractionRegion()
G4bool G4EmBiasingManager::ForcedInteractionRegion |
( |
G4int |
coupleIdx | ) |
|
|
inline |
◆ GetStepLimit()
Definition at line 250 of file G4EmBiasingManager.cc.
G4double currentStepLimit
std::vector< G4int > idxForcedCouple
std::vector< G4double > lengthForRegion
◆ Initialise()
Definition at line 80 of file G4EmBiasingManager.cc.
94 for (
size_t j=0; j<numOfCouples; ++j) {
119 if (nForcedRegions > 0 && 0 < verbose) {
120 G4cout <<
" Forced Interaction is activated for " 123 <<
" inside G4Regions: " <<
G4endl;
129 if (nSecBiasedRegions > 0 && 0 < verbose) {
130 G4cout <<
" Secondary biasing is activated for " 133 <<
" inside G4Regions: " <<
G4endl;
std::vector< G4double > secBiasedWeight
std::vector< const G4Region * > forcedRegions
G4ProductionCuts * GetProductionCuts() const
std::vector< G4int > idxSecBiasedCouple
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
std::vector< const G4Region * > secBiasedRegions
const G4String & GetName() const
std::vector< G4int > idxForcedCouple
static G4ProductionCutsTable * GetProductionCutsTable()
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
size_t GetTableSize() const
◆ operator=()
◆ ResetForcedInteraction()
void G4EmBiasingManager::ResetForcedInteraction |
( |
| ) |
|
|
inline |
◆ SecondaryBiasingRegion()
G4bool G4EmBiasingManager::SecondaryBiasingRegion |
( |
G4int |
coupleIdx | ) |
|
|
inline |
◆ currentStepLimit
G4double G4EmBiasingManager::currentStepLimit |
|
private |
◆ eIonisation
◆ forcedRegions
std::vector<const G4Region*> G4EmBiasingManager::forcedRegions |
|
private |
◆ fSafetyMin
◆ idxForcedCouple
std::vector<G4int> G4EmBiasingManager::idxForcedCouple |
|
private |
◆ idxSecBiasedCouple
std::vector<G4int> G4EmBiasingManager::idxSecBiasedCouple |
|
private |
◆ lengthForRegion
std::vector<G4double> G4EmBiasingManager::lengthForRegion |
|
private |
◆ nBremSplitting
std::vector<G4int> G4EmBiasingManager::nBremSplitting |
|
private |
◆ nForcedRegions
G4int G4EmBiasingManager::nForcedRegions |
|
private |
◆ nSecBiasedRegions
G4int G4EmBiasingManager::nSecBiasedRegions |
|
private |
◆ secBiasedEnegryLimit
std::vector<G4double> G4EmBiasingManager::secBiasedEnegryLimit |
|
private |
◆ secBiasedRegions
std::vector<const G4Region*> G4EmBiasingManager::secBiasedRegions |
|
private |
◆ secBiasedWeight
std::vector<G4double> G4EmBiasingManager::secBiasedWeight |
|
private |
◆ startTracking
G4bool G4EmBiasingManager::startTracking |
|
private |
◆ theElectron
◆ tmpSecondaries
The documentation for this class was generated from the following files: