]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
fix digits vizualization
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 3 Jun 2008 13:46:04 +0000 (13:46 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 3 Jun 2008 13:46:04 +0000 (13:46 +0000)
and raw data browsing
:wq

EVE/EveDet/AliEveTRDData.cxx
EVE/EveDet/AliEveTRDData.h
EVE/EveDet/AliEveTRDLoaderImp.cxx
EVE/EveDet/AliEveTRDLoaderImp.h
EVE/EveDet/AliEveTRDModuleImp.cxx

index 5bc7178db4b8fbacfc3c300d55f46714f36a035f..84a12438db10da9d406c0863c1a003c3cf050254 100644 (file)
@@ -25,6 +25,8 @@
 #include "AliTRDtrackerV1.h"
 #include "AliTRDpadPlane.h"
 #include "AliTRDdigitsManager.h"
+#include "AliTRDdataArrayDigits.h"
+#include "AliTRDSignalIndex.h"
 #include "AliTRDgeometry.h"
 #include "AliTRDtransform.h"
 #include "AliTRDReconstructor.h"
@@ -62,13 +64,17 @@ void AliEveTRDDigits::ComputeRepresentation()
   // - digits threshold
   // - digits apparence (quads/boxes)
 
+  if(!fData.HasData()){
+    return;
+  }
+
   TEveQuadSet::Reset(TEveQuadSet::kQT_RectangleYZ, kTRUE, 64);
 
   Double_t scale, dy, dz;
   Int_t q, color;
-  Int_t nrows = fParent->fNrows,
-        ncols = fParent->fNcols,
-        ntbs  = fParent->fNtime,
+  Int_t nrows = fData.GetNrow(),
+        ncols = fData.GetNcol(),
+        ntbs  = fData.GetNtime(),
         det   = fParent->GetID();
   Float_t threshold = fParent->GetDigitsThreshold();
 
@@ -114,14 +120,34 @@ void AliEveTRDDigits::SetData(AliTRDdigitsManager *digits)
 {
   // Set data source.
 
-  fData.Allocate(fParent->fNrows, fParent->fNcols, fParent->fNtime);
-  //   digits->Expand();
-  for (Int_t  row = 0;  row <  fParent->fNrows;  row++)
-    for (Int_t  col = 0;  col <  fParent->fNcols;  col++)
-      for (Int_t time = 0; time < fParent->fNtime; time++) {
-        if(digits->GetDigitAmp(row, col, time, fParent->GetID()) < 0) continue;
-        fData.SetDataUnchecked(row, col, time, digits->GetDigitAmp(row, col, time, fParent->GetID()));
+  Int_t det = fParent->GetID();
+  AliTRDdataArrayDigits *data = digits->GetDigits(det);
+  if(!data->HasData()) return;
+  data->Expand();
+
+  AliTRDSignalIndex *indexes = digits->GetIndexes(det);
+  if(!indexes->IsAllocated()) digits->BuildIndexes(det);
+
+  if(!fData.HasData()) fData.Allocate(data->GetNrow(), data->GetNcol(), data->GetNtime());
+  fData.Expand();
+
+  Int_t row, col, time, adc;
+  indexes->ResetCounters();
+  while (indexes->NextRCIndex(row, col)){
+    indexes->ResetTbinCounter();
+    while (indexes->NextTbinIndex(time)){
+      if(data->IsPadCorrupted(row, col, time)){
+        // we should mark this position
+        break;
       }
+      adc = data->GetData(row, col, time);
+      if(adc <= 1) continue;
+      fData.SetDataUnchecked(row, col, time, adc);
+      //fIndex->AddIndexTBin(row,col,time);
+      //printf("\tr[%d] c[%d] t[%d] ADC[%d]\n", row, col, time, adc);
+    } 
+  }
+  fData.Compress(1);
 }
 
 
@@ -306,6 +332,7 @@ AliEveTRDTrack::AliEveTRDTrack(AliTRDtrackV1 *trk) : TEveLine()
 
   AliTRDtrackerV1::FitRiemanTilt(trk, 0x0, kTRUE, nc, points);
   //AliTRDtrackerV1::FitKalman(trk, 0x0, kFALSE, nc, points);
+  //AliTRDtrackerV1::FitLine(trk, 0x0, kFALSE, nc, points);
 
   Float_t global[3];
   for(Int_t ip=0; ip<nc; ip++){
index 0cb811333b5956be8476d6fea4eb59219b57e4ab..e94ae686b63217ceba642161f5130905c75301c1 100644 (file)
@@ -55,6 +55,7 @@ public:
   ~AliEveTRDDigits();
 
   void                 ComputeRepresentation();
+  const AliTRDdataArrayI*      GetData() const {return fData.GetNelems() ? &fData : 0x0;}
   void                 Paint(Option_t *opt="");
   void                 Reset();
   void                 SetData(AliTRDdigitsManager *digits);
index a433ba372e8064784e6e408393fe4b6367237eeb..58a1894b60ead77484c0aabad34bb5fa0c2f7c3c 100644 (file)
@@ -23,6 +23,9 @@
 #include "AliRunLoader.h"
 //#include "AliLoader.h"
 #include "AliTRDrawData.h"
+#include "AliTRDrawStreamTB.h"
+#include "AliTRDrawStreamBase.h"
+#include "AliTRDdigitsManager.h"
 #include "AliRawReaderRoot.h"
 #include "AliRawReaderDate.h"
 
@@ -133,11 +136,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 +177,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,28 +188,35 @@ 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.");
@@ -211,36 +224,37 @@ Bool_t AliEveTRDLoaderRaw::LoadEvent()
 
   fRawRootReader->Reset();
 
+  AliTRDrawStreamBase::SetRawStreamVersion(AliTRDrawStreamBase::kTRDrealStream);
+  AliTRDrawStreamTB::AllowCorruptedData();
+  AliTRDrawStreamTB::DisableStackNumberChecker();
+  AliTRDrawStreamTB::DisableStackLinkNumberChecker();
+
+  AliTRDrawStreamBase *pinput = AliTRDrawStreamBase::GetRawStream(fRawRootReader);
+  AliTRDrawStreamBase &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.
+  delete dm;
+  dm = NULL;
 
-  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;
 }
 
index ab078951bf4cbf8e0ca15ebfd2d735d07d17634b..59ab9538fbc016f657effae50d8021f72ee7c299 100644 (file)
@@ -56,7 +56,7 @@ public:
   virtual ~AliEveTRDLoaderRaw() {}
 
   Bool_t       GoToEvent(int ev);
-  Bool_t  NextEvent(Bool_t rewindOnEnd=kTRUE);
+  //Bool_t  NextEvent(Bool_t rewindOnEnd=kTRUE);
   Bool_t       Open(const char *file, const char *dir=".");
 
 private:
@@ -64,8 +64,8 @@ private:
 
   AliRawReaderDate     *fRawDateReader; // raw data reader
   AliRawReaderRoot     *fRawRootReader; // raw root reader
-  AliTRDrawData                *fRaw;           // raw data
-  Int_t                         fEventOld;      // old event
+  AliTRDrawData                  *fRaw;           // raw data
+  Int_t             fEventCnt;       // event contor
 
   AliEveTRDLoaderRaw(const AliEveTRDLoaderRaw&);            // Not implemented
   AliEveTRDLoaderRaw& operator=(const AliEveTRDLoaderRaw&); // Not implemented
index e5a63755f9ed0d14c3870509b8cbf92d64a5b288..f4d8ef6cfc3edef4960299388d00c1f320153823 100644 (file)
@@ -264,13 +264,15 @@ void AliEveTRDChamber::LoadClusters(TObjArray *clusters)
   Float_t q;
   Float_t g[3]; //global coordinates
   AliTRDcluster *c=0x0;
-  for(int iclus=0; iclus<clusters->GetEntriesFast(); iclus++){
+  Int_t nc = clusters->GetEntriesFast();
+  for(int iclus=0; iclus<nc; iclus++){
     c = (AliTRDcluster*)clusters->UncheckedAt(iclus);
     c->GetGlobalXYZ(g); 
     q = c->GetQ();
     Int_t id = fRecPoints->SetNextPoint(g[0], g[1], g[2]);    
     fRecPoints->SetPointId(id, new AliTRDcluster(*c));
   }
+  fRecPoints->SetStamp(TEveElement::kCBObjProps);
   fLoadRecPoints = kTRUE;
 }
 
@@ -284,12 +286,13 @@ void AliEveTRDChamber::LoadDigits(AliTRDdigitsManager *digits)
     AliError(Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet));
     return;
   }
