]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSCalibrationSSD.cxx
Use configuration script
[u/mrichter/AliRoot.git] / ITS / AliITSCalibrationSSD.cxx
index b6b38f67e56c9915e6fa2e8418589f08840d5e26..bdcc8faa56cfe81b9a807864cba4fde1e0a3f8c1 100644 (file)
@@ -1,5 +1,5 @@
 /**************************************************************************
- * 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.              *
@@ -12,7 +12,7 @@
  * 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(){
+AliITSCalibrationSSD::AliITSCalibrationSSD():
+  fModule(0),
+fNPar(0),
+fDetPar(0),
+fNoise(0),
+fPedestal(),
+fGain(0),
+fBadChannels(0),
+  fIsBad(kFALSE),
+fSSDADCpereV(0.),
+  fKeVperADC(0)
+{
     // Default Constructor
 
-    fDetPar = 0;
-    fNPar   = 0;
-    fNoiseP = 0;
-    fNoiseN = 0;
-    fSigmaP = 0;
-    fSigmaN = 0;
-    SetNoiseParam(fgkNoisePDefault,fgkNoiseNDefault);
+    for(Int_t i=0;i<fgkChipsPerModule;i++){
+      fIsChipBad[i]=kFALSE;
+    }
+  SetSSDADCpereV();
+    SetKeVperADC();
 }
 //______________________________________________________________________
-AliITSCalibrationSSD::AliITSCalibrationSSD(const char *dataType){
+AliITSCalibrationSSD::AliITSCalibrationSSD(const char *dataType):
+  fModule(0),
+fNPar(0),
+fDetPar(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) {
@@ -60,35 +73,21 @@ AliITSCalibrationSSD::AliITSCalibrationSSD(const char *dataType){
        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;
-}
-//______________________________________________________________________
-AliITSCalibrationSSD& AliITSCalibrationSSD::operator=(const AliITSCalibrationSSD &src) {
-    // = operator.
-
-    if(&src == this) return *this;
-
-    this->fNPar      = src.fNPar;
-    for(Int_t i=0;i<this->fNPar;i++) this->fDetPar[i] = src.fDetPar[i];
-    this->fNoiseP    = src.fNoiseP;
-    this->fNoiseN    = src.fNoiseN;
-    this->fSigmaP    = src.fSigmaP;
-    this->fSigmaN    = src.fSigmaN;
-    this->fDataType  = src.fDataType;
-
-    return *this;
-}
-//_________________________________________________________________________
-AliITSCalibrationSSD::AliITSCalibrationSSD(const AliITSCalibrationSSD &src) :
-    AliITSCalibration(src) {
-    // copy constructor
-
-    *this = src;
+    if(fNoise)delete fNoise;
+    if(fPedestal)delete fPedestal;
+    if(fGain)delete fGain;
+    if(fBadChannels)delete fBadChannels;
 }
 //______________________________________________________________________
 void AliITSCalibrationSSD::SetDetParam(Double_t  *par){
@@ -109,3 +108,37 @@ void AliITSCalibrationSSD::GetDetParam(Double_t  *par) const {
        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;
+}