]>
Commit | Line | Data |
---|---|---|
fcbe44bf | 1 | // $Id: AliHLTEMCALOnlineDisplayTH2D.cxx 34906 2009-09-21 11:28:15Z odjuvsla $ |
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 "AliHLTEMCALOnlineDisplayTH2D.h" | |
21 | #include "AliHLTEMCALOnlineDisplay.h" | |
22 | #include "AliHLTEMCALOnlineDisplayEventTab.h" | |
23 | //#include "AliHLTEMCALBase.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 | /* | |
35 | #define PXMIN 55 | |
36 | #define PXMAX 420 | |
37 | #define PZMIN 34 | |
38 | #define PZMAX 251 | |
39 | */ | |
40 | ||
41 | AliHLTEMCALOnlineDisplayTH2D::AliHLTEMCALOnlineDisplayTH2D() | |
42 | { | |
43 | ||
44 | } | |
45 | ||
46 | ||
47 | AliHLTEMCALOnlineDisplayTH2D::AliHLTEMCALOnlineDisplayTH2D(AliHLTEMCALOnlineDisplay *onlineDisplayPtr, const char* name, | |
48 | const char* title, Int_t nbinsx, | |
49 | Double_t xlow, Double_t xup, Int_t nbinsy, | |
50 | Double_t ylow, Double_t yup) : TH2D(name, title, nbinsx, | |
51 | xlow, xup, nbinsy, | |
52 | ylow, yup), | |
53 | fRunNumber(0) | |
54 | // fIsSetRunNumber(false) | |
55 | { | |
56 | fOnlineDisplayPtr = onlineDisplayPtr; | |
57 | } | |
58 | ||
59 | ||
60 | AliHLTEMCALOnlineDisplayTH2D::~AliHLTEMCALOnlineDisplayTH2D() | |
61 | { | |
62 | ||
63 | } | |
64 | ||
65 | ||
66 | /* | |
67 | void | |
68 | AliHLTEMCAL2DHistogram::ExecuteEvent(Int_t event, Int_t px, Int_t pz) | |
69 | { | |
70 | if(event == 61) // CRAP PTH, use root enumerator instead | |
71 | { | |
72 | int zbin; | |
73 | int xbin; | |
74 | EvaluateBinPosition( GetObjectInfo(px, pz), &zbin, &xbin); | |
75 | printf("\nThe bin that was double clicked was z = %d, x = %d\n", zbin, xbin); | |
76 | ||
77 | HandleDoubleClick(zbin, xbin); | |
78 | } | |
79 | } | |
80 | */ | |
81 | ||
82 | void | |
83 | AliHLTEMCALOnlineDisplayTH2D::EvaluateBinPosition(const char *info, int *z, int *x) | |
84 | { | |
85 | float zpos; | |
86 | float xpos; | |
87 | float bincnt; | |
88 | sscanf(info,"(x=%f, y=%f, binx=%d, biny=%d, binc=%2.4f)\n", &zpos, &xpos, z, x, &bincnt); | |
89 | cout << __FILE__ << ":" << __LINE__ <<": z= "<< *z <<", x="<< *x <<", zpos = " << zpos <<", xpos ="<< xpos << ", bincnt = "<< bincnt << endl; | |
90 | ||
91 | ||
92 | ||
93 | } | |
94 | ||
95 | ||
96 | void | |
97 | AliHLTEMCALOnlineDisplayTH2D::ExecuteEvent(Int_t event, Int_t px, Int_t pz) | |
98 | { | |
99 | int zbin; | |
100 | int xbin; | |
101 | ||
102 | if(event == 61) | |
103 | { | |
104 | EvaluateBinPosition( GetObjectInfo(px, pz), &zbin, &xbin); | |
105 | ||
106 | for(int gain = 0; gain < NGAINS; gain++) | |
107 | { | |
108 | cout << __FILE__ << ":" << __LINE__ << ": zbin =" << zbin <<", xbin ="<< xbin << endl; | |
109 | char gainLabel[100]; | |
110 | char label[256]; | |
111 | fOnlineDisplayPtr->Gain2Text(gain,gainLabel); | |
112 | sprintf(label, "%s_EMCAL_HLT_Online_rawdatadisplay",gainLabel); | |
113 | fgRawDataCanvasPtr[gain] = new TCanvas(label, label, 1200, 1000); ; | |
114 | fgRawDataCanvasPtr[gain]->Divide(ZROWS, XCOLS); | |
115 | ||
116 | int cnt = 0; | |
117 | ||
118 | for(int z= 1; z > -2; z--) | |
119 | { | |
120 | for(int x=-1; x < XCOLS -1; x ++) | |
121 | { | |
122 | fOnlineDisplayPtr->Gain2Text(gain,gainLabel); | |
123 | ||
124 | if( fRunNumber >= 0) | |
125 | { | |
126 | sprintf(label, "(z = %d, x = %d) %s , run %d", zbin + z, (xbin + x)%64 , gainLabel, fRunNumber); | |
127 | } | |
128 | else | |
129 | { | |
130 | sprintf(label, "(z = %d, x = %d) %s, unknow run number", zbin + z, ( xbin + x)%64, gainLabel); | |
131 | } | |
132 | ||
133 | ||
134 | cnt ++; | |
135 | fgRawDataPlotsPtr[cnt][gain] = new TH1D(label, label, ALTROMAXSAMPLES, 0, ALTROMAXSAMPLES -1); | |
136 | fgRawDataCanvasPtr[gain]->cd(cnt); | |
137 | fgRawDataPlotsPtr[cnt][gain]->SetFillColor(1); | |
138 | fgRawDataPlotsPtr[cnt][gain]->Reset(); | |
139 | Int_t nSamples = fOnlineDisplayPtr->fgEventTabPtr->GetRawData( fgRawDataPlotsPtr[cnt][gain], xbin +x, zbin +z, gain); | |
140 | fgRawDataPlotsPtr[cnt][gain]->GetXaxis()->SetRangeUser(0, nSamples); | |
141 | 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); | |
142 | fgRawDataPlotsPtr[cnt][gain]->SetXTitle("Time / samples"); | |
143 | fgRawDataPlotsPtr[cnt][gain]->SetYTitle("Amplitude / ADC counts"); | |
144 | fgRawDataPlotsPtr[cnt][gain]->Draw(); | |
145 | } | |
146 | } | |
147 | ||
148 | sprintf(label, "%s_EMCAL_HLT__Online_rawdatadisplay",gainLabel); | |
149 | fgRawDataCanvasSinglePtr[gain] = new TCanvas(label, label, 1200, 1000); ; | |
150 | fgRawDataCanvasSinglePtr[gain]->cd(); | |
151 | // sprintf(label, "Z_%d_X_%d__%s", tmpZBin, tmpXBin, gainLabel); | |
152 | ||
153 | ||
154 | if( fRunNumber >= 0) | |
155 | { | |
156 | sprintf(label, "(z = %d, x = %d) %s , run %d", zbin , xbin%64, gainLabel, fRunNumber); | |
157 | } | |
158 | else | |
159 | { | |
160 | sprintf(label, "(z = %d, x = %d) %s, unknow run number", zbin , xbin%64, gainLabel); | |
161 | } | |
162 | ||
163 | ||
164 | ||
165 | fgRawDataPlotsSinglePtr[gain] = new TH1D(label, label, ALTROMAXSAMPLES, 0, ALTROMAXSAMPLES -1); | |
166 | fgRawDataPlotsSinglePtr[gain]->SetFillColor(1); | |
167 | fgRawDataPlotsSinglePtr[gain]->Reset(); | |
168 | Int_t nSamples = fOnlineDisplayPtr->fgEventTabPtr->GetRawData(fgRawDataPlotsSinglePtr[gain], xbin, zbin , gain); | |
169 | fgRawDataPlotsSinglePtr[gain]->GetXaxis()->SetRangeUser(0, nSamples - 1); | |
170 | fgRawDataPlotsSinglePtr[gain]->GetYaxis()->SetRangeUser(fgRawDataPlotsSinglePtr[gain]->GetMinimum() - fgRawDataPlotsSinglePtr[gain]->GetMinimum()*0.1, fgRawDataPlotsSinglePtr[gain]->GetMaximum() + fgRawDataPlotsSinglePtr[gain]->GetMaximum()*0.1 + 5); | |
171 | //SetXTitle(const char* title) | |
172 | fgRawDataPlotsSinglePtr[gain]->SetXTitle("Time/samples"); | |
173 | fgRawDataPlotsSinglePtr[gain]->SetYTitle("Amplitude/ADC counts"); | |
174 | ||
175 | fgRawDataPlotsSinglePtr[gain]->Draw(); | |
176 | ||
177 | // fgRawDataPlotsPtr[cnt]->GetYaxis()->SetRangeUser(-30, fgRawDataPlotsPtr[cnt]->GetMaximum() + fgRawDataPlotsPtr[cnt]->GetMaximum()*0.1 + 5); | |
178 | ||
179 | fgRawDataCanvasPtr[gain]->Update(); | |
180 | ||
181 | } | |
182 | } | |
183 | } | |
184 | ||
185 | ||
186 | ||
187 | /* | |
188 | int | |
189 | AliHLTEMCALOnlineDisplayTH2D::GetXBin(Int_t px) | |
190 | { | |
191 | float tmpBinRange = GetXaxis()->GetLast() - GetXaxis()->GetFirst(); | |
192 | float tmpPixelRange = PXMAX - PXMIN; | |
193 | float tmpPixRelative = (px - PXMIN)/tmpPixelRange ; | |
194 | int xBin = ((int)((tmpPixRelative)*tmpBinRange) + (float)GetXaxis()->GetFirst()); | |
195 | return xBin; | |
196 | } | |
197 | ||
198 | int | |
199 | AliHLTEMCALOnlineDisplayTH2D::GetZBin(Int_t pz) | |
200 | { | |
201 | float tmpBinRange = GetYaxis()->GetLast() - GetYaxis()->GetFirst(); | |
202 | float tmpPixelRange = PZMAX - PZMIN; | |
203 | float tmpPixRelative = (pz - PZMIN)/tmpPixelRange; | |
204 | int zBin = (int)((1-tmpPixRelative)*tmpBinRange); | |
205 | return zBin; | |
206 | } | |
207 | */ |