84 if (matName ==
"Vacuum" || matName ==
"uum") {
103 char *path = std::getenv(
"G4LEDATA");
112 std::ostringstream fileName;
113 fileName << path <<
"/microelec/Structure/Data_" +
materialName +
".dat";
114 std::ifstream fichier(fileName.str().c_str());
127 fichier >> filler >> type;
129 if (type ==
"Compound") {
isCompound =
true;
Z = 0; }
131 while(!fichier.eof()) {
133 getline(fichier, filler);
134 std::stringstream line(filler);
136 if (filler[0] ==
'#' || filler.empty()) {
continue;}
139 line >> nameParameter;
143 for (
int i = 0; i < varLength; i++)
145 line >> data; data = data*unitValue;
147 if (nameParameter ==
"WorkFunction")
workFunction = data;
148 if (nameParameter ==
"EnergyGap")
energyGap = data;
150 if (nameParameter ==
"EnergyPeak")
energyConstant.push_back(data);
151 if (nameParameter ==
"EnergyLimit")
LimitEnergy.push_back(data);
154 if (nameParameter ==
"WeaklyBoundShell")
158 if (nameParameter ==
"WeaklyBoundInitialEnergy")
initialEnergy = data;
160 if (nameParameter ==
"ShellAtomicNumber")
compoundShellZ.push_back(data);
162 if (nameParameter ==
"DielectricModelLowEnergyLimit_e")
limitInelastic[0]=data;
163 if (nameParameter ==
"DielectricModelHighEnergyLimit_e")
limitInelastic[1] = data;
164 if (nameParameter ==
"DielectricModelLowEnergyLimit_p")
limitInelastic[2] = data;
165 if (nameParameter ==
"DielectricModelHighEnergyLimit_p")
limitInelastic[3] = data;
167 if (nameParameter ==
"ElasticModelLowEnergyLimit")
limitElastic[0] = data;
168 if (nameParameter ==
"ElasticModelHighEnergyLimit")
limitElastic[1] = data;
175 str += fileName.str() +
" not found!";
191 if (Shell >= 0 && Shell <
nLevels) {
203 if (unitName ==
"meV") unitValue = 1e-3*
CLHEP::eV;
204 else if (unitName ==
"eV") unitValue =
CLHEP::eV;
205 else if (unitName ==
"keV") unitValue =
CLHEP::keV;
206 else if (unitName ==
"MeV") unitValue =
CLHEP::MeV;
207 else if (unitName ==
"noUnit") unitValue = 1;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::vector< G4double > energyConstant
G4double GetInelasticModelHighLimit(G4int pdg)
std::vector< G4bool > isShellWeaklyBoundVector
std::vector< G4int > EADL_Enumerator
virtual ~G4MicroElecMaterialStructure()
G4double limitInelastic[4]
G4bool IsShellWeaklyBound(G4int level)
G4double GetLimitEnergy(G4int level)
G4double GetZ(G4int Shell)
std::vector< G4double > LimitEnergy
G4double ConvertUnit(const G4String &unitName)
std::vector< G4double > compoundShellZ
G4MicroElecMaterialStructure(const G4String &matName="")
G4double Energy(G4int level)
G4double GetInelasticModelLowLimit(G4int pdg)
static constexpr double keV
static constexpr double MeV
static constexpr double eV