#include "geantdef.h" #include "hfloatvec.h" #include "hgeopgon.h" typedef HFloatVec FVec; int HGeoPgon::readPointsDb(HGeoInfo & geoInfo, HGeoParam & ele) { #ifdef WITHORACLE int np=geoInfo.geoDb->getPointsArray(ele.objIndex,ele.vol); if (np>1) { FVec x(0.0F,3); x[0]=(float)(np-1); ele.vol.insert(0,x); return HSUCCESS; } #endif return HFAILURE; } int HGeoPgon::readPoints(HGeoInfo & geoInfo, HGeoParam & ele) { int n; geoInfo.fin >> n; FVec x(0.0F,3); ele.vol.assign(x,n+2); ele.vol[0][0]=float(n); for(int i=1;i<=n+1;i++) {geoInfo.fin >> ele.vol[i];} return HSUCCESS; } void HGeoPgon::calcShape(HGeoParam & ele, HGeoShapePar & p) { p.noPar=4+3*(int(ele.vol[0][0])); p.volPar=ele.vol[1]; p.volPar.append(FVec(ele.vol[0][0],1)); int n=int(p.volPar[3])+1; for(int i=2;i<=n;i++) { p.volPar.append(ele.vol[i]/10.F); } return; } int HGeoPgon::posShape(HGeoParam & ele, HGeoParam & mo, HGeoShapePar & p) { ele.geaPos=0.0F; ele.geaRot=cgRot; return posInMother(ele,mo,p); } int HGeoPgon::writePoints(ofstream & fout, HGeoParam & ele) { int n=int(ele.vol[0][0]); fout<