]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplayTH2D.cxx
Debug msg
[u/mrichter/AliRoot.git] / HLT / PHOS / OnlineDisplay / AliHLTPHOSOnlineDisplayTH2D.cxx
1 // $Id$
2
3 /**************************************************************************
4  * This file is property of and copyright by the Experimental Nuclear     *
5  * Physics Group, Dep. of Physics                                         *
6  * University of Oslo, Norway, 2007                                       *
7  *                                                                        *
8  * Author: Per Thomas Hille <perthi@fys.uio.no> for the ALICE HLT Project.*
9  * Contributors are mentioned in the code where appropriate.              *
10  * Please report bugs to perthi@fys.uio.no                                *
11  *                                                                        *
12  * Permission to use, copy, modify and distribute this software and its   *
13  * documentation strictly for non-commercial purposes is hereby granted   *
14  * without fee, provided that the above copyright notice appears in all   *
15  * copies and that both the copyright notice and this permission notice   *
16  * appear in the supporting documentation. The authors make no claims     *
17  * about the suitability of this software for any purpose. It is          *
18  * provided "as is" without express or implied warranty.                  *
19  **************************************************************************/
20 #include "AliHLTPHOSOnlineDisplayTH2D.h"
21 #include "AliHLTPHOSOnlineDisplay.h"
22 #include "AliHLTPHOSOnlineDisplayEventTab.h"
23 //#include "AliHLTPHOSBase.h"
24
25 #include <iostream>
26
27 using namespace std;
28
29 // #define PX_MIN 85
30 // #define PX_MAX 688
31 // #define PZ_MIN 60
32 // #define PZ_MAX 380
33
34 #define PXMIN 55
35 #define PXMAX 420
36 #define PZMIN 34
37 #define PZMAX 251
38
39
40 AliHLTPHOSOnlineDisplayTH2D::AliHLTPHOSOnlineDisplayTH2D()
41 {
42
43 }
44
45
46 AliHLTPHOSOnlineDisplayTH2D::AliHLTPHOSOnlineDisplayTH2D(AliHLTPHOSOnlineDisplay *onlineDisplayPtr, const char* name, 
47                                                          const char* title, Int_t nbinsx, 
48                                                          Double_t xlow, Double_t xup, Int_t nbinsy, 
49                                                          Double_t ylow, Double_t yup) : TH2D(name, title, nbinsx, 
50                                                                                              xlow, xup, nbinsy, 
51                                                                                              ylow, yup),
52                                                                                         fRunNumber(0) 
53                                                                                         //              fIsSetRunNumber(false)
54 {
55   fOnlineDisplayPtr = onlineDisplayPtr;
56 }
57
58
59 AliHLTPHOSOnlineDisplayTH2D::~AliHLTPHOSOnlineDisplayTH2D()
60 {
61   
62 }
63
64
65 /*
66   void
67   AliHLTPHOS2DHistogram::ExecuteEvent(Int_t event, Int_t px, Int_t pz)
68   {
69   if(event == 61) // CRAP PTH, use root enumerator instead 
70   {
71   int zbin;
72   int xbin;
73   EvaluateBinPosition( GetObjectInfo(px, pz),  &zbin, &xbin);
74   printf("\nThe bin that was double clicked was z = %d, x = %d\n", zbin, xbin);
75  
76   HandleDoubleClick(zbin, xbin);
77   }
78 }
79 */
80
81 void
82 AliHLTPHOSOnlineDisplayTH2D::EvaluateBinPosition(const char *info, int *z, int *x)
83 {
84   float zpos;
85   float xpos;
86   float bincnt;
87   sscanf(info,"(x=%f, y=%f, binx=%d, biny=%d, binc=%2.4f)\n", &zpos, &xpos, z, x, &bincnt);
88 }
89
90
91 void
92 AliHLTPHOSOnlineDisplayTH2D::ExecuteEvent(Int_t event, Int_t px, Int_t pz)
93 {
94   int tmpZBin = 0;
95   int tmpXBin = 0;
96
97   for(int gain = 0; gain < NGAINS; gain++)
98     {
99       if(event == 61)
100         {
101           char gainLabel[100];
102           char label[256];
103           fOnlineDisplayPtr->Gain2Text(gain,gainLabel);
104           sprintf(label, "%s_PHOS_HLT_Online_rawdatadisplay",gainLabel);
105           fgRawDataCanvasPtr[gain] = new TCanvas(label, label, 1200, 1000); ;
106           
107           
108           tmpZBin =  GetZBin(pz);
109           tmpXBin =  GetXBin(px);
110           
111           if(tmpZBin > 54) {tmpZBin = 54;}
112           if(tmpZBin < 1) {tmpZBin = 1;}
113           
114           // int tmpZBin = 0;
115           // int tmpXBin = 0;
116
117           /*
118           EvaluateBinPosition( GetObjectInfo(px, pz),  &tmpZBin, &tmpXBin);
119           */
120           cout << "px = " << px << "pz =" << pz << endl;
121           cout << __FILE__ << ":" <<__LINE__ << " ObjectInfo IS !!" <<  GetObjectInfo(px, pz)  << endl;
122
123           fgRawDataCanvasPtr[gain]->Divide(ZROWS, XCOLS); 
124           int cnt = 0;
125     
126           for(int z= 1; z > -2; z--)
127             {
128               for(int x=-1; x < XCOLS -1; x ++)
129                 {
130                   fOnlineDisplayPtr->Gain2Text(gain,gainLabel);
131
132                   if( fRunNumber >= 0)
133                     {
134                       sprintf(label, "(z = %d, x = %d) %s , run %d",  tmpZBin + z, (tmpXBin + x)%64 , gainLabel, fRunNumber);
135
136                     }
137                   else
138                     {
139                       sprintf(label, "(z = %d, x = %d) %s, unknow run number",  tmpZBin + z, (tmpXBin + x)%64,  gainLabel); 
140                     }
141
142
143                   cnt ++;
144                   fgRawDataPlotsPtr[cnt][gain] = new TH1D(label, label, ALTROMAXSAMPLES, 0, ALTROMAXSAMPLES -1);
145                   fgRawDataCanvasPtr[gain]->cd(cnt);     
146                   fgRawDataPlotsPtr[cnt][gain]->SetFillColor(1);
147                   fgRawDataPlotsPtr[cnt][gain]->Reset();   
148                   Int_t nSamples = fOnlineDisplayPtr->fgEventTabPtr->GetRawData( fgRawDataPlotsPtr[cnt][gain], tmpXBin +x, tmpZBin +z, gain); 
149                   fgRawDataPlotsPtr[cnt][gain]->GetXaxis()->SetRangeUser(0, nSamples);
150                   fgRawDataPlotsPtr[cnt][gain]->GetYaxis()->SetRangeUser(fgRawDataPlotsPtr[cnt][gain]->GetMinimum() - fgRawDataPlotsPtr[cnt][gain]->GetMinimum()*0.1, fgRawDataPlotsPtr[cnt][gain]->GetMaximum() + fgRawDataPlotsPtr[cnt][gain]->GetMaximum()*0.1 + 5); 
151                   fgRawDataPlotsPtr[cnt][gain]->SetXTitle("Time / samples");
152                   fgRawDataPlotsPtr[cnt][gain]->SetYTitle("Amplitude / ADC counts");
153                   fgRawDataPlotsPtr[cnt][gain]->Draw();
154                 }
155             }
156
157           sprintf(label, "%s_PHOS_HLT__Online_rawdatadisplay",gainLabel);
158           fgRawDataCanvasSinglePtr[gain] = new TCanvas(label, label, 1200, 1000); ;  
159           fgRawDataCanvasSinglePtr[gain]->cd();
160           //      sprintf(label, "Z_%d_X_%d__%s",  tmpZBin, tmpXBin, gainLabel);
161
162           
163           if( fRunNumber >= 0)
164             {
165               sprintf(label, "(z = %d, x = %d) %s , run %d",  tmpZBin, tmpXBin%64, gainLabel, fRunNumber);
166             }
167           else
168             {
169               sprintf(label, "(z = %d, x = %d) %s, unknow run number",  tmpZBin, tmpXBin%64, gainLabel); 
170             }
171
172
173
174           fgRawDataPlotsSinglePtr[gain] = new TH1D(label, label, ALTROMAXSAMPLES, 0, ALTROMAXSAMPLES -1);
175           fgRawDataPlotsSinglePtr[gain]->SetFillColor(1);
176           fgRawDataPlotsSinglePtr[gain]->Reset();   
177           Int_t nSamples = fOnlineDisplayPtr->fgEventTabPtr->GetRawData(fgRawDataPlotsSinglePtr[gain], tmpXBin, tmpZBin, gain); 
178           fgRawDataPlotsSinglePtr[gain]->GetXaxis()->SetRangeUser(0, nSamples - 1);
179           fgRawDataPlotsSinglePtr[gain]->GetYaxis()->SetRangeUser(fgRawDataPlotsSinglePtr[gain]->GetMinimum() - fgRawDataPlotsSinglePtr[gain]->GetMinimum()*0.1, fgRawDataPlotsSinglePtr[gain]->GetMaximum() + fgRawDataPlotsSinglePtr[gain]->GetMaximum()*0.1 + 5); 
180           //SetXTitle(const char* title)
181           fgRawDataPlotsSinglePtr[gain]->SetXTitle("Time/samples");
182           fgRawDataPlotsSinglePtr[gain]->SetYTitle("Amplitude/ADC counts");
183
184           fgRawDataPlotsSinglePtr[gain]->Draw();
185
186                   //          fgRawDataPlotsPtr[cnt]->GetYaxis()->SetRangeUser(-30, fgRawDataPlotsPtr[cnt]->GetMaximum() + fgRawDataPlotsPtr[cnt]->GetMaximum()*0.1 + 5); 
187
188           fgRawDataCanvasPtr[gain]->Update();
189           
190         }
191     }
192 }
193
194 int
195 AliHLTPHOSOnlineDisplayTH2D::GetXBin(Int_t px)
196 {
197   float tmpBinRange = GetXaxis()->GetLast() -  GetXaxis()->GetFirst();
198   float tmpPixelRange =   PXMAX  -   PXMIN;
199   float tmpPixRelative = (px - PXMIN)/tmpPixelRange ;
200   int xBin = ((int)((tmpPixRelative)*tmpBinRange) +  (float)GetXaxis()->GetFirst());
201   return xBin;
202 }
203
204 int
205 AliHLTPHOSOnlineDisplayTH2D::GetZBin(Int_t pz)
206 {
207   float tmpBinRange = GetYaxis()->GetLast() -  GetYaxis()->GetFirst();
208   float tmpPixelRange =   PZMAX  -   PZMIN;
209   float tmpPixRelative = (pz - PZMIN)/tmpPixelRange;
210   int zBin = (int)((1-tmpPixRelative)*tmpBinRange);
211   return zBin;
212 }