185   const G4double* theAtomNumDensityVector = 
   188   for (
size_t i=0; i<nelm; ++i) {
   189     const G4Element* elm = (*theElementVector)[i];
   190     cross += theAtomNumDensityVector[i]*
   231   const G4double* theAtomNumDensityVector = 
   234   for (
size_t i=0; i<nelm; ++i) {
   235     const G4Element* elm = (*theElementVector)[i];
   236     cross += theAtomNumDensityVector[i]*
   277   const G4double* theAtomNumDensityVector = 
   280   for (
size_t i=0; i<nelm; ++i) {
   281     const G4Element* elm = (*theElementVector)[i];
   282     cross += theAtomNumDensityVector[i]*
   323   const G4double* theAtomNumDensityVector = 
   326   for (
size_t i=0; i<nelm; i++) {
   327     const G4Element* elm = (*theElementVector)[i];
   328     cross += theAtomNumDensityVector[i]*
   369   const G4double* theAtomNumDensityVector = 
   372   for (
size_t i=0; i<nelm; ++i) {
   373     const G4Element* elm = (*theElementVector)[i];
   374     cross += theAtomNumDensityVector[i]*
   411     if(
process[i] == proc) { 
return; }
   414     G4cout << 
"G4HadronicProcessStore::Register hadronic " << n_proc
   432     G4cout << 
"G4HadronicProcessStore::RegisterParticle "    444     std::multimap<PD,HP,std::less<PD> >::iterator it;
   445     for(it=
p_map.lower_bound(part); it!=
p_map.upper_bound(part); ++it) {
   446       if(it->first == part) {
   447     HP process2 = (it->second);
   448     if(proc == process2) { 
return; }
   453   p_map.insert(std::multimap<PD,HP>::value_type(part,proc));
   466   m_map.insert(std::multimap<HP,HI>::value_type(proc,mod));
   470     model.push_back(mod);
   498       if(
process[i] == hproc) { 
return; }
   502     G4cout << 
"Extra Process: " << n_extra 
   528     std::multimap<PD,G4VProcess*,std::less<PD> >::iterator it;
   529     for(it=
ep_map.lower_bound(part); it!=
ep_map.upper_bound(part); ++it) {
   530       if(it->first == part) {
   532     if(proc == process2) { 
return; }
   537   ep_map.insert(std::multimap<PD,G4VProcess*>::value_type(part,proc));
   548     G4cout << 
"Extra Process: " << i << 
"  "    565     if (getenv(
"G4PhysListDocDir") ) 
DumpHtml();
   577   char* dirName = getenv(
"G4PhysListDocDir");
   578   char* physListName = getenv(
"G4PhysListName");
   579   if (dirName && physListName) {
   583     std::ofstream outFile;
   584     outFile.open(pathName);
   587     outFile << 
"<html>\n";
   588     outFile << 
"<head>\n";
   589     outFile << 
"<title>Physics List Summary</title>\n";
   590     outFile << 
"</head>\n";
   591     outFile << 
"<body>\n";
   592     outFile << 
"<h2> Summary of Hadronic Processes, Models and Cross Sections for Physics List "   593             << 
G4String(physListName) << 
"</h2>\n";
   609     outFile << 
"</ul>\n";
   610     outFile << 
"</body>\n";
   611     outFile << 
"</html>\n";
   619                                        std::ofstream& outFile)
   625   outFile << 
"<br> <li><h2><font color=\" ff0000 \">"    628   typedef std::multimap<PD,HP,std::less<PD> > PDHPmap;
   629   typedef std::multimap<HP,HI,std::less<HP> > HPHImap;
   631   std::pair<PDHPmap::iterator, PDHPmap::iterator> itpart =
   632                         p_map.equal_range(theParticle);
   637   for (PDHPmap::iterator it = itpart.first; it != itpart.second; ++it) {
   638     theProcess = (*it).second;
   643     outFile << 
"<br>    <b><font color=\" 0000ff \">process : "   648    outFile << 
"  <li><b><font color=\" 00AA00 \">models : </font></b>\n";
   650     std::pair<HPHImap::iterator, HPHImap::iterator> itmod =
   651                         m_map.equal_range(theProcess);
   653     outFile << 
"    <ul>\n";
   654      G4String physListName(getenv(
"G4PhysListName"));
   656     for (HPHImap::iterator jt = itmod.first; jt != itmod.second; ++jt) {
   657       outFile << 
"    <li><b><a href=\"" << physListName << 
"_"    659               << (*jt).second->GetModelName() << 
"</a>"    660               << 
" from " << (*jt).second->GetMinEnergy()/
GeV   661               << 
" GeV to " << (*jt).second->GetMaxEnergy()/
GeV   662               << 
" GeV </b></li>\n";
   668     outFile << 
"    </ul>\n";
   669     outFile << 
"  </li>\n";
   672     outFile << 
"  <li><b><font color=\" 00AA00 \">cross sections : </font></b>\n";
   673     outFile << 
"    <ul>\n";
   676     outFile << 
"    </ul>\n";
   678     outFile << 
"  </li>\n";
   679     outFile << 
"</ul>\n";
   688     G4String dirName(getenv(
"G4PhysListDocDir"));
   689     G4String physListName(getenv(
"G4PhysListName"));
   691     std::ofstream outModel;
   692     outModel.open(pathName);
   693     outModel << 
"<html>\n";
   694     outModel << 
"<head>\n";
   695     outModel << 
"<title>Description of " << mod->
GetModelName() 
   697     outModel << 
"</head>\n";
   698     outModel << 
"<body>\n";
   702     outModel << 
"</body>\n";
   703     outModel << 
"</html>\n";
   714     std::transform(str.begin(), str.end(), str.begin(), [](
char ch) {
   715      return ch == 
' ' ? 
'_' : ch;
   719        for(std::string::iterator it = str.begin(); it != str.end(); ++it) {
   720         if(*it == 
' ') *it = 
'_';
   731  if (level == 0) 
return;
   734    << 
"\n====================================================================\n"   735    << std::setw(60) << 
"HADRONIC PROCESSES SUMMARY (verbose level " << level
   743     if (level == 1 && (pname == 
"proton" || 
   744                pname == 
"neutron" ||
   745                        pname == 
"deuteron" ||
   759                pname == 
"GenericIon" ||
   760                pname == 
"anti_neutron" ||
   761                pname == 
"anti_proton" ||
   762                        pname == 
"anti_deuteron" ||
   763                        pname == 
"anti_triton" ||
   764                        pname == 
"anti_He3" ||
   765                        pname == 
"anti_alpha")) yes = 
true;
   766     if (level > 1) yes = 
true;             
   769       std::multimap<PD,HP,std::less<PD> >::iterator it;
   771       for (it=
p_map.lower_bound(part); it!=
p_map.upper_bound(part); ++it) {
   772     if (it->first == part) {
   773       HP proc = (it->second);
   782       std::multimap<PD,G4VProcess*,std::less<PD> >::iterator itp;
   783       for(itp=
ep_map.lower_bound(part); itp!=
ep_map.upper_bound(part); ++itp) {
   784     if(itp->first == part) {
   787             G4cout << 
"\n---------------------------------------------------\n"   788            << std::setw(50) << 
"Hadronic Processes for "    798   G4cout << 
"\n================================================================"   809     G4cout << 
"\n---------------------------------------------------\n"     810            << std::setw(50) << 
"Hadronic Processes for "    818   G4String stringEnergyPerNucleon = 
"";
   822     stringEnergyPerNucleon = 
"/n";
   826   std::multimap<HP,HI,std::less<HP> >::iterator ih;
   827   for(ih=
m_map.lower_bound(proc); ih!=
m_map.upper_bound(proc); ++ih) {
   828     if(ih->first == proc) {
   832     if(
model[i] == hi) { 
break; }
   856     if(
model[i]) { 
model[i]->SetVerboseLevel(val); }
   896     std::multimap<PD,HP,std::less<PD> >::iterator it;
   900      subType == (it->second)->GetProcessSubType()) {
   914   G4cout << 
" Setting energy/momentum report level to " << level 
   915          << 
" for " << 
process.size() << 
" hadronic processes " << 
G4endl;
   917     process[i]->SetEpReportLevel(level);
   925   G4cout << 
" Setting absolute energy/momentum test level to " << abslevel 
   940   G4cout << 
" Setting relative energy/momentum test level to " << rellevel 
 
void DeRegisterExtraProcess(G4VProcess *)
 
std::vector< G4String > modelName
 
void SetVerbose(G4int val)
 
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
 
void SetProcessAbsLevel(G4double absoluteLevel)
 
void DumpHtml(const G4ParticleDefinition &, std::ofstream &) const
 
G4double GetCaptureCrossSectionPerIsotope(const G4ParticleDefinition *aParticle, G4double kineticEnergy, G4int Z, G4int A)
 
void RegisterInteraction(G4HadronicProcess *, G4HadronicInteraction *)
 
G4int GetBaryonNumber() const
 
std::vector< G4Element * > G4ElementVector
 
std::vector< G4HadronicProcess * > process
 
void PrintHtml(const G4ParticleDefinition *, std::ofstream &)
 
static G4HadronicProcessStore * Instance()
 
G4double GetElasticCrossSectionPerAtom(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Element *anElement, const G4Material *mat=0)
 
std::vector< PD > particle
 
~G4HadronicProcessStore()
 
std::vector< G4int > wasPrinted
 
static G4GenericIon * Definition()
 
std::multimap< PD, G4VProcess * > ep_map
 
G4DynamicParticle localDP
 
std::vector< G4HadronicInteraction * > model
 
void PrintModelHtml(const G4HadronicInteraction *model) const
 
G4double GetFissionCrossSectionPerIsotope(const G4ParticleDefinition *aParticle, G4double kineticEnergy, G4int Z, G4int A)
 
const G4String & GetParticleType() const
 
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1 
 
std::pair< G4double, G4double > GetEnergyMomentumCheckLevels() const
 
G4double GetFissionCrossSectionPerAtom(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Element *anElement, const G4Material *mat=0)
 
G4int GetProcessSubType() const
 
static G4KaonMinus * KaonMinus()
 
const G4String & GetProcessName() const
 
G4double GetMinEnergy() const
 
std::multimap< HP, HI > m_map
 
void RegisterParticleForExtraProcess(G4VProcess *, const G4ParticleDefinition *)
 
const G4String & GetParticleName() const
 
G4GLOB_DLL std::ostream G4cout
 
G4String HtmlFileName(const G4String &) const
 
std::vector< G4VProcess * > extraProcess
 
G4HadronicProcess * FindProcess(const G4ParticleDefinition *, G4HadronicProcessType subType)
 
void Register(G4HadronicProcess *)
 
virtual void ModelDescription(std::ostream &outFile) const
 
G4double GetChargeExchangeCrossSectionPerIsotope(const G4ParticleDefinition *aParticle, G4double kineticEnergy, G4int Z, G4int A)
 
const G4double * GetVecNbOfAtomsPerVolume() const
 
G4double GetInelasticCrossSectionPerAtom(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Element *anElement, const G4Material *mat=0)
 
G4CrossSectionDataStore * GetCrossSectionDataStore()
 
G4double GetInelasticCrossSectionPerIsotope(const G4ParticleDefinition *aParticle, G4double kineticEnergy, G4int Z, G4int A)
 
static G4Proton * Proton()
 
static G4PionPlus * PionPlus()
 
G4double GetChargeExchangeCrossSectionPerAtom(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Element *anElement, const G4Material *mat=0)
 
std::multimap< PD, HP > p_map
 
static G4Neutron * Neutron()
 
void RegisterParticle(G4HadronicProcess *, const G4ParticleDefinition *)
 
void Print(G4int idxProcess, G4int idxParticle)
 
void DeRegister(G4HadronicProcess *)
 
void SetKineticEnergy(G4double aEnergy)
 
void RegisterExtraProcess(G4VProcess *)
 
G4HadronicEPTestMessenger * theEPTestMessenger
 
void SetEnergyMomentumCheckLevels(G4double relativeLevel, G4double absoluteLevel)
 
static G4Positron * Positron()
 
void DumpPhysicsTable(const G4ParticleDefinition &)
 
G4double GetElementCrossSection(const G4DynamicParticle *part, const G4Element *elm, const G4Material *mat=0)
 
G4double GetChargeExchangeCrossSectionPerVolume(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Material *material)
 
G4double GetFissionCrossSectionPerVolume(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Material *material)
 
static G4ParticleTable * GetParticleTable()
 
G4double GetElasticCrossSectionPerIsotope(const G4ParticleDefinition *aParticle, G4double kineticEnergy, G4int Z, G4int A)
 
G4double GetCrossSectionPerVolume(const G4ParticleDefinition *particle, G4double kineticEnergy, const G4VProcess *process, const G4Material *material)
 
static G4PionMinus * PionMinus()
 
void SetProcessRelLevel(G4double relativeLevel)
 
size_t GetNumberOfElements() const
 
static G4Electron * Electron()
 
void SetEpReportLevel(G4int level)
 
G4double GetCaptureCrossSectionPerVolume(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Material *material)
 
const G4ElementVector * GetElementVector() const
 
static G4Lambda * Lambda()
 
G4double GetElasticCrossSectionPerVolume(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Material *material)
 
const G4String & GetModelName() const
 
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
 
static G4ThreadLocal G4HadronicProcessStore * instance
 
static G4KaonPlus * KaonPlus()
 
G4double GetInelasticCrossSectionPerVolume(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Material *material)
 
G4double GetMaxEnergy() const
 
G4double GetCrossSectionPerAtom(const G4ParticleDefinition *particle, G4double kineticEnergy, const G4VProcess *process, const G4Element *element, const G4Material *material=0)
 
virtual void ProcessDescription(std::ostream &outFile) const
 
G4double GetCaptureCrossSectionPerAtom(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4Element *anElement, const G4Material *mat=0)
 
void PrintInfo(const G4ParticleDefinition *)