2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
4 /**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
10 #include "AliEveJetPlaneEditor.h"
11 #include <Alieve/AliEveJetPlane.h>
12 #include <TEveGValuators.h>
14 #include <TVirtualPad.h>
19 #include <TGNumberEntry.h>
20 #include <TGColorSelect.h>
21 #include <TGDoubleSlider.h>
26 //______________________________________________________________________
27 // AliEveJetPlaneEditor
30 AliEveJetPlaneEditor::StaticDataWindow* AliEveJetPlaneEditor::fgStaticWindow = 0;
32 ClassImp(AliEveJetPlaneEditor)
34 AliEveJetPlaneEditor::AliEveJetPlaneEditor(const TGWindow *p, Int_t width, Int_t height,
35 UInt_t options, Pixel_t back) :
36 TGedFrame(p, width, height, options | kVerticalFrame, back),
45 // Initialize widget pointers to 0
47 MakeTitle("AliEveJetPlane");
51 // fXYZZ = new TGSomeWidget(this, ...);
52 // AddFrame(fXYZZ, new TGLayoutHints(...));
53 // fXYZZ->Connect("SignalName()", "AliEveJetPlaneEditor", this, "DoXYZZ()");
55 fRnrJets = new TGCheckButton(this, "Rnr Jets");
56 AddFrame(fRnrJets, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
57 fRnrJets->Connect("Clicked()", "AliEveJetPlaneEditor", this, "DoRnrJets()");
59 fRnrTracks = new TGCheckButton(this, "Rnr Tracks");
60 AddFrame(fRnrTracks, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
61 fRnrTracks->Connect("Clicked()", "AliEveJetPlaneEditor", this, "DoRnrTracks()");
63 fEnergyScale = new TEveGValuator(this, "Length scale:", 110, 0);
64 fEnergyScale->SetLabelWidth(labelW);
65 fEnergyScale->SetNELength(6);
66 fEnergyScale->Build();
67 fEnergyScale->SetLimits(1, 500, 500, TGNumberFormat::kNESRealOne);
68 fEnergyScale->SetToolTip("Energy mapped to length of arrow.");
69 fEnergyScale->Connect("ValueSet(Double_t)", "AliEveJetPlaneEditor", this, "DoEnergyScale()");
70 AddFrame(fEnergyScale, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
72 fEnergyColorScale = new TEveGValuator(this, "Color scale:", 110, 0);
73 fEnergyColorScale->SetLabelWidth(labelW);
74 fEnergyColorScale->SetNELength(6);
75 fEnergyColorScale->Build();
76 fEnergyColorScale->SetLimits(-2, 2, 100, TGNumberFormat::kNESRealOne);
77 fEnergyColorScale->SetToolTip("Energy mapped to highest palette color.");
78 fEnergyColorScale->Connect("ValueSet(Double_t)", "AliEveJetPlaneEditor", this, "DoEnergyColorScale()");
79 AddFrame(fEnergyColorScale, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
81 fOneSelection = new TGRadioButton(this, "&One TEveTrack/Jet");
82 fTwoSelection = new TGRadioButton(this, "&Two TEveTrack/Jet");
83 AddFrame(fOneSelection, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
84 AddFrame(fTwoSelection, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
85 fOneSelection->Connect("Clicked()", "AliEveJetPlaneEditor", this, "DoOneSelection()");
86 fTwoSelection->Connect("Clicked()", "AliEveJetPlaneEditor", this, "DoTwoSelection()");
88 // fInformationSetup = new TGTextButton(this, "TEveTrack/Jet Print");
89 // AddFrame(fInformationSetup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 2, 0, 2, 2));
90 // fInformationSetup->Connect("Clicked()", "AliEveJetPlaneEditor", this, "DoStaticDataWindow()");
93 AliEveJetPlaneEditor::~AliEveJetPlaneEditor()
96 /**************************************************************************/
98 void AliEveJetPlaneEditor::SetModel(TObject* obj)
100 fM = dynamic_cast<AliEveJetPlane*>(obj);
102 // Set values of widgets
103 // fXYZZ->SetValue(fM->GetXYZZ());
104 fRnrJets->SetState(fM->GetRnrJets() ? kButtonDown : kButtonUp);
105 fRnrTracks->SetState(fM->GetRnrTracks() ? kButtonDown : kButtonUp);
106 fEnergyScale->SetValue(fM->GetEnergyScale());
107 fEnergyColorScale->SetValue(fM->GetEnergyColorScale());
108 fOneSelection->SetState(fM->GetOneSelection() ? kButtonDown : kButtonUp);
109 fTwoSelection->SetState(fM->GetTwoSelection() ? kButtonDown : kButtonUp);
112 /**************************************************************************/
114 // Implements callback/slot methods
116 // void AliEveJetPlaneEditor::DoXYZZ()
118 // fM->SetXYZZ(fXYZZ->GetValue());
122 void AliEveJetPlaneEditor::DoRnrJets()
124 fM->SetRnrJets(fRnrJets->IsOn());
128 void AliEveJetPlaneEditor::DoRnrTracks()
130 fM->SetRnrTracks(fRnrTracks->IsOn());
134 void AliEveJetPlaneEditor::DoEnergyColorScale()
136 fM->SetEnergyColorScale(fEnergyColorScale->GetValue());
140 void AliEveJetPlaneEditor::DoEnergyScale()
142 fM->SetEnergyScale(fEnergyScale->GetValue());
146 void AliEveJetPlaneEditor::DoOneSelection()
148 fTwoSelection->SetState(kButtonUp);
149 fM->SetOneSelection(fOneSelection->IsOn());
150 fM->SetTwoSelection(fTwoSelection->IsOn());
154 void AliEveJetPlaneEditor::DoTwoSelection()
156 fOneSelection->SetState(kButtonUp);
157 fM->SetOneSelection(fOneSelection->IsOn());
158 fM->SetTwoSelection(fTwoSelection->IsOn());
162 void AliEveJetPlaneEditor::DoStaticDataWindow()
164 printf("\n Soon available ... \n");
165 if (fgStaticWindow == 0)
166 fgStaticWindow = new StaticDataWindow(gClient->GetRoot(), this, 400, 200);
168 // call fgStaticWindow->ReadValues(); // like setmodel
170 // position relative to the parent's window
171 fgStaticWindow->MapWindow();
172 fgStaticWindow->RaiseWindow();
173 fgStaticWindow->CenterOnParent();
176 /**************************************************************************/
178 ClassImp(AliEveJetPlaneEditor::StaticDataWindow)
180 AliEveJetPlaneEditor::StaticDataWindow::StaticDataWindow(const TGWindow *p, const TGWindow *main,
181 UInt_t w, UInt_t h, UInt_t options) :
182 TGTransientFrame(p, main, w, h, options),
191 fChk1(0),fChk2(0),fChk3(0),fChk4(0),fChk5(0)
193 // Create a dialog window. A dialog window pops up with respect to its
196 Connect("CloseWindow()", "AliEveJetPlaneEditor::StaticDataWindow", this, "DoClose()");
197 DontCallClose(); // to avoid double deletions.
199 // use hierarchical cleaning
200 SetCleanup(kDeepCleanup);
202 fFrame1 = new TGHorizontalFrame(this, 60, 20, kFixedWidth);
204 fOkButton = new TGTextButton(fFrame1, "&Ok", 1);
205 fOkButton->Connect("Clicked()", "AliEveJetPlaneEditor::StaticDataWindow", this, "DoOK()");
206 fCancelButton = new TGTextButton(fFrame1, "&Cancel", 2);
207 fCancelButton->Connect("Clicked()", "AliEveJetPlaneEditor::StaticDataWindow", this, "DoCancel()");
209 fL1 = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX,2, 2, 2, 2);
210 fL2 = new TGLayoutHints(kLHintsBottom | kLHintsRight, 2, 2, 5, 1);
212 fFrame1->AddFrame(fOkButton, fL1);
213 fFrame1->AddFrame(fCancelButton, fL1);
215 fFrame1->Resize(150, fOkButton->GetDefaultHeight());
216 AddFrame(fFrame1, fL2);
218 // Tabs for one and two track information
220 fTab = new TGTab(this, 300, 300);
221 fTab->Connect("Selected(Int_t)", "AliEveJetPlaneEditor::StaticDataWindow", this, "DoTab(Int_t)");
223 fL3 = new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5);
225 TGCompositeFrame *tf = fTab->AddTab("One TEveTrack/Jet");
227 // fF1 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
228 // fF1->AddFrame(new TGTextButton(fF1, "&Test button", 0), fL3);
229 // fF1->AddFrame(fTxt1 = new TGTextEntry(fF1, new TGTextBuffer(100)), fL3);
230 // fF1->AddFrame(fTxt2 = new TGTextEntry(fF1, new TGTextBuffer(100)), fL3);
231 // tf->AddFrame(fF1, fL3);
232 // fTxt1->Resize(150, fTxt1->GetDefaultHeight());
233 // fTxt2->Resize(150, fTxt2->GetDefaultHeight());
234 fL1 = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 2, 2, 2, 2);
235 fF2 = new TGCompositeFrame(tf, 60, 60, kVerticalFrame);
236 fF2->AddFrame(fChk1 = new TGCheckButton(fF2, "4-Momentum: {pt, px, py, pz} "), fL1);
237 fF2->AddFrame(fChk2 = new TGCheckButton(fF2, "4-Momentum: {pt, Phi, Theta}"), fL1);
238 fF2->AddFrame(fChk3 = new TGCheckButton(fF2, "Pseudorapidity: Eta"), fL1);
239 fF2->AddFrame(fChk4 = new TGCheckButton(fF2, "Energy: E"), fL1);
240 fF2->AddFrame(fChk5 = new TGCheckButton(fF2, "Charge and Mass"), fL1);
242 tf = fTab->AddTab("Two Tracks/Jets");
244 tf->AddFrame(fF2, fL3);
246 // fBtn1->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
247 // fBtn2->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
248 // fChk1->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
249 // fChk2->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
250 // fRad1->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
251 // fRad2->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
254 TGLayoutHints *fL5 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
255 kLHintsExpandY, 2, 2, 5, 1);
261 SetWindowName("TEveTrack/Jet Common Setup");
264 AliEveJetPlaneEditor::StaticDataWindow::~StaticDataWindow()
269 void AliEveJetPlaneEditor::StaticDataWindow::DoClose()
274 void AliEveJetPlaneEditor::StaticDataWindow::DoOK()
276 // Read data from widgets, copy to static members of AliEveJetPlane
281 void AliEveJetPlaneEditor::StaticDataWindow::DoCancel()
286 void AliEveJetPlaneEditor::StaticDataWindow::DoTab(Int_t /*id*/)
288 // printf("Tab item %d activated\n", id);