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),
36 fSetInitSectorParams(kFALSE)
39 TPCLoader::~TPCLoader()
45 /**************************************************************************/
47 void TPCLoader::RemoveElementLocal(RenderElement* el)
49 for(Int_t i=0; i<36; ++i) {
50 if(fSec2Ds[i] == el) fSec2Ds[i] = 0;
51 if(fSec3Ds[i] == el) fSec3Ds[i] = 0;
54 RenderElementList::RemoveElementLocal(el);
57 void TPCLoader::RemoveElements()
59 for(Int_t i=0; i<36; ++i) {
64 RenderElementList::RemoveElements();
67 /**************************************************************************/
69 void TPCLoader::SetData(TPCData* d)
75 /**************************************************************************/
77 void TPCLoader::OpenFile()
79 static const Exc_t eH("TPCLoader::OpenFile ");
81 if(gSystem->AccessPathName(fFile, kReadPermission))
82 throw(eH + "can not read '" + fFile + "'.");
91 fReader = new AliRawReaderRoot(fFile);
92 if(fTPCEquipementMap != "")
93 fReader->LoadEquipmentIdsMap
94 (gSystem->ExpandPathName(fTPCEquipementMap.Data()));
101 void TPCLoader::LoadEvent()
103 static const Exc_t eH("TPCLoader::LoadEvent ");
106 throw(eH + "data file not opened.");
108 printf("Now loading event %d\n", fEvent);
110 AliTPCRawStream input(fReader);
111 input.SetOldRCUFormat(kTRUE);
112 fReader->Select("TPC");
114 fData->DropAllSectors();
115 fData->LoadRaw(input, kTRUE, kTRUE);
118 void TPCLoader::NextEvent(Bool_t rewindOnEnd)
120 static const Exc_t eH("TPCLoader::NextEvent ");
123 throw(eH + "data file not opened.");
125 if(fReader->NextEvent() == kTRUE) {
129 throw(eH + "no events available.");
131 printf("Reached end of stream (event=%d), rewinding to first event.\n", fEvent);
132 fReader->RewindEvents();
133 fReader->NextEvent();
136 throw(eH + "last event reached.");
141 void TPCLoader::GotoEvent(Int_t event)
143 static const Exc_t eH("TPCLoader::GotoEvent ");
146 throw(eH + "data file not opened.");
152 fReader->RewindEvents();
160 } while(fEvent != event && !(checkEnd == kTRUE && fEvent == 0));
165 /**************************************************************************/
167 void TPCLoader::UpdateSectors()
169 gReve->DisableRedraw();
170 for(Int_t i=0; i<=35; ++i) {
171 if(fSec2Ds[i] != 0) {
172 fSec2Ds[i]->IncRTS();
174 TPCSectorData* sd = fData->GetSectorData(i);
176 TPCSector2D* s = new TPCSector2D(Form("Sector2D %d", i));
179 s->SetDataSource(fData);
184 if(fSetInitSectorParams) {
185 s->SetMinTime(fInitMinTime);
186 s->SetMaxTime(fInitMaxTime);
187 s->SetThreshold(fInitThreshold);
191 s->SetFrameColor(36);
193 gReve->AddRenderElement(this, s);
197 if(fSec3Ds[i] != 0) {
198 fSec3Ds[i]->IncRTS();
201 gReve->EnableRedraw();
204 void TPCLoader::CreateSectors3D()
206 gReve->DisableRedraw();
207 for(Int_t i=0; i<=35; ++i) {
208 TPCSectorData* sd = fData->GetSectorData(i);
209 if(sd != 0 && fSec3Ds[i] == 0) {
210 TPCSector3D* s = new TPCSector3D(Form("Sector3D %d", i));
213 s->SetDataSource(fData);
216 s->SetDriftVel(2.273);
218 s->CopyVizParams(*fSec2Ds[i]);
221 s->SetFrameColor(36);
223 gReve->AddRenderElement(this, s);
226 gReve->EnableRedraw();
229 void TPCLoader::DeleteSectors3D()
231 gReve->DisableRedraw();
232 for(Int_t i=0; i<=35; ++i) {
233 RenderElement* re = fSec3Ds[i];
235 gReve->RemoveRenderElement(this, re);
236 // delete re; // Done automatically.
240 gReve->EnableRedraw();
243 /**************************************************************************/
245 void TPCLoader::SetInitParams(Int_t mint, Int_t maxt, Int_t thr)
247 fSetInitSectorParams = kTRUE;
250 fInitThreshold = thr;