Add more user oriented options to costumize the tender - Jiri
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALUnfolding.h
index aada310..91fb7cd 100644 (file)
@@ -1,91 +1,99 @@
-#ifndef ALIEMCALUNFOLDING_H\r
-#define ALIEMCALUNFOLDING_H\r
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
- * See cxx source for full Copyright notice                               */\r
-     \r
-//_________________________________________________________________________\r
-//  Base class for the cluster unfolding algorithm \r
-//*-- Author: Adam Matyja (SUBATECH)\r
-\r
-// --- ROOT system ---\r
-#include "AliLog.h"\r
-#include "TObject.h" \r
-//class TTree;\r
-\r
-// --- Standard library ---\r
-\r
-// --- AliRoot header files ---\r
-class AliEMCALGeometry ;\r
-//class AliEMCALCalibData ;\r
-//class AliCaloCalibPedestal ;\r
-class AliEMCALRecPoint ; \r
-class AliEMCALDigit ;\r
-\r
-\r
-class AliEMCALUnfolding : public TObject {\r
-\r
-public:\r
-\r
-  AliEMCALUnfolding() ;        // default ctor\r
-  virtual ~AliEMCALUnfolding() ; // dtorEM\r
-  AliEMCALUnfolding(AliEMCALGeometry* geometry);// constructor\r
-  AliEMCALUnfolding(AliEMCALGeometry* geometry,Float_t ECALocMaxCut,Double_t *SSPars,Double_t *Par5,Double_t *Par6);// constructor\r
-\r
-  virtual void Init() ;\r
-  virtual void SetInput(Int_t numberOfECAClusters,TObjArray *recPoints,TClonesArray *digitsArr);\r
-\r
-  //setters and getters\r
-  virtual void SetNumberOfECAClusters(Int_t n) { fNumberOfECAClusters = n; }\r
-  virtual Int_t GetNumberOfECAClusters() const { return fNumberOfECAClusters; }\r
-  virtual void SetRecPoints(TObjArray *rec) { fRecPoints = rec; }\r
-  virtual TObjArray * GetRecPoints() const { return fRecPoints; }\r
-  virtual void SetDigitsArr(TClonesArray *digit) { fDigitsArr = digit; }\r
-  virtual TClonesArray * GetDigitsArr() const { return fDigitsArr; }\r
-  virtual void SetECALocalMaxCut(Float_t cut) { fECALocMaxCut = cut ; }\r
-  virtual Float_t GetECALocalMaxCut() const { return fECALocMaxCut; }\r
-\r
-  //unfolding main methods\r
-  virtual void   MakeUnfolding();\r
-  static Double_t ShowerShapeV2(Double_t x, Double_t y) ; // Shape of EM shower used in unfolding; \r
-                                              //class member function (not object member function)\r
-  static void UnfoldingChiSquareV2(Int_t & nPar, Double_t * Grad, Double_t & fret, Double_t * x, Int_t iflag)  ;\r
-                                            // Chi^2 of the fit. Should be static to be passes to MINUIT\r
-  virtual void SetShowerShapeParams(Double_t *pars) ;\r
-  virtual Double_t* GetShowerShapeParams() const { return fSSPars ; }\r
-  virtual void SetPar5(Double_t *pars) ;\r
-  virtual Double_t* GetPar5() const { return fPar5 ; }\r
-  virtual void SetPar6(Double_t *pars) ;\r
-  virtual Double_t* GetPar6() const { return fPar6 ; }\r
-\r
-protected:\r
-  Int_t   fNumberOfECAClusters ;     // number of clusters found in EC section\r
-  Float_t fECALocMaxCut ;            // minimum energy difference to distinguish local maxima in a cluster\r
-  AliEMCALGeometry     * fGeom;       //! pointer to geometry for utilities\r
-  TObjArray    *fRecPoints; // Array with EMCAL clusters\r
-  TClonesArray *fDigitsArr; // Array with EMCAL digits\r
-\r
-private:\r
-  AliEMCALUnfolding(const AliEMCALUnfolding &); //copy ctor\r
-  AliEMCALUnfolding & operator = (const AliEMCALUnfolding &);\r
-  \r
-  Bool_t         UnfoldClusterV2(AliEMCALRecPoint * iniEmc, Int_t Nmax, \r
-                                AliEMCALDigit ** maxAt,\r
-                                Float_t * maxAtEnergy ); //Unfolds cluster using TMinuit package\r
-  Bool_t  FindFitV2(AliEMCALRecPoint * emcRP, AliEMCALDigit ** MaxAt, const Float_t * maxAtEnergy, \r
-                   Int_t NPar, Float_t * FitParametres) const; //Used in UnfoldClusters, calls TMinuit\r
-\r
-  static Double_t fSSPars[8];//! Unfolding shower shape parameters\r
-  // function:\r
-  // f(r)=exp(-(p0*r)^p1 * (1/(p2+p3*(p0*r)^p1)+p4/(1+p6*(p0*r)^p5) ) )\r
-  // p0,p1,p2,p3,p4 are fixed\r
-  // params p5 and p6 are phi-dependent and set in ShowerShapeV2\r
-  static Double_t fPar5[3];//! UF SSPar nr 5 = p0 + phi*p1 + phi^2 *p2\r
-  static Double_t fPar6[3];//! UF SSPar nr 6 = p0 + phi*p1 + phi^2 *p2\r
-  static void EvalPar5(Double_t phi);\r
-  static void EvalPar6(Double_t phi);\r
-  static void EvalParsPhiDependence(Int_t absId, AliEMCALGeometry *geom);\r
-\r
-  ClassDef(AliEMCALUnfolding,1)  // Unfolding algorithm class \r
-} ;\r
-\r
-#endif // AliEMCALUNFOLDING_H\r
+#ifndef ALIEMCALUNFOLDING_H 
+#define ALIEMCALUNFOLDING_H 
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * 
+ * See cxx source for full Copyright notice                               */ 
+      
+//_________________________________________________________________________ 
+//  Base class for the cluster unfolding algorithm  
+//*-- Author: Adam Matyja (SUBATECH) 
+// --- ROOT system --- 
+//#include "AliLog.h" 
+#include "TObject.h"  
+//class TTree; 
+class AliLog ; 
+
+// --- Standard library --- 
+// --- AliRoot header files --- 
+class AliEMCALGeometry ; 
+//class AliEMCALCalibData ; 
+//class AliCaloCalibPedestal ; 
+class AliEMCALRecPoint ;  
+class AliEMCALDigit ; 
+class AliEMCALUnfolding : public TObject { 
+public: 
+  AliEMCALUnfolding() ;        // default ctor 
+  virtual ~AliEMCALUnfolding() ; // dtorEM 
+  AliEMCALUnfolding(AliEMCALGeometry* geometry);// constructor 
+  AliEMCALUnfolding(AliEMCALGeometry* geometry,Float_t ECALocMaxCut,Double_t *SSPars,Double_t *Par5,Double_t *Par6);// constructor 
+  virtual void Init() ; 
+  virtual void SetInput(Int_t numberOfECAClusters,TObjArray *recPoints,TClonesArray *digitsArr); 
+  //setters and getters 
+  virtual void SetNumberOfECAClusters(Int_t n) { fNumberOfECAClusters = n; } 
+  virtual Int_t GetNumberOfECAClusters() const { return fNumberOfECAClusters; } 
+  virtual void SetRecPoints(TObjArray *rec) { fRecPoints = rec; } 
+  virtual TObjArray * GetRecPoints() const { return fRecPoints; } 
+  virtual void SetDigitsArr(TClonesArray *digit) { fDigitsArr = digit; } 
+  virtual TClonesArray * GetDigitsArr() const { return fDigitsArr; } 
+  virtual void SetECALocalMaxCut(Float_t cut) { fECALocMaxCut = cut ; } 
+  virtual Float_t GetECALocalMaxCut() const { return fECALocMaxCut; } 
+  virtual void SetThreshold(Float_t energy) { fThreshold = energy; } 
+  virtual Float_t GetThreshold() const { return fThreshold; } 
+  //unfolding main methods 
+  virtual void   MakeUnfolding(); 
+  static Double_t ShowerShapeV2(Double_t x, Double_t y) ; // Shape of EM shower used in unfolding;  
+                                              //class member function (not object member function) 
+  static void UnfoldingChiSquareV2(Int_t & nPar, Double_t * Grad, Double_t & fret, Double_t * x, Int_t iflag)  ; 
+                                              // Chi^2 of the fit. Should be static to be passes to MINUIT 
+  virtual void SetShowerShapeParams(Double_t *pars) ; 
+  virtual Double_t* GetShowerShapeParams() const { return fgSSPars ; } 
+  virtual void SetPar5(Double_t *pars) ; 
+  virtual Double_t* GetPar5() const { return fgPar5 ; } 
+  virtual void SetPar6(Double_t *pars) ; 
+  virtual Double_t* GetPar6() const { return fgPar6 ; } 
+protected: 
+  Int_t   fNumberOfECAClusters ;     // number of clusters found in EC section 
+  Float_t fECALocMaxCut ;            // minimum energy difference to distinguish local maxima in a cluster 
+  Float_t fThreshold ; //minimum energy for cell to be joined to a cluster 
+  AliEMCALGeometry     * fGeom;       //! pointer to geometry for utilities 
+  TObjArray    *fRecPoints; // Array with EMCAL clusters 
+  TClonesArray *fDigitsArr; // Array with EMCAL digits 
+private: 
+  AliEMCALUnfolding(const AliEMCALUnfolding &); //copy ctor 
+  AliEMCALUnfolding & operator = (const AliEMCALUnfolding &); 
+   
+  Bool_t         UnfoldClusterV2(AliEMCALRecPoint * iniEmc, Int_t Nmax,  
+                                AliEMCALDigit ** maxAt, 
+                                Float_t * maxAtEnergy ); //Unfolds cluster using TMinuit package 
+  Bool_t         UnfoldClusterV2old(AliEMCALRecPoint * iniEmc, Int_t Nmax,  
+                                   AliEMCALDigit ** maxAt, 
+                                   Float_t * maxAtEnergy ); //Unfolds cluster using TMinuit package 
+  Bool_t  FindFitV2(AliEMCALRecPoint * emcRP, AliEMCALDigit ** MaxAt, const Float_t * maxAtEnergy,  
+                   Int_t NPar, Float_t * FitParametres) const; //Used in UnfoldClusters, calls TMinuit 
+  static Double_t fgSSPars[8];//! Unfolding shower shape parameters 
+  // function: 
+  // f(r)=exp(-(p0*r)^p1 * (1/(p2+p3*(p0*r)^p1)+p4/(1+p6*(p0*r)^p5) ) ) 
+  // p0,p1,p2,p3,p4 are fixed 
+  // params p5 and p6 are phi-dependent and set in ShowerShapeV2 
+  static Double_t fgPar5[3];//! UF SSPar nr 5 = p0 + phi*p1 + phi^2 *p2 
+  static Double_t fgPar6[3];//! UF SSPar nr 6 = p0 + phi*p1 + phi^2 *p2 
+  static void EvalPar5(Double_t phi); 
+  static void EvalPar6(Double_t phi); 
+  static void EvalParsPhiDependence(Int_t absId, const AliEMCALGeometry *geom); 
+  ClassDef(AliEMCALUnfolding,2)  // Unfolding algorithm class  
+} ; 
+#endif // AliEMCALUNFOLDING_H