Module by module ADC->keV conversion factor in SDD calibration -- updated code (F...
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 13 Jan 2010 10:44:24 +0000 (10:44 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 13 Jan 2010 10:44:24 +0000 (10:44 +0000)
ITS/AliITSClusterFinderV2SDD.cxx
ITS/AliITSresponseSDD.cxx
ITS/AliITSresponseSDD.h

index c06bf78..3fd67e7 100644 (file)
@@ -284,7 +284,7 @@ FindClustersSDD(AliBin* bins[2], TBits* anodeFired[2],
          y=trk[1];
          z=trk[2]; 
          
-         q/=rsdd->GetADC2keV();
+         q/=rsdd->GetADCtokeV(fModule);
          q+=(driftTime*rsdd->GetChargevsTime()); // correction for zero supp.
          if(cal-> IsAMAt20MHz()) q*=2.; // account for 1/2 sampling freq.
          if(q<repa->GetMinClusterChargeSDD()) continue; // remove noise clusters
index 1ab76ba..46a708b 100644 (file)
@@ -45,6 +45,7 @@ fChargevsTime(fgkChargevsTimeDefault){
   for(Int_t i=0; i<kNSDDmods;i++){
     fTimeZero[i]=fgkTimeOffsetDefault;
     fDeltaVDrift[i]=0.;
+    fADCtokeV[i]=fgkADC2keVDefault;
   }  
 }
 //_________________________________________________________________________
index 0aba552..bf7a03d 100644 (file)
@@ -53,28 +53,40 @@ class AliITSresponseSDD : public TObject {
     if(modIndex<kNSPDmods || modIndex>kNSPDmods+kNSDDmods) AliError(Form("SDD module number %d out of range",modIndex));
     fDeltaVDrift[modIndex-kNSPDmods]=dv;
   }
+  virtual Float_t GetDeltaVDrift(Int_t modIndex) const {
+    if(modIndex<kNSPDmods || modIndex>kNSPDmods+kNSDDmods){
+      AliError(Form("SDD module number %d out of range",modIndex));
+      return 0.;
+    }
+    return fDeltaVDrift[modIndex-kNSPDmods];
+  }
 
+  static Float_t DefaultTimeOffset() {return fgkTimeOffsetDefault;}
   virtual void SetTimeOffset(Float_t to){fTimeOffset = to;}
   virtual Float_t GetTimeOffset()const {return fTimeOffset;}
-  virtual Float_t GetTimeZero(Int_t modIndex){
+  virtual Float_t GetTimeZero(Int_t modIndex) const {
     if(modIndex<kNSPDmods || modIndex>kNSPDmods+kNSDDmods){
       AliError(Form("SDD module number %d out of range",modIndex));
       return 0.;
     }
     return fTimeZero[modIndex-kNSPDmods];
   }
-  virtual Float_t GetDeltaVDrift(Int_t modIndex){
+
+  virtual void SetADC2keV(Float_t conv){fADC2keV=conv;}
+  virtual Float_t GetADC2keV()const {return fADC2keV;}
+  virtual void SetADCtokeV(Int_t modIndex, Float_t conv){
+    if(modIndex<kNSPDmods || modIndex>kNSPDmods+kNSDDmods) AliError(Form("SDD module number %d out of range",modIndex));
+    fADCtokeV[modIndex-kNSPDmods]=conv;
+  }
+  virtual Float_t GetADCtokeV(Int_t modIndex) const {
     if(modIndex<kNSPDmods || modIndex>kNSPDmods+kNSDDmods){
       AliError(Form("SDD module number %d out of range",modIndex));
       return 0.;
     }
-    return fDeltaVDrift[modIndex-kNSPDmods];
+    return fADCtokeV[modIndex-kNSPDmods];
   }
-  static Float_t DefaultTimeOffset() {return fgkTimeOffsetDefault;}
 
-  virtual void SetADC2keV(Float_t conv){fADC2keV=conv;}
   virtual void SetChargevsTime(Float_t slope){fChargevsTime=slope;}
-  virtual Float_t GetADC2keV()const {return fADC2keV;}
   virtual Float_t GetChargevsTime()const {return fChargevsTime;}
 
   static Float_t DefaultADC2keV() {return fgkADC2keVDefault;}
@@ -101,14 +113,16 @@ class AliITSresponseSDD : public TObject {
   Float_t  fTimeZero[kNSDDmods];    // Time Zero for each module
   Float_t  fDeltaVDrift[kNSDDmods]; // Vdrift correction (um/ns) for each module
   Float_t  fADC2keV;                // Conversion factor from ADC to keV
+                                    // --> obsolete, kept for backw. comp. 
   Float_t  fChargevsTime;           // Correction for zero suppression effect
-  
+  Float_t  fADCtokeV[kNSDDmods]; // ADC to keV conversion for each module
+
  private:
 
   AliITSresponseSDD(const AliITSresponseSDD &ob); // copy constructor
   AliITSresponseSDD& operator=(const AliITSresponseSDD & /* source */); // ass. op.
 
-  ClassDef(AliITSresponseSDD,18) 
+  ClassDef(AliITSresponseSDD,19) 
      
     };
 #endif