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