5 #include <Alieve/TPCSector2D.h>
6 #include <Alieve/TPCSector3D.h>
7 #include <Reve/RGTopFrame.h>
9 #include <AliRawReaderRoot.h>
10 #include <AliTPCRawStream.h>
15 using namespace Alieve;
17 //______________________________________________________________________
23 TPCLoader::TPCLoader(const Text_t* n, const Text_t* t) :
24 RenderElementList(n, t),
29 fTPCEquipementMap("$(ALICE_ROOT)/TPC/mapping/EquipmentIdMap.data"),
36 fSetInitSectorParams(kFALSE)
41 TPCLoader::~TPCLoader()
47 /**************************************************************************/
50 void TPCLoader::SetData(TPCData* d)
56 /**************************************************************************/
58 void TPCLoader::OpenFile()
60 static const Exc_t eH("TPCLoader::OpenFile ");
62 if(gSystem->AccessPathName(fFile, kReadPermission))
63 throw(eH + "can not read '" + fFile + "'.");
72 fReader = new AliRawReaderRoot(fFile);
73 fReader->LoadEquipmentIdsMap
74 (gSystem->ExpandPathName(fTPCEquipementMap.Data()));
81 void TPCLoader::LoadEvent()
83 static const Exc_t eH("TPCLoader::LoadEvent ");
86 throw(eH + "data file not opened.");
88 printf("Now loading event %d\n", fEvent);
90 AliTPCRawStream input(fReader);
91 input.SetOldRCUFormat(kTRUE);
94 fData->DropAllSectors();
95 fData->LoadRaw(input, kTRUE, kTRUE);
98 void TPCLoader::NextEvent(Bool_t rewindOnEnd)
100 static const Exc_t eH("TPCLoader::NextEvent ");
103 throw(eH + "data file not opened.");
105 if(fReader->NextEvent() == kTRUE) {
109 throw(eH + "no events available.");
111 printf("Reached end of stream (event=%d), rewinding to first event.\n", fEvent);
112 fReader->RewindEvents();
113 fReader->NextEvent();
116 throw(eH + "last event reached.");
121 void TPCLoader::GotoEvent(Int_t event)
123 static const Exc_t eH("TPCLoader::GotoEvent ");
126 throw(eH + "data file not opened.");
132 fReader->RewindEvents();
140 } while(fEvent != event && !(checkEnd == kTRUE && fEvent == 0));
145 /**************************************************************************/
147 void TPCLoader::UpdateSectors()
149 gReve->DisableRedraw();
150 for(Int_t i=0; i<=35; ++i) {
151 if(fSec2Ds[i] != 0) {
152 fSec2Ds[i]->IncRTS();
154 TPCSectorData* sd = fData->GetSectorData(i);
156 TPCSector2D* s = new TPCSector2D(Form("Sector2D %d", i));
159 s->SetDataSource(fData);
164 if(fSetInitSectorParams) {
165 s->SetMinTime(fInitMinTime);
166 s->SetMaxTime(fInitMaxTime);
167 s->SetThreshold(fInitThreshold);
171 s->SetFrameColor(36);
173 gReve->AddRenderElement(s);
174 gReve->DrawRenderElement(s);
178 if(fSec3Ds[i] != 0) {
179 fSec3Ds[i]->IncRTS();
182 gReve->EnableRedraw();
185 void TPCLoader::CreateSectors3D()
187 gReve->DisableRedraw();
188 for(Int_t i=0; i<=35; ++i) {
189 TPCSectorData* sd = fData->GetSectorData(i);
190 if(sd != 0 && fSec3Ds[i] == 0) {
191 TPCSector3D* s = new TPCSector3D(Form("Sector3D %d", i));
194 s->SetDataSource(fData);
197 s->SetDriftVel(2.273);
199 s->CopyVizParams(*fSec2Ds[i]);
202 s->SetFrameColor(36);
204 gReve->AddRenderElement(s);
205 gReve->DrawRenderElement(s);
208 gReve->EnableRedraw();
211 void TPCLoader::DeleteSectors3D()
213 gReve->DisableRedraw();
214 for(Int_t i=0; i<=35; ++i) {
215 RenderElement* re = fSec3Ds[i];
217 gReve->UndrawRenderElement(re);
222 gReve->EnableRedraw();
225 /**************************************************************************/
227 void TPCLoader::SetInitParams(Int_t mint, Int_t maxt, Int_t thr)
229 fSetInitSectorParams = kTRUE;
232 fInitThreshold = thr;