5 #include <Alieve/TPCSector2D.h>
6 #include <Alieve/TPCSector3D.h>
7 #include <Reve/RGTopFrame.h>
8 #include <Reve/RGEditor.h>
10 #include <AliRawReaderRoot.h>
11 #include <AliTPCRawStream.h>
16 using namespace Alieve;
18 //______________________________________________________________________
24 TPCLoader::TPCLoader(const Text_t* n, const Text_t* t) :
25 RenderElementList(n, t),
38 fSetInitSectorParams(kFALSE),
39 fInitMinTime(0), fInitMaxTime(460), fInitThreshold(5)
42 TPCLoader::~TPCLoader()
48 /**************************************************************************/
50 void TPCLoader::RemoveElementLocal(RenderElement* el)
52 for(Int_t i=0; i<36; ++i) {
53 if(fSec2Ds[i] == el) fSec2Ds[i] = 0;
54 if(fSec3Ds[i] == el) fSec3Ds[i] = 0;
57 RenderElement::RemoveElementLocal(el);
60 void TPCLoader::RemoveElements()
62 for(Int_t i=0; i<36; ++i) {
67 RenderElement::RemoveElements();
70 /**************************************************************************/
72 void TPCLoader::SetData(TPCData* d)
78 /**************************************************************************/
80 void TPCLoader::OpenFile()
82 static const Exc_t eH("TPCLoader::OpenFile ");
84 if(gSystem->AccessPathName(fFile, kReadPermission))
85 throw(eH + "can not read '" + fFile + "'.");
90 fData->DeleteAllSectors();
96 fReader = new AliRawReaderRoot(fFile);
97 if(fTPCEquipementMap != "")
98 fReader->LoadEquipmentIdsMap
99 (gSystem->ExpandPathName(fTPCEquipementMap.Data()));
103 UpdateSectors(kTRUE);
106 void TPCLoader::LoadEvent()
108 static const Exc_t eH("TPCLoader::LoadEvent ");
111 throw(eH + "data file not opened.");
113 printf("Now loading event %d\n", fEvent);
115 AliTPCRawStream input(fReader);
116 input.SetOldRCUFormat(kTRUE);
117 fReader->Select("TPC");
119 fData->DropAllSectors();
120 fData->LoadRaw(input, kTRUE, kTRUE);
123 void TPCLoader::NextEvent(Bool_t rewindOnEnd)
125 static const Exc_t eH("TPCLoader::NextEvent ");
128 throw(eH + "data file not opened.");
130 if(fReader->NextEvent() == kTRUE) {
134 throw(eH + "no events available.");
136 printf("Reached end of stream (event=%d), rewinding to first event.\n", fEvent);
137 fReader->RewindEvents();
138 fReader->NextEvent();
141 throw(eH + "last event reached.");
146 void TPCLoader::GotoEvent(Int_t event)
148 static const Exc_t eH("TPCLoader::GotoEvent ");
151 throw(eH + "data file not opened.");
157 fReader->RewindEvents();
165 } while(fEvent != event && !(checkEnd == kTRUE && fEvent == 0));
170 void* TPCLoader::LoopEvent(TPCLoader* loader)
174 loader->UpdateSectors();
175 if (gReve->GetEditor()->GetModel() == loader)
176 gReve->EditRenderElement(loader);
180 /**************************************************************************/
182 void TPCLoader::UpdateSectors(Bool_t dropNonPresent)
184 gReve->DisableRedraw();
185 for(Int_t i=0; i<=35; ++i)
187 TPCSectorData* sd = fData->GetSectorData(i);
192 if (dropNonPresent && sd == 0) {
193 gReve->RemoveRenderElement(this, fSec2Ds[i]);
196 fSec2Ds[i]->IncRTS();
202 TPCSector2D* s = new TPCSector2D(Form("Sector2D %d", i));
205 s->SetDataSource(fData);
210 if(fSetInitSectorParams) {
211 s->SetMinTime(fInitMinTime);
212 s->SetMaxTime(fInitMaxTime);
213 s->SetThreshold(fInitThreshold);
216 s->SetAutoTrans(kTRUE);
217 s->SetFrameColor(36);
219 gReve->AddRenderElement(this, s);
226 if (dropNonPresent && sd == 0) {
227 gReve->RemoveRenderElement(this, fSec3Ds[i]);
230 fSec3Ds[i]->IncRTS();
234 gReve->Redraw3D(kFALSE, kTRUE);
235 gReve->EnableRedraw();
238 void TPCLoader::ReloadSectors()
244 void TPCLoader::CreateSectors3D()
246 gReve->DisableRedraw();
247 for(Int_t i=0; i<=35; ++i) {
248 TPCSectorData* sd = fData->GetSectorData(i);
249 if(sd != 0 && fSec3Ds[i] == 0) {
250 TPCSector3D* s = new TPCSector3D(Form("Sector3D %d", i));
253 s->SetDataSource(fData);
256 s->SetDriftVel(2.273);
258 s->CopyVizParams(*fSec2Ds[i]);
260 s->SetAutoTrans(kTRUE);
261 s->SetFrameColor(36);
263 gReve->AddRenderElement(this, s);
266 gReve->EnableRedraw();
269 void TPCLoader::DeleteSectors3D()
271 gReve->DisableRedraw();
272 for(Int_t i=0; i<=35; ++i) {
273 RenderElement* re = fSec3Ds[i];
275 gReve->RemoveRenderElement(this, re);
276 // delete re; // Done automatically.
280 gReve->EnableRedraw();
283 /**************************************************************************/
285 void TPCLoader::SetInitParams(Int_t mint, Int_t maxt, Int_t thr)
287 fSetInitSectorParams = kTRUE;
290 fInitThreshold = thr;