First big commit of the mchview program and its accompanying library,
[u/mrichter/AliRoot.git] / MUON / mchview.cxx
CommitLineData
0145e89a 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
18/// \ingroup graphics
19/// \file mchview.cxx
20/// \brief Tracker visualization program
21///
22/// \author Laurent Aphecetche, Subatech
23
24
25#include "AliMUONPainterDataSourceFrame.h"
26#include "AliMUONPainterHelper.h"
27#include "AliMUONPainterMasterFrame.h"
28#include "AliMUONPainterRegistry.h"
29#include "AliCDBManager.h"
30#include "AliCodeTimer.h"
31#include "AliLog.h"
32#include <Riostream.h>
33#include <TCanvas.h>
34#include <TEnv.h>
35#include <TGMenu.h>
36#include <TGTab.h>
37#include <TROOT.h>
38#include <TRint.h>
39#include <TString.h>
40#include <TStyle.h>
41
42//_____________________________________________________________________________
43void CreateMenuBar(TRint* app, TGMainFrame* mainFrame, UInt_t w)
44{
45///
46
47 TGPopupMenu* file = new TGPopupMenu(gClient->GetRoot());
48
49 file->AddEntry("&Exit",1);
50
51 file->Connect("Activated(Int_t)","TRint",app,"Terminate()");
52
53 TGMenuBar* bar = new TGMenuBar(mainFrame,w);
54
55 bar->AddPopup("&File",file,new TGLayoutHints(kLHintsLeft|kLHintsTop));
56
57 mainFrame->AddFrame(bar,new TGLayoutHints(kLHintsLeft|kLHintsExpandX));
58
59 AliMUONPainterRegistry::Instance()->SetMenuBar(bar);
60}
61
62
63int main(int argc, char** argv)
64{
65///
66
67 AliWarningGeneral("main","Remove default storage and run number from here...");
68
69 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
70 AliCDBManager::Instance()->SetRun(0);
71
72 TRint *theApp = new TRint("mchview", &argc, argv);
73
74 gROOT->SetStyle("Plain");
75
76 gStyle->SetPalette(1);
77
78 Int_t n = gStyle->GetNumberOfColors();
79
80 Int_t* colors = new Int_t[n+2];
81
82 for ( Int_t i = 1; i <= n; ++i )
83 {
84 colors[i] = gStyle->GetColorPalette(i-1);
85 }
86
87 colors[0] = 0;
88 colors[n+1] = 1;
89
90 gStyle->SetPalette(n+2,colors);
91
92 delete[] colors;
93
94 UInt_t dw = gClient->GetDisplayWidth();
95 UInt_t dh = gClient->GetDisplayHeight();
96
97 UInt_t w = (UInt_t)(0.7*dw);
98 UInt_t h = (UInt_t)(0.90*dh);
99
100 TGMainFrame* mainFrame = new TGMainFrame(gClient->GetRoot(),w,h);
101
102 const Int_t bs = 2;
103
104 CreateMenuBar(theApp,mainFrame,w);
105
106// h -= 60; // menubar
107
108 TGTab* tabs = new TGTab(mainFrame,w,h);
109
110 TGCompositeFrame* t = tabs->AddTab("Painter Master Frame");
111
112 AliMUONPainterMasterFrame* pf =
113 new AliMUONPainterMasterFrame(t,t->GetWidth()-bs*2,t->GetHeight()-bs*2);
114
115 t->AddFrame(pf, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,bs,bs,bs,bs));
116
117 t = tabs->AddTab("Data Sources");
118
119 AliMUONPainterDataSourceFrame* dsf =
120 new AliMUONPainterDataSourceFrame(t,t->GetWidth()-bs*2,t->GetHeight()-bs*2);
121
122 t->AddFrame(dsf,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,bs,bs,bs,bs));
123
124 mainFrame->AddFrame(tabs,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,0,0,0,0));
125
126 mainFrame->SetWindowName("mchview - Visualization of MUON Tracker detector");
127
128 mainFrame->MapSubwindows();
129 mainFrame->Resize();
130 mainFrame->MapWindow();
131
132 mainFrame->Connect("CloseWindow()","TRint",theApp,"Terminate()");
133
134 UInt_t x = dw/2 - w/2;
135 UInt_t y = 0;
136
137 mainFrame->MoveResize(x, y, w, h);
138 mainFrame->SetWMPosition(x, y);
139
140 mainFrame->SetWMSizeHints(w,h,w,h,0,0);
141
142 AliCodeTimer::Instance()->Print();
143
144 // --- Start the event loop ---
145 theApp->Run(kTRUE);
146
147 AliMUONPainterHelper::Instance()->Save();
148}