]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Improved Online display, The Handle event function
authorphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Oct 2007 16:22:18 +0000 (16:22 +0000)
committerphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Oct 2007 16:22:18 +0000 (16:22 +0000)
of TH2D is overwritten to have the possibility to
click in the display to show raw data

12 files changed:
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplay.cxx
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplay.h
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayCalibTab.cxx
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayCalibTab.h
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayEventTab.cxx
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayEventTab.h
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayTH2D.cxx [new file with mode: 0644]
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayTH2D.h [new file with mode: 0644]
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayTab.cxx
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayTab.h
HLT/PHOS/OnlineDisplay/Makefile
HLT/PHOS/OnlineDisplay/class.sh [new file with mode: 0755]

index 03f6bdd94b2fcf515556d998f234e787aec7709c..837fc10f594fe7396b3e9c42b714e6e5a3425ba1 100644 (file)
@@ -23,6 +23,7 @@
 # include "TStyle.h" 
 #endif
 
+
 #include  "AliHLTPHOSOnlineDisplay.h"
 #include  "AliHLTDataTypes.h"
 #include  "AliHLTPHOSRcuCellEnergyDataStruct.h"
@@ -69,13 +70,13 @@ AliHLTPHOSOnlineDisplay::Instance(int argc, char** argv)
 }
 
 
-AliHLTPHOSOnlineDisplay::AliHLTPHOSOnlineDisplay()
+AliHLTPHOSOnlineDisplay::AliHLTPHOSOnlineDisplay() : AliHLTPHOSBase()
 {
   cout << "ERROR ! level: FATAL, you cannot invoke the onlinedisplay without arguments" << endl;
 }
 
 
-AliHLTPHOSOnlineDisplay::AliHLTPHOSOnlineDisplay(int argc, char** argv)
+AliHLTPHOSOnlineDisplay::AliHLTPHOSOnlineDisplay(int argc, char** argv) : AliHLTPHOSBase()
 {
   ScanArguments(argc, argv);
   char **tmp;
@@ -107,7 +108,7 @@ AliHLTPHOSOnlineDisplay::InitDisplay()
   fTab = new TGTab(this, 100, 100);
   TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
                                         kLHintsExpandY, 2, 2, 15, 1);
-  fgEventTabPtr = new  AliHLTPHOSOnlineDisplayEventTab(fTab, fgHomerReaderPtr, fgHomerReadersPtr, fgNHosts);
+  fgEventTabPtr = new  AliHLTPHOSOnlineDisplayEventTab(this, fTab, fgHomerReaderPtr, fgHomerReadersPtr, fgNHosts);
   fgCalibTabPtr = new  AliHLTPHOSOnlineDisplayCalibTab(fTab, fgHomerReaderPtr, fgHomerReadersPtr, fgNHosts);
   fgRawTabPtr   = new  AliHLTPHOSOnlineDisplayRawTab(fTab, fgHomerReaderPtr, fgHomerReadersPtr, fgNHosts);
 
@@ -116,12 +117,17 @@ AliHLTPHOSOnlineDisplay::InitDisplay()
   Resize();
   SetWindowName("PHOS HLT OnlineDisplay");
   MapWindow();
-  MoveResize(100,100,1200,1000);
+  MoveResize(100,100, 800,1000);
 
   fgRawMenuPtr = new  AliHLTPHOSOnlineDisplayRawDataMenu(this);
 
 }
 
+void
+AliHLTPHOSOnlineDisplay::GetRawData(TH1D *histogramPtr, int x, int z, int gain)
+{
+  fgEventTabPtr->GetRawData(histogramPtr, x, z, gain); 
+}
 
 void
 AliHLTPHOSOnlineDisplay::ShowRawData()
@@ -179,26 +185,11 @@ AliHLTPHOSOnlineDisplay::ShowRawData()
              cout << "tmpRcuX =" << tmpRcuX <<endl;
              cout << "tmpZ =" << tmpZ <<endl;
              cout << "tmpX =" << tmpX <<endl;
-             fgRawDataPlotsPtr[cnt] = new TH1D(tmpName, tmpName, 70, 0, 79);
+             fgRawDataPlotsPtr[cnt] = new TH1D(tmpName, tmpName, fNTotalSamples, 0, fNTotalSamples -1);
              fgRawDataPlotsPtr[cnt]->SetFillColor(1);
              fgRawDataPlotsPtr[cnt]->SetMaximum(1023); 
-
-             fgRawDataPlotsPtr[cnt]->SetMaximum(100); 
-
              fgRawDataPlotsPtr[cnt]->Reset();
-
-             /*
-             for(int i= 0; i< N_SAMPLES; i ++)
-               {
-                 fgEventTabPtr->GetRawData(fgRawDataPlotsPtr[cnt], tmpModID, tmpRcuX, tmpRcuZ, tmpX, tmpZ, HIGH_GAIN); 
-               }
-             */
-
-             for(int i= 0; i< N_SAMPLES; i ++)
-               {
-                 fgEventTabPtr->GetRawData(fgRawDataPlotsPtr[cnt], tmpModID, tmpRcuX, tmpRcuZ, tmpX, tmpZ, tmpGain); 
-               }
-
+             fgEventTabPtr->GetRawData(fgRawDataPlotsPtr[cnt], tmpModID, tmpRcuX, tmpRcuZ, tmpX, tmpZ, tmpGain); 
              fgRawDataCanvas->cd(cnt);   
              cout <<  "fgRawDataCanvas->cd("<< cnt <<") = "  <<  fgRawDataCanvas->cd(cnt) << endl;
              fgRawDataPlotsPtr[cnt]->Draw();
index 28facd0bcd6915588f32bbc7af7607b869a9369f..346ce4ffc6fccdb72df8ab8507c3a362d3dc6f54 100644 (file)
 #include <TRootEmbeddedCanvas.h>
 #include <TCanvas.h>
 #include "TGFrame.h"
-//#include "AliHLTPHOSCommonDefs.h";
-//#include "AliHLTPHOSConstants.h"
 #include "AliHLTPHOSRcuChannelDataStruct.h"
 #include "AliHLTPHOSOnlineDisplayEventTab.h"
 #include "AliHLTPHOSOnlineDisplayCalibTab.h"
 #include "AliHLTPHOSOnlineDisplayRawTab.h"
 #include "AliHLTPHOSOnlineDisplayRawDataMenu.h"
-
-
-//#include "AliHLTPHOSCommonDefs.h"
-
 #include "AliHLTPHOSConstants.h"
-using namespace PhosHLTConst;
+#include "AliHLTPHOSOnlineDisplayEventTab.h"
+#include "AliHLTPHOSBase.h"
 
-#define N_SAMPLES 70
+using namespace PhosHLTConst;
 
+//#define N_SAMPLES 70
+//#define N_SAMPLES 140
 //#define MAX_HISTOGRAMS 25
 #define MAX_HISTOGRAMS 320
 
 class TCanvas;
 class AliHLTPHOSRcuCellEnergyDataStruct;
 
