]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSCalibrationSSD.cxx
Adding the interface to AMORE.
[u/mrichter/AliRoot.git] / ITS / AliITSCalibrationSSD.cxx
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 /* $Id$  */
16
17 #include "AliITSCalibrationSSD.h"
18 //////////////////////////////////////////////////////
19 //  Calibration class for set:ITS                   //
20 //  Specific subdetector implementation             //
21 //  for silicon strips detectors                    //
22 //                                                  //
23 //                                                  //
24 //////////////////////////////////////////////////////
25
26 const Double_t AliITSCalibrationSSD::fgkNoiseNDefault = 625.;
27 const Double_t AliITSCalibrationSSD::fgkNoisePDefault = 420.;
28 const Int_t AliITSCalibrationSSD::fgkNParDefault = 6;
29 const Double_t AliITSCalibrationSSD::fgkSigmaPDefault = 3.;
30 const Double_t AliITSCalibrationSSD::fgkSigmaNDefault = 2.;
31
32 ClassImp(AliITSCalibrationSSD)
33
34 //______________________________________________________________________
35 AliITSCalibrationSSD::AliITSCalibrationSSD():
36 fNPar(0),
37 fDetPar(0),
38 fNoiseP(0),
39 fNoiseN(0),
40 fSigmaP(0),
41 fSigmaN(0),
42 fNoise(0),
43 fPedestal(),
44 fGain(0),
45 fBadChannels(0),
46 fIsBad(kFALSE),
47 fGainP(0),
48 fGainN(0),
49 fNoisP(0),
50 fNoisN(0),
51 fPedP(),
52 fPedN(),
53 fNoisePThreshold(0),
54 fNoisyPChannelsList(0),
55 fNoiseNThreshold(0),
56 fNoisyNChannelsList(0),
57 fDeadNChannelsList(0),
58 fDeadPChannelsList(0){
59     // Default Constructor
60
61     SetNoiseParam(fgkNoisePDefault,fgkNoiseNDefault);
62     for(Int_t i=0;i<fgkChipsPerModule;i++){
63       fIsChipBad[i]=kFALSE;
64     }
65 }
66 //______________________________________________________________________
67 AliITSCalibrationSSD::AliITSCalibrationSSD(const char *dataType):
68 fNPar(0),
69 fDetPar(0),
70 fNoiseP(0),
71 fNoiseN(0),
72 fSigmaP(0),
73 fSigmaN(0),
74 fNoise(0),
75 fPedestal(0),
76 fGain(0),
77 fBadChannels(0),
78 fIsBad(kFALSE),
79 fGainP(0),
80 fGainN(0),
81 fNoisP(0),
82 fNoisN(0),
83 fPedP(0),
84 fPedN(0),
85 fNoisePThreshold(0),
86 fNoisyPChannelsList(0),
87 fNoiseNThreshold(0),
88 fNoisyNChannelsList(0),
89 fDeadNChannelsList(0),
90 fDeadPChannelsList(0){
91     // constructor
92
93     SetNoiseParam(fgkNoisePDefault,fgkNoiseNDefault);
94     SetDataType(dataType);
95     SetSigmaSpread(fgkSigmaPDefault,fgkSigmaNDefault);
96     SetNDetParam(fgkNParDefault);   // Sets fNPar=6 by default.
97     fDetPar = new Double_t[fNPar];
98     if (fNPar==6) {
99         fDetPar[0]=10.;
100         fDetPar[1]=5.;
101         fDetPar[2]=0.02;
102         fDetPar[3]=0.02;
103         fDetPar[4]=0.02;
104         fDetPar[5]=0.03;
105     } // end if
106     for(Int_t i=0;i<fgkChipsPerModule;i++){
107       fIsChipBad[i]=kFALSE;
108     }
109 }
110 //______________________________________________________________________
111 AliITSCalibrationSSD::~AliITSCalibrationSSD(){
112     // destructor
113  
114     delete [] fDetPar;
115 }
116 //______________________________________________________________________
117 void AliITSCalibrationSSD::SetDetParam(Double_t  *par){
118     // set det param
119     Int_t i;
120
121     for (i=0; i<fNPar; i++) {
122         fDetPar[i]=par[i];
123         //printf("\n CompressPar %d %d \n",i,fCPar[i]);    
124     } // end for i
125 }
126 //______________________________________________________________________
127 void AliITSCalibrationSSD::GetDetParam(Double_t  *par) const {
128     // get det param
129     Int_t i;
130
131     for (i=0; i<fNPar; i++) {
132         par[i]=fDetPar[i];
133     } // end for i
134 }
135
136 //______________________________________________________________________
137 void AliITSCalibrationSSD::FillBadChipMap() {
138
139   Int_t mc=0;
140   Int_t cc[12];
141
142   // P-side
143   for(Int_t i=0; i<6; i++){
144     cc[i]=0;
145     for(Int_t j=0; j<ChannelsPerChip(); j++) {
146       if(IsPChannelBad(i*ChannelsPerChip()+j)) cc[i]++;
147     }
148     if(cc[i]==ChannelsPerChip()) { SetChipBad(i); mc++; }
149   }
150   
151   // N-side
152   for(Int_t i=6; i<11; i++){
153     cc[i]=0;
154     for(Int_t j=0; j<ChannelsPerChip(); j++) {
155       if(IsNChannelBad(1535-i*ChannelsPerChip()-j)) cc[i]++;      
156     }
157     if(cc[i]==ChannelsPerChip()) { SetChipBad(i); mc++; }
158   }
159   
160   if(mc==ChannelsPerChip()) fIsBad=kTRUE;
161 }