]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/CaloTrackCorrBase/AliCalorimeterUtils.h
added run dependent corrections on T for calibration, removed old method
[u/mrichter/AliRoot.git] / PWG / CaloTrackCorrBase / AliCalorimeterUtils.h
index f65ee8958a3bd0188fbeffe6ddb017a39f4f5f05..669d2c66be2d7b4160802ad382ac23d6a1bc9345 100755 (executable)
@@ -23,7 +23,7 @@ class TArrayF;
 class AliVEvent;
 class AliVTrack;
 class AliAODPWG4Particle;
-class AliVCluster;
+class AliAODCaloCluster;
 class AliVCaloCells;
 class AliPHOSGeoUtils;
 class AliEMCALGeometry;
@@ -43,22 +43,48 @@ class AliCalorimeterUtils : public TObject {
        
   //virtual void Init();
        
+  // Cluster contents
+  
+  Bool_t        AreNeighbours(const TString calo, const Int_t absId1, const Int_t absId2) const ;  
+
+  Int_t         GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells)  ;
+  
+  Int_t         GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells,
+                                       Int_t *absIdList,     Float_t *maxEList)  ;
+  
+  Float_t       GetLocalMaximaCutE()                 const { return fLocMaxCutE           ; }
+  void          SetLocalMaximaCutE(Float_t cut)            { fLocMaxCutE     = cut        ; }
+  
+  Float_t       GetLocalMaximaCutEDiff()             const { return fLocMaxCutEDiff       ; }
+  void          SetLocalMaximaCutEDiff(Float_t c)          { fLocMaxCutEDiff = c          ; }
+  
   Int_t         GetMaxEnergyCell(AliVCaloCells* cells, const AliVCluster* clu, Float_t & fraction) const ;
   
+  void          SplitEnergy(const Int_t absId1, const Int_t absId2, 
+                            AliVCluster *cluster, 
+                            AliVCaloCells* cells,
+                            //Float_t & e1, Float_t & e2,
+                            AliAODCaloCluster *cluster1, 
+                            AliAODCaloCluster *cluster2, 
+                            const Int_t nMax, const Int_t eventNumber = 0);//, Int_t *absIdList, Float_t *maxEList,
+  
+  void          SwitchOnClusterPlot()                      { fPlotCluster = kTRUE         ; }
+  void          SwitchOffClusterPlot()                     { fPlotCluster = kFALSE        ; }
+
   //Calorimeters Geometry Methods
   AliEMCALGeometry * GetEMCALGeometry()              const { return fEMCALGeo             ; }
   TString       EMCALGeometryName()                  const { return fEMCALGeoName         ; }  
   void          SetEMCALGeometryName(TString name)         { fEMCALGeoName = name         ; }
-  void          InitEMCALGeometry() ; 
+  void          InitEMCALGeometry(Int_t runnumber = 180000) ; 
   Bool_t        IsEMCALGeoMatrixSet()                const { return fEMCALGeoMatrixSet    ; }
        
   AliPHOSGeoUtils * GetPHOSGeometry()                const { return fPHOSGeo              ; }  
   TString       PHOSGeometryName()                   const { return fPHOSGeoName          ; }  
   void          SetPHOSGeometryName(TString name)          { fPHOSGeoName = name          ; }
-  void          InitPHOSGeometry() ; 
+  void          InitPHOSGeometry(Int_t runnumber = 180000) ; 
   Bool_t        IsPHOSGeoMatrixSet()                 const { return fPHOSGeoMatrixSet     ; }
 
-  void          SetGeometryTransformationMatrices(AliVEvent* inputEvent) ;
+  void          AccessGeometry(AliVEvent* inputEvent) ;
        
   void          SwitchOnLoadOwnEMCALGeometryMatrices()     { fLoadEMCALMatrices = kTRUE   ; }
   void          SwitchOffLoadOwnEMCALGeometryMatrices()    { fLoadEMCALMatrices = kFALSE  ; }
