Temporary fix for a problem with SSD bad modules and chips (Dainese/Prino)
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 27 Nov 2008 09:13:12 +0000 (09:13 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 27 Nov 2008 09:13:12 +0000 (09:13 +0000)
ITS/AliITSCalibration.h
ITS/AliITSCalibrationSSD.cxx
ITS/AliITSCalibrationSSD.h

index 33121ac..6e02d54 100644 (file)
@@ -63,7 +63,8 @@ class AliITSCalibration : public TObject {
     // Get sigmas for the charge spread
     virtual void    SigmaSpread(Double_t &,Double_t &) const = 0;
 
-
+    // Needed for SSD bad modules retrieval in the tracker
+    virtual void    SetModuleIndex(Int_t /*modId*/) {};
 
     // Prints out the content of this class in ASCII format.
     virtual void Print(ostream *os) const;
index 592c080..9678189 100644 (file)
@@ -108,11 +108,18 @@ void AliITSCalibrationSSD::GetDetParam(Double_t  *par) const {
 //______________________________________________________________________
 void AliITSCalibrationSSD::FillBadChipMap() {
 
+  // reset
+  fIsBad=kFALSE;
+  for(Int_t i=0;i<fgkChipsPerModule;i++){
+    fIsChipBad[i]=kFALSE;
+  }
+
+
   Int_t mc=0;
-  Int_t cc[12];
+  Int_t cc[fgkChipsPerModule];
 
   // P-side
-  for(Int_t i=0; i<6; i++){
+  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]++;
@@ -121,7 +128,7 @@ void AliITSCalibrationSSD::FillBadChipMap() {
   }
   
   // N-side
-  for(Int_t i=6; i<11; i++){
+  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]++;      
@@ -129,5 +136,5 @@ void AliITSCalibrationSSD::FillBadChipMap() {
     if(cc[i]==ChannelsPerChip()) { SetChipBad(i); mc++; }
   }
   
-  if(mc==ChannelsPerChip()) fIsBad=kTRUE;
+  if(mc==fgkChipsPerModule) fIsBad=kTRUE;
 }
index a7b3941..8e156bf 100644 (file)
@@ -83,7 +83,10 @@ class AliITSCalibrationSSD : public AliITSCalibration {
       NotImplemented("SetSigmaSpread");}
     
     void SetModule(Int_t mod){fModule = mod;}
-
+    void SetModuleIndex(Int_t modId){
+      fModule=modId-500; // temporary patch, 500 is n. of SPD+SDD modules
+      FillBadChipMap();
+    }
     void SetKeVperADC(Double_t a=86.4/120.){fKeVperADC = a;}
     Double_t ADCToKeV(Double_t adc) const {return adc*fKeVperADC;}