]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveTRDLoader.cxx
Merge changes from branches/dev/EVE. This branch was following development in ROOT...
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTRDLoader.cxx
CommitLineData
d810d0de 1// $Id$
2// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4/**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
51346b82 7 * full copyright notice. *
d810d0de 8 **************************************************************************/
707b281a 9
d810d0de 10#include "AliEveTRDLoader.h"
11#include "AliEveTRDModuleImp.h"
a282bf09 12
84aff7a4 13#include <TEveManager.h>
14#include <TEveGValuators.h>
a282bf09 15
edf0c4a0 16#include "TSystem.h"
17#include "TFile.h"
18#include "TTree.h"
a15e6d7d 19//#include "TString.h"
edf0c4a0 20#include "TObjString.h"
21#include "TObjArray.h"
22
a282bf09 23#include <TGLabel.h>
24#include <TGButton.h>
25#include <TGTextEntry.h>
a15e6d7d 26//#include <TGNumberEntry.h>
a282bf09 27#include <TGFileDialog.h>
a15e6d7d 28//#include <TGListTree.h>
29//#include <TGToolTip.h>
a282bf09 30
edf0c4a0 31#include "AliLog.h"
a282bf09 32#include "AliCDBManager.h"
33
a15e6d7d 34//#include "AliTRDv1.h"
35//#include "AliTRDhit.h"
a282bf09 36#include "AliTRDcluster.h"
37#include "AliTRDmcmTracklet.h"
38#include "AliTRDdigitsManager.h"
39#include "AliTRDgeometry.h"
40
41#include <algorithm>
d810d0de 42
a282bf09 43class AliTRDdataArrayI;
44
d810d0de 45ClassImp(AliEveTRDLoader)
46ClassImp(AliEveTRDLoaderEditor)
a282bf09 47
48///////////////////////////////////////////////////////////
fd31e9de 49///////////// AliEveTRDLoader /////////////////////
a282bf09 50///////////////////////////////////////////////////////////
51
52
fd31e9de 53//______________________________________________________________________________
54AliEveTRDLoader::AliEveTRDLoader(const Text_t* n, const Text_t* t) :
55 TEveElementList(n, t),
56 fLoadHits (kFALSE), fLoadDigits (kFALSE),
57 fLoadClusters (kFALSE), fLoadTracks (kFALSE),
58 fSM (-1), fStack (-1), fLy(-1),
59 fFilename (""), fDir ("."),
60 fEvent (-1),
61 fTRD (0x0),
62 fGeo (new AliTRDgeometry())
51346b82 63{
a15e6d7d 64 // Constructor.
65
fd31e9de 66 AliCDBManager *fCDBManager=AliCDBManager::Instance();
67 fCDBManager->SetDefaultStorage("local://$ALICE_ROOT");
68 fCDBManager->SetRun(0);
a282bf09 69}
70
fd31e9de 71//______________________________________________________________________________
a15e6d7d 72namespace
a282bf09 73{
a282bf09 74template<class T>
75class ID
76{
77public:
a15e6d7d 78 ID(int value) : fkId(value) {}
fd31e9de 79 bool operator()(const T &t) const {
a15e6d7d 80 return ((dynamic_cast<AliEveTRDModule*>(t))->GetID() == fkId);
fd31e9de 81 }
a282bf09 82private:
a15e6d7d 83 const int fkId;
a282bf09 84};
a15e6d7d 85}
fd31e9de 86
87void AliEveTRDLoader::AddChambers(int sm, int stk, int ly)
a282bf09 88{
a15e6d7d 89 // Add specified chambers.
90
91 Int_t ismStart = (sm == -1) ? 0 : sm;
92 Int_t ismStop = (sm == -1) ? 18 : sm+1;
93 Int_t istkStart= (stk == -1)? 0 : stk;
94 Int_t istkStop = (stk == -1)? 5 : stk+1;
95 Int_t ilyStart = (ly == -1) ? 0 : ly;
96 Int_t ilyStop = (ly == -1) ? 6 : ly+1;
fd31e9de 97
98 List_i ichmb;
99 ichmb = fChildren.begin();
100 while(ichmb != fChildren.end()){
101 (*ichmb)->SetRnrSelf(kFALSE);
102 ichmb++;
103 }
104
a15e6d7d 105 AliEveTRDNode *lSM=0x0, *lSTK=0x0;
106 AliEveTRDChamber *lCHMB = 0x0;
fd31e9de 107 int det;
a15e6d7d 108 for (int ism=ismStart; ism<ismStop; ism++){
fd31e9de 109 ichmb = find_if(fChildren.begin(), fChildren.end(), ID<TEveElement*>(ism));
a15e6d7d 110 if (ichmb != fChildren.end()) {
111 lSM = (AliEveTRDNode*)(*ichmb);
112 lSM->SetRnrSelf(kTRUE);
113 } else {
114 AddElement(lSM = new AliEveTRDNode("SM", ism));
115 lSM->SetElementTitle(Form("Supermodule %2d", ism));
fd31e9de 116 }
a15e6d7d 117 for (int istk=istkStart; istk<istkStop; istk++) {
118 ichmb = find_if(lSM->begin(), lSM->end(), ID<TEveElement*>(istk));
119 if (ichmb != lSM->end()) {
120 lSTK = (AliEveTRDNode*)(*ichmb);
121 lSTK->SetRnrSelf(kTRUE);
122 } else {
123 lSM->AddElement(lSTK = new AliEveTRDNode("Stack", istk));
124 lSTK->SetElementTitle(Form("SM %2d Stack %1d", ism, istk));
fd31e9de 125 }
a15e6d7d 126 for (int ily=ilyStart; ily<ilyStop; ily++) {
fd31e9de 127 det = fGeo->GetDetector(ily, istk, ism);
a15e6d7d 128 ichmb = find_if(lSTK->begin(), lSTK->end(), ID<TEveElement*>(det));
129 if(ichmb != lSTK->end()) {
130 (*ichmb)->SetRnrSelf(kTRUE);
131 } else {
132 lSTK->AddElement(lCHMB = new AliEveTRDChamber(det));
133 lCHMB->SetGeometry(fGeo);
134 lCHMB->SetElementTitle(Form("SM %2d Stack %1d Layer %1d", ism, istk, ily));
fd31e9de 135 }
136 }
137 }
138 }
139 gEve->Redraw3D();
a282bf09 140}
141
fd31e9de 142//______________________________________________________________________________
143AliEveTRDChamber* AliEveTRDLoader::GetChamber(int d)
a282bf09 144{
a15e6d7d 145 // Get given chamber.
146
fd31e9de 147 List_i ism, istack, ichmb;
148
149 ism = find_if(fChildren.begin(), fChildren.end(), ID<TEveElement*>(fGeo->GetSector(d)));
150 if(ism == fChildren.end()) return 0x0;
151 istack = find_if(((AliEveTRDNode*)(*ism))->begin(), ((AliEveTRDNode*)(*ism))->end(), ID<TEveElement*>(fGeo->GetChamber(d)));
152 if(istack == ((AliEveTRDNode*)(*ism))->end()) return 0x0;
153 ichmb = find_if(((AliEveTRDNode*)(*istack))->begin(), ((AliEveTRDNode*)(*istack))->end(), ID<TEveElement*>(d));
154 if(ichmb == ((AliEveTRDNode*)(*istack))->end()) return 0x0;
155 return dynamic_cast<AliEveTRDChamber*>(*ichmb);
a282bf09 156}
157
fd31e9de 158//______________________________________________________________________________
159Bool_t AliEveTRDLoader::GoToEvent(int ev)
a282bf09 160{
a15e6d7d 161 // Go to given event.
162
fd31e9de 163 if(!fChildren.size()){
164 AliWarning("Please select first the chamber that you want to monitor from \"Chamber(s) selector\".");
165 return kFALSE;
166 }
167
168 fEvent = ev;
169
170 Unload();
171
172 TTree *t = 0x0;
173 TFile *f = new TFile(Form("%s/%s", fDir.Data(), fFilename.Data()));
16718cdc 174 if(! f->cd(Form("Event%d", ev))){
fd31e9de 175 AliError(Form("Couldn't find event %d in file \"%s/%s\".", ev, fDir.Data(), fFilename.Data()));
176 f->Close(); delete f;
177 return kFALSE;
178 }
179
180 if(fLoadDigits){
181 t = (TTree*)gDirectory->Get("TreeD");
182 if(!t) return kFALSE;
183 if(!LoadDigits(t)) return kFALSE;
184 } else if(fLoadClusters){
185 t = (TTree*)gDirectory->Get("TreeR");
186 if(!t) return kFALSE;
187 if(!LoadClusters(t)) return kFALSE;
188 } else if(fLoadTracks){
189 t = (TTree*)gDirectory->Get("TreeT");
190 if(!t) return kFALSE;
191 if(!LoadTracklets(t)) return kFALSE;
192 } else AliWarning("Please select first the type of data that you want to monitor and then hit the \"Load\" button.");
193
194 f->Close(); delete f;
195
196 gEve->Redraw3D();
197
198 return kTRUE;
a282bf09 199}
200
201
fd31e9de 202//______________________________________________________________________________
203Bool_t AliEveTRDLoader::LoadClusters(TTree *tC)
a282bf09 204{
a15e6d7d 205 // Load clusters.
206
fd31e9de 207 AliInfo("Loading ...");
208 if(!fChildren.size()) return kTRUE;
209
210 TObjArray *clusters = new TObjArray();
211 tC->SetBranchAddress("TRDcluster", &clusters);
212
213 AliEveTRDChamber *chmb = 0x0;
214 AliTRDcluster *c=0x0;
215 for(int idet=0; idet<540; idet++){
216 tC->GetEntry(idet);
217 if(!clusters->GetEntriesFast()) continue;
218 c = (AliTRDcluster*)clusters->UncheckedAt(0);
219 if(!c) continue;
220 if((chmb = GetChamber(c->GetDetector()))) chmb->LoadClusters(clusters);
221 }
222 return kTRUE;
a282bf09 223}
224
225
fd31e9de 226//______________________________________________________________________________
227Bool_t AliEveTRDLoader::LoadDigits(TTree *tD)
a282bf09 228{
a15e6d7d 229 // Load digits.
230
fd31e9de 231 AliInfo("Loading ...");
232
233 if(!fChildren.size()) return kTRUE;
234
235 AliEveTRDChamber *chmb;
236 AliTRDdigitsManager dm;
237 dm.ReadDigits(tD);
238 for(int idet=0; idet<540; idet++){
239 if(!(chmb=GetChamber(idet))) continue;
240 // digits = dm.GetDigits(idet);
241 // if(!digits) continue;
242 // chmb->LoadDigits(digits);
243 chmb->LoadDigits(&dm);
244 }
245 return kTRUE;
a282bf09 246}
247
248
fd31e9de 249//______________________________________________________________________________
250Bool_t AliEveTRDLoader::LoadTracklets(TTree *tT)
a282bf09 251{
a15e6d7d 252 // Load tracklets.
253
fd31e9de 254 AliInfo("Loading ...");
255 if(!fChildren.size()) return kTRUE;
a282bf09 256
fd31e9de 257 TObjArray *tracks = new TObjArray();
258 tT->SetBranchAddress("TRDmcmTracklet",&tracks);
51346b82 259
fd31e9de 260 AliEveTRDChamber *chmb = 0x0;
261 AliTRDmcmTracklet *trk=0x0;
262 for(int idet=0; idet<540; idet++){
263 if(!tT->GetEntry(idet)) continue;
264 if(tracks->GetEntriesFast()) trk = (AliTRDmcmTracklet*)tracks->UncheckedAt(0);
265 if((chmb = GetChamber(trk->GetDetector()))) chmb->LoadTracklets(tracks);
266 }
51346b82 267
fd31e9de 268 return kTRUE;
a282bf09 269}
51346b82 270
edf0c4a0 271
fd31e9de 272//______________________________________________________________________________
273Bool_t AliEveTRDLoader::Open(const char *filename, const char *dir)
a282bf09 274{
a15e6d7d 275 // Open given file in given directory.
276
fd31e9de 277 fFilename = filename;
278 fDir = dir;
279 Int_t count = 0;
280 count += fLoadDigits ? 1 : 0;
281 count += fLoadClusters ? 1 : 0;
282 count += fLoadTracks ? 1 : 0;
283
284 TObjArray *so = fFilename.Tokenize(".");
285
286 if(((TObjString*)(*so)[0])->GetString().CompareTo("TRD") != 0){
287 if(!count){
288 AliWarning("Filename didn't fulfill naming conventions. No TRD data will be loaded.");
289 return kFALSE;
290 } else {
291 Warning("Open()", "Filename didn't fulfill naming conventions.");
292 return kTRUE;
293 }
294 }
295 if(((TObjString*)(*so)[1])->GetString().CompareTo("Digits") == 0){
296 if(!fLoadDigits) AliWarning("Data type set to DIGITS according to file name. Previous settings with SetDataType() will be discarded.");
297 fLoadDigits = kTRUE;
298 } else if(((TObjString*)(*so)[1])->GetString().CompareTo("RecPoints") == 0){
299 if(!fLoadClusters) AliWarning("Data type set to CLUSTERS according to file name. Previous settings with SetDataType() will be discarded.");
300 fLoadClusters = kTRUE;
301 } else if(((TObjString*)(*so)[1])->GetString().CompareTo("Tracks") == 0){
302 if(!fLoadTracks) AliWarning("Data type set to TRACKLETS according to file name. Previous settings with SetDataType() will be discarded.");
303 fLoadTracks = kTRUE;
304 } else if(count){
305 AliWarning("Filename didn't fulfill naming conventions.");
306 return kTRUE;
307 } else {
308 AliError("Filename didn't fulfill naming conventions. No data will be loaded.");
309 return kFALSE;
310 }
311
312 return kTRUE;
a282bf09 313}
314
fd31e9de 315//______________________________________________________________________________
d810d0de 316void AliEveTRDLoader::Paint(Option_t *option)
edf0c4a0 317{
a15e6d7d 318 // Paint object.
319
fd31e9de 320 List_i ichmb = fChildren.begin();
321 while(ichmb != fChildren.end()){
322 (dynamic_cast<AliEveTRDModule*>(*ichmb))->Paint(option);
323 ichmb++;
324 }
edf0c4a0 325}
326
fd31e9de 327//______________________________________________________________________________
328void AliEveTRDLoader::SetDataType(TRDDataTypes type)
edf0c4a0 329{
a15e6d7d 330 // Set type of data.
331
fd31e9de 332 fLoadHits = kFALSE;
333 fLoadDigits = kFALSE;
334 fLoadClusters = kFALSE;
335 fLoadTracks = kFALSE;
336 switch(type){
337 case kHits: fLoadHits = kTRUE; break;
338 case kDigits: fLoadDigits = kTRUE; break;
339 case kClusters: fLoadClusters = kTRUE; break;
340 case kTracks: fLoadTracks = kTRUE; break;
341 case kRawRoot: break;
342 case kRawData: break;
343 }
edf0c4a0 344}
345
fd31e9de 346//______________________________________________________________________________
d810d0de 347void AliEveTRDLoader::Unload()
a282bf09 348{
a15e6d7d 349 // Unload module data.
350
fd31e9de 351 List_i ichmb = fChildren.begin();
352 while(ichmb != fChildren.end()){
353 (dynamic_cast<AliEveTRDModule*>(*ichmb))->Reset();
354 ichmb++;
355 }
a282bf09 356}
357
358///////////////////////////////////////////////////////////
d810d0de 359///////////// AliEveTRDLoaderEditor /////////////////////
a282bf09 360///////////////////////////////////////////////////////////
361
fd31e9de 362//______________________________________________________________________________
363AliEveTRDLoaderEditor::AliEveTRDLoaderEditor(const TGWindow* p, Int_t width, Int_t height,
364 UInt_t options, Pixel_t back) :
365 TGedFrame(p, width, height, options | kVerticalFrame, back),
366 fM(0), fFile(0), fEvent(0),
367 fSMNumber(0), fStackNumber(0), fPlaneNumber(0)
a282bf09 368{
a15e6d7d 369 // Constructor.
370
fd31e9de 371 MakeTitle("AliEveTRDLoader");
51346b82 372
fd31e9de 373 Int_t labelW = 42;
51346b82 374
fd31e9de 375 TGHorizontalFrame* f = new TGHorizontalFrame(this);
376 TGHorizontalFrame* g = new TGHorizontalFrame(f, labelW, 0, kFixedWidth);
377 TGLabel* l = new TGLabel(g, "File: ");
378 g->AddFrame(l, new TGLayoutHints(kLHintsLeft, 0,0,4,0));
379 f->AddFrame(g);
380 fFile = new TGTextEntry(f);
381 fFile->SetToolTipText("Select TRD data file or galice.root");
382 fFile->SetWidth(140);
383 fFile->Connect("DoubleClicked()", "AliEveTRDLoaderEditor", this, "FileOpen()");
384 f->AddFrame(fFile);
51346b82 385
fd31e9de 386 TGTextButton* openFile = new TGTextButton(f, "Browse");
387 f->AddFrame(openFile);
388 openFile->Connect("Clicked()", "AliEveTRDLoaderEditor", this, "FileOpen()");
389 AddFrame(f);
a282bf09 390
51346b82 391
16718cdc 392 fEvent = new TEveGValuator(this, "Event:", 110, 0);
a282bf09 393 fEvent->SetShowSlider(kFALSE);
394 fEvent->SetLabelWidth(labelW);
395 fEvent->SetNELength(6);
396 fEvent->Build();
397 fEvent->SetLimits(-1, 1000);
edf0c4a0 398 fEvent->SetToolTip("Set event number to be monitored");
fd31e9de 399 fEvent->Connect("ValueSet(Double_t)",
400 "AliEveTRDLoaderEditor", this, "SetEvent(Double_t)");
401 AddFrame(fEvent);
a282bf09 402
403
fd31e9de 404 // "Chamber(s) selector" group frame
405 TGGroupFrame *fGroupFrame1974 = new TGGroupFrame(this,"Chamber(s) selector");
406 TGVerticalFrame *fVerticalFrame1974 = new TGVerticalFrame(fGroupFrame1974, 150, 50,kVerticalFrame);
51346b82 407
fd31e9de 408 fSMNumber = new TEveGValuator(fVerticalFrame1974, "SM:", 0, 0);
14217b5f 409 fSMNumber->SetShowSlider(kFALSE);
410 fSMNumber->SetLabelWidth(labelW);
411 fSMNumber->SetNELength(6);
412 fSMNumber->Build();
413 fSMNumber->SetLimits(-1, 17);
414 fSMNumber->SetToolTip("Supermodule id [-1 for all]");
fd31e9de 415 fVerticalFrame1974->AddFrame(fSMNumber, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterX | kLHintsExpandY,2,2,2,2));
14217b5f 416
fd31e9de 417 fStackNumber = new TEveGValuator(fVerticalFrame1974, "Stack:", 0, 0);
14217b5f 418 fStackNumber->SetShowSlider(kFALSE);
419 fStackNumber->SetLabelWidth(labelW);
420 fStackNumber->SetNELength(6);
421 fStackNumber->Build();
422 fStackNumber->SetLimits(-1, 4);
423 fStackNumber->SetToolTip("Stack id [-1 for all in this SM]");
fd31e9de 424 fVerticalFrame1974->AddFrame(fStackNumber, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterX | kLHintsExpandY,2,2,2,2));
14217b5f 425
fd31e9de 426 fPlaneNumber = new TEveGValuator(fVerticalFrame1974, "Plane:", 0, 0);
14217b5f 427 fPlaneNumber->SetShowSlider(kFALSE);
428 fPlaneNumber->SetLabelWidth(labelW);
429 fPlaneNumber->SetNELength(6);
430 fPlaneNumber->Build();
431 fPlaneNumber->SetLimits(-1, 5);
432 fPlaneNumber->SetToolTip("Plane id [-1 for all in this stack]");
433
fd31e9de 434 fVerticalFrame1974->AddFrame(fPlaneNumber, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterX | kLHintsExpandY,2,2,2,2));
51346b82 435
fd31e9de 436 fGroupFrame1974->AddFrame(fVerticalFrame1974, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandY | kLHintsCenterX,2,2,2,2));
a282bf09 437
fd31e9de 438 TGTextButton *fTextButton2037 = new TGTextButton(fGroupFrame1974,"Select");
439 fTextButton2037->SetTextJustify(36);
440 fGroupFrame1974->AddFrame(fTextButton2037, new TGLayoutHints(kLHintsExpandY | kLHintsCenterX,2,2,2,2));
edf0c4a0 441 fTextButton2037->SetToolTipText("Apply selection", 400);
fd31e9de 442 fTextButton2037->Connect("Clicked()",
443 "AliEveTRDLoaderEditor", this, "AddChambers()");
a282bf09 444
fd31e9de 445 fGroupFrame1974->SetLayoutManager(new TGHorizontalLayout(fGroupFrame1974));
446 AddFrame(fGroupFrame1974, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
a282bf09 447
a282bf09 448
fd31e9de 449 TGTextButton *fTextButton2004 = new TGTextButton(this,"Load");
450 fTextButton2004->SetTextJustify(36);
451 fTextButton2004->Resize(164,22);
452 AddFrame(fTextButton2004, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
453 fTextButton2004->SetToolTipText("Load data according to selection", 400);
454 fTextButton2004->Connect("Clicked()", "AliEveTRDLoaderEditor", this, "Load()");
a282bf09 455}
456
fd31e9de 457//______________________________________________________________________________
d810d0de 458void AliEveTRDLoaderEditor::SetModel(TObject* obj)
a282bf09 459{
a15e6d7d 460 // Set model object.
edf0c4a0 461
fd31e9de 462 fM = dynamic_cast<AliEveTRDLoader*>(obj);
14217b5f 463
fd31e9de 464 fFile->SetText(gSystem->BaseName(fM->fFilename.Data()));
14217b5f 465
fd31e9de 466 Bool_t kFile = kTRUE;
467 if(fM->fFilename.CompareTo("") == 0) kFile = kFALSE;
14217b5f 468
fd31e9de 469 fEvent->SetEnabled(kFile);
470 fEvent->GetEntry()->SetIntNumber(fM->fEvent);
51346b82 471
fd31e9de 472 fSMNumber->SetEnabled(kFile);
473 fSMNumber->GetEntry()->SetIntNumber(fM->fSM);
edf0c4a0 474
475
fd31e9de 476 fStackNumber->SetEnabled(kFile);
477 fStackNumber->GetEntry()->SetIntNumber(fM->fStack);
edf0c4a0 478
479
fd31e9de 480 fPlaneNumber->SetEnabled(kFile);
481 fPlaneNumber->GetEntry()->SetIntNumber(fM->fLy);
a282bf09 482}
483
fd31e9de 484//______________________________________________________________________________
d810d0de 485void AliEveTRDLoaderEditor::AddChambers()
a282bf09 486{
a15e6d7d 487 // Slot to add chambers.
488
fd31e9de 489 fM->fSM = (int)fSMNumber->GetEntry()->GetNumber();
490 fM->fStack = (int)fStackNumber->GetEntry()->GetNumber();
491 fM->fLy = (int)fPlaneNumber->GetEntry()->GetNumber();
492 fM->AddChambers(fM->fSM, fM->fStack, fM->fLy);
a282bf09 493}
494
fd31e9de 495//______________________________________________________________________________
d810d0de 496void AliEveTRDLoaderEditor::FileOpen()
a282bf09 497{
a15e6d7d 498 // Slot for opening of file.
499
a282bf09 500 TGFileInfo fi;
14217b5f 501 fi.fIniDir = StrDup(gSystem->DirName (fM->fFilename.Data()));
502 fi.fFilename = StrDup(gSystem->BaseName(fM->fFilename.Data()));
fd31e9de 503 // fi.fFileTypes = tpcfiletypes;
14217b5f 504
84aff7a4 505 new TGFileDialog(fClient->GetRoot(), gEve->GetMainWindow(), kFDOpen, &fi);
a282bf09 506 if (!fi.fFilename) return;
507
508 fFile->SetToolTipText(gSystem->DirName (fi.fFilename));
509 fFile->SetText (gSystem->BaseName(fi.fFilename));
510
fd31e9de 511 fM->Open(gSystem->BaseName(fi.fFilename), gSystem->DirName (fi.fFilename));
edf0c4a0 512
fd31e9de 513 this->SetModel(fM);
a282bf09 514}
515
d810d0de 516void AliEveTRDLoaderEditor::Load()
a282bf09 517{
a15e6d7d 518 // Slot for loading of event.
519
fd31e9de 520 fM->GoToEvent(fM->fEvent);
a282bf09 521}