-class AliHLTPHOSOnlineDisplay : public  TGMainFrame
+
+class AliHLTPHOSOnlineDisplay : public  TGMainFrame, public AliHLTPHOSBase
 {
  public:
   ~AliHLTPHOSOnlineDisplay();
@@ -51,14 +49,19 @@ class AliHLTPHOSOnlineDisplay : public  TGMainFrame
 
   //  static void ShowRawData();
 
+
   void ShowRawData();
+  void GetRawData(TH1D *histogramPtr, int x, int y, int gain);
 
   static AliHLTPHOSOnlineDisplay* Instance(int argc, char** argv);  
+
+  static AliHLTPHOSOnlineDisplayEventTab  *fgEventTabPtr;
+
  private:
   AliHLTPHOSOnlineDisplay();
   AliHLTPHOSOnlineDisplay(int argc, char** argv);
   static AliHLTPHOSOnlineDisplayRawDataMenu *fgRawMenuPtr;
-  static AliHLTPHOSOnlineDisplayEventTab  *fgEventTabPtr;
+  //  static AliHLTPHOSOnlineDisplayEventTab  *fgEventTabPtr;
   static AliHLTPHOSOnlineDisplayCalibTab  *fgCalibTabPtr;
   static AliHLTPHOSOnlineDisplayRawTab    *fgRawTabPtr;
   static TGTab               *fTab;
@@ -72,8 +75,6 @@ class AliHLTPHOSOnlineDisplay : public  TGMainFrame
   static Bool_t fgAccumulate;
   static Bool_t fgSyncronize;
 
-
-
   TCanvas  *fgRawDataCanvas;
   TH1D     *fgRawDataPlotsPtr[MAX_HISTOGRAMS];
 
index 744878823f4f16b2f637ea5919fe51577f557aa8..944d097630487e0c4b5af59bf73c05f9448e06cb 100644 (file)
@@ -5,6 +5,8 @@
 
 using namespace std;
 
+
+
 AliHLTPHOSOnlineDisplayCalibTab::AliHLTPHOSOnlineDisplayCalibTab()
 {
   cout << "AliHLTPHOSOnlineDisplayCalibTab:ERROR: You cannot create a onlinedisplay Tab without arguments" << endl;
@@ -35,7 +37,6 @@ AliHLTPHOSOnlineDisplayCalibTab::~AliHLTPHOSOnlineDisplayCalibTab()
 
 }
 
-
 void
 AliHLTPHOSOnlineDisplayCalibTab::ReadBlockData(HOMERReader *homerReaderPtr)
 {
@@ -51,7 +52,9 @@ AliHLTPHOSOnlineDisplayCalibTab::ReadBlockData(HOMERReader *homerReaderPtr)
       
       int tmpx;
       int tmpz;
-      
+      int tmpdcsx;
+      int tmpdcsz;
+
       for(int x = 0; x < N_XCOLUMNS_RCU; x ++)
        for(int z = 0; z <N_ZROWS_RCU; z ++)
          {
@@ -60,27 +63,31 @@ AliHLTPHOSOnlineDisplayCalibTab::ReadBlockData(HOMERReader *homerReaderPtr)
                {
                  tmpx = moduleID*N_XCOLUMNS_MOD + (accCellEnergiesPtr->fRcuX)*N_XCOLUMNS_RCU + x;
                  tmpz = (accCellEnergiesPtr->fRcuZ)*N_ZROWS_RCU +z;
-                 
-                 fgCalibHistPtr[gain]->Fill(tmpx, tmpz, accCellEnergiesPtr->fAccumulatedEnergies[x][z][gain] );
-
-                 //////////////////////////////////////////////////////
-                 //Added for debugging purposes, want a pure dead map//
-                 //////////////////////////////////////////////////////
-                 
-                 if(accCellEnergiesPtr->fHits[x][z][gain] > 0)
-                   {
-                     fgHitsHistPtr[gain]->SetBinContent(x, z, 10);
-                   }
-                 
-                 ////////////////////////////////////////////////////
 
+                 tmpdcsx =  (accCellEnergiesPtr->fRcuX)*N_XCOLUMNS_RCU + x  ;
+                 tmpdcsz =  (accCellEnergiesPtr->fRcuZ)*N_ZROWS_RCU +z;  
 
+                 //      if(tmpx < 140 && (tmpz < 6 || tmpz > 50)  )
+                 //      if(tmpx < 132 && (tmpz  > 52)  )
+                 //              if(tmpx < 132 && (tmpz  < 4)  )    
+                 //                {
+                 //                  cout << " tmpx = "<< tmpx <<  "   tmpz =" << tmpz << "   x = "<< x << "   z = "<<  z << "  
+                 // Energy ="<< accCellEnergiesPtr->fAccumulatedEnergies[x][z][gain] <<endl;
+                 //                }
 
-                 //fgHitsHistPtr[gain]->Fill(tmpx, tmpz, accCellEnergiesPtr->fHits[x][z][gain] );
                  
-                 if(fgHitsHistPtr[gain]->GetBinContent(tmpx, tmpz) > 0)
+                 fgHitsHistPtr[gain]->Fill(tmpx , tmpz +1, accCellEnergiesPtr->fHits[x][z][gain] );
+                 fgCalibHistPtr[gain]->SetBinContent(tmpx +1, tmpz +1, accCellEnergiesPtr->fAccumulatedEnergies[x][z][gain] );
+                 fgHitsHistPtr[gain]->SetBinContent(tmpx +1, tmpz +1, accCellEnergiesPtr->fHits[x][z][gain] );
+                 fDeadCannelMapPtr[gain]->SetBinContent(tmpx +1, tmpz +1, accCellEnergiesPtr->fDeadChannelMap[x][z][gain]);
+                 
+                 
+                 //              fgDCSViewPtr[gain]->SetBinContent(tmpdcsz +1, tmpdcsx +1, accCellEnergiesPtr->fAccumulatedEnergies[x][z][gain]);
+                 fgDCSViewPtr[gain]->SetBinContent(tmpdcsz +1, tmpdcsx +1, accCellEnergiesPtr->fAccumulatedEnergies[x][z][gain]);
+
+                 if(fgHitsHistPtr[gain]->GetBinContent(tmpx + 1, tmpz +1) > 0)
                    {
-                     fgAveragePtr[gain]->SetBinContent(tmpx, tmpz, fgCalibHistPtr[gain]->GetBinContent(tmpx, tmpz)/fgHitsHistPtr[gain]->GetBinContent(tmpx, tmpz));
+                     fgAveragePtr[gain]->SetBinContent(tmpx + 1, tmpz +1, fgCalibHistPtr[gain]->GetBinContent(tmpx +1, tmpz +1)/fgHitsHistPtr[gain]->GetBinContent(tmpx +1, tmpz +1));
                    }
                }
            }
@@ -111,20 +118,24 @@ AliHLTPHOSOnlineDisplayCalibTab::InitDisplay(TGTab *tabPtr)
 {
   char tmpHistoName[256]; 
 
-  fgLegoPlotHGPtr = new TH2D("Homer","HLT: #pi^{0} 5 - 30Gev HG, High gain",  
+  fgLegoPlotHGPtr = new TH2D("Homer","HLT: #pi^{0} 5 - 30Gev HG, High gain",  
                             N_XCOLUMNS_MOD*N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,  
                              N_ZROWS_MOD,               0, N_ZROWS_MOD);
   fgLegoPlotHGPtr->SetMaximum( MAX_BIN_VALUE);
   fgLegoPlotHGPtr->Reset();
+  //  fgLegoPlotHGPtr->GetXaxis()->SetRange(128, 128 + 64);
 
-  fgLegoPlotLGPtr = new TH2D("Homer","HLT: #pi^{0} 5 - 30Gev LG, Low gain",  
+
+  fgLegoPlotLGPtr = new TH2D("b Homer","HLT: #pi^{0} 5 - 30Gev LG, Low gain",  
                             N_XCOLUMNS_MOD* N_MODULES , 0, N_XCOLUMNS_MOD* N_MODULES,  
                             N_ZROWS_MOD,          0, N_ZROWS_MOD);
   fgLegoPlotLGPtr->SetMaximum( MAX_BIN_VALUE); 
   fgLegoPlotLGPtr->Reset();
+  //  fgLegoPlotLGPtr->GetXaxis()->SetRange(128, 128 + 64);
+
 
 
- TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
 TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
                                         kLHintsExpandY, 2, 2, 15, 1);
 
 
@@ -135,27 +146,47 @@ AliHLTPHOSOnlineDisplayCalibTab::InitDisplay(TGTab *tabPtr)
                                      N_XCOLUMNS_MOD*N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES , 
                                      N_ZROWS_MOD,         0, N_ZROWS_MOD);
       fgCalibHistPtr[gain]->Reset(); 
+      fgCalibHistPtr[gain]->GetXaxis()->SetRange(X_RANGE_START, X_RANGE_END);
+      
       
       sprintf(tmpHistoName, "TAB b Calibration Data HLT: #pi^{0} 5 - 30GeV gain %d", gain);
       fgHitsHistPtr[gain] = new TH2I(tmpHistoName, tmpHistoName,  
                                    N_XCOLUMNS_MOD* N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,  
                                    N_ZROWS_MOD,          0, N_ZROWS_MOD);
-      fgHitsHistPtr[gain]->SetMaximum( MAX_BIN_VALUE); 
+      //      fgHitsHistPtr[gain]->SetMaximum( MAX_BIN_VALUE); 
       fgHitsHistPtr[gain]->Reset();
-      
+      fgHitsHistPtr[gain]->GetXaxis()->SetRange(X_RANGE_START, X_RANGE_END);
+     
       sprintf(tmpHistoName, "TAB c Average Data HLT: #pi^{0} 5 - 30GeV gain %d", gain);
       fgAveragePtr[gain] = new TH2D(tmpHistoName,tmpHistoName,  
                                    N_XCOLUMNS_MOD* N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,  
                                    N_ZROWS_MOD,          0, N_ZROWS_MOD);
-      fgAveragePtr[gain]->SetMaximum( MAX_BIN_VALUE); 
+      //    fgAveragePtr[gain]->SetMaximum( MAX_BIN_VALUE); 
       fgAveragePtr[gain]->Reset();
+      fgAveragePtr[gain]->GetXaxis()->SetRange(X_RANGE_START, X_RANGE_END);
+
+      sprintf(tmpHistoName, "Dead Channel Map gain%d", gain);
+      fDeadCannelMapPtr[gain] = new TH2D(tmpHistoName,tmpHistoName,  
+                                   N_XCOLUMNS_MOD* N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,  
+                                   N_ZROWS_MOD,          0, N_ZROWS_MOD);
+      //    fDeadCannelMapPtr[gain]->SetMaximum( MAX_BIN_VALUE); 
+      fDeadCannelMapPtr[gain]->Reset();
+      fDeadCannelMapPtr[gain]->GetXaxis()->SetRange(X_RANGE_START, X_RANGE_END);
+
+
+      
+      sprintf(tmpHistoName, "DCS view gain %d", gain);
+      fgDCSViewPtr[gain] = new TH2D(tmpHistoName, tmpHistoName, 
+                                   N_ZROWS_MOD, 0, N_ZROWS_MOD,  
+                                   N_XCOLUMNS_MOD, 0, N_XCOLUMNS_MOD);
     }
 
 
    TGCompositeFrame  *tf = tabPtr->AddTab("Calibration data zzz");
      
 
-          fSubTab2 = new TGTab(tf, 100, 100);
+           fSubTab2 = new TGTab(tf, 100, 100);
 
           TGCompositeFrame        *tf2 = fSubTab2->AddTab("Accumulated energy");   
           fSubF4 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
@@ -192,6 +223,25 @@ AliHLTPHOSOnlineDisplayCalibTab::InitDisplay(TGTab *tabPtr)
           fEc14 = new TRootEmbeddedCanvas("ec14", fSubF7, 100, 100);
           fSubF7->AddFrame(fEc14, fL1);
 
+          tf2 = fSubTab2->AddTab("Dead Channel Map"); 
+          fSubF8 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
+          tf2->AddFrame(fSubF8, fL1);
+          fEc15 = new TRootEmbeddedCanvas("ec15", fSubF8, 100, 100);
+          fSubF8->AddFrame(fEc15, fL1);
+          fEc16 = new TRootEmbeddedCanvas("ec16", fSubF8, 100, 100);
+          fSubF8->AddFrame(fEc16, fL1);           
+         
+          tf2 = fSubTab2->AddTab("SURF (DCS view)"); 
+          fSubF9 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
+          tf2->AddFrame(fSubF9, fL1);
+          
+          fEc17 = new TRootEmbeddedCanvas("ec17", fSubF9, 100, 100);
+          fSubF9->AddFrame(fEc17, fL1);
+          fEc18 = new TRootEmbeddedCanvas("ec18", fSubF9, 100, 100);
+          fSubF9->AddFrame(fEc18, fL1);
+          
+
+
           fSubTab2->Resize();
           tf->AddFrame(fSubTab2, fL1);
 
@@ -242,4 +292,26 @@ AliHLTPHOSOnlineDisplayCalibTab::UpdateDisplay()
   fgAveragePtr[LOW_GAIN]->Draw("COLZ");
   fgCanvasHGPtr->Update();
 
+  fgCanvasLGPtr = fEc15->GetCanvas();
+  fgCanvasLGPtr->cd();
+  fDeadCannelMapPtr[HIGH_GAIN]->Draw("COL");
+  fgCanvasLGPtr->Update();
+
+  fgCanvasHGPtr = fEc16->GetCanvas();
+  fgCanvasHGPtr->cd();
+  fDeadCannelMapPtr[LOW_GAIN]->Draw("COL");
+  fgCanvasHGPtr->Update();
+
+
+  fgCanvasLGPtr = fEc17->GetCanvas();
+  fgCanvasLGPtr->cd();
+  fgDCSViewPtr[HIGH_GAIN]->Draw("COLZ");
+  fgCanvasLGPtr->Update();
+
+  fgCanvasHGPtr = fEc18->GetCanvas();
+  fgCanvasHGPtr->cd();
+  fgDCSViewPtr[LOW_GAIN]->Draw("COLZ");
+  fgCanvasHGPtr->Update();
+  
+
 }
index 1178f04d063652304ecea15cd56c2971f703f956..b76b98e05380fe84de57a4ce67724b9a5d4fbe93 100644 (file)
@@ -30,10 +30,13 @@ class AliHLTPHOSOnlineDisplayCalibTab : public AliHLTPHOSOnlineDisplayTab
   TH2D *fgCalibHistPtr[N_GAINS];
   TH2I *fgHitsHistPtr[N_GAINS]; 
   TH2D *fgAveragePtr[N_GAINS];
+  TH2D *fgDCSViewPtr[N_GAINS];
+       
+  TH2D *fDeadCannelMapPtr[N_GAINS];
   TGTab               *fTab;
-  TRootEmbeddedCanvas *fEc7, *fEc8, *fEc9, *fEc10, *fEc11, *fEc12, *fEc13, *fEc14;
+  TRootEmbeddedCanvas *fEc7, *fEc8, *fEc9, *fEc10, *fEc11, *fEc12, *fEc13, *fEc14, *fEc15, *fEc16, *fEc17, *fEc18;
   TGTab               *fSubTab2;
-  TGCompositeFrame    *fSubF4, *fSubF5, *fSubF6, *fSubF7,*fSubF8;
+  TGCompositeFrame    *fSubF4, *fSubF5, *fSubF6, *fSubF7,*fSubF8, *fSubF9;
   TCanvas *fgCanvasHGPtr;
   TCanvas *fgCanvasLGPtr;
   TH2D *fgLegoPlotLGPtr;
index bb4e4c6bc06c54ce53f7ee68821e5e287c6a12e9..4614572fce683e4d2e80284388450cb64e8b017e 100644 (file)
@@ -8,8 +8,9 @@
 #include "HOMERReader.h"
 #include "HOMERWriter.h"
 #include "AliHLTPHOSRcuCellEnergyDataStruct.h"
-//#include "AliHLTPHOSRcuCellEnergyDebugDataStruct.h"
-#include   "AliHLTPHOSRcuCellEnergyDebugDataStruct.h" 
+//#include "AliHLTPHOSRcuCellEnergyDataStruct.h"
+#include   "AliHLTPHOSRcuCellEnergyDataStruct.h" 
+#include "AliHLTPHOSOnlineDisplay.h"
 
 using namespace std;
 
@@ -20,8 +21,11 @@ AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab()
 }
 
 
-AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab(TGTab  *tabPtr, HOMERReader *homerSyncPtr, HOMERReader *homerPtrs[MAX_HOSTS], int nHosts)
+AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab(AliHLTPHOSOnlineDisplay *onlineDisplayPtr, TGTab  *tabPtr, 
+                                                                HOMERReader *homerSyncPtr, HOMERReader *homerPtrs[MAX_HOSTS], int nHosts) :  AliHLTPHOSOnlineDisplayTab()
 {
+  fOnlineDisplayPtr =  onlineDisplayPtr;
+
   for(int mod =0; mod <N_MODULES; mod ++)
     {
       //      for(int rcu = 0; rcu < N_RCUS_PER_MODULE; rcu ++)
@@ -35,8 +39,7 @@ AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab(TGTab  *tabPtr,
                    {
                      for(int gain = 0; gain < N_GAINS; gain ++ )
                        {
-                         //     fChannelData[mod][rcu][z][x][gain] = 0;
-                         fChannelData[mod][rcu_z_coord][rcu_x_coord][x][z][gain] = new int[N_SAMPLES];
+                         fChannelData[mod][rcu_z_coord][rcu_x_coord][x][z][gain] = new int[fNTotalSamples];
                        }
                    }
                }          
@@ -77,13 +80,29 @@ AliHLTPHOSOnlineDisplayEventTab::~AliHLTPHOSOnlineDisplayEventTab()
 void 
 AliHLTPHOSOnlineDisplayEventTab::GetRawData(TH1D *histPtr, int mod, int rcuX, int rcuZ, int x, int z, int gain)
 {
-  for(int i=0;  i < N_SAMPLES ; i++)
+  for(int i=0;  i < fNTotalSamples ; i++)
     {
       histPtr->SetBinContent(i, fChannelData[mod][rcuX][rcuZ][x][z][gain][i]);
     }
 }
 
 
+void 
+AliHLTPHOSOnlineDisplayEventTab::GetRawData(TH1D *histPtr, int x, int z, int gain)
+{
+  int tmpModID = x/64;
+  int tmpRcuZ = z/32;
+  int tmpRcuX = (x%64)/32;
+  int tmpZ = z%28;
+  int tmpX = x%32;
+
+  for(int i=0;  i < fNTotalSamples ; i++)
+    {
+      histPtr->SetBinContent(i, fChannelData[tmpModID][tmpRcuX][tmpRcuZ][tmpX][tmpZ][gain][i]);
+    }
+}
+
+
 int
 AliHLTPHOSOnlineDisplayEventTab::GetNextEvent()
 {
@@ -106,7 +125,7 @@ AliHLTPHOSOnlineDisplayEventTab::ReadBlockData(HOMERReader *homeReaderPtr)
     {
       Int_t moduleID;
       //      const AliHLTPHOSRcuCellEnergyDataStruct* cellEnergiesPtr = (const AliHLTPHOSRcuCellEnergyDataStruct*)homeReaderPtr->GetBlockData( blk );  
-      const AliHLTPHOSRcuCellEnergyDebugDataStruct* cellEnergiesPtr = (const AliHLTPHOSRcuCellEnergyDebugDataStruct*)homeReaderPtr->GetBlockData( blk ); 
+      const AliHLTPHOSRcuCellEnergyDataStruct* cellEnergiesPtr = (const AliHLTPHOSRcuCellEnergyDataStruct*)homeReaderPtr->GetBlockData( blk ); 
 
       moduleID = cellEnergiesPtr->fModuleID ;
 
@@ -127,7 +146,7 @@ AliHLTPHOSOnlineDisplayEventTab::ReadBlockData(HOMERReader *homeReaderPtr)
            {
              fgLegoPlotHGPtr->Fill(moduleID*N_XCOLUMNS_MOD + tmpX +  N_XCOLUMNS_RCU*cellEnergiesPtr->fRcuX,  
                                    tmpZ + N_ZROWS_RCU*cellEnergiesPtr->fRcuZ, cellEnergiesPtr->fValidData[i].fEnergy);
-             for(int j= 0; j< N_SAMPLES; j++)
+             for(int j= 0; j< fNTotalSamples; j++)
                {
                  fChannelData[moduleID][cellEnergiesPtr->fRcuX][cellEnergiesPtr->fRcuZ][tmpX][tmpZ][HIGH_GAIN][j] = cellEnergiesPtr->fValidData[i].fData[j];  
                  //      fChannelData[moduleId][]
@@ -139,7 +158,7 @@ AliHLTPHOSOnlineDisplayEventTab::ReadBlockData(HOMERReader *homeReaderPtr)
            {
              fgLegoPlotLGPtr->Fill(moduleID*N_XCOLUMNS_MOD + tmpX +  N_XCOLUMNS_RCU*cellEnergiesPtr->fRcuX,
                                    tmpZ + N_ZROWS_RCU*cellEnergiesPtr->fRcuZ,    cellEnergiesPtr->fValidData[i].fEnergy);
-             for(int j= 0; j< N_SAMPLES; j++)
+             for(int j= 0; j< fNTotalSamples; j++)
                {
                  fChannelData[moduleID][cellEnergiesPtr->fRcuX][cellEnergiesPtr->fRcuZ][tmpX][tmpZ][LOW_GAIN][j] = cellEnergiesPtr->fValidData[i].fData[j];    
                }
@@ -172,29 +191,32 @@ AliHLTPHOSOnlineDisplayEventTab::ResetDisplay()
 void
 AliHLTPHOSOnlineDisplayEventTab::InitDisplay(TGTab  *tabPtr)
 {
+  //  fgLegoPlotHGPtr = new TH2D("Cosmics, High gain", "PHOS HLT: Cosmics", 
+  //                        N_XCOLUMNS_MOD*N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,  
+  //                             N_ZROWS_MOD,               0, N_ZROWS_MOD);
+ fgLegoPlotHGPtr = new AliHLTPHOSOnlineDisplayTH2D(fOnlineDisplayPtr, "Cosmics, High gain", "PHOS HLT: Cosmics", 
+                           N_XCOLUMNS_MOD*N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,  
+                           N_ZROWS_MOD,   0, N_ZROWS_MOD);    
+ fgLegoPlotHGPtr->SetGain(HIGH_GAIN);
+
+ fgLegoPlotHGPtr->SetMaximum(1023);
+ fgLegoPlotHGPtr->Reset();
+ fgLegoPlotHGPtr->GetXaxis()->SetRange(X_RANGE_START, X_RANGE_END);
+ // fgLegoPlotLGPtr = new TH2D("Cosmics, Low gain", "PHOS HLT: Cosmics",  
+ //                        N_XCOLUMNS_MOD* N_MODULES , 0, N_XCOLUMNS_MOD* N_MODULES,  
+ //                        N_ZROWS_MOD,          0, N_ZROWS_MOD);
+  fgLegoPlotLGPtr = new AliHLTPHOSOnlineDisplayTH2D(fOnlineDisplayPtr, "Cosmics, Low gain", "PHOS HLT: Cosmics",  
+                           N_XCOLUMNS_MOD* N_MODULES , 0, N_XCOLUMNS_MOD* N_MODULES,  
+                           N_ZROWS_MOD,          0, N_ZROWS_MOD);
+  fgLegoPlotLGPtr->SetGain(LOW_GAIN);
 
-
-  //  fgLegoPlotHGPtr = new TH2D("Homer a eventTAB","xx HLT: #pi^{0} 5 - 30Gev HG, High gain",  
-  fgLegoPlotHGPtr = new TH2D("Cosmics, High gain", "PHOS HLT: Cosmics", 
-                            N_XCOLUMNS_MOD*N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,  
-                             N_ZROWS_MOD,               0, N_ZROWS_MOD);
-  fgLegoPlotHGPtr->SetMaximum(1023);
-  fgLegoPlotHGPtr->Reset();
-
- //  fgLegoPlotHGPtr = new TH2D("Homer a eventTAB","xx HLT: #pi^{0} 5 - 30Gev HG, High gain",  
- //  fgLegoPlotHGPtr = new TH2D("Homer a eventTAB","xx HLT: #pi^{0} 5 - 30Gev HG, High gain",  
- //                         N_XCOLUMNS_MOD*N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,  
- //                             N_ZROWS_MOD,               0, N_ZROWS_MOD);
- //  fgLegoPlotHGPtr->SetMaximum( MAX_BIN_VALUE);
- //  fgLegoPlotHGPtr->Reset();
-
-  fgLegoPlotLGPtr = new TH2D("Cosmics, Low gain", "PHOS HLT: Cosmics",  
-                            N_XCOLUMNS_MOD* N_MODULES , 0, N_XCOLUMNS_MOD* N_MODULES,  
-                            N_ZROWS_MOD,          0, N_ZROWS_MOD);
-  //  fgLegoPlotLGPtr->SetMaximum( MAX_BIN_VALUE); 
   fgLegoPlotLGPtr->SetMaximum(1023); 
 
   fgLegoPlotLGPtr->Reset();
+  fgLegoPlotLGPtr->GetXaxis()->SetRange(X_RANGE_START, X_RANGE_END);
+  
 
   TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
                                         kLHintsExpandY, 2, 2, 15, 1);
index 980132f9cd913b53afa1fc9aa7c1bb59f3ccdef2..0fde86b91c0731e38e0ceb15ca062be85e8f71a3 100644 (file)
@@ -7,10 +7,12 @@
 #include <TCanvas.h>
 #include <TH2D.h>
 #include <TH1D.h>
-
+#include "AliHLTPHOSOnlineDisplayTH2D.h"
 #include "AliHLTPHOSConstants.h"
+//#include "AliHLTPHOSOnlineDisplay.h"
 
-#define N_SAMPLES 70 //BAD, someone is going to pay for this
+//#define N_SAMPLES 70 //BAD, someone is going to pay for this
+//#define N_SAMPLES 140 //BAD, someone is going to pay for this
 #define N_ZRCU_COORD 2
 #define N_XRCU_COORD 2
 
@@ -19,20 +21,20 @@ using namespace PhosHLTConst;
  
 class AliHLTPHOSGetEventButton;
 class HOMERReader;
+//class AliHLTPHOSRcuCellEnergyDataStruct;
 class AliHLTPHOSRcuCellEnergyDataStruct;
-class AliHLTPHOSRcuCellEnergyDebugDataStruct;
-//      AliHLTPHOSRcuCellEnergyDebugDataStruct.h 
+class AliHLTPHOSOnlineDisplay;
+
+//      AliHLTPHOSRcuCellEnergyDataStruct.h 
 class AliHLTPHOSOnlineDisplayEventTab : public AliHLTPHOSOnlineDisplayTab
 {
  public:
   virtual ~AliHLTPHOSOnlineDisplayEventTab();
-  AliHLTPHOSOnlineDisplayEventTab(TGTab *tabPtr, HOMERReader *fgHomerReaderPtr, HOMERReader *fgHomerReadersPtr[MAX_HOSTS], int nHosts);
-  AliHLTPHOSOnlineDisplayEventTab();
-
-
+  AliHLTPHOSOnlineDisplayEventTab(AliHLTPHOSOnlineDisplay *onlineDisplayPtr, TGTab *tabPtr, HOMERReader *fgHomerReaderPtr, HOMERReader *fgHomerReadersPtr[MAX_HOSTS], int nHosts);
   //  void GetRawData(TH1D *histPtr);
   //AliHLTPHOSOnlineDisplayEventTab::GetRawData(TH1D *histPtr, int mod, int rcuX, int rcuZ, int x, int z, int gain)
   void GetRawData(TH1D *histPtr, int mod, int rcuX, int rcuZ, int x, int z, int gain);
+  void GetRawData(TH1D *histPtr, int x, int z, int gain);
 
   void UpdateDisplay();
   int GetNextEvent();
@@ -44,8 +46,12 @@ class AliHLTPHOSOnlineDisplayEventTab : public AliHLTPHOSOnlineDisplayTab
   TGCompositeFrame    *fSubF1, *fSubF2, *fSubF3;
   TCanvas *fgCanvasHGPtr;
   TCanvas *fgCanvasLGPtr;
-  TH2D *fgLegoPlotLGPtr;
-  TH2D *fgLegoPlotHGPtr;
+
+  //  TH2D *fgLegoPlotLGPtr;
+  // TH2D *fgLegoPlotHGPtr;
+
+  AliHLTPHOSOnlineDisplayTH2D *fgLegoPlotLGPtr;
+  AliHLTPHOSOnlineDisplayTH2D *fgLegoPlotHGPtr;
 
 
   //  int *fChannelData[N_MODULES][N_RCUS_PER_MODULE][N_ZROWS_RCU][N_XCOLUMNS_RCU][N_GAINS];
@@ -55,8 +61,13 @@ class AliHLTPHOSOnlineDisplayEventTab : public AliHLTPHOSOnlineDisplayTab
   Bool_t fgAccumulate;
 
  private:
+  AliHLTPHOSOnlineDisplayEventTab();
   AliHLTPHOSGetEventButton* fgEventButtPtr; 
   void InitDisplay(TGTab *tabPtr);
+
+  //  AliHLTPHOSOnlineDisplay. 
+  AliHLTPHOSOnlineDisplay *fOnlineDisplayPtr;
+    
 };
 
 
diff --git a/HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayTH2D.cxx b/HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayTH2D.cxx
new file mode 100644 (file)
index 0000000..0870ccb
--- /dev/null
@@ -0,0 +1,123 @@
+/**************************************************************************
+ * This file is property of and copyright by the Experimental Nuclear     *
+ * Physics Group, Dep. of Physics                                         *
+ * University of Oslo, Norway, 2007                                       *
+ *                                                                        *
+ * Author: Per Thomas Hille <perthi@fys.uio.no> for the ALICE HLT Project.*
+ * Contributors are mentioned in the code where appropriate.              *
+ * Please report bugs to perthi@fys.uio.no                                *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+#include "AliHLTPHOSOnlineDisplayTH2D.h"
+#include "AliHLTPHOSOnlineDisplay.h"
+//#include "AliHLTPHOSBase.h"
+
+#include <iostream>
+
+using namespace std;
+
+#define PX_MIN 85
+#define PX_MAX 688
+#define PZ_MIN 60
+#define PZ_MAX 380
+
+
+
+AliHLTPHOSOnlineDisplayTH2D::AliHLTPHOSOnlineDisplayTH2D()
+{
+
+}
+
+
+AliHLTPHOSOnlineDisplayTH2D::AliHLTPHOSOnlineDisplayTH2D(AliHLTPHOSOnlineDisplay *onlineDisplayPtr, const char* name, 
+                                                        const char* title, Int_t nbinsx, 
+                                                        Double_t xlow, Double_t xup, Int_t nbinsy, 
+                                                        Double_t ylow, Double_t yup) :  AliHLTPHOSBase(),
+                                                                                        TH2D(name, title, nbinsx, 
+                                                                                             xlow, xup, nbinsy, 
+                                                                                             ylow, yup)
+{
+  fOnlineDisplayPtr = onlineDisplayPtr;
+
+}
+
+
+AliHLTPHOSOnlineDisplayTH2D::~AliHLTPHOSOnlineDisplayTH2D()
+{
+  
+}
+
+void
+AliHLTPHOSOnlineDisplayTH2D::SetGain(int gain)
+{
+  fGain = gain;
+}
+
+void
+AliHLTPHOSOnlineDisplayTH2D::ExecuteEvent(Int_t event, Int_t px, Int_t pz)
+{
+  char tmpName[256];
+  int tmpZBin = 0;
+  int tmpXBin = 0;
+
+  //  cout <<"px = "<< px<<" pz ="  <<endl;
+
+  if(event == 61)
+    {
+      fgRawDataCanvas = new TCanvas("TEST3", "PHOS HLT Raw Data Display", 1200, 1000); ;
+      tmpZBin =  GetZBin(pz);
+      tmpXBin =  GetXBin(px);
+      if(tmpZBin > 54) {tmpZBin = 54;}
+      if(tmpZBin < 1) {tmpZBin = 1;}
+      sprintf(tmpName, "Z_%d  X_%d", tmpZBin, tmpXBin);
+      fgRawDataCanvas->Divide(Z_ROWS, X_COLS); 
+      int cnt = 0;
+      
+      for(int z= 1; z > -2; z--)
+       {
+         for(int x=-1; x < X_COLS -1; x ++)
+           {
+             cnt ++;
+             sprintf(tmpName, "Z_%d  X_%d_gain%d", tmpZBin + z, tmpXBin + x, fGain);   
+             fgRawDataPlotsPtr[cnt] = new TH1D(tmpName, tmpName, fNTotalSamples, 0, fNTotalSamples -1);
+             fgRawDataCanvas->cd(cnt);  
+             fgRawDataPlotsPtr[cnt]->SetFillColor(1);
+             fgRawDataPlotsPtr[cnt]->SetMaximum(1023); 
+             fgRawDataPlotsPtr[cnt]->Reset();   
+             fOnlineDisplayPtr->fgEventTabPtr->GetRawData( fgRawDataPlotsPtr[cnt], tmpXBin +x, tmpZBin +z, fGain); 
+             fgRawDataPlotsPtr[cnt]->Draw();
+           }
+       }
+
+      fgRawDataCanvas->Update();
+
+    }
+
+}
+
+int
+AliHLTPHOSOnlineDisplayTH2D::GetXBin(Int_t px)
+{
+  float tmpBinRange = GetXaxis()->GetLast() -  GetXaxis()->GetFirst();
+  float tmpPixelRange =   PX_MAX  -   PX_MIN;
+  float tmpPixRelative = (px - PX_MIN)/tmpPixelRange ;
+  int xBin = ((int)((tmpPixRelative)*tmpBinRange) +  (float)GetXaxis()->GetFirst());
+  return xBin;
+}
+
+int
+AliHLTPHOSOnlineDisplayTH2D::GetZBin(Int_t pz)
+{
+  float tmpBinRange = GetYaxis()->GetLast() -  GetYaxis()->GetFirst();
+  float tmpPixelRange =   PZ_MAX  -   PZ_MIN;
+  float tmpPixRelative = (pz - PZ_MIN)/tmpPixelRange;
+  int zBin = (int)((1-tmpPixRelative)*tmpBinRange);
+  return zBin;
+}
diff --git a/HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayTH2D.h b/HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayTH2D.h
new file mode 100644 (file)
index 0000000..d9b0b5f
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef ALIHLTPHOSONLINEDISPLAYTH2D_H
+#define ALIHLTPHOSONLINEDISPLAYTH2D_H
+
+/**************************************************************************
+ * This file is property of and copyright by the Experimental Nuclear     *
+ * Physics Group, Dep. of Physics                                         *
+ * University of Oslo, Norway, 2007                                       *
+ *                                                                        *
+ * Author: Per Thomas Hille <perthi@fys.uio.no> for the ALICE HLT Project.*
+ * Contributors are mentioned in the code where appropriate.              *
+ * Please report bugs to perthi@fys.uio.no                                *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+#define Z_ROWS 3
+#define X_COLS 3
+#define N_HISTOGRAMS  Z_ROWS*X_COLS +4
+
+#include <TH2D.h>
+#include <TCanvas.h>
+#include "AliHLTPHOSBase.h"
+
+class AliHLTPHOSOnlineDisplay;
+
+class  AliHLTPHOSOnlineDisplayTH2D : public TH2D, public AliHLTPHOSBase
+{
+public:
+  AliHLTPHOSOnlineDisplayTH2D(AliHLTPHOSOnlineDisplay  *onlineDisplayPtr, const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup);
+  virtual ~AliHLTPHOSOnlineDisplayTH2D();
+  virtual void ExecuteEvent(Int_t event, Int_t pz, Int_t px);
+
+
+  int GetZBin(Int_t pz);
+  int GetXBin(Int_t px);
+
+  void SetGain(int gain);
+
+private:
+  AliHLTPHOSOnlineDisplayTH2D(); 
+  AliHLTPHOSOnlineDisplay *fOnlineDisplayPtr;
+
+  //  TH1D *fHistPtr;
+  TCanvas  *fgRawDataCanvas;
+  TH1D     *fgRawDataPlotsPtr[N_HISTOGRAMS]; 
+
+  int fGain;
+
+};
+
+#endif
index a393da9e792b53605f94c8df9ed31b7b9061d079..528a250c9732c58aa18344a404ad085609cd4f91 100644 (file)
@@ -7,7 +7,8 @@
 using namespace std;
 
 
-AliHLTPHOSOnlineDisplayTab::AliHLTPHOSOnlineDisplayTab():fgSyncronize(kFALSE)
+AliHLTPHOSOnlineDisplayTab::AliHLTPHOSOnlineDisplayTab():AliHLTPHOSBase(),
+                                                        fgSyncronize(kFALSE)
 {
 
 }
index 43d6c2bdb47b2615849e89ac1e3936f0fdc9208a..77f1da94f31c985dad47d1dd33332a872e3da2b0 100644 (file)
@@ -4,14 +4,24 @@
 #include "TGTab.h"
 #include "HOMERReader.h"
 #include "AliHLTPHOSCommonDefs.h"
-
 #include "AliHLTPHOSConstants.h"
+#include "AliHLTPHOSBase.h"
+
+//#define X_RANGE_START 120
+//#define X_RANGE_LENGTH 80
+
+#define X_RANGE_START 128
+#define X_RANGE_LENGTH 64
+
+#define X_RANGE_END  X_RANGE_START + X_RANGE_LENGTH
+
+
 using namespace PhosHLTConst;
 
 class HOMERReader;
 
 
-class AliHLTPHOSOnlineDisplayTab : public TGTab
+class AliHLTPHOSOnlineDisplayTab : public TGTab, public AliHLTPHOSBase
 {
  public:
   virtual ~AliHLTPHOSOnlineDisplayTab();
index 36d3a3864ff23cdcd2806a321f9861f4f7e771ff..1be3ef0752dfb4c736e018d439281cd5e363b11f 100755 (executable)
@@ -12,8 +12,11 @@ HeadSuf              = h
 ROOTLIBS       = `root-config --libs --glibs`
 
 ###ALIROOTLIBS = -L$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET) -lESD -lSTEER -lRAWDatarec   -lRAWDatabase 
-ALIROOTLIBS    = -L$(ALIHLT_TOPDIR)/build/lib -L$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)  
+##ALIROOTLIBS  = -L$(ALIHLT_TOPDIR)/build/lib -L$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)  
+ALIROOTLIBS    = -L$(ALIHLT_TOPDIR)/build/lib  -lHLTbase  -lAliHLTPHOS  -L$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)  
 
+#HLTLIBS               =-L$(ALIHLT_DC_DIR)/lib/Linux-x86_64-debug -lHOMER
+#HLTLIBS               =-L$(ALIHLT_DC_DIR)/lib/Linux-i686/  -lHOMER
 HLTLIBS                =-L$(ALIHLT_DC_DIR)/lib/Linux-x86_64-debug -lHOMER
 
 HOMERINCLUDE   =$(ALIHLT_DC_DIR)/src/Util/HOMER/include 
@@ -39,6 +42,10 @@ ALIHLTPHOSONLINEDISPLAYO             =AliHLTPHOSOnlineDisplay.$(ObjSuf)
 ALIHLTPHOSONLINEDISPLAYS               =AliHLTPHOSOnlineDisplay.$(SrcSuf)
 ALIHLTPHOSONLINEDISPLAYH               =AliHLTPHOSOnlineDisplay.$(HeadSuf)
 
+ALIHLTPHOSONLINEDISPLAYTH2DO           =AliHLTPHOSOnlineDisplayTH2D.$(ObjSuf)
+ALIHLTPHOSONLINEDISPLAYTH2DS           =AliHLTPHOSOnlineDisplayTH2D.$(SrcSuf)
+ALIHLTPHOSONLINEDISPLAYTH2DH           =AliHLTPHOSOnlineDisplayTH2D.$(HeadSuf)
+
 ALIHLTPHOSONLINEDISPLAYBUTTONO         =AliHLTPHOSOnlineDisplayButton.$(ObjSuf)
 ALIHLTPHOSONLINEDISPLAYBUTTONS         =AliHLTPHOSOnlineDisplayButton.$(SrcSuf)
 ALIHLTPHOSONLINEDISPLAYBUTTONH         =AliHLTPHOSOnlineDisplayButton.$(HeadSuf)
@@ -69,7 +76,7 @@ ALIHLTPHOSONLINEDISPLAYCALIBTABO      =AliHLTPHOSOnlineDisplayCalibTab.$(ObjSuf)
 ALIHLTPHOSONLINEDISPLAYCALIBTABS       =AliHLTPHOSOnlineDisplayCalibTab.$(SrcSuf)
 ALIHLTPHOSONLINEDISPLAYCALIBTABH       =AliHLTPHOSOnlineDisplayCalibTab.$(HeadSuf)
 
-OBJS   = $(MAINO)  $(ALIHLTPHOSONLINEDISPLAYO)  $(ALIHLTPHOSONLINEDISPLAYTABO) $(ALIHLTPHOSONLINEDISPLAYRAWDATAMENUO)\
+OBJS   = $(MAINO)  $(ALIHLTPHOSONLINEDISPLAYO)  $(ALIHLTPHOSONLINEDISPLAYTH2DO) $(ALIHLTPHOSONLINEDISPLAYTABO) $(ALIHLTPHOSONLINEDISPLAYRAWDATAMENUO)\
        $(ALIHLTPHOSONLINEDISPLAYEVENTTABO) $(ALIHLTPHOSONLINEDISPLAYRAWTABO)  $(ALIHLTPHOSONLINEDISPLAYCALIBTABO) \
        $(GETEVENTBUTTONO) $(ALIHLTPHOSONLINEDISPLAYNUMBERENTRYO) $(ALIHLTPHOSONLINEDISPLAYBUTTONO)
 
@@ -82,6 +89,11 @@ $(MAINO):$(MAINS)
 $(ALIHLTPHOSONLINEDISPLAYO):$(ALIHLTPHOSONLINEDISPLAYS) $(ALIHLTPHOSONLINEDISPLAYH)
        g++ -ggdb -g -I$(ROOTSYS)/include -I$(ALIHLTPHOSINCLUDE) -I$(HOMERINCLUDE) -I$(ALIHLTINCLUDE) -c $(ALIHLTPHOSONLINEDISPLAYS)
 
+
+$(ALIHLTPHOSONLINEDISPLAYTH2DO):$(ALIHLTPHOSONLINEDISPLAYTH2DS) $(ALIHLTPHOSONLINEDISPLAYTH2DH)
+       g++ -ggdb -g -I$(ROOTSYS)/include -I$(ALIHLTPHOSINCLUDE) -I$(HOMERINCLUDE) -I$(ALIHLTINCLUDE) -c $(ALIHLTPHOSONLINEDISPLAYTH2DS)
+
+
 $(ALIHLTPHOSONLINEDISPLAYBUTTONO):$(ALIHLTPHOSONLINEDISPLAYBUTTONS) $(ALIHLTPHOSONLINEDISPLAYBUTTONH)
        g++ -ggdb -g -I$(ROOTSYS)/include -I$(ALIHLTPHOSINCLUDE) -I$(HOMERINCLUDE) -I$(ALIHLTINCLUDE) -c $(ALIHLTPHOSONLINEDISPLAYBUTTONS)
 
diff --git a/HLT/PHOS/OnlineDisplay/class.sh b/HLT/PHOS/OnlineDisplay/class.sh
new file mode 100755 (executable)
index 0000000..f20d59f
--- /dev/null
@@ -0,0 +1,67 @@
+classfilename=$1
+
+classfilename_h=$classfilename.h
+classfilename_cxx=$classfilename.cxx
+classname=$classfilename
+
+if [  -a $classfilename_h ] || [ -a $classfilename_cxx ];then
+    echo ERROR, $classfilename_h and $classfilename_cxx allready exist, delelte them or rename the class you want to make
+else 
+    echo creating new files   $classfilename_h and $classfilename_cxx
+    printf "#ifndef " > $classfilename_h
+    classguard=${classfilename_h/.h/_H}
+
+    echo $classguard | tr "[:lower:]" "[:upper:]"  >> $classfilename_h
+    printf "#define " >> $classfilename_h
+    echo $classguard | tr "[:lower:]" "[:upper:]"  >> $classfilename_h
+
+    printf "\n" >>$classfilename_h 
+
+    printf "/**************************************************************************\n"  >> $classfilename_h
+    printf " * This file is property of and copyright by the Experimental Nuclear     *\n"  >> $classfilename_h
+    printf " * Physics Group, Dep. of Physics                                         *\n"  >> $classfilename_h
+    printf " * University of Oslo, Norway, 2007                                       *\n"  >> $classfilename_h
+    printf " *                                                                        *\n"  >> $classfilename_h
+    printf " * Author: Per Thomas Hille <perthi@fys.uio.no> for the ALICE HLT Project.*\n"  >> $classfilename_h
+    printf " * Contributors are mentioned in the code where appropriate.              *\n"  >> $classfilename_h
+    printf " * Please report bugs to perthi@fys.uio.no                                *\n"  >> $classfilename_h 
+    printf " *                                                                        *\n"  >> $classfilename_h
+    printf " * Permission to use, copy, modify and distribute this software and its   *\n"  >> $classfilename_h
+    printf " * documentation strictly for non-commercial purposes is hereby granted   *\n"  >> $classfilename_h
+    printf " * without fee, provided that the above copyright notice appears in all   *\n"  >> $classfilename_h
+    printf " * copies and that both the copyright notice and this permission notice   *\n"  >> $classfilename_h
+    printf " * appear in the supporting documentation. The authors make no claims     *\n"  >> $classfilename_h
+    printf " * about the suitability of this software for any purpose. It is          *\n"  >> $classfilename_h
+    printf " * provided \"as is\" without express or implied warranty.                  *\n"  >> $classfilename_h
+    printf " **************************************************************************/\n"  >> $classfilename_h
+
+    printf "\n\n\n" >>$classfilename_h 
+    printf "class " >> $classfilename_h
+    printf " $classname\n{\n\t$classname();\n\tvirtual ~$classname();\n};\n\n#endif\n" >> $classfilename_h  
+
+    printf "/**************************************************************************\n"  >  $classfilename_cxx
+    printf " * This file is property of and copyright by the Experimental Nuclear     *\n"  >> $classfilename_cxx
+    printf " * Physics Group, Dep. of Physics                                         *\n"  >> $classfilename_cxx
+    printf " * University of Oslo, Norway, 2007                                       *\n"  >> $classfilename_cxx
+    printf " *                                                                        *\n"  >> $classfilename_cxx
+    printf " * Author: Per Thomas Hille <perthi@fys.uio.no> for the ALICE HLT Project.*\n"  >> $classfilename_cxx
+    printf " * Contributors are mentioned in the code where appropriate.              *\n"  >> $classfilename_cxx
+    printf " * Please report bugs to perthi@fys.uio.no                                *\n"  >> $classfilename_cxx 
+    printf " *                                                                        *\n"  >> $classfilename_cxx
+    printf " * Permission to use, copy, modify and distribute this software and its   *\n"  >> $classfilename_cxx
+    printf " * documentation strictly for non-commercial purposes is hereby granted   *\n"  >> $classfilename_cxx
+    printf " * without fee, provided that the above copyright notice appears in all   *\n"  >> $classfilename_cxx
+    printf " * copies and that both the copyright notice and this permission notice   *\n"  >> $classfilename_cxx
+    printf " * appear in the supporting documentation. The authors make no claims     *\n"  >> $classfilename_cxx
+    printf " * about the suitability of this software for any purpose. It is          *\n"  >> $classfilename_cxx
+    printf " * provided \"as is\" without express or implied warranty.                  *\n"  >> $classfilename_cxx
+    printf " **************************************************************************/\n"  >> $classfilename_cxx
+    printf "#include \"$classfilename_h\"\n\n" >>  $classfilename_cxx
+    printf "$classname::$classname()\n{\n\n}\n\n" >> $classfilename_cxx
+    printf "$classname::~$classname()\n{\n\n}\n\n" >> $classfilename_cxx
+
+    emacs $classfilename_h  &
+    emacs $classfilename_cxx  &
+
+fi
+