// $Id: EFocalSurfacePainterEditor.cc,v 1.16 2005/11/11 10:37:00 pesce Exp $
// Author: Alessandro Thea 2005/02/20
/*****************************************************************************
* ESAF: Euso Simulation and Analysis Framework *
* *
* Id: EFocalSurfacePainterEditor *
* Package: <packagename> *
* Coordinator: <coordinator> *
* *
*****************************************************************************/
//_____________________________________________________________________________
//
// EFocalSurfacePainterEditor
//
// <extensive class description>
//
// Config file parameters
// ======================
//
// <parameter name>: <parameter description>
// -Valid options: <available options>
//
#include "EFocalSurfacePainterEditor.hh"
#include "ERunParameters.hh"
#include "TGComboBox.h"
#include "TGSlider.h"
#include "TGLabel.h"
#include "TGButton.h"
#include "TGButtonGroup.h"
#include "TGColorSelect.h"
#include "TGTab.h"
#include "TG3DLine.h"
#include "TColor.h"
#include "TGLabel.h"
#include "TGNumberEntry.h"
#include "Riostream.h"
enum {
kPMTCOLOR,
kPMTOFFCOLOR,
kPATTERN,
kMAPID,
kINTEGRAL,
kTRIGGER,
kTIME_INTEGRAL,
kTHRES_SLIDER,
kTHRES_NUMENTRY,
kABS_THRESH,
kGTU_COUNTER,
kGTU_NUMENTRY,
kCOUNTS_SLIDER,
kCOUNTS_NUMENTRY,
kEMPTY_PIXELS,
kOFF_PIXELS,
kPAINT_NG
};
ClassImp(TGedFrame)
ClassImp(EFocalSurfacePainterEditor)
//_____________________________________________________________________________
EFocalSurfacePainterEditor::EFocalSurfacePainterEditor( const TGWindow* p, Int_t id, Int_t width,
Int_t height, UInt_t options, Pixel_t back )
: TGedFrame(p, id, width, height, options | kVerticalFrame, back), fPainter(0) {
//
// Constructor
//
fGarbage = new TList;
TGCompositeFrame *h, *h1, *h2,*v;
TGLayoutHints* lay;
MakeTitle("Maps");
TGCompositeFrame *f2 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
fMapIDCombo = BuildMapIDCombo(f2, kMAPID);
f2->AddFrame(fMapIDCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));
fMapIDCombo->Resize(145, 20);
fMapIDCombo->Associate(this);
AddFrame(f2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
MakeTitle("Integral");
TGCompositeFrame *f15 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
fIntegralCombo = BuildIntegralCombo(f15, kINTEGRAL);
f15->AddFrame(fIntegralCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));
fIntegralCombo->Resize(145, 20);
fIntegralCombo->Associate(this);
AddFrame(f15, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
// View //////////////////////////////
MakeTitle("View");
v = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
fGarbage->Add(v);
h1 = new TGCompositeFrame(v, 80, 20, kHorizontalFrame);
fGarbage->Add(h1);
fViewRangeSlider = new TGHSlider(h1, 100, kSlider1 | kScaleBoth);
fViewRangeSlider->Resize(120,20);
fViewRangeSlider->SetRange(10,1250);
fViewRangeSlider->SetScale(20);
// fViewRangeSlider->SetPosition(5);
// h1->AddFrame(fViewRangeSlider, new TGLayoutHints(kLHintsLeft, 3,0,0,3));
h1->AddFrame(fViewRangeSlider, new TGLayoutHints(kLHintsLeft, 0,0,0,0));
// v->AddFrame(h1, new TGLayoutHints(kLHintsTop, 15, 7, 5, 0));
v->AddFrame(h1, new TGLayoutHints(kLHintsTop, 3, 7, 4, 1));
// lettering of the Rebin Slider
h2 = new TGCompositeFrame(v, 80, 20, kHorizontalFrame);
fGarbage->Add(h2);
fViewRMinLabel = new TGLabel(h2, "10 mm");
h2->AddFrame(fViewRMinLabel, new TGLayoutHints(kLHintsLeft, 8, 1, -1, 0));
fViewRMaxLabel = new TGLabel(h2, "1250 mm");
h2->AddFrame(fViewRMaxLabel, new TGLayoutHints(kLHintsLeft, 50, 3, -1, 0));
v->AddFrame(h2, new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
lay = new TGLayoutHints(kLHintsTop);
fGarbage->Add(lay);
AddFrame(v, lay);
// GTU ///////////////////////////////
MakeTitle("GTU");
v = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
fGarbage->Add(v);
h1 = new TGCompositeFrame(v, 80, 20, kHorizontalFrame);
fGarbage->Add(h1);
// Slider
fGtuSlider = new TGHSlider(h1, 1, 2);
fGtuSlider->Resize(90,20);
fGarbage->Add(lay = new TGLayoutHints(kLHintsLeft));
h1->AddFrame(fGtuSlider,lay);
fGtuEntry = new TGNumberEntry(h1, -1, 5, kGTU_NUMENTRY,
TGNumberFormat::kNESInteger,
TGNumberFormat::kNEAAnyNumber,
TGNumberFormat::kNELLimitMinMax, -1., 1.);
// numerical entry
fGtuEntry->Resize(40,20);
fGarbage->Add(lay = new TGLayoutHints(kLHintsRight));
h1->AddFrame(fGtuEntry, lay);
fGarbage->Add(lay = new TGLayoutHints(kLHintsTop, 3, 7, 4, 1));
v->AddFrame(h1, lay);
// labels
h2 = new TGCompositeFrame(v, 80, 20, kHorizontalFrame);
fGarbage->Add(h2);
fGtuMinLabel = new TGLabel(h2, "-1");
fGarbage->Add(lay = new TGLayoutHints(kLHintsLeft, 0, 1, -1, 0));
h2->AddFrame(fGtuMinLabel, lay);
fGtuMaxLabel = new TGLabel(h2, "+1");
fGarbage->Add(lay = new TGLayoutHints(kLHintsLeft, 80, 3, -1, 0));
h2->AddFrame(fGtuMaxLabel, lay);
fGarbage->Add( lay = new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
v->AddFrame(h2,lay);
lay = new TGLayoutHints(kLHintsTop);
fGarbage->Add(lay);
AddFrame(v, lay);
// Counts ///////////////////////////////
MakeTitle("Counts");
h = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
fCountsSlider = new TGHSlider(h, 1, 2, kCOUNTS_SLIDER);
fCountsSlider->Resize(90,20);
lay = new TGLayoutHints(kLHintsLeft);
fGarbage->Add(lay);
h->AddFrame(fCountsSlider, lay);
fCountsEntry = new TGNumberEntry(h, 30, 5, kCOUNTS_NUMENTRY,
TGNumberFormat::kNESInteger,
TGNumberFormat::kNEAPositive,
TGNumberFormat::kNELLimitMinMax, 0., 50.);
fCountsEntry->Resize(40,20);
lay = new TGLayoutHints(kLHintsRight);
h->AddFrame(fCountsEntry, lay);
lay = new TGLayoutHints(kLHintsTop, 3, 7, 4, 1);
fGarbage->Add(lay);
AddFrame(h, lay);
fGarbage->Add(h);
MakeTitle("Various");
// option related to HIST: some changes needed here! because of inconsistencies
// f15 = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
// fMakeTimeInt = new TGCheckButton(f15, "Time Integral", kTIME_INTEGRAL);
// fMakeTimeInt ->SetToolTipText("Draw the sum of all counts from gtu 0 to the current");
// f15->AddFrame(fMakeTimeInt, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
// AddFrame(f15, new TGLayoutHints(kLHintsTop, 1, 1, 0, -1));
// Show Marker Checkbox: draw marker (or not)
f7 = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
fAddGtuCount = new TGCheckButton(f7, "Gtu Counter", kGTU_COUNTER);
fAddGtuCount ->SetToolTipText("Show/Hide the Gtu counter");
f7->AddFrame(fAddGtuCount, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
AddFrame(f7, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
// Show Marker Checkbox: draw marker (or not)
f16 = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
fAddEmptyPixels = new TGCheckButton(f16, "Empty Pixels", kEMPTY_PIXELS);
fAddEmptyPixels ->SetToolTipText("Show/Hide empty pixels");
f16->AddFrame(fAddEmptyPixels, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
AddFrame(f16, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
// Show Marker Checkbox: draw marker (or not)
f17 = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
fAddOffPixels = new TGCheckButton(f17, "Off Pixels", kOFF_PIXELS);
fAddOffPixels ->SetToolTipText("Show/Hide off pixels");
f17->AddFrame(fAddOffPixels, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
AddFrame(f17, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
// Show Marker Checkbox: draw marker (or not)
f18 = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
fDrawNightGlow = new TGCheckButton(f18, "Paint NightGlow rate", kPAINT_NG);
fDrawNightGlow->SetToolTipText("Paint NightGlow rate on the focal surface");
f18->AddFrame(fDrawNightGlow, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
AddFrame(f18, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
/*
fPatternSelect = new TGedPatternSelect(f2, 1, kPATTERN);
f2->AddFrame(fPatternSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
fPatternSelect->Associate(this);
AddFrame(f2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
*/
fTab = (TGTab *)(p->GetParent()->GetParent());
CreateThresholdTab();
CreateColorTab();
//ConnectSignals2Slots();
fTab->MapSubwindows();
fTab->Layout();
fTab->MapWindow();
TClass *cl = EFocalSurfacePainter::Class();
TGedElement *ge = new TGedElement;
ge->fGedFrame = this;
ge->fCanvas = 0;
cl->GetEditorList()->Add(ge);
}
//_____________________________________________________________________________
EFocalSurfacePainterEditor::~EFocalSurfacePainterEditor() {
//
// Destructor
//
TGFrameElement *el;
TIter next(GetList());
while ((el = (TGFrameElement *)next())) {
if (!strcmp(el->fFrame->ClassName(), "TGCompositeFrame"))
((TGCompositeFrame *)el->fFrame)->Cleanup();
}
Cleanup();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t) {
// Pick up the used fill attributes.
fModel = 0;
fPad = 0;
if (obj == 0 || !obj->InheritsFrom("EFocalSurfacePainter")) {
SetActive(kFALSE);
for (Int_t i=0; i < fTab->GetNumberOfTabs(); i++){
if (fTab->GetTabContainer(i)==fColorContainer || fTab->GetTabContainer(i)==fThresholdContainer) {
fTab->GetTabContainer(i)->UnmapWindow(); // Hide the color tab if obj is not inherited from TH1 or
fTab->GetTabTab(i)->UnmapWindow(); // if a TH2, TH3 is drawn
fTab->SetEnabled(i,kFALSE); // also disable is, then the current tab will be changed
}
}
return;
}
TGFrameElement *el;
// calling the SetModel(initialization) of all editors in the BinTab
TIter nextCol(fColor->GetList());
while ((el = (TGFrameElement *) nextCol())) {
if ((el->fFrame)->InheritsFrom("TGedFrame"))
((TGedFrame *)(el->fFrame))->SetModel(pad, obj, 0);
}
// calling the SetModel(initialization) of all editors in the BinTab
TIter nextTrig(fThreshold->GetList());
while ((el = (TGFrameElement *) nextTrig())) {
if ((el->fFrame)->InheritsFrom("TGedFrame"))
((TGedFrame *)(el->fFrame))->SetModel(pad, obj, 0);
}
fModel = obj;
fPad = pad;
fPainter = dynamic_cast<EFocalSurfacePainter *>(fModel);
fCurrentMapID = fPainter->GetCurrentMapID();
fCurrentIntegral = fPainter->GetIntegral();
fCurrentTrigger = fPainter->GetCurrentTrigger();
if ( fTriggerCombo->GetNumberOfEntries() > 1 )
fTriggerCombo->RemoveEntries(1,fTriggerCombo->GetNumberOfEntries()-1);
if (fPainter->IsTriggerEnabled(kChipTrackingTrigger))
fTriggerCombo->AddEntry("ChipTracking", (Int_t)kChipTrackingTrigger);
if (fPainter->IsTriggerEnabled(kChipTrackingTrigger0))
fTriggerCombo->AddEntry("ChipTracking1", (Int_t)kChipTrackingTrigger0);
if (fPainter->IsTriggerEnabled(kChipTrackingTrigger1))
fTriggerCombo->AddEntry("ChipTracking1", (Int_t)kChipTrackingTrigger1);
if (fPainter->IsTriggerEnabled(kChipTrackingTrigger2))
fTriggerCombo->AddEntry("ChipTracking2", (Int_t)kChipTrackingTrigger2);
if (fPainter->IsTriggerEnabled(kChipTrackingTrigger3))
fTriggerCombo->AddEntry("ChipTracking3", (Int_t)kChipTrackingTrigger3);
if (fPainter->IsTriggerEnabled(kChipTrackingTrigger4))
fTriggerCombo->AddEntry("ChipTracking4", (Int_t)kChipTrackingTrigger4);
if (fPainter->IsTriggerEnabled(kSignalChipTrackingTrigger))
fTriggerCombo->AddEntry("SignalChipTracking", (Int_t)kSignalChipTrackingTrigger);
ERunParameters *runpars = fPainter->GetRunPars();
Int_t rmin = (Int_t)runpars->GetPmtData().GetPmtSide();
fViewRMinLabel->SetText(Form("%d mm", rmin));
fViewRangeSlider->SetRange(rmin,1250);
fViewRangeSlider->SetPosition((Int_t)fPainter->GetViewRange());
fMapIDCombo->Select(fCurrentMapID);
fIntegralCombo->Select(fCurrentIntegral);
fTriggerCombo->Select(fCurrentTrigger);
fThresholdSlider->SetRange(0,70);
fThresholdSlider->SetPosition((Int_t)fPainter->GetAlpha());
fAlphaEntry->SetLimits(TGNumberFormat::kNELLimitMinMax,0.,70.);
fAlphaEntry->SetIntNumber((Int_t)fPainter->GetAlpha());
fGtuSlider->SetRange(fPainter->GetFirstGtu(),fPainter->GetLastGtu());
fGtuSlider->SetPosition(fPainter->GetGtu());
fGtuEntry->SetLimits(TGNumberFormat::kNELLimitMinMax,-1,fPainter->GetLastGtu());
fGtuEntry->SetIntNumber(fPainter->GetGtu());
fGtuMinLabel->SetText(Form("%d",fPainter->GetFirstGtu()));
fGtuMaxLabel->SetText(Form("%d",fPainter->GetLastGtu()));
fCountsSlider->SetRange(1,100);
fCountsSlider->SetPosition(fPainter->GetMaxCounts());
fCountsEntry->SetLimits(TGNumberFormat::kNELLimitMinMax,1,50);
fCountsEntry->SetIntNumber(fPainter->GetMaxCounts());
if ( !fPainter->IsApplyThreshold() ) {
fThresholdType->SetButton(kNONE);
} else if ( fPainter->IsApplyThreshold() && fPainter->IsAbsoluteThreshold() ) {
fThresholdType->SetButton(kABSOLUTE);
} else if ( fPainter->IsApplyThreshold() && !fPainter->IsAbsoluteThreshold() ){
fThresholdType->SetButton(kRELATIVE);
}
// fMakeTimeInt->SetState( fPainter->IsShowTimeIntegral() ? kButtonDown : kButtonUp );
fAddGtuCount->SetState( fPainter->IsShowGtuCounter() ? kButtonDown : kButtonUp );
fAddEmptyPixels->SetState( fPainter->IsShowEmptyPixels() ? kButtonDown : kButtonUp );
fAddOffPixels->SetState( fPainter->IsShowOffPixels() ? kButtonDown : kButtonUp );
fDrawNightGlow->SetState( fPainter->IsDrawNightGlow() ? kButtonDown : kButtonUp );
Color_t c = fPainter->GetPmtColorHit();
Pixel_t p = TColor::Number2Pixel(c);
fPmtColorSelect->SetColor(p);
c = fPainter->GetPmtColorEmpty();
p = TColor::Number2Pixel(c);
fEmptyPmtColorSelect->SetColor(p);
/*
Style_t s = fAttFill->GetFillStyle();
fPatternSelect->SetPattern(s);
*/
for (Int_t i=1; i < fTab->GetNumberOfTabs(); i++) {
if (fTab->GetTabContainer(i)==fColorContainer || fTab->GetTabContainer(i)==fThresholdContainer ) {
fTab->GetTabContainer(i)->MapWindow();
fTab->GetTabTab(i)->MapWindow();
fTab->SetEnabled(i, kTRUE);
} else fTab->SetEnabled(i,kFALSE);
}
if (!fTab->IsEnabled(fTab->GetCurrent())) fTab->SetTab(0);
fTab->Layout();
if (fInit) ConnectSignals2Slots();
fTab->SetEnabled(1, kTRUE);
SetActive(kTRUE);
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::ConnectSignals2Slots() {
fMapIDCombo->Connect("Selected(Int_t)", "EFocalSurfacePainterEditor", this, "DoMapID(Int_t)");
fIntegralCombo->Connect("Selected(Int_t)", "EFocalSurfacePainterEditor", this, "DoIntegral(Int_t)");
fTriggerCombo->Connect("Selected(Int_t)", "EFocalSurfacePainterEditor", this, "DoTrigger(Int_t)");
fGtuSlider->Connect("PositionChanged(Int_t)","EFocalSurfacePainterEditor", this,"DoGtuSliderMoved(Int_t)");
fGtuEntry->Connect("ValueSet(Long_t)","EFocalSurfacePainterEditor", this,"DoGtuEntrySet()");
(fGtuEntry->GetNumberEntry())->Connect("ReturnPressed()","EFocalSurfacePainterEditor", this,"DoGtuEntrySet()");
fViewRangeSlider->Connect("PositionChanged(Int_t)","EFocalSurfacePainterEditor", this,"DoViewRangeSliderMoved(Int_t)");
fCountsSlider->Connect("PositionChanged(Int_t)","EFocalSurfacePainterEditor", this,"DoCountsSliderMoved(Int_t)");
fCountsEntry->Connect("ValueSet(Long_t)","EFocalSurfacePainterEditor", this,"DoCountsEntrySet()");
(fCountsEntry->GetNumberEntry())->Connect("ReturnPressed()","EFocalSurfacePainterEditor", this,"DoCountsEntrySet()");
fThresholdSlider->Connect("PositionChanged(Int_t)","EFocalSurfacePainterEditor", this,"DoThresholdSliderMoved(Int_t)");
fAlphaEntry->Connect("ValueSet(Long_t)","EFocalSurfacePainterEditor", this,"DoAlphaEntrySet()");
(fAlphaEntry->GetNumberEntry())->Connect("ReturnPressed()","EFocalSurfacePainterEditor", this,"DoAlphaEntrySet()");
fViewRangeSlider->Connect("Released()","EFocalSurfacePainterEditor", this,"Update()");
fAddGtuCount->Connect("Toggled(Bool_t)", "EFocalSurfacePainterEditor", this, "DoAddGtuCount(Bool_t)");
fAddEmptyPixels->Connect("Toggled(Bool_t)", "EFocalSurfacePainterEditor", this, "DoAddEmptyPixels(Bool_t)");
fAddOffPixels->Connect("Toggled(Bool_t)", "EFocalSurfacePainterEditor", this, "DoAddOffPixels(Bool_t)");
fDrawNightGlow->Connect("Toggled(Bool_t)", "EFocalSurfacePainterEditor", this, "DoDrawNightGlow(Bool_t)");
fThresholdType->Connect("Clicked(Int_t)", "EFocalSurfacePainterEditor", this, "DoThreshold(Threshold_t)");
fPmtColorSelect->Connect("ColorSelected(Pixel_t)","EFocalSurfacePainterEditor",this,"DoPmtFillColor(Pixel_t)");
fEmptyPmtColorSelect->Connect("ColorSelected(Pixel_t)","EFocalSurfacePainterEditor",this,"DoEmptyPmtFillColor(Pixel_t)");
fInit = kFALSE;
}
//______________________________________________________________________________
TGComboBox* EFocalSurfacePainterEditor::BuildMapIDCombo(TGFrame* parent, Int_t id) {
// Marker size combobox.
char a[][100] = {"kFeeHits","kFeeSignals","kCellHits"};
TGComboBox *c = new TGComboBox(parent, id);
for (int i = 1; i <= 3; i++) {
c->AddEntry(a[i-1], i);
}
return c;
}
//______________________________________________________________________________
TGComboBox* EFocalSurfacePainterEditor::BuildIntegralCombo(TGFrame* parent, Int_t id) {
// Marker size combobox.
char a[][100] = {"kNone","kSum","kMax"};
TGComboBox *c = new TGComboBox(parent, id);
for (int i = 1; i <= 3; i++) {
c->AddEntry(a[i-1], i);
}
return c;
}
//______________________________________________________________________________
TGComboBox* EFocalSurfacePainterEditor::BuildChipTriggerCombo(TGFrame* parent, Int_t id) {
// Marker size combobox.
TGComboBox *c = new TGComboBox(parent, id);
c->AddEntry("No Trigger", 0);
return c;
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoMapID( Int_t id ) {
//
// Set map to paint
//
fPainter->SetCurrentMapID( id );
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoIntegral(Int_t id) {
fPainter->SetIntegral(id);
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoTrigger(Int_t id) {
fPainter->ApplyTriggerThreshold((ETriggerTypeIdentifier)id);
Float_t val = fPainter->GetAlpha();
fPainter->IsAbsoluteThreshold() ? fThresholdType->SetButton(kABSOLUTE) : fThresholdType->SetButton(kRELATIVE);
if (id==0 ) fThresholdType->SetButton(kNONE);
fThresholdSlider->SetPosition( (Int_t)val*10 );
fAlphaEntry->SetIntNumber( (Int_t)val*10 );
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoThresholdSliderMoved(Int_t pos) {
fPainter->SetAlpha( pos/10 );
fAlphaEntry->SetIntNumber( pos );
fPainter->IsAbsoluteThreshold() ? fThresholdType->SetButton(kABSOLUTE) : fThresholdType->SetButton(kRELATIVE);
fTriggerCombo->Select(0);
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoAlphaEntrySet() {
Float_t val = fAlphaEntry->GetNumberEntry()->GetIntNumber();
fPainter->SetAlpha( val/10 );
fThresholdSlider->SetPosition( (Int_t)val );
fPainter->IsAbsoluteThreshold() ? fThresholdType->SetButton(kABSOLUTE) : fThresholdType->SetButton(kRELATIVE);
fTriggerCombo->Select(0);
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoGtuSliderMoved( Int_t pos ) {
//
//
//
fPainter->SetGtu( pos );
fGtuEntry->SetIntNumber( pos );
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoGtuEntrySet() {
//
//
//
Int_t val = fGtuEntry->GetNumberEntry()->GetIntNumber();
fPainter->SetGtu( val );
fGtuSlider->SetPosition( val );
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoCountsSliderMoved( Int_t pos ) {
//
//
//
fPainter->SetMaxCounts( pos );
fCountsEntry->SetIntNumber( pos );
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoCountsEntrySet() {
//
//
//
Int_t val = fCountsEntry->GetNumberEntry()->GetIntNumber();
fPainter->SetMaxCounts( val );
fCountsSlider->SetPosition( val );
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoViewRangeSliderMoved( Int_t pos ) {
//
//
//
fPainter->SetViewRange( (Float_t)pos );
// Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoAddGtuCount(Bool_t on) {
fPainter->SetShowGtuCounter(on);
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoAddEmptyPixels(Bool_t on) {
fPainter->SetShowEmptyPixels(on);
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoAddOffPixels(Bool_t on) {
fPainter->SetShowOffPixels(on);
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoDrawNightGlow(Bool_t on) {
fPainter->SetDrawNightGlow(on);
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoThreshold(Threshold_t th) {
if ( th==kNONE ) {
fPainter->SetApplyThreshold(kFALSE);
fThresholdSlider->SetPosition(0);
fAlphaEntry->SetIntNumber(0);
} else if ( th==kABSOLUTE ) {
fPainter->SetApplyThreshold(kTRUE);
fPainter->SetAbsoluteThreshold(kTRUE);
} else if ( th==kRELATIVE ) {
fPainter->SetApplyThreshold(kTRUE);
fPainter->SetAbsoluteThreshold(kFALSE);
}
fTriggerCombo->Select(0);
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoPmtFillColor(Pixel_t color) {
fPainter->SetPmtColorHit(TColor::GetColor(color));
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::DoEmptyPmtFillColor(Pixel_t color) {
fPainter->SetPmtColorEmpty(TColor::GetColor(color));
Update();
}
//______________________________________________________________________________
void EFocalSurfacePainterEditor::CreateColorTab() {
// Creates the BinTab
fColorContainer = fTab->AddTab("Color");
fColor = new TGCompositeFrame(fColorContainer, 80, 20, kVerticalFrame);
fColor->AddFrame(new TGedNameFrame(fColor, 1000), new TGLayoutHints(kLHintsTop | kLHintsExpandX,0, 0, 2, 2));
TGCompositeFrame *title1 = new TGCompositeFrame(fColor, 145, 10, kHorizontalFrame |
kLHintsExpandX | kFixedWidth | kOwnBackground);
title1->AddFrame(new TGLabel(title1, "Pmts colors"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
title1->AddFrame(new TGHorizontal3DLine(title1),
new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
fColor->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
// pmt color selector
TGCompositeFrame *f3 = new TGCompositeFrame(fColor, 80, 20, kHorizontalFrame);
fPmtColorSelect = new TGColorSelect(f3, 0, kPMTCOLOR);
f3->AddFrame(fPmtColorSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
// fColor->AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
// pmt color selector
fEmptyPmtColorSelect = new TGColorSelect(f3, 0, kPMTOFFCOLOR);
f3->AddFrame(fEmptyPmtColorSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
fColor->AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
fColorContainer->AddFrame(fColor, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 2, 2));
}
//_______________________________________________________________________________
void EFocalSurfacePainterEditor::CreateThresholdTab() {
//
// Create the threshold tab in the editor
//
TGCompositeFrame *h1, *h2, *f3, *f8, *title1, *title2;
fThresholdContainer = fTab->AddTab("Threshold");
fThreshold = new TGCompositeFrame(fThresholdContainer, 80, 20, kVerticalFrame);
fThreshold->AddFrame(new TGedNameFrame(fThreshold, 1000), new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY, 0, 0, 2, 2));
title1 = new TGCompositeFrame(fThreshold, 145, 10, kHorizontalFrame | kLHintsExpandX | kFixedWidth | kOwnBackground);
title1->AddFrame(new TGLabel(title1, "Alpha"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
title1->AddFrame(new TGHorizontal3DLine(title1), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
fThreshold->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
h1 = new TGCompositeFrame(fThreshold, 80, 20, kHorizontalFrame);
fThresholdSlider = new TGHSlider(h1, 1, 2, kTHRES_SLIDER);
fThresholdSlider->Resize(90,20);
h1->AddFrame(fThresholdSlider, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 0));
// fThreshold->AddFrame(h1, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
fAlphaEntry = new TGNumberEntry(h1, -1, 5, kTHRES_NUMENTRY,
TGNumberFormat::kNESRealOne,
TGNumberFormat::kNEAPositive,
TGNumberFormat::kNELLimitMinMax, 0., 70.);
fAlphaEntry->Resize(50,20);
h1->AddFrame(fAlphaEntry, new TGLayoutHints(kLHintsRight));
fThreshold->AddFrame(h1, new TGLayoutHints(kLHintsTop, 3, 7, 4, 1));
h2 = new TGCompositeFrame(fThreshold, 80, 20, kHorizontalFrame);
fAlphaMinLabel = new TGLabel(h2, "0");
h2->AddFrame(fAlphaMinLabel, new TGLayoutHints(kLHintsLeft, 10, 1, -1, 0));
fAlphaMaxLabel = new TGLabel(h2, "7");
h2->AddFrame(fAlphaMaxLabel, new TGLayoutHints(kLHintsLeft, 90, 3, -1, 0));
fThreshold->AddFrame(h2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
f8 = new TGCompositeFrame(fThreshold, 80, 20, kVerticalFrame);
fThresholdType = new TGButtonGroup(f8,"Threshold type", kVerticalFrame);
fThNone = new TGRadioButton(fThresholdType, new TGHotString("&None"),kNONE);
fThAbs = new TGRadioButton(fThresholdType, new TGHotString("&Absolute"),kABSOLUTE);
fThRel = new TGRadioButton(fThresholdType, new TGHotString("R&elative"),kRELATIVE);
fThresholdType->Show();
f8->AddFrame(fThresholdType, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
fThreshold->AddFrame(f8, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
title2 = new TGCompositeFrame(fThreshold, 145, 10, kHorizontalFrame | kLHintsExpandX | kFixedWidth | kOwnBackground);
title2->AddFrame(new TGLabel(title2, "Trigger"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
title2->AddFrame(new TGHorizontal3DLine(title2), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
fThreshold->AddFrame(title2, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
f3 = new TGCompositeFrame(fThresholdContainer, 80, 20, kHorizontalFrame);
fTriggerCombo = BuildChipTriggerCombo(f3, kTRIGGER);
f3->AddFrame(fTriggerCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 0, 0));
fTriggerCombo->Resize(145, 20);
fTriggerCombo->Associate(fThreshold);
fThreshold->AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 1, 0));
fThresholdContainer->AddFrame(fThreshold, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 2, 2));
}