34 #include <TVirtualPad.h> 38 #include <TObjArray.h> 39 #include <TObjString.h> 44 #include "TGFileDialog.h" 45 #include "TGInputDialog.h" 70 : TGCompositeFrame(p, w, h),
86 fContDrawOptSub1D2D(0),
101 fBtnAddFitFunction(0),
119 fListNormalization(0),
132 fChkGetMinMaxAuto(0),
136 fcontDrawOpt1DSubLR(0),
137 fContDrawOpt1DSubNSC(0),
147 fCheckCumulativePM(0),
149 fContDrawOpt1DSubMML(0),
162 fChkStatUnderflow(0),
167 fChkStatSkewnessPM(0),
170 fChkStatKurtosisPM(0),
193 fChkAddAsReference(0),
218 SetCleanup(kDeepCleanup);
224 fContTopBottom =
new TGCompositeFrame(
this, w, h, kVerticalFrame | kFixedWidth | kFixedHeight);
225 AddFrame(
fContTopBottom,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 0));
234 fContLeft =
new TGCompositeFrame(
fContLCR, 200, 200, kVerticalFrame | kFixedWidth | kFitHeight);
235 fContLCR->AddFrame(
fContLeft,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandY, 5, 3, 3, 3));
238 TGVSplitter *splitLeft =
new TGVSplitter(
fContLCR);
240 fContLCR->AddFrame(splitLeft,
new TGLayoutHints(kLHintsLeft | kLHintsExpandY, 0, 0, 0, 0));
243 fContRight =
new TGCompositeFrame(
fContLCR, 150, 200, kVerticalFrame | kFixedWidth | kFitHeight);
244 fContLCR->AddFrame(
fContRight,
new TGLayoutHints(kLHintsTop | kLHintsRight | kLHintsExpandY, 3, 5, 3, 3));
247 fContCenter =
new TGCompositeFrame(
fContLCR, 200, 200, kVerticalFrame | kFixedWidth | kFitHeight);
248 fContLCR->AddFrame(
fContCenter,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 0));
251 TGVSplitter *splitRight =
new TGVSplitter(
fContLCR);
253 fContLCR->AddFrame(splitRight,
new TGLayoutHints(kLHintsLeft | kLHintsExpandY, 0, 0, 0, 0));
264 fBtnDraw->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoDraw()");
265 fBtnDraw->SetToolTipText(
"Press here to draw according to selections.");
269 fContLeft->AddFrame(
ftabLeft,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 8, 0));
287 fRadio1D->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsGeneral()");
288 fRadio1D->SetToolTipText(
"1D drawing \nSelect this if you want to have the full control for the custom draw.");
293 fRadio2D->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsGeneral()");
294 fRadio2D->SetToolTipText(
"2D drawing");
305 fChkAddDrawOpt->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
306 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).");
313 fComboAddDrawOpt->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsGeneral(=14)");
314 fComboAddDrawOpt->Connect(
"Selected(Int_t)",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
320 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'.");
325 fChkAutoAppend->SetToolTipText(
"Tries to repair your custom draw string or custom cut string, if you forgot '~' or '.fElements' \nThis function may be buggy!");
331 fRadioPredefined->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsGeneral()");
332 fRadioPredefined->SetToolTipText(
"Draw predefined variables according to selection.");
336 ftabLeft0->AddFrame(
fListVariables,
new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY, 10, 0, 0, 0));
337 fListVariables->Connect(
"Selected(Int_t)",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
342 fContPlotOpt =
new TGGroupFrame(
ftabLeft0,
"Normalization options", kVerticalFrame | kFitWidth | kFitHeight);
349 fRadioRaw->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsGeneral()");
350 fRadioRaw->SetToolTipText(
"Plot without normalization");
355 fRadioNormalized->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsGeneral()");
368 fComboMethod->Connect(
"Selected(Int_t)",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
373 fListNormalization->Connect(
"Selected(Int_t)",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
378 fRadioCustom->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsGeneral()");
379 fRadioCustom->SetToolTipText(
"Draw data according to user specific text entry in the 'Custom Draw' line. Remember '~' (= '.fElements')!");
398 fRadioNorm->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D()");
399 fRadioNorm->SetToolTipText(
"Produce a normal 1D plot, a histogram of the selected data.");
403 fRadioSigma->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D()");
404 fRadioSigma->SetToolTipText(
"Draw a normal histogram, but also lines that indicate the mean/median/LTM \nand sigmas of the selected data.");
408 fTxtSigmas->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D(=111)");
409 fTxtSigmas->SetToolTipText(
"Enter sigma intervals you would like to be indicated by lines. \nExample: '2; 4; 6'");
419 fRadioCumulative->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D()");
420 fRadioCumulative->SetToolTipText(
"Draw the cumulative (SigmaCut) of the given selection. \nThe data distribution is integrated, starting from the mean/median/LTM.");
424 fCheckCumulativePM->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D()");
425 fCheckCumulativePM->SetToolTipText(
"Decide whether you want the cumulative integration for each direction (+/-) \nor only for the absolute distance to the mean/median/LTM value.");
429 fRadioIntegrate->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D()");
430 fRadioIntegrate->SetToolTipText(
"Draw the integral of the given selection.");
441 fTxtSigmaMax->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D(=112)");
442 fTxtSigmaMax->SetToolTipText(
"Enter up to which multiple of sigma you want to integrate.");
451 fChkMean->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D()");
452 fChkMean->SetToolTipText(
"Activate Mean for Sigma/Cumulative/Integrate");
456 fChkMedian->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D()");
457 fChkMedian->SetToolTipText(
"Activate Median for Sigma/Cumulative/Integrate");
461 fChkLTM->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtons1D()");
462 fChkLTM->SetToolTipText(
"Activate LTM for Sigma/Cumulative/Integrate");
466 fContStatOpt =
new TGGroupFrame(
ftabLeft1,
"Statistic options", kVerticalFrame | kFitWidth | kFitHeight);
471 fChkStatName->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
472 fChkStatName->SetToolTipText(
"Display the name in the statistics legend.");
476 fChkStatEntries->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
477 fChkStatEntries->SetToolTipText(
"Display the number of entries in the statistics legend.");
484 fChkStatMean->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
485 fChkStatMean->SetToolTipText(
"Display the mean value of the data in the statistics legend.");
489 fChkStatMeanPM->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
490 fChkStatMeanPM->SetToolTipText(
"Display the mean value's error in the statistics legend.");
497 fChkStatRMS->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
498 fChkStatRMS->SetToolTipText(
"Display the RMS value of the data in the statistics legend.");
502 fChkStatRMSPM->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
503 fChkStatRMSPM->SetToolTipText(
"Display the RMS value's error in the statistics legend.");
507 fChkStatUnderflow->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
508 fChkStatUnderflow->SetToolTipText(
"Display the number of entries in the underflow bin.");
512 fChkStatOverflow->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
513 fChkStatOverflow->SetToolTipText(
"Display the number of entries in the overflow bin.");
517 fChkStatIntegral->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
518 fChkStatIntegral->SetToolTipText(
"Display the integral of the data in the statistics legend.");
525 fChkStatSkewness->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
526 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!");
530 fChkStatSkewnessPM->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
531 fChkStatSkewnessPM->SetToolTipText(
"Display the skewness' error in the statistics legend.");
538 fChkStatKurtosis->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
539 fChkStatKurtosis->SetToolTipText(
"Display the kurtosis of the data in the statistics legend.");
543 fChkStatKurtosisPM->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsStat()");
544 fChkStatKurtosisPM->SetToolTipText(
"Display the kurtosis' error in the statistics legend.");
549 fBtnUnchekAll->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"UnchekAllStat()");
550 fBtnUnchekAll->SetToolTipText(
"Disable all statistics legend entries, \nno statistics legend.");
567 fComboCustom->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsGeneral(=42)");
568 fComboCustom->Connect(
"Selected(Int_t)",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
584 fComboAddCuts->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsCuts(=31)");
585 fComboAddCuts->Connect(
"Selected(Int_t)",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
592 fCanvMain =
new TRootEmbeddedCanvas(
"Main_Canvas",
fContCenter, 200, 200, kFitWidth | kFitHeight);
593 fContCenter->AddFrame(
fCanvMain,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 0));
594 fCanvMain->GetCanvas()->Connect(
"ProcessedEvent(Int_t, Int_t, Int_t, TObject*)",
"AliTPCCalibViewerGUI",
this,
"MouseMove(Int_t, Int_t, Int_t, TObject*)");
595 fCanvMain->GetCanvas()->Connect(
"RangeAxisChanged()",
"AliTPCCalibViewerGUI",
this,
"GetMinMax()");
596 fCanvMain->GetCanvas()->SetToolTipText(
"The Main_Canvas, here your plots are displayed.");
605 fContRight->AddFrame(
ftabRight,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 8, 0));
620 fRadioTPC->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsCuts()");
621 fRadioTPC->SetToolTipText(
"No cuts, use the whole TPC. \nIn 2D mode, A side and C side are superimposed!");
626 fRadioSideA->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsCuts()");
632 fRadioSideC->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsCuts()");
638 fRadioROC->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsCuts()");
639 fRadioROC->SetToolTipText(
"Use only one ROC (readout chamber).");
644 fRadioSector->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsCuts()");
645 fRadioSector->SetToolTipText(
"Use only one Sector (0-17 A-Side, 18-35 C-Side).");
648 fContSector =
new TGCompositeFrame(
fContCuts, 200, 200, kHorizontalFrame | kFitWidth | kFitHeight);
653 fNmbSector =
new TGNumberEntry(
fContSector, 0, 1, -1, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, 0, 71);
655 fNmbSector->Connect(
"ValueSet(Long_t)",
"AliTPCCalibViewerGUI",
this,
"ChangeSector()");
665 fChkCutZero->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
666 fChkCutZero->SetToolTipText(
"Use only values that are not zero. \nWhen doing a custom draw this cut is composed of the draw string\nup to the first ':' or '>>' and the condition that this should not be zero.");
671 fChkAddCuts->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
672 fChkAddCuts->SetToolTipText(
"Activate the custom cuts on the bottom. Remember '~' (= '.fElements')!");
689 fChkSetMax->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw()");
690 fChkSetMax->SetToolTipText(
"Set the maximum fixed to the value specified here.");
695 fTxtSetMax->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw()");
696 fTxtSetMax->SetToolTipText(
"maximum value for the drawing");
706 fChkSetMin->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw()");
707 fChkSetMin->SetToolTipText(
"Set the minimum fixed to the value specified here.");
712 fTxtSetMin->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw()");
713 fTxtSetMin->SetToolTipText(
"minimum value for the drawing");
718 fBtnGetMinMax->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"GetMinMax()");
719 fBtnGetMinMax->SetToolTipText(
"Get min and max from plot, e.g. after rescaling by dragging the palette. \nObsolete! The button's function will change to 'Unzoom all'.");
724 fChkGetMinMaxAuto->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw()");
725 fChkGetMinMaxAuto->SetToolTipText(
"Get minimum and maximum automatically from each new plot. \nDeactivate this, if you want to 'save' your specified minimum and maximum.");
733 fChkLabelTitle->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw()");
738 fTxtLabelTitle->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw(=50)");
743 fChkLabelXaxis->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw()");
748 fTxtLabelXaxis->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw(=51)");
753 fChkLabelYaxis->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw()");
758 fTxtLabelYaxis->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw(=52)");
763 fChkLabelGetAuto->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"HandleButtonsNoRedraw()");
764 fChkLabelGetAuto->SetToolTipText(
"Get labels automatically from each new plot \nDeactivate this, if you want to 'save' your specified labels.");
774 fBtnSave->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"SavePicture()");
775 fBtnSave->SetToolTipText(
"Open a 'Save as...' dialog to save the current plot as picture or macro.");
785 fChkAddSaveOpt->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoNewSelection()");
786 fChkAddSaveOpt->SetToolTipText(
"Additional save options (see documentation for TPad::Print()).");
793 fComboAddSaveOpt->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"SavePicture()");
798 fContExport =
new TGGroupFrame(
fTabRight1,
"Export AliTPCCalPad", kVerticalFrame | kFitWidth | kFitHeight);
812 fComboExportName->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"DoExport()");
813 fComboExportName->Connect(
"Selected(Int_t)",
"AliTPCCalibViewerGUI",
this,
"DoExport()");
819 fBtnExport->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoExport()");
820 fBtnExport->SetToolTipText(
"Export the current 2D view as AliTPCCalPad to the CINT command line interpreter, use the specified name. \nThis works only in 2D mode.");
825 fBtnAddNorm->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoExportNorm()");
826 fBtnAddNorm->SetToolTipText(
"Use the current 2D view as normalization variable, use the specified name. \nNot yet working!");
835 fBtnDumpToFile->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoDumpToFile()");
836 fBtnDumpToFile->SetToolTipText(
"Write the exported CalPads to a new CalibTree");
841 fBtnLoadTree->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoLoadTree()");
842 fBtnLoadTree->SetToolTipText(
"Load and initialize a new calibration tree. ");
846 fChkAddAsReference->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoLoadTree()");
850 fContTree->AddFrame(
fTxtRefName,
new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 15, 0, 0, 0));
856 fContFit =
new TGGroupFrame(
fTabRight1,
"Custom fit", kVerticalFrame | kFitWidth | kFitHeight);
861 fContAddFit =
new TGCompositeFrame(
fContFit, 200, 200, kVerticalFrame | kFitWidth | kFitHeight);
870 fComboCustomFit->Connect(
"ReturnPressed()",
"AliTPCCalibViewerGUI",
this,
"DoFit()");
871 fComboCustomFit->Connect(
"Selected(Int_t)",
"AliTPCCalibViewerGUI",
this,
"DoFit()");
877 fBtnFit->Connect(
"Clicked()",
"AliTPCCalibViewerGUI",
this,
"DoFit()");
878 fBtnFit->SetToolTipText(
"Fit a whole TPC side, e.g. with gx~ ++ gy~, the result is printed to the console \nNot yet final status.");
885 SetWindowName(
"AliTPCCalibViewer GUI");
887 Resize(GetDefaultSize());
931 Int_t statOpt =
gStyle->GetOptStat();
932 if (statOpt == 1) statOpt = 1111;
933 if (statOpt / 200000000 >= 1) {
936 statOpt -= 200000000;
938 if (statOpt / 100000000 >= 1) {
940 statOpt -= 100000000;
942 if (statOpt / 20000000 >= 1) {
947 if (statOpt / 10000000 >= 1) {
951 if (statOpt / 1000000 >= 1) {
955 if (statOpt / 100000 >= 1) {
959 if (statOpt / 10000 >= 1) {
963 if (statOpt / 2000 >= 1) {
968 if (statOpt / 1000 >= 1) {
972 if (statOpt / 200 >= 1) {
977 if (statOpt / 100 >= 1) {
981 if (statOpt / 10 >= 1) {
985 if (statOpt / 1 >= 1) {
1060 : TGCompositeFrame(c.fParent, c.fWidth, c.fHeight),
1203 for (Int_t i = 0; i <
fCanvMain->GetCanvas()->GetListOfPrimitives()->GetEntries(); i++) {
1204 if (strcmp(
fCanvMain->GetCanvas()->GetListOfPrimitives()->At(i)->ClassName(),
"TFrame") != 0)
1205 fCanvMain->GetCanvas()->GetListOfPrimitives()->At(i)->Delete();
1235 TString selectedVariable(
"");
1236 TString selectedNormalization(
"");
1237 Int_t variableId = -1;
1238 Int_t normalizationId = -1;
1248 TIterator* iter = arr->MakeIterator();
1250 TObjString* currentStr = 0;
1253 while ((currentStr = (TObjString*)(iter->Next()))) {
1255 if (
fInitialized && currentStr->GetString() == selectedVariable) variableId =
id;
1261 TIterator *iterNorm = arrNorm->MakeIterator();
1266 while ((currentStr = (TObjString*)(iterNorm->Next()))) {
1268 if (
fInitialized && currentStr->GetString() == selectedNormalization) normalizationId =
id;
1274 while ((currentStr = (TObjString*)(iter->Next()))) {
1275 if (currentStr->GetString().BeginsWith(
"Map"))
continue;
1277 if (
fInitialized && currentStr->GetString() == selectedNormalization) normalizationId =
id;
1301 if (
fInitialized) Info(
"Initialize",
"AliTPCCalibViewerGUI new initialized.");
1320 TGButton *btn = (TGButton *) gTQSender;
1321 id = btn->WidgetId();
1375 TGButton *btn = (TGButton *) gTQSender;
1376 id = btn->WidgetId();
1415 TGButton *btn = (TGButton *) gTQSender;
1416 id = btn->WidgetId();
1418 TString statOpt(
"");
1419 if (
fChkStatName->GetState() == kButtonDown) statOpt.Append(
"n");
1422 if (
fChkStatMeanPM->GetState() == kButtonDown) statOpt.Append(
"M");
1424 if (
fChkStatRMSPM->GetState() == kButtonDown) statOpt.Append(
"R");
1433 gStyle->SetOptStat(statOpt);
1443 TGButton *btn = (TGButton *) gTQSender;
1444 id = btn->WidgetId();
1491 TGButton *btn = (TGButton *) gTQSender;
1492 id = btn->WidgetId();
1519 TString drawPlaceHolder(
"#draw#");
1520 TString normPlaceHolder(
"#norm#");
1523 TString desiredData(
"");
1525 desiredData += ((TGTextLBEntry*)(
fListVariables->GetSelectedEntry()))->GetTitle();
1526 str.ReplaceAll(drawPlaceHolder,desiredData);
1531 TString normalizationData(
"");
1533 normalizationData += ((TGTextLBEntry*)(
fListNormalization->GetSelectedEntry()))->GetTitle();
1534 if (! (TString(((TGTextLBEntry*)(
fListNormalization->GetSelectedEntry()))->GetTitle())).BeginsWith(
"Fit"))
1535 if ( normalizationData.BeginsWith(
"_") ) normalizationData = desiredData+normalizationData;
1537 normalizationData+=
"~";
1538 str.ReplaceAll(normPlaceHolder,normalizationData);
1553 TString desiredData(
"");
1555 desiredData += ((TGTextLBEntry*)(
fListVariables->GetSelectedEntry()))->GetTitle();
1569 TString normalizationData(
"");
1571 normalizationData += ((TGTextLBEntry*)(
fListNormalization->GetSelectedEntry()))->GetTitle();
1573 if ( normalizationData.BeginsWith(
"Fit")) {
1577 if (
fRadioTPC->GetState() == kButtonDown)
1580 cutStr +=
"(sector/18)%2==0";
1582 cutStr+=
"(sector/18)%2==1";
1583 if (
fRadioROC->GetState() == kButtonDown) {
1584 Int_t sector = (Int_t)(
fNmbSector->GetNumber());
1585 cutStr +=
"sector==";
1589 Int_t sector = ((Int_t)(
fNmbSector->GetNumber()))%36;
1590 cutStr +=
"sector%36==";
1594 if (
fRadioTPC->GetState() != kButtonDown) cutStr +=
" && ";
1600 TString formulaStr(
"");
1601 if (normalizationData.CompareTo(
"FitLinLocal") == 0)
1602 formulaStr =
"lx~ ++ ly~";
1603 if (normalizationData.CompareTo(
"FitLinGlobal") == 0)
1604 formulaStr =
"gx~ ++ gy~";
1605 if (normalizationData.CompareTo(
"FitParLocal") == 0)
1606 formulaStr =
"lx~ ++ ly~ ++ lx~^2 ++ ly~^2 ++ lx~*ly~";
1607 if (normalizationData.CompareTo(
"FitParGlobal") == 0)
1608 formulaStr =
"gx~ ++ gy~ ++ gx~^2 ++ gy~^2 ++ gx~*gy~";
1610 normalizationData = *
fViewer->
Fit(desiredData.Data(), formulaStr.Data(), cutStr.Data(),
chi2, fitParam, covMatrix);
1614 if (! (TString(((TGTextLBEntry*)(
fListNormalization->GetSelectedEntry()))->GetTitle())).BeginsWith(
"Fit"))
1615 if ( normalizationData.BeginsWith(
"_") ) desiredData += ((TGTextLBEntry*)(
fListVariables->GetSelectedEntry()))->GetTitle();
1617 normalizationData+=
"~";
1618 desiredData += normalizationData;
1622 if (desiredData ==
"")
return 0;
1629 return new TString(desiredData.Data());
1636 TString sectorStr(
"");
1637 if (
fRadioTPC->GetState() == kButtonDown)
1643 if (
fRadioROC->GetState() == kButtonDown) {
1644 Int_t sector = (Int_t)(
fNmbSector->GetNumber());
1645 sectorStr += sector;
1648 Int_t sector = ((Int_t)(
fNmbSector->GetNumber()))%36;
1650 sectorStr += sector;
1652 return new TString(sectorStr.Data());
1659 TString cutsStr(
"");
1662 if (cutZerosStr.Contains(
">>")) {
1663 cutZerosStr.Remove(cutZerosStr.First(
">>"));
1665 if (cutZerosStr.Contains(
":")) {
1666 cutZerosStr.Remove(cutZerosStr.First(
":"));
1668 cutsStr += cutZerosStr.Data();
1670 if (
fChkAddCuts->GetState() == kButtonDown) cutsStr +=
" && ";
1681 return new TString(cutsStr.Data());
1696 TString addDrawOpt(
"");
1701 if (!addDrawOpt.Contains(
"same"))
1702 for (Int_t i = 0; i <
fCanvMain->GetCanvas()->GetListOfPrimitives()->GetEntries(); i++) {
1703 if (strcmp(
fCanvMain->GetCanvas()->GetListOfPrimitives()->At(i)->ClassName(),
"TFrame") != 0)
1704 fCanvMain->GetCanvas()->GetListOfPrimitives()->At(i)->Delete();
1710 if (
fRadio1D->GetState() == kButtonDown){
1713 Double_t sigmaMax = (strSigmaMax.IsFloat()) ? strSigmaMax.Atof() : 5;
1714 Bool_t plotMean =
fChkMean->GetState() == kButtonDown;
1715 Bool_t plotMedian =
fChkMedian->GetState() == kButtonDown;
1716 Bool_t plotLTM =
fChkLTM->GetState() == kButtonDown;
1718 entries =
fViewer->
EasyDraw1D(desiredData.Data(), sectorStr.Data(), cutsStr.Data(), addDrawOpt.Data());
1721 fTxtSigmas->GetText(), plotMean, plotMedian, plotLTM);
1723 entries =
fViewer->
SigmaCut(desiredData.Data(), sectorStr.Data(), cutsStr.Data(),
1724 sigmaMax, plotMean, plotMedian, plotLTM,
1727 entries =
fViewer->
Integrate(desiredData.Data(), sectorStr.Data(), cutsStr.Data(),
1728 sigmaMax, plotMean, plotMedian, plotLTM,
1731 else if (
fRadio2D->GetState() == kButtonDown) {
1733 entries =
fViewer->
EasyDraw(desiredData.Data(), sectorStr.Data(), cutsStr.Data(), addDrawOpt.Data());
1735 if (entries == -1)
return;
1749 TString formulaStr(
"");
1755 if (
fRadioTPC->GetState() == kButtonDown)
1758 cutStr +=
"(sector/18)%2==0";
1760 cutStr+=
"(sector/18)%2==1";
1761 if (
fRadioROC->GetState() == kButtonDown) {
1762 Int_t sector = (Int_t)(
fNmbSector->GetNumber());
1763 cutStr +=
"sector==";
1767 Int_t sector = (Int_t)(
fNmbSector->GetNumber())%36;
1768 cutStr +=
"sector%36==";
1772 if (
fRadioTPC->GetState() != kButtonDown) cutStr +=
" && ";
1787 TString *returnStr =
fViewer->
Fit(drawStr.Data(), formulaStr.Data(), cutStr.Data(),
chi2, fitParam, covMatrix);
1789 std::cout << std::endl;
1790 std::cout <<
"Your fit formula reads as follows:" << std::endl;
1791 std::cout << returnStr->Data() << std::endl;
1792 std::cout <<
"chi2 = " << chi2 << std::endl;
1801 if (
fRadio2D->GetState() != kButtonDown){
1802 Error(
"ExportCalPad",
"Export of AliTPCCalPad to CINT works only in 2D mode.");
1814 gROOT->ProcessLine(Form(
"AliTPCCalPad* %s = (AliTPCCalPad*)0x%lx;", calPadName, (ULong_t)calPad));
1816 Info(
"ExportCalPad",
"Current 2D view has been exported to an AliTPCCalPad* with name '%s'", calPadName);
1823 if (
fRadio2D->GetState() != kButtonDown){
1824 Error(
"ExportCalPad",
"Adding an AliTPCCalPad to the normalization works only in 2D mode.");
1828 Error(
"DoExportNorm",
"Not yet implemented.");
1854 TList* listOfPrimitives =
fCanvMain->GetCanvas()->GetListOfPrimitives();
1856 for (Int_t i = 0; i < listOfPrimitives->GetEntries(); i++) {
1857 ptr = listOfPrimitives->At(i);
1858 if ( ptr->InheritsFrom(
"TH1") )
break;
1860 if ( !ptr || !ptr->InheritsFrom(
"TH1") )
return;
1861 TH1 *hist = (TH1*)ptr;
1868 if (
fRadio2D->GetState() == kButtonDown) {
1870 fTxtSetMax->SetText(Form(
"%f", hist->GetMaximum()));
1872 fTxtSetMin->SetText(Form(
"%f", hist->GetMinimum()));
1874 else if (
fRadio1D->GetState() == kButtonDown) {
1876 fTxtSetMax->SetText( Form(
"%f", hist->GetXaxis()->GetXmax()) );
1878 fTxtSetMin->SetText( Form(
"%f", hist->GetXaxis()->GetXmin()) );
1888 TList* listOfPrimitives =
fCanvMain->GetCanvas()->GetListOfPrimitives();
1890 for (Int_t i = 0; i < listOfPrimitives->GetEntries(); i++) {
1891 ptr = listOfPrimitives->At(i);
1892 if ( ptr->InheritsFrom(
"TH1") )
break;
1894 if ( ptr == 0 || !ptr->InheritsFrom(
"TH1") ) {
1896 Warning(
"SetMinMaxLabel",
"No Histogram found!");
1901 TH1 *hist = (TH1*)ptr;
1906 if (
fRadio2D->GetState() == kButtonDown) {
1907 if (
fChkSetMax->GetState() == kButtonDown &&
fChkSetMax->GetState() == kButtonDown &&(maxTxt.IsDigit() || maxTxt.IsFloat()) )
1908 hist->SetMaximum(maxTxt.Atof());
1910 hist->SetMaximum(-1111);
1911 if (
fChkSetMin->GetState() == kButtonDown && (minTxt.IsDigit() || minTxt.IsFloat()) )
1912 hist->SetMinimum(minTxt.Atof());
1914 hist->SetMinimum(-1111);
1916 else if (
fRadio2D->GetState() == kButtonDown) {
1918 fChkSetMax->GetState() == kButtonDown && hist->GetXaxis())
1919 hist->GetXaxis()->SetRangeUser(hist->GetXaxis()->GetXmin(), hist->GetXaxis()->GetXmax());
1920 else if (
fChkSetMax->GetState() == kButtonDown && hist->GetXaxis())
1921 hist->GetXaxis()->SetRangeUser(hist->GetXaxis()->GetXmin(), maxTxt.Atof());
1922 else if (
fChkSetMin->GetState() == kButtonDown && hist->GetXaxis())
1923 hist->GetXaxis()->SetRangeUser(minTxt.Atof(), hist->GetXaxis()->GetXmax());
1924 hist->SetTitle(hist->GetTitle());
1943 hist->SetTitle(hist->GetTitle());
1957 Int_t sector = (Int_t)(
fNmbSector->GetNumber());
1958 TString secLabel =
"";
1972 secLabel += Form(
"%02d",sector%18);
1982 std::cout <<
"Not yet implemented." << std::endl;
2011 Double_t pi = TMath::Pi();
2012 if (event != kButton1Double )
2014 if (!selectedObject->InheritsFrom(
"TH2"))
return;
2016 if (
fRadio2D->GetState() == kButtonUp)
return;
2017 if (
fRadioROC->GetState() == kButtonDown) {
2019 Int_t sector = (Int_t)(
fNmbSector->GetNumber());
2020 if ( (sector >= 0 && sector <= 17) || (sector >= 36 && sector <= 53) ) {
2026 if ( (sector >= 18 && sector <= 35) || (sector >= 54 && sector <= 71) ) {
2038 Float_t upy = gPad->AbsPixeltoY(y);
2039 Float_t upx = gPad->AbsPixeltoX(x);
2040 Float_t gy = gPad->PadtoY(upy);
2041 Float_t gx = gPad->PadtoX(upx);
2042 Int_t quadrant = -1;
2043 if (gx >= 0 && gy >= 0) quadrant = 1;
2044 if (gx < 0 && gy >= 0) quadrant = 2;
2045 if (gx < 0 && gy < 0) quadrant = 3;
2046 if (gx >= 0 && gy < 0) quadrant = 4;
2047 gx = TMath::Abs(gx);
2048 gy = TMath::Abs(gy);
2049 Double_t phi = TMath::ATan(gy/gx);
2050 Double_t r = TMath::Sqrt(gx*gx + gy*gy);
2051 if (quadrant == 2) phi = pi - phi;
2052 if (quadrant == 3) phi = pi + phi;
2053 if (quadrant == 4) phi = 2 * pi - phi;
2054 Double_t phiGrad = phi / pi * 180;
2055 Int_t sector = (Int_t) phiGrad / 20;
2059 if (r < 84.5 || r > 250)
return;
2061 if (
fRadioSideC->GetState() == kButtonDown) sector += 18;
2065 if (
fRadioSideC->GetState() == kButtonDown) sector += 18;
2098 const char *kSaveAsTypes[] = {
2099 "Postscript",
"*.ps",
2100 "Encapsulated Postscript",
"*.eps",
2109 "C++ macro",
"*.cxx",
2110 "Macro file",
"*.C",
2111 "ROOT file",
"*.root",
2115 TString addSaveOpt(
"");
2120 fi.fFileTypes = kSaveAsTypes;
2122 fi.fOverwrite = kFALSE;
2123 new TGFileDialog(gClient->GetRoot(), gClient->GetRoot(), kFDSave, &fi);
2124 if (fi.fFilename && strlen(fi.fFilename)) {
2125 if (addSaveOpt !=
"")
2126 fCanvMain->GetCanvas()->Print(fi.fFilename, addSaveOpt.Data());
2128 fCanvMain->GetCanvas()->Print(fi.fFilename);
2147 const char *kSaveAsTypes[] = {
2148 "ROOT file",
"*.root",
2153 fi.fFileTypes = kSaveAsTypes;
2155 fi.fOverwrite = kFALSE;
2156 new TGFileDialog(gClient->GetRoot(), gClient->GetRoot(), kFDSave, &fi);
2157 if (fi.fFilename && strlen(fi.fFilename)) {
2159 Info(
"DumpToFile",
"New CalibTree has been writen to file '%s'", fi.fFilename);
2167 const char *kFileTypes[] = {
2168 "ROOT file",
"*.root",
2173 fi.fFileTypes = kFileTypes;
2175 fi.fOverwrite = kFALSE;
2176 new TGFileDialog(gClient->GetRoot(), gClient->GetRoot(), kFDOpen, &fi);
2177 if (fi.fFilename && strlen(fi.fFilename) &&
fChkAddAsReference->GetState() == kButtonUp) {
2181 else if (fi.fFilename && strlen(fi.fFilename) &&
fChkAddAsReference->GetState() == kButtonDown) {
2193 TGMainFrame* frmMain =
new TGMainFrame(gClient->GetRoot(), 1000, 600);
2194 frmMain->SetWindowName(
"AliTPCCalibViewer GUI");
2195 frmMain->SetCleanup(kDeepCleanup);
2197 TGTab* tabMain =
new TGTab(frmMain, 1000, 600);
2198 frmMain->AddFrame(tabMain,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 0));
2200 TGCompositeFrame* tabCont1 = tabMain->AddTab(
"Viewer 1");
2201 TGCompositeFrame* tabCont2 = tabMain->AddTab(
"Viewer 2");
2204 tabCont1->AddFrame(calibViewer1,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 0));
2207 tabCont2->AddFrame(calibViewer2,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 0));
2210 guiArray->Add(calibViewer1);
2211 guiArray->Add(calibViewer2);
2213 frmMain->MapSubwindows();
2215 frmMain->MapWindow();
TGCheckButton * fChkStatRMSPM
checkbox to display RMS error in statistic legend
TGCheckButton * fChkLabelXaxis
checkbox to display specified xaxis label
TGRadioButton * fRadioRaw
raw radio button
TGCompositeFrame * fContStatSkew
container for skewness and its error in stat opt
TGCompositeFrame * fContAddCuts
container for additional cut command GUI elements
TGCheckButton * fChkStatSkewness
checkbox to display skewness in statistic legend
TGLabel * fLblCustomDraw
custom draw labal
TGCompositeFrame * fContStatRMS
container for RMS and its error in stat opt
virtual ~AliTPCCalibViewerGUI()
void HandleButtonsNoRedraw(Int_t id=-1)
TGCompositeFrame * fContCuts
container for cut options GUI elements
TGCompositeFrame * fTabRight0
Tab 0 on the right side for basic.
TGCompositeFrame * fContScaling
container for scaling GUI elements
TGTextEntry * fTxtLabelTitle
text box to specify title
TGTextButton * fBtnFit
fit button
TGCompositeFrame * fTabRight1
Tab 1 on the right side for advanced.
TGCheckButton * fChkStatUnderflow
checkbox to display underflow error in statistic legend
TGComboBox * fComboAddDrawOpt
additional draw options combo box
TGTextEntry * fTxtSetMin
custom minimum text box
TGCheckButton * fChkStatKurtosis
checkbox to display kurtosis in statistic legend
TGRadioButton * fRadioNormalized
normalized radio button
TGTextEntry * fTxtLabelYaxis
text box to specify yaxis label
GUI for the AliTPCCalibViewer used for the calibration monitor All functionalities of the AliTPCCalib...
TGListBox * fListVariables
listbox with possible variables
TRootEmbeddedCanvas * fCanvMain
main drawing canvas
TGRadioButton * fRadioSideC
side C radio button
TGTextEntry * fTxtSetMax
custom maximum text box
TGCheckButton * fChkStatSkewnessPM
checkbox to display skewness error in statistic legend
TString * GetDrawString()
AliTPCCalibViewerGUI & operator=(const AliTPCCalibViewerGUI ¶m)
AliTPCCalibViewerGUI * viewer
TGCheckButton * fChkSetMin
Set maximum check box.
TGCheckButton * fChkMedian
checkbox to plot median
TGCheckButton * fChkAddAsReference
checkbox to add a new tree as referenceTree
TGRadioButton * fRadio1D
1D radio button
void HandleButtonsGeneral(Int_t id=-1)
TGNumberEntry * fNmbSector
number entry box for specifying the sector
AliTPCCalibViewerGUI(const TGWindow *p, UInt_t w, UInt_t h, char *fileName)
TGCompositeFrame * fContSetMin
container for SetMinimum elements
TGComboBox * fComboExportName
dropdownbox to enter a name for the exported CalPad
Class for viewing/visualizing TPC calibration data.
void Initialize(const char *fileName, const char *treeName="calPads")
void HandleButtonsStat(Int_t id=-1)
TGGroupFrame * fContExport
container for cint-export
Int_t Integrate(const char *drawCommand, const char *sector, const char *cuts=0, Float_t sigmaMax=5, Bool_t plotMean=kTRUE, Bool_t plotMedian=kTRUE, Bool_t plotLTM=kTRUE, const char *sigmas="", Float_t sigmaStep=-1) const
TGTextButton * fBtnGetMinMax
GetMinMax-button.
TGGroupFrame * fContLabeling
groupframe container for labeling
TGRadioButton * fRadioROC
ROC radio button.
TGCompositeFrame * fContDrawOpt1DSubMML
container in tabLeft1 for following check boxes
TObjArray * GetListOfNormalizationVariables(Bool_t printList=kFALSE) const
TGCompositeFrame * fContAddExport
container for dropdown list to enter export name
TGRadioButton * fRadioSector
sector radio button
void MouseMove(Int_t event, Int_t x, Int_t y, TObject *selected)
void HandleButtons1D(Int_t id=-1)
const char * AddAbbreviations(const Char_t *c, Bool_t printDrawCommand=kFALSE)
TGCompositeFrame * fContAddSaveOpt
container for additional save options
TGCheckButton * fChkStatMean
checkbox to display mean in statistic legend
TString fileName(const char *dir, int runNumber, const char *da, int i, const char *type)
Int_t SigmaCut(const char *drawCommand, Int_t sector, const char *cuts=0, Float_t sigmaMax=5, Bool_t plotMean=kTRUE, Bool_t plotMedian=kTRUE, Bool_t plotLTM=kTRUE, Bool_t pm=kFALSE, const char *sigmas="", Float_t sigmaStep=-1) const
TObjArray * GetListOfVariables(Bool_t printList=kFALSE)
TGRadioButton * fRadioCumulative
radio button for cumulative 1D drawing
TGCompositeFrame * fContFit
container for fit GUI elements
Int_t EasyDraw(const char *drawCommand, const char *sector, const char *cuts=0, const char *drawOptions=0, Bool_t writeDrawCommand=kFALSE) const
TGComboBox * fComboAddCuts
additional cuts combo box
TGCheckButton * fChkSetMax
Set maximum check box.
TGCheckButton * fCheckCumulativePM
checkbox for plus/minus cumulative 1D drawing
AliTPCCalibViewer * fViewer
CalibViewer object used for drawing.
TGComboBox * fComboCustomFit
custom fit combo box
TGTextEntry * fTxtLabelXaxis
text box to specify xaxis label
TString * Fit(const char *drawCommand, const char *formula, const char *cuts, Double_t &chi2, TVectorD &fitParam, TMatrixD &covMatrix)
TGButton * fBtnUnchekAll
Button to uncheck all statistic entries.
AliTPCPreprocessorOnline * fPreprocessor
PreprocessorOnline object, used to collect the exported CalPads and to save them into a new calibTree...
TGCompositeFrame * fContDrawOpt1DSubNSC
container in tabLeft1 for following radio buttons
void ReplacePlaceHolders(TString &str)
TGCompositeFrame * fContCumuLR
container in tabLeft1 for two colums for cumulative and integrative
TGRadioButton * fRadioPredefined
predefined plot radio button
TGCompositeFrame * fContCenter
container for GUI elements at the center
TGCheckButton * fChkStatIntegral
checkbox to display integral in statistic legend
TGLabel * fLblSigmaMax
label to indicate sigmaMax
TGTab * ftabRight
Tabs on the right side.
TGTextButton * fBtnAddFitFunction
button to add fit function to normalization
void AddFitFunction() const
TGCheckButton * fChkStatEntries
checkbox to display entries in statistic legend
TGRadioButton * fRadioNorm
radio button for normal 1D drawing
TGCheckButton * fChkCutZero
cut zeros check box
TGCompositeFrame * fContDrawOptSub1D2D
container for 1D and 2D radio-button
TGCheckButton * fChkLabelYaxis
checkbox to display specified yaxis label
TFriendElement * AddReferenceTree(const char *filename, const char *treename="calPads", const char *refname="R")
TGListBox * fListNormalization
listbox with possible normalization variables
TGCompositeFrame * ftabLeft1
Tab 1 on the left side for 1D plot options.
TGRadioButton * fRadio2D
2D radio button
TGCheckButton * fChkAuto
automatic redraw checkbox
TGTextEntry * fTxtRefName
text box to specify the referenceTree's name
TString * GetSectorString()
TGCheckButton * fChkLabelGetAuto
checkbox to get labels atuomatically from plot
TGRadioButton * fRadioIntegrate
radio button for integral 1D drawing
TGTab * ftabLeft
Tabs on the left side for plot options.
TGCompositeFrame * fContSector
container for sector GUI elements
TGTextButton * fBtnLoadTree
button to load a new tree
TGCompositeFrame * fContPlotOpt
container for plot options GUI elements
TGGroupFrame * fContSave
container for save-button
TGTextButton * fBtnAddNorm
button to add a CalPad to the normalization
static TObjArray * ShowGUI(const char *fileName=0)
TGCheckButton * fChkLTM
checkbox to plot LTM
TGCheckButton * fChkAutoAppend
automatic appendign of "~" checkbox
virtual void Delete(Option_t *option="")
TGCheckButton * fChkMean
checkbox to plot mean
TGCheckButton * fChkAddCuts
additional cuts check box
TGButton * fBtnSave
Save button.
TGCompositeFrame * ftabLeft0
Tab 0 on the left side for general plot options.
Bool_t fInitialized
has the GUI already been initialized?
TGTextButton * fBtnDraw
draw button
TGTextButton * fBtnDumpToFile
button to dump a new CalibTree to file
TGComboBox * fComboMethod
normalization methods dropdown box
AliTPCCalPad * GetCalPad(const char *desiredData, const char *cuts="", const char *calPadName="NoName") const
void DumpToFile(const char *fileName)
TGCheckButton * fChkLabelTitle
checkbox to display specified title
TGRadioButton * fRadioSideA
side A radio button
void HandleButtonsCuts(Int_t id=-1)
Preprocessor class for HLT and DAQ.
TGCheckButton * fChkStatName
checkbox to display histogram name in statistic legend
TGTextEntry * fTxtSigmaMax
text box to specify sigmaMax
TGCompositeFrame * fContCumLeft
container in tabLeft1 for cumulative, left
TGCheckButton * fChkAddSaveOpt
checkbox for additional save options
TGCompositeFrame * fContAddFit
container for additional fit GUI elements
Int_t EasyDraw1D(const char *drawCommand, const char *sector, const char *cuts=0, const char *drawOptions=0, Bool_t writeDrawCommand=kFALSE) const
TGCompositeFrame * fContNormalized
container for normalization options GUI elements
TGCheckButton * fChkStatRMS
checkbox to display RMS in statistic legend
TGCompositeFrame * fContLeft
container for GUI elements on left side
TGComboBox * fComboCustom
combo box for custom draw commands
TGCompositeFrame * fcontDrawOpt1DSubLR
container in tabLeft1 to divide L/R
TGCompositeFrame * fContStatKurt
container for kurtosis and its error in stat opt
void DrawGUI(const TGWindow *p, UInt_t w, UInt_t h)
TGCompositeFrame * fContSetMax
container for SetMaximum elements
TGCompositeFrame * fContTopBottom
container for all GUI elements, vertical divided
class TVectorT< Double_t > TVectorD
void AddComponent(TObject *obj)
TGLabel * fLblAddCuts
additional cuts label
TGCompositeFrame * fContCustom
container for custom draw command GUI elements
TGCompositeFrame * fContTree
container for tree functions
TGCheckButton * fChkStatKurtosisPM
checkbox to display kurtosis error in statistic legend
TGCompositeFrame * fContDrawOpt
container for draw options GUI elements
TGCheckButton * fChkGetMinMaxAuto
Get Min & Max automatically from plot.
TGLabel * fLblSector
label that shows the active sector
TGTextButton * fBtnExport
button to export a CalPad
TGCompositeFrame * fContRight
container for GUI elements on right side
TGCompositeFrame * fContCumRight
container in tabLeft1 for cumulative, right
TGCheckButton * fChkStatOverflow
checkbox to display overflow error in statistic legend
TGCompositeFrame * fContAddDrawOpt
additional draw options container
TGCheckButton * fChkAddDrawOpt
additional draw options check box
TGRadioButton * fRadioCustom
custom radio button
TGCompositeFrame * fContLCR
container for all GUI elements, horizontal divided
TGTextEntry * fTxtSigmas
text box to specify sigmas
TGGroupFrame * fContStatOpt
container for statistic options in tabLeft1
TGGroupFrame * fContDrawOpt1D
container in tabLeft1
TGRadioButton * fRadioTPC
TPC radio button.
TGRadioButton * fRadioSigma
radio button for sigma 1D drawing
class TMatrixT< Double_t > TMatrixD
Int_t DrawHisto1D(const char *drawCommand, Int_t sector, const char *cuts=0, const char *sigmas="2;4;6", Bool_t plotMean=kTRUE, Bool_t plotMedian=kTRUE, Bool_t plotLTM=kTRUE) const
TGCheckButton * fChkStatMeanPM
checkbox to display mean error in statistic legend
TString & GetAbbreviation()
TGComboBox * fComboAddSaveOpt
combobox for additional save options
TGCompositeFrame * fContStatMean
container for mean and its error in stat opt