1. Proper (?) handling of the branches in AliRawReaderChain. 2. New virtual GotoEvent...
[u/mrichter/AliRoot.git] / RAW / AliRawReader.cxx
index 6833844..fc7cb3e 100644 (file)
@@ -45,6 +45,7 @@
 #include "AliRawReaderFile.h"
 #include "AliRawReaderDate.h"
 #include "AliRawReaderRoot.h"
+#include "AliRawReaderChain.h"
 #include "AliDAQ.h"
 #include "AliLog.h"
 
@@ -188,17 +189,7 @@ AliRawReader* AliRawReader::Create(const char *uri)
   TString &fileURI = ((TObjString*)fields->At(0))->String();
 
   AliRawReader *rawReader = NULL;
-  if (!fileURI.BeginsWith("mem://")) {
-    AliInfoClass(Form("Creating raw-reader in order to read raw-data file: %s",fileURI.Data()));
-    if (fileURI.EndsWith("/")) {
-      rawReader = new AliRawReaderFile(fileURI);
-    } else if (fileURI.EndsWith(".root")) {
-      rawReader = new AliRawReaderRoot(fileURI);
-    } else {
-      rawReader = new AliRawReaderDate(fileURI);
-    }
-  }
-  else {
+  if (fileURI.BeginsWith("mem://")) {
     fileURI.ReplaceAll("mem://","");
     AliInfoClass(Form("Creating raw-reader in order to read events in shared memory (option=%s)",fileURI.Data()));
 
@@ -215,9 +206,25 @@ AliRawReader* AliRawReader::Create(const char *uri)
       rawReader = (AliRawReader*)pluginHandler->ExecPlugin(1,fileURI.Data());
     }
     else {
+      delete fields;
       return NULL;
     }
   }
+  else if (fileURI.BeginsWith("collection://")) {
+    fileURI.ReplaceAll("collection://","");
+    AliInfoClass(Form("Creating raw-reader in order to read raw-data files collection defined in %s",fileURI.Data()));
+    rawReader = new AliRawReaderChain(fileURI);
+  }
+  else {
+    AliInfoClass(Form("Creating raw-reader in order to read raw-data file: %s",fileURI.Data()));
+    if (fileURI.EndsWith("/")) {
+      rawReader = new AliRawReaderFile(fileURI);
+    } else if (fileURI.EndsWith(".root")) {
+      rawReader = new AliRawReaderRoot(fileURI);
+    } else {
+      rawReader = new AliRawReaderDate(fileURI);
+    }
+  }
 
   // Now apply event selection criteria (if specified)
   if (fields->GetEntries() > 1) {
@@ -474,6 +481,11 @@ Bool_t AliRawReader::ReadNextChar(UChar_t& data)
   return kTRUE;
 }
 
+Bool_t  AliRawReader::GotoEvent(Int_t event)
+{
+  Error("GotoEvent","Method not implemented! Nothing done");
+  return kFALSE;
+}
 
 Int_t AliRawReader::CheckData() const
 {