]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/CreateESDChain.C
Adding method to create chain from list of files (for PROOF) + correction in correspo...
[u/mrichter/AliRoot.git] / PWG0 / CreateESDChain.C
index d572649afc57709f6a41cc952f651c4b37376de8..0524dc1b39fdd6f5f47f958d56e75899b19faf4e 100644 (file)
@@ -1,4 +1,4 @@
-TChain* CreateESDChain(const char* aDataDir, Int_t aRuns = 20, Bool_t aAddHeader = kTRUE)
+TChain* CreateESDChainFromDir(const char* aDataDir, Int_t aRuns = 20, Bool_t aAddHeader = kTRUE)
 {
   if (!aDataDir)
     return 0;
@@ -41,3 +41,53 @@ TChain* CreateESDChain(const char* aDataDir, Int_t aRuns = 20, Bool_t aAddHeader
 
   return chain;
 }
+
+TChain* CreateESDChainFromList(const char* listFile, Int_t aRuns = 20, Bool_t aAddHeader = kTRUE)
+{
+  if (!listFile)
+    return 0;
+
+  TChain* chain = new TChain("esdTree");
+  TChain* chaingAlice = 0;
+
+  if (aAddHeader != kFALSE)
+    chaingAlice = new TChain("TE");
+
+  // Open the input stream
+  ifstream in;
+  in.open(listFile);
+
+  Int_t count = 0;
+
+  // Read the input list of files and add them to the chain
+  TString esdfile;
+  while(in.good()) {
+    in >> esdfile;
+    if (!esdfile.Contains("root")) continue; // protection
+
+    if (count++ == aRuns)
+      break;
+
+      // add esd file
+    chain->Add(esdfile);
+
+      // add header
+    if (aAddHeader != kFALSE)
+    {
+      esdfile.ReplaceAll("AliESDs", "galice");
+      chaingAlice->Add(esdfile + "/TE");
+    }
+  }
+
+  in.close();
+
+  chain->Lookup();
+
+  if (aAddHeader != kFALSE)
+  {
+    chaingAlice->Lookup();
+    chain->AddFriend(chaingAlice);
+  }
+
+  return chain;
+}