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 **************************************************************************/
16 /* $Id: AliVZEROCalibData.cxx, */
18 /////////////////////////////////////////////////////////////////////////////
20 // class for VZERO calibration //
22 /////////////////////////////////////////////////////////////////////////////
25 #include <TObjString.h>
28 #include "AliDCSValue.h"
29 #include "AliVZEROCalibData.h"
31 ClassImp(AliVZEROCalibData)
33 //________________________________________________________________
34 AliVZEROCalibData::AliVZEROCalibData()
36 // default constructor
38 for(int t=0; t<64; t++) {
43 fDeadChannel[t]= kFALSE;
45 for(int t=0; t<128; t++) {
52 for(int i=0; i<kNCIUBoards ;i++) {
53 fTimeResolution[i] = 25./256.; // Default time resolution
54 fWidthResolution[i] = 25./64.; // Default time width resolution
59 //________________________________________________________________
60 void AliVZEROCalibData::Reset()
65 //________________________________________________________________
66 AliVZEROCalibData::AliVZEROCalibData(const char* name)
68 TString namst = "Calib_";
70 SetName(namst.Data());
71 SetTitle(namst.Data());
72 for(int t=0; t<64; t++) {
77 fDeadChannel[t]= kFALSE;
79 for(int t=0; t<128; t++) {
86 for(int i=0; i<kNCIUBoards ;i++) {
87 fTimeResolution[i] = 25./256.; // Default time resolution in ns / channel
88 fWidthResolution[i] = 25./64.; // Default time width resolution in ns / channel
93 //________________________________________________________________
94 AliVZEROCalibData::AliVZEROCalibData(const AliVZEROCalibData& calibda) :
99 SetName(calibda.GetName());
100 SetTitle(calibda.GetName());
102 for(int t=0; t<128; t++) {
103 fPedestal[t] = calibda.GetPedestal(t);
104 fSigma[t] = calibda.GetSigma(t);
105 fADCmean[t] = calibda.GetADCmean(t);
106 fADCsigma[t] = calibda.GetADCsigma(t);
107 fGain[t] = calibda.GetGain(t); }
109 for(int t=0; t<64; t++) {
110 fMeanHV[t] = calibda.GetMeanHV(t);
111 fWidthHV[t] = calibda.GetWidthHV(t);
112 fTimeOffset[t] = calibda.GetTimeOffset(t);
113 fTimeGain[t] = calibda.GetTimeGain(t);
114 fDeadChannel[t] = calibda.IsChannelDead(t);
117 for(int i=0; i<kNCIUBoards ;i++) {
118 fTimeResolution[i] = calibda.GetTimeResolution(i);
119 fWidthResolution[i] = calibda.GetWidthResolution(i);
124 //________________________________________________________________
125 AliVZEROCalibData &AliVZEROCalibData::operator =(const AliVZEROCalibData& calibda)
127 // assignment operator
129 SetName(calibda.GetName());
130 SetTitle(calibda.GetName());
132 for(int t=0; t<128; t++) {
133 fPedestal[t] = calibda.GetPedestal(t);
134 fSigma[t] = calibda.GetSigma(t);
135 fADCmean[t] = calibda.GetADCmean(t);
136 fADCsigma[t] = calibda.GetADCsigma(t);
137 fGain[t] = calibda.GetGain(t); }
139 for(int t=0; t<64; t++) {
140 fMeanHV[t] = calibda.GetMeanHV(t);
141 fWidthHV[t] = calibda.GetWidthHV(t);
142 fTimeOffset[t] = calibda.GetTimeOffset(t);
143 fTimeGain[t] = calibda.GetTimeGain(t);
144 fDeadChannel[t] = calibda.IsChannelDead(t);
146 for(int i=0; i<kNCIUBoards ;i++) {
147 fTimeResolution[i] = calibda.GetTimeResolution(i);
148 fWidthResolution[i] = calibda.GetWidthResolution(i);
155 //________________________________________________________________
156 AliVZEROCalibData::~AliVZEROCalibData()
160 //_____________________________________________________________________________
161 void AliVZEROCalibData::FillDCSData(AliVZERODataDCS * data){
162 // Set all parameters from the data get by the shuttle
163 TMap * params = data->GetFEEParameters();
165 TObjString* aliasName;
167 while (( aliasName = (TObjString*) iter.Next() )) {
168 AliDCSValue* aValue = (AliDCSValue*) params->GetValue(aliasName);
171 val = aValue->GetFloat();
172 //AliInfo(Form("%s : %f",aliasName->String().Data(), val));
173 SetParameter(aliasName->String(),val);
177 SetMeanHV(data->GetMeanHV());
178 SetWidthHV(data->GetWidthHV());
179 SetDeadMap(data->GetDeadMap());
182 //_____________________________________________________________________________
183 void AliVZEROCalibData::SetParameter(TString name, Float_t val){
184 // Set given parameter
188 TSeqCollection* nameSplit = name.Tokenize("/");
189 TObjString * boardName = (TObjString *)nameSplit->At(2);
190 sscanf(boardName->String().Data(),"CIU%d",&iBoard);
192 if(name.Contains("TimeResolution")) SetTimeResolution((UShort_t) val,iBoard-1);
193 else if(name.Contains("WidthResolution")) SetWidthResolution((UShort_t) val,iBoard-1);
194 else AliError(Form("No Setter found for FEE parameter : %s",name.Data()));
197 //________________________________________________________________
198 void AliVZEROCalibData::SetPedestal(Float_t* Pedestal)
200 if(Pedestal) for(int t=0; t<128; t++) fPedestal[t] = Pedestal[t];
201 else for(int t=0; t<128; t++) fPedestal[t] = 0.0;
204 //________________________________________________________________
205 void AliVZEROCalibData::SetSigma(Float_t* Sigma)
207 if(Sigma) for(int t=0; t<128; t++) fSigma[t] = Sigma[t];
208 else for(int t=0; t<128; t++) fSigma[t] = 0.0;
211 //________________________________________________________________
212 void AliVZEROCalibData::SetADCmean(Float_t* ADCmean)
214 if(ADCmean) for(int t=0; t<128; t++) fADCmean[t] = ADCmean[t];
215 else for(int t=0; t<128; t++) fADCmean[t] = 0.0;
218 //________________________________________________________________
219 void AliVZEROCalibData::SetADCsigma(Float_t* ADCsigma)
221 if(ADCsigma) for(int t=0; t<128; t++) fADCsigma[t] = ADCsigma[t];
222 else for(int t=0; t<128; t++) fADCsigma[t] = 0.0;
225 //________________________________________________________________
226 void AliVZEROCalibData::SetMeanHV(Float_t* MeanHV)
228 if(MeanHV) for(int t=0; t<64; t++) fMeanHV[t] = MeanHV[t];
229 else for(int t=0; t<64; t++) fMeanHV[t] = 0.0;
232 //________________________________________________________________
233 void AliVZEROCalibData::SetWidthHV(Float_t* WidthHV)
235 if(WidthHV) for(int t=0; t<64; t++) fWidthHV[t] = WidthHV[t];
236 else for(int t=0; t<64; t++) fWidthHV[t] = 0.0;
239 //________________________________________________________________
240 void AliVZEROCalibData::SetDeadMap(Bool_t* deadMap)
242 if(deadMap) for(int t=0; t<64; t++) fDeadChannel[t] = deadMap[t];
243 else for(int t=0; t<64; t++) fDeadChannel[t] = kFALSE;
246 //________________________________________________________________
247 void AliVZEROCalibData::SetGain(Float_t* Gain)
249 if(Gain) for(int t=0; t<128; t++) fGain[t] = Gain[t];
250 else for(int t=0; t<128; t++) fGain[t] = 0.0;
253 //________________________________________________________________
254 void AliVZEROCalibData::SetTimeOffset(Float_t* TimeOffset)
256 if(TimeOffset) for(int t=0; t<64; t++) fTimeOffset[t] = TimeOffset[t];
257 else for(int t=0; t<64; t++) fTimeOffset[t] = 0.0;
260 //________________________________________________________________
261 void AliVZEROCalibData::SetTimeGain(Float_t* TimeGain)
263 if(TimeGain) for(int t=0; t<64; t++) fTimeGain[t] = TimeGain[t];
264 else for(int t=0; t<64; t++) fTimeGain[t] = 0.0;
267 //_____________________________________________________________________________
268 Float_t AliVZEROCalibData::GetMIPperADC(Int_t channel) const {
270 // Computes the MIP conversion factor - MIP per ADC channel -
271 // Argument passed is the PM number (aliroot numbering)
274 7.094891, 7.124938, 7.089708, 7.098169, 7.094482, 7.147250, 7.170978, 7.183392,
275 7.145760, 7.148096, 7.153840, 7.143544, 7.186069, 7.194580, 7.203516, 7.195176,
276 7.188333, 7.198607, 7.209412, 7.226565, 7.221695, 7.205132, 7.191238, 7.227724,
277 7.232810, 7.252655, 7.230309, 7.273518, 7.273518, 7.242969, 7.252859, 7.252655,
278 7.026802, 7.079913, 7.134147, 7.092387, 7.079561, 7.072848, 7.123192, 7.003141,
279 7.024667, 7.124784, 7.123442, 7.129744, 7.110671, 7.143031, 7.139439, 7.178109,
280 7.247803, 7.139396, 7.293809, 7.094454, 6.992198, 7.206448, 7.244765, 7.056197,
281 7.263595, 7.138569, 7.089582, 7.215683, 7.266183, 7.165123, 7.243276, 7.235135 };
283 0.135569, 0.146405, 0.142425, 0.144278, 0.142307, 0.141648, 0.128477, 0.138239,
284 0.144173, 0.143419, 0.143572, 0.144482, 0.138024, 0.136542, 0.135955, 0.138537,
285 0.148521, 0.141999, 0.139627, 0.130014, 0.134970, 0.135635, 0.139094, 0.140634,
286 0.137971, 0.142080, 0.142793, 0.142778, 0.142778, 0.146045, 0.139133, 0.142080,
287 0.144121, 0.142311, 0.136564, 0.142686, 0.138792, 0.166285, 0.136387, 0.155391,
288 0.176082, 0.140408, 0.164738, 0.144270, 0.142766, 0.147486, 0.141951, 0.138012,
289 0.132394, 0.142849, 0.140477, 0.144592, 0.141558, 0.157646, 0.143758, 0.173385,
290 0.146489, 0.143279, 0.145230, 0.147203, 0.147333, 0.144979, 0.148597, 0.138985 };
292 // High Voltage retrieval from Calibration Data Base:
293 Float_t HV = fMeanHV[channel];
296 MIP = 0.5/TMath::Exp((TMath::Log(HV) - P0[channel] )/P1[channel]);
300 //________________________________________________________________
301 void AliVZEROCalibData::SetTimeResolution(UShort_t *resols){
302 // Set Time Resolution of the TDC
303 if(resols) for(int t=0; t<kNCIUBoards; t++) SetTimeResolution(resols[t],t);
304 else AliFatal("Time Resolution not defined.");
307 //________________________________________________________________
308 void AliVZEROCalibData::SetTimeResolution(UShort_t resol, Int_t board)
310 // Set Time Resolution of the TDC
311 if((board<kNCIUBoards)) {
314 fTimeResolution[board] = 25./256.;
317 fTimeResolution[board] = 25./128.;
320 fTimeResolution[board] = 25./64.;
323 fTimeResolution[board] = 25./32.;
326 fTimeResolution[board] = 25./16.;
329 fTimeResolution[board] = 25./8.;
332 fTimeResolution[board] = 6.25;
335 fTimeResolution[board] = 12.5;
338 } else AliError(Form("Board %d is not valid",board));
340 //________________________________________________________________
341 void AliVZEROCalibData::SetWidthResolution(UShort_t *resols){
342 // Set Time Width Resolution of the TDC
343 if(resols) for(int t=0; t<kNCIUBoards; t++) SetWidthResolution(resols[t],t);
344 else AliFatal("Width Resolution not defined.");
347 //________________________________________________________________
348 void AliVZEROCalibData::SetWidthResolution(UShort_t resol, Int_t board)
350 // Set Time Width Resolution of the TDC
351 if((board<kNCIUBoards)){
354 fWidthResolution[board] = 25./256.;
357 fWidthResolution[board] = 25./128.;
360 fWidthResolution[board] = 25./64.;
363 fWidthResolution[board] = 25./32.;
366 fWidthResolution[board] = 25./16.;
369 fWidthResolution[board] = 25./8.;
372 fWidthResolution[board] = 6.25;
375 fWidthResolution[board] = 12.5;
378 fWidthResolution[board] = 25.;
381 fWidthResolution[board] = 50.;
384 fWidthResolution[board] = 100.;
387 fWidthResolution[board] = 200.;
390 fWidthResolution[board] = 400.;
393 fWidthResolution[board] = 800.;
397 }else AliError(Form("Board %d is not valid",board));