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 #include "AliITSCalibrationSPD.h"
20 const Double_t AliITSCalibrationSPD::fgkThreshDefault = 3000.;
21 const Double_t AliITSCalibrationSPD::fgkSigmaDefault = 250.;
22 const Double_t AliITSCalibrationSPD::fgkCouplColDefault = 0.;
23 const Double_t AliITSCalibrationSPD::fgkCouplRowDefault = 0.047;
24 const Double_t AliITSCalibrationSPD::fgkBiasVoltageDefault = 18.182;
26 ClassImp(AliITSCalibrationSPD)
27 ///////////////////////////////////////////////////////////////////////////
28 // Calibration class for set:ITS
29 // Specific subdetector implementation for
32 // Modified by D. Elia, G.E. Bruno, H. Tydesjo
35 ///////////////////////////////////////////////////////////////////////////
37 //______________________________________________________________________
38 AliITSCalibrationSPD::AliITSCalibrationSPD():
42 fThresh(fgkThreshDefault),
43 fSigma(fgkSigmaDefault),
44 fCouplCol(fgkCouplColDefault),
45 fCouplRow(fgkCouplRowDefault),
46 fBiasVoltage(fgkBiasVoltageDefault),
53 SetThresholds(fgkThreshDefault,fgkSigmaDefault);
54 SetCouplingParam(fgkCouplColDefault,fgkCouplRowDefault);
55 SetBiasVoltage(fgkBiasVoltageDefault);
57 SetDataType("simulated");
59 //_________________________________________________________________________
61 void AliITSCalibrationSPD::AddDead(UInt_t col, UInt_t row) {
63 // Add a dead channel to fDeadChannel array
65 fDeadChannels.Set(fNrDead*2+2);
66 fDeadChannels.AddAt(col,fNrDead*2);
67 fDeadChannels.AddAt(row,fNrDead*2+1);
70 //_________________________________________________________________________
71 Int_t AliITSCalibrationSPD::GetDeadColAt(UInt_t index) {
73 // Returns column of index-th dead channel
76 return fDeadChannels.At(index*2);
80 //_________________________________________________________________________
81 Int_t AliITSCalibrationSPD::GetDeadRowAt(UInt_t index) {
83 // Returns row of index-th dead channel
86 return fDeadChannels.At(index*2+1);
90 //_________________________________________________________________________
91 Bool_t AliITSCalibrationSPD::IsPixelDead(Int_t col, Int_t row) const {
93 // Check if pixel (col,row) is dead
95 for (UInt_t i=0; i<fNrDead; i++) {
96 if (fDeadChannels.At(i*2)==col && fDeadChannels.At(i*2+1)==row) {
103 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
104 //___________________________________________________________________________
105 // THIS METHOD SHOULD BE DELETED AS SOON AS POSSIBLE!!!!!!!!!!!!!!!!!!!!!!!!!
106 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
107 Bool_t AliITSCalibrationSPD::IsPixelDead(Int_t mod,Int_t ix,Int_t iz) const {
108 // Returns kTRUE if pixel is dead
110 // Int_t mod module number
111 // Int_t ix x pixel number
112 // Int_t iz z pixel number
116 // kFALSE if pixel is alive, or kTRUE if pixel is dead.
118 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
119 Double_t fDeadPixels = 0.01; // fix to keep AliITSsimulationSPDdubna alive!!!
120 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
122 Bool_t dead = kFALSE;
124 static TRandom ran; // don't use gRandom. This must not be a true randome
125 // sequence. These sequence must be random one and then fully repetable.
127 seed = mod*256*256+iz*256+ix;
129 if(ran.Rndm(0)<fDeadPixels) dead = kTRUE;
132 //____________________________________________________________________________
133 void AliITSCalibrationSPD::AddNoisy(UInt_t col, UInt_t row) {
137 fDeadChannels.Set(fNrNoisy*2+2);
138 fNoisyChannels.AddAt(col,fNrNoisy*2);
139 fNoisyChannels.AddAt(row,fNrNoisy*2+1);
142 //____________________________________________________________________________
143 Int_t AliITSCalibrationSPD::GetNoisyColAt(UInt_t index) {
145 // Get column of index-th noisy pixel
147 if (index<fNrNoisy) {
148 return fNoisyChannels.At(index*2);
152 //____________________________________________________________________________
153 Int_t AliITSCalibrationSPD::GetNoisyRowAt(UInt_t index) {
155 // Get row of index-th noisy pixel
157 if (index<fNrNoisy) {
158 return fNoisyChannels.At(index*2+1);
162 //____________________________________________________________________________
163 Bool_t AliITSCalibrationSPD::IsPixelNoisy(Int_t col, Int_t row) const {
165 // Check if pixel (col,row) is noisy
167 for (UInt_t i=0; i<fNrNoisy; i++) {
168 if (fNoisyChannels.At(i*2)==col && fNoisyChannels.At(i*2+1)==row) {