+// $Header: /soft/cvsroot/AliRoot/EVE/test-macros/tpc_sector_raw_test.C,v 1.10 2006/10/18 17:00:14 mtadel Exp $
+
+// Functions to read rootified raw-data from TPC sector test.
+//
+// Use tpc_sector_raw_test("filename.root") for initialization,
+// next_event() to advance along the data stream.
+// When there is no more data ROOT will crash.
+
class AliRawReaderRoot;
namespace Alieve {
class TPCData;
+class TPCSector2D;
+class TPCSector3D;
}
-Alieve::TPCData* x = 0;
-AliRawReaderRoot* reader = 0;
+using namespace Alieve;
+
+TPCData* x = 0;
+TPCSector2D* s = 0;
+TPCSector3D* t = 0;
-void tpc_sector_raw_test(const char *file = "",Int_t ievent = 0)
+AliRawReaderRoot* reader = 0;
+Int_t event = -1;
+Int_t default_sector = 13;
+
+void tpc_sector_raw_test(const char *file = "", Int_t ievent = 0)
{
- gROOT->Macro("alieve_loadlibs.C");
- gSystem->Load("libAlieve");
+ gStyle->SetPalette(1, 0);
reader = new AliRawReaderRoot(file);
- reader->RequireHeader(kFALSE);
- reader->Reset();
- for(Int_t i = 0; i <= ievent; i++)
- reader->NextEvent();
- AliTPCRawStreamOld input(reader);
- reader->SelectEquipment(-1);
+ //reader->LoadEquipmentIdsMap
+ // (gSystem->ExpandPathName("$(ALICE_ROOT)/TPC/mapping/EquipmentIdMap.data"));
+ // (gSystem->ExpandPathName("EquipmentIdMap.data"));
- x = new Alieve::TPCData;
- //x->SetSectorBlockSize(8192);
- x->SetLoadThreshold(65);
- x->CreateAllSectors();
- x->LoadRaw(input, kFALSE);
+ reader->Reset();
+ for(Int_t i=0; i<ievent; ++i, ++event) {
+ if(reader->NextEvent() == kFALSE) {
+ printf("End of raw stream at event %d (reqired event %d).\n", i, ievent);
+ return;
+ }
+ }
- gStyle->SetPalette(1, 0);
+ x = new TPCData;
+ // x->SetLoadPedestal(5);
+ x->SetLoadThreshold(5);
+ x->SetAutoPedestal(kTRUE);
- Alieve::TPCSector2D* s = new Alieve::TPCSector2D();
+ s = new TPCSector2D();
+ s->SetSectorID(default_sector);
+ s->SetAutoTrans(kTRUE); // place on proper 3D coordinates
s->SetDataSource(x);
- s->SetMainColor(36);
- gReve->AddRenderElement(s);
- gReve->DrawRenderElement(s);
+ s->SetFrameColor(36);
+ gEve->AddElement(s);
+ gEve->DrawElement(s);
+
+ t = new TPCSector3D();
+ t->SetSectorID(default_sector);
+ t->SetAutoTrans(kTRUE);
+ t->SetDataSource(x);
+ t->SetMaxTime(1023);
+ t->SetDriftVel(2.273);
+ gEve->AddElement(t);
+ gEve->DrawElement(t);
+ next_event();
}
-void tpc_raw_pad_dump(Int_t s, Int_t r, Int_t p)
+void next_event()
{
+ if(reader->NextEvent() == kTRUE) {
+ ++event;
+ } else {
+ printf("Reached end of stream, rewinding to first event.\n");
+ event = 0;
+ reader->RewindEvents();
+ reader->NextEvent();
+ }
+
+ printf("Now loading event %d\n", event);
reader->Reset();
- reader->NextEvent();
+ AliTPCRawStream input(reader);
+ input.SetOldRCUFormat(kTRUE);
+ reader->Select("TPC"); // ("TPC", firstRCU, lastRCU);
+
+ x->DropAllSectors();
+ x->LoadRaw(input, kTRUE, kTRUE);
- if(r >= Alieve::TPCSectorData::GetInnSeg().fNRows) {
- r -= Alieve::TPCSectorData::GetInnSeg().fNRows;
+ printf("Updating scene\n");
+ s->IncRTS();
+ t->IncRTS();
+ gEve->Redraw3D();
+}
+
+void tpc_raw_pad_dump(Int_t s, Int_t r, Int_t p)
+{
+ if(r >= TPCSectorData::GetInnSeg().GetNRows()) {
+ r -= TPCSectorData::GetInnSeg().GetNRows();
s += 36;
}
+ reader->Reset();
AliTPCRawStream input(reader);
+ input.SetOldRCUFormat(kTRUE);
+ // reader->Select(0, firstRCU, lastRCU);
+
Int_t sector = input.GetSector();
Int_t row = input.GetRow();