5 #include <Alieve/TPCSector2D.h>
6 #include <Alieve/TPCSector3D.h>
7 #include <TEveManager.h>
8 #include <TEveGedEditor.h>
10 #include <AliRawReaderRoot.h>
11 #include <AliTPCRawStream.h>
14 using namespace Alieve;
16 //______________________________________________________________________
22 TPCLoader::TPCLoader(const Text_t* n, const Text_t* t) :
23 TEveElementList(n, t),
36 fSetInitSectorParams(kFALSE),
37 fInitMinTime(0), fInitMaxTime(460), fInitThreshold(5), fInitMaxVal(128)
42 TPCLoader::~TPCLoader()
48 /**************************************************************************/
50 void TPCLoader::RemoveElementLocal(TEveElement* 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;
58 void TPCLoader::RemoveElementsLocal()
60 for(Int_t i=0; i<36; ++i) {
66 /**************************************************************************/
68 void TPCLoader::SetData(TPCData* d)
74 /**************************************************************************/
76 void TPCLoader::OpenFile()
78 static const TEveException eH("TPCLoader::OpenFile ");
80 if(gSystem->AccessPathName(fFile, kReadPermission))
81 throw(eH + "can not read '" + fFile + "'.");
83 fData->DeleteAllSectors();
89 fReader = new AliRawReaderRoot(fFile);
90 if(fTPCEquipementMap != "")
91 fReader->LoadEquipmentIdsMap
92 (gSystem->ExpandPathName(fTPCEquipementMap.Data()));
99 void TPCLoader::LoadEvent()
101 static const TEveException eH("TPCLoader::LoadEvent ");
104 throw(eH + "data file not opened.");
106 printf("Now loading event %d\n", fEvent);
108 AliTPCRawStream input(fReader);
109 input.SetOldRCUFormat(kTRUE);
110 fReader->Select("TPC");
112 fData->DropAllSectors();
113 fData->LoadRaw(input, kTRUE, kTRUE);
116 void TPCLoader::NextEvent(Bool_t rewindOnEnd)
118 static const TEveException eH("TPCLoader::NextEvent ");
121 throw(eH + "data file not opened.");
123 if(fReader->NextEvent() == kTRUE) {
127 throw(eH + "no events available.");
129 printf("Reached end of stream (event=%d), rewinding to first event.\n", fEvent);
130 fReader->RewindEvents();
131 fReader->NextEvent();
134 throw(eH + "last event reached.");
139 void TPCLoader::GotoEvent(Int_t event)
141 static const TEveException eH("TPCLoader::GotoEvent ");
144 throw(eH + "data file not opened.");
150 fReader->RewindEvents();
158 } while(fEvent != event && !(checkEnd == kTRUE && fEvent == 0));
163 void* TPCLoader::LoopEvent(TPCLoader* loader)
167 loader->UpdateSectors();
168 if (gEve->GetEditor()->GetModel() == loader)
169 gEve->EditElement(loader);
173 /**************************************************************************/
175 void TPCLoader::UpdateSectors(Bool_t dropNonPresent)
177 gEve->DisableRedraw();
178 for(Int_t i=0; i<=35; ++i)
180 TPCSectorData* sd = fData->GetSectorData(i);
185 if (dropNonPresent && sd == 0) {
186 gEve->RemoveElement(fSec2Ds[i], this);
189 fSec2Ds[i]->IncRTS();
190 fSec2Ds[i]->ElementChanged();
196 TPCSector2D* s = new TPCSector2D(Form("Sector2D %d", i));
199 s->SetDataSource(fData);
204 if(fSetInitSectorParams) {
205 s->SetMinTime(fInitMinTime);
206 s->SetMaxTime(fInitMaxTime);
207 s->SetThreshold(fInitThreshold);
208 s->SetMaxVal(fInitMaxVal);
211 s->SetAutoTrans(kTRUE);
212 s->SetFrameColor(36);
214 gEve->AddElement(s, this);
221 if (dropNonPresent && sd == 0) {
222 gEve->RemoveElement(fSec3Ds[i], this);
225 fSec3Ds[i]->IncRTS();
226 fSec3Ds[i]->ElementChanged();
230 gEve->Redraw3D(kTRUE, kFALSE);
231 gEve->EnableRedraw();
234 void TPCLoader::ReloadSectors()
240 void TPCLoader::CreateSectors3D()
242 gEve->DisableRedraw();
243 for(Int_t i=0; i<=35; ++i) {
244 TPCSectorData* sd = fData->GetSectorData(i);
245 if(sd != 0 && fSec3Ds[i] == 0) {
246 TPCSector3D* s = new TPCSector3D(Form("Sector3D %d", i));
249 s->SetDataSource(fData);
252 s->SetDriftVel(2.273);
254 s->CopyVizParams(*fSec2Ds[i]);
256 s->SetAutoTrans(kTRUE);
257 s->SetFrameColor(36);
259 gEve->AddElement(s, this);
262 gEve->EnableRedraw();
265 void TPCLoader::DeleteSectors3D()
267 gEve->DisableRedraw();
268 for(Int_t i=0; i<=35; ++i) {
269 TEveElement* re = fSec3Ds[i];
271 gEve->RemoveElement(re, this);
272 // delete re; // Done automatically.
276 gEve->EnableRedraw();
279 /**************************************************************************/
281 void TPCLoader::SetInitParams(Int_t mint, Int_t maxt, Int_t thr, Int_t maxval)
283 fSetInitSectorParams = kTRUE;
286 fInitThreshold = thr;
287 fInitMaxVal = maxval;