ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4EmBiasingManager Class Reference

#include <geant4/tree/geant4-10.6-release/source/processes/electromagnetic/utils/include/G4EmBiasingManager.hh>

+ Collaboration diagram for G4EmBiasingManager:

Public Member Functions

 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 &region, 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 ()
 
G4bool CheckDirection (G4ThreeVector pos, G4ThreeVector momdir) const
 
G4bool GetDirectionalSplitting ()
 
void SetDirectionalSplitting (G4bool v)
 
void SetDirectionalSplittingTarget (G4ThreeVector v)
 
void SetDirectionalSplittingRadius (G4double r)
 
G4double GetWeight (G4int i)
 

Private Member Functions

void ApplyRangeCut (std::vector< G4DynamicParticle * > &vd, const G4Track &track, G4double &eloss, G4double safety)
 
G4double ApplySplitting (std::vector< G4DynamicParticle * > &vd, const G4Track &track, G4VEmModel *currentModel, G4int index, G4double tcut)
 
G4double ApplyDirectionalSplitting (std::vector< G4DynamicParticle * > &vd, const G4Track &track, G4VEmModel *currentModel, G4int index, G4double tcut, G4ParticleChangeForGamma *partChange)
 
G4double ApplyDirectionalSplitting (std::vector< G4DynamicParticle * > &vd, const G4Track &track, G4VEmModel *currentModel, G4int index, G4double tcut)
 
G4double ApplyRussianRoulette (std::vector< G4DynamicParticle * > &vd, G4int index)
 
 G4EmBiasingManager (G4EmBiasingManager &)=delete
 
G4EmBiasingManageroperator= (const G4EmBiasingManager &right)=delete
 

Private Attributes

G4int nForcedRegions
 
G4int nSecBiasedRegions
 
std::vector< const G4Region * > forcedRegions
 
std::vector< G4doublelengthForRegion
 
std::vector< const G4Region * > secBiasedRegions
 
std::vector< G4doublesecBiasedWeight
 
std::vector< G4doublesecBiasedEnegryLimit
 
std::vector< G4intnBremSplitting
 
std::vector< G4intidxForcedCouple
 
std::vector< G4intidxSecBiasedCouple
 
std::vector< G4DynamicParticle * > tmpSecondaries
 
G4VEnergyLossProcesseIonisation
 
const G4ParticleDefinitiontheElectron
 
const G4ParticleDefinitiontheGamma
 
G4double fSafetyMin
 
G4double currentStepLimit
 
G4bool startTracking
 
G4bool fDirectionalSplitting
 
G4ThreeVector fDirectionalSplittingTarget
 
G4double fDirectionalSplittingRadius
 
std::vector< G4doublefDirectionalSplittingWeights
 

Detailed Description

Definition at line 66 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 66 of file G4EmBiasingManager.hh

Constructor & Destructor Documentation

G4EmBiasingManager::G4EmBiasingManager ( )

Definition at line 67 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 67 of file G4EmBiasingManager.cc

References G4Electron::Electron(), fDirectionalSplitting, fDirectionalSplittingRadius, fDirectionalSplittingTarget, fDirectionalSplittingWeights, fSafetyMin, G4Gamma::Gamma(), mm, theElectron, and theGamma.

+ Here is the call graph for this function:

G4EmBiasingManager::~G4EmBiasingManager ( )

Definition at line 83 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 83 of file G4EmBiasingManager.cc

G4EmBiasingManager::G4EmBiasingManager ( G4EmBiasingManager )
privatedelete

Member Function Documentation

void G4EmBiasingManager::ActivateForcedInteraction ( G4double  length = 0.0,
const G4String r = "" 
)

Definition at line 169 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 169 of file G4EmBiasingManager.cc

References forcedRegions, G4cout, G4endl, G4RegionStore::GetInstance(), G4RegionStore::GetRegion(), lengthForRegion, nForcedRegions, and reg.

Referenced by G4VEmProcess::ActivateForcedInteraction(), and G4VEnergyLossProcess::ActivateForcedInteraction().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4EmBiasingManager::ActivateSecondaryBiasing ( const G4String region,
G4double  factor,
G4double  energyLimit 
)

Definition at line 210 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 210 of file G4EmBiasingManager.cc

References G4cout, G4endl, G4lrint(), G4RegionStore::GetInstance(), G4RegionStore::GetRegion(), nBremSplitting, nSecBiasedRegions, reg, secBiasedEnegryLimit, secBiasedRegions, secBiasedWeight, and w.

Referenced by G4VEmProcess::ActivateSecondaryBiasing(), and G4VEnergyLossProcess::ActivateSecondaryBiasing().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4EmBiasingManager::ApplyDirectionalSplitting ( std::vector< G4DynamicParticle * > &  vd,
const G4Track track,
G4VEmModel currentModel,
G4int  index,
G4double  tcut,
G4ParticleChangeForGamma partChange 
)
private

