#include <TSystemDirectory.h>
#include <TString.h>
#include <TObjString.h>
+#include <TObjArray.h>
#include <TProcessID.h>
#include "AliESDInputHandlerRP.h"
//______________________________________________________________________________
AliESDInputHandlerRP::AliESDInputHandlerRP() :
AliESDInputHandler(),
- fRTrees( new TList()),
+ fRTrees( new TObjArray()),
fRFiles( new TList()),
fDetectors(new TList()),
fDirR(0),
fEventNumber(-1),
- fNEvent(-1),
fFileNumber(0),
fEventsPerFile(0),
fExtension(""),
//______________________________________________________________________________
AliESDInputHandlerRP::AliESDInputHandlerRP(const char* name, const char* title):
AliESDInputHandler(name, title),
- fRTrees( new TList()),
+ fRTrees( new TObjArray()),
fRFiles( new TList()),
fDetectors(new TList()),
fDirR(0),
fEventNumber(-1),
- fNEvent(-1),
fFileNumber(0),
fEventsPerFile(0),
fExtension(""),
TIter next(fDetectors);
TNamed* det;
TFile* file = 0;
- while (det = ((TNamed*) next()))
+ while ((det = (TNamed*) next()))
{
if (!fIsArchive) {
file = TFile::Open(Form("%s%s.RecPoints.root", fPathName->Data(), det->GetName()));
} else {
file = TFile::Open(Form("%s#%s.RecPoints.root", fPathName->Data(), det->GetName()));
}
- if (!file) AliFatal(Form("AliESDInputHandlerRP: TPC.RecPoints.root not found in %s ! \n", fPathName->Data()));
+ if (!file) AliFatal(Form("AliESDInputHandlerRP: %s.RecPoints.root not found in %s ! \n", det->GetName(), fPathName->Data()));
fRFiles->Add(file);
}
- fEventsPerFile = file->GetNkeys() - file->GetNProcessIDs();
+
+ if (file) {
+ fEventsPerFile = file->GetNkeys() - file->GetNProcessIDs();
+ } else {
+ AliFatal(Form("AliESDInputHandlerRP: No file with RecPoints found in %s ! \n", fPathName->Data()));
+ }
+
+
// Reset the event number
fEventNumber = -1;
fFileNumber = 0;
// Get number of events from esd tree
- fNEvent = fTree->GetEntries();
-
- printf("AliESDInputHandler::Init() %d\n",__LINE__);
+ printf("AliESDInputHandler::Init() %d %d\n",__LINE__, fNEvents);
return kTRUE;
}
fEventNumber = entry;
}
- if (entry >= fNEvent) {
- AliWarning(Form("AliESDInputHandlerRP: Event number out of range %5d %5d\n", entry, fNEvent));
+ if (entry >= fNEvents) {
+ AliWarning(Form("AliESDInputHandlerRP: Event number out of range %5d %5d\n", entry, fNEvents));
return kFALSE;
}
return LoadEvent(entry);
// Tree R
TIter next(fRFiles);
TFile* file;
- while (file = ((TFile*) next()))
+ Int_t idx = 0;
+
+ while ((file = (TFile*) next()))
{
file->GetObject(folder, fDirR);
if (!fDirR) {
AliWarning(Form("AliESDInputHandlerRP: Event #%5d not found\n", iev));
return kFALSE;
}
- TTree* tree;
- fDirR ->GetObject("TreeR", tree);
- fRTrees->Add(tree);
- tree->ls();
+ TTree* tree = 0;
+ fDirR->GetObject("TreeR", tree);
+ fRTrees->AddAt(tree, idx++);
}
return kTRUE;
}
TIter next(fDetectors);
TNamed* det;
TFile* file;
- while (det = ((TNamed*) next()))
+ while ((det = (TNamed*) next()))
{
if (!fIsArchive) {
file = TFile::Open(Form("%s%s.RecPoints%s.root", fPathName->Data(), det->GetName(), fExtension));
if (fPathName->Contains(".zip")) fIsArchive = kTRUE;
TSeqCollection* members;
+
if (fIsArchive) {
// Archive
TSystemDirectory dir(".", fPathName->Data());
members = dir.GetListOfFiles();
}
-
+
TIter next(members);
TFile* entry;
Int_t ien = 0;
+ fDetectors->Delete();
+
while ( (entry = (TFile*) next()) )
{
- printf("File %s \n", entry->GetName());
TString name(entry->GetName());
TObjArray* tokens = name.Tokenize(".");
Int_t ntok = tokens->GetEntries();
TString str = ((TObjString*) tokens->At(1))->GetString();
if (!(strcmp(str.Data(), "RecPoints"))){
TString det = ((TObjString*) tokens->At(0))->GetString();
- printf("Name %s \n", det.Data());
- TNamed* entry = new TNamed(det.Data(), det.Data());
- entry->SetUniqueID(ien++);
- fDetectors->Add(entry);
+ printf("Found file with RecPoints for %s \n", det.Data());
+ TNamed* ent = new TNamed(det.Data(), det.Data());
+ fRTrees->AddAt(0, ien);
+ ent->SetUniqueID(ien++);
+ fDetectors->Add(ent);
}
} // loop over files
-
+
// Now we have the path and the list of detectors
InitIO("");
// Some clean-up
members->Delete();
- //
+
return kTRUE;
}
void AliESDInputHandlerRP::ResetIO()
{
// Delete trees and files
- fRTrees->Delete();
fRFiles->Delete();
fExtension="";
}
-TTree* AliESDInputHandlerRP::GetTreeR(char* det)
+TTree* AliESDInputHandlerRP::GetTreeR(const char* det)
{
// Return pointer to RecPoint tree for detector det
TNamed* entry = (TNamed*) (fDetectors->FindObject(det));