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