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),
205 if (fileName) Initialize(fileName);
209 if (fileName) DoDraw();
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),
1076 fContDrawOptSub1D2D(0),
1091 fBtnAddFitFunction(0),
1095 fRadioNormalized(0),
1096 fRadioPredefined(0),
1105 fComboAddDrawOpt(0),
1109 fListNormalization(0),
1122 fChkGetMinMaxAuto(0),
1126 fcontDrawOpt1DSubLR(0),
1127 fContDrawOpt1DSubNSC(0),
1136 fRadioCumulative(0),
1137 fCheckCumulativePM(0),
1139 fContDrawOpt1DSubMML(0),
1152 fChkStatUnderflow(0),
1153 fChkStatOverflow(0),
1154 fChkStatIntegral(0),
1156 fChkStatSkewness(0),
1157 fChkStatSkewnessPM(0),
1159 fChkStatKurtosis(0),
1160 fChkStatKurtosisPM(0),
1169 fChkLabelGetAuto(0),
1174 fComboAddSaveOpt(0),
1177 fComboExportName(0),
1183 fChkAddAsReference(0),
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 +=
" && ";
1598 TVectorD fitParam(0);
1599 TMatrixD covMatrix(0,0);
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;
1746 TVectorD fitParam(0);
1747 TMatrixD covMatrix(0,0);
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
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.
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
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
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