{ if (gSystem->Load("libGeom")!=0) { Error("Unable to load libGeom.so\n"); return; } // ********** Put here your own config file! ******************* TString configFile="/u/hadalign/aug04/macro/geofiles/geainiAug04.dat"; // Common HYDRA part to initialize the parameter containers Hades* myHades=new Hades; HSpectrometer* spec=gHades->getSetup(); HRuntimeDb* rtdb=gHades->getRuntimeDb(); HMdcDetector* mdc=new HMdcDetector; Int_t mdcMods[6][4]= { {1,1,1,1}, {1,1,1,1}, {1,1,1,0}, {1,1,1,1}, {1,1,1,1}, {1,1,1,0} }; for(Int_t i=0;i<6;i++) mdc->setModules(i,mdcMods[i]); spec->addDetector(mdc); HTofDetector* tof=new HTofDetector; Int_t tofMods[6][22]= { {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0} }; for(Int_t i=0;i<6;i++) tof->setModules(i,tofMods[i]); spec->addDetector(tof); HTofinoDetector* tofino=new HTofinoDetector; Int_t tofinoMods[][] = { {1},{1},{1},{1},{1},{1} }; for(Int_t i=0;i<6;i++) tofino->setModules(i,tofinoMods[i]); spec->addDetector(tofino); HShowerDetector* shower=new HShowerDetector; Int_t showerMods[6][3]= { {1,1,1}, {1,1,1}, {1,1,1}, {1,1,1}, {1,1,1}, {1,1,1} }; for(Int_t i=0;i<6;i++) shower->setModules(i,showerMods[i]); spec->addDetector(shower); HParOraIo* ora=new HParOraIo; ora->open(); rtdb->setFirstInput(ora); ora->setHistoryDate("now"); HSpecGeomPar* pSpecPar=(HSpecGeomPar*)(rtdb->getContainer("SpecGeomPar")); HMdcGeomPar* pMdcPar=(HMdcGeomPar*)(rtdb->getContainer("MdcGeomPar")); HTofGeomPar* pTofPar=(HTofGeomPar*)(rtdb->getContainer("TofGeomPar")); HTofinoGeomPar* pTofinoPar=(HTofinoGeomPar*)(rtdb->getContainer("TofinoGeomPar")); HShowerGeometry* pShowerPar=(HShowerGeometry*)(rtdb->getContainer("ShowerGeometry")); if (!rtdb->initContainers(1015923900)) { delete myHades; return; } rtdb->closeFirstInput(); // Create the interface and read the GEANT configuration file // lib simulation // lib hydra // orasimul HGeomInterface* interface=new HGeomInterface; HGeomOraIo* oraInput=new HGeomOraIo; oraInput->open(); interface->setOracleInput(oraInput); Bool_t rc=interface->readGeomConfig(configFile.Data()); if (!rc) printf("Read of GEANT config file failed!\n"); // Create the output HGeomAsciiIo* output=new HGeomAsciiIo; output->setDirectory("/u/hadalign/aug04/macro/geofiles/aug04/"); interface->setOutput(output); // Read the geometry from the files if (rc) rc=interface->readAll(); if (!rc) printf("Read of geometry failed!\n"); // Add alignment on top of the GEANT geometry // Shifts the RICH according to the mean z-shift of the target if (rc) rc=interface->addAlignment(pSpecPar); if (!rc) printf("Add of target alignment failed!\n"); if (rc) rc=interface->addAlignment(pMdcPar); if (!rc) printf("Add of MDC alignment failed!\n"); if (rc) rc=interface->addAlignment(pTofPar); if (!rc) printf("Add of TOF alignment failed!\n"); if (rc) rc=interface->addAlignment(pTofinoPar); if (!rc) printf("Add of Tofino alignment failed!\n"); if (rc) rc=interface->addAlignment(pShowerPar); if (!rc) printf("Add of Shower alignment failed!\n"); interface->writeAll(); // Create the ROOT Geometry modeler and it in the interface TGeoManager* geom = new TGeoManager("HadesGeom", "HADES geometry"); HGeomRootBuilder* builder=new HGeomRootBuilder("builder","geom builder"); builder->setGeoManager(geom); interface->setGeomBuilder(builder); // Create the geometry in ROOT if (rc) rc=interface->createAll(); if (!rc) printf("Creation of geometry failed!\n"); // Call the overlap checker with default precision 0.001mm if (rc) builder->checkOverlaps(); // Create the browser if (rc) TBrowser* browser=new TBrowser; else { delete interface; delete geom; delete myHades; return; } // Keep before leaving ROOT /* delete interface; delete myHades; delete browser; delete geom; */ }