48 #ifndef G4EmBiasingManager_h
49 #define G4EmBiasingManager_h 1
126 void ApplyRangeCut(std::vector<G4DynamicParticle*>& vd,
131 G4double ApplySplitting(std::vector<G4DynamicParticle*>& vd,
137 inline G4double ApplyRussianRoulette(std::vector<G4DynamicParticle*>& vd,
144 G4int nForcedRegions;
145 G4int nSecBiasedRegions;
146 std::vector<const G4Region*> forcedRegions;
147 std::vector<G4double> lengthForRegion;
148 std::vector<const G4Region*> secBiasedRegions;
149 std::vector<G4double> secBiasedWeight;
150 std::vector<G4double> secBiasedEnegryLimit;
151 std::vector<G4int> nBremSplitting;
153 std::vector<G4int> idxForcedCouple;
154 std::vector<G4int> idxSecBiasedCouple;
156 std::vector<G4DynamicParticle*> tmpSecondaries;
171 if(nSecBiasedRegions > 0) {
172 if(idxSecBiasedCouple[coupleIdx] >= 0) { res =
true; }
180 if(nForcedRegions > 0) {
181 if(idxForcedCouple[coupleIdx] >= 0) { res =
true; }
188 startTracking =
true;
194 G4EmBiasingManager::ApplyRussianRoulette(std::vector<G4DynamicParticle*>& vd,
197 size_t n = vd.size();
198 G4double weight = secBiasedWeight[index];
199 for(
size_t k=0; k<
n; ++k) {
void ActivateForcedInteraction(G4double length=0.0, const G4String &r="")
G4double ApplySecondaryBiasing(std::vector< G4DynamicParticle * > &, const G4Track &track, G4VEmModel *currentModel, G4ParticleChangeForGamma *pParticleChange, G4double &eloss, G4int coupleIdx, G4double tcut, G4double safety=0.0)
G4bool SecondaryBiasingRegion(G4int coupleIdx)
G4bool ForcedInteractionRegion(G4int coupleIdx)
void ResetForcedInteraction()
void Initialise(const G4ParticleDefinition &part, const G4String &procName, G4int verbose)
G4double GetStepLimit(G4int coupleIdx, G4double previousStep)
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)