**************************************************************************/
#include "AliEveTPCLoaderEditor.h"
+
#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>
//______________________________________________________________________________
-// AliEveTPCLoaderEditor
//
+// Editor for AliEveTPCLoader.
ClassImp(AliEveTPCLoaderEditor)
- AliEveTPCLoaderEditor::AliEveTPCLoaderEditor(const TGWindow *p,
- Int_t width, Int_t height,
- UInt_t options, Pixel_t back) :
- TGedFrame(p, width, height, options | kVerticalFrame, back),
+AliEveTPCLoaderEditor::AliEveTPCLoaderEditor(const TGWindow *p,
+ Int_t width, Int_t height,
+ UInt_t options, Pixel_t back) :
+ TGedFrame(p, width, height, options | kVerticalFrame, back),
- fM (0),
+ fM (0),
- fFile (0),
- fOpenFile (0),
+ fFile (0),
+ fOpenFile (0),
- fEvent (0),
- fDoubleSR (0),
+ fEvent (0),
+ fDoubleSR (0),
- fDataLoadThreshold (0),
- fDataLoadPedestal (0),
- fDataAutoPedestal (0),
+ fDataLoadThreshold (0),
+ fDataLoadPedestal (0),
+ fDataAutoPedestal (0),
- fUpdateSectors (0),
- fReloadSectors (0),
- fCreateSectors3D (0),
- fDeleteSectors3D (0)
+ fUpdateSectors (0),
+ fReloadSectors (0),
+ fCreateSectors3D (0),
+ fDeleteSectors3D (0),
+
+ gEtaRange(0),
+ gCutOnEta(0)
+
{
+ // Constructor.
+
MakeTitle("AliEveTPCLoader");
Int_t labelW;
AddFrame(f);
}
- fEvent = new TEveGValuator(this, "AliEveEventManager:", 110, 0);
+ fEvent = new TEveGValuator(this, "Event:", 110, 0);
fEvent->SetShowSlider(kFALSE);
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()");
- // Reuse AliEveEventManager for DoubleSR button
+ // Reuse Event for DoubleSR button
fDoubleSR = new TGCheckButton(fEvent, "Double SR");
fDoubleSR->SetToolTipText("Double sampling rate");
fEvent->AddFrame(fDoubleSR, new TGLayoutHints(kLHintsLeft, 12, 0, 2, 0));
"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);
-AliEveTPCLoaderEditor::~AliEveTPCLoaderEditor()
-{}
+ 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);
+
+ 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);
/******************************************************************************/
/******************************************************************************/
-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)
void AliEveTPCLoaderEditor::FileChanged()
{
+ // Slot for FileChanged.
+
fM->fFile = fFile->GetText();
}
void AliEveTPCLoaderEditor::DoOpen()
{
+ // Slot for Open.
+
fM->OpenFile();
SetModel(fM);
}
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();
}
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());
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);
+ }
+ }
+
+}
+