source: JEM-EUSO/esaf_cc_at_lal/packages/common/eventviewer/src/EFocalSurfacePainterEditor.cc @ 114

Last change on this file since 114 was 114, checked in by moretto, 11 years ago

actual version of ESAF at CCin2p3

File size: 30.0 KB
Line 
1// $Id: EFocalSurfacePainterEditor.cc 2782 2007-07-16 09:25:45Z thea $
2// Author: Alessandro Thea   2005/02/20
3
4/*****************************************************************************
5 * ESAF: Euso Simulation and Analysis Framework                              *
6 *                                                                           *
7 *  Id: EFocalSurfacePainterEditor                                           *
8 *  Package: <packagename>                                                   *
9 *  Coordinator: <coordinator>                                               *
10 *                                                                           *
11 *****************************************************************************/
12
13//_____________________________________________________________________________
14//
15// EFocalSurfacePainterEditor
16//
17// <extensive class description>
18//
19//   Config file parameters
20//   ======================
21//
22//   <parameter name>: <parameter description>
23//   -Valid options: <available options>
24//
25
26#include "EFocalSurfacePainterEditor.hh"
27#include "ERunParameters.hh"
28
29#include "TGComboBox.h"
30#include "TGSlider.h"
31#include "TGLabel.h"
32#include "TGButton.h"
33#include "TGButtonGroup.h"
34#include "TGColorSelect.h"
35#include "TGTab.h"
36#include "TG3DLine.h"
37#include "TColor.h"
38#include "TGLabel.h"
39#include "TGNumberEntry.h"
40#include "TGedEditor.h"
41#include "Riostream.h"
42
43enum {
44    kPMTCOLOR,
45    kPMTOFFCOLOR,
46    kPATTERN,
47    kMAPID,
48    kINTEGRAL,
49    kTRIGGER,
50    kTIME_INTEGRAL,
51    kTHRES_SLIDER,
52    kTHRES_NUMENTRY,
53    kABS_THRESH,
54    kGTU_COUNTER,
55    kGTU_NUMENTRY,
56    kCOUNTS_SLIDER,
57    kCOUNTS_NUMENTRY,
58    kEMPTY_PIXELS,
59    kOFF_PIXELS,
60    kPAINT_NG,
61    kPAINT_NCNT
62};
63
64
65ClassImp(TGedFrame)
66ClassImp(EFocalSurfacePainterEditor)
67
68//_____________________________________________________________________________
69EFocalSurfacePainterEditor::EFocalSurfacePainterEditor( const TGWindow* p, Int_t width,
70                                  Int_t height, UInt_t options, Pixel_t back ) 
71    : TGedFrame(p, width, height, options | kVerticalFrame, back), fPainter(0) {
72    //
73    // Constructor
74    //
75
76    fGarbage = new TList;
77    TGCompositeFrame *h, *h1, *h2,*v; 
78    TGLayoutHints* lay;
79
80    MakeTitle("Maps");
81
82    TGCompositeFrame *f2 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
83
84    fMapIDCombo = BuildMapIDCombo(f2, kMAPID);
85    f2->AddFrame(fMapIDCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));
86    fMapIDCombo->Resize(145, 20);
87    fMapIDCombo->Associate(this);
88    AddFrame(f2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
89
90    MakeTitle("Integral");
91
92    TGCompositeFrame *f15 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
93
94    fIntegralCombo = BuildIntegralCombo(f15, kINTEGRAL);
95    f15->AddFrame(fIntegralCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));
96    fIntegralCombo->Resize(145, 20);
97    fIntegralCombo->Associate(this);
98    AddFrame(f15, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
99
100
101    // View //////////////////////////////
102    MakeTitle("View");
103
104    v = new TGCompositeFrame(this, 80, 20, kVerticalFrame);   
105    fGarbage->Add(v);
106    h1 = new TGCompositeFrame(v, 80, 20, kHorizontalFrame);
107    fGarbage->Add(h1);
108
109    fViewRangeSlider  = new TGHSlider(h1, 100, kSlider1 | kScaleBoth);
110    fViewRangeSlider->Resize(120,20); 
111    fViewRangeSlider->SetRange(10,1250);
112    fViewRangeSlider->SetScale(20);
113//    fViewRangeSlider->SetPosition(5);
114//    h1->AddFrame(fViewRangeSlider, new TGLayoutHints(kLHintsLeft, 3,0,0,3));
115    h1->AddFrame(fViewRangeSlider, new TGLayoutHints(kLHintsLeft, 0,0,0,0));
116//    v->AddFrame(h1, new TGLayoutHints(kLHintsTop, 15, 7, 5, 0));
117    v->AddFrame(h1, new TGLayoutHints(kLHintsTop, 3, 7, 4, 1));
118
119    //  lettering of the Rebin Slider
120    h2 = new TGCompositeFrame(v, 80, 20, kHorizontalFrame);   
121    fGarbage->Add(h2);
122
123    fViewRMinLabel = new TGLabel(h2, "10 mm");
124    h2->AddFrame(fViewRMinLabel, new TGLayoutHints(kLHintsLeft, 8, 1, -1, 0));
125    fViewRMaxLabel = new TGLabel(h2, "1250 mm");
126    h2->AddFrame(fViewRMaxLabel, new TGLayoutHints(kLHintsLeft, 50, 3, -1, 0));
127    v->AddFrame(h2, new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
128
129    lay =  new TGLayoutHints(kLHintsTop);
130    fGarbage->Add(lay);
131
132    AddFrame(v, lay);
133
134
135    // GTU ///////////////////////////////
136    MakeTitle("GTU");
137
138    v = new TGCompositeFrame(this, 80, 20, kVerticalFrame);   
139    fGarbage->Add(v);
140
141    h1 = new TGCompositeFrame(v, 80, 20, kHorizontalFrame);
142    fGarbage->Add(h1);
143    // Slider
144    fGtuSlider = new TGHSlider(h1, 1, 2);
145    fGtuSlider->Resize(90,20);
146    fGarbage->Add(lay = new TGLayoutHints(kLHintsLeft));
147    h1->AddFrame(fGtuSlider,lay);
148
149    fGtuEntry = new TGNumberEntry(h1, -1, 5, kGTU_NUMENTRY, 
150            TGNumberFormat::kNESInteger,
151            TGNumberFormat::kNEAAnyNumber,
152            TGNumberFormat::kNELLimitMinMax, -1., 1.);
153
154    // numerical entry
155    fGtuEntry->Resize(40,20);
156
157    fGarbage->Add(lay = new TGLayoutHints(kLHintsRight));
158    h1->AddFrame(fGtuEntry, lay);
159
160
161    fGarbage->Add(lay = new TGLayoutHints(kLHintsTop, 3, 7, 4, 1));
162    v->AddFrame(h1, lay);
163   
164    // labels
165    h2 = new TGCompositeFrame(v, 80, 20, kHorizontalFrame);   
166    fGarbage->Add(h2);
167
168    fGtuMinLabel = new TGLabel(h2, "-1");
169    fGarbage->Add(lay = new TGLayoutHints(kLHintsLeft, 0, 1, -1, 0));
170    h2->AddFrame(fGtuMinLabel, lay);
171
172    fGtuMaxLabel = new TGLabel(h2, "+1");
173    fGarbage->Add(lay = new TGLayoutHints(kLHintsLeft, 80, 3, -1, 0));
174    h2->AddFrame(fGtuMaxLabel, lay);
175   
176    fGarbage->Add( lay = new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
177    v->AddFrame(h2,lay);
178
179    lay =  new TGLayoutHints(kLHintsTop);
180    fGarbage->Add(lay);
181
182    AddFrame(v, lay);
183
184    // Counts ///////////////////////////////
185    MakeTitle("Counts");
186
187    h = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
188    fCountsSlider = new TGHSlider(h, 1, 2, kCOUNTS_SLIDER);
189    fCountsSlider->Resize(90,20);
190
191    lay = new TGLayoutHints(kLHintsLeft);
192    fGarbage->Add(lay);
193    h->AddFrame(fCountsSlider, lay);
194   
195    fCountsEntry = new TGNumberEntry(h, 30, 5, kCOUNTS_NUMENTRY, 
196            TGNumberFormat::kNESInteger,
197            TGNumberFormat::kNEAPositive,
198            TGNumberFormat::kNELLimitMinMax, 0., 50.);
199
200    fCountsEntry->Resize(40,20);
201    lay = new TGLayoutHints(kLHintsRight);
202    h->AddFrame(fCountsEntry, lay);
203
204    lay = new TGLayoutHints(kLHintsTop, 3, 7, 4, 1);
205    fGarbage->Add(lay);
206    AddFrame(h, lay);
207    fGarbage->Add(h);
208
209    MakeTitle("Various");
210    // option related to HIST: some changes needed here! because of inconsistencies   
211//    f15 = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
212//    fMakeTimeInt = new TGCheckButton(f15, "Time Integral", kTIME_INTEGRAL);
213//    fMakeTimeInt ->SetToolTipText("Draw the sum of all counts from gtu 0 to the current");
214//    f15->AddFrame(fMakeTimeInt, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
215//    AddFrame(f15, new TGLayoutHints(kLHintsTop, 1, 1, 0, -1));
216
217    TGCompositeFrame* frame;
218    // Show Marker Checkbox: draw marker (or not)
219    frame = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
220    fAddGtuCount = new TGCheckButton(frame, "Gtu Counter", kGTU_COUNTER);
221    fAddGtuCount ->SetToolTipText("Show/Hide the Gtu counter");
222    frame->AddFrame(fAddGtuCount, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
223    AddFrame(frame, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
224    fGarbage->Add(frame);
225
226
227    // Show Marker Checkbox: draw marker (or not)
228    frame = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
229    fAddEmptyPixels = new TGCheckButton(frame, "Empty Pixels", kEMPTY_PIXELS);
230    fAddEmptyPixels ->SetToolTipText("Show/Hide empty pixels");
231    frame->AddFrame(fAddEmptyPixels, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
232    AddFrame(frame, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
233    fGarbage->Add(frame);
234
235    // Show Marker Checkbox: draw marker (or not)
236    frame = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
237    fAddOffPixels = new TGCheckButton(frame, "Off Pixels", kOFF_PIXELS);
238    fAddOffPixels ->SetToolTipText("Show/Hide off pixels");
239    frame->AddFrame(fAddOffPixels, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
240    AddFrame(frame, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
241    fGarbage->Add(frame);
242
243    // Paint Night Glow rate on the fs
244    frame = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
245    fDrawNightRate = new TGCheckButton(frame, "NightGlow rate", kPAINT_NG);
246    fDrawNightRate->SetToolTipText("Paint NightGlow rate on the focal surface");
247    frame->AddFrame(fDrawNightRate, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
248    AddFrame(frame, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
249    fGarbage->Add(frame);
250
251    // Paint Night Glow rate on the fs
252    frame = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
253    fDrawNightCounts = new TGCheckButton(frame, "NightGlow counts", kPAINT_NCNT);
254    fDrawNightCounts->SetToolTipText("Paint NightGlow counts on the focal surface");
255    frame->AddFrame(fDrawNightCounts, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
256    AddFrame(frame, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
257    fGarbage->Add(frame);
258       /*
259       fPatternSelect = new TGedPatternSelect(f2, 1, kPATTERN);
260       f2->AddFrame(fPatternSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
261       fPatternSelect->Associate(this);
262       AddFrame(f2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
263     */
264
265//    fTab = (TGTab *)(p->GetParent()->GetParent());
266
267    CreateThresholdTab();
268    CreateColorTab();
269
270    //ConnectSignals2Slots();
271
272//    fTab->MapSubwindows();
273//    fTab->Layout();
274//    fTab->MapWindow();
275
276//    TClass *cl = EFocalSurfacePainter::Class();
277//    TGedElement *ge = new TGedElement;
278//    ge->fGedFrame = this;
279//    ge->fCanvas = 0;
280//    cl->GetEditorList()->Add(ge);
281}
282
283//_____________________________________________________________________________
284EFocalSurfacePainterEditor::~EFocalSurfacePainterEditor() {
285    //
286    // Destructor
287    //
288    TGFrameElement *el;
289    TIter next(GetList());
290
291    while ((el = (TGFrameElement *)next())) {
292        if (!strcmp(el->fFrame->ClassName(), "TGCompositeFrame"))
293            ((TGCompositeFrame *)el->fFrame)->Cleanup();
294    }
295    Cleanup();
296}
297
298//______________________________________________________________________________
299void EFocalSurfacePainterEditor::SetModel(TObject* obj) {
300    // Pick up the used fill attributes.
301
302//    fModel = 0;
303//    fPad = 0;
304
305//    if (obj == 0 || !obj->InheritsFrom("EFocalSurfacePainter")) {
306//        SetActive(kFALSE);
307//        for (Int_t i=0; i < fTab->GetNumberOfTabs(); i++){
308//            if (fTab->GetTabContainer(i)==fColorContainer  || fTab->GetTabContainer(i)==fThresholdContainer) {
309//                fTab->GetTabContainer(i)->UnmapWindow();     // Hide the color tab if obj is not inherited from TH1 or
310//                fTab->GetTabTab(i)->UnmapWindow();           // if a TH2, TH3 is drawn
311//                fTab->SetEnabled(i,kFALSE);                  // also disable is, then the current tab will be changed
312//            }
313//        }
314//        return;
315//    }
316
317    fAvoidSignal = kTRUE;
318    TGFrameElement *el;
319
320    // calling the SetModel(initialization) of all editors in the BinTab
321    TIter nextCol(fColor->GetList());
322    while ((el = (TGFrameElement *) nextCol())) {
323        if ((el->fFrame)->InheritsFrom("TGedFrame"))
324            ((TGedFrame *)(el->fFrame))->SetModel(obj);
325    } 
326
327    // calling the SetModel(initialization) of all editors in the BinTab
328    TIter nextTrig(fThreshold->GetList());
329    while ((el = (TGFrameElement *) nextTrig())) {
330        if ((el->fFrame)->InheritsFrom("TGedFrame"))
331            ((TGedFrame *)(el->fFrame))->SetModel(obj);
332    } 
333
334//    fModel = obj;
335//    fPad = pad;
336
337    fPainter = dynamic_cast<EFocalSurfacePainter *>(obj);
338
339    fCurrentMapID = fPainter->GetCurrentMapID();
340    fCurrentIntegral = fPainter->GetIntegral();
341    fCurrentTrigger = fPainter->GetCurrentTrigger();
342
343    if ( fTriggerCombo->GetNumberOfEntries() > 1 )
344        fTriggerCombo->RemoveEntries(1,fTriggerCombo->GetNumberOfEntries()-1);
345    if (fPainter->IsTriggerEnabled(kChipTrackingTrigger))
346        fTriggerCombo->AddEntry("ChipTracking", (Int_t)kChipTrackingTrigger); 
347    if (fPainter->IsTriggerEnabled(kChipTrackingTrigger0))
348        fTriggerCombo->AddEntry("ChipTracking1", (Int_t)kChipTrackingTrigger0); 
349    if (fPainter->IsTriggerEnabled(kChipTrackingTrigger1))
350        fTriggerCombo->AddEntry("ChipTracking1", (Int_t)kChipTrackingTrigger1); 
351    if (fPainter->IsTriggerEnabled(kChipTrackingTrigger2))
352        fTriggerCombo->AddEntry("ChipTracking2", (Int_t)kChipTrackingTrigger2); 
353    if (fPainter->IsTriggerEnabled(kChipTrackingTrigger3))
354        fTriggerCombo->AddEntry("ChipTracking3", (Int_t)kChipTrackingTrigger3); 
355    if (fPainter->IsTriggerEnabled(kChipTrackingTrigger4))
356        fTriggerCombo->AddEntry("ChipTracking4", (Int_t)kChipTrackingTrigger4); 
357    if (fPainter->IsTriggerEnabled(kSignalChipTrackingTrigger))
358        fTriggerCombo->AddEntry("SignalChipTracking", (Int_t)kSignalChipTrackingTrigger);
359
360    ERunParameters *runpars = fPainter->GetRunPars();
361
362    Int_t rmin = (Int_t)runpars->GetPmtData().GetPmtSide();
363    fViewRMinLabel->SetText(Form("%d mm", rmin));
364    fViewRangeSlider->SetRange(rmin,1250);
365    fViewRangeSlider->SetPosition((Int_t)fPainter->GetViewRange());
366
367    fMapIDCombo->Select(fCurrentMapID);
368    fIntegralCombo->Select(fCurrentIntegral);
369    fTriggerCombo->Select(fCurrentTrigger);
370
371    fThresholdSlider->SetRange(0,70);
372    fThresholdSlider->SetPosition((Int_t)fPainter->GetAlpha());
373    fAlphaEntry->SetLimits(TGNumberFormat::kNELLimitMinMax,0.,70.);
374    fAlphaEntry->SetIntNumber((Int_t)fPainter->GetAlpha());
375
376    fGtuSlider->SetRange(fPainter->GetFirstGtu(),fPainter->GetLastGtu());
377    fGtuSlider->SetPosition(fPainter->GetGtu());
378    fGtuEntry->SetLimits(TGNumberFormat::kNELLimitMinMax,-1,fPainter->GetLastGtu());
379    fGtuEntry->SetIntNumber(fPainter->GetGtu());
380    fGtuMinLabel->SetText(Form("%d",fPainter->GetFirstGtu()));
381    fGtuMaxLabel->SetText(Form("%d",fPainter->GetLastGtu()));
382
383    fCountsSlider->SetRange(1,100);
384    fCountsSlider->SetPosition(fPainter->GetMaxCounts());
385    fCountsEntry->SetLimits(TGNumberFormat::kNELLimitMinMax,1,50);
386    fCountsEntry->SetIntNumber(fPainter->GetMaxCounts());
387
388    if ( !fPainter->IsApplyThreshold() ) {
389        fThresholdType->SetButton(kNONE);
390    } else if ( fPainter->IsApplyThreshold() && fPainter->IsAbsoluteThreshold() ) {
391        fThresholdType->SetButton(kABSOLUTE);
392    } else if ( fPainter->IsApplyThreshold() && !fPainter->IsAbsoluteThreshold() ){
393        fThresholdType->SetButton(kRELATIVE);
394    }
395
396    //    fMakeTimeInt->SetState( fPainter->IsShowTimeIntegral() ? kButtonDown : kButtonUp );
397    fAddGtuCount->SetState( fPainter->IsShowGtuCounter() ? kButtonDown : kButtonUp );
398    fAddEmptyPixels->SetState( fPainter->IsShowEmptyPixels() ? kButtonDown : kButtonUp );
399    fAddOffPixels->SetState( fPainter->IsShowOffPixels() ? kButtonDown : kButtonUp );
400
401    TString str = GetDrawOption();
402    fDrawNightRate->SetState( str.Contains("ng") ? kButtonDown : kButtonUp );
403    fDrawNightCounts->SetState( str.Contains("ng") ? kButtonDown : kButtonUp );
404
405    Color_t c = fPainter->GetPmtColorHit();
406    Pixel_t p = TColor::Number2Pixel(c);
407    fPmtColorSelect->SetColor(p);
408
409    c = fPainter->GetPmtColorEmpty();
410    p = TColor::Number2Pixel(c);
411    fEmptyPmtColorSelect->SetColor(p);
412
413    /*
414       Style_t s = fAttFill->GetFillStyle();
415       fPatternSelect->SetPattern(s);
416     */
417//    for (Int_t i=1; i < fTab->GetNumberOfTabs(); i++) {
418//        if (fTab->GetTabContainer(i)==fColorContainer || fTab->GetTabContainer(i)==fThresholdContainer ) {
419//            fTab->GetTabContainer(i)->MapWindow();
420//            fTab->GetTabTab(i)->MapWindow();
421//            fTab->SetEnabled(i, kTRUE); 
422//        } else fTab->SetEnabled(i,kFALSE);
423//    }
424//    if (!fTab->IsEnabled(fTab->GetCurrent())) fTab->SetTab(0);
425//
426//    fTab->Layout();
427
428    if (fInit) ConnectSignals2Slots();
429//    fTab->SetEnabled(1, kTRUE);
430    fGedEditor->GetTab()->SetEnabled(1, kTRUE);
431
432//    SetActive(kTRUE);
433    fAvoidSignal = kTRUE;
434}
435//______________________________________________________________________________
436void EFocalSurfacePainterEditor::ConnectSignals2Slots() {
437
438    fMapIDCombo->Connect("Selected(Int_t)", "EFocalSurfacePainterEditor", this, "DoMapID(Int_t)"); 
439    fIntegralCombo->Connect("Selected(Int_t)", "EFocalSurfacePainterEditor", this, "DoIntegral(Int_t)");
440    fTriggerCombo->Connect("Selected(Int_t)", "EFocalSurfacePainterEditor", this, "DoTrigger(Int_t)");
441    fGtuSlider->Connect("PositionChanged(Int_t)","EFocalSurfacePainterEditor", this,"DoGtuSliderMoved(Int_t)");
442    fGtuEntry->Connect("ValueSet(Long_t)","EFocalSurfacePainterEditor", this,"DoGtuEntrySet()");
443    (fGtuEntry->GetNumberEntry())->Connect("ReturnPressed()","EFocalSurfacePainterEditor", this,"DoGtuEntrySet()");
444    fViewRangeSlider->Connect("PositionChanged(Int_t)","EFocalSurfacePainterEditor", this,"DoViewRangeSliderMoved(Int_t)");
445    fCountsSlider->Connect("PositionChanged(Int_t)","EFocalSurfacePainterEditor", this,"DoCountsSliderMoved(Int_t)");
446    fCountsEntry->Connect("ValueSet(Long_t)","EFocalSurfacePainterEditor", this,"DoCountsEntrySet()");
447    (fCountsEntry->GetNumberEntry())->Connect("ReturnPressed()","EFocalSurfacePainterEditor", this,"DoCountsEntrySet()");
448    fThresholdSlider->Connect("PositionChanged(Int_t)","EFocalSurfacePainterEditor", this,"DoThresholdSliderMoved(Int_t)");
449    fAlphaEntry->Connect("ValueSet(Long_t)","EFocalSurfacePainterEditor", this,"DoAlphaEntrySet()");
450    (fAlphaEntry->GetNumberEntry())->Connect("ReturnPressed()","EFocalSurfacePainterEditor", this,"DoAlphaEntrySet()");
451
452    fViewRangeSlider->Connect("Released()","EFocalSurfacePainterEditor", this,"Update()");
453    fAddGtuCount->Connect("Toggled(Bool_t)", "EFocalSurfacePainterEditor", this, "DoAddGtuCount(Bool_t)");
454    fAddEmptyPixels->Connect("Toggled(Bool_t)", "EFocalSurfacePainterEditor", this, "DoAddEmptyPixels(Bool_t)");
455    fAddOffPixels->Connect("Toggled(Bool_t)", "EFocalSurfacePainterEditor", this, "DoAddOffPixels(Bool_t)");
456    fDrawNightRate->Connect("Toggled(Bool_t)", "EFocalSurfacePainterEditor", this, "DoDrawNightRate(Bool_t)");
457    fDrawNightCounts->Connect("Toggled(Bool_t)", "EFocalSurfacePainterEditor", this, "DoDrawNightCounts(Bool_t)");
458    fThresholdType->Connect("Clicked(Int_t)", "EFocalSurfacePainterEditor", this, "DoThreshold(Threshold_t)");
459    fPmtColorSelect->Connect("ColorSelected(Pixel_t)","EFocalSurfacePainterEditor",this,"DoPmtFillColor(Pixel_t)");
460    fEmptyPmtColorSelect->Connect("ColorSelected(Pixel_t)","EFocalSurfacePainterEditor",this,"DoEmptyPmtFillColor(Pixel_t)");
461    fInit = kFALSE;
462}
463
464
465//______________________________________________________________________________
466TGComboBox* EFocalSurfacePainterEditor::BuildMapIDCombo(TGFrame* parent, Int_t id) {
467    // Marker size combobox.
468
469    char a[][100] = {"kFeeHits","kFeeSignals","kCellHits"};
470    TGComboBox *c = new TGComboBox(parent, id);
471
472    for (int i = 1; i <= 3; i++) {
473        c->AddEntry(a[i-1], i);
474    }
475
476    return c;
477}
478
479//______________________________________________________________________________
480TGComboBox* EFocalSurfacePainterEditor::BuildIntegralCombo(TGFrame* parent, Int_t id) {
481    // Marker size combobox.
482
483    char a[][100] = {"kNone","kSum","kMax"};
484    TGComboBox *c = new TGComboBox(parent, id);
485
486    for (int i = 1; i <= 3; i++) {
487        c->AddEntry(a[i-1], i);
488    }
489
490    return c;
491}
492
493//______________________________________________________________________________
494TGComboBox* EFocalSurfacePainterEditor::BuildChipTriggerCombo(TGFrame* parent, Int_t id) {
495    // Marker size combobox.
496
497    TGComboBox *c = new TGComboBox(parent, id);
498    c->AddEntry("No Trigger", 0);
499
500    return c;
501}
502
503//______________________________________________________________________________
504void EFocalSurfacePainterEditor::DoMapID( Int_t id ) {
505    //
506    // Set map to paint
507    //
508   
509    fPainter->SetCurrentMapID( id );
510    Update();
511}
512
513//______________________________________________________________________________
514void EFocalSurfacePainterEditor::DoIntegral(Int_t id) {
515
516    fPainter->SetIntegral(id);
517    Update();
518}
519
520//______________________________________________________________________________
521void EFocalSurfacePainterEditor::DoTrigger(Int_t id) {
522    fPainter->ApplyTriggerThreshold((ETriggerTypeIdentifier)id);
523    Float_t val = fPainter->GetAlpha();
524    fPainter->IsAbsoluteThreshold() ? fThresholdType->SetButton(kABSOLUTE) : fThresholdType->SetButton(kRELATIVE); 
525    if (id==0 ) fThresholdType->SetButton(kNONE);
526    fThresholdSlider->SetPosition( (Int_t)val*10 );
527    fAlphaEntry->SetIntNumber( (Int_t)val*10 );
528    Update();
529}
530
531//______________________________________________________________________________
532void EFocalSurfacePainterEditor::DoThresholdSliderMoved(Int_t pos) {
533    fPainter->SetAlpha( pos/10 );
534    fAlphaEntry->SetIntNumber( pos );
535    fPainter->IsAbsoluteThreshold() ? fThresholdType->SetButton(kABSOLUTE) : fThresholdType->SetButton(kRELATIVE); 
536    fTriggerCombo->Select(0);
537    Update();
538}
539
540//______________________________________________________________________________
541void EFocalSurfacePainterEditor::DoAlphaEntrySet() {
542    Float_t val = fAlphaEntry->GetNumberEntry()->GetIntNumber();
543    fPainter->SetAlpha( val/10 );
544    fThresholdSlider->SetPosition( (Int_t)val );
545    fPainter->IsAbsoluteThreshold() ? fThresholdType->SetButton(kABSOLUTE) : fThresholdType->SetButton(kRELATIVE); 
546    fTriggerCombo->Select(0);
547    Update();
548}
549
550//______________________________________________________________________________
551void EFocalSurfacePainterEditor::DoGtuSliderMoved( Int_t pos ) {
552    //
553    //
554    //
555   
556    fPainter->SetGtu( pos );
557    fGtuEntry->SetIntNumber( pos );
558    Update();
559}
560
561//______________________________________________________________________________
562void EFocalSurfacePainterEditor::DoGtuEntrySet() {
563    //
564    //
565    //
566   
567    Int_t val = fGtuEntry->GetNumberEntry()->GetIntNumber();
568    fPainter->SetGtu( val );
569    fGtuSlider->SetPosition( val );
570    Update();
571}
572
573//______________________________________________________________________________
574void EFocalSurfacePainterEditor::DoCountsSliderMoved( Int_t pos ) {
575    //
576    //
577    //
578   
579    fPainter->SetMaxCounts( pos );
580    fCountsEntry->SetIntNumber( pos );
581    Update();
582}
583
584//______________________________________________________________________________
585void EFocalSurfacePainterEditor::DoCountsEntrySet() {
586    //
587    //
588    //
589   
590    Int_t val = fCountsEntry->GetNumberEntry()->GetIntNumber();
591    fPainter->SetMaxCounts( val );
592    fCountsSlider->SetPosition( val );
593    Update();
594}
595
596//______________________________________________________________________________
597void EFocalSurfacePainterEditor::DoViewRangeSliderMoved( Int_t pos ) {
598    //
599    //
600    //
601   
602    fPainter->SetViewRange( (Float_t)pos );
603//    Update();
604}
605
606//______________________________________________________________________________
607void EFocalSurfacePainterEditor::DoAddGtuCount(Bool_t on) {
608
609    fPainter->SetShowGtuCounter(on);
610    Update();
611}
612
613//______________________________________________________________________________
614void EFocalSurfacePainterEditor::DoAddEmptyPixels(Bool_t on) {
615
616    fPainter->SetShowEmptyPixels(on);
617    Update();
618}
619
620//______________________________________________________________________________
621void EFocalSurfacePainterEditor::DoAddOffPixels(Bool_t on) {
622
623    fPainter->SetShowOffPixels(on);
624    Update();
625}
626
627//______________________________________________________________________________
628void EFocalSurfacePainterEditor::DoDrawNightRate(Bool_t on) {
629   
630    TString str = GetDrawOption();
631
632    if ( on ) {
633        if ( str.Contains("ncnt") )
634            str.Remove(str.Index("ncnt"),4);
635        str.Append("ng");
636        fDrawNightCounts->SetState( kButtonUp );
637    } else {
638        if ( str.Contains("ng") ) 
639            str.Remove(str.Index("ng"),2);
640    }
641   
642    SetDrawOption(str);
643    Update();
644}
645
646//______________________________________________________________________________
647void EFocalSurfacePainterEditor::DoDrawNightCounts(Bool_t on) {
648   
649    TString str = GetDrawOption();
650
651    if ( on ) {
652        if ( str.Contains("ng") )
653            str.Remove(str.Index("ng"),2);
654        str.Append("ncnt");
655        fDrawNightRate->SetState( kButtonUp );
656    } else {
657        if ( str.Contains("ncnt") ) 
658            str.Remove(str.Index("ncnt"),4);
659    }
660   
661    SetDrawOption(str);
662    Update();
663}
664
665
666//______________________________________________________________________________
667void EFocalSurfacePainterEditor::DoThreshold(Threshold_t th) {
668   
669    if ( th==kNONE ) { 
670        fPainter->SetApplyThreshold(kFALSE); 
671        fThresholdSlider->SetPosition(0);
672        fAlphaEntry->SetIntNumber(0);
673    } else if ( th==kABSOLUTE ) { 
674        fPainter->SetApplyThreshold(kTRUE); 
675        fPainter->SetAbsoluteThreshold(kTRUE);
676    } else if ( th==kRELATIVE ) { 
677        fPainter->SetApplyThreshold(kTRUE); 
678        fPainter->SetAbsoluteThreshold(kFALSE);
679    }
680    fTriggerCombo->Select(0);
681    Update();
682}
683
684//______________________________________________________________________________
685void EFocalSurfacePainterEditor::DoPmtFillColor(Pixel_t color) {
686    fPainter->SetPmtColorHit(TColor::GetColor(color));
687    Update();
688}
689
690//______________________________________________________________________________
691void EFocalSurfacePainterEditor::DoEmptyPmtFillColor(Pixel_t color) {
692    fPainter->SetPmtColorEmpty(TColor::GetColor(color));
693    Update();
694}
695
696//______________________________________________________________________________
697void EFocalSurfacePainterEditor::CreateColorTab() {
698    // Creates the BinTab
699
700    fColorContainer = CreateEditorTabSubFrame("Color");
701    fColor = new TGCompositeFrame(fColorContainer, 80, 20, kVerticalFrame);
702    fColor->AddFrame(new TGedNameFrame(fColor, 1000), new TGLayoutHints(kLHintsTop | kLHintsExpandX,0, 0, 2, 2));
703
704    TGCompositeFrame *title1 = new TGCompositeFrame(fColor, 145, 10, kHorizontalFrame | 
705            kLHintsExpandX | kFixedWidth | kOwnBackground);
706    title1->AddFrame(new TGLabel(title1, "Pmts colors"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
707    title1->AddFrame(new TGHorizontal3DLine(title1),
708            new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
709    fColor->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
710
711    // pmt color selector
712    TGCompositeFrame *f3 = new TGCompositeFrame(fColor, 80, 20, kHorizontalFrame);
713    fPmtColorSelect = new TGColorSelect(f3, 0, kPMTCOLOR);
714    f3->AddFrame(fPmtColorSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
715//    fColor->AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
716   
717    // pmt color selector
718    fEmptyPmtColorSelect = new TGColorSelect(f3, 0, kPMTOFFCOLOR);
719    f3->AddFrame(fEmptyPmtColorSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
720    fColor->AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
721
722    fColorContainer->AddFrame(fColor, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 2, 2));
723}
724
725//_______________________________________________________________________________
726void EFocalSurfacePainterEditor::CreateThresholdTab() {
727    //
728    // Create the threshold tab in the editor
729    //
730    TGCompositeFrame *h1, *h2, *f3, *f8, *title1, *title2;
731    fThresholdContainer = CreateEditorTabSubFrame("Threshold");
732
733    fThreshold = new TGCompositeFrame(fThresholdContainer, 80, 20, kVerticalFrame);   
734    fThreshold->AddFrame(new TGedNameFrame(fThreshold, 1000), new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY, 0, 0, 2, 2));
735    title1 = new TGCompositeFrame(fThreshold, 145, 10, kHorizontalFrame | kLHintsExpandX | kFixedWidth | kOwnBackground);
736    title1->AddFrame(new TGLabel(title1, "Alpha"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
737    title1->AddFrame(new TGHorizontal3DLine(title1), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
738    fThreshold->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
739
740    h1 = new TGCompositeFrame(fThreshold, 80, 20, kHorizontalFrame);
741    fThresholdSlider = new TGHSlider(h1, 1, 2, kTHRES_SLIDER);
742    fThresholdSlider->Resize(90,20);
743
744    h1->AddFrame(fThresholdSlider, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 0));
745//    fThreshold->AddFrame(h1, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
746   
747    fAlphaEntry = new TGNumberEntry(h1, -1, 5, kTHRES_NUMENTRY, 
748            TGNumberFormat::kNESRealOne,
749            TGNumberFormat::kNEAPositive,
750            TGNumberFormat::kNELLimitMinMax, 0., 70.);
751
752    fAlphaEntry->Resize(50,20);
753    h1->AddFrame(fAlphaEntry, new TGLayoutHints(kLHintsRight));
754
755    fThreshold->AddFrame(h1, new TGLayoutHints(kLHintsTop, 3, 7, 4, 1));
756
757    h2 = new TGCompositeFrame(fThreshold, 80, 20, kHorizontalFrame);   
758
759    fAlphaMinLabel = new TGLabel(h2, "0");
760    h2->AddFrame(fAlphaMinLabel, new TGLayoutHints(kLHintsLeft, 10, 1, -1, 0));
761
762    fAlphaMaxLabel = new TGLabel(h2, "7");
763    h2->AddFrame(fAlphaMaxLabel, new TGLayoutHints(kLHintsLeft, 90, 3, -1, 0));
764
765    fThreshold->AddFrame(h2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
766
767    f8 = new TGCompositeFrame(fThreshold, 80, 20, kVerticalFrame);
768    fThresholdType = new TGButtonGroup(f8,"Threshold type", kVerticalFrame);
769    fThNone = new TGRadioButton(fThresholdType, new TGHotString("&None"),kNONE);
770    fThAbs = new TGRadioButton(fThresholdType, new TGHotString("&Absolute"),kABSOLUTE);
771    fThRel = new TGRadioButton(fThresholdType, new TGHotString("R&elative"),kRELATIVE);
772    fThresholdType->Show();
773    f8->AddFrame(fThresholdType, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
774    fThreshold->AddFrame(f8, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
775   
776    title2 = new TGCompositeFrame(fThreshold, 145, 10, kHorizontalFrame | kLHintsExpandX | kFixedWidth | kOwnBackground);
777    title2->AddFrame(new TGLabel(title2, "Trigger"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
778    title2->AddFrame(new TGHorizontal3DLine(title2), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
779    fThreshold->AddFrame(title2, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
780   
781    f3 = new TGCompositeFrame(fThresholdContainer, 80, 20, kHorizontalFrame);
782    fTriggerCombo = BuildChipTriggerCombo(f3, kTRIGGER);
783    f3->AddFrame(fTriggerCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 0, 0));
784    fTriggerCombo->Resize(145, 20);
785    fTriggerCombo->Associate(fThreshold);
786    fThreshold->AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 1, 0));
787
788    fThresholdContainer->AddFrame(fThreshold, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 2, 2));
789
790
791
792}
Note: See TracBrowser for help on using the repository browser.