]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/EveDet/AliEveTRDLoaderImp.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTRDLoaderImp.cxx
index a433ba372e8064784e6e408393fe4b6367237eeb..e7132227e0d9c7ef3a61c680b56375419ecc6457 100644 (file)
@@ -9,7 +9,7 @@
 
 #include "AliEveTRDLoaderImp.h"
 #include "AliEveTRDModuleImp.h"
-#include "EveBase/AliEveEventManager.h"
+#include "AliEveEventManager.h"
 
 #include <TEveManager.h>
 
@@ -21,8 +21,9 @@
 #include "AliLog.h"
 #include "AliRun.h"
 #include "AliRunLoader.h"
-//#include "AliLoader.h"
 #include "AliTRDrawData.h"
+#include "AliTRDrawStream.h"
+#include "AliTRDdigitsManager.h"
 #include "AliRawReaderRoot.h"
 #include "AliRawReaderDate.h"
 
@@ -107,13 +108,13 @@ Bool_t    AliEveTRDLoaderSim::Open(const char *filename, const char *dir)
 
   if(fRunLoader) return kTRUE;
   
-  fRunLoader = AliRunLoader::GetRunLoader();
+  fRunLoader = AliRunLoader::Instance();
   if(!fRunLoader) fRunLoader = AliRunLoader::Open(filename,
          AliConfig::GetDefaultEventFolderName(),"read");
   if(!fRunLoader) return kFALSE;
 
   gAlice = fRunLoader->GetAliRun();
-  if(!gAlice) fRunLoader->LoadgAlice();
+  if(!gAlice && fRunLoader->LoadgAlice()) return kFALSE;
   if(!gAlice) return kFALSE;
  
   fFilename = filename;
@@ -133,11 +134,11 @@ Bool_t    AliEveTRDLoaderSim::Open(const char *filename, const char *dir)
 
 //______________________________________________________________________________
 AliEveTRDLoaderRaw::AliEveTRDLoaderRaw(const Text_t* n, const Text_t* t) :
-  AliEveTRDLoader(n, t),
-  fRawDateReader (0),
-  fRawRootReader (0),
-  fRaw           (0),
-  fEventOld      (-1)
+  AliEveTRDLoader(n, t)
+  ,fRawDateReader (0x0)
+  ,fRawRootReader (0x0)
+  ,fRaw           (0x0)
+  ,fEventCnt(-1)
 {
   // Constructor.
 }
@@ -174,6 +175,9 @@ Bool_t AliEveTRDLoaderRaw::GoToEvent(int ev)
 {
   // Go to given event.
 
+  //AliInfo(Form("Event %d %d %d", ev, fEvent, fEventCnt));
+
+
   if(!fChildren.size()){
     AliWarning("Please select first the chamber that you want to monitor from \"Chamber(s) selector\".");
     return kFALSE;
@@ -182,65 +186,72 @@ Bool_t AliEveTRDLoaderRaw::GoToEvent(int ev)
   static const TEveException kEH("AliEveTRDLoader::GotoEvent ");
   if(fRawRootReader == 0x0) throw(kEH + "data file not opened.");
 
-
-  if(ev == fEventOld) return kTRUE;
-  Bool_t checkEnd;
-  if(ev < fEventOld) {
+  fEvent = ev;
+  if(ev == fEventCnt) return kTRUE;
+  if(ev < fEventCnt) {
     fRawRootReader->RewindEvents();
-    fEventOld = -1;
-    checkEnd = kFALSE;
-  } else checkEnd = kTRUE;
+    fEventCnt = -1;
+  }
 
-  do NextEvent(); while(fEventOld != ev && !(checkEnd == kTRUE && fEventOld == 0));
+  Bool_t FOUND = kFALSE;
+  while(fRawRootReader->NextEvent()){ 
+    fEventCnt++;
+    if(fEventCnt == ev){
+      FOUND = kTRUE;
+      break;
+    }  
+  }
+  if(!FOUND) return kFALSE;
+  
   LoadEvent();
   gEve->Redraw3D();
 
   return kTRUE;
 }
 
+
 //______________________________________________________________________________
 Bool_t AliEveTRDLoaderRaw::LoadEvent()
 {
   // Load event.
-
-  Info("LoadEvent()", "Loading ...");
+  AliInfo("Loading ...");
 
   static const TEveException kEH("AliEveTRDLoader::LoadEvent ");
   if(fRawRootReader == 0x0) throw(kEH + "data file not opened.");
 
 
   fRawRootReader->Reset();
+  fRawRootReader->SelectEquipment(0, 1024, 1041);
+  fRawRootReader->Select("TRD");
+  
+//   AliTRDrawStream::AllowCorruptedData();
+//   AliTRDrawStream::DisableStackNumberChecker();
+//   AliTRDrawStream::DisableStackLinkNumberChecker();
+
+  AliTRDrawStream *pinput = new AliTRDrawStream(fRawRootReader);
+  AliTRDrawStream &input = *pinput;
+
+ // AliInfo(Form("Stream version: %s", input.IsA()->GetName()));
 
   AliEveTRDChamber *chmb;
-  AliTRDdigitsManager *dm;
-  dm = fRaw->Raw2Digits(fRawRootReader);
+  AliTRDdigitsManager *dm = new AliTRDdigitsManager();
+  dm->CreateArrays();
 
-  for(int idet=0; idet<540; idet++){
-    if(!(chmb=GetChamber(idet))) continue;
+  Int_t det    = 0;
+  while ((det = input.NextChamber(dm)) >= 0){
+    if(!(chmb=GetChamber(det))) continue;
     chmb->LoadDigits(dm);
+
+    dm->RemoveDigits(det);
+    dm->RemoveDictionaries(det);
+    dm->ClearIndexes(det);
   }
-  return kTRUE;
-}
 
-//______________________________________________________________________________
-Bool_t AliEveTRDLoaderRaw::NextEvent(Bool_t rewindOnEnd)
-{
-  // Go to next event.
 
-  static const TEveException kEH("AliEveTRDLoader::NextEvent ");
-  if(fRawRootReader == 0x0) throw(kEH + "data file not opened.");
+  delete pinput;
+  pinput = NULL;
 
 
-  if(fRawRootReader->NextEvent() == kTRUE) ++fEventOld;
-  else {
-    if(fEventOld == -1) throw(kEH + "no events available.");
-    if(rewindOnEnd) {
-      Warning("NextEvent()", Form("Reached end of stream (event=%d), rewinding to first event.", fEventOld));
-      fRawRootReader->RewindEvents();
-      fRawRootReader->NextEvent();
-      fEventOld = 0;
-    } else throw(kEH + "last event reached.");
-  }
   return kTRUE;
 }
 
@@ -292,7 +303,7 @@ void AliEveTRDLoaderSimEditor::SetModel(TObject* obj)
 {
   // Set model object.
 
-  fM = dynamic_cast<AliEveTRDLoaderSim*>(obj);
+  if(!(fM = dynamic_cast<AliEveTRDLoaderSim*>(obj))) return;
 
   Bool_t kRL   = (fM->IsDataLinked()) ? kTRUE : kFALSE;
 
@@ -326,3 +337,4 @@ void AliEveTRDLoaderSimEditor::Toggle(Int_t id)
     break;
   }
 }
+