ROOT logo
AliRoot » MUON » AliMUONClusterSplitterMLEM

class AliMUONClusterSplitterMLEM: public TObject

 \class AliMUONClusterSplitterMLEM

 Splitter class for the MLEM algorithm. Performs fitting procedure
 with up to 3 hit candidates and tries to split clusters if the number
 of candidates exceeds 3.

 \author Laurent Aphecetche (for the "new" C++ structure) and
 Alexander Zinchenko, JINR Dubna, for the hardcore of it ;-)

Function Members (Methods)

public:
AliMUONClusterSplitterMLEM(Int_t detElemId, TObjArray* pixArray, Double_t lowestPixelCharge, Double_t lowestPadCharge, Double_t lowestClusterCharge)
virtual~AliMUONClusterSplitterMLEM()
voidTObject::AbstractMethod(const char* method) const
voidAddBin(TH2* mlem, Int_t ic, Int_t jc, Int_t mode, Bool_t* used, TObjArray* pix)
voidAddCluster(Int_t ic, Int_t nclust, TMatrixD& aijcluclu, Bool_t* used, Int_t* clustNumb, Int_t& nCoupled)
virtual voidTObject::AppendPad(Option_t* option = "")
TObject*BinToPix(TH2* mlem, Int_t jc, Int_t ic)
virtual voidTObject::Browse(TBrowser* b)
Float_tChargeIntegration(Double_t x, Double_t y, const AliMUONPad& pad)
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
voidFcn1(const AliMUONCluster& cluster, Int_t& npar, Double_t* gin, Double_t& f, Double_t* par, Int_t iflag)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Int_tFit(const AliMUONCluster& cluster, Int_t iSimple, Int_t nfit, const Int_t* clustFit, TObjArray** clusters, Double_t* parOk, TObjArray& clusterList, TH2* mlem)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() 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 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
voidTObject::MayNotUse(const char* method) const
voidMerge(const AliMUONCluster& cluster, Int_t nForFit, Int_t nCoupled, const Int_t* clustNumb, const Int_t* clustFit, TObjArray** clusters, TMatrixD& aijcluclu, TMatrixD& aijclupad)
Double_tMinGroupCoupl(Int_t nCoupled, const Int_t* clustNumb, const TMatrixD& aijcluclu, Int_t* minGroup)
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 = "")
Int_tSelectPad(const AliMUONCluster& cluster, Int_t nCoupled, Int_t nForFit, const Int_t* clustNumb, const Int_t* clustFit, const TMatrixD& aijclupad)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetDebug(Int_t debug)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
voidSplit(const AliMUONCluster& cluster, TH2* mlem, Double_t* coef, TObjArray& clusterList)
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
voidUpdatePads(const AliMUONCluster& cluster, Int_t nfit, Double_t* par)
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()

Data Members

private:
Int_tfDebug!< debug level
Int_tfDetElemId!< detection element we are working on
Double_tfLowestClusterCharge!< minimum allowed cluster charge
Double_tfLowestPadCharge!< minimum allowed pad charge
Double_tfLowestPixelCharge!< minimum allowed pixel charge
AliMUONMathieson*fMathieson!< Mathieson
Int_tfNpar!< number of fit parameters
TObjArray*fPixArray!< \todo add comment
Double_tfQtot!< total charge
static const Double_tfgkCouplMin/< threshold on coupling
Int_tfnCoupled!< number of coupled pixels ?

Class Charts

Inheritance Chart:
TObject
AliMUONClusterSplitterMLEM

Function documentation

AliMUONClusterSplitterMLEM(Int_t detElemId, TObjArray* pixArray, Double_t lowestPixelCharge, Double_t lowestPadCharge, Double_t lowestClusterCharge)
 Constructor
~AliMUONClusterSplitterMLEM()
 Destructor
AddBin(TH2* mlem, Int_t ic, Int_t jc, Int_t mode, Bool_t* used, TObjArray* pix)
 Add a bin to the cluster
AddCluster(Int_t ic, Int_t nclust, TMatrixD& aijcluclu, Bool_t* used, Int_t* clustNumb, Int_t& nCoupled)
 Add a cluster to the group of coupled clusters
BinToPix(TH2* mlem, Int_t jc, Int_t ic)
 Translate histogram bin to pixel
ChargeIntegration(Double_t x, Double_t y, const AliMUONPad& pad)
 Compute the Mathieson integral on pad area, assuming the center
 of the Mathieson is at (x,y)
Fcn1(const AliMUONCluster& cluster, Int_t& npar, Double_t* gin, Double_t& f, Double_t* par, Int_t iflag)
 Computes the functional to be minimized
Double_t Param2Coef(Int_t icand, Double_t coef, Double_t* par) const
 Extract hit contribution scale factor from fit parameters
Fit(const AliMUONCluster& cluster, Int_t iSimple, Int_t nfit, const Int_t* clustFit, TObjArray** clusters, Double_t* parOk, TObjArray& clusterList, TH2* mlem)
 Steering function and fitting procedure for the fit of pad charge distribution
Split(const AliMUONCluster& cluster, TH2* mlem, Double_t* coef, TObjArray& clusterList)
 The main steering function to work with clusters of pixels in anode
 plane (find clusters, decouple them from each other, merge them (if
 necessary), pick up coupled pads, call the fitting function)
Merge(const AliMUONCluster& cluster, Int_t nForFit, Int_t nCoupled, const Int_t* clustNumb, const Int_t* clustFit, TObjArray** clusters, TMatrixD& aijcluclu, TMatrixD& aijclupad)
 Merge the group of clusters with the one having the strongest coupling with them
MinGroupCoupl(Int_t nCoupled, const Int_t* clustNumb, const TMatrixD& aijcluclu, Int_t* minGroup)
 Find group of clusters with minimum coupling to all the others
SelectPad(const AliMUONCluster& cluster, Int_t nCoupled, Int_t nForFit, const Int_t* clustNumb, const Int_t* clustFit, const TMatrixD& aijclupad)
 Select pads for fit. If too many coupled clusters, find pads giving
 the strongest coupling with the rest of clusters and exclude them from the fit.
UpdatePads(const AliMUONCluster& cluster, Int_t nfit, Double_t* par)
 Subtract the fitted charges from pads with strong coupling
AliMUONClusterSplitterMLEM(Int_t detElemId, TObjArray* pixArray, Double_t lowestPixelCharge, Double_t lowestPadCharge, Double_t lowestClusterCharge)
void SetDebug(Int_t debug)
 Set debug level
{ fDebug = debug; }
AliMUONClusterSplitterMLEM& operator=(const AliMUONClusterSplitterMLEM& )
 will not be implemented