AliEveEventManager
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Aug 2008 19:14:11 +0000 (19:14 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Aug 2008 19:14:11 +0000 (19:14 +0000)
------------------
Replicate GetEventInfo() into two methods
  TString GetEventInfoHorizontal();
  TString GetEventInfoVertical();
Return TString instead of const char*.

AliEveEventManagerWindow
------------------------
Add event-info text.

AliEveTrackCounterEditor
------------------------
Connect to new-event signal to update current event information.
Call AliEveEventManager directly, not via event_prev/next/goto macros.

binalieve.pkg  - link against libMONITOR.
-------------

anyscan_init.C - instantiate Mikolaj's QA viewer in a dedicated tab.
--------------

EVE/EveBase/AliEveEventManager.cxx
EVE/EveBase/AliEveEventManager.h
EVE/EveBase/AliEveEventManagerEditor.cxx
EVE/EveBase/AliEveEventManagerEditor.h
EVE/EveBase/AliEveTrackCounterEditor.cxx
EVE/EveBase/AliEveTrackCounterEditor.h
EVE/binalieve.pkg
EVE/macros/anyscan_init.C

index 06ad9cc..0a59457 100644 (file)
@@ -29,6 +29,7 @@
 #include <TTree.h>
 #include <TGeoManager.h>
 #include <TSystem.h>
+#include <TTimeStamp.h>
 
 //==============================================================================
 //==============================================================================
@@ -728,41 +729,93 @@ void AliEveEventManager::NewEventLoaded()
   Emit("NewEventLoaded()");
 }
 
