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