AliRoot Core  3dc7879 (3dc7879)
AliEMCALUnfolding.h
Go to the documentation of this file.
1 #ifndef ALIEMCALUNFOLDING_H
2 #define ALIEMCALUNFOLDING_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
6 //_________________________________________________________________________
20 
21 // --- ROOT system ---
22 #include "TObject.h"
23 class AliLog ;
24 
25 // --- AliRoot header files ---
26 class AliEMCALGeometry ;
27 class AliEMCALRecPoint ;
28 class AliEMCALDigit ;
29 
30 class AliEMCALUnfolding : public TObject
31 {
32 
33 public:
34 
35  AliEMCALUnfolding() ; // default ctor
36  virtual ~AliEMCALUnfolding() ; // dtor
37  AliEMCALUnfolding(AliEMCALGeometry* geometry);// constructor
38  AliEMCALUnfolding(AliEMCALGeometry* geometry,Float_t ECALocMaxCut,Double_t *SSPars,Double_t *Par5,Double_t *Par6);// constructor
39 
40  virtual void Init() ;
41  virtual void SetInput(Int_t numberOfECAClusters,TObjArray *recPoints,TClonesArray *digitsArr);
42 
43  // Setters and getters
44  virtual void SetNumberOfECAClusters(Int_t n) { fNumberOfECAClusters = n ; }
45  virtual Int_t GetNumberOfECAClusters() const { return fNumberOfECAClusters ; }
46 
47  virtual void SetRecPoints(TObjArray *rec) { fRecPoints = rec ; }
48  virtual TObjArray * GetRecPoints() const { return fRecPoints ; }
49 
50  virtual void SetDigitsArr(TClonesArray *digit) { fDigitsArr = digit; }
51  virtual TClonesArray * GetDigitsArr() const { return fDigitsArr ; }
52 
53  virtual void SetECALocalMaxCut(Float_t cut) { fECALocMaxCut = cut ; }
54  virtual Float_t GetECALocalMaxCut() const { return fECALocMaxCut ; }
55 
56  virtual void SetThreshold(Float_t energy) { fThreshold = energy ; }
57  virtual Float_t GetThreshold() const { return fThreshold ; }
58 
59  virtual void SetRejectBelowThreshold(Bool_t reject) { fRejectBelowThreshold = reject ; }
60  virtual Bool_t GetRejectBelowThreshold() const { return fRejectBelowThreshold ; }
61 
62  virtual void SetRange(Float_t range) { fRange = range ; }
63  virtual Float_t GetRange() const { return fRange ; }
64 
65  // Unfolding main methods
66  virtual void MakeUnfolding();
67  static Double_t ShowerShapeV2(Double_t x, Double_t y) ; // Shape of EM shower used in unfolding;
68  //class member function (not object member function)
69  static void UnfoldingChiSquareV2(Int_t & nPar, Double_t * Grad, Double_t & fret, Double_t * x, Int_t iflag) ;
70  // Chi^2 of the fit. Should be static to be passes to MINUIT
71  virtual void SetShowerShapeParams(Double_t *pars) ;
72  virtual Double_t* GetShowerShapeParams() const { return fgSSPars ; }
73 
74  virtual void SetPar5(Double_t *pars) ;
75  virtual Double_t* GetPar5() const { return fgPar5 ; }
76 
77  virtual void SetPar6(Double_t *pars) ;
78  virtual Double_t* GetPar6() const { return fgPar6 ; }
79 
80  virtual Int_t UnfoldOneCluster(AliEMCALRecPoint * iniTower,
81  Int_t nMax,
82  AliEMCALDigit ** maxAt,
83  Float_t * maxAtEnergy,
84  TObjArray *list);//input one cluster -> output list
85 
86 protected:
87 
89  Float_t fECALocMaxCut ;
90  Float_t fThreshold ;
92  Float_t fRange ;
95  TClonesArray * fDigitsArr;
96 
97 private:
98 
99  AliEMCALUnfolding (const AliEMCALUnfolding &); //copy ctor
101 
102  Bool_t UnfoldClusterV2(AliEMCALRecPoint * iniEmc, Int_t Nmax,
103  AliEMCALDigit ** maxAt,
104  Float_t * maxAtEnergy ); //Unfolds cluster using TMinuit package
105 
106  Bool_t UnfoldClusterV2old(AliEMCALRecPoint * iniEmc, Int_t Nmax,
107  AliEMCALDigit ** maxAt,
108  Float_t * maxAtEnergy ); //Unfolds cluster using TMinuit package
109 
110  Bool_t FindFitV2(AliEMCALRecPoint * emcRP, AliEMCALDigit ** MaxAt, const Float_t * maxAtEnergy,
111  Int_t NPar, Float_t * FitParametres) const; //Used in UnfoldClusters, calls TMinuit
112 
118  static Double_t fgSSPars[8];
119 
120  static Double_t fgPar5[3];
121  static Double_t fgPar6[3];
122 
123  static void EvalPar5(Double_t phi);
124  static void EvalPar6(Double_t phi);
125  static void EvalParsPhiDependence(Int_t absId, const AliEMCALGeometry *geom);
126 
128  ClassDef(AliEMCALUnfolding,4) ;
130 
131 } ;
132 
133 #endif // AliEMCALUNFOLDING_H
virtual void SetRange(Float_t range)
Float_t fRange
Range (distance from maximum) of application of unfolding.
static Double_t fgPar6[3]
UF SSPar nr 6 = p0 + phi*p1 + phi^2 *p2.
Float_t fThreshold
Minimum energy for cell to be joined to a cluster.
virtual Float_t GetECALocalMaxCut() const
#define TObjArray
virtual Bool_t GetRejectBelowThreshold() const
static Double_t fgSSPars[8]
Int_t fNumberOfECAClusters
Number of clusters found in EC section.
virtual void SetRejectBelowThreshold(Bool_t reject)
virtual void SetPar5(Double_t *pars)
TClonesArray * fDigitsArr
Array with EMCAL digits.
virtual void SetInput(Int_t numberOfECAClusters, TObjArray *recPoints, TClonesArray *digitsArr)
Bool_t FindFitV2(AliEMCALRecPoint *emcRP, AliEMCALDigit **MaxAt, const Float_t *maxAtEnergy, Int_t NPar, Float_t *FitParametres) const
virtual Float_t GetRange() const
EMCal digits object.
Definition: AliEMCALDigit.h:30
static void EvalPar5(Double_t phi)
Base class for the cluster unfolding algorithm.
static void UnfoldingChiSquareV2(Int_t &nPar, Double_t *Grad, Double_t &fret, Double_t *x, Int_t iflag)
TObjArray * fRecPoints
Array with EMCAL clusters.
AliEMCALUnfolding & operator=(const AliEMCALUnfolding &)
virtual TClonesArray * GetDigitsArr() const
virtual Int_t UnfoldOneCluster(AliEMCALRecPoint *iniTower, Int_t nMax, AliEMCALDigit **maxAt, Float_t *maxAtEnergy, TObjArray *list)
static Double_t fgPar5[3]
UF SSPar nr 5 = p0 + phi*p1 + phi^2 *p2.
virtual void SetPar6(Double_t *pars)
virtual TObjArray * GetRecPoints() const
virtual void MakeUnfolding()
EMCal rec_points object.
Definition: AliLog.h:27
virtual Double_t * GetShowerShapeParams() const
Float_t range[5]
void rec(const char *filename="raw.root")
Definition: rec.C:1
virtual Double_t * GetPar6() const
virtual void SetShowerShapeParams(Double_t *pars)
virtual void SetRecPoints(TObjArray *rec)
static Double_t ShowerShapeV2(Double_t x, Double_t y)
Float_t fECALocMaxCut
Minimum energy difference to distinguish local maxima in a cluster.
virtual Double_t * GetPar5() const
static void EvalParsPhiDependence(Int_t absId, const AliEMCALGeometry *geom)
virtual void SetECALocalMaxCut(Float_t cut)
AliEMCALGeometry * fGeom
! Pointer to geometry for utilities
Bool_t UnfoldClusterV2old(AliEMCALRecPoint *iniEmc, Int_t Nmax, AliEMCALDigit **maxAt, Float_t *maxAtEnergy)
static void EvalPar6(Double_t phi)
virtual void SetNumberOfECAClusters(Int_t n)
Bool_t UnfoldClusterV2(AliEMCALRecPoint *iniEmc, Int_t Nmax, AliEMCALDigit **maxAt, Float_t *maxAtEnergy)
virtual Float_t GetThreshold() const
virtual void SetThreshold(Float_t energy)
virtual ~AliEMCALUnfolding()
Destructor.
virtual Int_t GetNumberOfECAClusters() const
TCut cut
Definition: MakeGlobalFit.C:75
TEveGeoShape * geom
Definition: tpc_tracks.C:10
Bool_t fRejectBelowThreshold
Split (false) or reject (true) cell energy below threshold after UF.
EMCal geometry, singleton.
virtual void SetDigitsArr(TClonesArray *digit)