#include "AliTRDtrackerV1.h"
#include "AliTRDpadPlane.h"
#include "AliTRDdigitsManager.h"
+#include "AliTRDdataArrayDigits.h"
+#include "AliTRDSignalIndex.h"
#include "AliTRDgeometry.h"
#include "AliTRDtransform.h"
#include "AliTRDReconstructor.h"
// - 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();
{
// 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);
}
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++){
~AliEveTRDDigits();
void ComputeRepresentation();
+ const AliTRDdataArrayI* GetData() const {return fData.GetNelems() ? &fData : 0x0;}
void Paint(Option_t *opt="");
void Reset();
void SetData(AliTRDdigitsManager *digits);
#include "AliRunLoader.h"
//#include "AliLoader.h"
#include "AliTRDrawData.h"
+#include "AliTRDrawStreamTB.h"
+#include "AliTRDrawStreamBase.h"
+#include "AliTRDdigitsManager.h"
#include "AliRawReaderRoot.h"
#include "AliRawReaderDate.h"
//______________________________________________________________________________
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.
}
{
// 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;
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();
+ 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;
}
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:
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
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;
}
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;
}
//
// Draw hits
//
- //Info("AddHit()", Form("%s", GetName()));
if(!fHits){
AddElement(fHits = new AliEveTRDHits());
Int_t id = fHits->SetNextPoint(hit->X(), hit->Y(), hit->Z());
fHits->SetPointId(id, new AliTRDhit(*hit));
+ fHits->SetStamp(TEveElement::kCBObjProps);
idx++;
}
return;
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*>;
{
// Paint object.
- //AliInfo(GetName());
if(!fRnrSelf) return;
if(fDigits && fRnrDigits){
if(fDigitsNeedRecompute){