Add array with time correction per channel, and decalibration arrays for energy and...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jul 2011 21:20:27 +0000 (21:20 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jul 2011 21:20:27 +0000 (21:20 +0000)
EMCAL/AliEMCALCalibData.cxx
EMCAL/AliEMCALCalibData.h
EMCAL/AliEMCALSimParam.cxx
EMCAL/AliEMCALSimParam.h

index 17f795e..36bb214 100644 (file)
@@ -18,6 +18,7 @@
 //_________________________________________________________________________
 ///*-- Author: Yves Schutz (SUBATECH)
 //           : Aleksei Pavlinov (WSU); Jun 30, 2006 - ALICE numbering scheme
+//           : Add decalibration and time calibration arrays: Jul 21, 2011 (GCB)
 ///////////////////////////////////////////////////////////////////////////////
 //                                                                           //
 // class for EMCAL calibration                                               //
@@ -62,15 +63,31 @@ AliEMCALCalibData::AliEMCALCalibData(const AliEMCALCalibData& calibda) :
   Int_t nRow  = AliEMCALGeoParams::fgkEMCALRows;    //24
   Int_t nRow2 = AliEMCALGeoParams::fgkEMCALRows;    //12 - Modules 11 and 12 are half modules
 
-  for(Int_t supermodule=0; supermodule<nSMod; supermodule++) {
+  for(Int_t supermodule = 0; supermodule < nSMod; supermodule++) {
+    
     if(supermodule >= 10)
       nRow = nRow2;
-    for(Int_t column=0; column<nCol; column++) {
-      for(Int_t row=0; row<nRow; row++) {
-       fADCchannel[supermodule][column][row] = 
-         calibda.GetADCchannel(supermodule,column,row);
-       fADCpedestal[supermodule][column][row] = 
-         calibda.GetADCpedestal(supermodule,column,row);
+    
+    for(Int_t column = 0; column<nCol; column++) {
+      
+      for(Int_t row = 0; row<nRow; row++) {
+        
+        fADCchannel[supermodule][column][row] = 
+        calibda.GetADCchannel(supermodule,column,row);
+        
+        fADCchannelDecal[supermodule][column][row] = 
+        calibda.GetADCchannelDecal(supermodule,column,row);
+        
+        fADCpedestal[supermodule][column][row] = 
+        calibda.GetADCpedestal(supermodule,column,row);
+        
+        fTimeChannel[supermodule][column][row] = 
+        calibda.GetTimeChannel(supermodule,column,row);
+        
+        fTimeChannelDecal[supermodule][column][row] = 
+        calibda.GetTimeChannelDecal(supermodule,column,row);
+        
+        
       }
     }
   }
@@ -90,15 +107,30 @@ AliEMCALCalibData &AliEMCALCalibData::operator =(const AliEMCALCalibData& calibd
   Int_t nRow  = AliEMCALGeoParams::fgkEMCALRows;    //24
   Int_t nRow2 = AliEMCALGeoParams::fgkEMCALRows/2;  //12 - Modules 11 and 12 are half modules
 
-  for(Int_t supermodule=0; supermodule<nSMod; supermodule++) {
+  for(Int_t supermodule = 0; supermodule < nSMod; supermodule++) {
+    
     if(supermodule >= 10)
       nRow = nRow2;
-    for(Int_t column=0; column<nCol; column++) {
-      for(Int_t row=0; row<nRow; row++) {
-       fADCchannel[supermodule][column][row] = 
-         calibda.GetADCchannel(supermodule,column,row);
-       fADCpedestal[supermodule][column][row] = 
-         calibda.GetADCpedestal(supermodule,column,row);
+    
+    for(Int_t column = 0; column<nCol; column++) {
+      
+      for(Int_t row = 0; row<nRow; row++) {
+        
+        fADCchannel[supermodule][column][row] = 
+        calibda.GetADCchannel(supermodule,column,row);
+        
+        fADCchannelDecal[supermodule][column][row] = 
+        calibda.GetADCchannelDecal(supermodule,column,row);
+        
+        fADCpedestal[supermodule][column][row] = 
+        calibda.GetADCpedestal(supermodule,column,row);
+        
+        fTimeChannel[supermodule][column][row] = 
+        calibda.GetTimeChannel(supermodule,column,row);
+
+        fTimeChannelDecal[supermodule][column][row] = 
+        calibda.GetTimeChannelDecal(supermodule,column,row);
+        
       }
     }
   }
@@ -125,10 +157,18 @@ void AliEMCALCalibData::Reset()
   for (Int_t supermodule=0; supermodule<nSMod; supermodule++){
     if(supermodule >= 10)
       nRow = nRow2;
-    for (Int_t column=0; column<nCol; column++){
-      for (Int_t row=0; row<nRow; row++){
-        fADCpedestal[supermodule][column][row]=0.;
-        fADCchannel [supermodule][column][row]=1.;
+    for (Int_t column=0; column < nCol; column++){
+      
+      for (Int_t row = 0; row < nRow; row++){
+        
+        fADCpedestal     [supermodule][column][row]=0.;
+        
+        fADCchannelDecal [supermodule][column][row]=1.;
+        fADCchannel      [supermodule][column][row]=1.;
+        
+        fTimeChannel     [supermodule][column][row]=0.;
+        fTimeChannelDecal[supermodule][column][row]=0.;
+
       }
     }
   } 
@@ -138,41 +178,89 @@ void AliEMCALCalibData::Reset()
 void  AliEMCALCalibData::Print(Option_t *option) const
 {
   // Print tables of pedestals and ADC channels widths
-
+  // options are: "gain", "ped", "decal", "time", "all"
+  
   Int_t nSMod = AliEMCALGeoParams::fgkEMCALModules; //12
   Int_t nCol  = AliEMCALGeoParams::fgkEMCALCols;    //48
   Int_t nRow  = AliEMCALGeoParams::fgkEMCALRows;    //24
   Int_t nRow2 = AliEMCALGeoParams::fgkEMCALRows/2;  //12 - Modules 11 and 12 are half modules
-  if (strstr(option,"ped")) {
+  if (strstr(option,"ped") || strstr(option,"all")) {
     printf("\n ----    Pedestal values ----\n\n");
     for (Int_t supermodule=0; supermodule<nSMod; supermodule++){
       if(supermodule >= 10)
-       nRow = nRow2;
+        nRow = nRow2;
       printf("============== Supermodule %d\n",supermodule+1);
       for (Int_t column=0; column<nCol; column++){
-       for (Int_t row=0; row<nRow; row++){
-         printf(" %2.4f ",fADCpedestal[supermodule][column][row]);
-       }
-       printf("\n");
+        for (Int_t row=0; row<nRow; row++){
+          printf(" %2.4f ",fADCpedestal[supermodule][column][row]);
+        }
+        printf("\n");
       }
     } 
   }
-
-
-  if (strstr(option,"gain")) {
+  
+  if (strstr(option,"gain") || strstr(option,"all")) {
     printf("\n ----    ADC channel values      ----\n\n");
     for (Int_t supermodule=0; supermodule<nSMod; supermodule++){
       if(supermodule >= 10) 
-       nRow = nRow2;
+        nRow = nRow2;
       printf("============== Supermodule %d\n",supermodule+1);
       for (Int_t column=0; column<nCol; column++){
-       for (Int_t row=0; row<nRow; row++){
-         printf(" %2.4f ",fADCchannel[supermodule][column][row]);
-       }
-       printf("\n");
+        for (Int_t row=0; row<nRow; row++){
+          printf(" %2.4f ",fADCchannel[supermodule][column][row]);
+        }
+        printf("\n");
       }
     }   
   }
+  
+  if (strstr(option,"adcdecal") || strstr(option,"all")) {
+    printf("\n ----    ADC decalibration channel values        ----\n\n");
+    for (Int_t supermodule=0; supermodule<nSMod; supermodule++){
+      if(supermodule >= 10) 
+        nRow = nRow2;
+      printf("============== Supermodule %d\n",supermodule+1);
+      for (Int_t column=0; column<nCol; column++){
+        for (Int_t row=0; row<nRow; row++){
+          printf(" %2.4f ",fADCchannelDecal[supermodule][column][row]);
+        }
+        printf("\n");
+      }
+    }   
+  }
+  
+  if (strstr(option,"time") || strstr(option,"all")) {
+    printf("\n ----    time channel values     ----\n\n");
+    for (Int_t supermodule=0; supermodule<nSMod; supermodule++){
+      if(supermodule >= 10) 
+        nRow = nRow2;
+      printf("============== Supermodule %d\n",supermodule+1);
+      for (Int_t column=0; column<nCol; column++){
+        for (Int_t row=0; row<nRow; row++){
+          printf(" %2.4f ",fTimeChannel[supermodule][column][row]);
+        }
+        printf("\n");
+      }
+    }   
+  }
+  
+  
+  if (strstr(option,"time") || strstr(option,"all")) {
+    printf("\n ----    time decalibration channel values       ----\n\n");
+    for (Int_t supermodule=0; supermodule<nSMod; supermodule++){
+      if(supermodule >= 10) 
+        nRow = nRow2;
+      printf("============== Supermodule %d\n",supermodule+1);
+      for (Int_t column=0; column<nCol; column++){
+        for (Int_t row=0; row<nRow; row++){
+          printf(" %2.4f ",fTimeChannelDecal[supermodule][column][row]);
+        }
+        printf("\n");
+      }
+    }   
+  }
+  
+  
 }
 
 //________________________________________________________________
@@ -187,6 +275,17 @@ Float_t AliEMCALCalibData::GetADCchannel(Int_t supermodule, Int_t column, Int_t
 }
 
 //________________________________________________________________
+Float_t AliEMCALCalibData::GetADCchannelDecal(Int_t supermodule, Int_t column, Int_t row) const
+{
+  // Set ADC channel decalibration witdth values
+  // All indexes start from 0!
+  // Supermodule, column,raw should follow the ALICE convention:
+  // supermodule 0:11, column 0:47, row 0:23
+  
+  return fADCchannelDecal[supermodule][column][row];
+}
+
+//________________________________________________________________
 Float_t AliEMCALCalibData::GetADCpedestal(Int_t supermodule, Int_t column, Int_t row) const
 {
   // Get ADC pedestal values
@@ -194,6 +293,20 @@ Float_t AliEMCALCalibData::GetADCpedestal(Int_t supermodule, Int_t column, Int_t
 }
 
 //________________________________________________________________
+Float_t AliEMCALCalibData::GetTimeChannel(Int_t supermodule, Int_t column, Int_t row) const
+{
+  // Set channel time witdth values
+  return fTimeChannel[supermodule][column][row];
+}
+
+//________________________________________________________________
+Float_t AliEMCALCalibData::GetTimeChannelDecal(Int_t supermodule, Int_t column, Int_t row) const
+{
+  // Set channel time witdth values
+  return fTimeChannelDecal[supermodule][column][row];
+}
+
+//________________________________________________________________
 void AliEMCALCalibData::SetADCchannel(Int_t supermodule, Int_t column, Int_t row, Float_t value)
 { 
   // Set ADC channel width values
@@ -201,6 +314,13 @@ void AliEMCALCalibData::SetADCchannel(Int_t supermodule, Int_t column, Int_t row
 }
 
 //________________________________________________________________
+void AliEMCALCalibData::SetADCchannelDecal(Int_t supermodule, Int_t column, Int_t row, Float_t value)
+{ 
+  // Set ADC channel width values
+  fADCchannelDecal[supermodule][column][row] = value;
+}
+
+//________________________________________________________________
 void AliEMCALCalibData::SetADCpedestal(Int_t supermodule, Int_t column, Int_t row, Float_t value)
 {
   // Set ADC pedestal values
@@ -208,6 +328,21 @@ void AliEMCALCalibData::SetADCpedestal(Int_t supermodule, Int_t column, Int_t ro
 }
 
 //________________________________________________________________
+void AliEMCALCalibData::SetTimeChannel(Int_t supermodule, Int_t column, Int_t row, Float_t value)
+{
+  // Set ADC pedestal values
+  fTimeChannel[supermodule][column][row] = value;
+}
+
+//________________________________________________________________
+void AliEMCALCalibData::SetTimeChannelDecal(Int_t supermodule, Int_t column, Int_t row, Float_t value)
+{
+  // Set ADC pedestal values
+  fTimeChannelDecal[supermodule][column][row] = value;
+}
+
+
+//________________________________________________________________
 void AliEMCALCalibData::Fill(const AliEMCALCalibData *cd1, const AliEMCALCalibData *cd2, Bool_t print)
 {
   // Fill for (relative) recalibration to undo calibration 
index 1bbb450..3de4f72 100644 (file)
@@ -7,7 +7,9 @@
 /* $Id$ */
 
 ////////////////////////////////////////////////
-//  class for EMCAL calibration                 //
+//
+//  class for EMCAL calibration               //
+//
 ////////////////////////////////////////////////
 
 #include "TNamed.h"
@@ -22,21 +24,34 @@ class AliEMCALCalibData: public TNamed {
   AliEMCALCalibData& operator= (const AliEMCALCalibData &calibda);
   virtual ~AliEMCALCalibData();
   void Reset();
-  virtual void Print(Option_t *option = "") const; 
+  virtual void Print(Option_t *option = "") const;
+  
   // All indexes start from 0!
-  Float_t GetADCchannel(Int_t module, Int_t column, Int_t row) const;
-  Float_t GetADCpedestal(Int_t module, Int_t column, Int_t row) const;
+  Float_t GetADCchannel      (Int_t module, Int_t column, Int_t row) const;
+  Float_t GetADCchannelDecal (Int_t module, Int_t column, Int_t row) const;
+  Float_t GetADCpedestal     (Int_t module, Int_t column, Int_t row) const;
+  Float_t GetTimeChannel     (Int_t module, Int_t column, Int_t row) const;
+  Float_t GetTimeChannelDecal(Int_t module, Int_t column, Int_t row) const;
+
   //
-  void SetADCchannel(Int_t module, Int_t column, Int_t row, Float_t value);
-  void SetADCpedestal(Int_t module, Int_t column, Int_t row, Float_t value);
+  void SetADCchannel      (Int_t module, Int_t column, Int_t row, Float_t value);
+  void SetADCchannelDecal (Int_t module, Int_t column, Int_t row, Float_t value);
+  void SetADCpedestal     (Int_t module, Int_t column, Int_t row, Float_t value);
+  void SetTimeChannel     (Int_t module, Int_t column, Int_t row, Float_t value);
+  void SetTimeChannelDecal(Int_t module, Int_t column, Int_t row, Float_t value);
+
   // Fill for (relative) recalibration (undo 1, apply 2)
   void Fill(const AliEMCALCalibData *cd1, const AliEMCALCalibData *cd2, Bool_t print=0);
 
  protected:
-  Float_t  fADCchannel [AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows] ; // width of one ADC channel in GeV ([mod][col][row])
-  Float_t  fADCpedestal[AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows] ; // value of the  ADC pedestal ([mod][col][row])
+  Float_t  fADCchannel      [AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows] ; // width of one ADC channel in GeV ([mod][col][row])
+  Float_t  fADCchannelDecal [AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows] ; // decalibrate width of one ADC channel in GeV ([mod][col][row])
+  Float_t  fADCpedestal     [AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows] ; // value of the  ADC pedestal ([mod][col][row])
+  Float_t  fTimeChannel     [AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows] ; // time width of one ADC channel ([mod][col][row])
+  Float_t  fTimeChannelDecal[AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows] ; // time width of one ADC channel ([mod][col][row])
+
   //
-  ClassDef(AliEMCALCalibData,1)    // EMCAL Calibration data
+  ClassDef(AliEMCALCalibData,2)    // EMCAL Calibration data
 };
 
 #endif
index 9f9ec0e..7058633 100644 (file)
@@ -36,6 +36,7 @@ TNamed(),
 fDigitThreshold(0),
 fMeanPhotonElectron(0),
 fPinNoise(0),
+fTimeNoise(0),
 fTimeDelay(0),
 fTimeResolutionPar0(0),
 fTimeResolutionPar1(0),
@@ -47,9 +48,10 @@ fECPrimThreshold(0.) //SDigitizer
        //Constructor 
        
        //Parameters in Digitizer
-       fMeanPhotonElectron = 4400;  // electrons per GeV 
-       fPinNoise           = 0.012; // pin noise in GeV from analysis test beam data 
-       fDigitThreshold     = 3; // 3 ADC counts not anymore cut in energy: //fPinNoise * 3; // 3 * sigma
+       fMeanPhotonElectron = 4400;    // electrons per GeV 
+       fPinNoise           = 0.012;   // APD noise in GeV from analysis test beam data 
+       fDigitThreshold     = 3;       // 3 ADC counts not anymore cut in energy: //fPinNoise * 3; // 3 * sigma
+  fTimeNoise          = 1.28e-5; // time noise in s
        fTimeResolutionPar0 = 0.26666; // From F. Blanco: 0.51639^2
        fTimeResolutionPar1 = 1.45861; // From F. Blanco: 1.20773^2
        fTimeDelay          = 600e-9 ; // 600 ns
@@ -70,6 +72,7 @@ TNamed(),
 fDigitThreshold(0),
 fMeanPhotonElectron(0),
 fPinNoise(0),
+fTimeNoise(0),
 fTimeDelay(0),
 fTimeResolutionPar0(0),
 fTimeResolutionPar1(0),
@@ -115,7 +118,7 @@ void AliEMCALSimParam::Print(Option_t *) const
        // Print simulation parameters to stdout
        
        printf("=== Parameters in Digitizer === \n");
-       printf("\t Electronics noise in EMC (fPinNoise)       = %f\n", fPinNoise) ;
+       printf("\t Electronics noise in EMC (fPinNoise)       = %f, (fTimeNoise) = %f\n", fPinNoise, fTimeNoise) ;
        printf("\t Threshold  in EMC  (fDigitThreshold)       = %d\n", fDigitThreshold)  ;
        printf("\t Time Resolution (fTimeResolutionPar0)          = %g\n", fTimeResolutionPar0) ;
        printf("\t Time Resolution (fTimeResolutionPar1)          = %g\n", fTimeResolutionPar1) ;
index a607ddb..ab3f955 100644 (file)
@@ -26,28 +26,30 @@ public:
   virtual void Print(Option_t * option="") const ;
 
        //Parameters used in Digitizer
-       Int_t    GetDigitThreshold()     const { return fDigitThreshold;}
-       Float_t  GetPinNoise()           const { return fPinNoise;}
-       Double_t GetTimeDelay()          const { return fTimeDelay ; }
-       Double_t GetTimeResolutionPar0()     const { return fTimeResolutionPar0 ; }
-       Double_t GetTimeResolutionPar1()     const { return fTimeResolutionPar1 ; }
-       Int_t    GetNADCEC()             const { return fNADCEC ; }
-       Int_t    GetMeanPhotonElectron() const { return fMeanPhotonElectron ; }
-       void     SetDigitThreshold(Int_t val)    { fDigitThreshold     = val ; }
-       void     SetPinNoise(Float_t val)        { fPinNoise           = val ; }
-       void     SetTimeDelay(Double_t val)      { fTimeDelay          = val ; }
-       void     SetTimeResolutionPar0(Double_t val) { fTimeResolutionPar0 = val ; }
-       void     SetTimeResolutionPar1(Double_t val) { fTimeResolutionPar1 = val ; }
-       void     SetNADCED(Int_t val)            { fNADCEC             = val ; }
-       void     SetMeanPhotonElectron(Int_t val){ fMeanPhotonElectron = val ; }
+       Int_t    GetDigitThreshold()          const { return fDigitThreshold     ; }
+       Float_t  GetPinNoise()                const { return fPinNoise           ; }
+  Double_t GetTimeNoise()               const { return fTimeNoise          ; }
+       Double_t GetTimeDelay()               const { return fTimeDelay          ; }
+       Double_t GetTimeResolutionPar0()      const { return fTimeResolutionPar0 ; }
+       Double_t GetTimeResolutionPar1()      const { return fTimeResolutionPar1 ; }
+       Int_t    GetNADCEC()                  const { return fNADCEC             ; }
+       Int_t    GetMeanPhotonElectron()      const { return fMeanPhotonElectron ; }
+       void     SetDigitThreshold(Int_t val)       { fDigitThreshold      = val ; }
+       void     SetPinNoise(Float_t val)           { fPinNoise            = val ; }
+  void     SetTimeNoise(Float_t val)          { fTimeNoise           = val ; }
+       void     SetTimeDelay(Double_t val)         { fTimeDelay           = val ; }
+       void     SetTimeResolutionPar0(Double_t val){ fTimeResolutionPar0  = val ; }
+       void     SetTimeResolutionPar1(Double_t val){ fTimeResolutionPar1  = val ; }
+       void     SetNADCED(Int_t val)               { fNADCEC              = val ; }
+       void     SetMeanPhotonElectron(Int_t val)   { fMeanPhotonElectron  = val ; }
 
        //Parameters used in SDigitizer
-       Float_t GetA()                  const { return fA ; }
-       Float_t GetB()                  const { return fB ; }
-       Float_t GetECPrimaryThreshold() const { return fECPrimThreshold ; }
-       void    SetA(Float_t val)                  { fA               = val ; }
-       void    SetB(Float_t val)                  { fB               = val ; }
-       void    SetECPrimaryThreshold(Float_t val) { fECPrimThreshold = val ;}
+       Float_t  GetA()                       const { return fA                  ; }
+       Float_t  GetB()                       const { return fB                  ; }
+       Float_t  GetECPrimaryThreshold()      const { return fECPrimThreshold    ; }
+       void     SetA(Float_t val)                  { fA                   = val ; }
+       void     SetB(Float_t val)                  { fB                   = val ; }
+       void     SetECPrimaryThreshold(Float_t val) { fECPrimThreshold     = val ; }
 
 
 private:
@@ -58,7 +60,8 @@ private:
        // Digitizer
        Int_t    fDigitThreshold  ;     // Threshold for storing digits in EMC
        Int_t    fMeanPhotonElectron ;  // number of photon electrons per GeV deposited energy 
-       Float_t  fPinNoise ;            // Electronics noise in EMC
+       Float_t  fPinNoise ;            // Electronics noise in EMC, APD
+  Double_t fTimeNoise ;           // Electronics noise in EMC, time
        Double_t fTimeDelay;            // Time delay to reproduce data delay
        Double_t fTimeResolutionPar0 ;  // Time resolution of FEE electronics
        Double_t fTimeResolutionPar1 ;  // Time resolution of FEE electronics
@@ -69,7 +72,7 @@ private:
        Float_t fB ;                     // Slope Digitizition parameters
        Float_t fECPrimThreshold ;       // To store primary if EC Shower Elos > threshold
                
-  ClassDef(AliEMCALSimParam,4)
+  ClassDef(AliEMCALSimParam,5)
 };
 
 #endif