void ConvertGDMLtoRoot() { TGeoManager* gGeoManager = new TGeoManager("cbmsim", ""); const TString _volumename = "mainframe_02"; const TString _file = _volumename + ".gdml"; const TString _file_out = _volumename + ".root"; TGeoVolume *_vol_assembly = new TGeoVolumeAssembly(_volumename); gGeoManager->SetTopVolume(_vol_assembly); TGDMLParse parser; TGeoVolume *_gdml_vol = parser.GDMLReadFile(_file); TObjArray *_node = _gdml_vol->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(); /* if(TString(_fVol->GetName()).Contains("DIN"))continue; if(TString(_fVol->GetName()).Contains("Ankertraeger"))continue; if(TString(_fVol->GetName()).Contains("Montageschiene_A3"))continue; if(TString(_fVol->GetName()).Contains("V-Spring"))continue;*/ // Removing volume from support center /* if(TString(_fVol->GetName()).Contains("V-Ankertraeger"))continue; if(TString(_fVol->GetName()).Contains("Montageschiene_A3"))continue; if(TString(_fVol->GetName()).Contains("DIN"))continue; if(TString(_fVol->GetName()).Contains("V-Spring"))continue;*/ // if(TString(_fVol->GetName()).Contains("V-KANYA"))continue; // secondary frame // /* if(TString(_fVol->GetName()).Contains("Sekundaer-Rahmen-Abstandsblech-34"))continue; if(TString(_fVol->GetName()).Contains("Sekundaer-Rahmen-Abstandsblech-31"))continue; if(TString(_fVol->GetName()).Contains("V-Dummy_rollenfuehrung_top"))continue;*/ _vol_assembly->AddNode(_fVol, copy_number, 0); copy_number++; } _gdml_vol->Draw("ogl"); // _gdml_vol->CheckOverlaps(0.001,"s10000"); // _gdml_vol->PrintOverlaps(); gGeoManager->CloseGeometry(); _vol_assembly->Export(_file_out); // Convert to VecGeom tessellated solid auto converter = TVirtualGeoConverter::Instance(gGeoManager); if (!converter) { printf("Raytracing a tessellated shape without VecGeom support will just draw a box\n"); } else { converter->ConvertGeometry(); } _vol_assembly->Draw("ogl"); _vol_assembly->Raytrace(kTRUE); _vol_assembly->RandomPoints(1000000,""); }