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