ROOT logo
AliRoot » EMCAL » AliEMCALUnfolding

class AliEMCALUnfolding: public TObject

  Base class for the cluster unfolding algorithm
*-- Author: Adam Matyja (SUBATECH)
  Based on unfolding in clusterizerv1 done by Cynthia Hadjidakis
-- Unfolding for eta~0: Cynthia Hadjidakis - still in AliEMCALCLusterizerv1
-- Unfolding extension for whole EMCAL: Adam Matyja (SUBATECH & INP PAN)

  unfolds the clusters having several local maxima.

Function Members (Methods)

public:
AliEMCALUnfolding()
AliEMCALUnfolding(AliEMCALGeometry* geometry)
AliEMCALUnfolding(AliEMCALGeometry* geometry, Float_t ECALocMaxCut, Double_t* SSPars, Double_t* Par5, Double_t* Par6)
virtual~AliEMCALUnfolding()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual TClonesArray*GetDigitsArr() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Float_tGetECALocalMaxCut() const
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual Int_tGetNumberOfECAClusters() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual Double_t*GetPar5() const
virtual Double_t*GetPar6() const
virtual TObjArray*GetRecPoints() const
virtual Bool_tGetRejectBelowThreshold() const
virtual Double_t*GetShowerShapeParams() const
virtual Float_tGetThreshold() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidInit()
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
virtual voidMakeUnfolding()
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidSetDigitsArr(TClonesArray* digit)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidSetECALocalMaxCut(Float_t cut)
virtual voidSetInput(Int_t numberOfECAClusters, TObjArray* recPoints, TClonesArray* digitsArr)
virtual voidSetNumberOfECAClusters(Int_t n)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidSetPar5(Double_t* pars)
virtual voidSetPar6(Double_t* pars)
virtual voidSetRecPoints(TObjArray* rec)
virtual voidSetRejectBelowThreshold(Bool_t reject)
virtual voidSetShowerShapeParams(Double_t* pars)
virtual voidSetThreshold(Float_t energy)
virtual voidTObject::SetUniqueID(UInt_t uid)
static Double_tShowerShapeV2(Double_t x, Double_t y)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
static voidUnfoldingChiSquareV2(Int_t& nPar, Double_t* Grad, Double_t& fret, Double_t* x, Int_t iflag)
virtual Int_tUnfoldOneCluster(AliEMCALRecPoint* iniTower, Int_t nMax, AliEMCALDigit** maxAt, Float_t* maxAtEnergy, TObjArray* list)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
AliEMCALUnfolding(const AliEMCALUnfolding&)
static voidEvalPar5(Double_t phi)
static voidEvalPar6(Double_t phi)
static voidEvalParsPhiDependence(Int_t absId, const AliEMCALGeometry* geom)
Bool_tFindFitV2(AliEMCALRecPoint* emcRP, AliEMCALDigit** MaxAt, const Float_t* maxAtEnergy, Int_t NPar, Float_t* FitParametres) const
AliEMCALUnfolding&operator=(const AliEMCALUnfolding&)
Bool_tUnfoldClusterV2(AliEMCALRecPoint* iniEmc, Int_t Nmax, AliEMCALDigit** maxAt, Float_t* maxAtEnergy)
Bool_tUnfoldClusterV2old(AliEMCALRecPoint* iniEmc, Int_t Nmax, AliEMCALDigit** maxAt, Float_t* maxAtEnergy)

Data Members

protected:
TClonesArray*fDigitsArrArray with EMCAL digits
Float_tfECALocMaxCutminimum energy difference to distinguish local maxima in a cluster
AliEMCALGeometry*fGeom! pointer to geometry for utilities
Int_tfNumberOfECAClustersnumber of clusters found in EC section
TObjArray*fRecPointsArray with EMCAL clusters
Bool_tfRejectBelowThresholdsplit (false) or reject (true) cell energy below threshold after UF
Float_tfThresholdminimum energy for cell to be joined to a cluster
private:
static Double_tfgPar5[3]! UF SSPar nr 5 = p0 + phi*p1 + phi^2 *p2
static Double_tfgPar6[3]! UF SSPar nr 6 = p0 + phi*p1 + phi^2 *p2
static Double_tfgSSPars[8]! Unfolding shower shape parameters

Class Charts

Inheritance Chart:
TObject
AliEMCALUnfolding

Function documentation

AliEMCALUnfolding()
 ctor with the indication of the file where header Tree and digits Tree are stored
AliEMCALUnfolding(AliEMCALGeometry* geometry)
 ctor with the indication of the file where header Tree and digits Tree are stored
 use this contructor to avoid usage of Init() which uses runloader
 change needed by HLT - MP
