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