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 ///////////////////////////////////////////////////////////////////////////////
20 // class for ZDC calibration //
22 ///////////////////////////////////////////////////////////////////////////////
24 #include "AliZDCCalibData.h"
26 ClassImp(AliZDCCalibData)
28 //________________________________________________________________
29 AliZDCCalibData::AliZDCCalibData()
35 //________________________________________________________________
36 AliZDCCalibData::AliZDCCalibData(const char* name)
39 TString namst = "Calib_";
41 SetName(namst.Data());
42 SetTitle(namst.Data());
47 //________________________________________________________________
48 AliZDCCalibData::AliZDCCalibData(const AliZDCCalibData& calibda) :
52 SetName(calibda.GetName());
53 SetTitle(calibda.GetName());
55 for(int t=0; t<47; t++){
56 fMeanPedestal[t] = calibda.GetMeanPed(t);
57 fMeanPedWidth[t] = calibda.GetMeanPedWidth(t);
59 for(int t=0; t<44; t++){
60 fOOTPedestal[t] = calibda.GetOOTPed(t);
61 fOOTPedWidth[t] = calibda.GetOOTPedWidth(t);
62 fPedCorrCoeff[0][t] = calibda.GetPedCorrCoeff0(t);
63 fPedCorrCoeff[1][t] = calibda.GetPedCorrCoeff1(t);
65 for(int t=0; t<6; t++) fEnCalibration[t] = calibda.GetEnCalib(t);
69 //________________________________________________________________
70 AliZDCCalibData &AliZDCCalibData::operator =(const AliZDCCalibData& calibda)
72 // assignment operator
73 SetName(calibda.GetName());
74 SetTitle(calibda.GetName());
76 for(int t=0; t<47; t++){
77 fMeanPedestal[t] = calibda.GetMeanPed(t);
78 fMeanPedWidth[t] = calibda.GetMeanPedWidth(t);
80 for(int t=0; t<44; t++){
81 fOOTPedestal[t] = calibda.GetOOTPed(t);
82 fOOTPedWidth[t] = calibda.GetOOTPedWidth(t);
83 fPedCorrCoeff[0][t] = calibda.GetPedCorrCoeff0(t);
84 fPedCorrCoeff[1][t] = calibda.GetPedCorrCoeff1(t);
86 for(int t=0; t<6; t++) fEnCalibration[t] = calibda.GetEnCalib(t);
91 //________________________________________________________________
92 AliZDCCalibData::~AliZDCCalibData()
97 //________________________________________________________________
98 void AliZDCCalibData::Reset()
101 memset(fMeanPedestal,0,47*sizeof(Float_t));
102 memset(fMeanPedWidth,0,47*sizeof(Float_t));
103 memset(fOOTPedestal,0,44*sizeof(Float_t));
104 memset(fOOTPedWidth,0,44*sizeof(Float_t));
105 memset(fEnCalibration,0,6*sizeof(Float_t));
109 //________________________________________________________________
110 void AliZDCCalibData::CleanHistos()
112 if (fHistMeanPed) delete fHistMeanPed; fHistMeanPed = 0;
115 //________________________________________________________________
116 void AliZDCCalibData::PrepHistos()
118 // CleanHistos(); // this gives a segm.viol!
119 Int_t kNChannels = 47;
120 Float_t kMaxPedVal = 47.;
121 TString hname = GetName(); hname += "_Pedestals";
122 fHistMeanPed = new TH1F(hname.Data(),hname.Data(),kNChannels,0.,kMaxPedVal);
123 for(int i=0; i<47; i++) fHistMeanPed->SetBinContent(i+1,GetMeanPed(i));
127 //________________________________________________________________
128 void AliZDCCalibData::Print(Option_t *) const
130 // Printing of calibration object
131 printf("\n ####### Mean pedestal values ####### \n");
132 for(int t=0; t<47; t++){
133 if(t==0 || t==24) printf("\n\t ZN HighRes -------- \n");
134 else if(t==5 || t==29) printf("\n\t ZN LowRes -------- \n");
135 else if(t==10 || t==34) printf("\n\t ZP HighRes -------- \n");
136 else if(t==15 || t==39) printf("\n\t ZP LowRes -------- \n");
137 else if(t==20) printf("\n\t ZEM1 HighRes -------- ");
138 else if(t==21) printf("\n\t ZEM1 LowRes -------- ");
139 else if(t==22) printf("\n\t ZEM2 HighRes -------- ");
140 else if(t==23) printf("\n\t ZEM2 LowRes -------- ");
141 printf(" MeanPed[ADC%d] = %.1f ",t,fMeanPedestal[t]);
143 printf("\n\n\n ####### Pedestal width values ####### \n");
144 for(int t=0; t<47; t++){
145 if(t==0 || t==24) printf("\n\t ZN HighRes -------- \n");
146 else if(t==5 || t==29) printf("\n\t ZN LowRes -------- \n");
147 else if(t==10 || t==34) printf("\n\t ZP HighRes -------- \n");
148 else if(t==15 || t==39) printf("\n\t ZP LowRes -------- \n");
149 else if(t==20) printf("\n\t ZEM1 HighRes -------- ");
150 else if(t==21) printf("\n\t ZEM1 LowRes -------- ");
151 else if(t==22) printf("\n\t ZEM2 HighRes -------- ");
152 else if(t==23) printf("\n\t ZEM2 LowRes -------- ");
153 printf(" MeanPed[ADC%d] = %.1f ",t,fMeanPedWidth[t]);
156 printf("\n\n\n ####### Out Of Time pedestal values ####### \n");
157 for(int t=0; t<44; t++){
158 if(t==0 || t==24) printf("\n\t ZN HighRes -------- \n");
159 else if(t==5 || t==29) printf("\n\t ZN LowRes -------- \n");
160 else if(t==10 || t==34) printf("\n\t ZP HighRes -------- \n");
161 else if(t==15 || t==39) printf("\n\t ZP LowRes -------- \n");
162 else if(t==20) printf("\n\t ZEM1 HighRes -------- ");
163 else if(t==21) printf("\n\t ZEM1 LowRes -------- ");
164 else if(t==22) printf("\n\t ZEM2 HighRes -------- ");
165 else if(t==23) printf("\n\t ZEM2 LowRes -------- ");
166 printf(" OOTPed[ADC%d] = %.1f ",t,fOOTPedestal[t]);
169 printf("\n\n\n ####### Energy calibration coefficients ####### \n");
170 printf(" ZN1 = %.4f (E[TeV]/ADCch.) \n",fEnCalibration[0]);
171 printf(" ZP1 = %.4f (E[TeV]/ADCch.) \n",fEnCalibration[1]);
172 printf(" ZN2 = %.4f (E[TeV]/ADCch.) \n",fEnCalibration[2]);
173 printf(" ZP2 = %.4f (E[TeV]/ADCch.) \n",fEnCalibration[3]);
174 printf(" ZEM1 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[4]);
175 printf(" ZEM2 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[5]);
178 //________________________________________________________________
179 void AliZDCCalibData::SetMeanPed(Float_t* MeanPed)
181 if(MeanPed) for(int t=0; t<47; t++) fMeanPedestal[t] = MeanPed[t];
182 else for(int t=0; t<47; t++) fMeanPedestal[t] = 0.;
184 //________________________________________________________________
185 void AliZDCCalibData::SetMeanPedWidth(Float_t* MeanPedWidth)
187 if(MeanPedWidth) for(int t=0; t<47; t++) fMeanPedWidth[t] = MeanPedWidth[t];
188 else for(int t=0; t<47; t++) fMeanPedWidth[t] = 0.;
191 //________________________________________________________________
192 void AliZDCCalibData::SetOOTPed(Float_t* OOTPed)
194 if(OOTPed) for(int t=0; t<44; t++) fOOTPedestal[t] = OOTPed[t];
195 else for(int t=0; t<44; t++) fOOTPedestal[t] = 0.;
198 //________________________________________________________________
199 void AliZDCCalibData::SetOOTPedWidth(Float_t* OOTPedWidth)
201 if(OOTPedWidth) for(int t=0; t<44; t++) fOOTPedWidth[t] = OOTPedWidth[t];
202 else for(int t=0; t<44; t++) fOOTPedWidth[t] = 0.;
205 //________________________________________________________________
206 void AliZDCCalibData:: SetPedCorrCoeff(Float_t* PedCorrCoeff)
208 // Set coefficients for pedestal correlations
210 for(Int_t j=0; j<2; j++){
211 for(int t=0; t<44; t++)
212 fPedCorrCoeff[j][t] = PedCorrCoeff[t];
216 for(Int_t j=0; j<2; j++){
217 for(int t=0; t<44; t++)
218 fPedCorrCoeff[j][t] = 0.;
224 //________________________________________________________________
225 void AliZDCCalibData:: SetPedCorrCoeff(Float_t* PedCorrCoeff0, Float_t* PedCorrCoeff1)
227 // Set coefficients for pedestal correlations
228 if(PedCorrCoeff0 && PedCorrCoeff1){
229 for(int t=0; t<44; t++){
230 fPedCorrCoeff[0][t] = PedCorrCoeff0[t];
231 fPedCorrCoeff[0][t] = PedCorrCoeff1[t];
235 for(int t=0; t<44; t++){
236 fPedCorrCoeff[0][t] = 0.;
237 fPedCorrCoeff[1][t] = 0.;
243 //________________________________________________________________
244 void AliZDCCalibData::SetEnCalib(Float_t* EnCalib)
246 // Set energy calibration coefficients
247 if(EnCalib) for(int t=0; t<6; t++) fEnCalibration[t] = EnCalib[t];
248 else for(int t=0; t<6; t++) fEnCalibration[t] = 0.;
251 //________________________________________________________________
252 void AliZDCCalibData::SetPMTHVVal(Float_t* HVVal)
254 // Set PMTs HV values
255 if(HVVal) for(int t=0; t<22; t++) fPMTHVVal[t] = HVVal[t];
256 else for(int t=0; t<22; t++) fPMTHVVal[t] = 0.;
259 //________________________________________________________________
260 void AliZDCCalibData::SetZDCTablePos(Float_t* ZDCTablePos)
262 // Set ZDC table vertical positions
263 if(ZDCTablePos) for(int t=0; t<4; t++) fZDCTablePos[t] = ZDCTablePos[t];
264 else for(int t=0; t<4; t++) fZDCTablePos[t] = 0.;
267 //________________________________________________________________
268 void AliZDCCalibData::SetDCSCalibData(Float_t* DCSData)
270 // Set all DCS data simultaneously
272 for(int t=0; t<4; t++) fZDCTablePos[t] = DCSData[t];
273 for(int t=4; t<26; t++) fPMTHVVal[t] = DCSData[t];
276 for(int t=0; t<4; t++) fZDCTablePos[t] = 0.;
277 for(int t=4; t<26; t++) fPMTHVVal[t] = 0.;