]>
Commit | Line | Data |
---|---|---|
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 | 43 | class AliTRDdataArrayI; |
44 | ||
d810d0de | 45 | ClassImp(AliEveTRDLoader) |
46 | ClassImp(AliEveTRDLoaderEditor) | |
a282bf09 | 47 | |
48 | /////////////////////////////////////////////////////////// | |
fd31e9de | 49 | ///////////// AliEveTRDLoader ///////////////////// |
a282bf09 | 50 | /////////////////////////////////////////////////////////// |
51 | ||
52 | ||
fd31e9de | 53 | //______________________________________________________________________________ |
54 | AliEveTRDLoader::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 | 72 | namespace |
a282bf09 | 73 | { |
a282bf09 | 74 | template<class T> |
75 | class ID | |
76 | { | |
77 | public: | |
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 | 82 | private: |
a15e6d7d | 83 | const int fkId; |
a282bf09 | 84 | }; |
a15e6d7d | 85 | } |
fd31e9de | 86 | |
87 | void 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 | //______________________________________________________________________________ |
143 | AliEveTRDChamber* 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 | //______________________________________________________________________________ |
159 | Bool_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 | //______________________________________________________________________________ |
203 | Bool_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 | //______________________________________________________________________________ |
227 | Bool_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 | //______________________________________________________________________________ |
250 | Bool_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 | //______________________________________________________________________________ |
273 | Bool_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 | 316 | void 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 | //______________________________________________________________________________ |
328 | void 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 | 347 | void 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 | //______________________________________________________________________________ |
363 | AliEveTRDLoaderEditor::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 | 458 | void 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 | 485 | void 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 | 496 | void 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 | 516 | void AliEveTRDLoaderEditor::Load() |
a282bf09 | 517 | { |
a15e6d7d | 518 | // Slot for loading of event. |
519 | ||
fd31e9de | 520 | fM->GoToEvent(fM->fEvent); |
a282bf09 | 521 | } |