49 G4String CCalMaterialFactory::elementfile =
"";
50 G4String CCalMaterialFactory::mixturefile =
"";
55 if ((matfile==
"" || matfile==elementfile) &&
56 (mixfile==
"" || mixfile==mixturefile))
58 else if ((matfile !=
"" && elementfile !=
"" && matfile != elementfile) ||
59 (mixfile !=
"" && mixturefile !=
"" && mixfile != mixturefile)) {
60 G4cerr <<
"ERROR: Trying to get materials from " << matfile <<
" and "
61 << mixfile <<
" while previously were retrieved from "
62 << elementfile <<
" and " << mixturefile <<
"." <<
G4endl;
65 if (elementfile ==
"")
67 if (mixturefile ==
"")
80 if (elementfile==
"" || mixturefile==
"") {
81 G4cerr <<
"ERROR: You haven't defined files to be used for materials in "
82 <<
"CCalMaterialFactory::getInstance(const G4String&,const G4String&)"
97 CCalMaterialTable::iterator ite;
98 for(ite = theCCalMaterials.begin(); ite != theCCalMaterials.end(); ite++ ){
101 theCCalMaterials.clear();
102 CCalAMaterialTable::iterator itea;
103 for(itea = theCCalAMaterials.begin(); itea != theCCalAMaterials.end();
107 theCCalAMaterials.clear();
116 G4cout <<
"Material " << mat <<
" already defined. Returning previous "
130 ed <<
" Could not build material " << mat <<
"." <<
G4endl;
131 G4Exception(
"CCalMaterialFactory::findMaterial()",
"ccal001",
137 G4cout <<
"Material " << mat <<
" has been built successfully." <<
G4endl;
141 G4cerr <<
"ERROR: Material " << mat <<
" not found in CCal database!!!"
151 for (
unsigned int i=0; i<theElements.size(); i++)
152 if (theElements[i]->GetName()==mat){
156 return theElements[i];
170 theCCalAMaterials.push_back(theMat);
185 addCCalMaterial(name, density, nconst, mats, prop, md);
193 if (getenv(
"CCAL_GLOBALPATH"))
194 path = getenv(
"CCAL_GLOBALPATH");
196 G4cout <<
" ==> Opening file " << matfile <<
" to read elements..." <<
G4endl;
200 G4cerr <<
"ERROR: Could not open file " << matfile <<
G4endl;
216 if (getenv(
"CCAL_GLOBALPATH"))
217 path = getenv(
"CCAL_GLOBALPATH");
219 G4cout <<
" ==> Opening file " << matfile <<
" to read materials..." <<
G4endl;
223 G4cerr <<
"ERROR: Could not open file " << matfile <<
G4endl;
242 for (
unsigned int i=0; i<theG4Materials.size(); i++) {
243 if (theG4Materials[i]->GetName()==mat){
244 return theG4Materials[i];
253 for (
unsigned int i=0; i<theCCalMaterials.size(); i++)
254 if (theCCalMaterials[i]->Name()==mat){
256 G4cout <<
"CCalMaterial " << mat <<
" found!" <<
G4endl;
258 return theCCalMaterials[i];
266 for (
unsigned int i=0; i<theCCalAMaterials.size(); i++)
267 if (theCCalAMaterials[i]->Name()==mat){
269 G4cout <<
"CCalMaterial " << mat <<
" found!" <<
G4endl;
271 return theCCalAMaterials[i];
291 for (
G4int i=0; i<nconst; i++){
297 G4cerr <<
"ERROR: Trying to build" << name <<
" out of unknown "
298 << mats[i] <<
"." <<
G4endl
299 <<
"Skiping this material!" <<
G4endl;
309 G4cerr <<
"ERROR: Trying to build" <<name <<
" out of unknown "
310 << mats[i] <<
"." <<
G4endl
311 <<
"Skiping this material!" <<
G4endl;
323 theCCalAMaterials.push_back(amaterial);
337 theCCalMaterials.push_back(material);
351 G4cout <<
" Element \tsymbol\tA\tZ\tdensity\tX_0 abs_l"<<
G4endl;
357 while (name !=
"*ENDDO") {
360 is >> symbol >> A >> Z >> density >>
jump;
362 G4cout <<
" " << name <<
" \t" << symbol <<
"\t"
363 << A <<
"\t" << Z <<
"\t" << density <<
G4endl;
369 <<
" elements read from file" << G4endl <<
G4endl;
386 density,
kStateGas, temperature, pressure);
391 while (name !=
"*ENDDO") {
396 is >> nElem >> dens >>
jump;
400 <<
" made of " << nElem
401 <<
" elements. Density=" << dens
405 G4int absnelem = std::abs(nElem);
411 for(
int i=0; i<absnelem; i++) {
415 weights[i]=std::abs(prop);
418 if (nElem>0 && prop<0)
425 addCCalMaterial(matname, dens, absnelem, mats, weights, md);
432 G4cout <<
" " << theCCalMaterials.size() <<
" materials read from "
433 << mixturefile << G4endl <<
G4endl;
437 CCalMaterialFactory::CCalMaterialFactory() {
void readElements(const G4String &)
CCalMaterial * ptrCCalMaterial
double Weight(int i) const
bool openGeomFile(std::ifstream &is, const G4String &pathname, const G4String &filename)
std::ostringstream G4ExceptionDescription
CCalAMaterial * ptrCCalAMaterial
int universe_mean_density
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
G4Element * addElement(const G4String &, const G4String &, G4double, G4double, G4double)
std::istream & jump(std::istream &)
std::ifstream & findDO(std::ifstream &, const G4String &)
std::ifstream & readName(std::ifstream &, G4String &)
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
G4Material * addMaterial(const G4String &nam, G4double density, G4int nconst, G4String mats[], G4double prop[], MatDescription md=byWeight)
G4Material * findMaterial(const G4String &) const
static constexpr double kelvin
static constexpr double cm3
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4String Element(int i) const
void readMaterials(const G4String &)
void AddElement(G4Element *element, G4int nAtoms)
static CCalMaterialFactory * getInstance()
std::vector< G4Element * > G4ElementTable
static G4ElementTable * GetElementTable()
static constexpr double mole
G4Element * findElement(const G4String &) const
G4GLOB_DLL std::ostream G4cerr