+Int_t AliJetParticlesReaderESD::ReadNext()
+{
+ //reads next event from fFile
+
+ do // is OK even if 0 dirs specified,
+ { // in that case we try to read from "./"
+ if (fFile == 0)
+ {
+ fFile = OpenFile(fCurrentDir);
+ if (fFile == 0)
+ {
+ Error("ReadNext","Can't get fFile for dir no. %d",fCurrentDir);
+ fCurrentDir++;
+ continue;
+ }
+
+ fCurrentEvent = 0;
+ //fFile->GetListOfKeys()->Print();
+
+ if(fTree) delete fTree;
+ fTree = dynamic_cast<TTree*>(fFile->Get("esdTree"));
+ if(fTree)
+ fTree->SetBranchAddress("ESD",&fESD);
+ else
+ fKeyIterator = new TIter(fFile->GetListOfKeys());
+ }
+
+ if(fTree)
+ {
+ if(AliKalmanTrack::GetConvConst()<=0.)
+ AliKalmanTrack::SetMagneticField(0.5);
+ if(fCurrentEvent>=fTree->GetEntries())
+ {
+ fCurrentDir++;
+ delete fTree;
+ fTree = 0;
+ delete fFile;
+ fFile = 0;
+ continue;
+ }
+ fTree->GetEvent(fCurrentEvent);
+ }
+ else
+ { // "old" way via ESD objects stored in root file
+ TKey* key = (TKey*)fKeyIterator->Next();
+ if (key == 0)
+ {
+ fCurrentDir++;
+ delete fKeyIterator;
+ fKeyIterator = 0;
+ delete fFile; //we have to assume there are no more ESD objects in the fFile
+ fFile = 0;
+ continue;
+ }
+ TString esdname = "ESD";
+ esdname+=fCurrentEvent;
+ if(fESD) delete fESD;
+ fESD = dynamic_cast<AliESD*>(fFile->Get(esdname));
+ if (fESD == 0)
+ {
+ Info("ReadNext","Can't find AliESD object named %s",esdname.Data());
+ fCurrentDir++;
+ delete fKeyIterator;
+ fKeyIterator = 0;
+ delete fFile;//we have to assume there is no more ESD objects in the fFile
+ fFile = 0;
+ continue;
+ }
+ }
+ ReadESD(fESD);
+ fCurrentEvent++;
+ fNEventsRead++;
+ return kTRUE;//success -> read one event
+ } while(fCurrentDir < GetNumberOfDirs());
+ //end of loop over directories specified in fDirs Obj Array
+ return kFALSE; //no more directories to read
+}
+
+/**********************************************************/
+