]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RAW/AliRawReaderFile.cxx
bug fixed
[u/mrichter/AliRoot.git] / RAW / AliRawReaderFile.cxx
index bc729820597a6ed6c4aa01c843b93cfaa4046994..e126d1010e4488e59e5373605d67202f957e4d94 100644 (file)
@@ -60,7 +60,8 @@ AliRawReaderFile::AliRawReaderFile(Int_t eventNumber) :
 // in the current directory
 
   fDirectory = OpenDirectory();
-  OpenNextFile();
+  if (!fDirectory) fIsValid = kFALSE;
+  if (!OpenNextFile()) fIsValid = kFALSE;
   fHeader = new AliRawDataHeader;
 
   fId[0] = fId[1] = 0;
@@ -86,7 +87,8 @@ AliRawReaderFile::AliRawReaderFile(const char* dirName, Int_t eventNumber) :
 // create an object to read digits from the given directory
 
   fDirectory = OpenDirectory();
-  OpenNextFile();
+  if (!fDirectory) fIsValid = kFALSE;
+  if (fEventIndex >= 0 && (!OpenNextFile())) fIsValid = kFALSE;
   fHeader = new AliRawDataHeader;
 
   fId[0] = fId[1] = 0;
@@ -166,11 +168,18 @@ Bool_t AliRawReaderFile::CreateFileIndex()
   while (entry = gSystem->GetDirEntry(fDirectory)) {
     const char* filename=entry.Data();
     if (!filename || entry.IsNull()) break;
+    if (entry.BeginsWith("run")) {
+      entry.ReplaceAll("run","");
+      fRunNb = entry.Atoi();
+      continue;
+    }
     if (!entry.EndsWith(".ddl")) continue;
     result=kTRUE;
     entry.Remove(0, entry.Last('_')+1);
     entry.Remove(entry.Length()-4);
     Int_t equipmentId = atoi(entry.Data());
+    Int_t ddlIndex = -1;
+    fDetectorPattern |= (1 << AliDAQ::DetectorIDFromDdlID(equipmentId,ddlIndex));
     if (fDDLIndex->GetSize()<=equipmentId) {
       fDDLIndex->Set(equipmentId+1);
     }
@@ -347,6 +356,7 @@ Bool_t AliRawReaderFile::NextEvent()
 
   if (fDDLIndex) delete fDDLIndex;
   fDDLIndex=NULL;
+  fDetectorPattern = 0;
   if (fEventIndex < -1) return kFALSE;
 
   do {