140 for (
size_t j=0; j<msc; ++j) {
144 for (
size_t k=0; k<emp; ++k) {
150 for (
size_t a=0;
a<mod; ++
a) {
153 for (
size_t b=0; b<fmod; ++b) {
162 for (
size_t b=0; b<fmod; ++b) {
235 G4cout <<
"G4LossTableManager::Register G4VEnergyLossProcess : "
285 for (
G4int i=0; i<
n; ++i) {
289 G4cout <<
"G4LossTableManager::Register G4VMultipleScattering : "
301 for (
size_t i=0; i<msc; ++i) {
312 for (
G4int i=0; i<
n; ++i) {
316 G4cout <<
"G4LossTableManager::Register G4VEmProcess : "
328 for (
size_t i=0; i<emp; ++i) {
339 G4cout <<
"G4LossTableManager::Register G4VEmModel : "
350 for (
size_t i=0; i<
n; ++i) {
364 G4cout <<
"G4LossTableManager::Register G4VEmFluctuationModel : "
374 for (
size_t i=0; i<
n; ++i) {
385 if(!p || !part) {
return; }
390 G4cout <<
"G4LossTableManager::RegisterExtraParticle "
414 std::map<PD,G4VEnergyLossProcess*,std::less<PD> >::const_iterator
pos;
435 G4cout <<
"G4LossTableManager::PreparePhysicsTable for "
446 G4cout <<
"====== G4LossTableManager::PreparePhysicsTable start ====="
475 G4cout <<
"G4LossTableManager::PreparePhysicsTable for "
484 G4cout <<
"====== G4LossTableManager::PreparePhysicsTable start ====="
504 G4cout <<
"G4LossTableManager::PreparePhysicsTable for "
514 G4cout <<
"====== G4LossTableManager::PreparePhysicsTable start ====="
543 G4cout <<
"### G4LossTableManager::LocalPhysicsTable() for "
557 G4cout <<
"===== G4LossTableManager::LocalPhysicsTable() for run "
605 G4cout <<
"### G4LossTableManager::LocalPhysicsTable end"
610 G4cout <<
"%%%%% All dEdx and Range tables for worker are ready for run "
623 G4cout <<
"### G4LossTableManager::BuildPhysicsTable() for "
635 G4cout <<
"===== G4LossTableManager::BuildPhysicsTable() for run "
647 G4cout <<
"### G4LossTableManager start initilisation for first particle "
673 G4cout <<
" base particle "
712 G4cout <<
"### G4LossTableManager::BuildPhysicsTable end: "
718 G4cout <<
"%%%%% All dEdx and Range tables are built for master run= "
755 <<
" tables are assigned"
772 G4cout <<
"G4LossTableManager::BuildTables() for "
776 std::vector<G4PhysicsTable*> t_list;
777 std::vector<G4VEnergyLossProcess*> loss_list;
778 std::vector<G4bool> build_flags;
789 for (i=0; i<
n_loss; ++i) {
797 for(
G4int j=0; j<nvec; ++j) {
799 if(ptr == (*pvec)[j]) {
824 loss_list.push_back(p);
825 build_flags.push_back(val);
830 G4int n_dedx = t_list.size();
831 if (0 == n_dedx || !em) {
832 G4cout <<
"G4LossTableManager WARNING: no DEDX processes for "
839 G4cout <<
"G4LossTableManager::BuildTables() start to build range tables"
840 <<
" and the sum of " << n_dedx <<
" processes"
843 <<
" nSubRegions= " << nSubRegions;
892 std::vector<G4PhysicsTable*> listSub;
893 std::vector<G4PhysicsTable*> listCSDA;
895 for (i=0; i<n_dedx; ++i) {
901 if (0 < nSubRegions) {
904 listSub.push_back(dedx);
913 listCSDA.push_back(dedx);
917 if (0 < nSubRegions) {
919 if (1 < listSub.size()) {
942 G4cout <<
"G4LossTableManager::BuildTables: Tables are built for "
957 ed <<
"Energy loss process not found for " << aParticle->
GetParticleName()
959 G4Exception(
"G4LossTableManager::ParticleHaveNoLoss",
"em0001",
972 const std::vector<G4VEnergyLossProcess*>&
987 const std::vector<G4VMultipleScattering*>&
1063 char* dirName = getenv(
"G4PhysListDocDir");
1064 char* physListName = getenv(
"G4PhysListName");
1065 if (dirName && physListName) {
1069 std::ofstream outFile;
1070 outFile.open(pathName);
1072 outFile <<
"<html>\n";
1073 outFile <<
"<head>\n";
1074 outFile <<
"<title>Physics List Summary</title>\n";
1075 outFile <<
"</head>\n";
1076 outFile <<
"<body>\n";
1077 outFile <<
"<h2> Summary of Electromagnetic Processes, Models and Cross "
1078 <<
"Sections for Physics List "
1079 <<
G4String(physListName) <<
"</h2>\n";
1080 outFile <<
"<ul>\n";
1082 std::vector<G4ParticleDefinition*> particles {
1092 std::vector<G4VEnergyLossProcess*> enloss_vector =
1094 std::vector<G4VMultipleScattering*> mscat_vector =
1097 for (
auto theParticle : particles) {
1098 outFile <<
"<li><h3>" << theParticle->GetParticleName() <<
"</h3><ul>\n";
1104 for (
auto emproc : emproc_vector) {
1105 for (
G4int i = 0; i < plen; ++i) {
1107 if (proc == emproc) {
1108 outFile <<
"<li>\n";
1110 outFile <<
"</li>\n";
1116 for (
auto mscproc : mscat_vector) {
1117 for (
G4int i = 0; i < plen; ++i) {
1119 if (proc == mscproc) {
1120 outFile <<
"<li>\n";
1122 outFile <<
"</li>\n";
1128 for (
auto enlossproc : enloss_vector) {
1129 for (
G4int i = 0; i < plen; ++i) {
1131 if (proc == enlossproc) {
1132 outFile <<
"<li>\n";
1134 outFile <<
"</li>\n";
1139 outFile <<
"</ul>\n";
1140 outFile <<
"</li>\n";
1142 outFile <<
"</ul>\n";
1143 outFile <<
"</body>\n";
1144 outFile <<
"</html>\n";
void SetDEDXTable(G4PhysicsTable *p, G4EmTableType tType)
std::vector< G4VMultipleScattering * > msc_vector
G4LossTableBuilder * tableBuilder
G4VSubCutProducer * subcutProducer
G4bool startInitialisation
G4int NumberOfSubCutoffRegions() const
G4PhysicsTable * DEDXTable() const
void AddCollaborativeProcess(G4VEnergyLossProcess *)
void BuildRangeTable(const G4PhysicsTable *dedxTable, G4PhysicsTable *rangeTable, G4bool isIonisation=false)
G4PhysicsTable * BuildDEDXTable(G4EmTableType tType=fRestricted)
std::ostringstream G4ExceptionDescription
std::vector< ExP01TrackerHit * > a
std::vector< G4VEmModel * > mod_vector
static const G4double pos
static G4PhysicsTable * PreparePhysicsTable(G4PhysicsTable *physTable)
const G4String & GetName() const
G4PhysicsTable * IonisationTableForSubsec() const
G4int GetProcessListLength() const
G4EmSaturation * GetEmSaturation()
void SetInitialisationFlag(G4bool flag)
void SetSplineFlag(G4bool flag)
G4VEnergyLossProcess * GetEnergyLossProcess(const G4ParticleDefinition *)
void InitialiseAtomicDeexcitation()
void BuildPhysicsTable(const G4ParticleDefinition *aParticle)
G4bool BuildCSDARange() const
G4PhysicsTable * RangeTableForLoss() const
void PreparePhysicsTable(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p, G4bool theMaster)
const G4String & GetParticleName() const
void BuildInverseRangeTable(const G4PhysicsTable *rangeTable, G4PhysicsTable *invRangeTable, G4bool isIonisation=false)
const G4ParticleDefinition * BaseParticle() const
std::vector< G4PhysicsTable * > inv_range_vector
void SetSubLambdaTable(G4PhysicsTable *p)
G4PhysicsTable * SubLambdaTable() const
static G4ThreadLocal G4LossTableManager * instance
G4EmCorrections * emCorrections
void SetVerbose(G4int val)
G4ProcessVector * GetProcessList() const
std::vector< G4VEnergyLossProcess * > loss_vector
void BuildDEDXTable(G4PhysicsTable *dedxTable, const std::vector< G4PhysicsTable * > &)
const G4String & GetName() const
const std::vector< G4VEnergyLossProcess * > & GetEnergyLossProcessVector()
std::vector< G4VEmFluctuationModel * > fmod_vector
static G4MuonMinus * MuonMinusDefinition()
G4ElectronIonPair * emElectronIonPair
void ParticleHaveNoLoss(const G4ParticleDefinition *aParticle)
std::vector< G4PhysicsTable * > dedx_vector
G4ElectronIonPair * ElectronIonPair()
void CopyTables(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *)
std::vector< G4PhysicsTable * > range_vector
void SetRangeTableForLoss(G4PhysicsTable *p)
void Register(G4VEnergyLossProcess *p)
G4VAtomDeexcitation * atomDeexcitation
const std::vector< G4VEmProcess * > & GetEmProcessVector()
void SetSubCutProducer(G4VSubCutProducer *)
static G4Proton * ProtonDefinition()
void SetIonisation(G4bool val)
G4VEnergyLossProcess * currentLoss
G4PhysicsTable * InverseRangeTable() const
const G4ParticleDefinition const G4Material *G4double range
void SetCSDARangeTable(G4PhysicsTable *pRange)
G4EmConfigurator * emConfigurator
std::vector< G4bool > tables_are_built
G4int WorkerVerbose() const
void SetLambdaTable(G4PhysicsTable *p)
G4PhysicsTable * BuildLambdaTable(G4EmTableType tType=fRestricted)
const G4String & GetProcessName() const
void DeRegister(G4VEnergyLossProcess *p)
static G4Positron * Positron()
void LocalPhysicsTables(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
G4PhysicsTable * DEDXTableForSubsec() const
void PrintEWarning(G4String, G4double)
static G4Electron * Electron()
const G4ParticleDefinition * SecondaryParticle() const
G4VEnergyLossProcess * BuildTables(const G4ParticleDefinition *aParticle)
G4GammaShark * gammaShark
const std::vector< G4VMultipleScattering * > & GetMultipleScatteringVector()
void SetSecondaryRangeTable(G4PhysicsTable *p)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
void SetVerboseLevel(G4int)
G4bool IsIonisationProcess() const
void push_back(G4PhysicsVector *)
G4EmSaturation * EmSaturation()
void SetVerbose(G4int verb)
const G4String & GetName() const
G4ProcessManager * GetProcessManager() const
G4PhysicsTable * LambdaTable() const
virtual void ProcessDescription(std::ostream &outfile) const
void PrepareModels(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
G4EmParameters * theParameters
G4GLOB_DLL std::ostream G4cout
static G4LossTableManager * Instance()
G4bool all_tables_are_built
void SetAtomDeexcitation(G4VAtomDeexcitation *)
G4PhysicsTable * IonisationTable() const
G4PhysicsTable * CSDARangeTable() const
void SetInverseRangeTable(G4PhysicsTable *p)
void SetVerbose(G4int value)
static G4MuonPlus * MuonPlusDefinition()
G4PhysicsTable * DEDXunRestrictedTable() const
std::vector< G4VEmProcess * > emp_vector
std::vector< G4bool > isActive
G4EmConfigurator * EmConfigurator()
std::map< PD, G4VEnergyLossProcess *, std::less< PD > > loss_map
std::vector< PD > base_part_vector
void RegisterExtraParticle(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
static G4EmParameters * Instance()
std::vector< PD > part_vector
const G4ParticleDefinition * Particle() const