]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayRawTab.cxx
New interface for shared memory. The AliHLTPHOSValidDataStruct now has a pointer...
[u/mrichter/AliRoot.git] / HLT / PHOS / OnlineDisplay / AliHLTPHOSOnlineDisplayRawTab.cxx
1 #include  "AliHLTPHOSOnlineDisplayRawTab.h"
2 #include <iostream>
3 #include "AliHLTPHOSRcuCellAccumulatedEnergyDataStruct.h"
4 #include "AliHLTPHOSGetEventButton.h"
5 //#include "AliHLTPHOSRcuChannelDataStruct.h"
6 #include "AliHLTPHOSRcuCellEnergyDataStruct.h"
7
8 using namespace std;
9
10 AliHLTPHOSOnlineDisplayRawTab::AliHLTPHOSOnlineDisplayRawTab()
11 {
12   cout << "AliHLTPHOSOnlineDisplayRawTab:ERROR: You cannot create a onlinedisplay Tab without arguments" << endl;
13 }
14
15 AliHLTPHOSOnlineDisplayRawTab::AliHLTPHOSOnlineDisplayRawTab(TGTab  *tabPtr, HOMERReader *homerSyncPtr, HOMERReader *homerPtrs[MAX_HOSTS], int nHosts)
16 {
17   for(int i=0; i<MAX_HOSTS; i++)
18     {
19        fgHomerReadersPtr[i] = 0;
20     }
21
22   fgHomerReaderPtr = homerSyncPtr;
23   
24   for(int i=0; i<nHosts; i++)
25     {
26       fgHomerReadersPtr[i] = homerPtrs[i] ;
27     }
28
29   fgNHosts = nHosts;
30   InitDisplay(tabPtr);
31 }
32
33
34 AliHLTPHOSOnlineDisplayRawTab::~AliHLTPHOSOnlineDisplayRawTab()
35 {
36
37
38 }
39
40
41 void
42 AliHLTPHOSOnlineDisplayRawTab::ReadBlockData(HOMERReader *homerReaderPtr)
43 {
44   unsigned long blk = homerReaderPtr->FindBlockNdx("ATADNAHC","SOHP", 0xeFFFFFFF );
45   
46   while ( blk != ~(unsigned long)0 ) 
47     {
48       cout << "GetNextEventRaw(): updating block " << endl;
49       AliHLTUInt16_t moduleID;
50
51       //    const AliHLTPHOSRcuChannelDataStruct* rcuChannelDataPtr = (const AliHLTPHOSRcuChannelDataStruct*)homerReaderPtr->GetBlockData( blk ); 
52       const AliHLTPHOSRcuCellEnergyDataStruct* rcuChannelDataPtr = (const AliHLTPHOSRcuCellEnergyDataStruct*)homerReaderPtr->GetBlockData( blk ); 
53
54       moduleID = rcuChannelDataPtr->fModuleID ;
55       cout << "GetNextEventRaw() Module ID =" << moduleID << endl; 
56  
57
58       int tmpx;
59       int tmpz;
60       AliHLTUInt32_t tmpChCnt =0;
61       AliHLTUInt16_t tmpSampleCnt =0;
62       
63       //   tmpChCnt = rcuChannelDataPtr->fNValidChannels;
64       tmpChCnt = rcuChannelDataPtr->fCnt;
65  
66       cout << "tmpChCnt = " << tmpChCnt << endl; 
67       
68       for( AliHLTUInt32_t ch =0; ch < tmpChCnt; ch ++)
69         {
70           {
71             tmpz =  rcuChannelDataPtr->fValidData[ch].fZ;
72             tmpx =  rcuChannelDataPtr->fValidData[ch].fX;       
73             //      tmpSampleCnt =  rcuChannelDataPtr->fValidData[ch].fDataSize -2;
74             tmpSampleCnt =  rcuChannelDataPtr->fValidData[ch].fNSamples;
75
76             //      fgChannelDataPlotPtr[tmpz][tmpx]->SetFillColor(3);
77
78             fgChannelDataPlotPtr[tmpz][tmpx]->SetFillColor(1);
79
80             for(AliHLTUInt16_t sample =0; sample <tmpSampleCnt; sample ++)
81               {
82                 if(  rcuChannelDataPtr->fValidData[ch].fGain  == 0)
83                   {
84                     //              fgChannelDataPlotPtr[tmpz][tmpx]->SetBinContent(sample,  rcuChannelDataPtr->fValidData[ch].fChannelData[sample]);
85                     fgChannelDataPlotPtr[tmpz][tmpx]->SetBinContent(sample,  rcuChannelDataPtr->fValidData[ch].fData[sample]);
86                   }
87
88               }
89           }
90         }
91
92       blk =  homerReaderPtr->FindBlockNdx("ATADNAHC","SOHP", 0xeFFFFFFF, blk+1);
93
94     }
95 }
96
97
98 int 
99 AliHLTPHOSOnlineDisplayRawTab::GetNextEvent()
100 {
101   cout << "AliHLTPHOSOnlineDisplayRawTab::GetNextEvent()" << endl;
102   ResetDisplay();
103   DoGetNextEvent();
104   UpdateDisplay();
105   fgEvntCnt ++;
106 }
107
108
109 void
110 AliHLTPHOSOnlineDisplayRawTab::ResetDisplay()
111 {
112
113 }
114
115
116 void 
117 AliHLTPHOSOnlineDisplayRawTab::InitDisplay(TGTab *tabPtr)
118 {
119   char tmpHistoName[256]; 
120   //  char tmpHistoName[256];
121   char tmpChDtaName[256];
122
123   for(int z = 0; z < N_ZROWS_RCU; z ++)
124     {
125       for(int x = 0; x < N_XCOLUMNS_RCU; x ++)
126         {
127           sprintf(tmpHistoName, "row %d column %d",z, x);
128           fgChannelDataPlotPtr[z][x] = new TH1D(tmpHistoName, tmpHistoName, 300, 0, 299);
129           //      fgChannelDataPlotPtr[z][x] = new AliHLTPHOSTH1D(tmpHistoName, tmpHistoName, 100, 0, 100);
130           //      fgChannelDataPlotPtr[z][x]->SetMaximum(MAX_BIN_VALUE); 
131           fgChannelDataPlotPtr[z][x]->SetMaximum(1023); 
132           fgChannelDataPlotPtr[z][x]->Reset();
133         }
134     }
135
136
137
138   TGCompositeFrame  *tf = tabPtr->AddTab("Raw Data Dislay");
139  
140   fSubTab3 = new TGTab(tf, 100, 100);
141   TGLayoutHints *hints = new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0); 
142   char tmpTabName[256];
143   char tmpCanvasName[256];
144   sprintf(tmpTabName, "Raw data zzz");
145   TGCompositeFrame         *tf2 = fSubTab3->AddTab(tmpTabName);   
146   fgEventButtPtr = new  AliHLTPHOSGetEventButton(tf, "Get Rawdata2xxxxx", 'r');
147   AliHLTPHOSGetEventButton*        EventButtPtr2 = new  AliHLTPHOSGetEventButton(tf, "Get Rawdata", 'r'); 
148   EventButtPtr2->Move(200, 200); 
149
150 }
151
152
153 void 
154 AliHLTPHOSOnlineDisplayRawTab::UpdateDisplay()
155 {
156   fgTestCanvasPtr = new TCanvas("TEST", "testcanvas", 1200, 1000);  
157
158   int startZ = 25;
159   int endZ   = 31;
160   int startX = 20;
161   int endX   = 27;
162
163   int nRows =  endZ - startZ;
164   int nCols =  endX - startX;
165
166
167   //  int start = 0;
168   //  fgTestCanvasPtr->Divide(N_XCOLUMNS_RCU, N_ZROWS_RCU, 0, 0);
169   cout <<"nRows = "<< nRows << endl;
170   cout <<"nCols = "<< nCols << endl;
171
172
173   /*
174   fgTestCanvasPtr->Divide(nCols, nRows, 0, 0);
175   //  fgTestCanvasPtr->Divide(nRows,  nCols,  0, 0);
176   
177    
178   for(int z = startZ; z < endZ; z ++)
179     {
180       for(int x = startX; x < endX; x ++)
181         {
182           cout << "z = "<< z << " x= " << x<<endl;
183           //      fgTestCanvasPtr->cd(x*N_ZROWS_RCU (tmpHistoName, tmpHistoName, 300, 0, 299);+z +1);
184           //      fgTestCanvasPtr->cd((z - startZ)*nCols +x +1);
185           fgTestCanvasPtr->cd((z - startZ)*nCols +x);
186           //      fgTestCanvasPtr->cd( z*nCols    +x);
187
188           cout << "(z - startZ)*nCols +x  ="<< (z - startZ)*nCols +x <<endl;
189           
190           fgChannelDataPlotPtr[x][z]->Draw();
191         } 
192     }
193   */
194
195   
196   /*  
197   for(int z = 0; z < nRows; z ++)
198     {
199       for(int x = 0; x < nCols; x ++)
200         {
201           //      fgTestCanvasPtr->cd(x*N_ZROWS_RCU +z + 1);
202           fgTestCanvasPtr->cd(z*nCols +x + 1);
203           fgChannelDataPlotPtr[z][x]->Draw();
204         } 
205     }
206   */
207
208
209
210   
211   //  fgTestCanvasPtr->Divide(N_XCOLUMNS_RCU, N_ZROWS_RCU, 0, 0);
212   
213   /*
214     for(int z = 0; z < N_ZROWS_RCU; z ++)
215     {
216     for(int x = 0; x < N_XCOLUMNS_RCU; x ++)
217     {
218     //    fgTestCanvasPtr->cd(x*N_ZROWS_RCU +z + 1);
219           
220     fgTestCanvasPtr->cd(z*N_XCOLUMNS_RCU +x + 1);
221           
222     //   fgTestCanvasPtr->cd(z*N_ZROWS_RCU +x + 1);
223           
224     fgChannelDataPlotPtr[z][x]->Draw();
225     } 
226     }
227   */
228
229
230   
231   fgTestCanvasPtr->Divide(N_XCOLUMNS_RCU, N_ZROWS_RCU, 0, 0);
232
233   
234   for(int z = 0; z < N_ZROWS_RCU; z ++)
235     {
236       for(int x = 0; x < N_XCOLUMNS_RCU; x ++)
237         {
238           //      fgTestCanvasPtr->cd(x*N_ZROWS_RCU +z + 1);
239           
240           fgTestCanvasPtr->cd(z*N_XCOLUMNS_RCU +x +1);
241           
242           //   fgTestCanvasPtr->cd(z*N_ZROWS_RCU +x + 1);
243           
244           fgChannelDataPlotPtr[z][x]->Draw();
245         } 
246     }
247   
248  
249
250  
251
252   fgTestCanvasPtr->Update();
253 }
254
255