Definition at line 521 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 521 of file G4EmBiasingManager.cc

References CheckDirection(), fDirectionalSplittingWeights, G4UniformRand, G4Track::GetDynamicParticle(), G4Track::GetMaterialCutsCouple(), G4Track::GetPosition(), G4ParticleChangeForGamma::GetProposedKineticEnergy(), G4ParticleChangeForGamma::GetProposedMomentumDirection(), G4Track::GetWeight(), k, nBremSplitting, pos(), G4ParticleChangeForGamma::ProposeMomentumDirection(), G4VParticleChange::ProposeWeight(), G4VEmModel::SampleSecondaries(), secBiasedWeight, G4ParticleChangeForGamma::SetProposedKineticEnergy(), theGamma, tmpSecondaries, w, and weight.

Referenced by ApplySecondaryBiasing().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4EmBiasingManager::ApplyDirectionalSplitting ( std::vector< G4DynamicParticle * > &  vd,
const G4Track track,
G4VEmModel currentModel,
G4int  index,
G4double  tcut 
)
private

Definition at line 650 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 650 of file G4EmBiasingManager.cc

References CheckDirection(), fDirectionalSplittingWeights, G4UniformRand, G4Track::GetDynamicParticle(), G4Track::GetMaterialCutsCouple(), G4Track::GetPosition(), G4Track::GetWeight(), k, nBremSplitting, pos(), G4VEmModel::SampleSecondaries(), secBiasedWeight, tmpSecondaries, w, and weight.

+ Here is the call graph for this function:

void G4EmBiasingManager::ApplyRangeCut ( std::vector< G4DynamicParticle * > &  vd,
const G4Track track,
G4double eloss,
G4double  safety 
)
private

Definition at line 436 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 436 of file G4EmBiasingManager.cc

References e, eIonisation, G4DynamicParticle::GetDefinition(), G4LossTableManager::GetEnergyLossProcess(), G4DynamicParticle::GetKineticEnergy(), G4Track::GetMaterialCutsCouple(), G4VEnergyLossProcess::GetRangeForLoss(), G4LossTableManager::Instance(), k, n, and theElectron.

Referenced by ApplySecondaryBiasing().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4EmBiasingManager::ApplyRussianRoulette ( std::vector< G4DynamicParticle * > &  vd,
G4int  index 
)
inlineprivate

Definition at line 223 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 223 of file G4EmBiasingManager.hh

References G4UniformRand, k, n, secBiasedWeight, and weight.

Referenced by ApplySecondaryBiasing().

+ Here is the caller graph for this function:

G4double G4EmBiasingManager::ApplySecondaryBiasing ( std::vector< G4DynamicParticle * > &  vd,
const G4Track track,
G4VEmModel currentModel,
G4ParticleChangeForGamma pParticleChange,
G4double eloss,
G4int  coupleIdx,
G4double  tcut,
G4double  safety = 0.0 
)

Definition at line 348 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 348 of file G4EmBiasingManager.cc

References ApplyDirectionalSplitting(), ApplyRangeCut(), ApplyRussianRoulette(), ApplySplitting(), fDirectionalSplitting, fSafetyMin, G4ParticleChangeForGamma::GetProposedKineticEnergy(), G4ParticleChangeForGamma::GetProposedMomentumDirection(), idxSecBiasedCouple, n, nBremSplitting, G4ParticleChangeForGamma::ProposeMomentumDirection(), secBiasedEnegryLimit, G4ParticleChangeForGamma::SetProposedKineticEnergy(), and weight.

Referenced by G4eplusAnnihilation::AtRestDoIt(), G4VEnergyLossProcess::FillSecondariesAlongStep(), G4VEmProcess::PostStepDoIt(), and G4VEnergyLossProcess::PostStepDoIt().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4EmBiasingManager::ApplySecondaryBiasing ( std::vector< G4DynamicParticle * > &  vd,
const G4Track track,
G4VEmModel currentModel,
G4ParticleChangeForLoss pParticleChange,
G4double eloss,
G4int  coupleIdx,
G4double  tcut,
G4double  safety = 0.0 
)
G4double G4EmBiasingManager::ApplySecondaryBiasing ( std::vector< G4Track * > &  track,
G4int  coupleIdx 
)

Definition at line 402 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 402 of file G4EmBiasingManager.cc

References G4UniformRand, idxSecBiasedCouple, k, n, nBremSplitting, secBiasedEnegryLimit, secBiasedWeight, t, and weight.

G4double G4EmBiasingManager::ApplySplitting ( std::vector< G4DynamicParticle * > &  vd,
const G4Track track,
G4VEmModel currentModel,
G4int  index,
G4double  tcut 
)
private

