int make_TPC_geo(bool useAlignment=true, TString alignmentFile="$VMCWORKDIR/tpc/parfiles/june11_alignment_mc.txt", bool draw = false, TString outpath="", TString fileName="") { if(fileName.EqualTo("")){ fileName="FOPI_TPC.root"; } double TARGET = 20.; //target offset std::cout<Macro("$VMCWORKDIR/gconfig/rootlogon.C"); gROOT->LoadMacro("$VMCWORKDIR/macro/tpc/runRadlenCalc.C"); //----------------------- INIT -------------------------------------- //get geometry definitions: FairGeoLoader* loader = new FairGeoLoader("TGeo", "FairGeoLoader"); FairGeoBuilder* builder = loader->getGeoBuilder(); FairGeoInterface* geoIFC = loader->getGeoInterface(); TString workdir = gSystem->Getenv("VMCWORKDIR"); geoIFC->setMediaFile(workdir+"/geometry/media_pnd.geo"); geoIFC->readMedia(); //geoIFC->print(); FairGeoMedia* media = geoIFC->getMedia(); TGeoManager* geoMan = (TGeoManager*) gROOT->FindObject("FAIRGeom"); geoMan->Print(); std::cout<<" --------------------------------------------- "<Print(); std::cout<getMedium("aluminium"); FairGeoMedium *CbmMediumKapton = media->getMedium("kapton"); FairGeoMedium *CbmMediumCopper = media->getMedium("copper"); FairGeoMedium *CbmMediumG10 = media->getMedium("G10"); FairGeoMedium *CbmMediumRohacell = media->getMedium("rohacell"); FairGeoMedium *CbmMediumTPCFOPI_mix = media->getMedium("TPCFOPI_mix"); FairGeoMedium *CbmMediumTPCmixture = media->getMedium("TPCmixture"); FairGeoMedium *CbmMediumTPCGlue = media->getMedium("glue"); FairGeoMedium *CbmMediumCarbon = media->getMedium("carbon"); FairGeoMedium *CbmMediumLead = media->getMedium("lead"); FairGeoMedium *CbmMediumAir = media->getMedium("Air"); FairGeoMedium *CbmMediumN2 = media->getMedium("N2"); builder->createMedium(CbmMediumAluminium); builder->createMedium(CbmMediumKapton); builder->createMedium(CbmMediumCopper); builder->createMedium(CbmMediumG10); builder->createMedium(CbmMediumRohacell); builder->createMedium(CbmMediumTPCFOPI_mix); builder->createMedium(CbmMediumTPCmixture); builder->createMedium(CbmMediumTPCGlue); builder->createMedium(CbmMediumCarbon); builder->createMedium(CbmMediumLead); builder->createMedium(CbmMediumN2); builder->createMedium(CbmMediumAir); gROOT->Macro("$FOPI2ROOT/fopigeometry/FopiMedia.C"); // ------------------ DEFINE GEO ------------------------------------- TGeoVolume* top = new TGeoVolumeAssembly("TPC"); TGeoVolumeAssembly* topAss = new TGeoVolumeAssembly("TPC"); TGeoVolumeAssembly* tpc = new TGeoVolumeAssembly("Tpc"); tpc->Print(); gROOT->LoadMacro("$FOPI2ROOT/fopigeometry/TPC.C"); TPC(tpc); tpc->Print(); geoMan->SetTopVolume(topAss); std::cout<getTransformation("tpc"); trans1->Print(); }else{ trans1 = new TGeoCombiTrans(); trans1->SetTranslation(TGeoTranslation(0.,0.,TARGET)); } topAss->AddNode(tpc,0,trans1); top->AddNode(topAss, 0); TGeoVoxelFinder* voxels = top->GetVoxels(); if (voxels) { voxels->SetNeedRebuild(); } geoMan->CloseGeometry(); if(draw){ TEveManager::Create(); TEveGeoTopNode* meh = new TEveGeoTopNode(geoMan, geoMan->GetTopNode()); gEve->AddGlobalElement(meh); gEve->Redraw3D(kTRUE); } TFile* outfile; if(outpath.EqualTo("")) outfile = new TFile("$VMCWORKDIR/geometry/"+fileName, "recreate"); else { TString finalOut = outpath; if(!finalOut.EndsWith("/")) finalOut.Append("/"); finalOut.Append(fileName); outfile = new TFile(finalOut, "recreate"); } outfile->cd(); top->Write(); outfile->Close(); delete outfile; //runRadlenCalc(gGeoManager,0); }