void Import_GDML_Export_ROOT() { TGeoManager* gdml = new TGeoManager("gdml", "Trd Frame"); TGDMLParse parser; // Define your input GDML file HERE TGeoVolume* gdmlTop = parser.GDMLReadFile("mainframe.gdml"); TGeoVolume* rootTop = new TGeoVolumeAssembly("TRD_Mainframe"); gGeoManager->SetTopVolume(rootTop); TObjArray *_node = gdmlTop->GetNodes(); Int_t copy_number =0; for (int iNode = 0; iNode < _node->GetEntriesFast(); iNode++) { TGeoNode *_fNode = (TGeoNode *)_node->At(iNode); TGeoVolume *_fVol = (TGeoVolume *)_fNode->GetVolume(); rootTop->AddNode(_fVol, copy_number, 0); copy_number++; } gGeoManager->CloseGeometry(); // Define you output ROOT file HERE TFile* outfile = new TFile("mainframe.geo.root", "RECREATE"); rootTop->Write(); outfile->Close(); }