#include "hgeomdc.h" int HGeoMdc::readDet(HGeoInfo & geoInfo, HGeoMedia & geoMedia) { HString sno; for(int i=1;i<=numModules;i++) { sno=i; detName.replace(2,sno); noOfKeepIn[i]=readModule(geoInfo,geoMedia); } if (length()>0) return HSUCCESS; else return HFAILURE; } int HGeoMdc::readDet(HGeoInfo & geoInfo) { HString sno; for(int i=1;i<=numModules;i++) { sno=i; detName.replace(2,sno); eleName.replace(1,sno); noOfKeepIn[i]=readModule(geoInfo); geoInfo.fin.seekg(0, ios::beg); geoInfo.fin.clear(); } if (length()>0) return HSUCCESS; return HFAILURE; } int HGeoMdc::createDet(HGeoInfo & geoInfo, HGeoMedia & geoMedia){ HString sno; for(int i=1;i<=numModules;i++) { reset(); sno=i; detName.replace(2,sno); eleName.replace(1,sno); if (noOfKeepIn[i]>0) createModule(geoInfo,geoMedia); } return HSUCCESS; } int HGeoMdc::createHits(HString & copyName) { int l1, l2, idtype, iset, idet; char setName[]="DRIF"; int hitNh=14; char hitNamesh[14][5]={"XM ","YM ","ZM ","PX ","PY ","PZ ","XD ", "YD ","EKIN","PART","TOF ","YDD ","SECT","PY "}; int hitNbitsh[14]={30,30,30,30,30,30,30,30,30,6,30,30,4,30}; float hitOrig[14]={500.F,500.F,0.F,5.F,5.F,5.F,134.F, 150.F,0.F,0.F,0.F,150.F,0.F,1.F}; float hitFact[14]={1.e6F,1.e6F,1.e6F,1.e8F,1.e8F,1.e8F,4.e6F, 2.e6F,1.e8F,1.F,1.e14F,2.e6F,1.F,2.e8F}; l1=(int)copyName(1,1); l2=(int)copyName(3,1); idtype=10*l1+l2; #ifdef WITHGEANT char* cN=copyName; GSDETV(setName,cN,idtype,1000,1000,iset,idet); GSDETH(setName,cN,hitNh,hitNamesh,hitNbitsh,hitOrig,hitFact); #endif #ifdef ILSESHOW cout << "detector: " << copyName << " sensitive volume: " << setName << " idtype: " << idtype << '\n'; #endif return HSUCCESS; }