Definition at line 478 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 478 of file G4EmBiasingManager.cc

References G4Track::GetDynamicParticle(), G4Track::GetMaterialCutsCouple(), G4Track::GetWeight(), k, n, nBremSplitting, G4VEmModel::SampleSecondaries(), secBiasedWeight, tmpSecondaries, w, and weight.

Referenced by ApplySecondaryBiasing().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4bool G4EmBiasingManager::CheckDirection ( G4ThreeVector  pos,
G4ThreeVector  momdir 
) const

Definition at line 463 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 463 of file G4EmBiasingManager.cc

References angle, CLHEP::Hep3Vector::angle(), CLHEP::Hep3Vector::cross(), Acts::Test::delta, fDirectionalSplittingRadius, fDirectionalSplittingTarget, halfpi, CLHEP::Hep3Vector::mag(), and pos().

Referenced by ApplyDirectionalSplitting().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4bool G4EmBiasingManager::ForcedInteractionRegion ( G4int  coupleIdx)
inline

Definition at line 206 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 206 of file G4EmBiasingManager.hh

References idxForcedCouple, and nForcedRegions.

Referenced by G4VEmProcess::PostStepDoIt(), G4VEnergyLossProcess::PostStepDoIt(), G4VEmProcess::PostStepGetPhysicalInteractionLength(), and G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength().

+ Here is the caller graph for this function:

G4bool G4EmBiasingManager::GetDirectionalSplitting ( )
inline

Definition at line 125 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 125 of file G4EmBiasingManager.hh

References fDirectionalSplitting.

G4double G4EmBiasingManager::GetStepLimit ( G4int  coupleIdx,
G4double  previousStep 
)

Definition at line 273 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 273 of file G4EmBiasingManager.cc

References currentStepLimit, DBL_MAX, G4UniformRand, idxForcedCouple, lengthForRegion, and startTracking.

Referenced by G4VEmProcess::PostStepGetPhysicalInteractionLength(), and G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength().

+ Here is the caller graph for this function:

G4double G4EmBiasingManager::GetWeight ( G4int  i)

Definition at line 636 of file G4EmBiasingManager.cc.

View newest version in sPHENIX GitHub at line 636 of file G4EmBiasingManager.cc

References fDirectionalSplittingWeights, int(), and w.

Referenced by G4eplusAnnihilation::AtRestDoIt(), G4VEmProcess::PostStepDoIt(), and G4VEnergyLossProcess::PostStepDoIt().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4EmBiasingManager& G4EmBiasingManager::operator= ( const G4EmBiasingManager right)
privatedelete
void G4EmBiasingManager::ResetForcedInteraction ( )
inline

Definition at line 215 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 215 of file G4EmBiasingManager.hh

References startTracking.

Referenced by G4VEmProcess::StartTracking(), and G4VEnergyLossProcess::StartTracking().

+ Here is the caller graph for this function:

G4bool G4EmBiasingManager::SecondaryBiasingRegion ( G4int  coupleIdx)
inline

Definition at line 197 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 197 of file G4EmBiasingManager.hh

References idxSecBiasedCouple, and nSecBiasedRegions.

Referenced by G4eplusAnnihilation::AtRestDoIt(), G4VEnergyLossProcess::FillSecondariesAlongStep(), G4VEmProcess::PostStepDoIt(), and G4VEnergyLossProcess::PostStepDoIt().

+ Here is the caller graph for this function:

void G4EmBiasingManager::SetDirectionalSplitting ( G4bool  v)
inline

Definition at line 126 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 126 of file G4EmBiasingManager.hh

References fDirectionalSplitting, and v.

Referenced by Initialise().

+ Here is the caller graph for this function:

void G4EmBiasingManager::SetDirectionalSplittingRadius ( G4double  r)
inline

Definition at line 130 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 130 of file G4EmBiasingManager.hh

References fDirectionalSplittingRadius, and r.

Referenced by Initialise().

+ Here is the caller graph for this function:

void G4EmBiasingManager::SetDirectionalSplittingTarget ( G4ThreeVector  v)
inline

Definition at line 128 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 128 of file G4EmBiasingManager.hh

References fDirectionalSplittingTarget, and v.

Referenced by Initialise().

+ Here is the caller graph for this function:

Member Data Documentation

G4double G4EmBiasingManager::currentStepLimit
private

Definition at line 187 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 187 of file G4EmBiasingManager.hh

Referenced by GetStepLimit().

G4VEnergyLossProcess* G4EmBiasingManager::eIonisation
private

Definition at line 181 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 181 of file G4EmBiasingManager.hh

Referenced by ApplyRangeCut().

G4bool G4EmBiasingManager::fDirectionalSplitting
private

