31 fStringOfMaterials(applyToMaterial)
39 std::map<G4String, std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > >::iterator posOuter;
40 std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator posInner;
45 for(posInner = posOuter->second.begin(); posInner != posOuter->second.end(); ++posInner)
48 if(table != 0)
delete table;
66 G4String materialName, particleNameData;
73 for(
unsigned int i=0;i<applyToMatVect.size();++i)
88 if( (applyToMatVect[i] == materialName || applyToMatVect[i] ==
"all")
89 && particleNameData==particleName )
98 if(fileDiffCS !=
"")
ReadDiffCSFile(materialName, particleNameData, fileDiffCS, scaleFactor);
106 std::ostringstream oss;
107 oss << applyToMatVect[i] <<
" material was not found. It means the material specified in the UserPhysicsList is not a model material for ";
109 G4Exception(
"G4VDNAPTBModel::LoadCrossSectionData",
"em0003",
122 for(
G4int i=0, ie=table->size(); i<ie; i++)
138 G4String text(
"ReadDiffCSFile must be implemented in the model class using a differential cross section data file");
140 G4Exception(
"G4VDNAPTBModel::ReadDiffCSFile",
"em0003",
152 std::vector<G4String> materialVect;
155 if(materials.find(
"/")==std::string::npos)
158 materialVect.push_back(materials);
163 G4String materialsNonIdentified = materials;
165 while(materialsNonIdentified.find_first_of(
"/") != std::string::npos)
168 G4String mat = materialsNonIdentified.substr(0, materialsNonIdentified.find_first_of(
"/"));
169 materialVect.push_back(mat);
172 materialsNonIdentified = materialsNonIdentified.substr(materialsNonIdentified.find_first_of(
"/")+1,
173 materialsNonIdentified.size()-materialsNonIdentified.find_first_of(
"/"));
178 materialVect.push_back(materialsNonIdentified);
189 fTableData[particleName][materialName]->LoadData(file);
196 std::map<G4int, G4DNACrossSectionDataSet*>::iterator
pos;
214 value += valuesBuffer[i];
225 if (valuesBuffer[i] > value)
227 delete[] valuesBuffer;
230 value -= valuesBuffer[i];
233 if (valuesBuffer)
delete[] valuesBuffer;
239 G4Exception(
"G4VDNAPTBModel::RandomSelectShell",
"em0002",
253 for(
int i=0;i<matTableSize;i++)
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
virtual const G4VEMDataSet * GetComponent(G4int componentId) const
const G4String & GetName() const
std::map< G4String, std::map< G4String, G4double > > fLowEnergyLimits
G4bool IsParticleExistingInModel(const G4String &particleName)
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
std::map< G4int, G4double > fLowEnergyLimitsRuntime
void LoadCrossSectionData(const G4String &particleName)
G4bool IsMaterialDefine(const G4String &materialName)
G4bool IsMaterialExistingInModelForParticle(const G4String &particleName, const G4String &materialName)
void AddCrossSectionData(const G4String &materialName, const G4String &particleName, const G4String &fileCS, const G4String &fileDiffCS, G4double scaleFactor)
const XML_Char int const XML_Char * value
std::vector< G4String > BuildApplyToMatVect(const G4String &materials)
static constexpr double eV
void EnableForMaterialAndParticle(const G4String &materialName, const G4String &particleName)
virtual size_t NumberOfComponents(void) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4int RandomSelectShell(G4double k, const G4Material *material)
const G4String fStringOfMaterials
std::map< G4String, std::map< G4String, G4double > > fHighEnergyLimits
void ReadAndSaveCSFile(const G4String &materialName, const G4String &particleName, const G4String &file, G4double scaleFactor)
std::map< G4int, G4double > fHighEnergyLimitsRuntime
virtual void ReadDiffCSFile(const G4String &materialName, const G4String &particleName, const G4String &path, const G4double scaleFactor)
std::map< G4int, G4DNACrossSectionDataSet * > fTableDataRuntime
const G4String & GetName() const
std::vector< MaterialData > fModelMaterialData
virtual ~G4VDNAPTBModel()
G4VDNAPTBModel(const G4String &nam, const G4String &applyToMaterial)
static const G4double pos