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,
28 Int_t width, Int_t height,
29 UInt_t options, Pixel_t back) :
30 TGedFrame(p, 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 TPCSectorVizEditor::~TPCSectorVizEditor()
109 /**************************************************************************/
111 void TPCSectorVizEditor::SetModel(TObject* obj)
113 fM = dynamic_cast<TPCSectorViz*>(obj);
115 fSectorID->SetValue(fM->fSectorID);
116 fTrans->SetState(fM->fTrans ? kButtonDown : kButtonUp);
118 fRnrInn ->SetState(fM->fRnrInn ? kButtonDown : kButtonUp);
119 fRnrOut1->SetState(fM->fRnrOut1 ? kButtonDown : kButtonUp);
120 fRnrOut2->SetState(fM->fRnrOut2 ? kButtonDown : kButtonUp);
122 fThreshold->SetValue(fM->fThreshold);
123 fMaxVal->SetValue(fM->fMaxVal);
125 fTime->SetValues(fM->fMinTime, fM->fMaxTime);
128 /**************************************************************************/
130 void TPCSectorVizEditor::DoSectorID()
132 fM->SetSectorID((Int_t) fSectorID->GetValue());
136 void TPCSectorVizEditor::DoTrans()
138 fM->SetTrans(fTrans->IsOn());
142 /**************************************************************************/
144 void TPCSectorVizEditor::DoRnrInn()
146 fM->SetRnrInn(fRnrInn->IsOn());
150 void TPCSectorVizEditor::DoRnrOut1()
152 fM->SetRnrOut1(fRnrOut1->IsOn());
156 void TPCSectorVizEditor::DoRnrOut2()
158 fM->SetRnrOut2(fRnrOut2->IsOn());
162 /**************************************************************************/
164 void TPCSectorVizEditor::DoThreshold()
166 fM->SetThreshold((Short_t) fThreshold->GetValue());
167 fThreshold->SetValue(fM->fThreshold);
171 void TPCSectorVizEditor::DoMaxVal()
173 fM->SetMaxVal((Int_t) fMaxVal->GetValue());
174 fMaxVal->SetValue(fM->fMaxVal);
178 /**************************************************************************/
180 void TPCSectorVizEditor::DoTime()
182 fM->SetMinTime((Int_t) fTime->GetMin());
183 fM->SetMaxTime((Int_t) fTime->GetMax());