#include "TEveDigitSetEditor.h"
#include "TEveDigitSet.h"
#include "TEveGValuators.h"
#include "TEveRGBAPaletteEditor.h"
#include "TEveGedEditor.h"
#include "TVirtualPad.h"
#include "TColor.h"
#include "TH1F.h"
#include "TStyle.h"
#include "TGLabel.h"
#include "TG3DLine.h"
#include "TGButton.h"
#include "TGNumberEntry.h"
#include "TGColorSelect.h"
#include "TGDoubleSlider.h"
ClassImp(TEveDigitSetEditor)
TEveDigitSetEditor::TEveDigitSetEditor(const TGWindow *p, Int_t width, Int_t height,
UInt_t options, Pixel_t back) :
TGedFrame(p, width, height, options | kVerticalFrame, back),
fM (0),
fPalette (0),
fHistoButtFrame(0),
fInfoFrame(0)
{
MakeTitle("Palette controls");
fPalette = new TEveRGBAPaletteSubEditor(this);
AddFrame(fPalette, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 0, 0, 0));
fPalette->Connect("Changed()", "TEveDigitSetEditor", this, "Update()");
CreateInfoTab();
}
void TEveDigitSetEditor::CreateInfoTab()
{
fInfoFrame = CreateEditorTabSubFrame("Info");
TGCompositeFrame *title1 = new TGCompositeFrame(fInfoFrame, 180, 10,
kHorizontalFrame |
kLHintsExpandX |
kFixedWidth |
kOwnBackground);
title1->AddFrame(new TGLabel(title1, "TEveDigitSet Info"),
new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
title1->AddFrame(new TGHorizontal3DLine(title1),
new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
fInfoFrame->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
fHistoButtFrame = new TGHorizontalFrame(fInfoFrame);
TGTextButton* b = 0;
b = new TGTextButton(fHistoButtFrame, "Histo");
b->SetToolTipText("Show histogram over full range.");
fHistoButtFrame->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
b->Connect("Clicked()", "TEveDigitSetEditor", this, "DoHisto()");
b = new TGTextButton(fHistoButtFrame, "Range Histo");
b->SetToolTipText("Show histogram over selected range.");
fHistoButtFrame->AddFrame(b, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
b->Connect("Clicked()", "TEveDigitSetEditor", this, "DoRangeHisto()");
fInfoFrame->AddFrame(fHistoButtFrame, new TGLayoutHints(kLHintsExpandX, 2, 0, 0, 0));
}
void TEveDigitSetEditor::SetModel(TObject* obj)
{
fM = dynamic_cast<TEveDigitSet*>(obj);
if (fM->fValueIsColor || fM->fPalette == 0) {
fPalette->UnmapWindow();
} else {
fPalette->SetModel(fM->fPalette);
fPalette->MapWindow();
}
if (fM->fHistoButtons)
fHistoButtFrame->MapWindow();
else
fHistoButtFrame->UnmapWindow();
}
void TEveDigitSetEditor::DoHisto()
{
Int_t min, max;
if (fM->fPalette) {
min = fM->fPalette->GetLowLimit();
max = fM->fPalette->GetHighLimit();
} else {
fM->ScanMinMaxValues(min, max);
}
PlotHisto(min, max);
}
void TEveDigitSetEditor::DoRangeHisto()
{
Int_t min, max;
if (fM->fPalette) {
min = fM->fPalette->GetMinVal();
max = fM->fPalette->GetMaxVal();
} else {
fM->ScanMinMaxValues(min, max);
}
PlotHisto(min, max);
}
void TEveDigitSetEditor::PlotHisto(Int_t min, Int_t max)
{
Int_t nbins = max-min+1;
while (nbins > 200)
nbins /= 2;
TH1F* h = new TH1F(fM->GetName(), fM->GetTitle(), nbins, min-0.5, max+0.5);
h->SetDirectory(0);
h->SetBit(kCanDelete);
TEveChunkManager::iterator qi(fM->fPlex);
while (qi.next())
h->Fill(((TEveDigitSet::DigitBase_t*)qi())->fValue);
gStyle->SetOptStat(1111111);
h->Draw();
gPad->Modified();
gPad->Update();
}
TEveDigitSetEditor.cxx:10 TEveDigitSetEditor.cxx:11 TEveDigitSetEditor.cxx:12 TEveDigitSetEditor.cxx:13 TEveDigitSetEditor.cxx:14 TEveDigitSetEditor.cxx:15 TEveDigitSetEditor.cxx:16 TEveDigitSetEditor.cxx:17 TEveDigitSetEditor.cxx:18 TEveDigitSetEditor.cxx:19 TEveDigitSetEditor.cxx:20 TEveDigitSetEditor.cxx:21 TEveDigitSetEditor.cxx:22 TEveDigitSetEditor.cxx:23 TEveDigitSetEditor.cxx:24 TEveDigitSetEditor.cxx:25 TEveDigitSetEditor.cxx:26 TEveDigitSetEditor.cxx:27 TEveDigitSetEditor.cxx:28 TEveDigitSetEditor.cxx:29 TEveDigitSetEditor.cxx:30 TEveDigitSetEditor.cxx:31 TEveDigitSetEditor.cxx:32 TEveDigitSetEditor.cxx:33 TEveDigitSetEditor.cxx:34 TEveDigitSetEditor.cxx:35 TEveDigitSetEditor.cxx:36 TEveDigitSetEditor.cxx:37 TEveDigitSetEditor.cxx:38 TEveDigitSetEditor.cxx:39 TEveDigitSetEditor.cxx:40 TEveDigitSetEditor.cxx:41 TEveDigitSetEditor.cxx:42 TEveDigitSetEditor.cxx:43 TEveDigitSetEditor.cxx:44 TEveDigitSetEditor.cxx:45 TEveDigitSetEditor.cxx:46 TEveDigitSetEditor.cxx:47 TEveDigitSetEditor.cxx:48 TEveDigitSetEditor.cxx:49 TEveDigitSetEditor.cxx:50 TEveDigitSetEditor.cxx:51 TEveDigitSetEditor.cxx:52 TEveDigitSetEditor.cxx:53 TEveDigitSetEditor.cxx:54 TEveDigitSetEditor.cxx:55 TEveDigitSetEditor.cxx:56 TEveDigitSetEditor.cxx:57 TEveDigitSetEditor.cxx:58 TEveDigitSetEditor.cxx:59 TEveDigitSetEditor.cxx:60 TEveDigitSetEditor.cxx:61 TEveDigitSetEditor.cxx:62 TEveDigitSetEditor.cxx:63 TEveDigitSetEditor.cxx:64 TEveDigitSetEditor.cxx:65 TEveDigitSetEditor.cxx:66 TEveDigitSetEditor.cxx:67 TEveDigitSetEditor.cxx:68 TEveDigitSetEditor.cxx:69 TEveDigitSetEditor.cxx:70 TEveDigitSetEditor.cxx:71 TEveDigitSetEditor.cxx:72 TEveDigitSetEditor.cxx:73 TEveDigitSetEditor.cxx:74 TEveDigitSetEditor.cxx:75 TEveDigitSetEditor.cxx:76 TEveDigitSetEditor.cxx:77 TEveDigitSetEditor.cxx:78 TEveDigitSetEditor.cxx:79 TEveDigitSetEditor.cxx:80 TEveDigitSetEditor.cxx:81 TEveDigitSetEditor.cxx:82 TEveDigitSetEditor.cxx:83 TEveDigitSetEditor.cxx:84 TEveDigitSetEditor.cxx:85 TEveDigitSetEditor.cxx:86 TEveDigitSetEditor.cxx:87 TEveDigitSetEditor.cxx:88 TEveDigitSetEditor.cxx:89 TEveDigitSetEditor.cxx:90 TEveDigitSetEditor.cxx:91 TEveDigitSetEditor.cxx:92 TEveDigitSetEditor.cxx:93 TEveDigitSetEditor.cxx:94 TEveDigitSetEditor.cxx:95 TEveDigitSetEditor.cxx:96 TEveDigitSetEditor.cxx:97 TEveDigitSetEditor.cxx:98 TEveDigitSetEditor.cxx:99 TEveDigitSetEditor.cxx:100 TEveDigitSetEditor.cxx:101 TEveDigitSetEditor.cxx:102 TEveDigitSetEditor.cxx:103 TEveDigitSetEditor.cxx:104 TEveDigitSetEditor.cxx:105 TEveDigitSetEditor.cxx:106 TEveDigitSetEditor.cxx:107 TEveDigitSetEditor.cxx:108 TEveDigitSetEditor.cxx:109 TEveDigitSetEditor.cxx:110 TEveDigitSetEditor.cxx:111 TEveDigitSetEditor.cxx:112 TEveDigitSetEditor.cxx:113 TEveDigitSetEditor.cxx:114 TEveDigitSetEditor.cxx:115 TEveDigitSetEditor.cxx:116 TEveDigitSetEditor.cxx:117 TEveDigitSetEditor.cxx:118 TEveDigitSetEditor.cxx:119 TEveDigitSetEditor.cxx:120 TEveDigitSetEditor.cxx:121 TEveDigitSetEditor.cxx:122 TEveDigitSetEditor.cxx:123 TEveDigitSetEditor.cxx:124 TEveDigitSetEditor.cxx:125 TEveDigitSetEditor.cxx:126 TEveDigitSetEditor.cxx:127 TEveDigitSetEditor.cxx:128 TEveDigitSetEditor.cxx:129 TEveDigitSetEditor.cxx:130 TEveDigitSetEditor.cxx:131 TEveDigitSetEditor.cxx:132 TEveDigitSetEditor.cxx:133 TEveDigitSetEditor.cxx:134 TEveDigitSetEditor.cxx:135 TEveDigitSetEditor.cxx:136 TEveDigitSetEditor.cxx:137 TEveDigitSetEditor.cxx:138 TEveDigitSetEditor.cxx:139 TEveDigitSetEditor.cxx:140 TEveDigitSetEditor.cxx:141 TEveDigitSetEditor.cxx:142 TEveDigitSetEditor.cxx:143 TEveDigitSetEditor.cxx:144 TEveDigitSetEditor.cxx:145 TEveDigitSetEditor.cxx:146 TEveDigitSetEditor.cxx:147 TEveDigitSetEditor.cxx:148 TEveDigitSetEditor.cxx:149 TEveDigitSetEditor.cxx:150 TEveDigitSetEditor.cxx:151 TEveDigitSetEditor.cxx:152 TEveDigitSetEditor.cxx:153 TEveDigitSetEditor.cxx:154 TEveDigitSetEditor.cxx:155 TEveDigitSetEditor.cxx:156 TEveDigitSetEditor.cxx:157 TEveDigitSetEditor.cxx:158 TEveDigitSetEditor.cxx:159 TEveDigitSetEditor.cxx:160 TEveDigitSetEditor.cxx:161 TEveDigitSetEditor.cxx:162 TEveDigitSetEditor.cxx:163 TEveDigitSetEditor.cxx:164 TEveDigitSetEditor.cxx:165 TEveDigitSetEditor.cxx:166 TEveDigitSetEditor.cxx:167 TEveDigitSetEditor.cxx:168 TEveDigitSetEditor.cxx:169 TEveDigitSetEditor.cxx:170