]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayEventTab.cxx
New class structure
[u/mrichter/AliRoot.git] / HLT / PHOS / OnlineDisplay / AliHLTPHOSOnlineDisplayEventTab.cxx
1 #include "AliHLTPHOSOnlineDisplayEventTab.h"
2 #include <iostream>
3 #include "TGFrame.h"
4 #include "AliHLTPHOSGetEventButton.h"
5 #include "AliHLTPHOSCommonDefs.h"
6 #include "AliHLTDataTypes.h"
7 #include "HOMERData.h"
8 #include "HOMERReader.h"
9 #include "HOMERWriter.h"
10 #include "AliHLTPHOSRcuCellEnergyDataStruct.h"
11
12
13 using namespace std;
14
15
16 AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab()
17 {
18   cout << "ERROR: You cannot create a onlinedisplay Tab without arguments" << endl;
19 }
20
21
22 AliHLTPHOSOnlineDisplayEventTab::AliHLTPHOSOnlineDisplayEventTab(TGTab  *tabPtr, HOMERReader *homerSyncPtr, HOMERReader *homerPtrs[MAX_HOSTS], int nHosts)
23 {
24   for(int i=0; i<MAX_HOSTS; i++)
25     {
26        fgHomerReadersPtr[i] = 0;
27     }
28
29   fgHomerReaderPtr = homerSyncPtr;
30   
31   for(int i=0; i<nHosts; i++)
32     {
33       fgHomerReadersPtr[i] = homerPtrs[i] ;
34     }
35
36   fgCanvasHGPtr = 0;
37   fgCanvasLGPtr = 0;
38   fgLegoPlotLGPtr = 0;
39   fgLegoPlotHGPtr = 0;
40
41   fgNHosts = nHosts;
42   InitDisplay(tabPtr);
43 }
44
45
46 AliHLTPHOSOnlineDisplayEventTab::~AliHLTPHOSOnlineDisplayEventTab()
47 {
48
49 }
50
51
52 int
53 AliHLTPHOSOnlineDisplayEventTab::GetNextEvent()
54 {
55   ResetDisplay();
56   DoGetNextEvent();
57   UpdateDisplay();
58   fgEvntCnt ++;
59 }
60
61
62
63 void 
64 AliHLTPHOSOnlineDisplayEventTab::ReadBlockData(HOMERReader *homeReaderPtr)
65 {
66   cout << "Reading block data" << endl;
67
68   unsigned long blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF );
69
70   while ( blk != ~(unsigned long)0 ) 
71     {
72       Int_t moduleID;
73       const AliHLTPHOSRcuCellEnergyDataStruct* cellEnergiesPtr = (const AliHLTPHOSRcuCellEnergyDataStruct*)homeReaderPtr->GetBlockData( blk );  
74       moduleID = cellEnergiesPtr->fModuleID ;
75       Int_t tmpCount = cellEnergiesPtr->fCnt;
76       Int_t tmpZ;
77       Int_t tmpX;
78       Int_t tmpGain;
79           
80       for(int i= 0; i <= tmpCount; i++)
81         {
82           tmpZ = cellEnergiesPtr->fValidData[i].fZ;
83           tmpX = cellEnergiesPtr->fValidData[i].fX;
84           tmpGain =  cellEnergiesPtr->fValidData[i].fGain;
85           
86           if(tmpGain == HIGH_GAIN)
87             {
88               fgLegoPlotHGPtr->Fill(moduleID*N_XCOLUMNS_MOD + tmpX +  N_XCOLUMNS_RCU*cellEnergiesPtr->fRcuX,  
89                                     tmpZ + N_ZROWS_RCU*cellEnergiesPtr->fRcuZ, cellEnergiesPtr->fValidData[i].fEnergy);
90             }
91           
92           else if(tmpGain == LOW_GAIN)
93             {
94               fgLegoPlotLGPtr->Fill(moduleID*N_XCOLUMNS_MOD + tmpX +  N_XCOLUMNS_RCU*cellEnergiesPtr->fRcuX,
95                                     tmpZ + N_ZROWS_RCU*cellEnergiesPtr->fRcuZ,    cellEnergiesPtr->fValidData[i].fEnergy);
96             }
97         }
98       
99       blk = homeReaderPtr->FindBlockNdx("RENELLEC","SOHP", 0xFFFFFFFF, blk+1);
100     }
101 }
102
103
104 void
105 AliHLTPHOSOnlineDisplayEventTab::ResetDisplay()
106 {
107   if(fgAccumulate == kFALSE)
108     {
109       if(fgLegoPlotHGPtr !=0)
110         {
111           fgLegoPlotHGPtr->Reset(); 
112         }
113
114       if(fgLegoPlotLGPtr !=0)
115         {
116           fgLegoPlotLGPtr->Reset();
117         }  
118     }
119  }
120
121
122 void
123 AliHLTPHOSOnlineDisplayEventTab::InitDisplay(TGTab  *tabPtr)
124 {
125
126
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();
132
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();
138
139   TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
140                                          kLHintsExpandY, 2, 2, 15, 1);
141
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);
151   
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);
159   
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);
167   fSubTab1->Resize();
168   tf->AddFrame(fSubTab1, fL1);
169
170   fgEventButtPtr = new  AliHLTPHOSGetEventButton(fSubF1, "get event", 'e');
171 }
172
173
174 void
175 AliHLTPHOSOnlineDisplayEventTab::UpdateDisplay()
176 {
177   fgCanvasHGPtr =  fEc1->GetCanvas();
178   fgCanvasHGPtr->cd();
179   fgLegoPlotHGPtr->Draw("LEGO2Z");
180   fgCanvasHGPtr->Update();
181   fgCanvasLGPtr = fEc2->GetCanvas();
182   fgCanvasLGPtr->cd();
183   fgLegoPlotLGPtr->Draw("LEGO2Z");
184   fgCanvasLGPtr->Update();
185
186   fgCanvasHGPtr =  fEc3->GetCanvas();
187   fgCanvasHGPtr->cd();
188   fgLegoPlotHGPtr->Draw("SCAT");
189   fgCanvasHGPtr->Update();
190   fgCanvasLGPtr = fEc4->GetCanvas();
191   fgCanvasLGPtr->cd();
192   fgLegoPlotLGPtr->Draw("SCAT");
193   fgCanvasLGPtr->Update();
194
195   fgCanvasHGPtr =  fEc5->GetCanvas();
196   fgCanvasHGPtr->cd();
197   fgLegoPlotHGPtr->Draw("CONTZ");
198   fgCanvasHGPtr->Update();
199   fgCanvasLGPtr = fEc6->GetCanvas();
200   fgCanvasLGPtr->cd();
201   fgLegoPlotLGPtr->Draw("CONTZ");
202   fgCanvasLGPtr->Update();
203
204 }