]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayEventTab.cxx
Removing obsolete code + refactoring
[u/mrichter/AliRoot.git] / HLT / PHOS / OnlineDisplay / AliHLTPHOSOnlineDisplayEventTab.cxx
CommitLineData
79aed8a6 1// $Id$
1b41ab20 2
27029341 3/**************************************************************************
4 * Copyright(c) 2006, ALICE Experiment at CERN, All rights reserved. *
5 * *
6 * Authors: Per Thomas Hille for the ALICE *
7 * offline/HLT Project. Contributors are mentioned in the code where *
8 * appropriate. *
9 * *
10 * Permission to use, copy, modify and distribute this software and its *
11 * documentation strictly for non-commercial purposes is hereby granted *
12 * without fee, provided that the above copyright notice appears in all *
13 * copies and that both the copyright notice and this permission notice *
14 * appear in the supporting documentation. The authors make no claims *
15 * about the suitability of this software for any purpose. It is *
16 * provided "as is" without express or implied warranty. *
17 **************************************************************************/
18
59b4cd9a 19#include "AliHLTPHOSOnlineDisplayEventTab.h"
20#include <iostream>
21#include "TGFrame.h"
22#include "AliHLTPHOSGetEventButton.h"
23#include "AliHLTPHOSCommonDefs.h"
24#include "AliHLTDataTypes.h"
6af3dade 25#include "AliHLTHOMERData.h"
26#include "AliHLTHOMERReader.h"
27#include "AliHLTHOMERWriter.h"
59b4cd9a 28#include "AliHLTPHOSRcuCellEnergyDataStruct.h"
86fe676f 29#include "TRootEmbeddedCanvas.h"
b3abda11 30//#include "AliHLTPHOSRcuCellEnergyDataStruct.h"
14ff16ed 31#include "AliHLTPHOSRcuCellEnergyDataStruct.h"
b3abda11 32#include "AliHLTPHOSOnlineDisplay.h"
3917d385 33
34#include "AliHLTPHOSChannelDataStruct.h"
35
36#include "AliHLTPHOSChannelDataHeaderStruct.h"
37
38//#include "AliHLTPHOSSharedMemoryInterface.h"
39#include "AliHLTPHOSSharedMemoryInterfacev2.h"
37ff2dd6 40#include "AliHLTPHOSCoordinate.h"
f704525c 41//#include "TStyle.h"
37ff2dd6 42
43#include "AliHLTPHOSChannelRawDataStruct.h"
44
f704525c 45
59b4cd9a 46using namespace std;
47
997330b5 48// MT Crap
49#include <TMath.h>
36f19b25 50#include "AliHLTPHOSOnlineDisplayTH2D.h"
51
37ff2dd6 52#include <TEveManager.h>
53#include <TEveBoxSet.h>
997330b5 54
37ff2dd6 55TEveBoxSet* gAliEveBoxSet = 0;
56
57//gEve = new TEveManager(300, 300);
59b4cd9a 58
59AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab()
60{
61 cout << "ERROR: You cannot create a onlinedisplay Tab without arguments" << endl;
62}
63
64
36f19b25 65AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab(AliHLTPHOSOnlineDisplay * onlineDisplayPtr, TGTab *tabPtr,
66 AliHLTHOMERReader * homerSyncPtr, AliHLTHOMERReader * homerPtrs[MAXHOSTS],
67 int nHosts, int runnumber) : AliHLTPHOSOnlineDisplayTab()
59b4cd9a 68{
37ff2dd6 69
70 // gEve = new TEveManager(300, 300, kFALSE);
71
72
27029341 73 //comment
d456fffb 74 /*
75 if(fIsSetRunNumber == true)
76 {
27029341 77 for(int i=0; i < NGAINS; i++)
d456fffb 78 {
79 fgLegoPlotPtr[gain]
80 }
81 }
82 */
83
84
3917d385 85 // fShmPtr = new AliHLTPHOSSharedMemoryInterface();
86 fShmPtr = new AliHLTPHOSSharedMemoryInterfacev2();
b3abda11 87 fOnlineDisplayPtr = onlineDisplayPtr;
88
54276f07 89
27029341 90 for(int gain = 0; gain < NGAINS; gain ++ )
3f98e623 91 {
54276f07 92 fgCanvasPtr[gain] = 0;
93 fgLegoPlotPtr[gain] = 0;
94
37ff2dd6 95
27029341 96 for(int mod =0; mod <NMODULES; mod ++)
3f98e623 97 {
01df13a8 98 for(int z = 0; z < NZROWSMOD ; z ++)
37ff2dd6 99 {
01df13a8 100 for(int x = 0; x < NXCOLUMNSMOD; x ++)
37ff2dd6 101 {
102 fChannelData[mod][z][x][gain] = new int[ALTROMAXSAMPLES];
103 fNChannelSamples[mod][z][x][gain] = 0;
104 fChannelEnergy[mod][z][x][gain] = 0;
105 }
106 }
3f98e623 107 }
108 }
109
27029341 110 for(int i=0; i<MAXHOSTS; i++)
59b4cd9a 111 {
112 fgHomerReadersPtr[i] = 0;
113 }
114
36f19b25 115 fgHomerReaderPtr = const_cast<AliHLTHOMERReader*>(homerSyncPtr);
59b4cd9a 116
117 for(int i=0; i<nHosts; i++)
118 {
119 fgHomerReadersPtr[i] = homerPtrs[i] ;
14ff16ed 120
59b4cd9a 121 }
122
59b4cd9a 123 fgNHosts = nHosts;
d456fffb 124 InitDisplay(tabPtr, runnumber);
59b4cd9a 125}
126
127
128AliHLTPHOSOnlineDisplayEventTab::~AliHLTPHOSOnlineDisplayEventTab()
129{
27029341 130 //comment
59b4cd9a 131}
132
133
37ff2dd6 134
c890e0a1 135Int_t
b3abda11 136AliHLTPHOSOnlineDisplayEventTab::GetRawData(TH1D *histPtr, int x, int z, int gain)
137{
37ff2dd6 138
b3abda11 139 int tmpModID = x/64;
b3abda11 140
37ff2dd6 141 /*
142 int tmpRcuZ = z/32;
143 int tmpRcuX = (x%64)/32;
144 int tmpZ = z%28;
145 int tmpX = x%32;
146 */
147
148 for( int i=0; i < fNChannelSamples[tmpModID][z][x][gain] ; i++)
b3abda11 149 {
37ff2dd6 150 histPtr->SetBinContent(i, fChannelData[tmpModID][z][x][gain][i]);
b3abda11 151 }
37ff2dd6 152 return fNChannelSamples [tmpModID][z][x][gain];
b3abda11 153}
154
155
37ff2dd6 156
59b4cd9a 157int
158AliHLTPHOSOnlineDisplayEventTab::GetNextEvent()
159{
160 ResetDisplay();
161 DoGetNextEvent();
162 UpdateDisplay();
163 fgEvntCnt ++;
164}
165
166
9d05c97d 167void
27029341 168AliHLTPHOSOnlineDisplayEventTab::FindFourierBlocks(AliHLTHOMERReader * const homerReaderPtr) const
9d05c97d 169{
27029341 170 //comment
9d05c97d 171 cout << "AliHLTPHOSOnlineDisplayEventTab::FindFourierBlocks" << endl;
172 // unsigned long blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF );
173 unsigned long blk = homerReaderPtr->FindBlockNdx(" TREIRUOF","SOHP", 0xFFFFFFFF );
174
175 while ( blk != ~(unsigned long)0 )
176 {
177 cout << "AliHLTPHOSOnlineDisplayEventTab::FindFourierBlocks(homerReaderPtr) FOUND FOURIER DATA !!!!!!!!!!!!!!" << endl;
9d05c97d 178 blk = homerReaderPtr->FindBlockNdx("TREIRUOF","SOHP", 0xFFFFFFFF );
179 }
9d05c97d 180}
181
59b4cd9a 182
183void
6af3dade 184AliHLTPHOSOnlineDisplayEventTab::ReadBlockData(AliHLTHOMERReader *homeReaderPtr)
14ff16ed 185{
3917d385 186 AliHLTPHOSChannelDataStruct *currentChannel =0;
9d05c97d 187 cout << "AliHLTPHOSOnlineDisplayEventTab::ReadBlockDat, Reading block data, therere are " << homeReaderPtr->GetBlockCnt() << " blocks " <<endl;
9d05c97d 188 FindFourierBlocks(homeReaderPtr);
79aed8a6 189 // unsigned long blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF );
3917d385 190 unsigned long blk = homeReaderPtr->FindBlockNdx("TLENNAHC","SOHP", 0xFFFFFFFF );
79aed8a6 191 cout << __FILE__ << ":" << __LINE__ << "blk" << blk << endl ;
d456fffb 192 int cnt = 0;
37ff2dd6 193 AliHLTPHOSCoordinate tmpCoord;
9d05c97d 194
59b4cd9a 195 while ( blk != ~(unsigned long)0 )
196 {
3917d385 197 AliHLTPHOSChannelDataHeaderStruct* cellEnergiesPtr = (AliHLTPHOSChannelDataHeaderStruct*)homeReaderPtr->GetBlockData( blk );
c890e0a1 198 Int_t* tmpPtr = 0;
14ff16ed 199 fShmPtr->SetMemory(cellEnergiesPtr);
200 currentChannel = fShmPtr->NextChannel();
201
202 while(currentChannel != 0)
203 {
204 cnt ++;
37ff2dd6 205 AliHLTPHOSMapper::ChannelId2Coordinate( currentChannel->fChannelID, tmpCoord );
206 fgLegoPlotPtr[ tmpCoord.fGain ]->Fill( tmpCoord.fModuleId*NXCOLUMNSMOD + tmpCoord.fX, tmpCoord.fZ, currentChannel->fEnergy );
207 fChannelEnergy[tmpCoord.fModuleId][tmpCoord.fZ][ tmpCoord.fX][tmpCoord.fGain] = currentChannel->fEnergy;
3917d385 208
54276f07 209 if(cellEnergiesPtr->fHasRawData == true)
14ff16ed 210 {
37ff2dd6 211 FillRawData(fShmPtr->GetRawData());
14ff16ed 212 }
14ff16ed 213 currentChannel = fShmPtr->NextChannel();
214 }
3917d385 215 // blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF, blk+1);
216 blk = homeReaderPtr->FindBlockNdx("TLENNAHC","SOHP", 0xFFFFFFFF, blk+1 );
59b4cd9a 217 }
218}
219
220
3917d385 221void
37ff2dd6 222AliHLTPHOSOnlineDisplayEventTab::FillRawData(const AliHLTPHOSChannelRawDataStruct &rawStr)
3917d385 223{
37ff2dd6 224 fNChannelSamples[ rawStr.fCoordinate.fModuleId ][ rawStr.fCoordinate.fZ ] [ rawStr.fCoordinate.fX ][ rawStr.fCoordinate.fGain ] = rawStr.nSamplesUsed;
225 fChannelEnergy[ rawStr.fCoordinate.fModuleId ][ rawStr.fCoordinate.fZ ] [ rawStr.fCoordinate.fX ][ rawStr.fCoordinate.fGain ] = rawStr.fEnergy;
01df13a8 226
227
228 /*
229 cout << __FILE__ << __LINE__<< "module ID = " << rawStr.fCoordinate.fModuleId << endl;
230 cout << __FILE__ << __LINE__<< "fZ = " << rawStr.fCoordinate.fZ << endl;
231 cout << __FILE__ << __LINE__<< "fX = " << rawStr.fCoordinate.fX << endl;
232 cout << __FILE__ << __LINE__<< "fGain = " << rawStr.fCoordinate.fGain << endl;
233 cout << __FILE__ << __LINE__<< "nSamples = " << rawStr.nSamplesUsed << endl;
234 */
235
37ff2dd6 236 for(int i=0; i < rawStr.nSamplesUsed; i++ )
237 {
01df13a8 238 // cout << "i = " << i << endl;
37ff2dd6 239 fChannelData[ rawStr.fCoordinate.fModuleId ][ rawStr.fCoordinate.fZ ] [ rawStr.fCoordinate.fX ][ rawStr.fCoordinate.fGain ][i] = rawStr.fDataPtr[i];
240 }
241
242
3917d385 243}
9d05c97d 244
245
37ff2dd6 246
59b4cd9a 247void
248AliHLTPHOSOnlineDisplayEventTab::ResetDisplay()
249{
27029341 250 //comment
59b4cd9a 251 if(fgAccumulate == kFALSE)
252 {
27029341 253 for(int gain=0; gain < NGAINS; gain++)
59b4cd9a 254 {
54276f07 255 if(fgLegoPlotPtr[gain] !=0)
256 {
257 fgLegoPlotPtr[gain]->Reset();
258 }
59b4cd9a 259 }
54276f07 260 }
261}
59b4cd9a 262
263
264void
36f19b25 265AliHLTPHOSOnlineDisplayEventTab::InitDisplay(TGTab * tabPtr, int runnumber)
59b4cd9a 266{
f704525c 267 // gStyle->SetOptLogy();
268 /// gStyle->SetOptStat(true);
269
27029341 270 for(int gain=0; gain < NGAINS; gain++)
54276f07 271 {
272 char gainLabel[100];
273 char label[256];
274
275 // Gain2Text
276 fOnlineDisplayPtr->Gain2Text(gain,gainLabel);
277 sprintf(label, "PHOS HLT Online Display %s", gainLabel);
278 fgLegoPlotPtr[gain] = new AliHLTPHOSOnlineDisplayTH2D(fOnlineDisplayPtr, label, label,
27029341 279 NXCOLUMNSMOD*NMODULES , 0, NXCOLUMNSMOD*NMODULES,
280 NZROWSMOD, 0, NZROWSMOD);
d456fffb 281
282 // cout << __FILE__ << ":" << __LINE__ << " Runnumber = " << runnumber <<endl;
283
284 fgLegoPlotPtr[gain]->SetRunNumber(runnumber);
54276f07 285 fgLegoPlotPtr[gain]->SetMaximum(1023);
286 fgLegoPlotPtr[gain]->Reset();
b6f9f0f8 287 // fgLegoPlotPtr[gain]->GetXaxis()->SetRange(XRANGESTART, XRANGEEND);
54276f07 288 }
289
59b4cd9a 290
291 TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
292 kLHintsExpandY, 2, 2, 15, 1);
293
36f19b25 294 TGCompositeFrame * tf = tabPtr->AddTab("Event display");
59b4cd9a 295 fSubTab1 = new TGTab(tf, 100, 100);
296 TGCompositeFrame *tf2 = fSubTab1->AddTab("LEGO");
297 fSubF1 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
298 fEc1 = new TRootEmbeddedCanvas("ec1", fSubF1, 100, 100);
299 fSubF1->AddFrame(fEc1, fL1);
300 fEc2 = new TRootEmbeddedCanvas("ec2", fSubF1, 100, 100);
301 fSubF1->AddFrame(fEc2, fL1);
302 tf2->AddFrame(fSubF1, fL1);
303
304 tf2 = fSubTab1->AddTab("SCAT");
305 fSubF2 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
306 tf2->AddFrame(fSubF2, fL1);
307 fEc3 = new TRootEmbeddedCanvas("ec3", fSubF2, 100, 100);
308 fSubF2->AddFrame(fEc3, fL1);
309 fEc4 = new TRootEmbeddedCanvas("ec4", fSubF2, 100, 100);
310 fSubF2->AddFrame(fEc4, fL1);
311
312 tf2 = fSubTab1->AddTab("SURF");
313 fSubF3 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
314 tf2->AddFrame(fSubF3, fL1);
315 fEc5 = new TRootEmbeddedCanvas("ec5", fSubF3, 100, 100);
316 fSubF3->AddFrame(fEc5, fL1);
317 fEc6 = new TRootEmbeddedCanvas("ec6", fSubF3, 100, 100);
318 fSubF3->AddFrame(fEc6, fL1);
319 fSubTab1->Resize();
320 tf->AddFrame(fSubTab1, fL1);
321
322 fgEventButtPtr = new AliHLTPHOSGetEventButton(fSubF1, "get event", 'e');
323}
324
325
04751caa 326
59b4cd9a 327void
328AliHLTPHOSOnlineDisplayEventTab::UpdateDisplay()
329{
f704525c 330 // gStyle->SetOptLogy();
331 // gStyle->SetOptStat(true);
332
27029341 333 fgCanvasPtr[HIGHGAIN] = fEc1->GetCanvas();
334 fgCanvasPtr[HIGHGAIN]->cd();
335 fgLegoPlotPtr[HIGHGAIN]->Draw("LEGO2Z");
336 fgCanvasPtr[HIGHGAIN]->Update();
337 fgCanvasPtr[LOWGAIN] = fEc2->GetCanvas();
338 fgCanvasPtr[LOWGAIN]->cd();
339 fgLegoPlotPtr[LOWGAIN]->Draw("LEGO2Z");
340 fgCanvasPtr[LOWGAIN]->Update();
341
342 fgCanvasPtr[HIGHGAIN] = fEc3->GetCanvas();
343 fgCanvasPtr[HIGHGAIN]->cd();
344 fgLegoPlotPtr[HIGHGAIN]->Draw("SCAT");
345 fgCanvasPtr[HIGHGAIN]->Update();
346 fgCanvasPtr[LOWGAIN] = fEc4->GetCanvas();
347 fgCanvasPtr[LOWGAIN]->cd();
348 fgLegoPlotPtr[LOWGAIN]->Draw("SCAT");
349 fgCanvasPtr[LOWGAIN]->Update();
54276f07 350
d456fffb 351 /*
27029341 352 fgCanvasPtr[HIGHGAIN] = fEc5->GetCanvas();
353 fgCanvasPtr[HIGHGAIN]->cd();
354 fgLegoPlotPtr[HIGHGAIN]->Draw("CONTZ");
355 fgCanvasPtr[HIGHGAIN]->Update();
356 fgCanvasPtr[LOWGAIN] = fEc6->GetCanvas();
357 fgCanvasPtr[LOWGAIN]->cd();
358 fgLegoPlotPtr[LOWGAIN]->Draw("CONTZ");
359 fgCanvasPtr[LOWGAIN]->Update();
d456fffb 360 */
361
27029341 362 fgCanvasPtr[HIGHGAIN] = fEc5->GetCanvas();
363 fgCanvasPtr[HIGHGAIN]->cd();
364 fgLegoPlotPtr[HIGHGAIN]->Draw("COLZ");
365 fgCanvasPtr[HIGHGAIN]->Update();
366 fgCanvasPtr[LOWGAIN] = fEc6->GetCanvas();
367 fgCanvasPtr[LOWGAIN]->cd();
368 fgLegoPlotPtr[LOWGAIN]->Draw("COLZ");
369 fgCanvasPtr[LOWGAIN]->Update();
d456fffb 370
371
59b4cd9a 372}