0fbe1a20991677b9e2d0730e360f9a658daf4b46
[u/mrichter/AliRoot.git] / ITS / AliITSCalibrationSPD.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, 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 #include "AliITSCalibrationSPD.h"
17 ///////////////////////////////////////////////////////////////////////////
18 //  Calibration class for set:ITS                   
19 //  Specific subdetector implementation for         
20 //  Silicon pixels                                  
21 //
22 //  Modified by D. Elia, G.E. Bruno, H. Tydesjo
23 //  March-April 2006
24 //  Last mod:  H. Tydesjo  January 2007
25 //  September   2007: CouplingRowDefault = 0.055 (was 0.047)
26 //
27 ///////////////////////////////////////////////////////////////////////////
28 const Double_t AliITSCalibrationSPD::fgkThreshDefault = 3000.;
29 const Double_t AliITSCalibrationSPD::fgkSigmaDefault = 250.;
30 const Double_t AliITSCalibrationSPD::fgkCouplColDefault = 0.;
31 const Double_t AliITSCalibrationSPD::fgkCouplRowDefault = 0.055;
32 const Double_t AliITSCalibrationSPD::fgkBiasVoltageDefault = 18.182;
33
34 ClassImp(AliITSCalibrationSPD)  
35
36 //______________________________________________________________________
37 AliITSCalibrationSPD::AliITSCalibrationSPD():
38 AliITSCalibration(),
39 fBaseline(0.0),
40 fNoise(0.0),
41 fThresh(fgkThreshDefault),
42 fSigma(fgkSigmaDefault),
43 fCouplCol(fgkCouplColDefault),
44 fCouplRow(fgkCouplRowDefault),
45 fBiasVoltage(fgkBiasVoltageDefault),
46 fNrDead(0),
47 fDeadChannels(0),
48 fNrNoisy(0),
49 fNoisyChannels(0){
50   // constructor
51
52    SetThresholds(fgkThreshDefault,fgkSigmaDefault);
53    SetCouplingParam(fgkCouplColDefault,fgkCouplRowDefault);
54    SetBiasVoltage(fgkBiasVoltageDefault);
55    SetNoiseParam(0.,0.);
56    SetDataType("simulated");
57 }
58 //_________________________________________________________________________
59
60 void AliITSCalibrationSPD::AddDead(UInt_t col, UInt_t row) {
61   //
62   // Add a dead channel to fDeadChannel array
63   //
64   fDeadChannels.Set(fNrDead*2+2);
65   fDeadChannels.AddAt(col,fNrDead*2);
66   fDeadChannels.AddAt(row,fNrDead*2+1);
67   fNrDead++;
68 }
69 //_________________________________________________________________________
70 Int_t AliITSCalibrationSPD::GetDeadColAt(UInt_t index) {
71   // 
72   // Returns column of index-th dead channel
73   //
74   if (index<fNrDead) {
75     return fDeadChannels.At(index*2);
76   }
77   return -1;
78 }
79 //_________________________________________________________________________
80 Int_t AliITSCalibrationSPD::GetDeadRowAt(UInt_t index) {
81   // 
82   // Returns row of index-th dead channel
83   //
84   if (index<fNrDead) {
85     return fDeadChannels.At(index*2+1);
86   }
87   return -1;
88 }
89 //_________________________________________________________________________
90 Bool_t AliITSCalibrationSPD::IsPixelDead(Int_t col, Int_t row) const {
91   //
92   // Check if pixel (col,row) is dead
93   //
94   for (UInt_t i=0; i<fNrDead; i++) { 
95     if (fDeadChannels.At(i*2)==col && fDeadChannels.At(i*2+1)==row) {
96       return true;
97     }
98   }
99   return false;
100 }
101 //____________________________________________________________________________
102 void AliITSCalibrationSPD::AddNoisy(UInt_t col, UInt_t row) {
103   //
104   // add noisy pixel 
105   //
106   fDeadChannels.Set(fNrNoisy*2+2);
107   fNoisyChannels.AddAt(col,fNrNoisy*2);
108   fNoisyChannels.AddAt(row,fNrNoisy*2+1);
109   fNrNoisy++;
110 }
111 //____________________________________________________________________________
112 Int_t AliITSCalibrationSPD::GetNoisyColAt(UInt_t index) {
113   //
114   // Get column of index-th noisy pixel
115   //
116   if (index<fNrNoisy) {
117     return fNoisyChannels.At(index*2);
118   }
119   return -1;
120 }
121 //____________________________________________________________________________
122 Int_t AliITSCalibrationSPD::GetNoisyRowAt(UInt_t index) {
123   //
124   // Get row of index-th noisy pixel
125   //
126   if (index<fNrNoisy) {
127     return fNoisyChannels.At(index*2+1);
128   }
129   return -1;
130 }
131 //____________________________________________________________________________
132 Bool_t AliITSCalibrationSPD::IsPixelNoisy(Int_t col, Int_t row) const {
133   //
134   // Check if pixel (col,row) is noisy
135   //
136   for (UInt_t i=0; i<fNrNoisy; i++) { 
137     if (fNoisyChannels.At(i*2)==col && fNoisyChannels.At(i*2+1)==row) {
138       return true;
139     }
140   }
141   return false;
142 }