Re: macro problem

Rene Brun (Rene.Brun@cern.ch)
Thu, 03 Dec 1998 15:42:25 +0100


Hi Roberto,
In addition to the comments already posted on this list, you
can find in $ROOTSYS/tutorials/staff.C an example of macro
where we read many variables from one line. I am sure you will get
some inspiration.

Rene Brun

Dr. Roberto Barbera wrote:
>
> Hi experts,
>
> I've modified the tutorial macro basic.C to read an ASCII file
> containing several lines of 12 elements each (3 integers and 9 reals).
> Here is the macro i'm using:
>
> {
> //
> // A short macro to read the Detector Map file and store the data on
> some
> // useful vectors
> //
> //
>
> gROOT->Reset();
> gBenchmark->Start("readet");
>
> Int_t ilayer,iladder,idet;
> Int_t ncols;
> Int_t nlines = 0;
>
> Float_t f1,f2,f3,f4,f5,f6,f7,f8,f9;
>
> FILE *detfile = fopen("file.dat","r");
>
> if (detfile <= 0) printf("Error: file could not be open\n");
>
> printf("Reading Detector Map from file...\n");
>
> while (1) {
> ncols = fscanf(detfile,"%i %i %i %f %f %f %f %f %f %f %f
> %f",
> &ilayer,&iladder,&idet,&f1,&f2,&f3,&f4,&f5,&f6,&f7,&f8,&f9);
> if (ncols < 0) break;
> if (nlines < 5) {
> printf("%i %i %i %f %f %f %f %f %f %f %f %f \n",
> ilayer,iladder,idet,f1,f2,f3,f4,f5,f6,f7,f8,f9);
> }
> nlines++;
> }
> printf(" %i lines found \n",nlines);
> fclose(detfile);
> gBenchmark->Show("readet");
> gROOT->Reset();
> }
>
> and this is what i get when i run the macro inside ROOT:
>
> root [0] .x readet.C
> Reading Detector Map from file...
> Limitation: fscanf only takes upto 12 arguments
> FILE:/pcct54_hdb1/barbera/galice
> /v2.06pre/./readet.C LINE:34
> 0 lines found
> readet : Real Time = 0.02 seconds Cpu Time = 0.02 seconds
> root [1]
>
> It seems that no lines are read but they indeed ARE in the file. Any
> help will be greatly appreciated.
>
> ciao
>
> Roberto
>
> --
> Dr. Roberto Barbera (mailto:roberto.barbera@ct.infn.it)
> Phone: ++.39.095.71.95.232
> Fax: ++.39.095.38.30.23
> WWW: http://www.ct.infn.it/~barbera