TGraph using TVectors

Dear rooters,

I want to do something very simple, filling a graph using two TVectors for x and y. Here’s the code I use:

#include "TVectorF.h"
#include "TGraph.h"

void bxsec() {

TVectorF *vx = new TVectorF(15);
TVectorF *vy = new TVectorF(15);

vx(0)=0.0;
vx(1)=1.0;
vx(2)=1.1;
vx(3)=2.0;
vx(4)=2.1;
vx(5)=2.5;
vx(6)=2.6;
vx(7)=2.7;
vx(8)=2.8;
vx(9)=2.9;
vx(10)=3.;
vx(11)=4.;
vx(12)=5.;
vx(13)=6.;
vx(14)=7.;

//cutbq=0

vy(0)=18.00;
vy(1)=18.00;
vy(2)=18.13;
vy(3)=17.64;
vy(4)=17.28;
vy(5)=17.92;
vy(6)=17.71;
vy(7)=20.18;
vy(8)=67.27;
vy(9)=65.34;
vy(10)=60.72;
vy(11)=41.15;
vy(12)=34.70;
vy(13)=25.39;
vy(14)=21.69;

TGraph *cutbq0 = new TGraph(vx,vy);

}

And when I run this, I get the following:

% root -l bxsec.C
root [0] 
Processing bxsec.C...
Error: Can't call TGraph::TGraph(vx,vy) in current scope bxsec.C:43:
Possible candidates are...
(in TGraph)
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(void);
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(Int_t n);
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(Int_t n,const Int_t* x,const Int_t* y);
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(Int_t n,const Float_t* x,const Float_t* y);
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(Int_t n,const Double_t* x,const Double_t* y);
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(const TGraph& gr);
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(const TVectorF& vx,const TVectorF& vy);
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(const TVectorD& vx,const TVectorD& vy);
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(const TH1* h);
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(const TF1* f,Option_t* option="");
/atlas/software/releases/15.3.0_i686slc4/sw/lcg/app/releases/ROOT/5.22.00b/slc4_ia32_gcc34/root/lib/libHist.so  -1:-1   0 public: TGraph TGraph::TGraph(const char* filename,const char* format="%lg %lg",Option_t* option="");
*** Interpreter error recovered ***
*** Interpreter error recovered ***
root [1] 

What am I doing wrong here?

Cheers,

Andrée

Andree,

see calling sequence of the TGraph constructors. Do as shown below

Rene

[code]#include “TVectorF.h”
#include “TGraph.h”

void bxsec() {

//TVectorF *vx = new TVectorF(15);
//TVectorF *vy = new TVectorF(15);
TVectorF vx(15);
TVectorF vy(15);

vx(0)=0.0;
vx(1)=1.0;
vx(2)=1.1;
vx(3)=2.0;
vx(4)=2.1;
vx(5)=2.5;
vx(6)=2.6;
vx(7)=2.7;
vx(8)=2.8;
vx(9)=2.9;
vx(10)=3.;
vx(11)=4.;
vx(12)=5.;
vx(13)=6.;
vx(14)=7.;

//cutbq=0

vy(0)=18.00;
vy(1)=18.00;
vy(2)=18.13;
vy(3)=17.64;
vy(4)=17.28;
vy(5)=17.92;
vy(6)=17.71;
vy(7)=20.18;
vy(8)=67.27;
vy(9)=65.34;
vy(10)=60.72;
vy(11)=41.15;
vy(12)=34.70;
vy(13)=25.39;
vy(14)=21.69;

TGraph *cutbq0 = new TGraph(vx,vy);
cutbq0->Draw(“alp”);
}
[/code]

Fantastic, it works!

Thanks a lot,

Andrée