-const char* AliEveEventManager::GetEventInfo() const
+//==============================================================================
+
+TString AliEveEventManager::GetEventInfoHorizontal() const
+{
+  // Dumps the event-header contents in vertical formatting.
+
+  TString rawInfo, esdInfo;
+
+  if (!fRawReader)
+  {
+    rawInfo = "No raw-data event info is available!\n";
+  }
+  else
+  {
+    const UInt_t* attr = fRawReader->GetAttributes();
+    TTimeStamp ts(fRawReader->GetTimestamp());
+    rawInfo.Form("RAW event info: Run#: %d  Event type: %d (%s)  Period: %x  Orbit: %x  BC: %x\n"
+                "Trigger: %llx\nDetectors: %x (%s)\nAttributes:%x-%x-%x  Timestamp: %s\n",
+                fRawReader->GetRunNumber(),fRawReader->GetType(),AliRawEventHeaderBase::GetTypeName(fRawReader->GetType()),
+                fRawReader->GetPeriod(),fRawReader->GetOrbitID(),fRawReader->GetBCID(),
+                fRawReader->GetClassMask(),
+                *fRawReader->GetDetectorPattern(),AliDAQ::ListOfTriggeredDetectors(*fRawReader->GetDetectorPattern()),
+                attr[0],attr[1],attr[2], ts.AsString("s"));
+  }
+
+  if (!fESD)
+  {
+    esdInfo = "No ESD event info is available!";
+  }
+  else
+  {
+    TString acttrclasses   = fESD->GetESDRun()->GetActiveTriggerClasses();
+    TString firedtrclasses = fESD->GetFiredTriggerClasses();
+    TTimeStamp ts(fESD->GetTimeStamp());
+    esdInfo.Form("ESD event info: Run#: %d  Event type: %d (%s)  Period: %x  Orbit: %x  BC: %x\n"
+                "Active trigger classes: %s\nTrigger: %llx (%s)\nEvent# in file: %d  Timestamp: %s",
+                fESD->GetRunNumber(),
+                fESD->GetEventType(),AliRawEventHeaderBase::GetTypeName(fESD->GetEventType()),
+                fESD->GetPeriodNumber(),fESD->GetOrbitNumber(),fESD->GetBunchCrossNumber(),
+                acttrclasses.Data(),
+                fESD->GetTriggerMask(),firedtrclasses.Data(),
+                fESD->GetEventNumberInFile(), ts.AsString("s"));
+  }
+
+  return rawInfo + esdInfo;
+}
+
+TString AliEveEventManager::GetEventInfoVertical() const
 {
-  // Dumps the event-header contents
+  // Dumps the event-header contents in vertical formatting.
 
-  static TString eventInfo;
+  TString rawInfo, esdInfo;
 
-  if (!fRawReader) {
-    eventInfo.Form("No raw-data event info is available!\n");
+  if (!fRawReader)
+  {
+    rawInfo = "No raw-data event info is available!\n";
   }
-  else {
+  else
+  {
     const UInt_t* attr = fRawReader->GetAttributes();
-    eventInfo.Form("Raw-data event info:\nRun#: %d\nEvent type: %d (%s)\nPeriod: %x\nOrbit: %x   BC: %x\nTrigger: %llx\nDetectors: %x (%s)\nAttributes:%x-%x-%x\nTimestamp: %x\n",
-                  fRawReader->GetRunNumber(),fRawReader->GetType(),AliRawEventHeaderBase::GetTypeName(fRawReader->GetType()),
-                  fRawReader->GetPeriod(),fRawReader->GetOrbitID(),fRawReader->GetBCID(),
-                  fRawReader->GetClassMask(),
-                  *fRawReader->GetDetectorPattern(),AliDAQ::ListOfTriggeredDetectors(*fRawReader->GetDetectorPattern()),
-                  attr[0],attr[1],attr[2],
-                  fRawReader->GetTimestamp());
-  }
-  if (!fESD) {
-    eventInfo.Append(Form("\nNo ESD event info is available!\n"));
-  }
-  else {
-    TString acttrclasses = fESD->GetESDRun()->GetActiveTriggerClasses();
+    rawInfo.Form("Raw-data event info:\nRun#: %d\nEvent type: %d (%s)\nPeriod: %x\nOrbit: %x   BC: %x\nTrigger: %llx\nDetectors: %x (%s)\nAttributes:%x-%x-%x\nTimestamp: %x\n",
+                fRawReader->GetRunNumber(),fRawReader->GetType(),AliRawEventHeaderBase::GetTypeName(fRawReader->GetType()),
+                fRawReader->GetPeriod(),fRawReader->GetOrbitID(),fRawReader->GetBCID(),
+                fRawReader->GetClassMask(),
+                *fRawReader->GetDetectorPattern(),AliDAQ::ListOfTriggeredDetectors(*fRawReader->GetDetectorPattern()),
+                attr[0],attr[1],attr[2],
+                fRawReader->GetTimestamp());
+  }
+
+  if (!fESD)
+  {
+    esdInfo = "No ESD event info is available!\n";
+  }
+  else
+  {
+    TString acttrclasses   = fESD->GetESDRun()->GetActiveTriggerClasses();
     TString firedtrclasses = fESD->GetFiredTriggerClasses();
-    eventInfo.Append(Form("\nESD event info:\nRun#: %d\nActive trigger classes: %s\nEvent type: %d (%s)\nPeriod: %x\nOrbit: %x   BC: %x\nTrigger: %llx (%s)\nEvent# in file:%d\nTimestamp: %x\n",
-                         fESD->GetRunNumber(),
-                         acttrclasses.Data(),
-                         fESD->GetEventType(),AliRawEventHeaderBase::GetTypeName(fESD->GetEventType()),
-                         fESD->GetPeriodNumber(),fESD->GetOrbitNumber(),fESD->GetBunchCrossNumber(),
-                         fESD->GetTriggerMask(),firedtrclasses.Data(),
-                         fESD->GetEventNumberInFile(),
-                         fESD->GetTimeStamp()));
+    esdInfo.Form("ESD event info:\nRun#: %d\nActive trigger classes: %s\nEvent type: %d (%s)\nPeriod: %x\nOrbit: %x   BC: %x\nTrigger: %llx (%s)\nEvent# in file:%d\nTimestamp: %x\n",
+                fESD->GetRunNumber(),
+                acttrclasses.Data(),
+                fESD->GetEventType(),AliRawEventHeaderBase::GetTypeName(fESD->GetEventType()),
+                fESD->GetPeriodNumber(),fESD->GetOrbitNumber(),fESD->GetBunchCrossNumber(),
+                fESD->GetTriggerMask(),firedtrclasses.Data(),
+                fESD->GetEventNumberInFile(),
+                fESD->GetTimeStamp());
   }
 
-  return eventInfo.Data();
+  return rawInfo + "\n" + esdInfo;
 }
   
index a51a4bf..dbfc5ce 100644 (file)
@@ -65,7 +65,8 @@ public:
   AliESDfriend* GetESDfriend()       const { return fESDfriend; }
   Bool_t        GetESDfriendExists() const { return fESDfriendExists; }
   virtual const Text_t* GetTitle()   const { return fPath.Data(); }
-  const char*   GetEventInfo() const;
+  TString       GetEventInfoHorizontal() const;
+  TString       GetEventInfoVertical()   const;
 
   static Bool_t HasRunLoader();
   static Bool_t HasESD();
index 799286b..c53fe53 100644 (file)
@@ -103,12 +103,10 @@ AliEveEventManagerEditor::AliEveEventManagerEditor(const TGWindow *p, Int_t widt
 
     AddFrame(f, new TGLayoutHints(kLHintsNormal | kLHintsExpandX));
   }
-
 }
 
 /******************************************************************************/
 
-//______________________________________________________________________________
 void AliEveEventManagerEditor::SetModel(TObject* obj)
 {
   // Set model object.
@@ -122,7 +120,7 @@ void AliEveEventManagerEditor::SetModel(TObject* obj)
 
   fPrevEvent->SetEnabled(!fM->GetIsOnline()); 
 
-  fEventInfo->LoadBuffer(fM->GetEventInfo());
+  fEventInfo->LoadBuffer(fM->GetEventInfoVertical());
 }
 
 /******************************************************************************/
@@ -192,13 +190,14 @@ void AliEveEventManagerEditor::DoRefresh()
 ClassImp(AliEveEventManagerWindow)
 
 AliEveEventManagerWindow::AliEveEventManagerWindow() :
-  TGMainFrame(0, 400, 100, kVerticalFrame),
+  TGMainFrame(gClient->GetRoot(), 400, 100, kVerticalFrame),
   fFirstEvent(0),
   fPrevEvent(0),
   fNextEvent(0),
   fLastEvent(0),
   fEventId  (0),
-  fInfoLabel(0)
+  fInfoLabel(0),
+  fEventInfo(0)
 {
   // Constructor.
 
@@ -242,9 +241,15 @@ AliEveEventManagerWindow::AliEveEventManagerWindow() :
     AddFrame(f, new TGLayoutHints(kLHintsExpandX, 0,0,2,2));
   }
 
+  {
+    TGHorizontalFrame* f = new TGHorizontalFrame(this);
+    fEventInfo = new TGTextView(f, 800, 600);
+    f->AddFrame(fEventInfo, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY));
+    AddFrame(f, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0,0,2,2));
+  }
+
   gAliEveEvent->Connect("NewEventLoaded()",
                         "AliEveEventManagerWindow", this, "Update()");
