]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayEventTab.cxx
removing obsolete classes from build system
[u/mrichter/AliRoot.git] / HLT / PHOS / OnlineDisplay / AliHLTPHOSOnlineDisplayEventTab.cxx
CommitLineData
1b41ab20 1// $Id$
2
59b4cd9a 3#include "AliHLTPHOSOnlineDisplayEventTab.h"
4#include <iostream>
5#include "TGFrame.h"
6#include "AliHLTPHOSGetEventButton.h"
7#include "AliHLTPHOSCommonDefs.h"
8#include "AliHLTDataTypes.h"
6af3dade 9#include "AliHLTHOMERData.h"
10#include "AliHLTHOMERReader.h"
11#include "AliHLTHOMERWriter.h"
59b4cd9a 12#include "AliHLTPHOSRcuCellEnergyDataStruct.h"
b3abda11 13//#include "AliHLTPHOSRcuCellEnergyDataStruct.h"
14ff16ed 14#include "AliHLTPHOSRcuCellEnergyDataStruct.h"
b3abda11 15#include "AliHLTPHOSOnlineDisplay.h"
14ff16ed 16#include "AliHLTPHOSSharedMemoryInterface.h"
59b4cd9a 17
f704525c 18//#include "TStyle.h"
19
59b4cd9a 20using namespace std;
21
997330b5 22// MT Crap
23#include <TMath.h>
24#include <TEveManager.h>
25#include <TEveBoxSet.h>
26
27TEveBoxSet* gAliEveBoxSet = 0;
59b4cd9a 28
29AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab()
30{
31 cout << "ERROR: You cannot create a onlinedisplay Tab without arguments" << endl;
32}
33
34
b3abda11 35AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab(AliHLTPHOSOnlineDisplay *onlineDisplayPtr, TGTab *tabPtr,
d456fffb 36 AliHLTHOMERReader *homerSyncPtr, AliHLTHOMERReader *homerPtrs[MAX_HOSTS],
37 int nHosts, const int runnumber) : AliHLTPHOSOnlineDisplayTab()
59b4cd9a 38{
d456fffb 39
40 /*
41 if(fIsSetRunNumber == true)
42 {
43 for(int i=0; i < N_GAINS; i++)
44 {
45 fgLegoPlotPtr[gain]
46 }
47 }
48 */
49
50
14ff16ed 51 fShmPtr = new AliHLTPHOSSharedMemoryInterface();
b3abda11 52 fOnlineDisplayPtr = onlineDisplayPtr;
53
54276f07 54
55 for(int gain = 0; gain < N_GAINS; gain ++ )
3f98e623 56 {
54276f07 57 fgCanvasPtr[gain] = 0;
58 fgLegoPlotPtr[gain] = 0;
59
60 for(int mod =0; mod <N_MODULES; mod ++)
3f98e623 61 {
54276f07 62 for(int rcu_x_coord = 0; rcu_x_coord < N_ZRCU_COORD; rcu_x_coord ++)
3f98e623 63 {
54276f07 64 for(int rcu_z_coord = 0; rcu_z_coord < N_XRCU_COORD; rcu_z_coord ++)
3f98e623 65 {
54276f07 66 for(int z = 0; z < N_ZROWS_RCU; z ++)
3f98e623 67 {
54276f07 68 for(int x = 0; x < N_XCOLUMNS_RCU; x ++)
3f98e623 69 {
c890e0a1 70 fChannelData[mod][rcu_z_coord][rcu_x_coord][x][z][gain] = new int[ALTRO_MAX_SAMPLES];
71 fNChannelSamples[mod][rcu_z_coord][rcu_x_coord][x][z][gain] = 0;
72 fChannelEnergy[mod][rcu_z_coord][rcu_x_coord][x][z][gain] = 0;
3f98e623 73 }
54276f07 74 }
75 }
3f98e623 76 }
77 }
78 }
79
59b4cd9a 80 for(int i=0; i<MAX_HOSTS; i++)
81 {
82 fgHomerReadersPtr[i] = 0;
83 }
84
85 fgHomerReaderPtr = homerSyncPtr;
86
87 for(int i=0; i<nHosts; i++)
88 {
89 fgHomerReadersPtr[i] = homerPtrs[i] ;
14ff16ed 90
59b4cd9a 91 }
92
59b4cd9a 93 fgNHosts = nHosts;
d456fffb 94 InitDisplay(tabPtr, runnumber);
59b4cd9a 95}
96
97
98AliHLTPHOSOnlineDisplayEventTab::~AliHLTPHOSOnlineDisplayEventTab()
99{
100
101}
102
103
c890e0a1 104Int_t
b3abda11 105AliHLTPHOSOnlineDisplayEventTab::GetRawData(TH1D *histPtr, int x, int z, int gain)
106{
107 int tmpModID = x/64;
108 int tmpRcuZ = z/32;
109 int tmpRcuX = (x%64)/32;
110 int tmpZ = z%28;
111 int tmpX = x%32;
112
c890e0a1 113 for(int i=0; i < fNChannelSamples[tmpModID][tmpRcuX][tmpRcuZ][tmpX][tmpZ][gain] ; i++)
b3abda11 114 {
c890e0a1 115 histPtr->SetBinContent(i, fChannelData[tmpModID][tmpRcuX][tmpRcuZ][tmpX][tmpZ][gain][i]);
b3abda11 116 }
c890e0a1 117 return fNChannelSamples[tmpModID][tmpRcuX][tmpRcuZ][tmpX][tmpZ][gain];
b3abda11 118}
119
120
59b4cd9a 121int
122AliHLTPHOSOnlineDisplayEventTab::GetNextEvent()
123{
124 ResetDisplay();
997330b5 125 // MT crap
126 Bool_t is_first = false;
127 if (gAliEveBoxSet == 0)
128 {
129 is_first = true;
130 gAliEveBoxSet = new TEveBoxSet("PHOS module");
131 // gAliEveBoxSet->SetSecSelectCommand("Draw()");
132 // gAliEveBoxSet->SetSecSelectCommand("phos_histo_draw");
133 gEve->AddElement(gAliEveBoxSet);
134 }
135 gAliEveBoxSet->Reset(TEveBoxSet::kBT_AABox, kFALSE, 128);
136
59b4cd9a 137 DoGetNextEvent();
138 UpdateDisplay();
997330b5 139
140 gAliEveBoxSet->ElementChanged();
141 gEve->Redraw3D(is_first);
142
59b4cd9a 143 fgEvntCnt ++;
144}
145
146
9d05c97d 147void
148AliHLTPHOSOnlineDisplayEventTab::FindFourierBlocks(AliHLTHOMERReader *homerReaderPtr)
149{
150 cout << "AliHLTPHOSOnlineDisplayEventTab::FindFourierBlocks" << endl;
151 // unsigned long blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF );
152 unsigned long blk = homerReaderPtr->FindBlockNdx(" TREIRUOF","SOHP", 0xFFFFFFFF );
153
154 while ( blk != ~(unsigned long)0 )
155 {
156 cout << "AliHLTPHOSOnlineDisplayEventTab::FindFourierBlocks(homerReaderPtr) FOUND FOURIER DATA !!!!!!!!!!!!!!" << endl;
157
158
159 blk = homerReaderPtr->FindBlockNdx("TREIRUOF","SOHP", 0xFFFFFFFF );
160 }
161
162}
163
59b4cd9a 164
165void
6af3dade 166AliHLTPHOSOnlineDisplayEventTab::ReadBlockData(AliHLTHOMERReader *homeReaderPtr)
14ff16ed 167{
168 AliHLTPHOSValidCellDataStruct *currentChannel =0;
9d05c97d 169 cout << "AliHLTPHOSOnlineDisplayEventTab::ReadBlockDat, Reading block data, therere are " << homeReaderPtr->GetBlockCnt() << " blocks " <<endl;
170
171 FindFourierBlocks(homeReaderPtr);
59b4cd9a 172
173 unsigned long blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF );
997330b5 174
d456fffb 175 int cnt = 0;
176
9d05c97d 177 //CRAP PT
178 // FindFourierBlocks(homeReaderPtr);
179
59b4cd9a 180 while ( blk != ~(unsigned long)0 )
181 {
182 Int_t moduleID;
c890e0a1 183 Int_t rcuX = 0;
184 Int_t rcuZ = 0;
14ff16ed 185 AliHLTPHOSRcuCellEnergyDataStruct* cellEnergiesPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)homeReaderPtr->GetBlockData( blk );
47f7b25e 186
47f7b25e 187 unsigned int *t = (unsigned int*)cellEnergiesPtr;
188
59b4cd9a 189 moduleID = cellEnergiesPtr->fModuleID ;
c890e0a1 190 rcuX = cellEnergiesPtr->fRcuX;
191 rcuZ = cellEnergiesPtr->fRcuZ;
192
14ff16ed 193 cout << "AliHLTPHOSOnlineDisplayEventTab::ReadBlockData, fModuleID =" <<moduleID << endl;
04751caa 194
59b4cd9a 195 Int_t tmpZ;
196 Int_t tmpX;
197 Int_t tmpGain;
14ff16ed 198 int cnt = 0;
c890e0a1 199 Int_t* tmpPtr = 0;
14ff16ed 200
14ff16ed 201 fShmPtr->SetMemory(cellEnergiesPtr);
202 currentChannel = fShmPtr->NextChannel();
203
204 while(currentChannel != 0)
205 {
206 cnt ++;
207 tmpZ = currentChannel->fZ;
208 tmpX = currentChannel->fX;
209 tmpGain = currentChannel->fGain;
54276f07 210 fgLegoPlotPtr[tmpGain]->Fill(moduleID*N_XCOLUMNS_MOD + tmpX + N_XCOLUMNS_RCU*cellEnergiesPtr->fRcuX,
211 tmpZ + N_ZROWS_RCU*cellEnergiesPtr->fRcuZ, currentChannel->fEnergy);
2589c3a3 212
54276f07 213 // CRAP PTH
214 if(tmpGain == HIGH_GAIN)
215 {
997330b5 216 gAliEveBoxSet->AddBox(2.2*(tmpX + N_XCOLUMNS_RCU*cellEnergiesPtr->fRcuX) - 1.1,
217 0,
218 2.2*(tmpZ + N_ZROWS_RCU*cellEnergiesPtr->fRcuZ) - 1.1,
219 2.2,
220 0.4*140*currentChannel->fEnergy/1024,
221 2.2);
222 gAliEveBoxSet->DigitValue(TMath::Nint(currentChannel->fEnergy));
14ff16ed 223 }
54276f07 224
225 if(cellEnergiesPtr->fHasRawData == true)
d456fffb 226 //if(0)
14ff16ed 227 {
54276f07 228 Int_t nSamples = 0;
229 Int_t* rawPtr = 0;
230 rawPtr = fShmPtr->GetRawData(nSamples);
231 fNChannelSamples[moduleID][rcuX][rcuZ][tmpX][tmpZ][tmpGain] = nSamples;
2589c3a3 232
d456fffb 233 // cout << __FILE__ << ":" << __LINE__ <<" gain = " << tmpGain << " z = "<< tmpZ << " x = " << tmpX;
234 // cout << " nsamples = " << nSamples;
235 // cout << __FILE__ << ":" << __LINE__ << " the address of raw ptr = " << rawPtr << endl;
236
237
238 if(nSamples > ALTRO_MAX_SAMPLES || nSamples < 0 )
14ff16ed 239 {
d456fffb 240 cout << __FILE__<< ":" <<__LINE__ <<"ERROR, nsamples = "<< nSamples <<" exeeds allowd range, max number of samples is "<< ALTRO_MAX_SAMPLES << endl;
241 }
242 else
243 {
244 for(int j= 0; j< nSamples; j++)
245 {
246 // cout << __FILE__ << ":" << __LINE__ << " nsamples = " << nSamples << " j =" << j << endl;
247 fChannelData[moduleID][cellEnergiesPtr->fRcuX][cellEnergiesPtr->fRcuZ][tmpX][tmpZ][tmpGain][j] = rawPtr[j];
248 }
249
14ff16ed 250 }
251 }
54276f07 252
14ff16ed 253 currentChannel = fShmPtr->NextChannel();
254 }
54276f07 255
59b4cd9a 256 blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF, blk+1);
9d05c97d 257
59b4cd9a 258 }
259}
260
261
9d05c97d 262
263
59b4cd9a 264void
265AliHLTPHOSOnlineDisplayEventTab::ResetDisplay()
266{
267 if(fgAccumulate == kFALSE)
268 {
54276f07 269 for(int gain=0; gain < N_GAINS; gain++)
59b4cd9a 270 {
54276f07 271 if(fgLegoPlotPtr[gain] !=0)
272 {
273 fgLegoPlotPtr[gain]->Reset();
274 }
59b4cd9a 275 }
54276f07 276 }
277}
59b4cd9a 278
279
280void
d456fffb 281AliHLTPHOSOnlineDisplayEventTab::InitDisplay(TGTab *tabPtr, const int runnumber)
59b4cd9a 282{
f704525c 283 // gStyle->SetOptLogy();
284 /// gStyle->SetOptStat(true);
285
54276f07 286 for(int gain=0; gain < N_GAINS; gain++)
287 {
288 char gainLabel[100];
289 char label[256];
290
291 // Gain2Text
292 fOnlineDisplayPtr->Gain2Text(gain,gainLabel);
293 sprintf(label, "PHOS HLT Online Display %s", gainLabel);
294 fgLegoPlotPtr[gain] = new AliHLTPHOSOnlineDisplayTH2D(fOnlineDisplayPtr, label, label,
295 N_XCOLUMNS_MOD*N_MODULES , 0, N_XCOLUMNS_MOD*N_MODULES,
296 N_ZROWS_MOD, 0, N_ZROWS_MOD);
d456fffb 297
298 // cout << __FILE__ << ":" << __LINE__ << " Runnumber = " << runnumber <<endl;
299
300 fgLegoPlotPtr[gain]->SetRunNumber(runnumber);
54276f07 301 fgLegoPlotPtr[gain]->SetMaximum(1023);
302 fgLegoPlotPtr[gain]->Reset();
303 fgLegoPlotPtr[gain]->GetXaxis()->SetRange(X_RANGE_START, X_RANGE_END);
304 }
305
59b4cd9a 306
307 TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
308 kLHintsExpandY, 2, 2, 15, 1);
309
3f98e623 310 TGCompositeFrame *tf = tabPtr->AddTab("Event display");
59b4cd9a 311 fSubTab1 = new TGTab(tf, 100, 100);
312 TGCompositeFrame *tf2 = fSubTab1->AddTab("LEGO");
313 fSubF1 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
314 fEc1 = new TRootEmbeddedCanvas("ec1", fSubF1, 100, 100);
315 fSubF1->AddFrame(fEc1, fL1);
316 fEc2 = new TRootEmbeddedCanvas("ec2", fSubF1, 100, 100);
317 fSubF1->AddFrame(fEc2, fL1);
318 tf2->AddFrame(fSubF1, fL1);
319
320 tf2 = fSubTab1->AddTab("SCAT");
321 fSubF2 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
322 tf2->AddFrame(fSubF2, fL1);
323 fEc3 = new TRootEmbeddedCanvas("ec3", fSubF2, 100, 100);
324 fSubF2->AddFrame(fEc3, fL1);
325 fEc4 = new TRootEmbeddedCanvas("ec4", fSubF2, 100, 100);
326 fSubF2->AddFrame(fEc4, fL1);
327
328 tf2 = fSubTab1->AddTab("SURF");
329 fSubF3 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
330 tf2->AddFrame(fSubF3, fL1);
331 fEc5 = new TRootEmbeddedCanvas("ec5", fSubF3, 100, 100);
332 fSubF3->AddFrame(fEc5, fL1);
333 fEc6 = new TRootEmbeddedCanvas("ec6", fSubF3, 100, 100);
334 fSubF3->AddFrame(fEc6, fL1);
335 fSubTab1->Resize();
336 tf->AddFrame(fSubTab1, fL1);
337
338 fgEventButtPtr = new AliHLTPHOSGetEventButton(fSubF1, "get event", 'e');
339}
340
341
04751caa 342
59b4cd9a 343void
344AliHLTPHOSOnlineDisplayEventTab::UpdateDisplay()
345{
f704525c 346 // gStyle->SetOptLogy();
347 // gStyle->SetOptStat(true);
348
54276f07 349 fgCanvasPtr[HIGH_GAIN] = fEc1->GetCanvas();
350 fgCanvasPtr[HIGH_GAIN]->cd();
351 fgLegoPlotPtr[HIGH_GAIN]->Draw("LEGO2Z");
352 fgCanvasPtr[HIGH_GAIN]->Update();
353 fgCanvasPtr[LOW_GAIN] = fEc2->GetCanvas();
354 fgCanvasPtr[LOW_GAIN]->cd();
355 fgLegoPlotPtr[LOW_GAIN]->Draw("LEGO2Z");
356 fgCanvasPtr[LOW_GAIN]->Update();
357
358 fgCanvasPtr[HIGH_GAIN] = fEc3->GetCanvas();
359 fgCanvasPtr[HIGH_GAIN]->cd();
360 fgLegoPlotPtr[HIGH_GAIN]->Draw("SCAT");
361 fgCanvasPtr[HIGH_GAIN]->Update();
362 fgCanvasPtr[LOW_GAIN] = fEc4->GetCanvas();
363 fgCanvasPtr[LOW_GAIN]->cd();
364 fgLegoPlotPtr[LOW_GAIN]->Draw("SCAT");
365 fgCanvasPtr[LOW_GAIN]->Update();
366
d456fffb 367 /*
368 fgCanvasPtr[HIGH_GAIN] = fEc5->GetCanvas();
54276f07 369 fgCanvasPtr[HIGH_GAIN]->cd();
370 fgLegoPlotPtr[HIGH_GAIN]->Draw("CONTZ");
371 fgCanvasPtr[HIGH_GAIN]->Update();
372 fgCanvasPtr[LOW_GAIN] = fEc6->GetCanvas();
373 fgCanvasPtr[LOW_GAIN]->cd();
374 fgLegoPlotPtr[LOW_GAIN]->Draw("CONTZ");
375 fgCanvasPtr[LOW_GAIN]->Update();
d456fffb 376 */
377
378 fgCanvasPtr[HIGH_GAIN] = fEc5->GetCanvas();
379 fgCanvasPtr[HIGH_GAIN]->cd();
380 fgLegoPlotPtr[HIGH_GAIN]->Draw("COLZ");
381 fgCanvasPtr[HIGH_GAIN]->Update();
382 fgCanvasPtr[LOW_GAIN] = fEc6->GetCanvas();
383 fgCanvasPtr[LOW_GAIN]->cd();
384 fgLegoPlotPtr[LOW_GAIN]->Draw("COLZ");
385 fgCanvasPtr[LOW_GAIN]->Update();
386
387
59b4cd9a 388}