void make_shield_geo() { double TARGET = 0.; //NEDS TO BE SETTABLE double LENGTH = 75.; gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C"); //----------------------- INIT -------------------------------------- //get geometry definitions: FairGeoLoader* loader = new FairGeoLoader("TGeo", "FairGeoLoader"); FairGeoBuilder* builder = loader->getGeoBuilder(); FairGeoInterface* geoIFC = loader->getGeoInterface(); TString workdir = gSystem->Getenv("VMCWORKDIR"); cout << workdir.Data() << endl; geoIFC->setMediaFile(workdir+"/geometry/media_pnd.geo"); geoIFC->readMedia(); //geoIFC->print(); FairGeoMedia* media = geoIFC->getMedia(); TGeoManager* geoMan = (TGeoManager*) gROOT->FindObject("FAIRGeom"); //------------------ LOAD MATERIALS ---------------------------------- FairGeoMedium* lead = media->getMedium("FOPIPassLead"); builder->createMedium(lead); FairGeoMedium* air = media->getMedium("FOPISensAir"); builder->createMedium(air); // ------------------ DEFINE GEO ------------------------------------- TGeoVolume* top = new TGeoVolumeAssembly("TPCSHIELD"); TGeoVolumeAssembly* topAss = new TGeoVolumeAssembly("TPCSHIELD"); TGeoVolumeAssembly* shield = new TGeoVolumeAssembly("Shield"); double air_pars[3] = {20.4, 20.49., LENGTH}; double shield_pars[3] = {20.5, 30., LENGTH}; TGeoTube* shA = new TGeoTube(air_pars); TGeoVolume* shAV = new TGeoVolume("FOPISensAirV", shA, gGeoManager->GetMedium(TString("FOPISensAir"))); shield->AddNode(shAV,0); TGeoTube* shL = new TGeoTube(shield_pars); TGeoVolume* shLV = new TGeoVolume("ShieldLeadV", shL, gGeoManager->GetMedium(TString("FOPIPassLead"))); shield->AddNode(shLV,0); TGeoTranslation* glob = new TGeoTranslation(0,0,TARGET + LENGTH/2.); topAss->AddNode(shield,0,glob); TGeoVoxelFinder* voxels = top->GetVoxels(); if (voxels) { voxels->SetNeedRebuild(); } geoMan->SetTopVolume(topAss); top->AddNode(topAss, 0); geoMan->CloseGeometry(); TEveManager::Create(); TEveGeoTopNode* meh = new TEveGeoTopNode(geoMan, geoMan->GetTopNode()); gEve->AddGlobalElement(meh); // gEve->Redraw3D(kTRUE); TFile outfile("$VMCWORKDIR/geometry/FOPI_TPC_SHIELD.root", "recreate"); outfile.cd(); top->Write(); }