]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - ITS/AliITSCalibrationSDD.cxx
Format fixed in Logs lines.
[u/mrichter/AliRoot.git] / ITS / AliITSCalibrationSDD.cxx
... / ...
CommitLineData
1/**************************************************************************
2 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16/* $Id$ */
17
18#include <Riostream.h>
19#include <TRandom.h>
20#include "AliITSCalibrationSDD.h"
21#include "AliLog.h"
22
23//////////////////////////////////////////////////////
24// Calibration class for set:ITS //
25// Specific subdetector implementation //
26// for silicon drift detectors //
27// //
28// //
29//////////////////////////////////////////////////////
30
31const Float_t AliITSCalibrationSDD::fgkTemperatureDefault = 296.;
32const Float_t AliITSCalibrationSDD::fgkNoiseDefault = 2.38;
33const Float_t AliITSCalibrationSDD::fgkGainDefault = 1.;
34const Float_t AliITSCalibrationSDD::fgkBaselineDefault = 20.;
35//______________________________________________________________________
36ClassImp(AliITSCalibrationSDD)
37
38AliITSCalibrationSDD::AliITSCalibrationSDD():
39AliITSCalibration(),
40fDeadChips(0),
41fDeadChannels(0),
42fIsBad(kFALSE),
43fBadChannels(),
44fUseACorrMap(0),
45fUseTCorrMap(0),
46fMapAW0(0),
47fMapAW1(0),
48fMapTW0(0),
49fMapTW1(0),
50fDrSpeed0(0),
51fDrSpeed1(0)
52{
53 // default constructor
54
55 SetDeadChannels();
56 for(Int_t ian=0;ian<fgkWings*fgkChannels*fgkChips;ian++){
57 fBaseline[ian]=fgkBaselineDefault;
58 fNoise[ian]=fgkNoiseDefault;
59 fGain[ian]=1.;
60 SetNoiseAfterElectronics(ian);
61 }
62 for(Int_t iw=0;iw<fgkWings;iw++){
63 SetZSLowThreshold(iw);
64 SetZSHighThreshold(iw);
65 for(Int_t icp=0;icp<fgkChips;icp++){
66 Int_t chipindex=iw*fgkChips+icp;
67 fIsChipBad[chipindex]=kFALSE;
68 }
69 }
70 SetTemperature(fgkTemperatureDefault);
71 SetUseCorrectionMaps(kTRUE,kTRUE);
72 SetDataType();
73 }
74//______________________________________________________________________
75AliITSCalibrationSDD::AliITSCalibrationSDD(const char *dataType):
76AliITSCalibration(),
77fDeadChips(0),
78fDeadChannels(0),
79fIsBad(kFALSE),
80fBadChannels(),
81fUseACorrMap(0),
82fUseTCorrMap(0),
83fMapAW0(0),
84fMapAW1(0),
85fMapTW0(0),
86fMapTW1(0),
87fDrSpeed0(0),
88fDrSpeed1(0)
89{
90 // constructor
91
92 SetDeadChannels();
93 for(Int_t ian=0;ian<fgkWings*fgkChannels*fgkChips;ian++){
94 fBaseline[ian]=fgkBaselineDefault;
95 fNoise[ian]=fgkNoiseDefault;
96 fGain[ian]=1.;
97 SetNoiseAfterElectronics(ian);
98 }
99 for(Int_t iw=0;iw<fgkWings;iw++){
100 SetZSLowThreshold(iw);
101 SetZSHighThreshold(iw);
102 for(Int_t icp=0;icp<fgkChips;icp++){
103 Int_t chipindex=iw*fgkChips+icp;
104 fIsChipBad[chipindex]=kFALSE;
105 }
106 }
107
108 SetTemperature(fgkTemperatureDefault);
109 SetUseCorrectionMaps(kTRUE,kTRUE);
110 SetDataType(dataType);
111 }
112//_____________________________________________________________________
113AliITSCalibrationSDD::~AliITSCalibrationSDD(){
114
115 //destructor
116 if(fMapAW0) delete fMapAW0;
117 if(fMapAW1) delete fMapAW1;
118 if(fMapTW0) delete fMapTW0;
119 if(fMapTW1) delete fMapTW1;
120 if(fDrSpeed0) delete fDrSpeed0;
121 if(fDrSpeed1) delete fDrSpeed1;
122}
123
124//______________________________________________________________________
125void AliITSCalibrationSDD::GiveCompressParam(Int_t cp[4]) const {
126 // give compression param
127 cp[0]=fZSTH[0];
128 cp[1]=fZSTL[0];
129 cp[2]=fZSTH[1];
130 cp[3]=fZSTL[1];
131}
132//_____________________________________________________________________
133void AliITSCalibrationSDD::SetBadChannel(Int_t i,Int_t anode){
134 //Set bad anode (set gain=0 for these channels);
135
136 if(anode<0 || anode >fgkChannels*fgkChips*fgkWings-1)AliError("Wrong anode number");
137 fBadChannels[i]=anode;
138 fGain[anode]=0;
139}
140//______________________________________________________________________
141void AliITSCalibrationSDD::GetCorrections(Float_t z, Float_t x, Float_t &devz, Float_t &devx, AliITSsegmentationSDD* seg){
142 //correction of coordinates using the maps stored in the DB
143 Int_t nSide=seg->GetSideFromLocalX(x);
144 devz=0;
145 if(fUseACorrMap){
146 if(nSide==0) devz=fMapAW0->GetCorrection(z,x,seg);
147 else devz=fMapAW1->GetCorrection(z,x,seg);
148 }
149 devx=0;
150 if(fUseTCorrMap){
151 if(nSide==0) devx=fMapTW0->GetCorrection(z,x,seg);
152 else devx=fMapTW1->GetCorrection(z,x,seg);
153 }
154 return;
155}
156//______________________________________________________________________
157void AliITSCalibrationSDD::PrintGains() const{
158 //
159
160 if( GetDeadChips() == 0 &&
161 GetDeadChannels() == 0 )
162 return;
163
164 // Print Electronics Gains
165 cout << "**************************************************" << endl;
166 cout << " Print Electronics Gains " << endl;
167 cout << "**************************************************" << endl;
168
169 // Print SDD electronic gains
170 for(Int_t ian=0; ian<fgkWings*fgkChips*fgkChannels;ian++){
171 printf("Gain for channel %d = %f\n",ian,fGain[ian]);
172 }
173}
174
175//______________________________________________________________________
176void AliITSCalibrationSDD::Print(){
177 // Print SDD response Parameters
178
179 cout << "**************************************************" << endl;
180 cout << " Silicon Drift Detector Response Parameters " << endl;
181 cout << "**************************************************" << endl;
182 cout << "Hardware compression parameters: " << endl;
183 cout << "Noise before electronics (arbitrary units): " << fNoise[0] << endl;
184 cout << "Baseline (ADC units): " << fBaseline[0] << endl;
185 cout << "Noise after electronics (ADC units): " << fNoiseAfterEl[0] << endl;
186 cout << "Temperature: " << Temperature() << " K " << endl;
187 PrintGains();
188
189}