#include "geantdef.h" #include "hgeocreatesetup.h" #define GEONOSETS 9 // Common Block for all defined Media #ifdef WITHGEANT #define NMAXCHAR 120 #define MEDMAXNO 100 struct GEANTMEDIA_DEF { int ndefmedia; char mediumname[MEDMAXNO][NMAXCHAR]; int mediumindex[MEDMAXNO]; }; #define GEAMEDIA COMMON_BLOCK(GEAMEDIA,geamedia) COMMON_BLOCK_DEF(GEANTMEDIA_DEF,GEAMEDIA); #endif void hgeocreatesetup() { HGeoInfo geoInfo; HGeoMedia geoMedia; HGeoShapes geoShapes; int medShow=0; if ((geoInfo.connectInput("media")==HSUCCESS) && (geoInfo.getinputFlag()=='f')) { if (geoMedia.readFileMedia(geoInfo)==HFAILURE) exit(1); } if ((geoInfo.connectInput("usermed")==HSUCCESS) && (geoInfo.getinputFlag()=='f')) { if (geoMedia.readFileMedia(geoInfo)==HFAILURE) exit(1); } #ifdef GEOORA_OUT cout << "enter output directory (return = working directory) " << endl; HString tmp(' ',120); cin.getline(tmp,120); HString outDir=tmp; geoInfo.setOutputDir(outDir); #endif HString setup[GEONOSETS]={"cave","rich","sect","mdc","coils","tof", "shower","usergeo","frames"}; HGeoSet *pSet=0; for(int i=0;ireadDet(geoInfo)==HFAILURE) exit(1); } #ifdef WITHORACLE else { if (pSet->readDet(geoInfo,geoMedia)==HFAILURE) exit(1); } #endif #ifdef ILSESHOW pSet->showMembers(); #endif #ifdef GEOORA_OUT pSet->writeToFile(setup[i],geoInfo); #else cout << "creating set " << i << ": " << setup[i] << endl; if (pSet->createDet(geoInfo,geoMedia)==HFAILURE) exit(1); cout << setup[i] << " created " << endl; #endif } else { cerr << setup[i] << " not defined in programm" << endl; } } } #ifdef GEOORA_OUT geoMedia.writeToFile(geoInfo); #endif #ifdef ILSESHOW geoMedia.showMembers(); geoMedia.showAll(); #endif // packing list of media and internal GEANT medium number into struct #ifdef WITHGEANT HString eleName; HGeoMedium medium; int lm=geoMedia.length(); int i=0; if (geoMedia.reset()) do { eleName=geoMedia.name(); medium=geoMedia.element(); strcpy(GEAMEDIA.mediumname[i],eleName); GEAMEDIA.mediumindex[i]=medium.medno; i++; } while (geoMedia.next(1) && (iMEDMAXNO) { int dl=lm - MEDMAXNO; cout << "******************************************************"<< endl; cout << "***** List of Media is truncated to the first "<< MEDMAXNO <<" media *****" <