]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Implemented embedded root canvas. The various diplays are contained
authorphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Feb 2007 16:57:05 +0000 (16:57 +0000)
committerphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Feb 2007 16:57:05 +0000 (16:57 +0000)
in a single TGMainframe with tabs to select type of information to be displayed.

HLT/PHOS/OnlineDisplay/AliHLTPHOSGetEventButton.cxx
HLT/PHOS/OnlineDisplay/AliHLTPHOSGetEventButton.h
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplay.cxx
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplay.h

index a6e8406e5e84fc9c435259e3c2f83b6f967a6cb1..403d3ee28cd97a7d9fb156a46217fa44fea487b3 100755 (executable)
@@ -30,17 +30,23 @@ AliHLTPHOSGetEventButton::AliHLTPHOSGetEventButton()
 }
 
 
-AliHLTPHOSGetEventButton::AliHLTPHOSGetEventButton(TGGroupFrame *gfPtr, char *name):TGTextButton(gfPtr, name)
-{
+//AliHLTPHOSGetEventButton::AliHLTPHOSGetEventButton(TGGroupFrame *gfPtr, char *name):TGTextButton(gfPtr, name)
+//{
+//  onlineDisplayPtr = (AliHLTPHOSOnlineDisplay *)gfPtr;
+//}
 
+AliHLTPHOSGetEventButton::AliHLTPHOSGetEventButton(TGCompositeFrame *gfPtr, char *name):TGTextButton(gfPtr, name)
+{
+  onlineDisplayPtr = (AliHLTPHOSOnlineDisplay *)gfPtr;
 
 }
 
-AliHLTPHOSGetEventButton::AliHLTPHOSGetEventButton(AliHLTPHOSOnlineDisplay *gfPtr, char *name):TGTextButton(gfPtr, name)
-{
-  onlineDisplayPtr = gfPtr;
+//AliHLTPHOSGetEventButton::AliHLTPHOSGetEventButton(AliHLTPHOSOnlineDisplay *gfPtr, char *name):TGTextButton(gfPtr, name)
+//{
+//  onlineDisplayPtr = gfPtr;
+//}
+
 
-}
 
 Bool_t
 AliHLTPHOSGetEventButton::HandleButton(Event_t* event)
index e1511b6a433a46bceaf97ef7e6221db0d0104b16..bb6b2254c6fbcfe3a41aba63314faab98b875f9d 100755 (executable)
@@ -5,6 +5,7 @@
 
 #include <TGButton.h>
 #include <TGFrame.h>
+
 class AliHLTPHOSOnlineDisplay;
 
 class AliHLTPHOSGetEventButton : public TGTextButton
@@ -12,7 +13,8 @@ class AliHLTPHOSGetEventButton : public TGTextButton
  public:
   AliHLTPHOSGetEventButton();
   AliHLTPHOSGetEventButton(TGGroupFrame *gfPtr, char *name);
-  AliHLTPHOSGetEventButton(AliHLTPHOSOnlineDisplay *gfPtr, char *name); 
+  AliHLTPHOSGetEventButton(TGCompositeFrame *gfPtr, char *name);
+  //  AliHLTPHOSGetEventButton(AliHLTPHOSOnlineDisplay *gfPtr, char *name); 
   virtual Bool_t HandleButton(Event_t* event);
  private:
   AliHLTPHOSOnlineDisplay* onlineDisplayPtr;
index b95e31b787a63b3831b70f03fff5c4ef7a5bf371..3b73e949c422abb23f9d8db4810a75767dfddfc2 100644 (file)
@@ -9,6 +9,7 @@
 #include "TH2.h"
 #include "TCanvas.h"
 #include "AliHLTPHOSCommonDefs.h"
+
 /**************************************************************************
  * This file is property of and copyright by the Experimental Nuclear     *
  * Physics Group, Dep. of Physics                                         *
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-
 #ifndef __CINT__
 # include <stdexcept>
 # include <TSystem.h>
 # include <TApplication.h>
+# include "TStyle.h" 
 #endif
 #include <iostream>
 
+
 #define MAX_BIN_VALUE 1023
 
 
@@ -48,9 +50,17 @@ char*                      AliHLTPHOSOnlineDisplay::fgDefaultDataType  = "RENELL
 int                        AliHLTPHOSOnlineDisplay::fgEvntCnt          = 0;           /**<Event Counter*/
 TCanvas*                   AliHLTPHOSOnlineDisplay::fgCanvasHGPtr      = 0;           /**<Canvas to plot legoplot for High gain channels*/ 
 TCanvas*                   AliHLTPHOSOnlineDisplay::fgCanvasLGPtr      = 0;           /**<Canvas to plot legoplot for Low gain channels*/ 
-Bool_t                     AliHLTPHOSOnlineDisplay::fgAccumulate       = kFALSE ;     /**<If set to kFALSE reset legoplot between event, kTRUE adds current energies to previous plot*/
-
-
+Bool_t                     AliHLTPHOSOnlineDisplay::fgAccumulate       = kTRUE ;     /**<If set to kFALSE reset legoplot between event, kTRUE adds current energies to previous plot*/
+Bool_t                     AliHLTPHOSOnlineDisplay::test[17920][2];
+TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fFrame1            = 0; 
+TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF1                = 0;         
+TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF2                = 0;
+TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF3                = 0;
+TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF4                = 0;
+TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF5                = 0;
+TGTab*                     AliHLTPHOSOnlineDisplay::fTab               = 0;
+TRootEmbeddedCanvas*       AliHLTPHOSOnlineDisplay::fEc1               = 0; 
+TRootEmbeddedCanvas*       AliHLTPHOSOnlineDisplay::fEc2               = 0; 
 using namespace std;
 
 
@@ -64,36 +74,17 @@ AliHLTPHOSOnlineDisplay::Instance(char *hostname, int port)
 
 AliHLTPHOSOnlineDisplay::AliHLTPHOSOnlineDisplay()
 {
-  legoPlotLGPtr  = 0;
-  legoPlotHGPtr  = 0;
-  MapWindow();
-  SetWindowName("online display");
-  MoveResize(100,100,1000,720);
-  fgEventButtPtr = new  AliHLTPHOSGetEventButton(this, "get event");
-  MapSubwindows();
-  //  fgHomerReaderPtr = new  HOMERReader("mixing", 42001);
-  fgHomerReaderPtr = new  HOMERReader("alice13", 42001);
-  std::vector<unsigned> blockList;
-  cout << "creating new PHOS Onlinedisplay" << endl;
-  int ret = 0;
-  Bool_t nextSwitch=kTRUE;
+  cout << "ERROR: You canot create Onlinedisplay without parameters" << endl;
+  cout << "Usage: AliHLTPHOSOnlineDisplay(char *hostname, int port)" << endl;
 }
 
 AliHLTPHOSOnlineDisplay::AliHLTPHOSOnlineDisplay(char *hostname, int port)
 {
+  cout << "creating new PHOS Onlinedisplay" << endl;
   legoPlotLGPtr  = 0;
   legoPlotHGPtr  = 0;
-  MapWindow();
-  SetWindowName("online display");
-  MoveResize(100,100,1000,720);
-  fgEventButtPtr = new  AliHLTPHOSGetEventButton(this, "get event");
-  MapSubwindows();
-  //  fgHomerReaderPtr = new  HOMERReader("mixing", 42001);
-  //  fgHomerReaderPtr = new  HOMERReader("alice13", 42001);
   fgHomerReaderPtr = new  HOMERReader(hostname, port);
-
-  std::vector<unsigned> blockList;
-  cout << "creating new PHOS Onlinedisplay" << endl;
+  InitDisplay();
   int ret = 0;
   Bool_t nextSwitch=kTRUE;
 }
@@ -104,14 +95,53 @@ AliHLTPHOSOnlineDisplay::~AliHLTPHOSOnlineDisplay()
 
 }
 
