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 "AliEveTOFSectorEditor.h"
11 #include <Alieve/AliEveTOFSector.h>
13 #include <TVirtualPad.h>
15 #include <TEveGValuators.h>
19 #include <TGNumberEntry.h>
20 #include <TGColorSelect.h>
22 #include <TGDoubleSlider.h>
25 //______________________________________________________________________________
26 // AliEveTOFSectorEditor
29 ClassImp(AliEveTOFSectorEditor)
31 AliEveTOFSectorEditor::AliEveTOFSectorEditor(const TGWindow *p, Int_t width, Int_t height,
32 UInt_t options, Pixel_t back) :
33 TGedFrame(p, width, height, options | kVerticalFrame, back),
36 fSectorID (0), fAutoTrans (0),
37 fPlate0(0x0), fPlate1(0x0), fPlate2(0x0), fPlate3(0x0), fPlate4(0x0),
38 fThreshold (0), fMaxVal (0)
40 // Initialize widget pointers to 0
44 fHMTrans = new TEveTransSubEditor(this);
45 fHMTrans->Connect("UseTrans()", "AliEveTPCSectorVizEditor", this, "Update()");
46 fHMTrans->Connect("TransChanged()", "AliEveTPCSectorVizEditor", this, "Update()");
47 AddFrame(fHMTrans, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 0, 0, 0));
49 MakeTitle("AliEveTPCSectorViz");*/
52 fPlate = new TGCheckButton*[5];
53 for (Int_t ii=0; ii<5; ii++) fPlate[ii] = new TGCheckButton;
56 MakeTitle("AliEveTOFSector");
58 fSectorID = new TEveGValuator(this, "SectorID", 110, 0);
59 fSectorID->SetLabelWidth(60);
60 fSectorID->SetShowSlider(kFALSE);
61 fSectorID->SetNELength(4);
63 fSectorID->SetLimits(0, 17);
64 fSectorID->SetToolTip("The 18 Tof Sector's");
65 fSectorID->Connect("ValueSet(Double_t)",
66 "AliEveTOFSectorEditor", this, "DoSectorID()");
67 // Reuse sectorID for auto-transformation button
68 fAutoTrans = new TGCheckButton(fSectorID, "AutoTrans");
69 fAutoTrans->SetToolTipText("Automatically set transformation to true position");
70 fSectorID->AddFrame(fAutoTrans, new TGLayoutHints(kLHintsLeft, 12, 0, 1, 0));
71 fAutoTrans->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoAutoTrans()");
72 AddFrame(fSectorID, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
75 // fXYZZ = new TGSomeWidget(this, ...);
76 // AddFrame(fXYZZ, new TGLayoutHints(...));
77 // fXYZZ->Connect("SignalName()", "AliEveTOFSectorEditor", this, "DoXYZZ()"); {
78 TGHorizontalFrame* f = new TGHorizontalFrame(this);
81 fPlate0 = new TGCheckButton(f, "Plate0");
82 f->AddFrame(fPlate0, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
83 fPlate0->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate0()");
84 //fPlate0->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate(Int_t)");
87 fPlate1 = new TGCheckButton(f, "Plate 1");
88 f->AddFrame(fPlate1, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
89 fPlate1->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate1()");
90 //fPlate1->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate(Int_t)");
93 fPlate2 = new TGCheckButton(f, "Plate 2");
94 f->AddFrame(fPlate2, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
95 fPlate2->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate2()");
96 //fPlate2->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate(Int_t)");
99 fPlate3 = new TGCheckButton(f, "Plate 3");
100 f->AddFrame(fPlate3, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
101 fPlate3->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate3()");
102 //fPlate3->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate(Int_t)");
105 fPlate4 = new TGCheckButton(f, "Plate 4");
106 f->AddFrame(fPlate4, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
107 fPlate4->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate4()");
108 //fPlate4->Connect("Toggled(Bool_t)","AliEveTOFSectorEditor", this, "DoPlate(Int_t)");
117 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
119 fThreshold = new TEveGValuator(this, "Threshold", 200, 0);
120 fThreshold->SetNELength(4);
121 fThreshold->SetLabelWidth(60);
123 fThreshold->GetSlider()->SetWidth(120);
124 fThreshold->SetLimits(0,250);
125 fThreshold->Connect("ValueSet(Double_t)",
126 "AliEveTOFSectorEditor", this, "DoThreshold()");
127 AddFrame(fThreshold, new TGLayoutHints(kLHintsTop, 1, 1, 2, 1));
129 fMaxVal = new TEveGValuator(this,"MaxVal", 200, 0);
130 fMaxVal->SetNELength(4);
131 fMaxVal->SetLabelWidth(60);
133 fMaxVal->GetSlider()->SetWidth(60);
134 fMaxVal->SetLimits(0, 500);
135 fMaxVal->Connect("ValueSet(Double_t)",
136 "AliEveTOFSectorEditor", this, "DoMaxVal()");
137 AddFrame(fMaxVal, new TGLayoutHints(kLHintsTop, 1, 1, 2, 1));
144 AliEveTOFSectorEditor::~AliEveTOFSectorEditor()
147 /******************************************************************************/
149 void AliEveTOFSectorEditor::SetModel(TObject* obj)
151 fM = dynamic_cast<AliEveTOFSector*>(obj);
153 fSectorID->SetValue(fM->GetSectorID());
154 fAutoTrans->SetState(fM->GetAutoTrans() ? kButtonDown : kButtonUp);
156 fPlate0->SetState(fM->GetPlate(0) ? kButtonDown : kButtonUp);
157 fPlate1->SetState(fM->GetPlate(1) ? kButtonDown : kButtonUp);
158 fPlate2->SetState(fM->GetPlate(2) ? kButtonDown : kButtonUp);
159 fPlate3->SetState(fM->GetPlate(3) ? kButtonDown : kButtonUp);
160 fPlate4->SetState(fM->GetPlate(4) ? kButtonDown : kButtonUp);
162 // Set values of widgets
163 // fXYZZ->SetValue(fM->GetXYZZ());
166 /******************************************************************************/
167 void AliEveTOFSectorEditor::DoSectorID()
169 fM->SetSectorID((Int_t) fSectorID->GetValue());
173 void AliEveTOFSectorEditor::DoAutoTrans()
175 fM->SetAutoTrans(fAutoTrans->IsOn());
179 /******************************************************************************/
181 void AliEveTOFSectorEditor::DoPlate(Int_t nPlate)
183 fM->SetPlate(nPlate, fPlate[nPlate]->IsOn());
187 void AliEveTOFSectorEditor::DoPlate0()
189 fM->SetPlate(0, fPlate0->IsOn());
193 void AliEveTOFSectorEditor::DoPlate1()
195 fM->SetPlate(1, fPlate1->IsOn());
199 void AliEveTOFSectorEditor::DoPlate2()
201 fM->SetPlate(2, fPlate2->IsOn());
204 void AliEveTOFSectorEditor::DoPlate3()
206 fM->SetPlate(3, fPlate3->IsOn());
210 void AliEveTOFSectorEditor::DoPlate4()
212 fM->SetPlate(4, fPlate4->IsOn());
217 void AliEveTOFSectorEditor::DoThreshold()
219 fM->SetThreshold((Short_t) fThreshold->GetValue());
220 fThreshold->SetValue(fM->GetThreshold());
224 void AliEveTOFSectorEditor::DoMaxVal()
226 fM->SetMaxVal((Int_t) fMaxVal->GetValue());
227 fMaxVal->SetValue(fM->GetMaxVal());
231 /******************************************************************************/
233 void AliEveTOFSectorEditor::DoTime()
235 fM->SetMinTime((Int_t) fTime->GetMin());
236 fM->SetMaxTime((Int_t) fTime->GetMax());
241 /******************************************************************************/
259 // Implements callback/slot methods
261 // void AliEveTOFSectorEditor::DoXYZZ()
263 // fM->SetXYZZ(fXYZZ->GetValue());