Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TEveCaloLegoEditor.cxx
Go to the documentation of this file.
1// @(#)root/eve:$Id$
2// Author: Matevz Tadel 2007
3
4/*************************************************************************
5 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#include "TEveCaloLegoEditor.h"
13#include "TEveCalo.h"
14#include "TEveGValuators.h"
15#include "TGComboBox.h"
16
17#include "TColor.h"
18#include "TGColorSelect.h"
19#include "TGLabel.h"
20#include "TG3DLine.h"
21
22/** \class TEveCaloLegoEditor
23\ingroup TEve
24GUI editor for TEveCaloLego.
25*/
26
28
29////////////////////////////////////////////////////////////////////////////////
30/// Constructor.
31
33 UInt_t options, Pixel_t back) :
34 TGedFrame(p, width, height, options | kVerticalFrame, back),
35 fM(nullptr),
36 fGridColor(nullptr),
37 fFontColor(nullptr),
38 fPlaneColor(nullptr),
39 fTransparency(nullptr),
40
41 fProjection(nullptr),
42 f2DMode(nullptr),
43 fBoxMode(nullptr),
44
45 fCell2DTextMin(nullptr),
46
47 fRebinFrame(nullptr),
48 fAutoRebin(nullptr),
49 fPixelsPerBin(nullptr),
50 fNormalizeRebin(nullptr)
51
52{
53 MakeTitle("TEveCaloLego");
54
55 { // grid color
57 TGLabel* lab = new TGLabel(f, "GridColor:");
58 f->AddFrame(lab, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 10, 1, 1));
59
60 fGridColor = new TGColorSelect(f, 0, -1);
61 f->AddFrame(fGridColor, new TGLayoutHints(kLHintsLeft|kLHintsTop, 3, 1, 0, 1));
62 fGridColor->Connect("ColorSelected(Pixel_t)", "TEveCaloLegoEditor", this, "DoGridColor(Pixel_t)");
63
64 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 0));
65 }
66 // axis
67 {
68 // font color
70 TGLabel* lab = new TGLabel(f, "FontColor:");
71 f->AddFrame(lab, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 8, 1, 1));
72
73 fFontColor = new TGColorSelect(f, 0, -1);
74 f->AddFrame(fFontColor, new TGLayoutHints(kLHintsLeft|kLHintsTop, 3, 1, 0, 1));
75 fFontColor->Connect("ColorSelected(Pixel_t)", "TEveCaloLegoEditor", this, "DoFontColor(Pixel_t)");
76
77 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 0));
78 }
79 {
80 // plane color
82 TGLabel* lab = new TGLabel(f, "PlaneColor:");
83 f->AddFrame(lab, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 1, 1, 1));
84
85 fPlaneColor = new TGColorSelect(f, 0, -1);
86 f->AddFrame(fPlaneColor, new TGLayoutHints(kLHintsLeft|kLHintsTop, 3, 1, 0, 1));
87 fPlaneColor->Connect("ColorSelected(Pixel_t)", "TEveCaloLegoEditor", this, "DoPlaneColor(Pixel_t)");
88
89 fTransparency = new TGNumberEntry(f, 0., 2, -1,
92 fTransparency->SetHeight(18);
93 fTransparency->GetNumberEntry()->SetToolTipText("Transparency: 0 is opaque, 100 fully transparent.");
94 f->AddFrame(fTransparency, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
95 fTransparency->Connect("ValueSet(Long_t)","TEveCaloLegoEditor", this, "DoTransparency()");
96
97 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 0));
98 }
99
100 Int_t lw = 80;
101
102 fProjection = MakeLabeledCombo("Project:", 1);
103 fProjection->AddEntry("Auto", TEveCaloLego::kAuto);
104 fProjection->AddEntry("3D", TEveCaloLego::k3D);
105 fProjection->AddEntry("2D", TEveCaloLego::k2D);
106 fProjection->Connect("Selected(Int_t)", "TEveCaloLegoEditor", this, "DoProjection()");
107
108 f2DMode = MakeLabeledCombo("2DMode:", 4);
109 f2DMode->AddEntry("ValColor", TEveCaloLego::kValColor);
110 f2DMode->AddEntry("ValSize", TEveCaloLego::kValSize);
111 f2DMode->AddEntry("ValSizeOutline", TEveCaloLego::kValSizeOutline);
112 f2DMode->Connect("Selected(Int_t)", "TEveCaloLegoEditor", this, "Do2DMode()");
113
114 fBoxMode = MakeLabeledCombo("Box:", 4);
115 fBoxMode->AddEntry("None", TEveCaloLego::kNone);
116 fBoxMode->AddEntry("Back", TEveCaloLego::kBack);
117 fBoxMode->AddEntry("FrontBack", TEveCaloLego::kFrontBack);
118 fBoxMode->Connect("Selected(Int_t)", "TEveCaloLegoEditor", this, "DoBoxMode()");
119
120 fCell2DTextMin = new TEveGValuator(this, "Cell2DTexMin:", 90, 0);
121 fCell2DTextMin->SetLabelWidth(lw);
122 fCell2DTextMin->SetNELength(5);
123 fCell2DTextMin->SetShowSlider(kFALSE);
124 fCell2DTextMin->Build();
125 fCell2DTextMin->SetLimits(1, 1000);
126 fCell2DTextMin->SetToolTip("Draw cell values above N pixels.");
127 fCell2DTextMin->Connect("ValueSet(Double_t)", "TEveCaloLegoEditor", this, "DoCell2DTextMin()");
129
131}
132
133////////////////////////////////////////////////////////////////////////////////
134
136{
138
139 fAutoRebin = new TGCheckButton(fRebinFrame, "AutoRebin");
140 fRebinFrame->AddFrame(fAutoRebin, new TGLayoutHints(kLHintsLeft, 3, 5, 3, 0));
141 fAutoRebin->Connect("Toggled(Bool_t)", "TEveCaloLegoEditor", this, "DoAutoRebin()");
142
143 fNormalizeRebin = new TGCheckButton(fRebinFrame, "NormalizeRebin");
144 fRebinFrame->AddFrame(fNormalizeRebin, new TGLayoutHints(kLHintsLeft, 3, 5, 3, 0));
145 fNormalizeRebin->Connect("Toggled(Bool_t)", "TEveCaloLegoEditor", this, "DoNormalize()");
146
147 fPixelsPerBin = new TEveGValuator(fRebinFrame, "PixelsPerBin:", 90, 0);
148 fPixelsPerBin->SetLabelWidth(80);
149 fPixelsPerBin->SetNELength(5);
150 fPixelsPerBin->SetShowSlider(kFALSE);
151 fPixelsPerBin->Build();
152 fPixelsPerBin->SetLimits(1, 50);
153 fPixelsPerBin->SetToolTip("Number of labels along the Z axis.");
154 fPixelsPerBin->Connect("ValueSet(Double_t)", "TEveCaloLegoEditor", this, "DoPixelsPerBin()");
155 fRebinFrame->AddFrame(fPixelsPerBin, new TGLayoutHints(kLHintsTop, 4, 2, 1, 2));
156}
157
158////////////////////////////////////////////////////////////////////////////////
159/// Helper function. Creates TGComboBox with fixed size TGLabel.
160
162{
163 UInt_t labelW = 60;
164 UInt_t labelH = 20;
165 TGHorizontalFrame* hf = new TGHorizontalFrame(this);
166 // label
167 TGCompositeFrame *labfr = new TGHorizontalFrame(hf, labelW, labelH, kFixedSize);
168 TGLabel* label = new TGLabel(labfr, name);
169 labfr->AddFrame(label, new TGLayoutHints(kLHintsLeft | kLHintsBottom));
170 hf->AddFrame(labfr, new TGLayoutHints(kLHintsLeft));
171 // combo
172 TGLayoutHints* clh = new TGLayoutHints(kLHintsLeft, 0,0,0,0);
173 TGComboBox* combo = new TGComboBox(hf);
174 combo->Resize(90, 20);
175 hf->AddFrame(combo, clh);
176
177 AddFrame(hf, new TGLayoutHints(kLHintsTop, 1, 1, 1, off));
178 return combo;
179}
180
181////////////////////////////////////////////////////////////////////////////////
182/// Set model object.
183
185{
186 fM = dynamic_cast<TEveCaloLego*>(obj);
187
188 fGridColor->SetColor(TColor::Number2Pixel(fM->GetGridColor() < 0 ? 0 : fM->GetGridColor()), kFALSE);
189 fFontColor->SetColor(TColor::Number2Pixel(fM->GetFontColor() < 0 ? 0 : fM->GetFontColor()), kFALSE);
190
191 fPlaneColor->SetColor(TColor::Number2Pixel(fM->GetPlaneColor()), kFALSE);
192 fTransparency->SetNumber(fM->GetPlaneTransparency());
193
194 fCell2DTextMin->SetValue(fM->GetDrawNumberCellPixels());
195
196 fProjection->Select(fM->GetProjection(), kFALSE);
197 f2DMode->Select(fM->Get2DMode(), kFALSE);
198 fBoxMode->Select(fM->GetBoxMode(), kFALSE);
199
200 fPixelsPerBin->SetValue(fM->GetPixelsPerBin());
201 fAutoRebin->SetState(fM->GetAutoRebin() ? kButtonDown : kButtonUp);
202 fNormalizeRebin->SetState(fM->GetNormalizeRebin() ? kButtonDown : kButtonUp);
203}
204
205////////////////////////////////////////////////////////////////////////////////
206/// Slot for GridColor.
207
213
214////////////////////////////////////////////////////////////////////////////////
215/// Slot for FontColor.
216
222
223////////////////////////////////////////////////////////////////////////////////
224/// Slot for PlaneColor.
225
231
232////////////////////////////////////////////////////////////////////////////////
233/// Slot for setting limit in pixels in which cell value is rendered.
234
236{
237 fM->SetDrawNumberCellPixels((Int_t)fCell2DTextMin->GetValue());
238 Update();
239}
240
241
242////////////////////////////////////////////////////////////////////////////////
243/// Slot for projection.
244
246{
247 fM->SetProjection((TEveCaloLego::EProjection_e)fProjection->GetSelected());
248 Update();
249}
250
251////////////////////////////////////////////////////////////////////////////////
252/// Slot for projection.
253
255{
256 fM->Set2DMode((TEveCaloLego::E2DMode_e)f2DMode->GetSelected());
257 Update();
258}
259
260////////////////////////////////////////////////////////////////////////////////
261/// Slot for projection.
262
264{
265 fM->SetBoxMode((TEveCaloLego::EBoxMode_e)fBoxMode->GetSelected());
266 Update();
267}
268
269////////////////////////////////////////////////////////////////////////////////
270/// Slot for Transparency.
271
273{
274 fM->SetPlaneTransparency((Char_t)(fTransparency->GetNumber()));
275 Update();
276}
277
278////////////////////////////////////////////////////////////////////////////////
279/// Slot for PixelsPerBin.
280
282{
283 fM->SetPixelsPerBin((Int_t)fPixelsPerBin->GetValue());
284 Update();
285}
286
287////////////////////////////////////////////////////////////////////////////////
288
290{
291 fM->SetAutoRebin(fAutoRebin->IsOn());
292 Update();
293}
294
295////////////////////////////////////////////////////////////////////////////////
296
298{
299 fM->SetNormalizeRebin(fNormalizeRebin->IsOn());
300 Update();
301}
@ kVerticalFrame
Definition GuiTypes.h:381
@ kFixedSize
Definition GuiTypes.h:390
ULong_t Pixel_t
Pixel value.
Definition GuiTypes.h:40
#define f(i)
Definition RSha256.hxx:104
int Int_t
Definition RtypesCore.h:45
short Color_t
Definition RtypesCore.h:92
char Char_t
Definition RtypesCore.h:37
unsigned int UInt_t
Definition RtypesCore.h:46
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
#define ClassImp(name)
Definition Rtypes.h:377
@ kButtonDown
Definition TGButton.h:54
@ kButtonUp
Definition TGButton.h:53
@ kLHintsLeft
Definition TGLayout.h:24
@ kLHintsBottom
Definition TGLayout.h:29
@ kLHintsTop
Definition TGLayout.h:27
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void pixel
Option_t Option_t width
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
char name[80]
Definition TGX11.cxx:110
static ULong_t Number2Pixel(Int_t ci)
Static method that given a color index number, returns the corresponding pixel value.
Definition TColor.cxx:2320
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
Definition TColor.cxx:1839
GUI editor for TEveCaloLego.
TGCheckButton * fAutoRebin
TGVerticalFrame * fRebinFrame
TEveCaloLegoEditor(const TEveCaloLegoEditor &)
TGColorSelect * fPlaneColor
TGNumberEntry * fTransparency
void DoProjection()
Slot for projection.
TEveGValuator * fCell2DTextMin
TGCheckButton * fNormalizeRebin
void DoBoxMode()
Slot for projection.
void DoFontColor(Pixel_t color)
Slot for FontColor.
void Do2DMode()
Slot for projection.
void SetModel(TObject *obj) override
Set model object.
void DoTransparency()
Slot for Transparency.
TGColorSelect * fFontColor
void DoCell2DTextMin()
Slot for setting limit in pixels in which cell value is rendered.
TEveGValuator * fPixelsPerBin
void DoGridColor(Pixel_t color)
Slot for GridColor.
void DoPlaneColor(Pixel_t color)
Slot for PlaneColor.
void DoPixelsPerBin()
Slot for PixelsPerBin.
TGColorSelect * fGridColor
TGComboBox * MakeLabeledCombo(const char *name, Int_t off)
Helper function. Creates TGComboBox with fixed size TGLabel.
Visualization of calorimeter data as eta/phi histogram.
Definition TEveCalo.h:251
Composite GUI element for single value selection (supports label, number-entry and slider).
Selects different options.
Definition TGButton.h:264
Like a checkbutton but instead of the check mark there is color area with a little down arrow.
A combobox (also known as a drop down listbox) allows the selection of one item out of a list of item...
Definition TGComboBox.h:47
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Add frame to the composite frame using the specified layout hints.
Definition TGFrame.cxx:1117
TGCompositeFrame(const TGCompositeFrame &)=delete
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
Definition TGFrame.cxx:605
A composite frame that layout their children in horizontal way.
Definition TGFrame.h:385
This class handles GUI labels.
Definition TGLabel.h:24
This class describes layout hints used by the layout classes.
Definition TGLayout.h:50
TGNumberEntry is a number entry input widget with up/down buttons.
@ kNEANonNegative
Non-negative number.
@ kNESInteger
Style of number entry field.
@ kNELLimitMinMax
Both lower and upper limits.
ROOT GUI Window base class.
Definition TGWindow.h:23
virtual TGVerticalFrame * CreateEditorTabSubFrame(const char *name)
Create a vertical frame to be used by 'owner' in extra tab 'name'.
TGedFrame(const TGedFrame &)=delete
virtual void MakeTitle(const char *title)
Create attribute frame title.
Definition TGedFrame.cxx:95
virtual void Update()
Update the current pad when an attribute is changed via GUI.
Definition TGedFrame.cxx:72
Mother of all ROOT objects.
Definition TObject.h:41