104 for (
size_t j=0; j<msc; ++j) {
108 for (
size_t k=0; k<emp; ++k) {
112 for (
size_t k=0; k<emp; ++k) {
118 for (
size_t a=0; a<mod; ++a) {
121 for (
size_t b=0; b<fmod; ++b) {
130 for (
size_t b=0; b<fmod; ++b) {
204 G4cout <<
"G4LossTableManager::Register G4VEnergyLossProcess : "
258 for (
G4int i=0; i<
n; ++i) {
262 G4cout <<
"G4LossTableManager::Register G4VMultipleScattering : "
274 for (
size_t i=0; i<msc; ++i) {
288 for (
G4int i=0; i<
n; ++i) {
292 G4cout <<
"G4LossTableManager::Register G4VEmProcess : "
304 for (
size_t i=0; i<emp; ++i) {
318 for (
G4int i=0; i<
n; ++i) {
322 G4cout <<
"G4LossTableManager::Register G4VProcess : "
334 for (
size_t i=0; i<emp; ++i) {
348 G4cout <<
"G4LossTableManager::Register G4VEmModel : "
359 for (
size_t i=0; i<
n; ++i) {
373 G4cout <<
"G4LossTableManager::Register G4VEmFluctuationModel : "
383 for (
size_t i=0; i<
n; ++i) {
394 if(!p || !part) {
return; }
399 G4cout <<
"G4LossTableManager::RegisterExtraParticle "
423 std::map<PD,G4VEnergyLossProcess*,std::less<PD> >::const_iterator
pos;
444 G4cout <<
"G4LossTableManager::PreparePhysicsTable for "
455 G4cout <<
"====== G4LossTableManager::PreparePhysicsTable start ====="
484 G4cout <<
"G4LossTableManager::PreparePhysicsTable for "
493 G4cout <<
"====== G4LossTableManager::PreparePhysicsTable start ====="
513 G4cout <<
"G4LossTableManager::PreparePhysicsTable for "
523 G4cout <<
"====== G4LossTableManager::PreparePhysicsTable start ====="
552 G4cout <<
"### G4LossTableManager::LocalPhysicsTable() for "
566 G4cout <<
"===== G4LossTableManager::LocalPhysicsTable() for run "
614 G4cout <<
"### G4LossTableManager::LocalPhysicsTable end"
619 G4cout <<
"%%%%% All dEdx and Range tables for worker are ready for run "
632 G4cout <<
"### G4LossTableManager::BuildPhysicsTable() for "
644 G4cout <<
"===== G4LossTableManager::BuildPhysicsTable() for run "
656 G4cout <<
"### G4LossTableManager start initialisation for first particle "
685 G4cout <<
" base particle "
729 G4cout <<
"### G4LossTableManager::BuildPhysicsTable end: "
735 G4cout <<
"%%%%% All dEdx and Range tables are built for master run= "
771 <<
" tables are assigned"
788 G4cout <<
"G4LossTableManager::BuildTables() for "
792 std::vector<G4PhysicsTable*> t_list;
793 std::vector<G4VEnergyLossProcess*> loss_list;
794 std::vector<G4bool> build_flags;
805 for (i=0; i<
n_loss; ++i) {
813 for(
G4int j=0; j<nvec; ++j) {
815 if(ptr == (*pvec)[j]) {
840 loss_list.push_back(p);
841 build_flags.push_back(val);
846 G4int n_dedx = t_list.size();
847 if (0 == n_dedx || !em) {
848 G4cout <<
"G4LossTableManager WARNING: no DEDX processes for "
855 G4cout <<
"G4LossTableManager::BuildTables() start to build range tables"
856 <<
" and the sum of " << n_dedx <<
" processes"
859 <<
" nSubRegions= " << nSubRegions;
908 std::vector<G4PhysicsTable*> listSub;
909 std::vector<G4PhysicsTable*> listCSDA;
911 for (i=0; i<n_dedx; ++i) {
920 listCSDA.push_back(dedx);
939 G4cout <<
"G4LossTableManager::BuildTables: Tables are built for "
954 ed <<
"Energy loss process not found for " << aParticle->
GetParticleName()
956 G4Exception(
"G4LossTableManager::ParticleHaveNoLoss",
"em0001",
969const std::vector<G4VEnergyLossProcess*>&
984const std::vector<G4VMultipleScattering*>&
1061 G4String ss =
"G4LossTableManager::" + tit;
1084 char* dirName = std::getenv(
"G4PhysListDocDir");
1085 char* physList = std::getenv(
"G4PhysListName");
1086 if (dirName && physList) {
1090 std::ofstream outFile;
1091 outFile.open(pathName);
1093 outFile << physListName <<
G4endl;
1094 outFile << std::string(physListName.length(),
'=') <<
G4endl;
1096 std::vector<G4ParticleDefinition*> particles {
1106 std::vector<G4VEnergyLossProcess*> enloss_vector =
1108 std::vector<G4VMultipleScattering*> mscat_vector =
1111 for (
auto theParticle : particles) {
1112 outFile <<
G4endl <<
"**" << theParticle->GetParticleName()
1119 for (
auto emproc : emproc_vector) {
1120 for (
G4int i = 0; i < plen; ++i) {
1122 if (proc == emproc) {
1130 for (
auto mscproc : mscat_vector) {
1131 for (
G4int i = 0; i < plen; ++i) {
1133 if (proc == mscproc) {
1141 for (
auto enlossproc : enloss_vector) {
1142 for (
G4int i = 0; i < plen; ++i) {
1144 if (proc == enlossproc) {
static const G4double pos
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4GLOB_DLL std::ostream G4cout
static G4Electron * Electron()
void SetVerbose(G4int value)
void PrepareModels(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
void SetVerbose(G4int verb)
static G4EmParameters * Instance()
G4bool BuildCSDARange() const
G4EmSaturation * GetEmSaturation()
G4int WorkerVerbose() const
void SetIsPrintedFlag(G4bool val)
void BuildRangeTable(const G4PhysicsTable *dedxTable, G4PhysicsTable *rangeTable)
void BuildDEDXTable(G4PhysicsTable *dedxTable, const std::vector< G4PhysicsTable * > &)
void BuildInverseRangeTable(const G4PhysicsTable *rangeTable, G4PhysicsTable *invRangeTable)
void SetInitialisationFlag(G4bool flag)
std::vector< PD > base_part_vector
std::vector< G4PhysicsTable * > range_vector
void SetAtomDeexcitation(G4VAtomDeexcitation *)
std::vector< G4bool > isActive
std::vector< G4PhysicsTable * > dedx_vector
static G4LossTableManager * Instance()
const std::vector< G4VEmProcess * > & GetEmProcessVector()
G4bool startInitialisation
void CopyTables(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *)
G4ElectronIonPair * emElectronIonPair
std::vector< G4VEmProcess * > emp_vector
void ParticleHaveNoLoss(const G4ParticleDefinition *aParticle)
G4VSubCutProducer * subcutProducer
G4VEnergyLossProcess * GetEnergyLossProcess(const G4ParticleDefinition *)
std::map< PD, G4VEnergyLossProcess *, std::less< PD > > loss_map
void LocalPhysicsTables(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
G4VEnergyLossProcess * currentLoss
G4EmParameters * theParameters
std::vector< G4VMultipleScattering * > msc_vector
G4EmConfigurator * emConfigurator
std::vector< G4VEmModel * > mod_vector
static G4ThreadLocal G4LossTableManager * instance
void PreparePhysicsTable(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p, G4bool theMaster)
void BuildPhysicsTable(const G4ParticleDefinition *aParticle)
std::vector< G4VEnergyLossProcess * > loss_vector
std::vector< G4VProcess * > p_vector
const std::vector< G4VMultipleScattering * > & GetMultipleScatteringVector()
void SetVerbose(G4int val)
G4LossTableBuilder * tableBuilder
void DeRegister(G4VEnergyLossProcess *p)
G4NIELCalculator * NIELCalculator()
void SetNIELCalculator(G4NIELCalculator *)
G4EmCorrections * emCorrections
G4EmConfigurator * EmConfigurator()
void Register(G4VEnergyLossProcess *p)
G4ElectronIonPair * ElectronIonPair()
std::vector< G4VEmFluctuationModel * > fmod_vector
void PrintEWarning(G4String, G4double)
G4EmSaturation * EmSaturation()
const std::vector< G4VEnergyLossProcess * > & GetEnergyLossProcessVector()
std::vector< G4bool > tables_are_built
std::vector< PD > part_vector
G4NIELCalculator * nielCalculator
G4VEnergyLossProcess * BuildTables(const G4ParticleDefinition *aParticle)
std::vector< G4PhysicsTable * > inv_range_vector
void SetSubCutProducer(G4VSubCutProducer *)
G4bool all_tables_are_built
void RegisterExtraParticle(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
G4VAtomDeexcitation * atomDeexcitation
static G4MuonMinus * MuonMinusDefinition()
static G4MuonPlus * MuonPlusDefinition()
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
static G4PhysicsTable * PreparePhysicsTable(G4PhysicsTable *physTable)
void push_back(G4PhysicsVector *)
static G4Positron * Positron()
G4int GetProcessListLength() const
G4ProcessVector * GetProcessList() const
static G4Proton * ProtonDefinition()
void SetVerboseLevel(G4int)
void InitialiseAtomicDeexcitation()
const G4String & GetName() const
const G4String & GetName() const
const G4ParticleDefinition * BaseParticle() const
G4PhysicsTable * RangeTableForLoss() const
G4PhysicsTable * InverseRangeTable() const
G4PhysicsTable * CSDARangeTable() const
void SetRangeTableForLoss(G4PhysicsTable *p)
G4int NumberOfSubCutoffRegions() const
G4PhysicsTable * BuildDEDXTable(G4EmTableType tType=fRestricted)
const G4ParticleDefinition * Particle() const
void SetInverseRangeTable(G4PhysicsTable *p)
G4bool IsIonisationProcess() const
void SetDEDXTable(G4PhysicsTable *p, G4EmTableType tType)
void SetSecondaryRangeTable(G4PhysicsTable *p)
G4PhysicsTable * BuildLambdaTable(G4EmTableType tType=fRestricted)
void SetIonisation(G4bool val)
void SetLambdaTable(G4PhysicsTable *p)
G4PhysicsTable * IonisationTable() const
G4PhysicsTable * LambdaTable() const
void SetCSDARangeTable(G4PhysicsTable *pRange)
G4PhysicsTable * DEDXunRestrictedTable() const
G4PhysicsTable * DEDXTable() const
const G4ParticleDefinition * SecondaryParticle() const
virtual void ProcessDescription(std::ostream &outfile) const
const G4String & GetProcessName() const
const G4String & GetName() const