]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/EveDet/AliEveTPCLoaderEditor.cxx
fix for Savannah bug #81846
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTPCLoaderEditor.cxx
index fc10e78430c2c3ad002df907904bba99a820ce38..d822d4df62fbedcd632ea33fb37b57f0ea2f227a 100644 (file)
 #include <EveDet/AliEveTPCLoader.h>
 #include <EveDet/AliEveTPCData.h>
 
+#include <TEveScene.h>
 #include <TEveManager.h>
 #include <TEveGValuators.h>
+#include <TGDoubleSlider.h>
 
 #include <TSystem.h>
 #include <TVirtualPad.h>
@@ -28,8 +30,8 @@
 
 
 //______________________________________________________________________________
-// AliEveTPCLoaderEditor
 //
+// Editor for AliEveTPCLoader.
 
 ClassImp(AliEveTPCLoaderEditor)
 
@@ -53,8 +55,14 @@ AliEveTPCLoaderEditor::AliEveTPCLoaderEditor(const TGWindow *p,
   fUpdateSectors   (0),
   fReloadSectors   (0),
   fCreateSectors3D (0),
-  fDeleteSectors3D (0)
+  fDeleteSectors3D (0),
+
+  gEtaRange(0),
+  gCutOnEta(0)
+  
 {
+  // Constructor.
+
   MakeTitle("AliEveTPCLoader");
 
   Int_t labelW;
@@ -87,7 +95,7 @@ AliEveTPCLoaderEditor::AliEveTPCLoaderEditor(const TGWindow *p,
   fEvent->SetLabelWidth(labelW);
   fEvent->SetNELength(6);
   fEvent->Build();
-  fEvent->SetLimits(0, 1000);
+  fEvent->SetLimits(0, 999999);
   fEvent->SetToolTip("Current event number");
   fEvent->Connect("ValueSet(Double_t)",
                  "AliEveTPCLoaderEditor", this, "DoEvent()");
@@ -161,16 +169,50 @@ AliEveTPCLoaderEditor::AliEveTPCLoaderEditor(const TGWindow *p,
                              "AliEveTPCLoaderEditor", this, "DoDeleteSectors3D()");
     AddFrame(f, new TGLayoutHints(kLHintsExpandX, 8,8,8,0));
   }
-}
+  {
+    TGHorizontalFrame* f = new TGHorizontalFrame(this);
+    fCreateSectors3D = new TGTextButton(f, "Show 2D");
+    f->AddFrame(fCreateSectors3D, new TGLayoutHints(kLHintsExpandX, 0,4,0,0));
+    fCreateSectors3D->Connect("Clicked()",
+                             "AliEveTPCLoaderEditor", this, "DoShowSectors2D()");
+    fDeleteSectors3D = new TGTextButton(f, "Hide 2D");
+    f->AddFrame(fDeleteSectors3D, new TGLayoutHints(kLHintsExpandX, 4,0,0,0));
+    fDeleteSectors3D->Connect("Clicked()",
+                             "AliEveTPCLoaderEditor", this, "DoHideSectors2D()");
+    AddFrame(f, new TGLayoutHints(kLHintsExpandX, 8,8,8,0));
+  }
+
+   // Eta cuts slider
+
+  {
+   TGHorizontalFrame* f = new TGHorizontalFrame(this);
+
+   gEtaRange = new TEveGDoubleValuator(f,"Eta range:", 40, 0);
+   gEtaRange->SetNELength(6);
+   gEtaRange->SetLabelWidth(50);
+   gEtaRange->Build();
+   gEtaRange->GetSlider()->SetWidth(180);
+   gEtaRange->SetLimits(-1.5, 1.5, TGNumberFormat::kNESRealTwo);
+   gEtaRange->SetValues(-1.5, 1.5, TGNumberFormat::kNESRealTwo);
+
+   gCutOnEta = new TGCheckButton(f, "Set", 10);
+   gCutOnEta->SetEnabled(kTRUE);
 
-AliEveTPCLoaderEditor::~AliEveTPCLoaderEditor()
-{}
+   f->AddFrame(gEtaRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
+   f->AddFrame(gCutOnEta, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
+
+   AddFrame(f, new TGLayoutHints(kLHintsExpandX, 8,8,8,0));
+  }
+
+}
 
 /******************************************************************************/
 
 void AliEveTPCLoaderEditor::SetModel(TObject* obj)
 {
-  fM = dynamic_cast<AliEveTPCLoader*>(obj);
+  // Set model object.
+
+  fM = static_cast<AliEveTPCLoader*>(obj);
 
   // !!!! order changed, need TGTextEntry::SetText NO BLOODY EMIT.
   fFile->SetText(fM->fFile);
@@ -193,20 +235,20 @@ void AliEveTPCLoaderEditor::SetModel(TObject* obj)
 /******************************************************************************/
 /******************************************************************************/
 
-namespace {
-const char *tpcfiletypes[] = {
+void AliEveTPCLoaderEditor::FileSelect()
+{
+  // Slot for FileSelect.
+
+  static const char *kTPCFileTypes[] = {
    "Root files",  "*.root",
    "All files",   "*.*",
     0,               0
 };
-}
 
-void AliEveTPCLoaderEditor::FileSelect()
-{
   TGFileInfo fi;
   fi.fIniDir    = StrDup(gSystem->DirName (fM->fFile));
   fi.fFilename  = StrDup(gSystem->BaseName(fM->fFile));
-  fi.fFileTypes = tpcfiletypes;
+  fi.fFileTypes = kTPCFileTypes;
 
   new TGFileDialog(fClient->GetRoot(), gEve->GetMainWindow(), kFDOpen, &fi);
   if (!fi.fFilename)
@@ -217,11 +259,15 @@ void AliEveTPCLoaderEditor::FileSelect()
 
 void AliEveTPCLoaderEditor::FileChanged()
 {
+  // Slot for FileChanged.
+
   fM->fFile = fFile->GetText();
 }
 
 void AliEveTPCLoaderEditor::DoOpen()
 {
+  // Slot for Open.
+
   fM->OpenFile();
   SetModel(fM);
 }
@@ -230,12 +276,16 @@ void AliEveTPCLoaderEditor::DoOpen()
 
 void AliEveTPCLoaderEditor::DoEvent()
 {
+  // Slot for Event.
+
   fM->GotoEvent((Int_t) fEvent->GetValue());
   SetModel(fM);
 }
 
 void AliEveTPCLoaderEditor::DoDoubleSR()
 {
+  // Slot for DoubleSR.
+
   fM->SetDoubleSR(fDoubleSR->IsOn());
   Update();
 }
@@ -244,18 +294,24 @@ void AliEveTPCLoaderEditor::DoDoubleSR()
 
 void AliEveTPCLoaderEditor::DoDataLoadThreshold()
 {
+  // Slot for DataLoadThreshold.
+
   if (fM->GetData() == 0) return;
   fM->GetData()->SetLoadThreshold((Short_t) fDataLoadThreshold->GetValue());
 }
 
 void AliEveTPCLoaderEditor::DoDataLoadPedestal()
 {
+  // Slot for DataLoadPedestal.
+
   if (fM->GetData() == 0) return;
   fM->GetData()->SetLoadPedestal((Short_t) fDataLoadPedestal->GetValue());
 }
 
 void AliEveTPCLoaderEditor::DoDataAutoPedestal()
 {
+  // Slot for DataAutoPedestal.
+
   if (fM->GetData() == 0) return;
   fM->GetData()->SetAutoPedestal(fDataAutoPedestal->IsOn());
   fDataLoadPedestal->SetEnabled(!fDataAutoPedestal->IsOn());
@@ -265,21 +321,86 @@ void AliEveTPCLoaderEditor::DoDataAutoPedestal()
 
 void AliEveTPCLoaderEditor::DoUpdateSectors()
 {
+  // Slot for UpdateSectors.
+
+  if(gCutOnEta)
+    fM->SetCutOnEta(gCutOnEta->IsOn());
+
+  if(gEtaRange)
+  {
+    fM->SetEtaMin(gEtaRange->GetMin());
+    fM->SetEtaMax(gEtaRange->GetMax());
+  }
+
   fM->UpdateSectors();
 }
 
 void AliEveTPCLoaderEditor::DoReloadSectors()
 {
+  // Slot for ReloadSectors.
+
+  if(gCutOnEta)
+    fM->SetCutOnEta(gCutOnEta->IsOn());
+
+  if(gEtaRange)
+  {
+    fM->SetEtaMin(gEtaRange->GetMin());
+    fM->SetEtaMax(gEtaRange->GetMax());
+  }
+
+
   fM->ReloadSectors();
 }
 
 void AliEveTPCLoaderEditor::DoCreateSectors3D()
 {
+  // Slot for CreateSectors3D.
+
+  if(gCutOnEta)
+    fM->SetCutOnEta(gCutOnEta->IsOn());
+
+  if(gEtaRange)
+  {
+    fM->SetEtaMin(gEtaRange->GetMin());
+    fM->SetEtaMax(gEtaRange->GetMax());
+  }
+
   fM->CreateSectors3D();
 }
 
 
 void AliEveTPCLoaderEditor::DoDeleteSectors3D()
 {
+  // Slot for DeleteSectors3D.
+
   fM->DeleteSectors3D();
 }
+
+void AliEveTPCLoaderEditor::DoShowSectors2D()
+{
+
+   for(Int_t i = 0; i< 36; i++)
+   {
+      if(gEve->GetEventScene()->FirstChild()->FindChild("AliEveTPCLoader")->FindChild(Form("Sector2D %d",i)))
+      {
+         gEve->GetEventScene()->FirstChild()->FindChild("AliEveTPCLoader")->FindChild(Form("Sector2D %d",i))->SetRnrSelf(kTRUE);
+         gEve->GetEventScene()->FirstChild()->FindChild("AliEveTPCLoader")->FindChild(Form("Sector2D %d",i))->SetRnrChildren(kTRUE);
+      }
+   }
+
+}
+
+void AliEveTPCLoaderEditor::DoHideSectors2D()
+{
+
+   for(Int_t i = 0; i< 36; i++)
+   {
+      if(gEve->GetEventScene()->FirstChild()->FindChild("AliEveTPCLoader")->FindChild(Form("Sector2D %d",i)))
+      {
+         gEve->GetEventScene()->FirstChild()->FindChild("AliEveTPCLoader")->FindChild(Form("Sector2D %d",i))->SetRnrSelf(kFALSE);
+         gEve->GetEventScene()->FirstChild()->FindChild("AliEveTPCLoader")->FindChild(Form("Sector2D %d",i))->SetRnrChildren(kFALSE);
+      }
+   }
+
+}
+