1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 //_________________________________________________________________________
19 ///*-- Author: Yves Schutz (SUBATECH)
20 // : Aleksei Pavlinov (WSU); Jun 30, 2006 - ALICE numbering scheme
21 ///////////////////////////////////////////////////////////////////////////////
23 // class for EMCAL calibration //
25 ///////////////////////////////////////////////////////////////////////////////
29 #include "AliEMCALCalibData.h"
31 ClassImp(AliEMCALCalibData)
33 //________________________________________________________________
34 AliEMCALCalibData::AliEMCALCalibData()
36 // Default constructor
40 //________________________________________________________________
41 AliEMCALCalibData::AliEMCALCalibData(const char* name)
44 TString namst = "Calib_";
46 SetName(namst.Data());
47 SetTitle(namst.Data());
51 //________________________________________________________________
52 AliEMCALCalibData::AliEMCALCalibData(const AliEMCALCalibData& calibda) :
56 SetName(calibda.GetName());
57 SetTitle(calibda.GetName());
60 Int_t nSMod = AliEMCALGeoParams::fgkEMCALModules; //12
61 Int_t nCol = AliEMCALGeoParams::fgkEMCALCols; //48
62 Int_t nRow = AliEMCALGeoParams::fgkEMCALRows; //24
63 Int_t nRow2 = AliEMCALGeoParams::fgkEMCALRows; //12 - Modules 11 and 12 are half modules
65 for(Int_t supermodule=0; supermodule<nSMod; supermodule++) {
68 for(Int_t column=0; column<nCol; column++) {
69 for(Int_t row=0; row<nRow; row++) {
70 fADCchannel[supermodule][column][row] =
71 calibda.GetADCchannel(supermodule,column,row);
72 fADCpedestal[supermodule][column][row] =
73 calibda.GetADCpedestal(supermodule,column,row);
80 //________________________________________________________________
81 AliEMCALCalibData &AliEMCALCalibData::operator =(const AliEMCALCalibData& calibda)
83 // assignment operator
84 SetName(calibda.GetName());
85 SetTitle(calibda.GetName());
88 Int_t nSMod = AliEMCALGeoParams::fgkEMCALModules; //12
89 Int_t nCol = AliEMCALGeoParams::fgkEMCALCols; //48
90 Int_t nRow = AliEMCALGeoParams::fgkEMCALRows; //24
91 Int_t nRow2 = AliEMCALGeoParams::fgkEMCALRows/2; //12 - Modules 11 and 12 are half modules
93 for(Int_t supermodule=0; supermodule<nSMod; supermodule++) {
96 for(Int_t column=0; column<nCol; column++) {
97 for(Int_t row=0; row<nRow; row++) {
98 fADCchannel[supermodule][column][row] =
99 calibda.GetADCchannel(supermodule,column,row);
100 fADCpedestal[supermodule][column][row] =
101 calibda.GetADCpedestal(supermodule,column,row);
108 //________________________________________________________________
109 AliEMCALCalibData::~AliEMCALCalibData()
114 //________________________________________________________________
115 void AliEMCALCalibData::Reset()
117 // Set all pedestals to 0 and all ADC channels widths to 1
118 //memset(fADCchannel ,1,12*48*24*sizeof(Float_t));
119 //memset(fADCpedestal,0,12*48*24*sizeof(Float_t));
120 Int_t nSMod = AliEMCALGeoParams::fgkEMCALModules; //12
121 Int_t nCol = AliEMCALGeoParams::fgkEMCALCols; //48
122 Int_t nRow = AliEMCALGeoParams::fgkEMCALRows; //24
123 Int_t nRow2 = AliEMCALGeoParams::fgkEMCALRows/2; //12 - Modules 11 and 12 are half modules
124 for (Int_t supermodule=0; supermodule<nSMod; supermodule++){
125 if(supermodule >= 10)
127 for (Int_t column=0; column<nCol; column++){
128 for (Int_t row=0; row<nRow; row++){
129 fADCpedestal[supermodule][column][row]=0.;
130 fADCchannel [supermodule][column][row]=1.;
136 //________________________________________________________________
137 void AliEMCALCalibData::Print(Option_t *option) const
139 // Print tables of pedestals and ADC channels widths
141 Int_t nSMod = AliEMCALGeoParams::fgkEMCALModules; //12
142 Int_t nCol = AliEMCALGeoParams::fgkEMCALCols; //48
143 Int_t nRow = AliEMCALGeoParams::fgkEMCALRows; //24
144 Int_t nRow2 = AliEMCALGeoParams::fgkEMCALRows/2; //12 - Modules 11 and 12 are half modules
145 if (strstr(option,"ped")) {
146 printf("\n ---- Pedestal values ----\n\n");
147 for (Int_t supermodule=0; supermodule<nSMod; supermodule++){
148 if(supermodule >= 10)
150 printf("============== Supermodule %d\n",supermodule+1);
151 for (Int_t column=0; column<nCol; column++){
152 for (Int_t row=0; row<nRow; row++){
153 printf(" %2.4f ",fADCpedestal[supermodule][column][row]);
161 if (strstr(option,"gain")) {
162 printf("\n ---- ADC channel values ----\n\n");
163 for (Int_t supermodule=0; supermodule<nSMod; supermodule++){
164 if(supermodule >= 10)
166 printf("============== Supermodule %d\n",supermodule+1);
167 for (Int_t column=0; column<nCol; column++){
168 for (Int_t row=0; row<nRow; row++){
169 printf(" %2.4f ",fADCchannel[supermodule][column][row]);
177 //________________________________________________________________
178 Float_t AliEMCALCalibData::GetADCchannel(Int_t supermodule, Int_t column, Int_t row) const
180 // Set ADC channel witdth values
181 // All indexes start from 0!
182 // Supermodule, column,raw should follow the ALICE convention:
183 // supermodule 0:11, column 0:47, row 0:23
185 return fADCchannel[supermodule][column][row];
188 //________________________________________________________________
189 Float_t AliEMCALCalibData::GetADCpedestal(Int_t supermodule, Int_t column, Int_t row) const
191 // Get ADC pedestal values
192 return fADCpedestal[supermodule][column][row];
195 //________________________________________________________________
196 void AliEMCALCalibData::SetADCchannel(Int_t supermodule, Int_t column, Int_t row, Float_t value)
198 // Set ADC channel width values
199 fADCchannel[supermodule][column][row] = value;
202 //________________________________________________________________
203 void AliEMCALCalibData::SetADCpedestal(Int_t supermodule, Int_t column, Int_t row, Float_t value)
205 // Set ADC pedestal values
206 fADCpedestal[supermodule][column][row] = value;