3 #include "JetPlaneEditor.h"
4 #include <Alieve/JetPlane.h>
5 #include <Reve/RGValuators.h>
7 #include <TVirtualPad.h>
12 #include <TGNumberEntry.h>
13 #include <TGColorSelect.h>
14 #include <TGDoubleSlider.h>
19 using namespace Alieve;
21 //______________________________________________________________________
25 Alieve::JetPlaneEditor::StaticDataWindow* JetPlaneEditor::fgStaticWindow = 0;
27 ClassImp(JetPlaneEditor)
29 JetPlaneEditor::JetPlaneEditor(const TGWindow *p, Int_t width, Int_t height,
30 UInt_t options, Pixel_t back) :
31 TGedFrame(p, width, height, options | kVerticalFrame, back),
40 // Initialize widget pointers to 0
42 MakeTitle("JetPlane");
46 // fXYZZ = new TGSomeWidget(this, ...);
47 // AddFrame(fXYZZ, new TGLayoutHints(...));
48 // fXYZZ->Connect("SignalName()", "Alieve::JetPlaneEditor", this, "DoXYZZ()");
50 fRnrJets = new TGCheckButton(this, "Rnr Jets");
51 AddFrame(fRnrJets, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
52 fRnrJets->Connect("Clicked()", "Alieve::JetPlaneEditor", this, "DoRnrJets()");
54 fRnrTracks = new TGCheckButton(this, "Rnr Tracks");
55 AddFrame(fRnrTracks, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
56 fRnrTracks->Connect("Clicked()", "Alieve::JetPlaneEditor", this, "DoRnrTracks()");
58 fEnergyScale = new RGValuator(this, "Length scale:", 110, 0);
59 fEnergyScale->SetLabelWidth(labelW);
60 fEnergyScale->SetNELength(6);
61 fEnergyScale->Build();
62 fEnergyScale->SetLimits(1, 500, 500, TGNumberFormat::kNESRealOne);
63 fEnergyScale->SetToolTip("Energy mapped to length of arrow.");
64 fEnergyScale->Connect("ValueSet(Double_t)", "Alieve::JetPlaneEditor", this, "DoEnergyScale()");
65 AddFrame(fEnergyScale, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
67 fEnergyColorScale = new RGValuator(this, "Color scale:", 110, 0);
68 fEnergyColorScale->SetLabelWidth(labelW);
69 fEnergyColorScale->SetNELength(6);
70 fEnergyColorScale->Build();
71 fEnergyColorScale->SetLimits(-2, 2, 100, TGNumberFormat::kNESRealOne);
72 fEnergyColorScale->SetToolTip("Energy mapped to highest palette color.");
73 fEnergyColorScale->Connect("ValueSet(Double_t)", "Alieve::JetPlaneEditor", this, "DoEnergyColorScale()");
74 AddFrame(fEnergyColorScale, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
76 fOneSelection = new TGRadioButton(this, "&One Track/Jet");
77 fTwoSelection = new TGRadioButton(this, "&Two Track/Jet");
78 AddFrame(fOneSelection, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
79 AddFrame(fTwoSelection, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
80 fOneSelection->Connect("Clicked()", "Alieve::JetPlaneEditor", this, "DoOneSelection()");
81 fTwoSelection->Connect("Clicked()", "Alieve::JetPlaneEditor", this, "DoTwoSelection()");
83 // fInformationSetup = new TGTextButton(this, "Track/Jet Print");
84 // AddFrame(fInformationSetup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 2, 0, 2, 2));
85 // fInformationSetup->Connect("Clicked()", "Alieve::JetPlaneEditor", this, "DoStaticDataWindow()");
88 JetPlaneEditor::~JetPlaneEditor()
91 /**************************************************************************/
93 void JetPlaneEditor::SetModel(TObject* obj)
95 fM = dynamic_cast<JetPlane*>(obj);
97 // Set values of widgets
98 // fXYZZ->SetValue(fM->GetXYZZ());
99 fRnrJets->SetState(fM->GetRnrJets() ? kButtonDown : kButtonUp);
100 fRnrTracks->SetState(fM->GetRnrTracks() ? kButtonDown : kButtonUp);
101 fEnergyScale->SetValue(fM->GetEnergyScale());
102 fEnergyColorScale->SetValue(fM->GetEnergyColorScale());
103 fOneSelection->SetState(fM->GetOneSelection() ? kButtonDown : kButtonUp);
104 fTwoSelection->SetState(fM->GetTwoSelection() ? kButtonDown : kButtonUp);
107 /**************************************************************************/
109 // Implements callback/slot methods
111 // void JetPlaneEditor::DoXYZZ()
113 // fM->SetXYZZ(fXYZZ->GetValue());
117 void JetPlaneEditor::DoRnrJets()
119 fM->SetRnrJets(fRnrJets->IsOn());
123 void JetPlaneEditor::DoRnrTracks()
125 fM->SetRnrTracks(fRnrTracks->IsOn());
129 void JetPlaneEditor::DoEnergyColorScale()
131 fM->SetEnergyColorScale(fEnergyColorScale->GetValue());
135 void JetPlaneEditor::DoEnergyScale()
137 fM->SetEnergyScale(fEnergyScale->GetValue());
141 void JetPlaneEditor::DoOneSelection()
143 fTwoSelection->SetState(kButtonUp);
144 fM->SetOneSelection(fOneSelection->IsOn());
145 fM->SetTwoSelection(fTwoSelection->IsOn());
149 void JetPlaneEditor::DoTwoSelection()
151 fOneSelection->SetState(kButtonUp);
152 fM->SetOneSelection(fOneSelection->IsOn());
153 fM->SetTwoSelection(fTwoSelection->IsOn());
157 void JetPlaneEditor::DoStaticDataWindow()
159 printf("\n Soon available ... \n");
160 if (fgStaticWindow == 0)
161 fgStaticWindow = new StaticDataWindow(gClient->GetRoot(), this, 400, 200);
163 // call fgStaticWindow->ReadValues(); // like setmodel
165 // position relative to the parent's window
166 fgStaticWindow->MapWindow();
167 fgStaticWindow->RaiseWindow();
168 fgStaticWindow->CenterOnParent();
171 /**************************************************************************/
173 ClassImp(JetPlaneEditor::StaticDataWindow)
175 JetPlaneEditor::StaticDataWindow::StaticDataWindow(const TGWindow *p, const TGWindow *main,
176 UInt_t w, UInt_t h, UInt_t options) :
177 TGTransientFrame(p, main, w, h, options),
186 fChk1(0),fChk2(0),fChk3(0),fChk4(0),fChk5(0)
188 // Create a dialog window. A dialog window pops up with respect to its
191 Connect("CloseWindow()", "JetPlaneEditor::StaticDataWindow", this, "DoClose()");
192 DontCallClose(); // to avoid double deletions.
194 // use hierarchical cleaning
195 SetCleanup(kDeepCleanup);
197 fFrame1 = new TGHorizontalFrame(this, 60, 20, kFixedWidth);
199 fOkButton = new TGTextButton(fFrame1, "&Ok", 1);
200 fOkButton->Connect("Clicked()", "JetPlaneEditor::StaticDataWindow", this, "DoOK()");
201 fCancelButton = new TGTextButton(fFrame1, "&Cancel", 2);
202 fCancelButton->Connect("Clicked()", "JetPlaneEditor::StaticDataWindow", this, "DoCancel()");
204 fL1 = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX,2, 2, 2, 2);
205 fL2 = new TGLayoutHints(kLHintsBottom | kLHintsRight, 2, 2, 5, 1);
207 fFrame1->AddFrame(fOkButton, fL1);
208 fFrame1->AddFrame(fCancelButton, fL1);
210 fFrame1->Resize(150, fOkButton->GetDefaultHeight());
211 AddFrame(fFrame1, fL2);
213 // Tabs for one and two track information
215 fTab = new TGTab(this, 300, 300);
216 fTab->Connect("Selected(Int_t)", "JetPlaneEditor::StaticDataWindow", this, "DoTab(Int_t)");
218 fL3 = new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5);
220 TGCompositeFrame *tf = fTab->AddTab("One Track/Jet");
222 // fF1 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
223 // fF1->AddFrame(new TGTextButton(fF1, "&Test button", 0), fL3);
224 // fF1->AddFrame(fTxt1 = new TGTextEntry(fF1, new TGTextBuffer(100)), fL3);
225 // fF1->AddFrame(fTxt2 = new TGTextEntry(fF1, new TGTextBuffer(100)), fL3);
226 // tf->AddFrame(fF1, fL3);
227 // fTxt1->Resize(150, fTxt1->GetDefaultHeight());
228 // fTxt2->Resize(150, fTxt2->GetDefaultHeight());
229 fL1 = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 2, 2, 2, 2);
230 fF2 = new TGCompositeFrame(tf, 60, 60, kVerticalFrame);
231 fF2->AddFrame(fChk1 = new TGCheckButton(fF2, "4-Momentum: {pt, px, py, pz} "), fL1);
232 fF2->AddFrame(fChk2 = new TGCheckButton(fF2, "4-Momentum: {pt, Phi, Theta}"), fL1);
233 fF2->AddFrame(fChk3 = new TGCheckButton(fF2, "Pseudorapidity: Eta"), fL1);
234 fF2->AddFrame(fChk4 = new TGCheckButton(fF2, "Energy: E"), fL1);
235 fF2->AddFrame(fChk5 = new TGCheckButton(fF2, "Charge and Mass"), fL1);
237 tf = fTab->AddTab("Two Tracks/Jets");
239 tf->AddFrame(fF2, fL3);
241 // fBtn1->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
242 // fBtn2->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
243 // fChk1->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
244 // fChk2->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
245 // fRad1->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
246 // fRad2->Connect("Clicked()", "TestDialog", this, "HandleButtons()");
249 TGLayoutHints *fL5 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
250 kLHintsExpandY, 2, 2, 5, 1);
256 SetWindowName("Track/Jet Common Setup");
259 JetPlaneEditor::StaticDataWindow::~StaticDataWindow()
264 void JetPlaneEditor::StaticDataWindow::DoClose()
269 void JetPlaneEditor::StaticDataWindow::DoOK()
271 // Read data from widgets, copy to static members of JetPlane
276 void JetPlaneEditor::StaticDataWindow::DoCancel()
281 void JetPlaneEditor::StaticDataWindow::DoTab(Int_t /*id*/)
283 // printf("Tab item %d activated\n", id);