-  Update();
 
   SetCleanup(kDeepCleanup);
   Layout();
@@ -302,5 +307,8 @@ void AliEveEventManagerWindow::Update()
 
   fEventId->SetNumber(gAliEveEvent->GetEventId());
   fInfoLabel->SetText(Form("/ %d", gAliEveEvent->GetMaxEventId()));
+
+  fEventInfo->LoadBuffer(gAliEveEvent->GetEventInfoHorizontal());
+
   Layout();
 }
index 9100855..7cdbd5f 100644 (file)
@@ -86,6 +86,8 @@ protected:
    TGNumberEntry        *fEventId;
    TGLabel              *fInfoLabel;
 
+   TGTextView           *fEventInfo; // Text box with event info
+
 private:
    AliEveEventManagerWindow(const AliEveEventManagerWindow&);            // Not implemented
    AliEveEventManagerWindow& operator=(const AliEveEventManagerWindow&); // Not implemented
index 61fb1e3..1106dab 100644 (file)
@@ -9,7 +9,9 @@
 
 #include "AliEveTrackCounterEditor.h"
 #include "AliEveTrackCounter.h"
+#include "AliEveEventManager.h"
 
+#include "TGedEditor.h"
 #include "TVirtualPad.h"
 #include "TColor.h"
 
