#include "geantdef.h" #include "hfloatvec.h" #include "hgeopcon.h" typedef HFloatVec FVec; int HGeoPcon::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 HGeoPcon::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); geoInfo.fin >> ele.vol[1][0] >> ele.vol[1][1]; for(int i=2;i<=n+1;i++) {geoInfo.fin >> ele.vol[i];} return HSUCCESS; } void HGeoPcon::calcShape(HGeoParam & ele, HGeoShapePar & p) { p.noPar=3+3*(int(ele.vol[0][0])); p.volPar=FVec(0.0F,3); p.volPar[0]=ele.vol[1][0]; p.volPar[1]=ele.vol[1][1]; p.volPar[2]=ele.vol[0][0]; int n=int(p.volPar[2])+1; for(int i=2;i<=n;i++) { p.volPar.append(ele.vol[i]/10.F); } return; } int HGeoPcon::posShape(HGeoParam & ele, HGeoParam & mo, HGeoShapePar & p) { ele.geaPos=0.0F; ele.geaRot=cgRot; return posInMother(ele,mo,p); } int HGeoPcon::writePoints(ofstream & fout, HGeoParam & ele) { int n=int(ele.vol[0][0]); fout<