#include "AliEveEventManagerEditor.h"
#include "AliEveEventManager.h"
-#include "TVirtualPad.h"
+#include <AliESDEvent.h>
+
+#include <TVirtualPad.h>
#include "TColor.h"
#include <TEveGValuators.h>
#include <TGTextView.h>
#include <TGLabel.h>
+#include "Riostream.h"
+
//______________________________________________________________________________
// GUI editor for AliEveEventManager.
//
UInt_t options, Pixel_t back) :
TGedFrame(p, width, height, options | kVerticalFrame, back),
fM(0),
- fNextEvent(0),
+ fDumpEventInfo(0),
fEventInfo(0)
{
// Constructor.
{
TGHorizontalFrame* f = new TGHorizontalFrame(this);
- fNextEvent = new TGTextButton(f, "Next Event");
- fNextEvent->SetWidth(100);
- fNextEvent->ChangeOptions(fNextEvent->GetOptions() | kFixedWidth);
- f->AddFrame(fNextEvent, new TGLayoutHints(kLHintsNormal, 4,0,0,0));
- fNextEvent->Connect("Clicked()",
- "AliEveEventManagerEditor", this, "DoNextEvent()");
+ fDumpEventInfo = new TGTextButton(f, "Dump Event Info");
+ fDumpEventInfo->SetToolTipText("Append information about current event to event_info.txt file.");
+ fDumpEventInfo->SetWidth(120);
+ fDumpEventInfo->ChangeOptions(fDumpEventInfo->GetOptions() | kFixedWidth);
+ f->AddFrame(fDumpEventInfo, new TGLayoutHints(kLHintsNormal, 4,0,0,0));
+ fDumpEventInfo->Connect("Clicked()",
+ "AliEveEventManagerEditor", this, "DumpEventInfo()");
AddFrame(f, new TGLayoutHints(kLHintsExpandX, 8,8,8,0));
}
{
/******************************************************************************/
//______________________________________________________________________________
-void AliEveEventManagerEditor::DoNextEvent()
+void AliEveEventManagerEditor::DumpEventInfo()
{
- // Load next event
+ // Dump event-info into event_info.txt.
+ // The info is appended into the file.
- fM->NextEvent();
+ ofstream f("event_info.txt", ios::out | ios::app);
+
+ f << "================================================================================\n\n";
+ f << fM->GetEventInfoHorizontal() << std::endl << std::endl;
+
+ f.close();
}
ClassImp(AliEveEventManagerWindow)
-AliEveEventManagerWindow::AliEveEventManagerWindow() :
+AliEveEventManagerWindow::AliEveEventManagerWindow(AliEveEventManager* mgr) :
TGMainFrame(gClient->GetRoot(), 400, 100, kVerticalFrame),
+ fM (mgr),
fFirstEvent (0),
fPrevEvent (0),
fNextEvent (0),
fLastEvent (0),
fRefresh (0),
- fTrigger (0),
fEventId (0),
fInfoLabel (0),
fAutoLoad (0),
fAutoLoadTime (0),
+ fTrigSel (0),
fEventInfo (0)
{
// Constructor.
fAutoLoadTime->SetToolTip("Automatic event loading time in seconds.");
fAutoLoadTime->Connect("ValueSet(Double_t)", cls, this, "DoSetAutoLoadTime()");
- MkLabel(f, "||", 0, 8, 8);
-
- MkLabel(f, "TRG select:", 0, 0, 4, 4);
- fTrigger = new TGComboBox(f);
- f->AddFrame(fTrigger, new TGLayoutHints(kLHintsNormal));
- fTrigger->Resize(75,20);
- //fTrigger->EnableTextInput(kTRUE);
- fTrigger->Connect("Selected(const char*)", cls, this, "DoSetTriggerType(const char*)");
+ fTrigSel = new TGComboBox(f);
+ fTrigSel->Resize(4*width,b->GetDefaultHeight());
+ fTrigSel->AddEntry("No trigger selection",-1);
+ fTrigSel->Select(-1,kFALSE);
+ f->AddFrame(fTrigSel, new TGLayoutHints(kLHintsNormal, 10, 5, 0, 0));
+ fTrigSel->Connect("Selected(char*)", cls, this, "DoSetTrigSel()");
}
fEventInfo = new TGTextView(this, 400, 600);
AddFrame(fEventInfo, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY));
- gAliEveEvent->Connect("NewEventLoaded()", cls, this, "Update()");
+ fM->Connect("NewEventLoaded()", cls, this, "Update()");
SetCleanup(kDeepCleanup);
Layout();
{
// Destructor.
- gAliEveEvent->Disconnect("NewEventLoaded()", this);
+ fM->Disconnect("NewEventLoaded()", this);
}
//______________________________________________________________________________
void AliEveEventManagerWindow::DoFirstEvent()
{
// Load previous event
- gAliEveEvent->GotoEvent(0);
+ fM->GotoEvent(0);
}
//______________________________________________________________________________
void AliEveEventManagerWindow::DoPrevEvent()
{
// Load previous event
- gAliEveEvent->PrevEvent();
+ fM->PrevEvent();
}
//______________________________________________________________________________
void AliEveEventManagerWindow::DoNextEvent()
{
// Load next event
- gAliEveEvent->NextEvent();
+ fM->NextEvent();
}
//______________________________________________________________________________
void AliEveEventManagerWindow::DoLastEvent()
{
// Load previous event
- gAliEveEvent->GotoEvent(-1);
+ fM->GotoEvent(-1);
}
//______________________________________________________________________________
void AliEveEventManagerWindow::DoSetEvent()
{
// Set current event
- gAliEveEvent->GotoEvent((Int_t) fEventId->GetNumber());
+ fM->GotoEvent((Int_t) fEventId->GetNumber());
}
//______________________________________________________________________________
{
// Refresh event status.
- Int_t ev = gAliEveEvent->GetEventId();
- gAliEveEvent->Close();
- gAliEveEvent->Open();
- gAliEveEvent->GotoEvent(ev);
+ Int_t ev = fM->GetEventId();
+ fM->Close();
+ fM->Open();
+ fM->GotoEvent(ev);
}
//______________________________________________________________________________
{
// Set the auto-load flag
- gAliEveEvent->SetAutoLoad(fAutoLoad->IsOn());
+ fM->SetAutoLoad(fAutoLoad->IsOn());
Update();
}
{
// Set the auto-load time in seconds
- gAliEveEvent->SetAutoLoadTime(fAutoLoadTime->GetValue());
+ fM->SetAutoLoadTime(fAutoLoadTime->GetValue());
}
//______________________________________________________________________________
-void AliEveEventManagerWindow::DoSetTriggerType(const char* type)
+void AliEveEventManagerWindow::DoSetTrigSel()
{
- // Slot for setting trigger type.
+ // Set the trigger selection
- TString typestr = type;
- if (typestr=="")
- {
- gAliEveEvent->SetSelectOnTriggerType(kFALSE);
- }
- else
- {
- gAliEveEvent->SetTriggerType( typestr );
- gAliEveEvent->SetSelectOnTriggerType(kTRUE);
- }
+ fM->SetTrigSel(fTrigSel->GetSelectedEntry()->EntryId());
}
//______________________________________________________________________________
{
// Update current event, number of available events, list of active triggers
- Bool_t autoLoad = gAliEveEvent->GetAutoLoad();
- Bool_t extCtrl = gAliEveEvent->IsUnderExternalControl();
+ Bool_t autoLoad = fM->GetAutoLoad();
+ Bool_t extCtrl = fM->IsUnderExternalControl();
Bool_t evNavOn = !autoLoad && !extCtrl;
fFirstEvent->SetEnabled(evNavOn);
fNextEvent ->SetEnabled(!autoLoad);
fRefresh ->SetEnabled(evNavOn);
- fEventId->SetNumber(gAliEveEvent->GetEventId());
+ fEventId->SetNumber(fM->GetEventId());
fEventId->SetState(evNavOn);
- fInfoLabel->SetText(Form("/ %d", gAliEveEvent->GetMaxEventId()));
-
- // fAutoLoadTime->SetEnabled(gAliEveEvent->GetAutoLoad());
- fAutoLoad->SetState(gAliEveEvent->GetAutoLoad() ? kButtonDown : kButtonUp);
- fAutoLoadTime->SetValue(gAliEveEvent->GetAutoLoadTime());
-
- fEventInfo->LoadBuffer(gAliEveEvent->GetEventInfoHorizontal());
+ fInfoLabel->SetText(Form("/ %d", fM->GetMaxEventId()));
+
+ fAutoLoad->SetState(fM->GetAutoLoad() ? kButtonDown : kButtonUp);
+ fAutoLoadTime->SetValue(fM->GetAutoLoadTime());
+
+ // Loop over active trigger classes
+ if (fM->GetESD()) {
+ for(Int_t iTrig = 0; iTrig < AliESDRun::kNTriggerClasses; iTrig++) {
+ TString trigName = fM->GetESD()->GetESDRun()->GetTriggerClass(iTrig);
+ if (trigName.IsNull()) {
+ if (fTrigSel->GetListBox()->GetEntry(iTrig)) {
+ if (fTrigSel->GetSelected() == iTrig) fTrigSel->Select(-1);
+ fTrigSel->RemoveEntry(iTrig);
+ }
+ continue;
+ }
+ if (!fTrigSel->FindEntry(trigName.Data()))
+ fTrigSel->AddEntry(trigName.Data(),iTrig);
+ }
+ }
+ fTrigSel->SetEnabled(!evNavOn);
- SetupTriggerSelect();
+ fEventInfo->LoadBuffer(fM->GetEventInfoHorizontal());
Layout();
}
return l;
}
-void AliEveEventManagerWindow::SetupTriggerSelect()
-{
- if (fTrigger->GetNumberOfEntries()>0) return; //do nothing if already enabled
-
- AliESDEvent* esd = gAliEveEvent->AssertESD(); //get ESD
- if (esd)
- {
- TString activetrg = esd->GetESDRun()->GetActiveTriggerClasses(); //Get list of active classes
- TObjArray* activetrgarr = activetrg.Tokenize(" "); //break up the classes string, space as separator
- Int_t entries = activetrgarr->GetEntries(); //how many triggerclasses
- TString entry; //to hold the triger class name
- TObjString* entryobj;
- if (entries == 0)
- {
- fTrigger->SetEnabled(kFALSE); //no trigger classes
- }
- else
- {
- fTrigger->RemoveAll(); //some initial cleanup
- fTrigger->SetEnabled(kTRUE); //no trigger classes
- fTrigger->AddEntry("",-1); //first entry empty - select to not filter by trigger
- for (Int_t i=0;i<entries;i++)
- {
- entryobj = (TObjString*)activetrgarr->At(i);
- entry = entryobj->GetString();
- fTrigger->AddEntry(entry.Data(), i);
- }
- }
- fTrigger->Select(-1, kTRUE); //set default no filtering and emit
- }
- else
- {
- fTrigger->SetEnabled(kFALSE);
- }
-}
-