62 fPhysBiasAllCharged(false), fNonPhysBiasAllCharged(false),
63 fPhysBiasAllChargedISL(false), fNonPhysBiasAllChargedISL(false),
64 fPhysBiasAllNeutral(false), fNonPhysBiasAllNeutral(false),
65 fPhysBiasAllNeutralISL(false), fNonPhysBiasAllNeutralISL(false),
80 std::vector< G4String > dummy;
120 if ( PDGlow > PDGhigh )
G4cout <<
" G4GenericBiasingPhysics::PhysicsBiasAddPDGRange(...) : PDGlow > PDGhigh, call ignored." <<
G4endl;
123 if ( includeAntiParticle )
133 if ( PDGlow > PDGhigh )
G4cout <<
" G4GenericBiasingPhysics::NonPhysicsBiasAddPDGRange(...) : PDGlow > PDGhigh, call ignored." <<
G4endl;
136 if ( includeAntiParticle )
147 if ( PDGlow > PDGhigh )
G4cout <<
" G4GenericBiasingPhysics::BiasAddPDGRange(...) : PDGlow > PDGhigh, call ignored." <<
G4endl;
194 if ( knownParticle == particleName )
202 if ( !isKnown ) fParticlesWithParallelGeometries.push_back( particleName );
206 for (
G4String knownGeometry : geometries )
208 if ( knownGeometry == parallelGeometryName )
214 if ( !isKnown ) geometries.push_back( parallelGeometryName );
225 if ( PDGlow > PDGhigh )
227 G4cout <<
"G4GenericBiasingPhysics::AddParallelGeometry( G4int PDGlow, G4int PDGhigh, const G4String& parallelGeometryName , G4bool includeAntiParticle = true ), PDGlow > PDGhigh : call ignored" <<
G4endl;
236 if ( includeAntiParticle )
248 if ( PDGlow > PDGhigh )
250 G4cout <<
"G4GenericBiasingPhysics::AddParallelGeometry( G4int PDGlow, G4int PDGhigh, const std::vector< G4String >& parallelGeometryNames, G4bool includeAntiParticle = true ), PDGlow > PDGhigh : call ignored" <<
G4endl;
262 if ( geometry == parallelGeometryName )
270 fParallelGeometriesForCharged .push_back( parallelGeometryName );
285 if ( geometry == parallelGeometryName )
293 fParallelGeometriesForNeutral .push_back( parallelGeometryName );
334 std::vector< G4String >::const_iterator particleIt =
346 for (
G4int ip = 0 ; ip < vprocess->
size() ; ip++)
354 while ( restartLoop )
356 for (std::size_t ip = 0 ; ip < biasedProcesses.size() ; ip++)
360 if ( restartLoop )
break;
386 G4bool physBias(
false), nonPhysBias(
false);
405 if ( ( physBias ==
false ) && ( nonPhysBias == false ) )
424 std::vector < G4String > biasedProcesses;
426 for (
G4int ip = 0 ; ip < vprocess->
size() ; ip++)
433 while ( restartLoop )
435 for (std::size_t ip = 0 ; ip < biasedProcesses.size() ; ip++)
439 if ( restartLoop )
break;
469 for (
G4int ip = 0 ; ip < vprocess->
size() ; ip++)
483 processNames +=
"\n ";
494 G4cout << std::setw(14) << particleName <<
" **** : " << processNames <<
G4endl;
496 G4cout << std::setw(18) << particleName <<
" : " << processNames <<
G4endl;
520 if ( requestedParticles == particleName )
554 if ( ( particlePDG >= PDGlow ) && ( particlePDG <= PDGhigh ) )
virtual void ConstructParticle()
void BiasAllCharged(G4bool includeShortLived=false)
G4bool fPhysBiasAllChargedISL
std::vector< std::vector< G4String > > fBiasedProcesses
G4bool fNonPhysBiasAllChargedISL
virtual void ConstructProcess()
void PhysicsBiasAllNeutral(G4bool includeShortLived=false)
std::vector< G4String > fParallelGeometriesForNeutral
void NonPhysicsBiasAllCharged(G4bool includeShortLived=false)
void PhysicsBias(const G4String &particleName)
G4int GetPDGEncoding() const
const char * name(G4int ptype)
void AddParallelGeometry(const G4String &particleName, const G4String ¶llelGeometryName)
static void ActivateNonPhysicsBiasing(G4ProcessManager *pmanager, G4String nonPhysicsProcessName="")
std::vector< G4int > fNonPhysBiasByPDGRangeHigh
const G4String & GetParticleName() const
void AddParallelWorld(const G4String ¶llelWorldName)
std::vector< G4int > fPhysBiasByPDGRangeHigh
void AssociateParallelGeometries()
void NonPhysicsBiasAddPDGRange(G4int PDGlow, G4int PDGhigh, G4bool includeAntiParticle=true)
void PhysicsBiasAllCharged(G4bool includeShortLived=false)
virtual ~G4GenericBiasingPhysics()
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
G4GLOB_DLL std::ostream G4cout
G4GenericBiasingPhysics(const G4String &name="BiasingP")
std::vector< G4int > fNonPhysBiasByPDGRangeLow
std::vector< G4bool > fAllNeutralParallelGeometriesISL
std::vector< G4String > fParallelGeometriesForCharged
std::map< G4int, std::vector< G4String > > fPDGrangeParallelGeometries
G4_DECLARE_PHYSCONSTR_FACTORY(G4GenericBiasingPhysics)
static G4bool ActivatePhysicsBiasing(G4ProcessManager *pmanager, G4String physicsProcessToBias, G4String wrappedName="")
G4bool fPhysBiasAllNeutralISL
static G4ParallelGeometriesLimiterProcess * AddLimiterProcess(G4ProcessManager *pmanager, const G4String &processName="biasLimiter")
std::vector< G4String > fParticlesWithParallelGeometries
const G4String & GetProcessName() const
std::vector< G4int > fPDGhighParallelGeometries
G4bool fNonPhysBiasAllCharged
void PhysicsBiasAddPDGRange(G4int PDGlow, G4int PDGhigh, G4bool includeAntiParticle=true)
std::vector< G4int > fPhysBiasByPDGRangeLow
void AddParallelGeometryAllCharged(const G4String ¶llelGeometryName, G4bool includeShortLived=false)
G4bool IsShortLived() const
G4bool fPhysBiasAllCharged
void BiasAddPDGRange(G4int PDGlow, G4int PDGhigh, G4bool includeAntiParticle=true)
G4ProcessManager * GetProcessManager() const
std::vector< G4bool > fAllChargedParallelGeometriesISL
void NonPhysicsBiasAllNeutral(G4bool includeShortLived=false)
std::vector< G4InuclElementaryParticle >::iterator particleIterator
std::vector< G4int > fPDGlowParallelGeometries
std::vector< G4String > fBiasedParticles
void BiasAllNeutral(G4bool includeShortLived=false)
std::vector< G4String > fNonPhysBiasedParticles
std::vector< G4bool > fBiasAllProcesses
G4bool fNonPhysBiasAllNeutral
G4double GetPDGCharge() const
G4bool fNonPhysBiasAllNeutralISL
std::map< G4String, std::vector< G4String > > fParallelGeometriesForParticle
void NonPhysicsBias(const G4String &particleName)
G4bool fPhysBiasAllNeutral
G4ProcessVector * GetProcessList() const
void AddParallelGeometryAllNeutral(const G4String ¶llelGeometryName, G4bool includeShortLived=false)
void Bias(const G4String &particleName)