Hi Dimitris, In your program below, when you close the file (f->Close()), all objects like TH1 and TTree associated with this file in memory are automatically deleted. You should not have the statement "delete tree" after "f->Close(): You can place this statement before f->Close(), but this is not necessary. Rene Brun > Dr. D. Sideris wrote: > > Hi, I'm trying to use root for a simple application but it seems the moment I > solve one problem a new one occures... That's not by any means a problem of > ROOT, it could be just me. Now after I solved several problems by magic... > (for some reason VC++ didn't like 'cout' inside my class) I've run into a new > problem. I create a tree and a branch, I fill it and tree->Print() gives a > reasonable output, but when I do f->Write(); (f is my TFile) I get: > > <CustomReAlloc2>: passed oldsize 1032, should be 17694850 > Fatal in <CustomReAlloc2>: unreasonable size (17694850) > aborting > Warning in <TWinNTSystem::StackTrace>: this method must be overridden! > Press any key to continue > > > I paste the function below, in case someone has a usefull sugestion. Thanks > > > > Dimitris > > > Int_t Global::ReadAscii() > { > int pixel=0,totpixels_f=0,p=0,cutim=0,rtim=0; > float v[300]={0},v0=0,cur[4000]={0}; > int nlines = 0; > > > int nic[3000]={0},totic=0; > float avi=0.,invavi=0,ic[4000]={0},tic[4000]={0}; > > int split = 0; > int bsize =256000; > > // ifstream fout,fcur; > > ifstream *fout = new ifstream; > ifstream *fcur = new ifstream; > > tim=0; > > // Create a ROOT Tree > > A *a = new A; > TFile *f = new TFile("A.root","recreate"); > tree = new TTree("T","An example of ROOT tree"); > tree->Branch("aa","A",&a,bsize,split); > > > Float_t rtim_period=Float_t(0.7); > > int mintim=400000; > int maxtim=0; > Float_t ti=Float_t(10.003); > > > > // FILE *fout=fopen("test.out","r"); > // FILE *fcur=fopen("test2.cur","r"); > fout->open("test.out", ios::in); > fcur->open("test2.cur", ios::in); > > int i=0; > int ncols=0; > > while (1) { > // ncols=fscanf(fcur,"%i %f",&nic[i],&ic[i]); > *fcur >> nic[i] >> ic[i]; > if (!fcur->good()) break; > ic[i]*=1000; > avi+=ic[i]; > if (ic[i]==0) ic[i]=149.5; > invavi+=1/ic[i++]; > } > > > totic=i; > avi=avi/float(totic); > invavi=invavi/float(totic); > > > > if (avi==0.) { > *logf << "WARNING: No Current Info Available\n" <<endl; > > } else { > *logf << "Average Current= " << avi << '\n' <<endl; > tic[0]=ti; > ic[0]=avi; > for(i=1;i<=totic;i++){ > if(ic[i]==0.) ic[i]=avi; > tic[i]=(tic[i-1]+(1/ic[i]+1/ic[i-1])/2*avi*ti); > } > } > > > > int pi=1; > int tim2=0; > > pixel=0; > a->rv[0]=0; > v[0]=0; > > while (tim<100) { > > // ncols=fscanf(fout,"%i %f %i",&pixel,&v[pixel+1],&totpixels_f); > > *fout >> pixel >> v[pixel+1] >> totpixels_f ; > if (!fout->good()) break; > > // if (ncols<0) break; > > > a->rv[pixel+1]=v[pixel+1]; > > cutim=int(tim/ti+1); > > if (cutim>totic) { > cur[pixel+1]=ic[totic]; > } else { > cur[pixel+1]=ic[cutim]; > } > > > rtim=int((float(tim)-float(cutim)*ti)/ti*(tic[cutim+1]-tic[cutim])+tic[cutim]); > > > a->time=tim; > // a->rtime=rtim; > if (pi==256) { > if (pixel!=255) { > *logf << "Mismach in reading file. STOP\n" <<endl; > break; > } > > > > if (tim<mintim || tim>maxtim) { > tree->Fill(); > tim2++; > if (int(tim2/1000.)==tim2/1000.) *logf << ".. " << tim2 <<'\n' <<endl; > } > tim++; > pi=0; > > if (int(tim/1000.)==tim/1000.) *logf << ".. " << tim2 << '\n' <<endl; > } > pi++; > > nlines++; > } > > *logf << " found " << nlines << " points\n" <<endl; > > tree->Print(); > f->Write(); > > *logf << "here1\n" << endl; > *logf << "here2\n" << endl; > fout->close(); > *logf << "here3\n" << endl; > fcur->close(); > > /// *logf << "here4\n" << endl; > f->Close(); > *logf << "here5\n" << endl; > delete tree; > delete a; > delete f; > // delete fout; > // delete fcur; > *logf << "END\n" << endl; > // logf->close(); > return 0; > } > > > > >
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:37 MET