Could you add the statement marker //<====== in your code below and let me know the result. When are you browsing the file ? Do you have a Browse function in the class or do you use the one in TObject ? Rene Brun > To: roottalk@hpsalo.cern.ch > Content-Type: multipart/mixed; > boundary="------------D4DDC92CBB4B92FB7BDF0DCA" > Sender: <Santo.Vanadia@CT.INFN.IT> > From: Vanadia Santo <santo.vanadia@CT.INFN.IT> > Subject: Help in writing ROOT files > > This is a multi-part message in MIME format. > --------------D4DDC92CBB4B92FB7BDF0DCA > Content-Type: text/plain; charset=us-ascii > Content-Transfer-Encoding: 7bit > > Dear experts, > > we are using ROOT 2.22/10 on Linux RedHat 6.0 and we are experiencing a > funny problem in writing ROOT files. > In the attached macro we try to write ten object into the file, if you > inspect the first of them you'll see that it's correctly in > memory...when you try to browse the file you see the ten objects but > they are empty! > > Where are we wrong? Any help will be greatly appreciated > > Regards, Santo Vanadia > --------------D4DDC92CBB4B92FB7BDF0DCA > Content-Type: text/plain; charset=us-ascii; > name="hitsfile.C" > Content-Transfer-Encoding: 7bit > Content-Disposition: inline; > filename="hitsfile.C" > > void hitsfile (Int_t evNumber=0) > { > > // Dynamically link some shared libs > if (gClassTable->GetID("AliRun") < 0) { > gROOT->LoadMacro("loadlibs.C"); > loadlibs(); > } // end if gClassTable... > > // Connect the Root Galice file containing Geometry, Kine and Hits > TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root"); > if (!file) file = new TFile("galice.root"); > > // Get AliRun object from file or create it if not on file > if (!gAlice) { > gAlice = (AliRun*)file->Get("gAlice"); > if (gAlice) printf("AliRun object found on file\n"); > if (!gAlice) gAlice = new AliRun("gAlice","Alice test program"); > } > > // Import the Kine and Hits Trees for the event evNumber in the file > Int_t nparticles = gAlice->GetEvent(evNumber); > if (nparticles <= 0) return; > Float_t x,y,z,mass,e,r; > Int_t nbytes = 0; > Int_t j,hit,ipart; > Int_t nhits, n_hit, conta, hitcount; > Int_t layerno,ladderno,detno,indexno,flag; > TParticle *particle; > > AliITShit *itsHit; > AliITSmodule *itsMod; > > vett = new TObjArray(10000); > > > // Get pointers to Alice detectors and Hits containers > AliDetector *ITS = gAlice->GetDetector("ITS"); > TClonesArray *Particles = gAlice->Particles(); > > if (ITS) TClonesArray *ITShits = ITS->Hits(); > > TTree *TH = gAlice->TreeH(); > Int_t ntracks = TH->GetEntries(); > Int_t i=0, index=0; > > for (Int_t track=0; track<ntracks; track++) { > gAlice.ResetHits(); > nbytes += TH.GetEvent(track); > if (ITS) { > nhits = ITShits.GetEntriesFast(); > for (hit=0;hit<nhits;hit++) { > itsHit = (AliITShit*)ITShits.UncheckedAt(hit); > if (itsHit.fDestep > 0) { > index = itsHit.GetModule(); > itsMod = new AliITSmodule(index,itsHit.fLayer,itsHit.fLadder,itsHit.fDet,itsHit.fHitId); > vett.Add(itsMod); > > > } /* end if */ > } /* end for */ > } /* end if */ > } /* end for */ > > n_hit = vett.GetEntries(); > printf("Hits Total Number = %d\n",n_hit); > printf("Please Wait...\n"); > > > // Calcolo numero di hit per modulo (1..2270) > > for (Int_t k=1;k<2271;k++) { > conta = 0; > for (Int_t j=0; j<n_hit; j++) { > AliITSmodule *cursore = (AliITSmodule *)vett.At(j); > if (cursore.fIndex == k) conta++; > } > for (Int_t j=0; j<n_hit; j++) { > AliITSmodule *cursore = (AliITSmodule *)vett.At(j); > if (cursore.fIndex == k) cursore.fNhitsM = conta; > } > } > > file.Close(); > > printf("Done!\n"); > > TFile hfile("hitITS.root","RECREATE"); > > for (Int_t j=0; j<10; j++) { > AliITSmodule *w = (AliITSmodule *)vett.At(j); w->Dump(); //<============== > w.Write(); > } > hfile.ls(); //<=============== > hfile.Close(); > > AliITSmodule *v = (AliITSmodule *)vett.At(0); > > v.Inspect(); > > > > } > > --------------D4DDC92CBB4B92FB7BDF0DCA--
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:40 MET