1 // $Id: AliHLTEMCALOnlineDisplayTH2D.cxx 34906 2009-09-21 11:28:15Z odjuvsla $
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 *
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 *
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"
41 AliHLTEMCALOnlineDisplayTH2D::AliHLTEMCALOnlineDisplayTH2D()
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,
54 // fIsSetRunNumber(false)
56 fOnlineDisplayPtr = onlineDisplayPtr;
60 AliHLTEMCALOnlineDisplayTH2D::~AliHLTEMCALOnlineDisplayTH2D()
68 AliHLTEMCAL2DHistogram::ExecuteEvent(Int_t event, Int_t px, Int_t pz)
70 if(event == 61) // CRAP PTH, use root enumerator instead
74 EvaluateBinPosition( GetObjectInfo(px, pz), &zbin, &xbin);
75 printf("\nThe bin that was double clicked was z = %d, x = %d\n", zbin, xbin);
77 HandleDoubleClick(zbin, xbin);
83 AliHLTEMCALOnlineDisplayTH2D::EvaluateBinPosition(const char *info, int *z, int *x)
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;
97 AliHLTEMCALOnlineDisplayTH2D::ExecuteEvent(Int_t event, Int_t px, Int_t pz)
104 EvaluateBinPosition( GetObjectInfo(px, pz), &zbin, &xbin);
106 for(int gain = 0; gain < NGAINS; gain++)
108 cout << __FILE__ << ":" << __LINE__ << ": zbin =" << zbin <<", xbin ="<< xbin << endl;
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);
118 for(int z= 1; z > -2; z--)
120 for(int x=-1; x < XCOLS -1; x ++)
122 fOnlineDisplayPtr->Gain2Text(gain,gainLabel);
126 sprintf(label, "(z = %d, x = %d) %s , run %d", zbin + z, (xbin + x)%64 , gainLabel, fRunNumber);
130 sprintf(label, "(z = %d, x = %d) %s, unknow run number", zbin + z, ( xbin + x)%64, gainLabel);
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();
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);
156 sprintf(label, "(z = %d, x = %d) %s , run %d", zbin , xbin%64, gainLabel, fRunNumber);
160 sprintf(label, "(z = %d, x = %d) %s, unknow run number", zbin , xbin%64, gainLabel);
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");
175 fgRawDataPlotsSinglePtr[gain]->Draw();
177 // fgRawDataPlotsPtr[cnt]->GetYaxis()->SetRangeUser(-30, fgRawDataPlotsPtr[cnt]->GetMaximum() + fgRawDataPlotsPtr[cnt]->GetMaximum()*0.1 + 5);
179 fgRawDataCanvasPtr[gain]->Update();
189 AliHLTEMCALOnlineDisplayTH2D::GetXBin(Int_t px)
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());
199 AliHLTEMCALOnlineDisplayTH2D::GetZBin(Int_t pz)
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);