Double_t kDis; Int_t cLevel = 0; void checkOverlap(Double_t dis = 0.1) { kDis = dis; TFile *f = new TFile("geom.root"); TGeoManager *geo = (TGeoManager*)f->Get("PHENIX"); TGeoVolume *volCheck = geo->GetVolume("HALL"); geo->SetTopVolume(volCheck); //gGeoManager->CloseGeometry(); static const Int_t kNLevel = 1; TGeoVolume *volOnLevel[kNLevel]; TGeoNode *nodeOnLevel[kNLevel]; Int_t countOnLevel[kNLevel]; Int_t iLevel = 0; volOnLevel[0] = volCheck; cLevel = 0; //LoopDaughters(volCheck); //while (iLevel < kNLevel) { //for (countOnLevel[iLevel] = 0; countOnLevel[iLevel] < volOnLevel[iLevel]->GetNdaughters(); countOnLevel[iLevel]++) { //std::cout << "level " << iLevel << " " << volOnLevel[iLevel]->GetNode(countOnLevel[iLevel])->GetName() << std::endl; //nodeOnLevel[] //TGeoNode *nodeSIEN = fVolHALL->GetNode("SIEN_1"); //nodeSIEN->GetVolume()->Draw(); //TGeoVolume *volSIEN = nodeSIEN->GetVolume(); //volCheck->CheckOverlaps(kDis); geo->CheckOverlaps(kDis); geo->PrintOverlaps(); } void LoopDaughters(TGeoVolume *vol) { for (Int_t i = 0; i < vol->GetNdaughters(); i++) { cLevel++; TGeoNode *nodeChild = vol->GetNode(i); for (Int_t j = 0; j < cLevel; j++) std::cout << " "; std::cout << nodeChild->GetName() << std::endl; TGeoVolume *volChild = nodeChild->GetVolume(); volChild->CheckOverlaps(kDis); LoopDaughters(volChild); } cLevel--; }