+void
+AliHLTPHOSOnlineDisplay::InitDisplay()
+{
+  gStyle->SetPalette(1);
+
+  fTab = new TGTab(this, 100, 100);
+  TGCompositeFrame *tf = fTab->AddTab("Tab 1");
+  fF1 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
+  TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
+                                        kLHintsExpandY, 2, 2, 15, 1);
+  fEc1 = new TRootEmbeddedCanvas("ec1", fF1, 100, 100);
+  fgCanvasHGPtr = fEc1->GetCanvas();
+  fF1->AddFrame(fEc1, fL1);
+  fEc2 = new TRootEmbeddedCanvas("ec2", fF1, 100, 100);
+  fgCanvasLGPtr = fEc2->GetCanvas();
+  fF1->AddFrame(fEc2, fL1);
+  tf->AddFrame(fF1, fL1);
+
+  tf = fTab->AddTab("Tab 2");
+  fF2 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
+  tf->AddFrame(fF2, fL1);
+
+  tf = fTab->AddTab("Tab 3");
+  fF3 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
+  tf->AddFrame(fF3, fL1);
+
+  tf = fTab->AddTab("Tab 4");
+  fF4 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
+  tf->AddFrame(fF4, fL1);
+
+  AddFrame(fTab, fL1);
+  fgEventButtPtr = new  AliHLTPHOSGetEventButton(fF1, "get event");
+  MapSubwindows();
+  Resize();
+  SetWindowName("online display");
+  MapWindow();
+  MoveResize(100,100,1200,1000);
+}
+
 
 int
 AliHLTPHOSOnlineDisplay::GetNextEvent()
 {
+  int whileCnt = 0;
+
   if(fgEvntCnt == 0)
     {
-      fgCanvasLGPtr    = new TCanvas();
-      fgCanvasHGPtr    = new TCanvas();
       legoPlotHGPtr   = new TH2S("Homer","HLT:HOMER: #pi^{0} 5 - 30Gev, High gain",  N_COLUMNS_MOD* N_MODULES , 0,  N_COLUMNS_MOD* N_MODULES ,  N_ROWS_MOD, 0,  N_ROWS_MOD);
       legoPlotHGPtr->SetMaximum( MAX_BIN_VALUE);
       legoPlotLGPtr   = new TH2S("Homer","HLT:HOMER: #pi^{0} 5 - 30Gev, Low gain",  N_COLUMNS_MOD* N_MODULES , 0,  N_COLUMNS_MOD* N_MODULES ,  N_ROWS_MOD, 0,  N_ROWS_MOD);
@@ -121,6 +151,7 @@ AliHLTPHOSOnlineDisplay::GetNextEvent()
 
   if(fgAccumulate == kFALSE)
     {
+      cout <<"restting legoplot" << endl;
       if(legoPlotHGPtr !=0)
        {
          legoPlotHGPtr->Reset(); 
@@ -137,7 +168,7 @@ AliHLTPHOSOnlineDisplay::GetNextEvent()
   unsigned long ndx;
   const AliHLTComponentBlockData* iter = NULL;   
   Bool_t nextSwitch=kTRUE; 
-  cout << "homerreader connectionstatus =" <<fgHomerReaderPtr->GetConnectionStatus() << endl;;
+  //  cout << "homerreader connectionstatus =" <<fgHomerReaderPtr->GetConnectionStatus() << endl;;
 
   ret =fgHomerReaderPtr->ReadNextEvent();  
       
@@ -150,8 +181,6 @@ AliHLTPHOSOnlineDisplay::GetNextEvent()
       
   unsigned long blockCnt = fgHomerReaderPtr->GetBlockCnt();
 
-  printf( "Event 0x%016LX (%Lu) with %lu blocks\n", (ULong64_t)fgHomerReaderPtr->GetEventID(), (ULong64_t)fgHomerReaderPtr->GetEventID(), blockCnt );
-      
   for ( unsigned long i = 0; i < blockCnt; i++ ) 
     {
       char tmp1[9], tmp2[5];
@@ -163,12 +192,10 @@ AliHLTPHOSOnlineDisplay::GetNextEvent()
       void *tmp21 = tmp2;
       ULong_t* tmp22 = (ULong_t*)tmp21;
       *tmp22 =fgHomerReaderPtr->GetBlockDataOrigin( i );
-      printf( "Block %lu length: %lu - type: %s - origin: %s\n",ndx,fgHomerReaderPtr->GetBlockDataLength( i ), tmp1, tmp2 );
-         
     }
   unsigned long blk = fgHomerReaderPtr->FindBlockNdx( fgDefaultDataType, fgDefaultDet, 0xFFFFFFFF );    
 
-
+  
   while ( blk != ~(unsigned long)0 ) 
     {
       AliHLTUInt16_t moduleID;
@@ -185,35 +212,45 @@ AliHLTPHOSOnlineDisplay::GetNextEvent()
          tmpRow = cellEnergiesPtr->fValidData[i].fRow;
          tmpCol = cellEnergiesPtr->fValidData[i].fCol;
          tmpGain =  cellEnergiesPtr->fValidData[i].fGain;
-         
+
          if(tmpGain == HIGH_GAIN)
            {
-               tmpBin = legoPlotHGPtr->GetBin(moduleID*N_COLUMNS_MOD + tmpCol +  N_COLUMNS_RCU*cellEnergiesPtr->fRcuZ,  tmpRow + N_ROWS_RCU*cellEnergiesPtr->fRcuX );
-               legoPlotHGPtr->AddBinContent(tmpBin, cellEnergiesPtr->fValidData[i].fEnergy);
-       
+             legoPlotHGPtr->Fill(moduleID*N_COLUMNS_MOD + tmpCol +  N_COLUMNS_RCU*cellEnergiesPtr->fRcuZ,  tmpRow + N_ROWS_RCU*cellEnergiesPtr->fRcuX, cellEnergiesPtr->fValidData[i].fEnergy);
            }
 
          else if(tmpGain == LOW_GAIN)
            {
-             tmpBin = legoPlotLGPtr->GetBin(moduleID*N_COLUMNS_MOD + tmpCol +  N_COLUMNS_RCU*cellEnergiesPtr->fRcuZ,  tmpRow + N_ROWS_RCU*cellEnergiesPtr->fRcuX );
-             legoPlotLGPtr->AddBinContent(tmpBin ,cellEnergiesPtr->fValidData[i].fEnergy);
+             legoPlotLGPtr->Fill(moduleID*N_COLUMNS_MOD + tmpCol +  N_COLUMNS_RCU*cellEnergiesPtr->fRcuZ, tmpRow + N_ROWS_RCU*cellEnergiesPtr->fRcuX,    cellEnergiesPtr->fValidData[i].fEnergy);
            }
 
        }
 
       blk = fgHomerReaderPtr->FindBlockNdx( fgDefaultDataType, fgDefaultDet, 0xFFFFFFFF, blk+1);  
+      
+      whileCnt ++;
+
     }
-  
+  UpdateDisplay();
+
+  fgEvntCnt ++;
+}
+
+
+void
+AliHLTPHOSOnlineDisplay::UpdateDisplay()
+{
   fgCanvasHGPtr->cd();
+  //  fEc1->cd();
   legoPlotHGPtr->Draw("LEGO2");
+  //  legoPlotHGPtr->Draw("COLZ");
+  legoPlotHGPtr->SetMarkerColor(4);
   fgCanvasHGPtr->Update();
   fgCanvasLGPtr->cd();
   legoPlotLGPtr->Draw("LEGO2");
+
+  //  legoPlotLGPtr->Draw("COLZ");
   fgCanvasLGPtr->Update();
 
-  fgEvntCnt ++;
 }
 
-
-
-
index 08b3f05c25bf6de03f29bafc80dcb0388208caf4..f9d14cc5c2b98e5deba48f677eb8b0936d230939 100644 (file)
 #include <TGFrame.h>
 #include "TH2.h"
 #include "AliHLTPHOSGetEventButton.h" 
-
+#include "TGTab.h"
+#include <TRootEmbeddedCanvas.h>
+#include "TGFrame.h"
 
 class TCanvas;
 class AliHLTPHOSRcuCellEnergyDataStruct;
 
-
 class AliHLTPHOSOnlineDisplay : public  TGMainFrame
 {
  public:
   AliHLTPHOSOnlineDisplay();
- AliHLTPHOSOnlineDisplay(char *hosname, int port);
 AliHLTPHOSOnlineDisplay(char *hosname, int port);
   ~AliHLTPHOSOnlineDisplay();
-  static int GetNextEvent();
-  //  static AliHLTPHOSOnlineDisplay* Instance();  
+  //  static int GetNextEvent();
+  int GetNextEvent();
+  void InitDisplay();
+  void UpdateDisplay();
   static AliHLTPHOSOnlineDisplay* Instance(char *hostname, int port);  
+
  private:
+  static TGCompositeFrame    *fFrame1, *fF1, *fF2, *fF3, *fF4, *fF5;
+  static TGTab               *fTab;
+  static TRootEmbeddedCanvas *fEc1, *fEc2, *fEc3, *fEc4, *fEc5, *fEc6;
   static AliHLTPHOSGetEventButton* fgEventButtPtr; 
   static AliHLTPHOSOnlineDisplay* fgInstancePtr;
   static HOMERReader* fgHomerReaderPtr;
@@ -38,6 +45,7 @@ class AliHLTPHOSOnlineDisplay : public  TGMainFrame
   static TCanvas *fgCanvasHGPtr;
   static TCanvas *fgCanvasLGPtr;
   static Bool_t fgAccumulate;
+  static Bool_t test[17920][2];
 };