AliEMCALUnfolding(AliEMCALGeometry* geometry, Float_t ECALocMaxCut, Double_t* SSPars, Double_t* Par5, Double_t* Par6)
 ctor with the indication of the file where header Tree and digits Tree are stored
 use this contructor to avoid usage of Init() which uses runloader
 change needed by HLT - MP
void Init()
 Make all memory allocations which can not be done in default constructor.
 Attach the Clusterizer task to the list of EMCAL tasks
~AliEMCALUnfolding()
 dtor
void SetInput(Int_t numberOfECAClusters, TObjArray* recPoints, TClonesArray* digitsArr)
Set input for unfolding purposes

void MakeUnfolding()
 Unfolds clusters using the shape of an ElectroMagnetic shower
 Performs unfolding of all clusters
Int_t UnfoldOneCluster(AliEMCALRecPoint* iniTower, Int_t nMax, AliEMCALDigit** maxAt, Float_t* maxAtEnergy, TObjArray* list)
 Input one cluster
 Output list of clusters
 returns number of clusters
 if fit failed or unfolding is not applicable returns 0 and empty list
Bool_t UnfoldClusterV2(AliEMCALRecPoint* iniEmc, Int_t Nmax, AliEMCALDigit** maxAt, Float_t* maxAtEnergy)
 Extended to whole EMCAL
 Performs the unfolding of a cluster with nMax overlapping showers
 Returns true if success (1->several clusters), otherwise false (fit failed)
Bool_t UnfoldClusterV2old(AliEMCALRecPoint* iniEmc, Int_t Nmax, AliEMCALDigit** maxAt, Float_t* maxAtEnergy)
 Extended to whole EMCAL
 Performs the unfolding of a cluster with nMax overlapping showers
Bool_t FindFitV2(AliEMCALRecPoint* emcRP, AliEMCALDigit** MaxAt, const Float_t* maxAtEnergy, Int_t NPar, Float_t* FitParametres) const
 Calls TMinuit to fit the energy distribution of a cluster with several maxima
 The initial values for fitting procedure are set equal to the
 positions of local maxima.
 Cluster will be fitted as a superposition of nPar/3
 electromagnetic showers
Double_t ShowerShapeV2(Double_t x, Double_t y)
 extended to whole EMCAL
 Shape of the shower
 If you change this function, change also the gradient evaluation in ChiSquare()
void UnfoldingChiSquareV2(Int_t& nPar, Double_t* Grad, Double_t& fret, Double_t* x, Int_t iflag)
 Calculates the Chi square for the cluster unfolding minimization
 Number of parameters, Gradient, Chi squared, parameters, what to do
void SetShowerShapeParams(Double_t* pars)
void SetPar5(Double_t* pars)
void SetPar6(Double_t* pars)
void EvalPar5(Double_t phi)
Evaluate the 5th parameter of the shower shape function
phi in degrees range (-10,10)

fSSPars[5] = 12.31 - phi*0.007381 - phi*phi*0.06936;
void EvalPar6(Double_t phi)
Evaluate the 6th parameter of the shower shape function
phi in degrees range (-10,10)

fSSPars[6] = 0.05452 + phi*0.0001228 + phi*phi*0.001361;
void EvalParsPhiDependence(Int_t absId, const AliEMCALGeometry* geom)
 calculate params p5 and p6 depending on the phi angle in global coordinate
 for the cell with given absId index

AliEMCALUnfolding()
void SetNumberOfECAClusters(Int_t n)
setters and getters
Int_t GetNumberOfECAClusters() const
void SetRecPoints(TObjArray* rec)
{ fRecPoints = rec; }
TObjArray * GetRecPoints() const
{ return fRecPoints; }
void SetDigitsArr(TClonesArray* digit)
{ fDigitsArr = digit; }
TClonesArray * GetDigitsArr() const
{ return fDigitsArr; }
void SetECALocalMaxCut(Float_t cut)
{ fECALocMaxCut = cut ; }
Float_t GetECALocalMaxCut() const
{ return fECALocMaxCut; }
void SetThreshold(Float_t energy)
{ fThreshold = energy; }
Float_t GetThreshold() const
{ return fThreshold; }
void SetRejectBelowThreshold(Bool_t reject)
{ fRejectBelowThreshold = reject; }
Bool_t GetRejectBelowThreshold() const
Double_t* GetShowerShapeParams() const
{ return fgSSPars ; }
Double_t* GetPar5() const
{ return fgPar5 ; }
Double_t* GetPar6() const
{ return fgPar6 ; }