Reinhardt,
Instead of
h2root r222.rz h2root.root 0
could you do
h2root r222.rz h2root.root 0 1 0 8000 0
the parameters are explained when executing h2root with no arguments
h2root
===> h2root file.hbook file.root [compress] [tolower] [lrecl] [bufsize]
[optcwn]
if file.root is not given it will be = file.root
compress = 1 by default (use 0 for no compression)
tolower = 1 by default (use 0 to keep case of column names)
lrecl =0 by default (must be specified if >8092)
bufsize = 8000 by default (branch buffer size)
for cwn ntuple only: optcwn = 1 (default) 1-byte int -> char, 2-byte int
-> short, (use 0 to keep 4-byte int)
It is likewly that your original PAW ntuple had a bit compression specified.
The new h2root converts short integers from PAW to a char or short C++ type
if possible. If this is the case, you should change the definition
of your C++ variables from int to short or char.
Rene Brun
Reinhardt Chamonal wrote:
>
> Hi,
> Since we installed the new version of root v4/08 (an update from v4/01)
> h2root doesn't seem to convert my .rz ntuples properly.
> here is what I do:
>
> h2root r222.rz h2root.root 0
>
> Now, on an old converted file (with version 4/01) my program runs fine. I
> however noticed that the program was failling to properly read the
> branches on newly converted files. So I deleted the old converted file and
> replaced it with a new to check it wasn't jsut this file.
> I have now the same problem with my new converted file:
> it does the conversion but when I run my program
> it dosen't seem to be able to read the entries properly anymore. (I have
> been stupid as I should had renamed my old version as a reference)
> Here is the code.. he doesn't seem to be able to fullfil my if statement.
> where I have a cout command.. (which worked on the old converted
> file before)
>
> const long cc=40000;
> float norm[cc];
>
> int pixid[cc];
> int pdid[cc];
> int dc;
> TBranch* b_nch=t->GetBranch("nch");
> TBranch* b_norm=t->GetBranch("norm");
> TBranch* b_pdid=t->GetBranch("pdid");
> TBranch* b_pixid=t->GetBranch("pixid");
>
> b_nch->SetAddress(&dc);
> b_norm->SetAddress(norm);
> b_pixid->SetAddress(pixid);
> b_pdid->SetAddress(pdid);
>
> for(int i=0;i<ne;i++){
> if (((i+1) % 1000) == 0) cout<<i+1<<endl;
> t->LoadTree(i);
> b_nch->GetEntry(i);
> b_norm->GetEntry(i);
> b_pixid->GetEntry(i);
> b_pdid->GetEntry(i);
> for(int j=0;j<dc;j++) {
> for(int k=1;k<=64;k++){
>
> if (pixid[j]==k &&pdid[j]==3){
>
> MaPMT3[k-1][i]=norm[j];
> cout<<"MaPMT["<<k-1<<"]["<<i<<"]:"<<norm[j]<<endl;
>
> }
> }
> }
> }
>
> I know it's a bit vague but could it be that there is a conflict with the
> new version of root ? Or am I being stupid somewhere. I tought I ask you
> before annoying my sys-admin with a request to go back to the old version of root.
>
> Cheers
>
> --
> ------------------------------------------------------------
> Reinhardt CHAMONAL The University of Edinburgh
> School of Physics
> email: chamonal@ph.ed.ac.uk King's Buildings, JCMB, 5301
> Mayfield Road
> phone: +44-131-650 5307 Edinburgh, EH9 3JZ
>
> web: http://www.ph.ed.ac.uk/~chamonal/
> http://www.reuh.ovh.org
> ------------------------------------------------------------
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:10 MET