]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSCalibrationSSD.cxx
Fixing a little overlap. Adding flags to perform material budget studies (Mario)
[u/mrichter/AliRoot.git] / ITS / AliITSCalibrationSSD.cxx
index 44410cd14c4c41a9a8f0e915aad5cb15b969d594..bdcc8faa56cfe81b9a807864cba4fde1e0a3f8c1 100644 (file)
 //                                                  //
 //////////////////////////////////////////////////////
 
-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),
 fNoise(0),
+fPedestal(),
 fGain(0),
 fBadChannels(0),
-fGainP(0),
-fGainN(0),
-fNoisP(0),
-fNoisN(0),
-fNoisePThreshold(0),
-fNoisyPChannelsList(0),
-fNoiseNThreshold(0),
-fNoisyNChannelsList(0),
-fDeadNChannelsList(0),
-fDeadPChannelsList(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),
 fNoise(0),
 fPedestal(0),
 fGain(0),
 fBadChannels(0),
-fGainP(0),
-fGainN(0),
-fNoisP(0),
-fNoisN(0),
-fPedP(0),
-fPedN(0),
-fNoisePThreshold(0),
-fNoisyPChannelsList(0),
-fNoiseNThreshold(0),
-fNoisyNChannelsList(0),
-fDeadNChannelsList(0),
-fDeadPChannelsList(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) {
@@ -95,12 +73,21 @@ fDeadPChannelsList(0){
        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){
@@ -121,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;
+}