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