Dear all,
I'm facing a major problem reading back data from root files.
I created a skeleton using the MakeClass Method. Deriving from this, I use
a simple code like:
#define muonana2_cxx
#include "muonana2.h"
#include "TH2.h"
#include "TF1.h"
#include "TStyle.h"
#include "TCanvas.h"
#include "TMath.h"
#include "TGraphErrors.h"
#include <iostream>
using namespace std;
void muonana2::Loop()
{
if (fChain == 0) return;
Int_t nentries = Int_t(fChain->GetEntriesFast());
Int_t nbytes = 0, nb = 0;
for (Int_t jentry=0; jentry<10;jentry++) {
Int_t ientry = LoadTree(jentry);
if (ientry < 0) break;
b_event_ntrack->GetEntry(ientry);
b_frecTracks_id->GetEntry(ientry);
b_frecTracks_e->GetEntry(ientry);
b_frecTracks_costh->GetEntry(ientry);
b_frecTracks_phi->GetEntry(ientry);
b_fgenTracks_id->GetEntry(ientry);
b_fgenTracks_costh->GetEntry(ientry);
b_fgenTracks_phi->GetEntry(ientry);
b_fgenTracks_e->GetEntry(ientry);
cout << "phi: " << frecTracks_phi[1] << " cos(theta): " <<
frecTracks_costh[1] << endl;
}
}
Which gives the following results:
phi: 0.725436 cos(theta): 0.865058
phi: 1.97669 cos(theta): 2.01212
phi: 1.95156 cos(theta): 1.68802
phi: 1.94538 cos(theta): 1.95107
phi: 1.66711 cos(theta): 1.64055
phi: 1.94412 cos(theta): 1.94372
phi: 1.96575 cos(theta): 2.11176
phi: 0.405632 cos(theta): 0.404347
phi: 0.517295 cos(theta): 0.571443
phi: 0.480233 cos(theta): 0.318776
phi looks ok, but fgenTracks_costh[1] seems to be rubbish:
root [4] T->Scan("frecTracks.costh[1]","","",10,0);
************************
* Row * frecTrack *
************************
* 0 * 0.3106747 *
* 1 * 0.9214717 *
* 2 * 0.9433813 *
* 3 * 0.9216736 *
* 4 * 0.9338010 *
* 5 * 0.9204052 *
* 6 * 0.9386273 *
* 7 * 0.6487550 *
* 8 * 0.6157632 *
* 9 * 0.6854105 *
************************
If I now change the position of the GetEntry() commands to for example:
b_event_ntrack->GetEntry(ientry);
b_frecTracks_id->GetEntry(ientry);
b_frecTracks_e->GetEntry(ientry);
b_frecTracks_phi->GetEntry(ientry);
b_fgenTracks_id->GetEntry(ientry);
b_fgenTracks_costh->GetEntry(ientry);
b_fgenTracks_phi->GetEntry(ientry);
b_fgenTracks_e->GetEntry(ientry);
b_frecTracks_costh->GetEntry(ientry);
now frecTracks_costh is okay, but frecTracks_phi disagrees with a Scan.
I tried out the other version given in the MakeClass code
(fChain->SetBranchStatus("variable",1); and nb = fChain->GetEntry(jentry);
nbytes += nb;), but without any success (same problem).
Furthermore I tried on Linux (SuSE 8.1) running root 3.10/02 and on Mac OS
X running root 3.05/05 - the results are the same.
Now I'm really stuck. Has anybody any idea how to read back *ALL* data
correctly?
I put the root-file I used on
http://www.atlas.uni-wuppertal.de/~harenber/Event.root
Thanks a lot!!!
Torsten
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
<> <>
<> Torsten Harenberg harenberg@physik.uni-wuppertal.de <>
<> Bergische Universitaet <>
<> FB C - Physik Tel.: +49 (0)202 439-3521 <>
<> Gaussstr. 20 Fax : +49 (0)202 439-2811 <>
<> 42097 Wuppertal <>
<> <>
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET