1 #include "AliHLTPHOSOnlineDisplayEventTab.h"
4 #include "AliHLTPHOSGetEventButton.h"
5 #include "AliHLTPHOSCommonDefs.h"
6 #include "AliHLTDataTypes.h"
8 #include "HOMERReader.h"
9 #include "HOMERWriter.h"
10 #include "AliHLTPHOSRcuCellEnergyDataStruct.h"
16 AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab()
18 cout << "ERROR: You cannot create a onlinedisplay Tab without arguments" << endl;
22 AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab(TGTab *tabPtr, HOMERReader *homerSyncPtr, HOMERReader *homerPtrs[MAX_HOSTS], int nHosts)
24 for(int i=0; i<MAX_HOSTS; i++)
26 fgHomerReadersPtr[i] = 0;
29 fgHomerReaderPtr = homerSyncPtr;
31 for(int i=0; i<nHosts; i++)
33 fgHomerReadersPtr[i] = homerPtrs[i] ;
46 AliHLTPHOSOnlineDisplayEventTab::~AliHLTPHOSOnlineDisplayEventTab()
53 AliHLTPHOSOnlineDisplayEventTab::GetNextEvent()
64 AliHLTPHOSOnlineDisplayEventTab::ReadBlockData(HOMERReader *homeReaderPtr)
66 cout << "Reading block data" << endl;
68 unsigned long blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF );
70 while ( blk != ~(unsigned long)0 )
73 const AliHLTPHOSRcuCellEnergyDataStruct* cellEnergiesPtr = (const AliHLTPHOSRcuCellEnergyDataStruct*)homeReaderPtr->GetBlockData( blk );
74 moduleID = cellEnergiesPtr->fModuleID ;
75 Int_t tmpCount = cellEnergiesPtr->fCnt;
80 for(int i= 0; i <= tmpCount; i++)
82 tmpZ = cellEnergiesPtr->fValidData[i].fZ;
83 tmpX = cellEnergiesPtr->fValidData[i].fX;
84 tmpGain = cellEnergiesPtr->fValidData[i].fGain;
86 if(tmpGain == HIGH_GAIN)
88 fgLegoPlotHGPtr->Fill(moduleID*N_XCOLUMNS_MOD + tmpX + N_XCOLUMNS_RCU*cellEnergiesPtr->fRcuX,
89 tmpZ + N_ZROWS_RCU*cellEnergiesPtr->fRcuZ, cellEnergiesPtr->fValidData[i].fEnergy);
92 else if(tmpGain == LOW_GAIN)
94 fgLegoPlotLGPtr->Fill(moduleID*N_XCOLUMNS_MOD + tmpX + N_XCOLUMNS_RCU*cellEnergiesPtr->fRcuX,
95 tmpZ + N_ZROWS_RCU*cellEnergiesPtr->fRcuZ, cellEnergiesPtr->fValidData[i].fEnergy);
99 blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF, blk+1);
105 AliHLTPHOSOnlineDisplayEventTab::ResetDisplay()
107 if(fgAccumulate == kFALSE)
109 if(fgLegoPlotHGPtr !=0)
111 fgLegoPlotHGPtr->Reset();
114 if(fgLegoPlotLGPtr !=0)
116 fgLegoPlotLGPtr->Reset();
123 AliHLTPHOSOnlineDisplayEventTab::InitDisplay(TGTab *tabPtr)
127 fgLegoPlotHGPtr = new TH2D("Homer a eventTAB","xx HLT: #pi^{0} 5 - 30Gev HG, High gain",
128 N_XCOLUMNS_MOD*N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,
129 N_ZROWS_MOD, 0, N_ZROWS_MOD);
130 fgLegoPlotHGPtr->SetMaximum( MAX_BIN_VALUE);
131 fgLegoPlotHGPtr->Reset();
133 fgLegoPlotLGPtr = new TH2D("Homer b eventTab","x HLT: #pi^{0} 5 - 30Gev LG, Low gain",
134 N_XCOLUMNS_MOD* N_MODULES , 0, N_XCOLUMNS_MOD* N_MODULES,
135 N_ZROWS_MOD, 0, N_ZROWS_MOD);
136 fgLegoPlotLGPtr->SetMaximum( MAX_BIN_VALUE);
137 fgLegoPlotLGPtr->Reset();
139 TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
140 kLHintsExpandY, 2, 2, 15, 1);
142 TGCompositeFrame *tf = tabPtr->AddTab("Event display TAB");
143 fSubTab1 = new TGTab(tf, 100, 100);
144 TGCompositeFrame *tf2 = fSubTab1->AddTab("LEGO");
145 fSubF1 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
146 fEc1 = new TRootEmbeddedCanvas("ec1", fSubF1, 100, 100);
147 fSubF1->AddFrame(fEc1, fL1);
148 fEc2 = new TRootEmbeddedCanvas("ec2", fSubF1, 100, 100);
149 fSubF1->AddFrame(fEc2, fL1);
150 tf2->AddFrame(fSubF1, fL1);
152 tf2 = fSubTab1->AddTab("SCAT");
153 fSubF2 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
154 tf2->AddFrame(fSubF2, fL1);
155 fEc3 = new TRootEmbeddedCanvas("ec3", fSubF2, 100, 100);
156 fSubF2->AddFrame(fEc3, fL1);
157 fEc4 = new TRootEmbeddedCanvas("ec4", fSubF2, 100, 100);
158 fSubF2->AddFrame(fEc4, fL1);
160 tf2 = fSubTab1->AddTab("SURF");
161 fSubF3 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
162 tf2->AddFrame(fSubF3, fL1);
163 fEc5 = new TRootEmbeddedCanvas("ec5", fSubF3, 100, 100);
164 fSubF3->AddFrame(fEc5, fL1);
165 fEc6 = new TRootEmbeddedCanvas("ec6", fSubF3, 100, 100);
166 fSubF3->AddFrame(fEc6, fL1);
168 tf->AddFrame(fSubTab1, fL1);
170 fgEventButtPtr = new AliHLTPHOSGetEventButton(fSubF1, "get event", 'e');
175 AliHLTPHOSOnlineDisplayEventTab::UpdateDisplay()
177 fgCanvasHGPtr = fEc1->GetCanvas();
179 fgLegoPlotHGPtr->Draw("LEGO2Z");
180 fgCanvasHGPtr->Update();
181 fgCanvasLGPtr = fEc2->GetCanvas();
183 fgLegoPlotLGPtr->Draw("LEGO2Z");
184 fgCanvasLGPtr->Update();
186 fgCanvasHGPtr = fEc3->GetCanvas();
188 fgLegoPlotHGPtr->Draw("SCAT");
189 fgCanvasHGPtr->Update();
190 fgCanvasLGPtr = fEc4->GetCanvas();
192 fgLegoPlotLGPtr->Draw("SCAT");
193 fgCanvasLGPtr->Update();
195 fgCanvasHGPtr = fEc5->GetCanvas();
197 fgLegoPlotHGPtr->Draw("CONTZ");
198 fgCanvasHGPtr->Update();
199 fgCanvasLGPtr = fEc6->GetCanvas();
201 fgLegoPlotLGPtr->Draw("CONTZ");
202 fgCanvasLGPtr->Update();