@@ -166,8 +192,31 @@ class AliCalorimeterUtils : public TObject {
   void          SetEMCALChannelRecalibrationFactors(TObjArray *map)      { fEMCALRecoUtils->SetEMCALChannelRecalibrationFactors(map)        ; }
   void          SetPHOSChannelRecalibrationFactors (TObjArray *map)      { fPHOSRecalibrationFactors  = map;}
 
+  void          RecalibrateCellTime     (Double_t & time, const TString calo, const Int_t absId, const Int_t bunchCrossNumber) const ;
+  void          RecalibrateCellAmplitude(Float_t  & amp,  const TString calo, const Int_t absId) const ;
   Float_t       RecalibrateClusterEnergy(AliVCluster* cluster, AliVCaloCells * cells);
 
+  // Run dependent energy calibrations (EMCAL)
+  
+  void          SwitchOffRunDepCorrection()                              {  fRunDependentCorrection = kFALSE  ; }
+  void          SwitchOnRunDepCorrection()                               {  fRunDependentCorrection = kTRUE   ; }
+  
+  // Time Recalibration (EMCAL)
+  
+  Bool_t       IsTimeRecalibrationOn()                             const { return fEMCALRecoUtils->IsTimeRecalibrationOn() ; }
+  void         SwitchOffTimeRecalibration()                              { fEMCALRecoUtils->SwitchOffTimeRecalibration()   ; }
+  void         SwitchOnTimeRecalibration()                               { fEMCALRecoUtils->SwitchOnTimeRecalibration()    ; }
+  
+  Float_t      GetEMCALChannelTimeRecalibrationFactor(const Int_t bc, const Int_t absID) const 
+  { return fEMCALRecoUtils->GetEMCALChannelTimeRecalibrationFactor(bc, absID) ; } 
+       
+  void         SetEMCALChannelTimeRecalibrationFactor(const Int_t bc, const Int_t absID, Double_t c = 0) 
+  { fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactor(bc, absID, c) ; }  
+  
+  TH1F *       GetEMCALChannelTimeRecalibrationFactors(const Int_t bc)const       { return fEMCALRecoUtils-> GetEMCALChannelTimeRecalibrationFactors(bc) ; }   
+  void         SetEMCALChannelTimeRecalibrationFactors(TObjArray *map)            { fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactors(map)        ; }
+  void         SetEMCALChannelTimeRecalibrationFactors(const Int_t bc , TH1F* h)  { fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactors(bc , h)     ; }
+  
   //EMCAL specific utils for the moment
   void          SetEMCALRecoUtils(AliEMCALRecoUtils * ru)  { fEMCALRecoUtils = ru          ; }
   AliEMCALRecoUtils* GetEMCALRecoUtils()             const { return fEMCALRecoUtils        ; }
@@ -219,6 +268,21 @@ class AliCalorimeterUtils : public TObject {
   Float_t       GetCutPhi()                               const { return fCutPhi                ; } // EMCAL only
   void          SetCutPhi(Float_t p)                            { fCutPhi = p                   ;   // EMCAL only
                                                                   fEMCALRecoUtils->SetCutPhi(p) ; }
+  // OADB options settings
+  
+  void          AccessOADB(AliVEvent * event) ;
+  
+  TString       GetPass() ;
+  
+  void          SwitchOnEMCALOADB()                             { fOADBForEMCAL = kTRUE         ; }
+  void          SwitchOffEMCALOADB()                            { fOADBForEMCAL = kFALSE        ; }
+
+  void          SwitchOnPHOSOADB()                              { fOADBForPHOS  = kTRUE         ; }
+  void          SwitchOffPHOSOADB()                             { fOADBForPHOS  = kFALSE        ; }
+
+  void          SetEMCALOADBFilePath(TString path)              { fOADBFilePathEMCAL  = path    ; }
+  void          SetPHOSOADBFilePath (TString path)              { fOADBFilePathPHOS   = path    ; }
+
   
  private:
 
@@ -230,7 +294,7 @@ class AliCalorimeterUtils : public TObject {
   Bool_t             fEMCALGeoMatrixSet;     //  Check if the transformation matrix is set for EMCAL
   Bool_t             fPHOSGeoMatrixSet ;     //  Check if the transformation matrix is set for PHOS
   Bool_t             fLoadEMCALMatrices;     //  Matrices set from configuration, not get from geometry.root or from ESDs/AODs
-  TGeoHMatrix *      fEMCALMatrix[10];       //  Geometry matrices with alignments
+  TGeoHMatrix *      fEMCALMatrix[12];       //  Geometry matrices with alignments
   Bool_t             fLoadPHOSMatrices;      //  Matrices set from configuration, not get from geometry.root or from ESDs/AODs
   TGeoHMatrix *      fPHOSMatrix[5];         //  Geometry matrices with alignments
   Bool_t             fRemoveBadChannels;     //  Check the channel status provided and remove clusters with bad channels
@@ -239,6 +303,7 @@ class AliCalorimeterUtils : public TObject {
   Int_t              fNMaskCellColumns;      //  Number of masked columns
   Int_t*             fMaskCellColumns;       //[fNMaskCellColumns] list of masked cell collumn
   Bool_t             fRecalibration;         //  Switch on or off the recalibration
+  Bool_t             fRunDependentCorrection;//  Switch on or off the recalibration dependent on T
   TObjArray        * fPHOSRecalibrationFactors;  // Array of histograms with map of recalibration factors, PHOS
   AliEMCALRecoUtils* fEMCALRecoUtils;        //  EMCAL utils for cluster rereconstruction
   Bool_t             fRecalculatePosition;   //  Recalculate cluster position
@@ -248,11 +313,19 @@ class AliCalorimeterUtils : public TObject {
   Float_t            fCutZ;                  //  dZ cut on matching (EMCAL/PHOS)
   Float_t            fCutEta;                //  dEta cut on matching (EMCAL)
   Float_t            fCutPhi;                //  dPhi cut on matching (EMCAL)
+  Float_t            fLocMaxCutE;            //  Local maxima cut must have more than this energy
+  Float_t            fLocMaxCutEDiff;        //  Local maxima cut, when aggregating cells, next can be a bit higher
+  Bool_t             fPlotCluster;           //  Plot cluster in splitting method
+  Bool_t             fOADBSet ;              //  AODB parameters already set
+  Bool_t             fOADBForEMCAL ;         //  Get calibration from OADB for EMCAL
+  Bool_t             fOADBForPHOS ;          //  Get calibration from OADB for PHOS
+  TString            fOADBFilePathEMCAL ;    //  Default path $ALICE_ROOT/OADB/EMCAL, if needed change
+  TString            fOADBFilePathPHOS ;     //  Default path $ALICE_ROOT/OADB/PHOS, if needed change
   
-  AliCalorimeterUtils(const AliCalorimeterUtils & g) ; // cpy ctor
-  AliCalorimeterUtils & operator = (const AliCalorimeterUtils & g) ;//cpy assignment
+  AliCalorimeterUtils(              const AliCalorimeterUtils & cu) ; // cpy ctor
+  AliCalorimeterUtils & operator = (const AliCalorimeterUtils & cu) ; // cpy assignment
   
-  ClassDef(AliCalorimeterUtils,8)
+  ClassDef(AliCalorimeterUtils,14)
 } ;