Hi Rooters! After 3 ours of work program gave me the next message. I used Alpha working under Digital Unix and ROOT version 2.23/12. Fatal in <CustomReAlloc2>: storage exhausted aborting I have 3 TFiles. Each file includes the same TTree created from the different data. Now I want to sum these data and write result in the new TFile. What may be wrong or can be changed in the next part of code? Let me note that each TFile can be read separately without errors. Thanks in advance. Andrei const int nx = 1408; const int n = nx * (nx + 1) / 2; const int nz = 8192; TROOT sumofcubes ("sumofcubes","Sum Data of 3 Cubes"); struct { unsigned short sbuf[nz]; } buf1,buf2,buf3; struct { float fbuf[nz]; } buf4; int i, n1, n2, ix, iy, iz; TFile *F1 = new TFile("a1.root", "read"); TTree *Cube1 = (TTree*) F1->Get("Cube"); Cube1->SetBranchAddress("Spectrum", buf1.sbuf); TFile *F2 = new TFile("a2.root", "read"); TTree *Cube2 = (TTree*) F2->Get("Cube"); Cube2->SetBranchAddress("Spectrum", buf2.sbuf); TFile *F3 = new TFile("a3.root", "read"); TTree *Cube3 = (TTree*) F3->Get("Cube"); Cube3->SetBranchAddress("Spectrum", buf3.sbuf); TFile *FOUT = new TFile("as.root","recreate"); TTree *FCube = new TTree("FCube","SUM OF 3 Weeks"); TBranch *Spectrum = FCube->Branch("Spectrum",buf4.fbuf,"fbuf[8192]/F"); for(i = 0; i < n; ++i) { Cube1->GetEntry(i); Cube2->GetEntry(i); Cube3->GetEntry(i); for(iz = 0; iz < nz; ++iz) { buf4.fbuf[iz] = (float) buf1.sbuf[iz] + (float) buf2.sbuf[iz] + (float) buf3.sbuf[iz]; } FCube->Fill(); } FCube->Write(); F1->Close(); F2->Close(); F3->Close(); FOUT->Close(); } ---------------------------------------- Andrei Daniel FLNR, JINR, Dubna 141980, Russia Tel: (7-09621)64568 Fax: (7-09621)65083 daniel@cv.jinr.ru
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:27 MET