3 #include "DigitSetEditor.h"
4 #include <Reve/DigitSet.h>
6 #include <Reve/RGValuators.h>
7 #include <Reve/ZTransEditor.h>
8 #include <Reve/RGBAPaletteEditor.h>
9 #include <Reve/RGEditor.h>
11 #include <TVirtualPad.h>
19 #include <TGNumberEntry.h>
20 #include <TGColorSelect.h>
21 #include <TGDoubleSlider.h>
25 //______________________________________________________________________
29 ClassImp(DigitSetEditor)
31 DigitSetEditor::DigitSetEditor(const TGWindow *p, Int_t width, Int_t height,
32 UInt_t options, Pixel_t back) :
33 TGedFrame(p, width, height, options | kVerticalFrame, back),
41 MakeTitle("Transformation matrix");
43 fHMTrans = new ZTransSubEditor(this);
44 fHMTrans->Connect("UseTrans()", "Reve::DigitSetEditor", this, "Update()");
45 fHMTrans->Connect("TransChanged()", "Reve::DigitSetEditor", this, "Update()");
46 AddFrame(fHMTrans, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 0, 0, 0));
49 MakeTitle("Palette controls");
51 fPalette = new RGBAPaletteSubEditor(this);
52 fPalette->Connect("Changed", "Reve::DigitSetEditor", this, "Update()");
53 AddFrame(fPalette, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 0, 0, 0));
58 DigitSetEditor::~DigitSetEditor()
61 /*************************************************************************/
62 void DigitSetEditor::CreateInfoTab()
65 fInfoFrame = CreateEditorTabSubFrame("Info");
67 TGCompositeFrame *title1 = new TGCompositeFrame(fInfoFrame, 180, 10,
73 title1->AddFrame(new TGLabel(title1, "DigitSet Info"),
74 new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
75 title1->AddFrame(new TGHorizontal3DLine(title1),
76 new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
77 fInfoFrame->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
80 fHistoButtFrame = new TGHorizontalFrame(fInfoFrame);
82 b = new TGTextButton(fHistoButtFrame, "Histo");
83 b->SetToolTipText("Show histogram over full range.");
84 fHistoButtFrame->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
85 b->Connect("Clicked()", "Reve::DigitSetEditor", this, "DoHisto()");
87 b = new TGTextButton(fHistoButtFrame, "Range Histo");
88 b->SetToolTipText("Show histogram over selected range.");
89 fHistoButtFrame->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
90 b->Connect("Clicked()", "Reve::DigitSetEditor", this, "DoRangeHisto()");
91 fInfoFrame->AddFrame(fHistoButtFrame, new TGLayoutHints(kLHintsExpandX, 2, 0, 0, 0));
94 /**************************************************************************/
96 void DigitSetEditor::SetModel(TObject* obj)
98 fM = dynamic_cast<DigitSet*>(obj);
100 fHMTrans->SetDataFromTrans(&fM->fHMTrans);
102 if (fM->fValueIsColor || fM->fPalette == 0) {
103 fPalette->UnmapWindow();
105 fPalette->SetModel(fM->fPalette);
106 fPalette->MapWindow();
109 // Set values of widgets
110 // fXYZZ->SetValue(fM->GetXYZZ());
112 if (fM->fHistoButtons)
113 fHistoButtFrame->MapWindow();
115 fHistoButtFrame->UnmapWindow();
118 /**************************************************************************/
120 void DigitSetEditor::DoHisto()
124 min = fM->fPalette->GetLowLimit();
125 max = fM->fPalette->GetHighLimit();
127 fM->ScanMinMaxValues(min, max);
132 void DigitSetEditor::DoRangeHisto()
136 min = fM->fPalette->GetMinVal();
137 max = fM->fPalette->GetMaxVal();
139 fM->ScanMinMaxValues(min, max);
144 void DigitSetEditor::PlotHisto(Int_t min, Int_t max)
146 Int_t nbins = max-min+1;
150 TH1F* h = new TH1F(fM->GetName(), fM->GetTitle(), nbins, min-0.5, max+0.5);
152 h->SetBit(kCanDelete);
153 VoidCPlex::iterator qi(fM->fPlex);
155 h->Fill(((DigitSet::DigitBase*)qi())->fValue);
157 gStyle->SetOptStat(1111111);