-  // Info("LoadDigits()", Form("digits =0x%x", digits));
 
   if(!fDigits) AddElement(fDigits = new AliEveTRDDigits(this));
 
   fDigits->Reset();
   fDigits->SetData(digits);
+  fDigits->SetStamp(TEveElement::kCBObjProps);
+  fDigitsNeedRecompute = kTRUE;  
   fLoadDigits = kTRUE;
 }
 
@@ -299,7 +302,6 @@ void AliEveTRDChamber::LoadHits(TClonesArray *hits, Int_t &idx)
   //
   // Draw hits
   //
-  //Info("AddHit()", Form("%s", GetName()));
 
   if(!fHits){ 
     AddElement(fHits = new AliEveTRDHits());
@@ -315,6 +317,7 @@ void AliEveTRDChamber::LoadHits(TClonesArray *hits, Int_t &idx)
 
     Int_t id = fHits->SetNextPoint(hit->X(), hit->Y(), hit->Z());
     fHits->SetPointId(id, new AliTRDhit(*hit));
+    fHits->SetStamp(TEveElement::kCBObjProps);
     idx++;
   }
   return;
@@ -330,7 +333,6 @@ void AliEveTRDChamber::LoadTracklets(TObjArray *tracks)
     Error("LoadTracklets()", Form("Geometry not set for chamber %d. Please call first AliEveTRDChamber::SetGeometry().", fDet));
     return;
   }
-  // Info("LoadTracklets()", Form("tracks = 0x%x", tracks));
 
   if(!fTracklets){
     fTracklets = new std::vector<TEveTrack*>;
@@ -364,7 +366,6 @@ void AliEveTRDChamber::Paint(Option_t* option)
 {
   // Paint object.
 
-  //AliInfo(GetName());
   if(!fRnrSelf) return;
   if(fDigits && fRnrDigits){
     if(fDigitsNeedRecompute){