/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
* *
* Author: The ALICE Off-line Project. *
* Contributors are mentioned in the code where appropriate. *
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-
+/* $Id$ */
#include "AliITSCalibrationSSD.h"
//////////////////////////////////////////////////////
// //
//////////////////////////////////////////////////////
-const Double_t AliITSCalibrationSSD::fgkNoiseNDefault = 625.;
-const Double_t AliITSCalibrationSSD::fgkNoisePDefault = 420.;
const Int_t AliITSCalibrationSSD::fgkNParDefault = 6;
-const Double_t AliITSCalibrationSSD::fgkSigmaPDefault = 3.;
-const Double_t AliITSCalibrationSSD::fgkSigmaNDefault = 2.;
ClassImp(AliITSCalibrationSSD)
//______________________________________________________________________
AliITSCalibrationSSD::AliITSCalibrationSSD():
+ fModule(0),
fNPar(0),
fDetPar(0),
-fNoiseP(0),
-fNoiseN(0),
-fSigmaP(0),
-fSigmaN(0),
-fGainP(0),
-fGainN(0),
-fNoisP(0),
-fNoisN(0),
-fNoisePThreshold(0),
-fNoisyPChannelsList(0),
-fNoiseNThreshold(0),
-fNoisyNChannelsList(0),
-fDeadNChannelsList(0),
-fDeadPChannelsList(0){
+fNoise(0),
+fPedestal(),
+fGain(0),
+fBadChannels(0),
+ fIsBad(kFALSE),
+fSSDADCpereV(0.),
+ fKeVperADC(0)
+{
// Default Constructor
- SetNoiseParam(fgkNoisePDefault,fgkNoiseNDefault);
+ for(Int_t i=0;i<fgkChipsPerModule;i++){
+ fIsChipBad[i]=kFALSE;
+ }
+ SetSSDADCpereV();
+ SetKeVperADC();
}
//______________________________________________________________________
AliITSCalibrationSSD::AliITSCalibrationSSD(const char *dataType):
+ fModule(0),
fNPar(0),
fDetPar(0),
-fNoiseP(0),
-fNoiseN(0),
-fSigmaP(0),
-fSigmaN(0),
-fGainP(0),
-fGainN(0),
-fNoisP(0),
-fNoisN(0),
-fNoisePThreshold(0),
-fNoisyPChannelsList(0),
-fNoiseNThreshold(0),
-fNoisyNChannelsList(0),
-fDeadNChannelsList(0),
-fDeadPChannelsList(0){
+fNoise(0),
+fPedestal(0),
+fGain(0),
+fBadChannels(0),
+fIsBad(kFALSE) ,
+fSSDADCpereV(0.),
+fKeVperADC(0){
// constructor
- SetNoiseParam(fgkNoisePDefault,fgkNoiseNDefault);
SetDataType(dataType);
- SetSigmaSpread(fgkSigmaPDefault,fgkSigmaNDefault);
SetNDetParam(fgkNParDefault); // Sets fNPar=6 by default.
fDetPar = new Double_t[fNPar];
if (fNPar==6) {
fDetPar[4]=0.02;
fDetPar[5]=0.03;
} // end if
+ for(Int_t i=0;i<fgkChipsPerModule;i++){
+ fIsChipBad[i]=kFALSE;
+ }
+ SetSSDADCpereV();
+ SetKeVperADC();
}
//______________________________________________________________________
AliITSCalibrationSSD::~AliITSCalibrationSSD(){
// destructor
-
+
delete [] fDetPar;
+ if(fNoise)delete fNoise;
+ if(fPedestal)delete fPedestal;
+ if(fGain)delete fGain;
+ if(fBadChannels)delete fBadChannels;
}
//______________________________________________________________________
void AliITSCalibrationSSD::SetDetParam(Double_t *par){
par[i]=fDetPar[i];
} // end for i
}
+
+//______________________________________________________________________
+void AliITSCalibrationSSD::FillBadChipMap() {
+
+ // reset
+ fIsBad=kFALSE;
+ for(Int_t i=0;i<fgkChipsPerModule;i++){
+ fIsChipBad[i]=kFALSE;
+ }
+
+
+ Int_t mc=0;
+ Int_t cc[fgkChipsPerModule];
+
+ // P-side
+ for(Int_t i=0; i<fgkChipsPerModule/2; i++){
+ cc[i]=0;
+ for(Int_t j=0; j<ChannelsPerChip(); j++) {
+ if(IsPChannelBad(i*ChannelsPerChip()+j)) cc[i]++;
+ }
+ if(cc[i]==ChannelsPerChip()) { SetChipBad(i); mc++; }
+ }
+
+ // N-side
+ for(Int_t i=fgkChipsPerModule/2; i<fgkChipsPerModule; i++){
+ cc[i]=0;
+ for(Int_t j=0; j<ChannelsPerChip(); j++) {
+ if(IsNChannelBad(1535-i*ChannelsPerChip()-j)) cc[i]++;
+ }
+ if(cc[i]==ChannelsPerChip()) { SetChipBad(i); mc++; }
+ }
+
+ if(mc==fgkChipsPerModule) fIsBad=kTRUE;
+}