Secondary Yaxis

Hi to all,
I have a problem with this code.

[code]#include

void graficoDoppio()
{

ifstream file1(“file1.txt”);
double x1, y1;
TGraph *plot1 = new TGraph();
int ipoint1(0);

while (!file1.eof()) {
file1 >> x1;
if (file1.eof())
break;
file1 >> y1;

 plot1->SetPoint(ipoint1,x1,y1);
 ipoint1++;

}

file1.close();

plot1->SetLineColor(4);
plot1->SetMarkerStyle(20);
plot1->SetMarkerSize(1);
plot1->GetXaxis()->SetTitle(“Time”);
plot1->GetYaxis()->SetTitle(“Volts”);
plot1->Draw(“Al”);

ifstream file2(“file2.txt”);
double x2, y2;
TGraph *plot2 = new TGraph();
int ipoint2(0);

while (!file2.eof()) {
file2 >> x2;
if (file2.eof())
break;
file2 >> y2;

 plot2->SetPoint(ipoint2,x2,y2);
 ipoint2++;

}

file2.close();

plot2->SetLineColor(2);
plot2->SetMarkerStyle(20);
plot2->SetMarkerSize(1);
plot2->GetXaxis()->SetTitle(“Time”);
plot2->GetYaxis()->SetTitle(“Volts”);
plot2->Draw(“l”);

}[/code]

The two files have different scales. How I can plot the “file1.txt” on the Yaxis on the left, and the “file2.txt” on the Yaxis on the right?
The Xaxis is the same for both.

Thanks.
file2.txt (702 Bytes)
file1.txt (756 Bytes)

transpad.C: Example of a canvas showing two histograms with different scales.
twoscales.C: example of macro illustrating how to superimpose two histograms

I had already seen the examples, but I do not understand how I can plot the y coordinates of the file2 on the secondary Yaxis.

{
   //
   // Example showing how to superimpose a TGraph with a different range
   // using a transparent pad.
   //

   c1 = new TCanvas("c1","gerrors2",200,10,700,500);
   TPad *pad = new TPad("pad","",0,0,1,1);
   pad->Draw();
   pad->cd();

   // draw a frame to define the range
   c1->DrawFrame(-0.4,0,1.2,12);

   // create first graph
   Int_t n1 = 10;
   Double_t X1[]  = {-0.22, 0.05, 0.25, 0.35, 0.5, 0.61,0.7,0.85,0.89,0.95};
   Double_t Y1[]  = {1,2.9,5.6,7.4,9,9.6,8.7,6.3,4.5,1};
   Double_t eX1[] = {.05,.1,.07,.07,.04,.05,.06,.07,.08,.05};
   Double_t eY1[] = {.8,.7,.6,.5,.4,.4,.5,.6,.7,.8};
   gr1 = new TGraphErrors(n1,X1,Y1,eX1,eY1);
   gr1->SetMarkerColor(kBlue);
   gr1->SetMarkerStyle(21);
   gr1->Draw("LP");

   // create second graph
   Int_t n2 = 10;
   Float_t x2[]  = {-0.28, 0.005, 0.19, 0.29, 0.45, 0.56,0.65,0.80,0.90,1.01};
   Float_t y2[]  = {0.82,3.86,7,9,10,10.55,9.64,7.26,5.42,2};
   Float_t ex2[] = {.04,.12,.08,.06,.05,.04,.07,.06,.08,.04};
   Float_t ey2[] = {.6,.8,.7,.4,.3,.3,.4,.5,.6,.7};
   for (Int_t i=0;i<n2;i++) {
      y2[i]  *= 100;
      ey2[i] *= 100;
   }

   //create a transparent pad drawn on top of the main pad
   c1->cd();
   TPad *overlay = new TPad("overlay","",0,0,1,1);
   overlay->SetFillStyle(4020);
   overlay->SetFrameFillStyle(4000);
   overlay->Draw("");
   overlay->cd();
   gr2 = new TGraphErrors(n2,x2,y2,ex2,ey2);
   gr2->SetMarkerColor(kRed);
   gr2->SetMarkerStyle(20);
   gr2->SetName("gr2");
   Double_t xmin = pad->GetUxmin();
   Double_t ymin = 0;
   Double_t xmax = pad->GetUxmax();
   Double_t ymax = 1200;
   TH1F *hframe = overlay->DrawFrame(xmin,ymin,xmax,ymax);
   overlay->DrawFrame(xmin,ymin,xmax,ymax);
   hframe->GetXaxis()->SetLabelOffset(99);
   hframe->GetYaxis()->SetLabelOffset(99);
   gr2->Draw("LP");

   //Draw an axis on the right side
   TGaxis *axis = new TGaxis(xmax,ymin,xmax, ymax,ymin,ymax,510,"+L");
   axis->SetLineColor(kRed);
   axis->SetLabelColor(kRed);
   axis->Draw();
}

Let me know if you need I adapt your example. The previous example should help. Note you can avoid the 1st DrawFrame.

Here is your macro working as you wish:

#include <fstream>

void graficoDoppio()
{

   TCanvas *c1 = new TCanvas("c1","transparent pad",200,10,700,500);
   TPad *pad1 = new TPad("pad1","",0,0,1,1);
   TPad *pad2 = new TPad("pad2","",0,0,1,1);
   pad2->SetFillStyle(0);      // will be ...
   pad2->SetFrameFillStyle(0); // ... transparent

   pad1->Draw();
   pad1->cd();


   ifstream file1("file1.txt");
   double x1, y1;
   TGraph *plot1 = new TGraph();
   int ipoint1(0);

   while (!file1.eof()) {
     file1 >> x1;
     if (file1.eof())
       break;
     file1 >> y1;

     plot1->SetPoint(ipoint1,x1,y1);
     ipoint1++;
   }

   file1.close();

   plot1->SetLineColor(4);
   plot1->SetMarkerStyle(20);
   plot1->SetMarkerSize(1);
   plot1->GetXaxis()->SetTitle("Time");
   plot1->GetYaxis()->SetTitle("Volts");
   plot1->Draw("Al");

   ifstream file2("file2.txt");
   double x2, y2;
   TGraph *plot2 = new TGraph();
   int ipoint2(0);

   while (!file2.eof()) {
     file2 >> x2;
     if (file2.eof())
       break;
     file2 >> y2;

     plot2->SetPoint(ipoint2,x2,y2);
     ipoint2++;
   }

   file2.close();
   pad2->Draw();
   pad2->cd();
   plot2->SetLineColor(2);
   plot2->SetMarkerStyle(20);
   plot2->SetMarkerSize(1);
   plot2->GetXaxis()->SetTitle("Time");
   plot2->GetYaxis()->SetTitle("Volts");
   plot2->Draw("alY+");
}

It works well now, thank you very much for your help.