#include "hgeocave.h" int HGeoCave::readDet(HGeoInfo & geoInfo, HGeoMedia & geoMedia) { #ifdef WITHORACLE HGeoParam ele; HString s1; char* vName=detName; ele.shape=(geoInfo.geoDb->getGeantShape(vName,s1.assign(22))); if (ele.shape.length()<4) ele.shape += ' '; ele.inout=1; // not stored in database int i=geoInfo.geoDb->getMaterial(vName); if (i<0) { cerr << ele.material << " not defined in oracle" << endl; return HFAILURE; } ele.material=geoInfo.geoDb->getMaterialName(i,s1); if (geoMedia.readDbMedium(ele.material,geoInfo)==HFAILURE) return HFAILURE; ele.material.upper(); for(i=0;igetNr3DPoints(vName);i++) { if (geoInfo.geoDb->get3DPoint(vName,i+1,ele.vol[i])==HFAILURE) { cerr << "cannot read points of " << detName << endl; return HFAILURE; } } append(detName,ele); #ifdef ILSESHOW showAll(detName,ele); #endif #endif return HSUCCESS; } int HGeoCave::readDet(HGeoInfo & geoInfo) { HGeoParam ele; HString eleName(' ',120); while(!geoInfo.fin.eof()) { geoInfo.fin >> eleName; if (eleName.empty() || eleName(0)=='/') geoInfo.fin.getline(eleName,120); else { if (eleName!=detName) { cerr << detName << " not found in file" << endl; return HFAILURE; } else { geoInfo.fin >> ele.shape.assign(20) >> ele.material.assign(40); if (ele.shape.length()==3) ele.shape.insert(3," "); readVol(geoInfo,ele); append(detName,ele); return HSUCCESS; } } } return HFAILURE; } int HGeoCave::createDet(HGeoInfo & geoInfo, HGeoMedia & geoMedia){ int matno, ivolu; HGeoParam ele; if(reset()) { HString eleName=name(); ele=element(); matno=geoMedia.createMedium(ele.material,geoInfo); HGeoShapePar & shapePar=pShapes->shapePar; if (matno) { if (pShapes->calcShape(ele)==HSUCCESS) { #ifdef WITHGEANT char* eN=eleName; char* eS=ele.shape; GSVOLU(eN,eS,matno,&(shapePar.volPar[0]),shapePar.noPar,ivolu); #endif #ifdef ILSESHOW pShapes->showShapePar(); #endif return HSUCCESS; } } } cerr << "cannot create Cave" << endl; exit(1); return HFAILURE; }