TH3D illegal operation

Hello,

I have a simple .dat file which I am reading into ROOT. I would like to take 3 columns from the 10 and make a 3-D histogram. However, when I attempt to fill the histogram, I am told:

Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:
Warning: Illegal numerical expression 3dplot->Fill(pperp_geva,dxdz0a,pchi2pt) sept113D.C:33:

Where does this error stem from? I will put my syntax (very short) below this message. I am able to make 1D and 2D histograms without a problem from this same file.

Thank you,
Nicole Ippolito

----------------------------------------macro--------------------------------------

{
gROOT->Reset();
#include “Riostream.h”
#include “TStyle.h”
#include

ifstream in;

in.open(“linking.dat”);

Double_t event,chamber1id,chamber2id,chamber3id,pchi2pt,pchi2,pperp_geva,dpperp_geva,dxdz0a,deltadxdz;

int i=0;
Int_t nlines = 0;

TFile *f = new TFile(“chi2.root”,“recreate”);

TH3D *3dplot = new TH3D(“3d plot attempt”,“3d plot attempt”,40,90.0,130.0,700,0.0,0.007,500,0.0,0.00000001);
TH2D *pvspchi2 = new TH2D(“pchi2 versus p”, “pchi2 versus p”,40,90.0,130.0,500,0.0,0.000007);
TH1F *p = new TH1F(“p”,“p”,40,90.0,130.0);
TH1F *pchi2h = new TH1F(“pchi2”,“pchi2”,500,0.0,0.00001);

while (1) {
i++;
in >>event>>chamber1id>>chamber2id>>chamber3id>>pchi2pt>>pchi2>>pperp_geva>>dpperp_geva>>dxdz0a>>deltadxdz;

if(!in.good()){std::cout<< "There is some problem here at line" << nlines << std::endl;}
if (!in.good()) break;

3dplot->Fill(pperp_geva,dxdz0a,pchi2pt);
p->Fill(pperp_geva);
pvspchi2->Fill(pperp_geva,pchi2pt);
pchi2h->Fill(pchi2pt);

nlines++;

}

std::cout<<" found pointsn "<<nlines<<std::endl;

in.close();
f->Write();

}

Replace your illegal variable name 3dplot by eg a3dplot

Rene

Yes, that works, thank you. I did not know which variable it felt had been illegally named.