]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSCalibrationSPD.cxx
new SDD preprocessor + removal of eff C++ warning (base) - E. Crescio
[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
17
18 #include "AliITSCalibrationSPD.h"
19
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;
25
26 ClassImp(AliITSCalibrationSPD)  
27 ///////////////////////////////////////////////////////////////////////////
28 //  Calibration class for set:ITS                   
29 //  Specific subdetector implementation for         
30 //  Silicon pixels                                  
31 //
32 //  Modified by D. Elia, G.E. Bruno, H. Tydesjo
33 //  March-April 2006
34 //
35 ///////////////////////////////////////////////////////////////////////////
36
37 //______________________________________________________________________
38 AliITSCalibrationSPD::AliITSCalibrationSPD():
39 AliITSCalibration(),
40 fBaseline(0.0),
41 fNoise(0.0),
42 fThresh(fgkThreshDefault),
43 fSigma(fgkSigmaDefault),
44 fCouplCol(fgkCouplColDefault),
45 fCouplRow(fgkCouplRowDefault),
46 fBiasVoltage(fgkBiasVoltageDefault),
47 fNrDead(0),
48 fDeadChannels(0),
49 fNrNoisy(0),
50 fNoisyChannels(0){
51   // constructor
52
53    SetThresholds(fgkThreshDefault,fgkSigmaDefault);
54    SetCouplingParam(fgkCouplColDefault,fgkCouplRowDefault);
55    SetBiasVoltage(fgkBiasVoltageDefault);
56    SetNoiseParam(0.,0.);
57    SetDataType("simulated");
58 }
59 //_________________________________________________________________________
60
61 void AliITSCalibrationSPD::AddDead(UInt_t col, UInt_t row) {
62   //
63   // Add a dead channel to fDeadChannel array
64   //
65   fDeadChannels.Set(fNrDead*2+2);
66   fDeadChannels.AddAt(col,fNrDead*2);
67   fDeadChannels.AddAt(row,fNrDead*2+1);
68   fNrDead++;
69 }
70 //_________________________________________________________________________
71 Int_t AliITSCalibrationSPD::GetDeadColAt(UInt_t index) {
72   // 
73   // Returns column of index-th dead channel
74   //
75   if (index<fNrDead) {
76     return fDeadChannels.At(index*2);
77   }
78   return -1;
79 }
80 //_________________________________________________________________________
81 Int_t AliITSCalibrationSPD::GetDeadRowAt(UInt_t index) {
82   // 
83   // Returns row of index-th dead channel
84   //
85   if (index<fNrDead) {
86     return fDeadChannels.At(index*2+1);
87   }
88   return -1;
89 }
90 //_________________________________________________________________________
91 Bool_t AliITSCalibrationSPD::IsPixelDead(Int_t col, Int_t row) const {
92   //
93   // Check if pixel (col,row) is dead
94   //
95   for (UInt_t i=0; i<fNrDead; i++) { 
96     if (fDeadChannels.At(i*2)==col && fDeadChannels.At(i*2+1)==row) {
97       return true;
98     }
99   }
100   return false;
101 }
102
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
109   // Inputs:
110   //    Int_t mod      module number
111   //    Int_t ix       x pixel number
112   //    Int_t iz       z pixel number
113   // Outputs:
114   //    none.
115   // Return:
116   //    kFALSE if pixel is alive, or kTRUE if pixel is dead.
117
118   // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
119   Double_t fDeadPixels = 0.01; // fix to keep AliITSsimulationSPDdubna alive!!!
120   // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
121
122   Bool_t  dead = kFALSE;
123   Int_t   seed;
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.
126
127   seed = mod*256*256+iz*256+ix;
128   ran.SetSeed(seed);
129   if(ran.Rndm(0)<fDeadPixels) dead = kTRUE;
130   return dead;
131 }
132 //____________________________________________________________________________
133 void AliITSCalibrationSPD::AddNoisy(UInt_t col, UInt_t row) {
134   //
135   // add noisy pixel 
136   //
137   fDeadChannels.Set(fNrNoisy*2+2);
138   fNoisyChannels.AddAt(col,fNrNoisy*2);
139   fNoisyChannels.AddAt(row,fNrNoisy*2+1);
140   fNrNoisy++;
141 }
142 //____________________________________________________________________________
143 Int_t AliITSCalibrationSPD::GetNoisyColAt(UInt_t index) {
144   //
145   // Get column of index-th noisy pixel
146   //
147   if (index<fNrNoisy) {
148     return fNoisyChannels.At(index*2);
149   }
150   return -1;
151 }
152 //____________________________________________________________________________
153 Int_t AliITSCalibrationSPD::GetNoisyRowAt(UInt_t index) {
154   //
155   // Get row of index-th noisy pixel
156   //
157   if (index<fNrNoisy) {
158     return fNoisyChannels.At(index*2+1);
159   }
160   return -1;
161 }
162 //____________________________________________________________________________
163 Bool_t AliITSCalibrationSPD::IsPixelNoisy(Int_t col, Int_t row) const {
164   //
165   // Check if pixel (col,row) is noisy
166   //
167   for (UInt_t i=0; i<fNrNoisy; i++) { 
168     if (fNoisyChannels.At(i*2)==col && fNoisyChannels.At(i*2+1)==row) {
169       return true;
170     }
171   }
172   return false;
173 }