]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCCalibViewerGUI.cxx
change binning rhom histograms
[u/mrichter/AliRoot.git] / TPC / AliTPCCalibViewerGUI.cxx
index 4a87107b3e228a17455c06b44c1c32c2fdf47628..4cf271ab228aeafb2fee65bdb3fcd5800be176fe 100644 (file)
@@ -32,6 +32,7 @@
 
 
 #include "AliTPCCalibViewerGUI.h"
+#include "AliTPCCalPad.h"
 #include <iostream>
 
 #include <TCanvas.h>
@@ -39,6 +40,7 @@
 #include <TVirtualPad.h>
 
 #include <TROOT.h>
+#include <TMath.h>
 #include <TObjArray.h>
 #include <TObjString.h>
 #include <TVector.h>
@@ -212,7 +214,7 @@ AliTPCCalibViewerGUI::AliTPCCalibViewerGUI(const TGWindow *p, UInt_t w, UInt_t h
 }
 
 
-void AliTPCCalibViewerGUI::DrawGUI(const TGWindow *p, UInt_t w, UInt_t h) {
+void AliTPCCalibViewerGUI::DrawGUI(const TGWindow */*p*/, UInt_t w, UInt_t h) {
    // 
    // draw the GUI
    // 
@@ -221,7 +223,6 @@ void AliTPCCalibViewerGUI::DrawGUI(const TGWindow *p, UInt_t w, UInt_t h) {
    // ======================================================================
    
    SetCleanup(kDeepCleanup);
-   p = p; // to avoid compiler warnings
 
    // *****************************************************************************
    // ************************* content of this MainFrame *************************
@@ -318,6 +319,7 @@ void AliTPCCalibViewerGUI::DrawGUI(const TGWindow *p, UInt_t w, UInt_t h) {
             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()");
+            fComboAddDrawOpt->GetTextEntry()->SetText("",kFALSE);
                   
          // automatic redraw check button
          fChkAuto = new TGCheckButton(fContDrawOpt, "Auto redraw");
@@ -571,7 +573,7 @@ void AliTPCCalibViewerGUI::DrawGUI(const TGWindow *p, UInt_t w, UInt_t h) {
          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()");
-      
+         fComboCustom->GetTextEntry()->SetText("",kFALSE);
    
       // additional cuts container
       fContAddCuts = new TGCompositeFrame(fContTopBottom, 200, 200, kHorizontalFrame | kFitWidth | kFitHeight);
@@ -588,6 +590,7 @@ void AliTPCCalibViewerGUI::DrawGUI(const TGWindow *p, UInt_t w, UInt_t h) {
          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()");
+         fComboAddCuts->GetTextEntry()->SetText("",kFALSE);
          
    // ==========================================================================
    // ************************* content of fContCenter *************************
@@ -796,6 +799,7 @@ void AliTPCCalibViewerGUI::DrawGUI(const TGWindow *p, UInt_t w, UInt_t h) {
             fComboAddSaveOpt->EnableTextInput(kTRUE);
             fComboAddSaveOpt->Connect("ReturnPressed()", "AliTPCCalibViewerGUI", this, "SavePicture()");
             // fComboAddSaveOpt->Connect("Selected(Int_t)", "AliTPCCalibViewerGUI", this, "SavePicture()");
+            fComboAddSaveOpt->GetTextEntry()->SetText("",kFALSE);
      
       // calPad export container
       fContExport = new TGGroupFrame(fTabRight1, "Export AliTPCCalPad", kVerticalFrame | kFitWidth | kFitHeight);
@@ -814,6 +818,7 @@ void AliTPCCalibViewerGUI::DrawGUI(const TGWindow *p, UInt_t w, UInt_t h) {
          fComboExportName->EnableTextInput(kTRUE);
          fComboExportName->Connect("ReturnPressed()", "AliTPCCalibViewerGUI", this, "DoExport()");
          fComboExportName->Connect("Selected(Int_t)", "AliTPCCalibViewerGUI", this, "DoExport()");
+         fComboExportName->GetTextEntry()->SetText("",kFALSE);
   
          // export button
          fBtnExport = new TGTextButton(fContExport, "&Export to CINT");
@@ -871,6 +876,7 @@ void AliTPCCalibViewerGUI::DrawGUI(const TGWindow *p, UInt_t w, UInt_t h) {
             fContAddFit->AddFrame(fComboCustomFit, new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 0, 0, 0, 0));
             fComboCustomFit->Connect("ReturnPressed()", "AliTPCCalibViewerGUI", this, "DoFit()");
             fComboCustomFit->Connect("Selected(Int_t)", "AliTPCCalibViewerGUI", this, "DoFit()");
+            fComboCustomFit->GetTextEntry()->SetText("",kFALSE);
          
          // fit button
          fBtnFit = new TGTextButton(fContAddFit, "&Fit");
@@ -1223,7 +1229,7 @@ void AliTPCCalibViewerGUI::CloseWindow() {
 */
 
 
-void AliTPCCalibViewerGUI::Initialize(char* fileName, char* treeName) {
+void AliTPCCalibViewerGUI::Initialize(const char* fileName, const char* treeName) {
    // 
    // initialize the GUI with a calibrationTree from fileName
    // 
@@ -1264,22 +1270,33 @@ void AliTPCCalibViewerGUI::Initialize(AliTPCCalibViewer *viewer) {
       if (fInitialized && currentStr->GetString() == selectedVariable) variableId = id;
       id++;
    }
-   delete iter;
-   arr->Delete();
-   delete arr;
 
    // fill fListNorm, list of normalization variables:
-   arr = fViewer->GetListOfNormalizationVariables();
-   iter = arr->MakeIterator();
-   iter->Reset();
+   TObjArray *arrNorm = fViewer->GetListOfNormalizationVariables();
+   TIterator *iterNorm = arrNorm->MakeIterator();
+   iterNorm->Reset();
    currentStr = 0;
    id = 0;
    fListNormalization->RemoveAll();
+   while ((currentStr = (TObjString*)(iterNorm->Next()))) {
+      fListNormalization->AddEntry(currentStr->GetString().Data(), id);
+      if (fInitialized && currentStr->GetString() == selectedNormalization) normalizationId = id;
+      id++;
+   }
+   currentStr = 0;
+   iter->Reset();
+   //Add draw variables to the list of normalisation
    while ((currentStr = (TObjString*)(iter->Next()))) {
+      if (currentStr->GetString().BeginsWith("Map")) continue; //don't add mapping information
       fListNormalization->AddEntry(currentStr->GetString().Data(), id);
       if (fInitialized && currentStr->GetString() == selectedNormalization) normalizationId = id;
       id++;
    }
+
+   delete iterNorm;
+   arrNorm->Delete();
+   delete arrNorm;
+
    delete iter;
    arr->Delete();
    delete arr;
@@ -1301,6 +1318,15 @@ void AliTPCCalibViewerGUI::Initialize(AliTPCCalibViewer *viewer) {
 
 }
 
+void AliTPCCalibViewerGUI::Reset(){
+  //
+  // reset variables, delete calib viewer
+  //
+  if (fViewer) delete fViewer;
+  fListVariables->RemoveAll();
+  fListNormalization->RemoveAll();
+  fInitialized = kFALSE;
+}
 
 void AliTPCCalibViewerGUI::HandleButtonsGeneral(Int_t id) {
    //
@@ -1508,6 +1534,33 @@ void AliTPCCalibViewerGUI::HandleButtonsNoRedraw(Int_t id) {
    SetMinMaxLabel();
 }
 
+void AliTPCCalibViewerGUI::ReplacePlaceHolders(TString &str)
+{
+    //
+    // replace the defined placeholders in the custom draw string and cut string
+    //
+    TString drawPlaceHolder("#draw#");
+    TString normPlaceHolder("#norm#");
+
+    //current draw variable
+    TString desiredData("");
+    if (fListVariables->GetSelectedEntry()){
+      desiredData += ((TGTextLBEntry*)(fListVariables->GetSelectedEntry()))->GetTitle();
+      str.ReplaceAll(drawPlaceHolder,desiredData);
+    }
+//    desiredData += fViewer->GetAbbreviation();
+
+    //current normalisation
+    TString normalizationData("");
+    if (fListNormalization->GetSelectedEntry()){
+      normalizationData += ((TGTextLBEntry*)(fListNormalization->GetSelectedEntry()))->GetTitle();
+      if (! (TString(((TGTextLBEntry*)(fListNormalization->GetSelectedEntry()))->GetTitle())).BeginsWith("Fit"))
+        if ( normalizationData.BeginsWith("_") ) normalizationData = desiredData+normalizationData;
+      if ( fListVariables->FindEntry(normalizationData.Data()) )
+        normalizationData+="~";
+      str.ReplaceAll(normPlaceHolder,normalizationData);
+    }
+}
 
 void AliTPCCalibViewerGUI::DoNewSelection() {
    //
@@ -1585,12 +1638,15 @@ TString* AliTPCCalibViewerGUI::GetDrawString() {
 
       desiredData += op;
       if (! (TString(((TGTextLBEntry*)(fListNormalization->GetSelectedEntry()))->GetTitle())).BeginsWith("Fit"))
-         desiredData += ((TGTextLBEntry*)(fListVariables->GetSelectedEntry()))->GetTitle();
+         if ( normalizationData.BeginsWith("_") ) desiredData += ((TGTextLBEntry*)(fListVariables->GetSelectedEntry()))->GetTitle();
+      if ( fListVariables->FindEntry(normalizationData.Data()) )
+          normalizationData+="~";
       desiredData += normalizationData;
    }
    else if (fRadioCustom->GetState() == kButtonDown) {
       desiredData = fComboCustom->GetTextEntry()->GetText();
       if (desiredData == "") return 0;
+      ReplacePlaceHolders(desiredData);
    }
    
    // try to add forgotten '~'
@@ -1643,8 +1699,11 @@ TString* AliTPCCalibViewerGUI::GetSectorString() {
       cutsStr += "!=0";
       if (fChkAddCuts->GetState() == kButtonDown) cutsStr += " && ";
    }
-   if (fChkAddCuts->GetState() == kButtonDown)
-      cutsStr += fComboAddCuts->GetTextEntry()->GetText();
+   if (fChkAddCuts->GetState() == kButtonDown){
+       cutsStr += fComboAddCuts->GetTextEntry()->GetText();
+       ReplacePlaceHolders(cutsStr);
+   }
+
    
    // try to add forgotten '~'
    if (fChkAutoAppend->GetState() == kButtonDown) 
@@ -1722,7 +1781,6 @@ void AliTPCCalibViewerGUI::DoFit() {
    TMatrixD covMatrix(0,0);
    TString cutStr("");
    TString formulaStr("");
-   TString *returnStr = new TString("");
 
    // specify data to plot:
    TString drawStr(GetDrawString()->Data());
@@ -1758,12 +1816,16 @@ void AliTPCCalibViewerGUI::DoFit() {
       formulaStr = TString(fViewer->AddAbbreviations((char*)formulaStr.Data()));
 
    // ********** call AliTPCCalibViewer's fit-function
-   returnStr = fViewer->Fit(drawStr.Data(), formulaStr.Data(), cutStr.Data(), chi2, fitParam, covMatrix);
+  ReplacePlaceHolders(drawStr);
+  ReplacePlaceHolders(cutStr);
+  TString *returnStr = fViewer->Fit(drawStr.Data(), formulaStr.Data(), cutStr.Data(), chi2, fitParam, covMatrix);
    
    std::cout << std::endl;
    std::cout << "Your fit formula reads as follows:" << std::endl;
    std::cout << returnStr->Data() << std::endl;
    std::cout << "chi2 = " << chi2 << std::endl;
+
+  delete returnStr;
 }
 
 
@@ -1784,7 +1846,7 @@ void AliTPCCalibViewerGUI::DoExport() {
    // create calPad according to drawCommand and cuts
    AliTPCCalPad *calPad = fViewer->GetCalPad(desiredData.Data(), (char*)cutsStr.Data(), (char*)calPadName);
    // finally export calPad to Cint:
-   gROOT->ProcessLine(Form("AliTPCCalPad* %s = (AliTPCCalPad*)0x%lx;", calPadName, calPad));
+   gROOT->ProcessLine(Form("AliTPCCalPad* %s = (AliTPCCalPad*)0x%lx;", calPadName, (ULong_t)calPad));
    fPreprocessor->AddComponent(calPad);
    Info("ExportCalPad", "Current 2D view has been exported to an AliTPCCalPad* with name '%s'", calPadName);
 }
@@ -1801,6 +1863,7 @@ void AliTPCCalibViewerGUI::DoExportNorm() {
    }
    
    Error("DoExportNorm", "Not yet implemented.");
+/*  
    return;
    
    // specify data to plot:
@@ -1815,8 +1878,9 @@ void AliTPCCalibViewerGUI::DoExportNorm() {
    // create calPad according to drawCommand and cuts
    AliTPCCalPad *calPad = fViewer->GetCalPad(desiredData.Data(), (char*)cutsStr.Data(), (char*)fComboExportName->GetTextEntry()->GetText());
    // finally export calPad to Cint:
-   gROOT->ProcessLine(Form("AliTPCCalPad* %s = (AliTPCCalPad*)0x%lx;", calPadName, calPad));
+   gROOT->ProcessLine(Form("AliTPCCalPad* %s = (AliTPCCalPad*)0x%lx;", calPadName, (ULong_t) calPad));
    Info("ExportCalPad", "Current 2D view has been exported to an AliTPCCalPad* with name '%s'", calPadName);
+  */
 }
 
 
@@ -1831,7 +1895,7 @@ void AliTPCCalibViewerGUI::GetMinMax() {
       ptr = listOfPrimitives->At(i);
       if ( ptr->InheritsFrom("TH1") ) break;
    }
-   if ( ptr != 0 && !ptr->InheritsFrom("TH1") ) return;      // if the loop did not find a TH1
+   if ( !ptr || !ptr->InheritsFrom("TH1") ) return;      // if the loop did not find a TH1
    TH1 *hist = (TH1*)ptr;
 
 //    Double_t histMax = hist->GetMaximum();
@@ -1925,7 +1989,12 @@ void AliTPCCalibViewerGUI::ChangeSector(){
    // 
    // function that is called, when the number of the sector is changed
    // to change the sector label
-   // 
+   //
+   if ( fRadioROC->GetState()!=kButtonDown && fRadioSector->GetState()!=kButtonDown ){
+       fLblSector->SetText("not used");
+       return;
+   }
+
    Int_t sector = (Int_t)(fNmbSector->GetNumber());
    TString secLabel = "";
    if ( sector < 36 )
@@ -2027,7 +2096,7 @@ void AliTPCCalibViewerGUI::MouseMove(Int_t event, Int_t x, Int_t y, TObject *sel
    if (quadrant == 3) phi = pi + phi;
    if (quadrant == 4) phi = 2 * pi - phi;
    Double_t phiGrad = phi / pi * 180;
-   Int_t sector = (Int_t) phiGrad / 20;  // one sector coresponds to 20°
+   Int_t sector = (Int_t) phiGrad / 20;  // one sector coresponds to 20
    // IROC starts at 84.5 cm
    // IROC ends at 135.5 cm, OROC begins
    // OROC ends at 250 cm
@@ -2133,7 +2202,7 @@ void AliTPCCalibViewerGUI::DoDumpToFile() {
    new TGFileDialog(gClient->GetRoot(), gClient->GetRoot(), kFDSave, &fi);
    if (fi.fFilename && strlen(fi.fFilename)) {
       fPreprocessor->DumpToFile(fi.fFilename);
-      Info("DumpToFile", Form("New CalibTree has been writen to file '%s'", fi.fFilename));
+      Info("DumpToFile","New CalibTree has been writen to file '%s'", fi.fFilename);
    }
 }