Definition at line 190 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 190 of file G4EmBiasingManager.hh

Referenced by ApplySecondaryBiasing(), G4EmBiasingManager(), GetDirectionalSplitting(), Initialise(), and SetDirectionalSplitting().

G4double G4EmBiasingManager::fDirectionalSplittingRadius
private

Definition at line 192 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 192 of file G4EmBiasingManager.hh

Referenced by CheckDirection(), G4EmBiasingManager(), Initialise(), and SetDirectionalSplittingRadius().

G4ThreeVector G4EmBiasingManager::fDirectionalSplittingTarget
private

Definition at line 191 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 191 of file G4EmBiasingManager.hh

Referenced by CheckDirection(), G4EmBiasingManager(), Initialise(), and SetDirectionalSplittingTarget().

std::vector<G4double> G4EmBiasingManager::fDirectionalSplittingWeights
private

Definition at line 193 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 193 of file G4EmBiasingManager.hh

Referenced by ApplyDirectionalSplitting(), G4EmBiasingManager(), and GetWeight().

std::vector<const G4Region*> G4EmBiasingManager::forcedRegions
private

Definition at line 169 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 169 of file G4EmBiasingManager.hh

Referenced by ActivateForcedInteraction(), and Initialise().

G4double G4EmBiasingManager::fSafetyMin
private

Definition at line 186 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 186 of file G4EmBiasingManager.hh

Referenced by ApplySecondaryBiasing(), and G4EmBiasingManager().

std::vector<G4int> G4EmBiasingManager::idxForcedCouple
private

Definition at line 176 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 176 of file G4EmBiasingManager.hh

Referenced by ForcedInteractionRegion(), GetStepLimit(), and Initialise().

std::vector<G4int> G4EmBiasingManager::idxSecBiasedCouple
private

Definition at line 177 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 177 of file G4EmBiasingManager.hh

Referenced by ApplySecondaryBiasing(), Initialise(), and SecondaryBiasingRegion().

std::vector<G4double> G4EmBiasingManager::lengthForRegion
private

Definition at line 170 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 170 of file G4EmBiasingManager.hh

Referenced by ActivateForcedInteraction(), and GetStepLimit().

std::vector<G4int> G4EmBiasingManager::nBremSplitting
private

Definition at line 174 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 174 of file G4EmBiasingManager.hh

Referenced by ActivateSecondaryBiasing(), ApplyDirectionalSplitting(), ApplySecondaryBiasing(), and ApplySplitting().

G4int G4EmBiasingManager::nForcedRegions
private

Definition at line 167 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 167 of file G4EmBiasingManager.hh

Referenced by ActivateForcedInteraction(), ForcedInteractionRegion(), and Initialise().

G4int G4EmBiasingManager::nSecBiasedRegions
private

Definition at line 168 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 168 of file G4EmBiasingManager.hh

Referenced by ActivateSecondaryBiasing(), Initialise(), and SecondaryBiasingRegion().

std::vector<G4double> G4EmBiasingManager::secBiasedEnegryLimit
private

Definition at line 173 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 173 of file G4EmBiasingManager.hh

Referenced by ActivateSecondaryBiasing(), and ApplySecondaryBiasing().

std::vector<const G4Region*> G4EmBiasingManager::secBiasedRegions
private

Definition at line 171 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 171 of file G4EmBiasingManager.hh

Referenced by ActivateSecondaryBiasing(), and Initialise().

std::vector<G4double> G4EmBiasingManager::secBiasedWeight
private

Definition at line 172 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 172 of file G4EmBiasingManager.hh

Referenced by ActivateSecondaryBiasing(), ApplyDirectionalSplitting(), ApplyRussianRoulette(), ApplySecondaryBiasing(), ApplySplitting(), and Initialise().

G4bool G4EmBiasingManager::startTracking
private

Definition at line 188 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 188 of file G4EmBiasingManager.hh

Referenced by GetStepLimit(), and ResetForcedInteraction().

const G4ParticleDefinition* G4EmBiasingManager::theElectron
private

Definition at line 183 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 183 of file G4EmBiasingManager.hh

Referenced by ApplyRangeCut(), and G4EmBiasingManager().

const G4ParticleDefinition* G4EmBiasingManager::theGamma
private

Definition at line 184 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 184 of file G4EmBiasingManager.hh

Referenced by ApplyDirectionalSplitting(), and G4EmBiasingManager().

std::vector<G4DynamicParticle*> G4EmBiasingManager::tmpSecondaries
private

Definition at line 179 of file G4EmBiasingManager.hh.

View newest version in sPHENIX GitHub at line 179 of file G4EmBiasingManager.hh

Referenced by ApplyDirectionalSplitting(), and ApplySplitting().


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