AliRoot Core  v5-06-15 (45dab64)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliMUONMchViewApplication.cxx
Go to the documentation of this file.
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 // $Id$
17 
19 
20 #include "AliCDBManager.h"
21 #include "AliCodeTimer.h"
22 #include "AliLog.h"
24 #include "AliMUONChamberPainter.h"
25 #include "AliMUONDEPainter.h"
28 #include "AliMUONPainterEnv.h"
29 #include "AliMUONPainterHelper.h"
30 #include "AliMUONPainterGroup.h"
32 #include "AliMUONPainterMatrix.h"
33 #include "AliMUONPainterRegistry.h"
36 #include "AliMUONVTrackerData.h"
38 #include <Riostream.h>
39 #include <TCanvas.h>
40 #include <TEnv.h>
41 #include <TFile.h>
42 #include <TGClient.h>
43 #include <TGFileDialog.h>
44 #include <TGMenu.h>
45 #include <TGTab.h>
46 #include <TGTextView.h>
47 #include <TGrid.h>
48 #include <TKey.h>
49 #include <TList.h>
50 #include <TRegexp.h>
51 #include <TString.h>
52 #include <TSystem.h>
53 
59 
60 using std::cout;
61 using std::endl;
65 
66 const Int_t AliMUONMchViewApplication::fgkFILESAVEAS(1);
67 const Int_t AliMUONMchViewApplication::fgkFILEOPEN(2);
68 const Int_t AliMUONMchViewApplication::fgkFILEEXIT(3);
69 const Int_t AliMUONMchViewApplication::fgkFILEPRINTAS(4);
70 const Int_t AliMUONMchViewApplication::fgkABOUT(5);
71 const Int_t AliMUONMchViewApplication::fgkCOMPAREDATA(6);
72 const Int_t AliMUONMchViewApplication::fgkCOMPAREALIGNMENTS(7);
73 
74 const char* AliMUONMchViewApplication::fgkFileTypes[] = {
75  "ROOT files", "*.root",
76  "All files", "*",
77  0, 0 };
78 
79 //______________________________________________________________________________
81  int* argc, char** argv,
82  UInt_t w, UInt_t h,
83  UInt_t ox, UInt_t oy)
84 : TRint(name,argc,argv),
85  fMainFrame(0x0),
86  fPainterMasterFrameList(new TList),
87  fTabs(0x0)
88 {
89 
93 
94  if (!w || !h)
95  {
96  w = (UInt_t)(gClient->GetDisplayWidth()*0.7);
97  h = (UInt_t)(gClient->GetDisplayHeight()*0.9);
98  }
99 
100  fMainFrame = new TGMainFrame(gClient->GetRoot(),w,h);
101 
102  CreateMenuBar(w);
103 
104  const Int_t kbs = 2;
105 
106 // h -= 60; // menubar
107 
108  fTabs = new TGTab(fMainFrame,w,h);
109 
110  TGCompositeFrame* t = fTabs->AddTab("Painter Master Frame");
111 
112  fPainterMasterFrameList->SetOwner(kTRUE);
113 
114 
115  AliMUONPainterMasterFrame* pmf = new AliMUONPainterMasterFrame(t,t->GetWidth()-kbs*2,t->GetHeight()-kbs*2,
117 
118  fPainterMasterFrameList->Add(pmf);
119 
120  t->AddFrame(pmf, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,kbs,kbs,kbs,kbs));
121 
122  t = fTabs->AddTab("Data Sources");
123 
125  new AliMUONPainterDataSourceFrame(t,t->GetWidth()-kbs*2,t->GetHeight()-kbs*2);
126 
127  t->AddFrame(dsf,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,kbs,kbs,kbs,kbs));
128 
129  fMainFrame->AddFrame(fTabs,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,0,0,0,0));
130 
131  fMainFrame->SetWindowName("mchview - Visualization of MUON Tracker detector");
132 
133  fMainFrame->MapSubwindows();
134  fMainFrame->Resize();
135 
136  pmf->Update();
137 
138  fMainFrame->MapWindow();
139 
140  fMainFrame->Connect("CloseWindow()","AliMUONMchViewApplication",this,"Terminate()");
141 
142 // fMainFrame->MoveResize(ox,oy, w, h);
143  fMainFrame->SetWMPosition(ox, oy);
144 // fMainFrame->SetWMSizeHints(w,h,w,h,0,0);
145 // fMainFrame->SetWMSizeHints(w,h,w,h,10,10);
146 
147  cout << "***************************************************" << endl;
148  cout << " Welcome to mchview" << endl;
149  cout << " " << FullVersion() << endl;
150  cout << "***************************************************" << endl;
151 
152  // Trying to see if we're requested to draw something specific instead
153  // of the global view of all the chambers
154 
155  AliMUONVPainter* painter(0x0);
156  TObjArray args;
157  args.SetOwner(kTRUE);
158 
159  for ( int i = 1; i < argc[0]; ++i )
160  {
161  args.Add(new TObjString(argv[i]));
162  }
163 
164  for ( Int_t i = 0; i <= args.GetLast(); ++i )
165  {
166  TString a(static_cast<TObjString*>(args.At(i))->String());
167 
168  AliMUONAttPainter att;
169 
170  att.SetPlane(kTRUE,kFALSE);
171  att.SetCathode(kFALSE,kFALSE);
172  att.SetViewPoint(kTRUE,kFALSE);
173 
174  if ( a == "--de" )
175  {
176  Int_t detElemId = static_cast<TObjString*>(args.At(i+1))->String().Atoi();
177 
178  painter = new AliMUONDEPainter(att,detElemId);
179 
180  painter->SetOutlined("*",kFALSE);
181  painter->SetOutlined("BUSPATCH",kTRUE);
182 
183  painter->SetLine(1,4,3);
184  ++i;
185  }
186 
187  if ( a == "--chamber" )
188  {
189  Int_t chamberId = static_cast<TObjString*>(args.At(i+1))->String().Atoi();
190 
191  painter = new AliMUONChamberPainter(att,chamberId-1);
192 
193  painter->SetOutlined("*",kFALSE);
194  painter->SetOutlined("DE",kTRUE);
195 
196  painter->SetLine(1,4,3);
197  ++i;
198  }
199 
200  }
201 
202  if ( painter )
203  {
204  pmf->ShiftClicked(painter,0x0);
205 
206  pmf->Update();
207  }
208 
209 }
210 
211 //______________________________________________________________________________
213 {
216 }
217 
218 //_____________________________________________________________________________
221 {
223 
224  AliCodeTimerAuto("",0);
225 
226  AliMUONAttPainter att;
227 
228  att.SetViewPoint(kTRUE,kFALSE);
229  att.SetCathode(kFALSE,kFALSE);
230  att.SetPlane(kTRUE,kFALSE);
231 
232  AliMUONPainterMatrix* matrix = new AliMUONPainterMatrix("Tracker",5,2);
233 
234  for ( Int_t i = 0; i < 10; ++i )
235  {
236  AliMUONVPainter* painter = new AliMUONChamberPainter(att,i);
237 
238  painter->SetResponder("Chamber");
239 
240  painter->SetOutlined("*",kFALSE);
241 
242  painter->SetOutlined("MANU",kTRUE);
243 
244  for ( Int_t j = 0; j < 3; ++j )
245  {
246  painter->SetLine(j,1,4-j);
247  }
248 
249  matrix->Adopt(painter);
250  }
252  return matrix;
253 }
254 
255 //______________________________________________________________________________
256 void
258 {
260  TGTransientFrame* t = new AliMUONAlignmentCompareDialog(gClient->GetRoot(),
261  gClient->GetRoot(),
262  400,400);
263 
264  t->MapSubwindows();
265  t->Resize();
266  t->MapWindow();
267  t->CenterOnParent();
268 
269  // set names
270 
271  t->SetWindowName("mchview compare alignments tool");
272  t->SetIconName("mchview compare alignments tool");
273 
274  t->MapRaised();
275 }
276 
277 //______________________________________________________________________________
278 void
280 {
282  TGTransientFrame* t = new AliMUONTrackerDataCompareDialog(gClient->GetRoot(),
283  gClient->GetRoot(),
284  400,400);
285 
286  t->MapSubwindows();
287  t->Resize();
288  t->MapWindow();
289  t->CenterOnParent();
290 
291  // set names
292 
293  t->SetWindowName("mchview compare data tool");
294  t->SetIconName("mchview compare data tool");
295 
296  t->MapRaised();
297 }
298 
299 //______________________________________________________________________________
300 void
302 {
304 
305  TGPopupMenu* file = new TGPopupMenu(gClient->GetRoot());
306 
307  file->AddEntry("&Open...",fgkFILEOPEN);
308  file->AddEntry("&Save As...",fgkFILESAVEAS);
309  file->AddEntry("&Print As...",fgkFILEPRINTAS);
310  file->AddEntry("&Exit",fgkFILEEXIT);
311 
312  TGMenuBar* bar = new TGMenuBar(fMainFrame,w);
313 
314  TGPopupMenu* tools = new TGPopupMenu(gClient->GetRoot());
315  tools->AddEntry("&Compare data",fgkCOMPAREDATA);
316  tools->AddEntry("&Compare alignments",fgkCOMPAREALIGNMENTS);
317 
318  TGPopupMenu* about = new TGPopupMenu(gClient->GetRoot());
319  about->AddEntry(FullVersion(),fgkABOUT);
320 
321  file->Connect("Activated(Int_t)","AliMUONMchViewApplication",this,"HandleMenu(Int_t)");
322  about->Connect("Activated(Int_t)","AliMUONMchViewApplication",this,"HandleMenu(Int_t)");
323  tools->Connect("Activated(Int_t)","AliMUONMchViewApplication",this,"HandleMenu(Int_t)");
324 
325  bar->AddPopup("&File",file,new TGLayoutHints(kLHintsLeft|kLHintsTop));
326  bar->AddPopup("&Tools",tools,new TGLayoutHints(kLHintsLeft|kLHintsTop));
327  bar->AddPopup("&About",about,new TGLayoutHints(kLHintsRight|kLHintsTop));
328 
329  fMainFrame->AddFrame(bar,new TGLayoutHints(kLHintsLeft|kLHintsExpandX));
330 
332 }
333 
334 //______________________________________________________________________________
335 void
337 {
339 
340  switch (i)
341  {
342  case fgkFILEEXIT:
343  Terminate(1);
344  break;
345  case fgkFILEOPEN:
346  Open();
347  break;
348  case fgkFILESAVEAS:
349  Save();
350  break;
351  case fgkFILEPRINTAS:
352  PrintAs();
353  break;
354  case fgkABOUT:
355  ReleaseNotes();
356  break;
357  case fgkCOMPAREDATA:
358  CompareData();
359  break;
362  break;
363  default:
364  break;
365  }
366 }
367 
368 //______________________________________________________________________________
369 void
371 {
373 
374  TGFileInfo fileInfo;
375 
376  fileInfo.fFileTypes = fgkFileTypes;
377 
378  delete[] fileInfo.fIniDir;
379 
381 
382  fileInfo.fIniDir = StrDup(env->String("LastOpenDir","."));
383 
384  new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
385  kFDOpen,&fileInfo);
386 
387  env->Set("LastOpenDir",fileInfo.fIniDir);
388  env->Save();
389 
390  Open(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
391 }
392 
393 //______________________________________________________________________________
394 void
395 AliMUONMchViewApplication::Open(const char* filename)
396 {
398 
399  TString sfilename(gSystem->ExpandPathName(filename));
400 
401  if ( sfilename.Contains(TRegexp("^alien")) )
402  {
403  // insure we've initialized the grid...
404  if (!gGrid)
405  {
406  TGrid::Connect("alien://");
407  }
408  }
409 
410  TFile* f = TFile::Open(filename);
411 
412  ReadDir(*f);
413 
414  delete f;
415 }
416 
417 //______________________________________________________________________________
418 void
420 {
422 
423  TList* keys = dir.GetListOfKeys();
424  TIter next(keys);
425 
426  TKey* k;
427 
428  while ( ( k = static_cast<TKey*>(next()) ) )
429  {
430  TObject* object = k->ReadObj();
431 
432  if ( object->InheritsFrom("TDirectory") )
433  {
434  TDirectory* d = static_cast<TDirectory*>(object);
435  ReadDir(*d);
436  continue;
437  }
438 
439  if ( object->InheritsFrom("AliMUONVTrackerDataMaker") )
440  {
441  AliMUONVTrackerDataMaker* maker = dynamic_cast<AliMUONVTrackerDataMaker*>(object);
442  if ( maker )
443  {
445  }
446  }
447 
448  if ( object->InheritsFrom("AliMUONVTrackerData") )
449  {
450  // this is for backward compatibility. Early versions of mchview
451  // wrote VTrackerData objects, and not VTrackerDataMaker ones.
452 
453  AliMUONVTrackerData* data = dynamic_cast<AliMUONVTrackerData*>(object);
454  if ( data )
455  {
458  }
459  }
460  }
461 
462 }
463 
464 //______________________________________________________________________________
465 void
467 {
469 
470  TGFileInfo fileInfo;
471 
472  new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
473  kFDSave,&fileInfo);
474 
475  TIter next(fPainterMasterFrameList);
477  Bool_t first(kTRUE);
478 
479  while ( ( pmf = static_cast<AliMUONPainterMasterFrame*>(next()) ) )
480  {
481  pmf->SaveAs(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)),
482  first ? "RECREATE" : "UPDATE");
483  first = kFALSE;
484  }
485 }
486 
487 //______________________________________________________________________________
488 void
490 {
492 
493  UInt_t width = 600;
494  UInt_t height = 400;
495 
496  TGTransientFrame* t = new TGTransientFrame(gClient->GetRoot(),gClient->GetRoot(),width,height);
497 
498  TGTextView* rn = new TGTextView(t);
499 
500  rn->AddLine("1.20");
501  rn->AddLine("");
502  rn->AddLine("- Get the data source range settings (for display) persistent, by adding them to the .mchviewrc resource file");
503  rn->AddLine("- Added two new buttons below the color palette to set default range values and return to them");
504  rn->AddLine("");
505  rn->AddLine("WARNING : resource file format changed. Please remove old one before launching this new version !");
506  rn->AddLine("");
507 
508  rn->AddLine("1.18");
509  rn->AddLine("");
510  rn->AddLine("- Do not connect to the Grid by default if OCDB is from cvmfs");
511  rn->AddLine("- Add disableAutoPedCanvas: 1|0 option to .mchviewrc to disable auto generation of pedestal canvases when opening a ped data source");
512 
513  rn->AddLine("");
514 
515  rn->AddLine("1.17");
516  rn->AddLine("");
517  rn->AddLine("Default OCDB is now cvmfs (for the current year) if that mounting point exists");
518  rn->AddLine("");
519 
520  rn->AddLine("1.16");
521  rn->AddLine("");
522  rn->AddLine("Default OCDB is now raw:// (following the fact that 'code' OCDB is not longer installed");
523  rn->AddLine("If you want a purely local execution you'll need a local copy of the OCDB and use the --ocdb option to point mchview to it");
524  rn->AddLine("");
525 
526  rn->AddLine("1.15");
527  rn->AddLine("");
528  rn->AddLine("Fixing display of data at pad level (pads were hollow)");
529  rn->AddLine("");
530 
531  rn->AddLine("1.14");
532  rn->AddLine("");
533  rn->AddLine("Fixing anti-aliasing problem on MacOSX");
534  rn->AddLine("");
535 
536  rn->AddLine("1.13");
537  rn->AddLine("");
538  rn->AddLine("Make default OCDB = 2013 one");
539  rn->AddLine("");
540 
541  rn->AddLine("1.11");
542  rn->AddLine("");
543  rn->AddLine("Adding [Compare alignments] in the Tools menu + make default OCDB be 2012's version");
544  rn->AddLine("");
545 
546  rn->AddLine("1.10");
547  rn->AddLine("");
548  rn->AddLine("Make the raw OCDB more obvious in the data source tab");
549  rn->AddLine("");
550 
551  rn->AddLine("1.08");
552  rn->AddLine("");
553  rn->AddLine("Changed the default OCDB to 2011 version");
554  rn->AddLine("");
555 
556  rn->AddLine("1.07");
557  rn->AddLine("");
558  rn->AddLine("Added the RejectList as a possible OCDB data source");
559  rn->AddLine("");
560 
561  rn->AddLine("1.06");
562  rn->AddLine("");
563  rn->AddLine("Changed a bit the HV display. Now a trip is indicated with a value of -1");
564  rn->AddLine("");
565 
566  rn->AddLine("1.05");
567  rn->AddLine("");
568  rn->AddLine("Added the possibility to select an event range when reading raw data");
569  rn->AddLine("Usefull e.g. to look at a single suspect event...");
570  rn->AddLine("");
571 
572  rn->AddLine("1.04");
573  rn->AddLine("");
574  rn->AddLine("Changed the default OCDB to 2010 version");
575  rn->AddLine("");
576 
577  rn->AddLine("1.03");
578  rn->AddLine("");
579  rn->AddLine("Add Print buttons");
580  rn->AddLine("Add the automatic creation of often used canvases when using pedestal source");
581  // Internal reorganization to allow several independent tabs to be created to
582  // show different master frames (not used yet). Important for the moment
583  // is the ability to create a PainterMatrix and pass it to the PainterMasterFrame
584  rn->AddLine("");
585 
586  rn->AddLine("1.02");
587  rn->AddLine("");
588  rn->AddLine("Internal change (merging of AliMUONTrackerACFDataMaker and AliMUONTrackerOCDBDataMaker into AliMUONTrackerConditionDataMaker)");
589  rn->AddLine("Added --ocdb option");
590  rn->AddLine("Corrected the display of the configuration");
591  rn->AddLine("Corrected the interpretation of the switches for the HV display");
592  rn->AddLine("");
593 
594  rn->AddLine("1.01");
595  rn->AddLine("");
596  rn->AddLine("Added the configuration as a possible OCDB data source");
597  rn->AddLine("");
598 
599  rn->AddLine("1.00");
600  rn->AddLine("");
601  rn->AddLine("Added the Status and StatusMap as a possible OCDB data source");
602  rn->AddLine("");
603  rn->AddLine("Added one (computed) dimension to the Gains data source = 1/a1/0.2 (mV/fC)");
604  rn->AddLine("");
605 
606  rn->AddLine("0.99a");
607  rn->AddLine("");
608  rn->AddLine("Added the --de and --chamber options");
609  rn->AddLine("");
610 
611  rn->AddLine("0.99");
612  rn->AddLine("");
613  rn->AddLine("The chamberid in the label (top right of panel) is now starting at 1 as in common usage");
614  rn->AddLine("");
615 
616  rn->AddLine("0.98");
617  rn->AddLine("");
618  rn->AddLine("Added --asciimapping option");
619  rn->AddLine("");
620 
621  rn->AddLine("0.97");
622  rn->AddLine("");
623  rn->AddLine("Adding calibration option with Emelec (aka injection) gain");
624  rn->AddLine("");
625 
626  rn->AddLine("0.96a");
627  rn->AddLine("");
628  rn->AddLine("Internal reorganization of the contour computations, that lead to improved performance. ");
629  rn->AddLine("Improved enough to be able to remove completely the usage of the padstore.root file with precomputed contours.");
630  rn->AddLine("");
631 
632  rn->AddLine("0.96");
633  rn->AddLine("");
634  rn->AddLine("New features");
635  rn->AddLine("");
636  rn->AddLine("- Can now read raw data from memory (using the mem://@gdc: syntax)");
637  rn->AddLine("- Raw data decoder now automatically skips buspatches with parity errors");
638  rn->AddLine("");
639 
640  rn->AddLine("0.95");
641  rn->AddLine("");
642  rn->AddLine("New features");
643  rn->AddLine("");
644  rn->AddLine("- Can now read and display HV values from OCDB");
645  rn->AddLine("- New program option --geometry to force geometry of the window");
646  rn->AddLine("- Added possibility, in painters' context menu, to include or exclude part of the detector");
647  rn->AddLine(" (which will be used later on to communicate with LC2 which parts should be read out or not)");
648  rn->AddLine("");
649  rn->AddLine("Improvement");
650  rn->AddLine("");
651  rn->AddLine("- When displaying Gains, the quality information is now decoded");
652  rn->AddLine("");
653 
654  rn->AddLine("0.94");
655  rn->AddLine("");
656  rn->AddLine("New features");
657  rn->AddLine("");
658  rn->AddLine("Can now read ASCII calibration files produced by the DA");
659  rn->AddLine("");
660 
661  rn->AddLine("0.93");
662  rn->AddLine("");
663  rn->AddLine("New features");
664  rn->AddLine("");
665  rn->AddLine("- Adding a Lock button under the color slider to lock the range shown");
666  rn->AddLine(" when switching between views");
667  rn->AddLine("- Default display now shows bending plane (instead of cathode 0 before)");
668  rn->AddLine("- If pad is responder and there's some histo for that pad, ");
669  rn->AddLine(" clicking on it will display an histo");
670  rn->AddLine("- Right-click on a painter will now display several histogram options");
671  rn->AddLine(" (e.g. raw charge as before, but also simple distributions of mean");
672  rn->AddLine(" and sigma");
673  rn->AddLine("- In the Data Sources Tab, each data source can now be removed and saved");
674  rn->AddLine("- There's a new Tool menu which allow to produce a TrackerData from two others");
675  rn->AddLine(" in order to compare data.");
676  rn->AddLine(" - The --use option can now reference alien files");
677  rn->AddLine("");
678  rn->AddLine("Bug fixes");
679  rn->AddLine("");
680  rn->AddLine("- Can now read Capacitances from OCDB");
681 
682  rn->Resize(width,height);
683 
684  t->AddFrame(rn, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
685 
686  t->MapSubwindows();
687  t->Resize();
688  t->MapWindow();
689  t->CenterOnParent();
690 
691  // set names
692 
693  t->SetWindowName("mchview release notes");
694  t->SetIconName("mchview release notes");
695 
696 // t->SetMWMHints(kMWMDecorAll | kMWMDecorResizeH | kMWMDecorMaximize |
697 // kMWMDecorMinimize | kMWMDecorMenu,
698 // kMWMFuncAll | kMWMFuncResize | kMWMFuncMaximize |
699 // kMWMFuncMinimize,
700 // kMWMInputModeless);
701 
702  t->MapRaised();
703 // gClient->WaitFor(t);
704 }
705 
706 //______________________________________________________________________________
707 void
709 {
711 
712  TGFileInfo fileInfo;
713 
714  new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
715  kFDSave,&fileInfo);
716 
717  Save(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
718 }
719 
720 //______________________________________________________________________________
721 void
722 AliMUONMchViewApplication::Save(const char* filename)
723 {
725 
727 
728  TFile f(filename,"RECREATE");
729 
730  for ( Int_t i = 0; i < reg->NumberOfDataMakers(); ++i )
731  {
732  AliMUONVTrackerDataMaker* maker = reg->DataMaker(i);
733  maker->Write();
734  }
735 
736  f.Close();
737 }
static AliMUONPainterHelper * Instance()
A painter for one detection element.
void SetOutlined(const char *pattern, Bool_t flag)
#define TObjArray
TList * fPainterMasterFrameList
list of painterMasterFrame objects
void SetLine(Int_t depth, Int_t lineColor, Int_t lineWidth)
Main class for the mchview program.
void ShiftClicked(AliMUONVPainter *painter, Double_t *values)
TFile f("CalibObjects.root")
virtual void SetResponder(const char *pattern)
Producer of some AliMUONVTrackerData.
AliMUONMchViewApplication(const char *name, int *argc, char **argv, UInt_t w=0, UInt_t h=0, UInt_t ox=0, UInt_t oy=0)
Authors Philippe Pillot, Laurent Aphecetche, Subatech.
Author Laurent Aphecetche, Subatech.
void SetViewPoint(Bool_t front, Bool_t back)
Int_t Register(AliMUONPainterMatrix *group)
TString String(const char *resourceName, const char *defaultValue="") const
void SetCathode(Bool_t cath0, Bool_t cath1)
static const Int_t fgkCOMPAREDATA
Tools/Compare Data menu.
Resource file handling.
ClassImp(TPCGenInfo)
Definition: AliTPCCmpNG.C:254
static AliMUONPainterRegistry * Instance()
void Register(AliMUONVTrackerDataMaker *reader)
static AliMUONPainterDataRegistry * Instance()
Base class for a graphical object representing some part of the MUON tracking system.
void SetMenuBar(TGMenuBar *bar)
Set the menu bar where to put the history menu.
Registry for painter data sources.
static const Int_t fgkCOMPAREALIGNMENTS
Tools/Compare Alignments menu.
static const Int_t fgkFILESAVEAS
File/Save As... menu.
static const Int_t fgkABOUT
About menu.
The main window for the offline "a la mood" display.
AliMUONVTrackerDataMaker * DataMaker(Int_t i) const
static const Int_t fgkFILEOPEN
File/Open... menu.
Simple wrapper of AliMUONVTrackerData (for backward compatibility)
void Adopt(AliMUONVPainter *painter)
Adopt a painter in this matrix.
static const char * fgkFileTypes[]
For the open menu.
static const Int_t fgkFILEEXIT
File/Exit menu.
AliMUONPainterEnv * Env()
Return the environment.
Basic attributes shared by all painters.
AliMUONPainterMatrix * GenerateStartupMatrix()
void SaveAs(const char *filename="", Option_t *option="") const
void SetPlane(Bool_t bending, Bool_t nonBending)
static const Int_t fgkFILEPRINTAS
File/Print As... menu.
Base class for MUON data that can be presented at different levels in the hierarchy of the MUON syste...
A matrix of AliMUONVPainter.
static const char * FullVersion()
Return the SVN revision and version number of the mchview application.
TGMainFrame * fMainFrame
pointer to our mainframe
void Set(const char *resourceName, Int_t value)
Frame to select input data source(s) to be displayed.
Painter for one (plane of one) chamber.