LCOV - code coverage report
Current view: top level - EMCAL/EMCALrec - AliEMCALClusterizer.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 3 42 7.1 %
Date: 2016-06-14 17:26:59 Functions: 4 41 9.8 %

          Line data    Source code
       1             : #ifndef ALIEMCALCLUSTERIZER_H
       2             : #define ALIEMCALCLUSTERIZER_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             :                             
       6             : //_________________________________________________________________________
       7             : //  Base class for the clusterization algorithm (pure abstract)
       8             : //*-- Author: Yves Schutz (SUBATECH) & Dmitri Peressounko (SUBATECH & Kurchatov Institute)
       9             : //
      10             : //   Clusterization mother class. Contains common methods/data members of different 
      11             : //   clusterizers. GCB 2010
      12             : //_________________________________________________________________________
      13             : 
      14             : // --- ROOT system ---
      15             : #include <TObject.h>
      16             : #include <TClonesArray.h>
      17             : class TTree;
      18             : 
      19             : // --- AliRoot header files ---
      20             : #include "AliLog.h"
      21             : class AliEMCALGeometry;
      22             : class AliEMCALCalibData;
      23             : class AliEMCALCalibTime;
      24             : class AliCaloCalibPedestal;
      25             : class AliEMCALRecParam;
      26             : #include "AliEMCALUnfolding.h"
      27             : 
      28             : class AliEMCALClusterizer : public TObject {
      29             : 
      30             : public:
      31             : 
      32             :   AliEMCALClusterizer();
      33             :   AliEMCALClusterizer(AliEMCALGeometry *geometry);
      34             :   AliEMCALClusterizer(AliEMCALGeometry *geometry, AliEMCALCalibData *calib, 
      35             :                       AliEMCALCalibTime * calibt, AliCaloCalibPedestal *pedestal);
      36             :   virtual ~AliEMCALClusterizer();
      37             : 
      38             :   // main methods
      39             : 
      40             :   virtual void    DeleteDigits();
      41             :   virtual void    DeleteRecPoints();
      42             : 
      43             :   virtual void    Digits2Clusters(Option_t *option) = 0;
      44             : 
      45             :   virtual void    Calibrate(Float_t & amp, Float_t & time, const Int_t cellId);
      46             :   virtual void    Init();
      47             :   virtual void    InitParameters();
      48             :   virtual void    InitParameters(const AliEMCALRecParam* recParam);
      49             : 
      50             :   virtual void    Print         (Option_t *option)   const ;
      51             :   virtual void    PrintRecPoints(Option_t *option);
      52             :   virtual void    PrintRecoInfo();
      53             : 
      54           0 :   virtual const char *Version()                      const { Warning("Version", "Not Defined"); 
      55           0 :                                                              return 0 ;                        } 
      56             : 
      57             :   //Getters-Setters
      58             : 
      59             :   virtual void    SetInput (TTree *digitsTree  );
      60             :   virtual void    SetOutput(TTree *clustersTree);
      61             : 
      62             :   virtual void    GetCalibrationParameters(void);
      63             :   virtual void    GetCaloCalibPedestal(void);
      64           0 :   virtual void    SetCalibrationParameters(AliEMCALCalibData *calib)     { fCalibData = calib;   }
      65           0 :   virtual void    SetTimeCalibrationParameters(AliEMCALCalibTime *calib) { fCalibTime = calib;   }
      66           0 :   virtual void    SetCaloCalibPedestal(AliCaloCalibPedestal  *caped)     { fCaloPed   = caped;   }
      67             :   
      68           0 :   virtual Float_t GetTimeMin()                        const { return fTimeMin;                 }
      69           0 :   virtual Float_t GetTimeMax()                        const { return fTimeMax;                 }
      70           0 :   virtual Float_t GetTimeCut()                        const { return fTimeCut;                 }
      71           0 :   virtual Float_t IsTimeCalibrationOn()               const { return fTimeCalibration;         }
      72           0 :   virtual Float_t GetECAClusteringThreshold()         const { return fECAClusteringThreshold;  }  
      73           0 :   virtual Float_t GetECALocalMaxCut()                 const { return fECALocMaxCut;            } 
      74           0 :   virtual Float_t GetECALogWeight()                   const { return fECAW0;                   }
      75           0 :   virtual Float_t GetMinECut()                        const { return fMinECut;                 } 
      76           0 :   virtual Bool_t  GetRejectBelowThreshold()           const { return fRejectBelowThreshold;    }
      77             : 
      78           0 :   virtual void    SetTimeMin(Float_t t)                           { fTimeMin = t;                    }
      79           0 :   virtual void    SetTimeMax(Float_t t)                           { fTimeMax = t;                    }
      80           0 :   virtual void    SetTimeCut(Float_t t)                           { fTimeCut = t;                    }
      81           0 :   virtual void    SetTimeCalibration(Bool_t t)                    { fTimeCalibration = t;            }
      82           0 :   virtual void    SetECAClusteringThreshold(Float_t th)     { fECAClusteringThreshold = th;    }
      83           0 :   virtual void    SetMinECut(Float_t mine)                  { fMinECut      = mine;            }
      84           0 :   virtual void    SetECALocalMaxCut(Float_t cut)            { fECALocMaxCut = cut;             }
      85           0 :   virtual void    SetECALogWeight(Float_t w)                { fECAW0        = w;               }
      86           0 :   virtual void    SetRejectBelowThreshold(Bool_t reject)    { fRejectBelowThreshold = reject;  }
      87             :   
      88             :   //Unfolding
      89             : 
      90           0 :   virtual void    SetUnfolding(Bool_t toUnfold = kTRUE )    { fToUnfold = toUnfold;            }  
      91           0 :   virtual void    SetSSPars   (Int_t ipar, Double_t par)    { fSSPars[ipar] = par;             }
      92           0 :   virtual void    SetPar5     (Int_t ipar, Double_t par)    { fPar5  [ipar] = par;             }
      93           0 :   virtual void    SetPar6     (Int_t ipar, Double_t par)    { fPar6  [ipar] = par;             }
      94             :   virtual void    InitClusterUnfolding()                    {
      95           0 :     fClusterUnfolding=new AliEMCALUnfolding(fGeom,fECALocMaxCut,fSSPars,fPar5,fPar6); 
      96           0 :     fClusterUnfolding->SetThreshold(fMinECut);
      97           0 :     fClusterUnfolding->SetRejectBelowThreshold(fRejectBelowThreshold);                         }
      98             : 
      99             :   //NxN (only used in NxN clusterizer)
     100             :   
     101          16 :   virtual void    SetNRowDiff(Int_t )                       { ; }
     102          16 :   virtual void    SetNColDiff(Int_t )                       { ; }
     103           0 :   virtual void    SetEnergyGrad(Bool_t )                    { ; }
     104             : 
     105           0 :   virtual Int_t   GetNRowDiff()                       const { return -1 ; }
     106           0 :   virtual Int_t   GetNColDiff()                       const { return -1 ; } 
     107           0 :   virtual Bool_t  GetEnergyGrad()                     const { return -1 ; }
     108             : 
     109             :   // add for clusterizing task
     110             : 
     111           0 :   virtual void                SetDigitsArr(TClonesArray *arr) { fDigitsArr = arr  ;            }
     112           0 :   virtual TClonesArray *GetDigits()                           { if (!fDigitsArr)
     113           0 :                                                                   fDigitsArr = new TClonesArray("AliEMCALDigit",12000);
     114           0 :                                                                 return fDigitsArr ;            }
     115           0 :   virtual const TObjArray    *GetRecPoints()            const { return fRecPoints ;            }
     116             :   void                        SetInputCalibrated(Bool_t val);
     117             :   void                        SetJustClusters   (Bool_t val);
     118             :   
     119             : 
     120             : protected:
     121             : 
     122             :   virtual void MakeClusters() = 0;
     123             :   
     124             :   Bool_t   fIsInputCalibrated;          // to enable reclusterization from ESD cells
     125             :   Bool_t   fJustClusters;               // false for standard reco  
     126             :   TClonesArray         *fDigitsArr;     // array with EMCAL digits
     127             :   TTree                *fTreeR;         // tree with output clusters
     128             :   TObjArray            *fRecPoints;     // array with EMCAL clusters
     129             :   
     130             :   AliEMCALGeometry     *fGeom;          //! pointer to geometry for utilities
     131             :   AliEMCALCalibData    *fCalibData;     //! energy calibration database if aval
     132             :   AliEMCALCalibTime    *fCalibTime;     //! time calibration database if aval
     133             :   AliCaloCalibPedestal *fCaloPed;       //! tower status map if aval
     134             :   
     135             :   Float_t  fADCchannelECA;              // width of one ADC channel for EC section (GeV)
     136             :   Float_t  fADCpedestalECA;             // pedestal of ADC for EC section (GeV) 
     137             :   Float_t  fTimeECA;                    // calibration parameter for channels time
     138             :   
     139             :   Float_t  fTimeMin;                    // minimum time of physical signal in a cell/digit
     140             :   Float_t  fTimeMax;                    // maximum time of physical signal in a cell/digit
     141             :   Float_t  fTimeCut;                    // maximum time difference between the digits inside EMC cluster
     142             :   Bool_t   fTimeCalibration;            // recover time shifts from OCDB?
     143             : 
     144             :   Bool_t   fDefaultInit;                //!says if the task was created by defaut ctor (only parameters are initialized)
     145             :   Bool_t   fToUnfold;                   // says if unfolding should be performed 
     146             :   Int_t    fNumberOfECAClusters;        // number of clusters found in EC section
     147             :   
     148             :   Float_t  fECAClusteringThreshold;     // minimum energy to seed a EC digit in a cluster
     149             :   Float_t  fECALocMaxCut;               // minimum energy difference to distinguish local maxima in a cluster
     150             :   Float_t  fECAW0;                      // logarithmic weight for the cluster center of gravity calculation
     151             :   Float_t  fMinECut;                    // minimum energy for a digit to be a member of a cluster
     152             :   Bool_t   fRejectBelowThreshold;       // split (false-default) or reject (true) cell energy below threshold after UF 
     153             :   
     154             :   AliEMCALUnfolding *fClusterUnfolding; //!pointer to unfolding object
     155             :   Double_t fSSPars[8];                  // shower shape parameters 
     156             :   Double_t fPar5[3];                    // shower shape parameter 5
     157             :   Double_t fPar6[3];                    // shower shape parameter 6
     158             : 
     159             :  private:
     160             :   AliEMCALClusterizer(              const AliEMCALClusterizer &);
     161             :   AliEMCALClusterizer & operator = (const AliEMCALClusterizer &);
     162             :   
     163          46 :   ClassDef(AliEMCALClusterizer,10)  // Clusterization algorithm class 
     164             :   
     165             : };
     166             : #endif // AliEMCALCLUSTERIZER_H

Generated by: LCOV version 1.11