@@ -139,10 +141,27 @@ AliEveTrackCounterEditor::AliEveTrackCounterEditor(const TGWindow *p, Int_t widt
       AddFrame(f, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
    }
 
+  gAliEveEvent->Connect("NewEventLoaded()",
+                        "AliEveTrackCounterEditor", this, "UpdateModel()");
+}
+
+AliEveTrackCounterEditor::~AliEveTrackCounterEditor()
+{
+  // Destructor.
+
+  gAliEveEvent->Disconnect("NewEventLoaded()", this);
 }
 
 /******************************************************************************/
 
+void AliEveTrackCounterEditor::UpdateModel()
+{
+  if (fGedEditor && fM && fGedEditor->GetModel() == fM->GetEditorObject())
+  {
+    SetModel(fM->GetEditorObject());
+  }
+}
+
 //______________________________________________________________________________
 void AliEveTrackCounterEditor::SetModel(TObject* obj)
 {
@@ -162,8 +181,7 @@ void AliEveTrackCounterEditor::DoPrev()
 {
    // Slot for Prev.
 
-   TEveUtil::Macro("event_prev.C");
-   gEve->EditElement(fM);
+   gAliEveEvent->PrevEvent();
 }
 
 //______________________________________________________________________________
@@ -171,18 +189,14 @@ void AliEveTrackCounterEditor::DoNext()
 {
    // Slot for Next.
 
-   TEveUtil::Macro("event_next.C");
-   gEve->EditElement(fM);
+   gAliEveEvent->NextEvent();
 }
 
 //______________________________________________________________________________
 void AliEveTrackCounterEditor::DoSetEvent()
 {
    // Slot for SetEvent.
-
-   TEveUtil::LoadMacro("event_goto.C");
-   gROOT->ProcessLine(Form("event_goto(%d);", (Int_t) fEventId->GetNumber()));
-   gEve->EditElement(fM);
+   gAliEveEvent->GotoEvent((Int_t) fEventId->GetNumber());
 }
 
 /******************************************************************************/
index 9ea84ae..3cdfeeb 100644 (file)
@@ -27,7 +27,9 @@ class AliEveTrackCounterEditor : public TGedFrame
 public:
    AliEveTrackCounterEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
                             UInt_t options = kChildFrame, Pixel_t back=GetDefaultFrameBackground());
-   virtual ~AliEveTrackCounterEditor() {}
+   virtual ~AliEveTrackCounterEditor();
+
+   void UpdateModel();
 
    virtual void SetModel(TObject* obj);
 
index f272ffb..c074311 100644 (file)
@@ -19,7 +19,7 @@ ELIBS    := EveBase EveDet EveHLT \
   HMPIDbase HMPIDrec HMPIDsim \
   ZDCbase ZDCsim ZDCrec VZERObase VZEROsim VZEROrec \
   EMCALbase EMCALsim EMCALrec BCM \
-  STRUCT T0base T0sim T0rec EVGEN STEERBase ESD AOD CDB STEER \
+  STRUCT T0base T0sim T0rec EVGEN STEERBase ESD AOD CDB STEER MONITOR \
   THijing \
   hijing THbtp TEPEMGEN \
   FASTSIM microcern \
index 3867a4f..bacf87c 100644 (file)
@@ -93,6 +93,10 @@ void anyscan_init()
   browser->StopEmbedding("DataSelection");
   exewin->PopulateMacros();
 
+  browser->StartEmbedding();
+  new AliQAHistViewer(gClient->GetRoot(), 600, 400, kTRUE);
+  browser->StopEmbedding("QA histograms");
+
   browser->GetTabRight()->SetTab(1);
 
   browser->StartEmbedding(TRootBrowser::kBottom);