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