ROOT logo
#ifndef ALIEMCALCLUSTERPARAMS_H
#define ALIEMCALCLUSTERPARAMS_H

// $Id$

#include <TObject.h>
class AliESDtrack;
class AliESDCaloCluster;
class AliEMCALGeometry;
class AliESDCaloCells;
class TObjArray;

class AliEMCALClusterParams : public TObject 
{
 public: 
  AliEMCALClusterParams(AliESDtrack       *trackin, 
                        AliESDCaloCluster *clusin, 
                        AliEMCALGeometry  *geometryin, 
                        AliESDCaloCells   *cellsin);
  virtual ~AliEMCALClusterParams() {;}

  Double_t   GetPe()                  const; 
  Int_t      IsElectron()             const;  
  void       LoopThroughCells()       const;
  void       PrintClusterParameters() const;

  //==========Un-log-weighted parameters============================================================
  void       GetCentroid(Double_t &xback, Double_t &yback, Double_t &rback) const;
  Double_t   GetR(Double_t x, Double_t y)                const;                //Uses Centroid
  Double_t   GetRfactor()                                const;                //Uses GetR,Centroid
  Double_t   ElectronFraction(Double_t r, Double_t tce)  const;                //Only used locally for K-factor
  Double_t   GetKfactor()                                const;                //Gets K-factor, uses electronfraction
  Double_t   GetDispersionX()                            const;                //Gets unweighted dispersionX
  Double_t   GetDispersionY()                            const;                //Gets unweighted dispersionY
  Double_t   GetDispersionMax()                          const;                //Gets unweighted dispersionMax
  void       GetEllipseParameters(Double_t &param1, Double_t &param2) const;   //Gets M02 M20
  Double_t   GetDispersion()                             const;                //Unweighted Dispersion

  //==========Log-weighted parameters===============================================================
  void       GetWeightedCentroid(Double_t &xback, Double_t &yback, Double_t &rback) const;
  Double_t   GetWeightedR(Double_t x, Double_t y)                             const;       //Weighted r, uses WeightedCentriod
  Double_t   GetWeightedRfactor()                                             const;       //Uses WeightedR
  Double_t   ElectronfractionWeighted(Double_t r, Double_t tce)               const;       //Used locally for K-factor weighted
  Double_t   GetWeightedKfactor()                                             const;       //Gets Weighted K-factor
  Double_t   GetWeightedDispersionX()                                         const;       //Gets Weighted dispersionX
  Double_t   GetWeightedDispersionY()                                         const;       //Gets Weighted dispersionY
  Double_t   GetWeightedDispersionMax()                                       const;       //Gets Weighted dispersionMax
  void       GetWeightedEllipseParameters(Double_t &param1, Double_t &param2) const;       //Gets weighted M02 M20
  Double_t   GetWeightedDispersion(Double_t &dispersionback)                  const;       //Gets Weighted dispersion

  void     RecalculateClusterShowerShapeParameters(Double_t &m02, Double_t &m20, Double_t &dispersion) const; //from Gustavo's code!

 private:
  AliESDtrack        *fTrack;       //!
  AliESDCaloCluster  *fCluster;     //!
  AliEMCALGeometry   *fGeom;        //!
  AliESDCaloCells    *fCells;       //!
	
  AliEMCALClusterParams(const AliEMCALClusterParams & g);
  AliEMCALClusterParams & operator = (const AliEMCALClusterParams & g);

  ClassDef(AliEMCALClusterParams,0) 
};
#endif //ALIEMCALCLUSTERPARAMS_H
 AliEMCALClusterParams.h:1
 AliEMCALClusterParams.h:2
 AliEMCALClusterParams.h:3
 AliEMCALClusterParams.h:4
 AliEMCALClusterParams.h:5
 AliEMCALClusterParams.h:6
 AliEMCALClusterParams.h:7
 AliEMCALClusterParams.h:8
 AliEMCALClusterParams.h:9
 AliEMCALClusterParams.h:10
 AliEMCALClusterParams.h:11
 AliEMCALClusterParams.h:12
 AliEMCALClusterParams.h:13
 AliEMCALClusterParams.h:14
 AliEMCALClusterParams.h:15
 AliEMCALClusterParams.h:16
 AliEMCALClusterParams.h:17
 AliEMCALClusterParams.h:18
 AliEMCALClusterParams.h:19
 AliEMCALClusterParams.h:20
 AliEMCALClusterParams.h:21
 AliEMCALClusterParams.h:22
 AliEMCALClusterParams.h:23
 AliEMCALClusterParams.h:24
 AliEMCALClusterParams.h:25
 AliEMCALClusterParams.h:26
 AliEMCALClusterParams.h:27
 AliEMCALClusterParams.h:28
 AliEMCALClusterParams.h:29
 AliEMCALClusterParams.h:30
 AliEMCALClusterParams.h:31
 AliEMCALClusterParams.h:32
 AliEMCALClusterParams.h:33
 AliEMCALClusterParams.h:34
 AliEMCALClusterParams.h:35
 AliEMCALClusterParams.h:36
 AliEMCALClusterParams.h:37
 AliEMCALClusterParams.h:38
 AliEMCALClusterParams.h:39
 AliEMCALClusterParams.h:40
 AliEMCALClusterParams.h:41
 AliEMCALClusterParams.h:42
 AliEMCALClusterParams.h:43
 AliEMCALClusterParams.h:44
 AliEMCALClusterParams.h:45
 AliEMCALClusterParams.h:46
 AliEMCALClusterParams.h:47
 AliEMCALClusterParams.h:48
 AliEMCALClusterParams.h:49
 AliEMCALClusterParams.h:50
 AliEMCALClusterParams.h:51
 AliEMCALClusterParams.h:52
 AliEMCALClusterParams.h:53
 AliEMCALClusterParams.h:54
 AliEMCALClusterParams.h:55
 AliEMCALClusterParams.h:56
 AliEMCALClusterParams.h:57
 AliEMCALClusterParams.h:58
 AliEMCALClusterParams.h:59
 AliEMCALClusterParams.h:60
 AliEMCALClusterParams.h:61
 AliEMCALClusterParams.h:62
 AliEMCALClusterParams.h:63
 AliEMCALClusterParams.h:64