Hi Matthew,
The TTree::Draw mechanism has been going through a lot of changes lately
(due to the new I/O scheme and additional features added). Some of the
changes made after 3.00.06 did involve calling member functions as in your
case.
I tried your example with the latest ROOT version and had no problem with
it.
Philippe.
-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Matthew Bellis
Sent: Friday, May 25, 2001 1:38 PM
To: Rene Brun
Cc: roottalk@pcroot.cern.ch
Subject: Re: [ROOT] TLorentzVector
Rene,
If I do it in an interactive session as you have described, yes, it
works fine.
But I am creating a root file, and then reading it in. This all used
to work fine. And I can still access all the other member functions of
TLorentzVector. However, I cannot access the M(). In fact, I cannot get it
to
execute tree->Draw("P.E()*P.E() - P.Rho()*P.Rho()"), which should return the
mass, albeit in a brute force fashion.
Here is a sketch of what I do, which used to work under v2.23...
int main{
TLorentzVector *pP = NULL;
TLorentzVector P;
pP = &P;
TFile RootOut (ROOTFILE, "recreate", "");
TTree *mytree = new TTree ("mytree", "A TTree object");
mytree->Branch ("P", "TLorentzVector", &pP, 64000, 1);
///// Loop over events
P.SetXYZM(px, py, pz, 0.938);
mytree->Fill ();
///// End loop
RootOut.Write ();
}
Then I write a macro to execute in Root...
{
gROOT->Reset();
gSystem->Load("libPhysics");
TFile f("Output.root");
TTree* tree = (TTree*) f.Get("mytree");
tree->Draw("P.M()");
}
At this point Root freezes and I have to kill it. If the last line
was
tree->Draw("P.X()");
it works fine.
Am I doing something wrong? Am I using some old syntax which is no
longer appropriate? I am no Root expert. Any advice at all would be welcome.
Matt Bellis
RPI
On May 25, 3:20pm, Rene Brun wrote:
> Subject: Re: [ROOT] TLorentzVector
> Hi Matt,
>
> The M and M2 functions have always been and still are in TLorentzVector.
> Try the following in an interactive session:
>
> root > gSystem->Load("libPhysics");
> root > TLorentzVector junk(1,2,3,4);
> root > junk.M()
> root > junk.M2()
>
> Rene Brun
>
> Matthew Bellis wrote:
> >
> > Hi Root users,
> >
> > I recently installed v3.00.06 on my Debian machine. I used the
> > linuxdeb2 architecture for configure, but I changed the compiler to gcc,
> > instead of egcc.
> >
> > I am finding though that I cannot access the M() or M2() member
> > functions of a TLorentzVector. I have tried filling the Vector a number
> > of ways, but it always hangs the program when I try to acess these
> > functions.
> >
> > Has anyone else encountered this problem? It used to work fine with
> > v2.23. Otherwise the newer version seems to be fine.
> >
> > Matt Bellis
> > RPI
>-- End of excerpt from Rene Brun
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:46 MET