3 #include "TPCSectorVizEditor.h"
4 #include <Alieve/TPCSectorViz.h>
6 #include <Reve/RGValuators.h>
8 #include <TVirtualPad.h>
13 #include <TGNumberEntry.h>
14 #include <TGColorSelect.h>
16 #include <TGDoubleSlider.h>
19 using namespace Alieve;
21 //______________________________________________________________________
25 ClassImp(TPCSectorVizEditor)
27 TPCSectorVizEditor::TPCSectorVizEditor(const TGWindow *p, Int_t id,
28 Int_t width, Int_t height,
29 UInt_t options, Pixel_t back) :
30 TGedFrame(p, id, width, height, options | kVerticalFrame, back),
32 fSectorID (0), fTrans (0),
33 fRnrInn (0), fRnrOut1 (0), fRnrOut2(0),
34 fThreshold (0), fMaxVal (0),
37 MakeTitle("TPCSectorViz");
41 fSectorID = new RGValuator(this, "SectorID", 110, 0);
42 fSectorID->SetLabelWidth(labelW);
43 fSectorID->SetShowSlider(kFALSE);
44 fSectorID->SetNELength(4);
46 fSectorID->SetLimits(0, 35);
47 fSectorID->SetToolTip("0-17 +z plate; 18-35 -z plate");
48 fSectorID->Connect("ValueSet(Double_t)",
49 "Alieve::TPCSectorVizEditor", this, "DoSectorID()");
50 // Reuse sectorID for transformation button
51 fTrans = new TGCheckButton(fSectorID, "Trans");
52 fTrans->SetToolTipText("Translate to true position");
53 fSectorID->AddFrame(fTrans, new TGLayoutHints(kLHintsLeft, 12, 0, 1, 0));
54 fTrans->Connect("Toggled(Bool_t)","Alieve::TPCSectorVizEditor", this, "DoTrans()");
55 AddFrame(fSectorID, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
58 TGHorizontalFrame* f = new TGHorizontalFrame(this);
60 fRnrInn = new TGCheckButton(f, "Inner");
61 f->AddFrame(fRnrInn, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
62 fRnrInn->Connect("Toggled(Bool_t)","Alieve::TPCSectorVizEditor", this, "DoRnrInn()");
64 fRnrOut1 = new TGCheckButton(f, "Outer 1");
65 f->AddFrame(fRnrOut1, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
66 fRnrOut1->Connect("Toggled(Bool_t)","Alieve::TPCSectorVizEditor", this, "DoRnrOut1()");
68 fRnrOut2 = new TGCheckButton(f, "Outer 2");
69 f->AddFrame(fRnrOut2, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
70 fRnrOut2->Connect("Toggled(Bool_t)","Alieve::TPCSectorVizEditor", this, "DoRnrOut2()");
72 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
75 fThreshold = new RGValuator(this, "Threshold", 200, 0);
76 fThreshold->SetNELength(4);
77 fThreshold->SetLabelWidth(labelW);
79 fThreshold->GetSlider()->SetWidth(120);
80 fThreshold->SetLimits(0,149);
81 fThreshold->Connect("ValueSet(Double_t)",
82 "Alieve::TPCSectorVizEditor", this, "DoThreshold()");
83 AddFrame(fThreshold, new TGLayoutHints(kLHintsTop, 1, 1, 2, 1));
85 fMaxVal = new RGValuator(this,"MaxVal", 200, 0);
86 fMaxVal->SetNELength(4);
87 fMaxVal->SetLabelWidth(labelW);
89 fMaxVal->GetSlider()->SetWidth(120);
90 fMaxVal->SetLimits(0, 299);
91 fMaxVal->Connect("ValueSet(Double_t)",
92 "Alieve::TPCSectorVizEditor", this, "DoMaxVal()");
93 AddFrame(fMaxVal, new TGLayoutHints(kLHintsTop, 1, 1, 2, 1));
95 fTime = new RGDoubleValuator(this,"Time", 200, 0);
96 fTime->SetNELength(4);
97 fTime->SetLabelWidth(labelW);
99 fTime->GetSlider()->SetWidth(224);
100 fTime->SetLimits(0, 1023, TGNumberFormat::kNESInteger);
101 fTime->Connect("ValueSet()",
102 "Alieve::TPCSectorVizEditor", this, "DoTime()");
103 AddFrame(fTime, new TGLayoutHints(kLHintsTop, 1, 1, 2, 1));
106 // Register the editor.
107 TClass *cl = TPCSectorViz::Class();
108 TGedElement *ge = new TGedElement;
109 ge->fGedFrame = this;
111 cl->GetEditorList()->Add(ge);
114 TPCSectorVizEditor::~TPCSectorVizEditor()
117 /**************************************************************************/
119 void TPCSectorVizEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t /*event*/)
124 if (!obj || !obj->InheritsFrom(TPCSectorViz::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
132 fM = dynamic_cast<TPCSectorViz*>(fModel);
134 fSectorID->SetValue(fM->fSectorID);
135 fTrans->SetState(fM->fTrans ? kButtonDown : kButtonUp);
137 fRnrInn ->SetState(fM->fRnrInn ? kButtonDown : kButtonUp);
138 fRnrOut1->SetState(fM->fRnrOut1 ? kButtonDown : kButtonUp);
139 fRnrOut2->SetState(fM->fRnrOut2 ? kButtonDown : kButtonUp);
141 fThreshold->SetValue(fM->fThreshold);
142 fMaxVal->SetValue(fM->fMaxVal);
144 fTime->SetValues(fM->fMinTime, fM->fMaxTime);
149 /**************************************************************************/
151 void TPCSectorVizEditor::DoSectorID()
153 fM->SetSectorID((Int_t) fSectorID->GetValue());
157 void TPCSectorVizEditor::DoTrans()
159 fM->SetTrans(fTrans->IsOn());
163 /**************************************************************************/
165 void TPCSectorVizEditor::DoRnrInn()
167 fM->SetRnrInn(fRnrInn->IsOn());
171 void TPCSectorVizEditor::DoRnrOut1()
173 fM->SetRnrOut1(fRnrOut1->IsOn());
177 void TPCSectorVizEditor::DoRnrOut2()
179 fM->SetRnrOut2(fRnrOut2->IsOn());
183 /**************************************************************************/
185 void TPCSectorVizEditor::DoThreshold()
187 fM->SetThreshold((Short_t) fThreshold->GetValue());
188 fThreshold->SetValue(fM->fThreshold);
192 void TPCSectorVizEditor::DoMaxVal()
194 fM->SetMaxVal((Int_t) fMaxVal->GetValue());
195 fMaxVal->SetValue(fM->fMaxVal);
199 /**************************************************************************/
201 void TPCSectorVizEditor::DoTime()
203 fM->SetMinTime((Int_t) fTime->GetMin());
204 fM->SetMaxTime((Int_t) fTime->GetMax());