# include "TStyle.h"
#endif
+
#include "AliHLTPHOSOnlineDisplay.h"
#include "AliHLTDataTypes.h"
#include "AliHLTPHOSRcuCellEnergyDataStruct.h"
}
-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;
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);
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()
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();
#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();
// 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;
static Bool_t fgAccumulate;
static Bool_t fgSyncronize;
-
-
TCanvas *fgRawDataCanvas;
TH1D *fgRawDataPlotsPtr[MAX_HISTOGRAMS];
using namespace std;
+
+
AliHLTPHOSOnlineDisplayCalibTab::AliHLTPHOSOnlineDisplayCalibTab()
{
cout << "AliHLTPHOSOnlineDisplayCalibTab:ERROR: You cannot create a onlinedisplay Tab without arguments" << endl;
}
-
void
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 ++)
{
{
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));
}
}
}
{
char tmpHistoName[256];
- fgLegoPlotHGPtr = new TH2D("Homer","HLT: #pi^{0} 5 - 30Gev HG, High gain",
+ fgLegoPlotHGPtr = new TH2D("a 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);
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);
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);
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();
+
+
}
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;
#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;
}
-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 ++)
{
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];
}
}
}
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()
{
{
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 ;
{
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][]
{
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];
}
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);
#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
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();
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];
Bool_t fgAccumulate;
private:
+ AliHLTPHOSOnlineDisplayEventTab();
AliHLTPHOSGetEventButton* fgEventButtPtr;
void InitDisplay(TGTab *tabPtr);
+
+ // AliHLTPHOSOnlineDisplay.
+ AliHLTPHOSOnlineDisplay *fOnlineDisplayPtr;
+
};
--- /dev/null
+/**************************************************************************
+ * 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;
+}
--- /dev/null
+#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
using namespace std;
-AliHLTPHOSOnlineDisplayTab::AliHLTPHOSOnlineDisplayTab():fgSyncronize(kFALSE)
+AliHLTPHOSOnlineDisplayTab::AliHLTPHOSOnlineDisplayTab():AliHLTPHOSBase(),
+ fgSyncronize(kFALSE)
{
}
#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();
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
ALIHLTPHOSONLINEDISPLAYS =AliHLTPHOSOnlineDisplay.$(SrcSuf)
ALIHLTPHOSONLINEDISPLAYH =AliHLTPHOSOnlineDisplay.$(HeadSuf)
+ALIHLTPHOSONLINEDISPLAYTH2DO =AliHLTPHOSOnlineDisplayTH2D.$(ObjSuf)
+ALIHLTPHOSONLINEDISPLAYTH2DS =AliHLTPHOSOnlineDisplayTH2D.$(SrcSuf)
+ALIHLTPHOSONLINEDISPLAYTH2DH =AliHLTPHOSOnlineDisplayTH2D.$(HeadSuf)
+
ALIHLTPHOSONLINEDISPLAYBUTTONO =AliHLTPHOSOnlineDisplayButton.$(ObjSuf)
ALIHLTPHOSONLINEDISPLAYBUTTONS =AliHLTPHOSOnlineDisplayButton.$(SrcSuf)
ALIHLTPHOSONLINEDISPLAYBUTTONH =AliHLTPHOSOnlineDisplayButton.$(HeadSuf)
ALIHLTPHOSONLINEDISPLAYCALIBTABS =AliHLTPHOSOnlineDisplayCalibTab.$(SrcSuf)
ALIHLTPHOSONLINEDISPLAYCALIBTABH =AliHLTPHOSOnlineDisplayCalibTab.$(HeadSuf)
-OBJS = $(MAINO) $(ALIHLTPHOSONLINEDISPLAYO) $(ALIHLTPHOSONLINEDISPLAYTABO) $(ALIHLTPHOSONLINEDISPLAYRAWDATAMENUO)\
+OBJS = $(MAINO) $(ALIHLTPHOSONLINEDISPLAYO) $(ALIHLTPHOSONLINEDISPLAYTH2DO) $(ALIHLTPHOSONLINEDISPLAYTABO) $(ALIHLTPHOSONLINEDISPLAYRAWDATAMENUO)\
$(ALIHLTPHOSONLINEDISPLAYEVENTTABO) $(ALIHLTPHOSONLINEDISPLAYRAWTABO) $(ALIHLTPHOSONLINEDISPLAYCALIBTABO) \
$(GETEVENTBUTTONO) $(ALIHLTPHOSONLINEDISPLAYNUMBERENTRYO) $(ALIHLTPHOSONLINEDISPLAYBUTTONO)
$(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)
--- /dev/null
+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
+