56"G4_ADIPOSE_TISSUE_ICRP"
60"G4_BONE_CORTICAL_ICRP"
66"G4_LITHIUM_TETRABORATE"
69"G4_MUSCLE_STRIATED_ICRU"
73"G4_PLASTIC_SC_VINYLTOLUENE"
96 for(
G4int i=0; i<81; ++i) {
97 fMatData[i] =
new std::vector<G4PhysicsLogVector*>;
106 for(
G4int i=0; i<81; ++i) {
124 if(
Z <= 80 &&
Z1 <= 80) {
129 if(idx <
fNmat &&
Z <= 80) {
143 char* path = std::getenv(
"G4LEDATA");
144 if (
nullptr != path) {
145 std::ostringstream ost;
146 ost << path <<
"/ion_stopping_data/";
149 G4Exception(
"G4IonICRU73Data::Initialise(..)",
"em013",
151 "Environment variable G4LEDATA is not defined");
163 for(
size_t i=0; i<numOfCouples; ++i) {
175 if(!isOK && useICRU90) {
176 for(
G4int j=0; j<3; ++j) {
187 for(
G4int j=0; j<31; ++j) {
211 std::ostringstream ost;
213 if(isICRU90 &&
Z <= 18) { ost <<
"90"; }
214 else { ost <<
"73"; }
215 ost <<
"/z" <<
Z <<
"_" <<
name <<
".dat";
233 for(
G4int j=0; j<nelm; ++j) {
235 if(
nullptr == v2) {
break; }
246 for(
G4int j=0; j<nelm; ++j) {
249 dedx += (*v1)[i]*dens[j];
266 if(
Z <= 80 &&
Z1 <= 80) {
269 G4bool isICRU90 = (useICRU90 &&
Z <= 18 &&
270 (
Z1 == 1 ||
Z1 == 6 ||
Z1 == 7 ||
Z1 == 8));
271 std::ostringstream ost;
273 if(isICRU90) { ost <<
"90"; }
274 else { ost <<
"73"; }
275 ost <<
"/z" <<
Z <<
"_" <<
Z1 <<
".dat";
289 std::ifstream filein(ost.str().c_str());
290 if (!filein.is_open()) {
293 ed <<
"Data file <" << ost.str().c_str()
294 <<
"> is not opened";
295 G4Exception(
"G4IonICRU73Data::RetrieveVector(..)",
"em013",
300 G4cout <<
"File " << ost.str()
301 <<
" is opened by G4IonICRU73Data" <<
G4endl;
306 ed <<
"Data file <" << ost.str().c_str()
307 <<
"> is not retrieved!";
308 G4Exception(
"G4IonICRU73Data::RetrieveVector(..)",
"had015",
std::vector< const G4Element * > G4ElementVector
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
const G4String namesICRU73[31]
const G4String namesICRU90[3]
G4GLOB_DLL std::ostream G4cout
static G4EmParameters * Instance()
G4bool UseICRU90Data() const
G4PhysicsFreeVector * fVector
std::vector< G4PhysicsLogVector * > * fMatData[81]
G4PhysicsLogVector * RetrieveVector(std::ostringstream &in, G4bool warn)
std::vector< G4int > fMatIndex
G4PhysicsLogVector * fElmData[81][81]
G4double GetDEDX(const G4Material *, const G4int Z, const G4double e, const G4double loge) const
void ReadElementData(const G4Material *mat, G4bool type)
void ReadMaterialData(const G4String &name, G4bool type)
G4PhysicsLogVector * FindOrBuildElementData(const G4int Z, const G4int Z1, G4bool useICRU90)
const G4Material * GetMaterial() const
const G4ElementVector * GetElementVector() const
static size_t GetNumberOfMaterials()
const G4double * GetFractionVector() const
size_t GetNumberOfElements() const
const G4String & GetName() const
void PutValue(const std::size_t index, const G4double value)
void ScaleVector(const G4double factorE, const G4double factorV)
G4double Energy(const std::size_t index) const
G4double LogVectorValue(const G4double energy, const G4double theLogEnergy) const
G4bool Retrieve(std::ifstream &fIn, G4bool ascii=false)
G4double Value(const G4double energy, std::size_t &lastidx) const
void FillSecondDerivatives(const G4SplineType=G4SplineType::Base, const G4double dir1=0.0, const G4double dir2=0.0)
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
static constexpr double MeV
static constexpr double g
static constexpr double cm2
const char * name(G4int ptype)
static const G4double Z1[5]