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),
37 fSetInitSectorParams(kFALSE),
38 fInitMinTime(0), fInitMaxTime(460), fInitThreshold(5)
41 TPCLoader::~TPCLoader()
47 /**************************************************************************/
49 void TPCLoader::RemoveElementLocal(RenderElement* el)
51 for(Int_t i=0; i<36; ++i) {
52 if(fSec2Ds[i] == el) fSec2Ds[i] = 0;
53 if(fSec3Ds[i] == el) fSec3Ds[i] = 0;
56 RenderElementList::RemoveElementLocal(el);
59 void TPCLoader::RemoveElements()
61 for(Int_t i=0; i<36; ++i) {
66 RenderElementList::RemoveElements();
69 /**************************************************************************/
71 void TPCLoader::SetData(TPCData* d)
77 /**************************************************************************/
79 void TPCLoader::OpenFile()
81 static const Exc_t eH("TPCLoader::OpenFile ");
83 if(gSystem->AccessPathName(fFile, kReadPermission))
84 throw(eH + "can not read '" + fFile + "'.");
93 fReader = new AliRawReaderRoot(fFile);
94 if(fTPCEquipementMap != "")
95 fReader->LoadEquipmentIdsMap
96 (gSystem->ExpandPathName(fTPCEquipementMap.Data()));
103 void TPCLoader::LoadEvent()
105 static const Exc_t eH("TPCLoader::LoadEvent ");
108 throw(eH + "data file not opened.");
110 printf("Now loading event %d\n", fEvent);
112 AliTPCRawStream input(fReader);
113 input.SetOldRCUFormat(kTRUE);
114 fReader->Select("TPC");
116 fData->DropAllSectors();
117 fData->LoadRaw(input, kTRUE, kTRUE);
120 void TPCLoader::NextEvent(Bool_t rewindOnEnd)
122 static const Exc_t eH("TPCLoader::NextEvent ");
125 throw(eH + "data file not opened.");
127 if(fReader->NextEvent() == kTRUE) {
131 throw(eH + "no events available.");
133 printf("Reached end of stream (event=%d), rewinding to first event.\n", fEvent);
134 fReader->RewindEvents();
135 fReader->NextEvent();
138 throw(eH + "last event reached.");
143 void TPCLoader::GotoEvent(Int_t event)
145 static const Exc_t eH("TPCLoader::GotoEvent ");
148 throw(eH + "data file not opened.");
154 fReader->RewindEvents();
162 } while(fEvent != event && !(checkEnd == kTRUE && fEvent == 0));
167 /**************************************************************************/
169 void TPCLoader::UpdateSectors()
171 gReve->DisableRedraw();
172 for(Int_t i=0; i<=35; ++i) {
173 if(fSec2Ds[i] != 0) {
174 fSec2Ds[i]->IncRTS();
176 TPCSectorData* sd = fData->GetSectorData(i);
178 TPCSector2D* s = new TPCSector2D(Form("Sector2D %d", i));
181 s->SetDataSource(fData);
186 if(fSetInitSectorParams) {
187 s->SetMinTime(fInitMinTime);
188 s->SetMaxTime(fInitMaxTime);
189 s->SetThreshold(fInitThreshold);
193 s->SetFrameColor(36);
195 gReve->AddRenderElement(this, s);
199 if(fSec3Ds[i] != 0) {
200 fSec3Ds[i]->IncRTS();
203 gReve->EnableRedraw();
206 void TPCLoader::CreateSectors3D()
208 gReve->DisableRedraw();
209 for(Int_t i=0; i<=35; ++i) {
210 TPCSectorData* sd = fData->GetSectorData(i);
211 if(sd != 0 && fSec3Ds[i] == 0) {
212 TPCSector3D* s = new TPCSector3D(Form("Sector3D %d", i));
215 s->SetDataSource(fData);
218 s->SetDriftVel(2.273);
220 s->CopyVizParams(*fSec2Ds[i]);
223 s->SetFrameColor(36);
225 gReve->AddRenderElement(this, s);
228 gReve->EnableRedraw();
231 void TPCLoader::DeleteSectors3D()
233 gReve->DisableRedraw();
234 for(Int_t i=0; i<=35; ++i) {
235 RenderElement* re = fSec3Ds[i];
237 gReve->RemoveRenderElement(this, re);
238 // delete re; // Done automatically.
242 gReve->EnableRedraw();
245 /**************************************************************************/
247 void TPCLoader::SetInitParams(Int_t mint, Int_t maxt, Int_t thr)
249 fSetInitSectorParams = kTRUE;
252 fInitThreshold = thr;