]>
Commit | Line | Data |
---|---|---|
905654c2 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | ////////////////////////////////////////////////////////////////////////// | |
17 | // // | |
18 | // Graphical User Interface utility class for the MUON trigger // | |
19 | // - digits maps of the trigger chambers // | |
20 | // // | |
21 | ////////////////////////////////////////////////////////////////////////// | |
22 | ||
23 | #include <TCanvas.h> | |
24 | #include <TGFrame.h> | |
25 | #include <TGButton.h> | |
26 | #include <TGTab.h> | |
27 | #include <TRootEmbeddedCanvas.h> | |
28 | #include <TBox.h> | |
29 | #include <TClonesArray.h> | |
30 | #include <TPave.h> | |
31 | #include <TPaveText.h> | |
32 | #include <TStyle.h> | |
33 | #include <TObjArray.h> | |
34 | ||
35 | #include "AliRun.h" | |
36 | ||
37 | #include "AliMUON.h" | |
38 | #include "AliMUONDigit.h" | |
39 | #include "AliMpSegmentation.h" | |
40 | #include "AliMpVSegmentation.h" | |
41 | #include "AliMUONGeometryTransformer.h" | |
42 | #include "AliMUONData.h" | |
43 | ||
44 | #include "AliMUONTriggerGUIboard.h" | |
45 | #include "AliMUONTriggerGUIdimap.h" | |
46 | ||
47 | /// \cond CLASSIMP | |
48 | ClassImp(AliMUONTriggerGUIdimap) | |
49 | /// \endcond | |
50 | ||
51 | //__________________________________________________________________________ | |
52 | AliMUONTriggerGUIdimap::AliMUONTriggerGUIdimap(AliLoader *loader, TObjArray *boards, const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h) | |
53 | : TObject(), | |
54 | fQObject(), | |
55 | fMain(0), | |
56 | fLoader(0), | |
57 | fMUONData(0), | |
58 | fBoards(0), | |
59 | fIsOn(0) | |
60 | { | |
61 | /// frame constructor | |
62 | ||
63 | fLoader = loader; | |
64 | fIsOn = kTRUE; | |
65 | fBoards = boards; | |
66 | ||
67 | fMUONData = new AliMUONData(loader,"MUON","MUON"); | |
68 | fMUONData->SetTreeAddress("D"); | |
69 | ||
70 | gStyle->SetPadLeftMargin(0.05); | |
71 | gStyle->SetPadRightMargin(0.05); | |
72 | gStyle->SetPadTopMargin(0.05); | |
73 | gStyle->SetPadBottomMargin(0.05); | |
74 | ||
75 | gStyle->SetOptDate(0); | |
76 | gStyle->SetOptTitle(0); | |
77 | gStyle->SetOptStat(0); | |
78 | ||
79 | fMain = new TGTransientFrame(p, main, w, h, kVerticalFrame); | |
80 | fMain->Connect("CloseWindow()", "AliMUONTriggerGUIdimap", this, "DoClose()"); | |
81 | fMain->DontCallClose(); // to avoid double deletions. | |
82 | ||
83 | // use hierarchical cleaning | |
84 | fMain->SetCleanup(kDeepCleanup); | |
85 | ||
86 | TGHorizontalFrame *hframe = new TGHorizontalFrame(fMain, 60, 20, kFixedWidth); | |
87 | ||
88 | TGTextButton *closeButton = new TGTextButton(hframe, "Close", 1); | |
89 | closeButton->Connect("Clicked()", "AliMUONTriggerGUIdimap", this, "DoClose()"); | |
90 | ||
91 | hframe->AddFrame(closeButton, | |
92 | new TGLayoutHints(kLHintsTop | | |
93 | kLHintsLeft, | |
94 | 2, 2, 2, 2) | |
95 | ); | |
96 | ||
97 | hframe->Resize(150, closeButton->GetDefaultHeight()); | |
98 | ||
99 | TGTextButton *updateButton = new TGTextButton(hframe, "Update", 2); | |
100 | updateButton->Connect("Clicked()", "AliMUONTriggerGUIdimap", this, "DoUpdate()"); | |
101 | updateButton->SetToolTipText("Read the digits for the current event"); | |
102 | ||
103 | hframe->AddFrame(updateButton, | |
104 | new TGLayoutHints(kLHintsTop | | |
105 | kLHintsLeft, | |
106 | 2, 2, 2, 2) | |
107 | ); | |
108 | ||
109 | hframe->Resize(150, updateButton->GetDefaultHeight()); | |
110 | /* | |
111 | TGTextButton *resetButton = new TGTextButton(hframe, "Reset", 3); | |
112 | resetButton->Connect("Clicked()", "AliMUONTriggerGUIdimap", this, "DoReset()"); | |
113 | resetButton->SetToolTipText("Redraw unselected boards"); | |
114 | ||
115 | hframe->AddFrame(resetButton, | |
116 | new TGLayoutHints(kLHintsTop | | |
117 | kLHintsLeft, | |
118 | 2, 2, 2, 2) | |
119 | ); | |
120 | ||
121 | hframe->Resize(150, resetButton->GetDefaultHeight()); | |
122 | */ | |
123 | fMain->AddFrame(hframe, | |
124 | new TGLayoutHints(kLHintsBottom | | |
125 | kLHintsLeft, | |
126 | 2, 2, 2, 2) | |
127 | ); | |
128 | ||
129 | TGTab *tab = new TGTab(fMain, 300, 300); | |
130 | //tab->Connect("Selected(Int_t)", "AliMUONTriggerGUIdimap", this, "DoTab(Int_t)"); | |
131 | ||
132 | // Tabs for MT11, MT12, MT21, MT22 | |
133 | TGLayoutHints *lot = new TGLayoutHints(kLHintsTop | | |
134 | kLHintsLeft | | |
135 | kLHintsExpandX | | |
136 | kLHintsExpandY, | |
137 | 5, 5, 5, 5); | |
138 | ||
139 | TGCompositeFrame *tf = 0; | |
140 | ||
141 | // Tab for MT11 | |
142 | tf = tab->AddTab("MT11"); | |
143 | ||
144 | TGCompositeFrame *cf1 = new TGCompositeFrame(tf, 60, 60, kHorizontalFrame); | |
145 | fEc[0] = new TRootEmbeddedCanvas("ec1", cf1, 500, 500); | |
146 | cf1->AddFrame(fEc[0], lot); | |
147 | ||
148 | tf->AddFrame(cf1, lot); | |
149 | fEc[0]->GetCanvas()->SetBorderMode(0); | |
150 | fEc[0]->GetCanvas()->SetBit(kNoContextMenu); | |
151 | ||
152 | // Tab for MT12 | |
153 | tf = tab->AddTab("MT12"); | |
154 | ||
155 | TGCompositeFrame *cf2 = new TGCompositeFrame(tf, 60, 60, kHorizontalFrame); | |
156 | fEc[1] = new TRootEmbeddedCanvas("ec2", cf2, 500, 500); | |
157 | cf2->AddFrame(fEc[1], lot); | |
158 | ||
159 | tf->AddFrame(cf2, lot); | |
160 | fEc[1]->GetCanvas()->SetBorderMode(0); | |
161 | fEc[1]->GetCanvas()->SetBit(kNoContextMenu); | |
162 | ||
163 | // Tab for MT21 | |
164 | tf = tab->AddTab("MT21"); | |
165 | ||
166 | TGCompositeFrame *cf3 = new TGCompositeFrame(tf, 60, 60, kHorizontalFrame); | |
167 | fEc[2] = new TRootEmbeddedCanvas("ec3", cf3, 500, 500); | |
168 | cf3->AddFrame(fEc[2], lot); | |
169 | ||
170 | tf->AddFrame(cf3, lot); | |
171 | fEc[2]->GetCanvas()->SetBorderMode(0); | |
172 | fEc[2]->GetCanvas()->SetBit(kNoContextMenu); | |
173 | ||
174 | // Tab for MT22 | |
175 | tf = tab->AddTab("MT22"); | |
176 | ||
177 | TGCompositeFrame *cf4 = new TGCompositeFrame(tf, 60, 60, kHorizontalFrame); | |
178 | fEc[3] = new TRootEmbeddedCanvas("ec4", cf4, 500, 500); | |
179 | cf4->AddFrame(fEc[3], lot); | |
180 | ||
181 | tf->AddFrame(cf4, lot); | |
182 | fEc[3]->GetCanvas()->SetBorderMode(0); | |
183 | fEc[3]->GetCanvas()->SetBit(kNoContextMenu); | |
184 | ||
185 | fMain->AddFrame(tab, | |
186 | new TGLayoutHints(kLHintsBottom | | |
187 | kLHintsExpandX | | |
188 | kLHintsExpandY, | |
189 | 2, 2, 2, 2) | |
190 | ); | |
191 | ||
192 | fMain->MapSubwindows(); | |
193 | fMain->Resize(); | |
194 | ||
195 | fMain->CenterOnParent(); | |
196 | ||
197 | fMain->SetWindowName("Chambers digit maps"); | |
198 | ||
199 | fMain->MapWindow(); | |
200 | ||
201 | DrawMaps(11); | |
202 | DrawMaps(12); | |
203 | DrawMaps(13); | |
204 | DrawMaps(14); | |
205 | ||
206 | } | |
207 | ||
208 | //__________________________________________________________________________ | |
209 | AliMUONTriggerGUIdimap::~AliMUONTriggerGUIdimap() | |
210 | { | |
211 | /// destructor | |
212 | ||
213 | for (Int_t it = 0; it < kNMT; it++) { | |
214 | for (Int_t ib = 0; ib < kNBoards; ib++) { | |
215 | delete fPaveBoard[it][ib]; | |
216 | } | |
217 | } | |
218 | ||
219 | delete fMUONData; | |
220 | fMain->DeleteWindow(); | |
221 | ||
222 | } | |
223 | ||
224 | //__________________________________________________________________________ | |
225 | AliMUONTriggerGUIdimap::AliMUONTriggerGUIdimap(const AliMUONTriggerGUIdimap& dimap) | |
226 | : TObject(), | |
227 | fQObject(), | |
228 | fMain(0), | |
229 | fLoader(0), | |
230 | fMUONData(0), | |
231 | fBoards(0), | |
232 | fIsOn(0) | |
233 | { | |
234 | /// copy constructor | |
235 | ||
236 | dimap.Dump(); | |
237 | Fatal("AliMUONTriggerGUIdimap","copy constructor not implemented"); | |
238 | ||
239 | } | |
240 | ||
241 | //__________________________________________________________________________ | |
242 | AliMUONTriggerGUIdimap & AliMUONTriggerGUIdimap::operator=(const AliMUONTriggerGUIdimap& dimap) | |
243 | { | |
244 | /// asignment operator | |
245 | ||
246 | dimap.Dump(); | |
247 | Fatal("AliMUONTriggerGUIdimap","assignment operator not implemented"); | |
248 | ||
249 | return *this; | |
250 | ||
251 | } | |
252 | ||
253 | //__________________________________________________________________________ | |
254 | void AliMUONTriggerGUIdimap::DrawMaps(Int_t chamber) | |
255 | { | |
256 | /// draw the digits map for chamber- | |
257 | ||
258 | TString mapspath = gSystem->Getenv("ALICE_ROOT"); | |
259 | mapspath.Append("/MUON/data"); | |
260 | ||
261 | TCanvas *canvas = fEc[chamber-11]->GetCanvas(); | |
262 | canvas->cd(); | |
263 | canvas->Clear(); | |
264 | ||
265 | AliMUONDigit *mdig; | |
266 | AliMpPad mpad; | |
267 | ||
268 | AliRunLoader *runLoader = fLoader->GetRunLoader(); | |
269 | gAlice = runLoader->GetAliRun(); | |
270 | AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON"); | |
271 | const AliMUONGeometryTransformer* kGeomTransformer = pMUON->GetGeometryTransformer(); | |
272 | ||
273 | TClonesArray *muonDigits = fMUONData->Digits(chamber-1); | |
274 | if (muonDigits == 0) { printf("No muonDigits \n"); return; } | |
275 | gAlice->ResetDigits(); | |
276 | fMUONData->GetDigits(); | |
277 | Int_t nDigits = muonDigits->GetEntriesFast(); | |
278 | ||
279 | TPaveText *label; | |
280 | TBox *boxd; | |
281 | ||
282 | Char_t fntxt[6], name[8], cln[2]; | |
283 | Int_t detElemId, cathode, ix, iy, charge, color; | |
284 | Int_t side, col, line, nbx; | |
285 | Int_t holdS, holdL, holdC; | |
286 | Float_t xCenter, yCenter, zCenter, xWidth, yWidth, holdXC, holdYC; | |
287 | Float_t xMin, xMax, yMin, yMax; | |
288 | Float_t ptx1, ptx2, pty1, pty2; | |
289 | Float_t xpmin, xpmax, ypmin, ypmax; | |
290 | Float_t xg1, xg2, yg1, yg2, zg1; | |
291 | ||
292 | Float_t frameXmax = 0., frameYmax = 0.; | |
293 | ||
294 | switch(chamber) { | |
295 | case 11: | |
296 | frameXmax = 257.0; | |
297 | frameYmax = 306.6; | |
298 | break; | |
299 | case 12: | |
300 | frameXmax = 259.7; | |
301 | frameYmax = 309.9; | |
302 | break; | |
303 | case 13: | |
304 | frameXmax = 273.0; | |
305 | frameYmax = 325.7; | |
306 | break; | |
307 | case 14: | |
308 | frameXmax = 275.7; | |
309 | frameYmax = 329.0; | |
310 | break; | |
311 | } | |
312 | ||
313 | canvas->Range( | |
314 | -(1.15*frameXmax), | |
315 | -(1.15*frameYmax), | |
316 | +(1.15*frameXmax), | |
317 | +(1.15*frameYmax) | |
318 | ); | |
319 | ||
320 | // draw the boards | |
321 | ||
322 | sprintf(fntxt,"%s/guimapp%2d.txt",mapspath.Data(),chamber); | |
323 | FILE *ftxt = fopen(fntxt,"r"); | |
324 | ||
325 | for (Int_t ib = 0; ib < kNBoards; ib++) { | |
326 | ||
327 | fscanf(ftxt,"%d %d %d %d %f %f %f %f %f %s \n", | |
328 | &side,&col,&line,&nbx, | |
329 | &xCenter,&yCenter,&xWidth,&yWidth,&zCenter, | |
330 | &name[0]); | |
331 | ||
332 | //printf("%d %d %d %d %f %f %f %f %f %s \n",side,col,line,nbx,xCenter,yCenter,xWidth,yWidth,zCenter,name); | |
333 | ||
334 | holdS = side; | |
335 | holdC = col; | |
336 | holdL = line; | |
337 | ||
338 | holdXC = xCenter; | |
339 | holdYC = yCenter; | |
340 | ||
341 | xMin = xCenter - xWidth/2; | |
342 | xMax = xCenter + xWidth/2; | |
343 | yMin = yCenter - yWidth/2; | |
344 | yMax = yCenter + yWidth/2; | |
345 | ||
346 | fPaveBoard[chamber-11][ib] = new TPave(xMin,yMin,xMax,yMax,1); | |
347 | fPaveBoard[chamber-11][ib]->SetBit(kCannotPick); | |
348 | fPaveBoard[chamber-11][ib]->SetFillStyle(0); | |
349 | fPaveBoard[chamber-11][ib]->Draw(); | |
350 | ||
351 | Float_t lWidth = 12.0; | |
352 | ||
353 | if (holdL == 9) { | |
354 | ||
355 | sprintf(cln,"C%1d",holdC); | |
356 | ||
357 | ptx1 = holdXC - lWidth; | |
358 | ptx2 = holdXC + lWidth; | |
359 | pty1 = +1.065*frameYmax - lWidth; | |
360 | pty2 = +1.065*frameYmax + lWidth; | |
361 | ||
362 | label = new TPaveText(ptx1,pty1,ptx2,pty2,cln); | |
363 | label->AddText(cln); | |
364 | label->SetBorderSize(0); | |
365 | label->SetBit(kCannotPick); | |
366 | label->Draw(); | |
367 | } | |
368 | if (holdL == 1) { | |
369 | ||
370 | sprintf(cln,"C%1d",holdC); | |
371 | ||
372 | ptx1 = holdXC - lWidth; | |
373 | ptx2 = holdXC + lWidth; | |
374 | pty1 = -1.065*frameYmax - lWidth; | |
375 | pty2 = -1.065*frameYmax + lWidth; | |
376 | ||
377 | label = new TPaveText(ptx1,pty1,ptx2,pty2,cln); | |
378 | label->AddText(cln); | |
379 | label->SetBorderSize(0); | |
380 | label->SetBit(kCannotPick); | |
381 | label->Draw(); | |
382 | } | |
383 | if (holdS == 0 && holdC == 7) { | |
384 | ||
385 | sprintf(cln,"L%1d",holdL); | |
386 | ||
387 | ptx1 = -1.07*frameXmax - lWidth; | |
388 | ptx2 = -1.07*frameXmax + lWidth; | |
389 | pty1 = holdYC - lWidth; | |
390 | pty2 = holdYC + lWidth; | |
391 | ||
392 | label = new TPaveText(ptx1,pty1,ptx2,pty2,cln); | |
393 | label->AddText(cln); | |
394 | label->SetBorderSize(0); | |
395 | label->SetBit(kCannotPick); | |
396 | label->Draw(); | |
397 | } | |
398 | if (holdS == 1 && holdC == 7) { | |
399 | ||
400 | sprintf(cln,"L%1d",holdL); | |
401 | ||
402 | ptx1 = +1.07*frameXmax - lWidth; | |
403 | ptx2 = +1.07*frameXmax + lWidth; | |
404 | pty1 = holdYC - lWidth; | |
405 | pty2 = holdYC + lWidth; | |
406 | ||
407 | label = new TPaveText(ptx1,pty1,ptx2,pty2,cln); | |
408 | label->AddText(cln); | |
409 | label->SetBorderSize(0); | |
410 | label->SetBit(kCannotPick); | |
411 | label->Draw(); | |
412 | } | |
413 | ||
414 | } | |
415 | ||
416 | fclose(ftxt); | |
417 | ||
418 | // draw digits set from the board GUI | |
419 | ||
420 | AliMUONTriggerGUIboard *board; | |
421 | Int_t imt = chamber -11; | |
422 | Int_t nStripX, nStripY; | |
423 | TBox *box; | |
424 | for (Int_t ib = 0; ib < kNBoards; ib++) { | |
425 | ||
426 | board = (AliMUONTriggerGUIboard*)fBoards->At(ib); | |
427 | ||
428 | xCenter = board->GetXCenter(imt); | |
429 | yCenter = board->GetYCenter(imt); | |
430 | ||
431 | nStripX = board->GetXSiy2() - board->GetXSiy1() + 1; | |
432 | nStripY = board->GetYSix2() - board->GetYSix1() + 1 ; | |
433 | ||
434 | for (Int_t is = 0; is < nStripX; is++) { | |
435 | ||
436 | if (board->GetXDig(imt,is) == 0) continue; | |
437 | ||
438 | box = board->GetXDigBox(imt,is); | |
439 | ||
440 | xpmin = box->GetX1(); | |
441 | xpmax = box->GetX2(); | |
442 | ypmin = box->GetY1(); | |
443 | ypmax = box->GetY2(); | |
444 | ||
445 | xpmin += xCenter; | |
446 | xpmax += xCenter; | |
447 | ypmin += yCenter; | |
448 | ypmax += yCenter; | |
449 | ||
450 | box->DrawBox(xpmin,ypmin,xpmax,ypmax); | |
451 | ||
452 | } | |
453 | ||
454 | for (Int_t is = 0; is < nStripY; is++) { | |
455 | ||
456 | if (board->GetYDig(imt,is) == 0) continue; | |
457 | ||
458 | box = board->GetYDigBox(imt,is); | |
459 | ||
460 | xpmin = box->GetX1(); | |
461 | xpmax = box->GetX2(); | |
462 | ypmin = box->GetY1(); | |
463 | ypmax = box->GetY2(); | |
464 | ||
465 | xpmin += xCenter; | |
466 | xpmax += xCenter; | |
467 | ypmin += yCenter; | |
468 | ypmax += yCenter; | |
469 | ||
470 | box->DrawBox(xpmin,ypmin,xpmax,ypmax); | |
471 | ||
472 | } | |
473 | ||
474 | } | |
475 | ||
476 | // draw the digits | |
477 | ||
478 | for (Int_t id = 0; id < nDigits; id++) { | |
479 | ||
480 | mdig = (AliMUONDigit*)muonDigits->UncheckedAt(id); | |
481 | ||
482 | cathode = mdig->Cathode()+1; | |
483 | ||
484 | ix=mdig->PadX(); | |
485 | iy=mdig->PadY(); | |
486 | detElemId=mdig->DetElemId(); | |
487 | charge = (Int_t)mdig->Signal(); | |
488 | color = 261+5*(charge-1); | |
489 | if (color > 282) color = 282; | |
490 | ||
491 | const AliMpVSegmentation* seg2 = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::GetCathodType(cathode-1)); | |
492 | ||
493 | mpad = seg2->PadByIndices(AliMpIntPair(ix,iy),kTRUE); | |
494 | ||
495 | // get the pad position and dimensions | |
496 | Float_t xlocal1 = mpad.Position().X(); | |
497 | Float_t ylocal1 = mpad.Position().Y(); | |
498 | Float_t xlocal2 = mpad.Dimensions().X(); | |
499 | Float_t ylocal2 = mpad.Dimensions().Y(); | |
500 | ||
501 | kGeomTransformer->Local2Global(detElemId, xlocal1, ylocal1, 0, xg1, yg1, zg1); | |
502 | // (no transformation for pad dimensions) | |
503 | xg2 = xlocal2; | |
504 | yg2 = ylocal2; | |
505 | ||
506 | // transform in the monitor coordinate system | |
507 | //xpmin = -(xg1+xg2); | |
508 | //xpmax = -(xg1-xg2); | |
509 | //ypmin = -(yg2-yg1); | |
510 | //ypmax = +(yg2+yg1); | |
511 | // ALICE SC | |
512 | xpmin = +(xg1-xg2); | |
513 | xpmax = +(xg1+xg2); | |
514 | ypmin = -(yg2-yg1); | |
515 | ypmax = +(yg2+yg1); | |
516 | ||
517 | boxd = new TBox(xpmin,ypmin,xpmax,ypmax); | |
518 | boxd->SetBit(kCannotPick); | |
519 | boxd->SetFillStyle(1001); | |
520 | boxd->SetFillColor(2); | |
521 | boxd->Draw(); | |
522 | ||
523 | } // end digits loop | |
524 | ||
525 | canvas->Modified(); | |
526 | canvas->Update(); | |
527 | ||
528 | } | |
529 | ||
530 | //__________________________________________________________________________ | |
531 | void AliMUONTriggerGUIdimap::DoTab(Int_t id) const | |
532 | { | |
533 | /// some action when chamber tab is selected... | |
534 | ||
535 | switch (id) { | |
536 | case 0: | |
537 | break; | |
538 | case 1: | |
539 | break; | |
540 | case 2: | |
541 | break; | |
542 | case 3: | |
543 | break; | |
544 | default: | |
545 | break; | |
546 | } | |
547 | ||
548 | } | |
549 | ||
550 | //__________________________________________________________________________ | |
551 | void AliMUONTriggerGUIdimap::DoClose() | |
552 | { | |
553 | /// close the main frame | |
554 | ||
555 | fIsOn = kFALSE; | |
556 | CloseWindow(); | |
557 | ||
558 | } | |
559 | ||
560 | //__________________________________________________________________________ | |
561 | void AliMUONTriggerGUIdimap::DoUpdate() | |
562 | { | |
563 | /// update maps for another run/event | |
564 | ||
565 | //fMUONData->SetLoader(fLoader); | |
566 | fMUONData = new AliMUONData(fLoader,"MUON","MUON"); | |
567 | fMUONData->SetTreeAddress("D"); | |
568 | ||
569 | for (Int_t it = 0; it < kNMT; it++) { | |
570 | for (Int_t ib = 0; ib < kNBoards; ib++) { | |
571 | delete fPaveBoard[it][ib]; | |
572 | } | |
573 | } | |
574 | ||
575 | DrawMaps(11); | |
576 | DrawMaps(12); | |
577 | DrawMaps(13); | |
578 | DrawMaps(14); | |
579 | ||
580 | AliMUONTriggerGUIboard *board; | |
581 | for (Int_t ib = 0; ib < kNBoards; ib++) { | |
582 | board = (AliMUONTriggerGUIboard*)fBoards->At(ib); | |
583 | if (board->IsOpen()) SelectBoard(ib); | |
584 | } | |
585 | ||
586 | } | |
587 | ||
588 | //__________________________________________________________________________ | |
589 | void AliMUONTriggerGUIdimap::DoReset() | |
590 | { | |
591 | /// draw unselected boards | |
592 | ||
593 | for (Int_t it = 0; it < kNMT; it++) { | |
594 | ||
595 | TCanvas *canvas = fEc[it]->GetCanvas(); | |
596 | canvas->cd(); | |
597 | ||
598 | for (Int_t ib = 0; ib < kNBoards; ib++) { | |
599 | fPaveBoard[it][ib]->SetFillStyle(0); | |
600 | } | |
601 | ||
602 | canvas->Modified(); | |
603 | canvas->Update(); | |
604 | ||
605 | } | |
606 | ||
607 | } | |
608 | ||
609 | //__________________________________________________________________________ | |
610 | void AliMUONTriggerGUIdimap::SelectBoard(Int_t id) | |
611 | { | |
612 | /// highlight on the map the open board | |
613 | ||
614 | for (Int_t it = 0; it < kNMT; it++) { | |
615 | ||
616 | TCanvas *canvas = fEc[it]->GetCanvas(); | |
617 | canvas->cd(); | |
618 | ||
619 | fPaveBoard[it][id]->SetFillStyle(4020); | |
620 | fPaveBoard[it][id]->SetFillColor(7); | |
621 | ||
622 | canvas->Modified(); | |
623 | canvas->Update(); | |
624 | ||
625 | } | |
626 | ||
627 | } | |
628 | ||
629 | //__________________________________________________________________________ | |
630 | void AliMUONTriggerGUIdimap::CloseWindow() | |
631 | { | |
632 | /// called when window is closed via the window manager. | |
633 | ||
634 | fMain->CloseWindow(); | |
635 | ||
636 | } | |
637 | ||
638 |