actually the C++ version was wrong. There is several graphs in each contour. so it should be:
{
TFile *f = new TFile("test.root");
TH2D* h = (TH2D*)f->Get("sigp1clsf");
Double_t c = TMath::NormQuantile(1-0.05);
printf("Contour to be drawn: %g\n",c);
h->SetContour(1, &c);
h->Draw("CONT LIST");
gPad->Update();
TObjArray *contours = gROOT->GetListOfSpecials()->FindObject("contours");
TList *list = (TList*)contours->At(0);
TGraph *curv = (TGraph*)list->First();
TGraph *gc;
for (int j = 0; j < list->GetSize(); j++) {
gc = (TGraph*)curv->Clone();
gc->Draw("L");
curv = (TGraph*)list->After(curv);
}
}