Tree problems...

Henk Uijterwaal (henk@ripe.net)
Tue, 10 Nov 1998 15:51:13 +0100


I'm completely new to Root, so this is probably something trivial or a
FAQ
but...

... I'm trying to fill a Tree using this piece of code, derived from the
examples
in the 2.00/13 distribution:

[oak:520] cat FillDelay.C
#include "TROOT.h"
#include "TTree.h"
#include "TFile.h"
#include "TBranch.h"
#include "Delay.h"

main (int argc, char **argv) {
TROOT simple ("Simple", "Example");
Int_t split = 0;
Int_t bsize = 64000;
Delay *delay = 0;
TFile *hfile = new TFile ("Test.root", "RECREATE");
TTree *tree = new TTree ("tree", "Example");
delay = new Delay();
tree->Branch ("delay", "Delay", &delay, bsize, split);
for (Int_t i=0 ; i<10 ; i++) {
delay = new Delay();
delay->SetPacketId(i);
tree->Fill();
delete delay;
}
hfile->Write ();
hfile->Close ();
return 0;
}

This compiles, but then core-dumps:

[oak:524] make
g++ -O -Wall -fPIC -I/spool/henk/source/root/include -c FillDelay.C
FillDelay.C: In function `int main(int, char **)':
FillDelay.C:9: warning: unused parameter `int argc'
FillDelay.C:9: warning: unused parameter `char ** argv'
g++ -O -Wall -fPIC -I/spool/henk/source/root/include -c Delay.C
g++ -o FillDelay -g FillDelay.o Delay.o -L/spool/henk/source/root/lib
-lNew -lBase -lCint -lClib -lCont -lFunc -lGraf -lGraf3d -lHist -lMatrix
-lMeta -lMinuit -lNet -lProof -lPostscript -lTree -lUnix -lZip -lg++ -lm
-ldl -rdynamic
[oak:525] FillDelay
Contructor for Delay
Contructor for Delay
Error in <TFile::TFile>: file does not exist

*** Break *** segmentation violation
Abort (core dumped)

As far as I can see, the core-dump occurs in the tree->Branch statement.

Any ideas what might be wrong here?

Henk

ps. I'm running Linux 2.0.35:

[oak:526] uname -a
Linux oak.ripe.net 2.0.35 #1 Fri Sep 4 15:13:37 MET DST 1998 i586
unknown

Delay.h and Delay.C are:

---- Delay.h ----
#include "TObject.h"
#include "TClonesArray.h"
#include "TH1.h"
#include "TMath.h"

#include <iostream.h>

class Delay : public TObject {

private:
UInt_t PacketId; // Identifier of the packet
Int_t SourceId; // ID# of the sending testbox
Int_t SourcePort; // Port from which the packet was sent
Int_t TargetId; // ID# of the receiving testbox
Int_t TargetPort; // Port to which the packet was sent
Int_t PacketSize; // Packet size in bytes
Double_t ArrivalTime; // -1.0 if undefined
Double_t PacketDelay; // Delay in ms, -1.0 if undefined
UInt_t SourceClock; // Sending and receiving clock status
UInt_t TargetClock;
Int_t Nhops; // Number of hops, -1 if unknown
Int_t Routeid; // Routing vector number, -1 if unknown
Float_t SourceNtp; // NTP error estimates (empty at the
moment)
Float_t TargetNtp;

public:
Delay ();
virtual ~Delay();
void SetPacketId (Int_t n) {PacketId = n;}
};

---- Delay.C ----
#include "Delay.h"

Delay::Delay() {
cout << "Contructor for Delay\n";
}

Delay::~Delay() {
}

-- 
------------------------------------------------------------------------------
Henk Uijterwaal                    Email: henk.uijterwaal@ripe.net
RIPE Network Coordination Centre     WWW: http://www.ripe.net/home/henk
Singel 258                         Phone: +31.20.535-4414,  Fax -4445
1016 AB Amsterdam                   Home: +31.20.4195305
The Netherlands                   Mobile: +31.6.55861746  NOTE NEW
NUMBER!
------------------------------------------------------------------------------

%DCL-E-NOCFFE, unable to locate coffee - keyboard input suspended.