]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/EveBase/AliEveEventManagerEditor.cxx
From Pawel Debski.
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveEventManagerEditor.cxx
index cd7843c57c8f65681a875c483c4c19bce405186f..f45b0f137623275f9211cc852947427a73121602 100644 (file)
@@ -10,7 +10,9 @@
 #include "AliEveEventManagerEditor.h"
 #include "AliEveEventManager.h"
 
-#include "TVirtualPad.h"
+#include <AliESDEvent.h>
+
+#include <TVirtualPad.h>
 #include "TColor.h"
 
 #include <TEveGValuators.h>
@@ -18,6 +20,8 @@
 #include <TGTextView.h>
 #include <TGLabel.h>
 
+#include "Riostream.h"
+
 //______________________________________________________________________________
 // GUI editor for AliEveEventManager.
 //
@@ -29,7 +33,7 @@ AliEveEventManagerEditor::AliEveEventManagerEditor(const TGWindow *p, Int_t widt
                                                   UInt_t options, Pixel_t back) :
   TGedFrame(p, width, height, options | kVerticalFrame, back),
   fM(0),
-  fNextEvent(0),
+  fDumpEventInfo(0),
   fEventInfo(0)
 {
   // Constructor.
@@ -38,12 +42,13 @@ AliEveEventManagerEditor::AliEveEventManagerEditor(const TGWindow *p, Int_t widt
 
   {
     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));
   }
   {
@@ -74,11 +79,17 @@ void AliEveEventManagerEditor::SetModel(TObject* obj)
 /******************************************************************************/
 
 //______________________________________________________________________________
-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();
 }
 
 
@@ -93,18 +104,19 @@ void AliEveEventManagerEditor::DoNextEvent()
 
 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.
@@ -155,20 +167,18 @@ AliEveEventManagerWindow::AliEveEventManagerWindow() :
     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();
@@ -181,42 +191,42 @@ AliEveEventManagerWindow::~AliEveEventManagerWindow()
 {
   // 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());
 }
 
 //______________________________________________________________________________
@@ -224,10 +234,10 @@ void AliEveEventManagerWindow::DoRefresh()
 {
   // 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);
 }
 
 //______________________________________________________________________________
@@ -235,7 +245,7 @@ void AliEveEventManagerWindow::DoSetAutoLoad()
 {
   // Set the auto-load flag
 
-  gAliEveEvent->SetAutoLoad(fAutoLoad->IsOn());
+  fM->SetAutoLoad(fAutoLoad->IsOn());
   Update();
 }
 
@@ -244,24 +254,15 @@ void AliEveEventManagerWindow::DoSetAutoLoadTime()
 {
   // 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());
 }
 
 //______________________________________________________________________________
@@ -269,8 +270,8 @@ void AliEveEventManagerWindow::Update()
 {
   // 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);
@@ -279,17 +280,31 @@ void AliEveEventManagerWindow::Update()
   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();
 }
@@ -332,39 +347,3 @@ TGLabel* AliEveEventManagerWindow::MkLabel(TGCompositeFrame* p,
   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);
-  }
-}
-