Fuse TCanvas.Divide columns and share Y axis

The following works for me:

{
   c1 = new TCanvas("c1","Divide Example",800,400);
   c1->SetLeftMargin(0.3);
   c1->Divide(4,1,0,0);

   auto g1 = new TGraph();
   g1->AddPoint(1.,1.);
   g1->AddPoint(2.,2.);

   auto g2 = new TGraph();
   g2->AddPoint(3.,1.);
   g2->AddPoint(4.,2.);

   auto g3 = new TGraph();
   g3->AddPoint(5.,1.);
   g3->AddPoint(6.,2.);

   auto g4 = new TGraph();
   g4->AddPoint(7.,1.);
   g4->AddPoint(8.,2.);

   c1->cd(1); g1->Draw("AL");
   c1->cd(2); g2->Draw("AL");
   c1->cd(3); g3->Draw("AL");
   c1->cd(4); g4->Draw("AL");

   auto l = new TLegend(0.008,0.35,0.9,0.6);
   l->AddEntry(g1,"Legend 1");
   l->AddEntry(g2,"Legend 2");
   l->AddEntry(g3,"Legend 3");
   l->AddEntry(g4,"Legend 4");
   l->Draw();

   c1->cd(1)->Update();
   c1->cd(4)->Update();

   g1->GetYaxis()->SetTitle("\\sigma/\\sigma_{SM}");
   g4->GetXaxis()->SetTitle("\\mathscr{O}");
   c1->cd(1)->Modified();
   c1->cd(4)->Modified();
}