+
+ // **************************** content of tabLeft0 *******************************
+
+ // draw options container *** fcontDrawOpt *** " Plot options "
+ fContDrawOpt = new TGGroupFrame(ftabLeft0, "Plot options", kVerticalFrame | kFitWidth | kFitHeight);
+ ftabLeft0->AddFrame(fContDrawOpt, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
+ fContDrawOptSub1D2D = new TGCompositeFrame(fContDrawOpt, 200, 23, kHorizontalFrame | kFitWidth | kFixedHeight);
+ fContDrawOpt->AddFrame(fContDrawOptSub1D2D, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+
+ // ------------------------- content of fContDrawOpt -------------------------
+ // -- radio1D, radio2D, chkAuto
+ // 1D radio button
+ fRadio1D = new TGRadioButton(fContDrawOptSub1D2D, "1D", 30);
+ fContDrawOptSub1D2D->AddFrame(fRadio1D, new TGLayoutHints(kLHintsNormal, 0, 2, 0, 0));
+ fRadio1D->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsGeneral()");
+ fRadio1D->SetToolTipText("1D drawing \nSelect this if you want to have the full control for the custom draw.");
+
+ // 2D radio button
+ fRadio2D = new TGRadioButton(fContDrawOptSub1D2D, "2D", 31);
+ fContDrawOptSub1D2D->AddFrame(fRadio2D, new TGLayoutHints(kLHintsNormal, 2, 2, 0, 0));
+ fRadio2D->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsGeneral()");
+ fRadio2D->SetToolTipText("2D drawing");
+
+ // additional draw options container
+ fContAddDrawOpt = new TGCompositeFrame(fContDrawOpt, 200, 200, kVerticalFrame | kFitWidth | kFitHeight);
+ fContDrawOpt->AddFrame(fContAddDrawOpt, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 0));
+
+ // content of --- fContAddDrawOpt ---
+ // addition draw options label
+ fChkAddDrawOpt = new TGCheckButton(fContAddDrawOpt, "Draw options:");
+ //fChkAddDrawOpt->SetTextJustify(kTextLeft);
+ fContAddDrawOpt->AddFrame(fChkAddDrawOpt, new TGLayoutHints(kLHintsNormal | kLHintsExpandX));
+ fChkAddDrawOpt->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "DoNewSelection()");
+ fChkAddDrawOpt->SetToolTipText("Enter additional draw options like 'prof' or 'colz' here.\nBe careful with the option 'same' for 2D drawings as it will crash (ROOT feature).");
+
+ // additional draw options combo box
+ fComboAddDrawOpt = new TGComboBox(fContAddDrawOpt);
+ fComboAddDrawOpt->Resize(0, fBtnDraw->GetDefaultHeight());
+ fComboAddDrawOpt->EnableTextInput(kTRUE);
+ fContAddDrawOpt->AddFrame(fComboAddDrawOpt, new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 0, 0, 0, 0));
+ fComboAddDrawOpt->Connect("ReturnPressed()", "AliTPCCalibViewerGUI", this, "HandleButtonsGeneral(=14)");
+ fComboAddDrawOpt->Connect("Selected(Int_t)", "AliTPCCalibViewerGUI", this, "DoNewSelection()");
+
+ // automatic redraw check button
+ fChkAuto = new TGCheckButton(fContDrawOpt, "Auto redraw");
+ fContDrawOpt->AddFrame(fChkAuto, new TGLayoutHints(kLHintsNormal, 0, 2, 0, 0));
+ fChkAuto->SetToolTipText("Decide if you want an automatic redraw on each new selection.\nNot recommended on a slow machine, during remote connection or if your draw option is 'same'.");
+
+ // automatic append ending check button
+ fChkAutoAppend = new TGCheckButton(fContDrawOpt, "Auto add appending");
+ fContDrawOpt->AddFrame(fChkAutoAppend, new TGLayoutHints(kLHintsNormal, 0, 2, 0, 0));
+ fChkAutoAppend->SetToolTipText("Tries to repair your custom draw string or custom cut string, if you forgot '~' or '.fElements' \nThis function may be buggy!");
+
+
+ // *** predefined radio button *** " Predefined "
+ fRadioPredefined = new TGRadioButton(ftabLeft0, "Predefined: ", 13);
+ ftabLeft0->AddFrame(fRadioPredefined, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+ fRadioPredefined->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsGeneral()");
+ fRadioPredefined->SetToolTipText("Draw predefined variables according to selection.");
+
+ // list of variables
+ fListVariables = new TGListBox(ftabLeft0);
+ ftabLeft0->AddFrame(fListVariables, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY, 10, 0, 0, 0));
+ fListVariables->Connect("Selected(Int_t)", "AliTPCCalibViewerGUI", this, "DoNewSelection()");
+
+
+ // normalization options container *** fContPlotOpt ***
+ //fContPlotOpt = new TGCompositeFrame(fContLeft, 200, 200, kVerticalFrame | kFitWidth | kFitHeight);
+ fContPlotOpt = new TGGroupFrame(ftabLeft0, "Normalization options", kVerticalFrame | kFitWidth | kFitHeight);
+ ftabLeft0->AddFrame(fContPlotOpt, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10, 0, 0, 0));
+
+ // ------------------------- content of fContPlotOpt -------------------------
+ // raw radio button
+ fRadioRaw = new TGRadioButton(fContPlotOpt, "Raw", 10);
+ fContPlotOpt->AddFrame(fRadioRaw, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+ fRadioRaw->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsGeneral()");
+ fRadioRaw->SetToolTipText("Plot without normalization");
+
+ // normalized radio button
+ fRadioNormalized = new TGRadioButton(fContPlotOpt, "Normalized", 11);
+ fContPlotOpt->AddFrame(fRadioNormalized, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+ fRadioNormalized->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsGeneral()");
+ fRadioNormalized->SetToolTipText("Normalize data");
+
+ // normalized options container *** fContNormalized ***
+ fContNormalized = new TGCompositeFrame(fContPlotOpt, 200, 200, kVerticalFrame | kFitWidth | kFitHeight);
+ fContPlotOpt->AddFrame(fContNormalized, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 15, 0, 0, 0));
+
+ // --- content of fContNormalized ---
+ // --- combo box to select 'subtract' or 'divide', list of normalization variables
+ // method drop down combo box
+ fComboMethod = new TGComboBox(fContNormalized);
+ fComboMethod->Resize(0, fBtnDraw->GetDefaultHeight());
+ fContNormalized->AddFrame(fComboMethod, new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 0, 0, 0, 0));
+ fComboMethod->Connect("Selected(Int_t)", "AliTPCCalibViewerGUI", this, "DoNewSelection()");
+
+ // list of normalization variables
+ fListNormalization = new TGListBox(fContNormalized);
+ fContNormalized->AddFrame(fListNormalization, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 0));
+ fListNormalization->Connect("Selected(Int_t)", "AliTPCCalibViewerGUI", this, "DoNewSelection()");
+
+ // custom radio button
+ fRadioCustom = new TGRadioButton(ftabLeft0, "Custom: ", 12);
+ ftabLeft0->AddFrame(fRadioCustom, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+ fRadioCustom->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsGeneral()");
+ fRadioCustom->SetToolTipText("Draw data according to user specific text entry in the 'Custom Draw' line. Remember '~' (= '.fElements')!");
+ // custom options container is located further down
+
+ // **************************** content of tabLeft1 *******************************
+
+ // draw options container *** fcontDrawOpt1D *** " Plot options "
+ fContDrawOpt1D = new TGGroupFrame(ftabLeft1, "1D Plot options", kVerticalFrame | kFitWidth | kFitHeight);
+ ftabLeft1->AddFrame(fContDrawOpt1D, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
+
+ fcontDrawOpt1DSubLR = new TGCompositeFrame(fContDrawOpt1D, 1, 1, kVerticalFrame | kFitWidth | kFitHeight);
+ fContDrawOpt1D->AddFrame(fcontDrawOpt1DSubLR, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+
+ // ***** content of fContDrawOpt1DSubLR *****
+ fContDrawOpt1DSubNSC = new TGCompositeFrame(fcontDrawOpt1DSubLR, 200, 23, kVerticalFrame | kFitWidth | kFitHeight);
+ fcontDrawOpt1DSubLR->AddFrame(fContDrawOpt1DSubNSC, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+
+ // --------------------------- content of fContDrawOpt1DSubNSC -----------------
+ fRadioNorm = new TGRadioButton(fContDrawOpt1DSubNSC, "Normal", 110);
+ fContDrawOpt1DSubNSC->AddFrame(fRadioNorm, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fRadioNorm->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtons1D()");
+ fRadioNorm->SetToolTipText("Produce a normal 1D plot, a histogram of the selected data.");
+
+ fRadioSigma = new TGRadioButton(fContDrawOpt1DSubNSC, "Sigma", 111);
+ fContDrawOpt1DSubNSC->AddFrame(fRadioSigma, new TGLayoutHints(kLHintsNormal, 0, 0, 5, 0));
+ fRadioSigma->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtons1D()");
+ fRadioSigma->SetToolTipText("Draw a normal histogram, but also lines that indicate the mean/median/LTM \nand sigmas of the selected data.");
+
+ fTxtSigmas = new TGTextEntry(fContDrawOpt1DSubNSC, "2; 4; 6", 111);
+ fContDrawOpt1DSubNSC->AddFrame(fTxtSigmas, new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 10, 15, 0, 0));
+ fTxtSigmas->Connect("ReturnPressed()", "AliTPCCalibViewerGUI", this, "HandleButtons1D(=111)");
+ fTxtSigmas->SetToolTipText("Enter sigma intervals you would like to be indicated by lines. \nExample: '2; 4; 6'");
+
+ fContCumuLR = new TGCompositeFrame(fContDrawOpt1DSubNSC, 200, 23, kHorizontalFrame | kFitWidth | kFitHeight);
+ fContDrawOpt1DSubNSC->AddFrame(fContCumuLR, new TGLayoutHints(kLHintsExpandX, 0, 0, 5, 0));
+
+ fContCumLeft = new TGCompositeFrame(fContCumuLR, 200, 23, kVerticalFrame | kFitWidth | kFitHeight);
+ fContCumuLR->AddFrame(fContCumLeft, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+
+ fRadioCumulative = new TGRadioButton(fContCumLeft, "Cumulative", 112);
+ fContCumLeft->AddFrame(fRadioCumulative, new TGLayoutHints(kLHintsNormal, 0, 10, 0, 0));
+ fRadioCumulative->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtons1D()");
+ fRadioCumulative->SetToolTipText("Draw the cumulative (SigmaCut) of the given selection. \nThe data distribution is integrated, starting from the mean/median/LTM.");
+
+ fCheckCumulativePM = new TGCheckButton(fContCumLeft, "Plus/Minus");
+ fContCumLeft->AddFrame(fCheckCumulativePM, new TGLayoutHints(kLHintsNormal, 10, 15, 0, 0));
+ fCheckCumulativePM->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtons1D()");
+ fCheckCumulativePM->SetToolTipText("Decide whether you want the cumulative integration for each direction (+/-) \nor only for the absolute distance to the mean/median/LTM value.");
+
+ fRadioIntegrate = new TGRadioButton(fContCumLeft, "Integrate", 113);
+ fContCumLeft->AddFrame(fRadioIntegrate, new TGLayoutHints(kLHintsNormal, 0, 0, 5, 0));
+ fRadioIntegrate->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtons1D()");
+ fRadioIntegrate->SetToolTipText("Draw the integral of the given selection.");
+
+ fContCumRight = new TGCompositeFrame(fContCumuLR, 200, 23, kVerticalFrame | kFitWidth | kFitHeight);
+ fContCumuLR->AddFrame(fContCumRight, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+
+ fLblSigmaMax = new TGLabel(fContCumRight, "SigmaMax:");
+ fLblSigmaMax->SetTextJustify(kTextLeft);
+ fContCumRight->AddFrame(fLblSigmaMax, new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 5, 0, 0, 0));
+
+ fTxtSigmaMax = new TGTextEntry(fContCumRight, "5", 112);
+ fContCumRight->AddFrame(fTxtSigmaMax, new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 10, 15, 0, 0));
+ fTxtSigmaMax->Connect("ReturnPressed()", "AliTPCCalibViewerGUI", this, "HandleButtons1D(=112)");
+ fTxtSigmaMax->SetToolTipText("Enter up to which multiple of sigma you want to integrate.");
+
+
+ fContDrawOpt1DSubMML = new TGCompositeFrame(fcontDrawOpt1DSubLR, 200, 23, kHorizontalFrame | kFitWidth | kFitHeight);
+ fcontDrawOpt1DSubLR->AddFrame(fContDrawOpt1DSubMML, new TGLayoutHints(kLHintsExpandX, 0, 0, 5, 0));
+
+ // -------------- content of fcontDrawOpt1DSubLR
+ fChkMean = new TGCheckButton(fContDrawOpt1DSubMML, "Mean");
+ fContDrawOpt1DSubMML->AddFrame(fChkMean, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkMean->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtons1D()");
+ fChkMean->SetToolTipText("Activate Mean for Sigma/Cumulative/Integrate");
+
+ fChkMedian = new TGCheckButton(fContDrawOpt1DSubMML, "Median");
+ fContDrawOpt1DSubMML->AddFrame(fChkMedian, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkMedian->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtons1D()");
+ fChkMedian->SetToolTipText("Activate Median for Sigma/Cumulative/Integrate");
+
+ fChkLTM = new TGCheckButton(fContDrawOpt1DSubMML, "LTM");
+ fContDrawOpt1DSubMML->AddFrame(fChkLTM, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkLTM->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtons1D()");
+ fChkLTM->SetToolTipText("Activate LTM for Sigma/Cumulative/Integrate");
+
+
+ // statistic options container *** fcontStatOpt1D *** " Statistic options "
+ fContStatOpt = new TGGroupFrame(ftabLeft1, "Statistic options", kVerticalFrame | kFitWidth | kFitHeight);
+ ftabLeft1->AddFrame(fContStatOpt, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
+
+ fChkStatName = new TGCheckButton(fContStatOpt, "Name");
+ fContStatOpt->AddFrame(fChkStatName, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkStatName->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatName->SetToolTipText("Display the name in the statistics legend.");
+
+ fChkStatEntries = new TGCheckButton(fContStatOpt, "Entries");
+ fContStatOpt->AddFrame(fChkStatEntries, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkStatEntries->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatEntries->SetToolTipText("Display the number of entries in the statistics legend.");
+
+ fContStatMean = new TGCompositeFrame(fContStatOpt, 1, 1, kHorizontalFrame | kFitWidth | kFitHeight);
+ fContStatOpt->AddFrame(fContStatMean, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+
+ fChkStatMean = new TGCheckButton(fContStatMean, "Mean");
+ fContStatMean->AddFrame(fChkStatMean, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkStatMean->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatMean->SetToolTipText("Display the mean value of the data in the statistics legend.");
+
+ fChkStatMeanPM = new TGCheckButton(fContStatMean, "+- Error");
+ fContStatMean->AddFrame(fChkStatMeanPM, new TGLayoutHints(kLHintsNormal, 10, 0, 0, 0));
+ fChkStatMeanPM->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatMeanPM->SetToolTipText("Display the mean value's error in the statistics legend.");
+
+ fContStatRMS = new TGCompositeFrame(fContStatOpt, 1, 1, kHorizontalFrame | kFitWidth | kFitHeight);
+ fContStatOpt->AddFrame(fContStatRMS, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+
+ fChkStatRMS = new TGCheckButton(fContStatRMS, "RMS");
+ fContStatRMS->AddFrame(fChkStatRMS, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkStatRMS->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatRMS->SetToolTipText("Display the RMS value of the data in the statistics legend.");
+
+ fChkStatRMSPM = new TGCheckButton(fContStatRMS, "+- Error");
+ fContStatRMS->AddFrame(fChkStatRMSPM, new TGLayoutHints(kLHintsNormal, 10, 0, 0, 0));
+ fChkStatRMSPM->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatRMSPM->SetToolTipText("Display the RMS value's error in the statistics legend.");
+
+ fChkStatUnderflow = new TGCheckButton(fContStatOpt, "Underflow");
+ fContStatOpt->AddFrame(fChkStatUnderflow, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkStatUnderflow->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatUnderflow->SetToolTipText("Display the number of entries in the underflow bin.");
+
+ fChkStatOverflow = new TGCheckButton(fContStatOpt, "Overflow");
+ fContStatOpt->AddFrame(fChkStatOverflow, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkStatOverflow->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatOverflow->SetToolTipText("Display the number of entries in the overflow bin.");
+
+ fChkStatIntegral = new TGCheckButton(fContStatOpt, "Integral");
+ fContStatOpt->AddFrame(fChkStatIntegral, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkStatIntegral->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatIntegral->SetToolTipText("Display the integral of the data in the statistics legend.");
+
+ fContStatSkew = new TGCompositeFrame(fContStatOpt, 1, 1, kHorizontalFrame | kFitWidth | kFitHeight);
+ fContStatOpt->AddFrame(fContStatSkew, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+
+ fChkStatSkewness = new TGCheckButton(fContStatSkew, "Skewness");
+ fContStatSkew->AddFrame(fChkStatSkewness, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkStatSkewness->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatSkewness->SetToolTipText("Display the skewness of the data in the statistics legend. \nBe careful! Sometimes the skewness causes a floating point exception that hangs the GUI!");
+
+ fChkStatSkewnessPM = new TGCheckButton(fContStatSkew, "+- Error");
+ fContStatSkew->AddFrame(fChkStatSkewnessPM, new TGLayoutHints(kLHintsNormal, 10, 0, 0, 0));
+ fChkStatSkewnessPM->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatSkewnessPM->SetToolTipText("Display the skewness' error in the statistics legend.");
+
+ fContStatKurt = new TGCompositeFrame(fContStatOpt, 1, 1, kHorizontalFrame | kFitWidth | kFitHeight);
+ fContStatOpt->AddFrame(fContStatKurt, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
+
+ fChkStatKurtosis = new TGCheckButton(fContStatKurt, "Kurtosis");
+ fContStatKurt->AddFrame(fChkStatKurtosis, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
+ fChkStatKurtosis->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatKurtosis->SetToolTipText("Display the kurtosis of the data in the statistics legend.");
+
+ fChkStatKurtosisPM = new TGCheckButton(fContStatKurt, "+- Error");
+ fContStatKurt->AddFrame(fChkStatKurtosisPM, new TGLayoutHints(kLHintsNormal, 10, 0, 0, 0));
+ fChkStatKurtosisPM->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "HandleButtonsStat()");
+ fChkStatKurtosisPM->SetToolTipText("Display the kurtosis' error in the statistics legend.");
+
+ fBtnUnchekAll = new TGTextButton(fContStatOpt, "&Uncheck all");
+ fContStatOpt->AddFrame(fBtnUnchekAll, new TGLayoutHints(kLHintsExpandX, 10, 10, 0, 0));
+ //fBtnDraw->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "DoTest(=\"fBtnDraw clicked\")");
+ fBtnUnchekAll->Connect("Clicked()", "AliTPCCalibViewerGUI", this, "UnchekAllStat()");
+ fBtnUnchekAll->SetToolTipText("Disable all statistics legend entries, \nno statistics legend.");
+
+
+ // custom options container
+ // --- fComboCustom --- the custom draw line on the very low
+ fContCustom = new TGCompositeFrame(fContTopBottom, 200, 200, kHorizontalFrame | kFitWidth | kFitHeight);
+ fContTopBottom->AddFrame(fContCustom, new TGLayoutHints(kLHintsExpandX, 10, 0, 0, 0));
+
+ // ------------------------- content of fContCustom -------------------------
+ fLblCustomDraw = new TGLabel(fContCustom, "Custom draw: ");
+ fLblCustomDraw->SetTextJustify(kTextLeft);
+ fContCustom->AddFrame(fLblCustomDraw, new TGLayoutHints(kLHintsNormal, 5, 0, 0, 0));
+ // text field for custom draw command
+ fComboCustom = new TGComboBox(fContCustom);
+ fComboCustom->Resize(0, fBtnDraw->GetDefaultHeight());
+ fComboCustom->EnableTextInput(kTRUE);
+ fContCustom->AddFrame(fComboCustom, new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 0, 0, 0, 0));
+ fComboCustom->Connect("ReturnPressed()", "AliTPCCalibViewerGUI", this, "HandleButtonsGeneral(=42)");
+ fComboCustom->Connect("Selected(Int_t)", "AliTPCCalibViewerGUI", this, "DoNewSelection()");
+
+
+ // additional cuts container
+ fContAddCuts = new TGCompositeFrame(fContTopBottom, 200, 200, kHorizontalFrame | kFitWidth | kFitHeight);
+ fContTopBottom->AddFrame(fContAddCuts, new TGLayoutHints(kLHintsExpandX, 10, 0, 0, 0));
+
+ // ------------------------- content of fContAddCuts -------------------------
+ fLblAddCuts = new TGLabel(fContAddCuts, "Custom cuts: ");
+ fLblAddCuts->SetTextJustify(kTextLeft);
+ fContAddCuts->AddFrame(fLblAddCuts, new TGLayoutHints(kLHintsNormal, 5, 0, 0, 0));
+ // combo text field for additional cuts
+ fComboAddCuts = new TGComboBox(fContAddCuts);
+ fComboAddCuts->Resize(0, fBtnDraw->GetDefaultHeight());
+ fComboAddCuts->EnableTextInput(kTRUE);
+ fContAddCuts->AddFrame(fComboAddCuts, new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 0, 0, 0, 0));
+ fComboAddCuts->Connect("ReturnPressed()", "AliTPCCalibViewerGUI", this, "HandleButtonsCuts(=31)");
+ fComboAddCuts->Connect("Selected(Int_t)", "AliTPCCalibViewerGUI", this, "DoNewSelection()");
+
+ // ==========================================================================