Hi Roottalk,
I have problems to read Trees w/ events (similar to the Event.cxx example)
using this code running linux ROOT 3.02.07:
----------------------------------------------------------------------------
TROOT root("Analysis","Rich Analysis");
int main(int argc, char **argv)
{
root.Reset();
TString inFileList;
TString outHistofile;
int nEvents=0;
int nFiles=0;
if(argc > 1)
{
inFileList=argv[1];
outHistofile=argv[2];
cout <<"dir:"<<inFileList<<" root:"<<outHistofile<<endl;
for (int k = 1; k < argc; k++)
{
int c = *++argv[k];
switch(c)
{
case 'n':
k++;
nEvents = atoi(argv[k]);
printf("nr of events: %i\n",nEvents);
break;
} // switch
} // for
}
else
{
printf ("usage: L3RICHTriggerEfficiency filelist.txt histo.root \n\n");
printf (" -n [Number of events(default:all)]\n");
return 0;
}
// Histograms
TH1F *hVz = new TH1F("hVz","Vertex z Pos",1000,-500,500);
TH2F *hVyVx = new TH2F("hVyVx","Vertex y vs. Vertex x
Pos",20,-10,10,20,-10,10);
TH1F *hVx = new TH1F("hVx","Vertex x Pos",50,-25,25);
TH1F *hVy = new TH1F("hVy","Vertex y Pos",50,-25,25);
TStopwatch timer;
timer.Start();
TChain *chain = new TChain("Tree");
// Open the filelist and chain them
FILE *fp = fopen(inFileList.Data(),"r");
char* dataFile=new char[512] ;
Int_t nlines = 0;
Int_t ncols;
while(1)
{
if(nFiles){ if(nlines>nFiles) break; }
if( fscanf (fp, "%s", dataFile ) == EOF ) break ;
if (nlines<10 || nlines%10==0) printf("add %d: %s\n",nlines,dataFile);
chain->Add(dataFile);
nlines++;
}
printf(" found %d datafiles\n",nlines);
fclose(fp);
Event *event = new Event();
chain->SetBranchAddress("Event",&event);
TClonesArray *primaries = event->GetfPrimaries();
TClonesArray *globals = event->GetfGlobals();
TClonesArray *l3globals = event->GetfL3Globals();
Int_t nevent = chain->GetEntries();
cout<<"Tree has:"<<nevent<<endl;
Int_t nb = 0;
for (Int_t eventCnt=0;eventCnt<nevent;eventCnt++)
{
printf("Tree -> Event:%d\n",eventCnt);
chain->GetEntry(eventCnt); //read complete event in
memory
cout<<"primaries:" << primaries->GetEntries() << endl;
float VertexZ=event->GetVertexZ();
cout<<"Vertex z:"<<VertexZ<<endl;
for(int glcnt=0;glcnt<primaries->GetEntries();glcnt++)
{
cout<<"pt "<<((RTrack*)primaries->At(glcnt))->GetPt()<<endl;
}
hVz->Fill(VertexZ);
event->ClearTracks();
}
cout << "llop finished!"<<endl;
----------------------------------------------------------------------------
The application crashes after the first event:
----------------------------------------------------------------------------
[play10] ~/<3>RICHAna/root/bin/L3RICHTriggerEfficiency/>
./L3RICHTriggerEfficiency testfiles.txt histo.root
dir:testfiles.txt root:histo.root
add 0: ./testfiles/st_physics_2318025_raw_0001.tree.root
add 1: ./testfiles/st_physics_2318025_raw_0002.tree.root
add 2: ./testfiles/st_physics_2318025_raw_0003.tree.root
add 3: ./testfiles/st_physics_2318025_raw_0004.tree.root
add 4: ./testfiles/st_physics_2318025_raw_0005.tree.root
add 5: ./testfiles/st_physics_2318025_raw_0006.tree.root
add 6: ./testfiles/st_physics_2318025_raw_0007.tree.root
add 7: ./testfiles/st_physics_2318025_raw_0008.tree.root
add 8: ./testfiles/st_physics_2318025_raw_0009.tree.root
found 9 datafiles
Tree has:619
Tree -> Event:0
primaries:6
Vertex z:-19.1568
pt 0.668843
pt 0.546642
pt 1.2964
pt 0.682589
pt 2.09051
pt 0.755654
Tree -> Event:1
primaries:5
Vertex z:6.6122
pt 1.30538
pt 0.619923
pt 0.658819
pt 0.937802
pt 0.784645
Tree -> Event:2
......
Tree -> Event:71
*** Break *** segmentation violation
Abort
[play10] ~/<3>RICHAna/root/bin/L3RICHTriggerEfficiency/>
----------------------------------------------------------------------------
You can find the main.C at:
http://www.star.bnl.gov/~jberger/tmp/RICHAna/root/bin/L3RICHTriggerEfficiency/
and the libs at:
http://www.star.bnl.gov/~jberger/tmp/RICHAna/root/lib/RICHAnaTree/
the events:
http://www.star.bnl.gov/~jberger/tmp/RICHAna/root/bin/L3RICHTriggerEfficiency/testfiles/*.root
The events have been created with:
http://www.star.bnl.gov/~jberger/tmp/RICHAna/v2P02gc/RICHAna/StRoot/StRichSpectraTupMaker/StRichSpectraTupMaker.cxx,
StRichSpectraTupMaker.h
Thanks, Jens.
----------------------------------------------------------------------
Jens Berger email IKF : jberger@ikf.uni-frankfurt.de
email BNL : jberger@bnl.gov
----------------------------------------------------------------------
Institut Kernphysik Frankfurt (IKF):
August-Euler-Str. 06 office phone: +49-(0)69-798-24254
60486 Frankfurt/Main FRG office fax : +49-(0)69-798-24212
----------------------------------------------------------------------
Brookhaven National Laboratory (BNL):
Physics Department
c/o STAR Group
Building 510A office phone: +1-(1)631-344-8336
Upton, New York 11973 office fax : +1-(1)631-344-4206
----------------------------------------------------------------------
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:14 MET