Re: [ROOT] Problem exporting table from CINT

From: cstrato (cstrato@aon.at)
Date: Sun Feb 22 2004 - 17:02:05 MET


Dear Philippe, dear Masharu

Thank you, converting to double solved my problem.

Best regards
Christian

Philippe Canal wrote:
> Hi,
> 
> There is a slight problem in cint 5.15.123 with the handling of the
> typedef Double_t.  Cast to a double before sending to a stream
> (or use double instead of Double_t)
>      output << " " << (double)table[i][k];
> 
> Cheers,
> Philippe.
> 
> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
> [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of cstrato
> Sent: Saturday, February 21, 2004 2:35 PM
> To: roottalk@pcroot.cern.ch
> Subject: [ROOT] Problem exporting table from CINT
> 
> 
> Dear Rooters
> 
> The following macro exports the correct table when
> called from CINT as TestTable(0). However, calling
> TestTable(3) exports the following table:
>   0x1 0x2 0x3 0x3
>   0x1 0x2 0x3 0x4
>   0x1 0x2 0x3 0x5
> 
> In contrast, compilation with ACLiC gives the correct
> result for TestTable(3):
>   1.1 2.2 3.3 3
>   1.1 2.2 3.3 4
>   1.1 2.2 3.3 5
> 
> Is there a hidden problem in my code or is this a
> problem of CINT?
> 
> My system is ROOT 4.00/02 (1.Feb 20) on MacOS X 10.3.1.
> 
> Best regards
> Christian
> _._._._._._._._._._._._._._._._
> C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a
> V.i.e.n.n.a       A.u.s.t.r.i.a
> _._._._._._._._._._._._._._._._
> 
> //__________________________________________________________________________
> ____
> void TestTable(Int_t cut = 0)
> {
>     ofstream output("test.txt", ios::out);
> 
>     Int_t nrows = 6;
>     Int_t ncols = 4;
> 
> // Create table
>     Double_t **table = 0;
>     if (!(table = new Double_t*[nrows])) {goto cleanup;}
>     for (Int_t i=0; i<nrows; i++) {
>         table[i] = 0;
>        if (!(table[i] = new Double_t[ncols])) {goto cleanup;}
>     }//for_i
> 
> // Fill table
>     for (Int_t i=0; i<nrows; i++) {
>        for (Int_t k=0; k<ncols; k++) {
>           table[i][k] = (k==ncols-1) ? i : (k+1)*1.1;
> //         table[i][k] = i;
>        }//for_k
>     }//for_i
> 
> // Export table
>     for (Int_t i=0; i<nrows; i++) {
>        if (cut > 0 && (Int_t)(table[i][ncols-1]) < cut) continue;
> 
>        for (Int_t k=0; k<ncols; k++) {
>           output << " " << table[i][k];
>        }//for_k
>        output << endl;
>     }//for_i
> 
> // Cleanup
> cleanup:
>     for (Int_t i=0; i<nrows; i++) {
>        if (table[i]) {delete [] table[i]; table[i] = 0;}
>     }//for_i
>     if (table) delete [] table;
> 
>     output.close();
> }//TestTable
> 
> 
> 



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:06 MET