ROOT logo
AliRoot » MUON » AliMUONClusterFinderPeakCOG

class AliMUONClusterFinderPeakCOG: public AliMUONVClusterFinder

 \class AliMUONClusterFinderPeakCOG

 Clusterizer class based on simple peak finder

 Pre-clustering is handled by AliMUONPreClusterFinder
 From a precluster a pixel array is built, and its local maxima are used
 to get pads and compute pad center of gravity.

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

Function Members (Methods)

public:
AliMUONClusterFinderPeakCOG(Bool_t plot, AliMUONVClusterFinder* clusterFinder)
virtual~AliMUONClusterFinderPeakCOG()
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 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
virtual Bool_tNeedSegmentation() const
virtual AliMUONCluster*NextCluster()
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 Bool_tPrepare(Int_t detElemId, TObjArray** pads, const AliMpArea& area, const AliMpVSegmentation** seg)
virtual voidPrint(Option_t* opt = "") 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 voidAliMUONVClusterFinder::SetChargeHints(Double_t, Double_t)
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&)
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
virtual voidTObject::UseCurrentStyle()
virtual Bool_tAliMUONVClusterFinder::UsePad(const AliMUONPad& pad)
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:
AliMUONClusterFinderPeakCOG(const AliMUONClusterFinderPeakCOG& rhs)
voidBuildPixArray(AliMUONCluster& cluster)
voidBuildPixArrayOneCathode(AliMUONCluster& cluster)
voidCheckOverlaps()
AliMUONCluster*CheckPrecluster(const AliMUONCluster& cluster)
AliMUONCluster*CheckPreclusterTwoCathodes(AliMUONCluster* cluster)
voidFindCluster(AliMUONCluster& cluster, const Int_t* localMax, Int_t iMax)
Int_tFindLocalMaxima(TObjArray* pixArray, Int_t* localMax, Double_t* maxVal)
voidFlagLocalMax(TH2D* hist, Int_t i, Int_t j, Int_t* isLocalMax)
AliMUONClusterFinderPeakCOG&operator=(const AliMUONClusterFinderPeakCOG& rhs)
Bool_tOverlap(const AliMUONPad& pad, const AliMUONPad& pixel)
voidPadOverHist(Int_t idir, Int_t ix0, Int_t iy0, AliMUONPad* pad, TH2D* h1, TH2D* h2)
voidPadsInXandY(AliMUONCluster& cluster, Int_t& nInX, Int_t& nInY) const
AliMUONPad*Pixel(Int_t i) const
voidRemovePixel(Int_t i)
Bool_tWorkOnPreCluster()

Data Members

private:
TObjArrayfClusterList!< clusters corresponding to the current pre-cluster
Int_tfClusterNumber!< current cluster number
Int_tfDebug!< debug level
Int_tfDetElemId!< current DE being processed
Int_tfEventNumber!< current event being processed
TH2D*fHistAnode!< histo for peak search
Int_tfNAddVirtualPads!< number of clusters for which we added virtual pads
Int_tfNClusters!< total number of clusters
TObjArray*fPixArray!< collection of pixels
Bool_tfPlot!< whether we should plot thing (for debug only, quite slow!)
AliMUONCluster*fPreCluster!< current pre-cluster
AliMUONVClusterFinder*fPreClusterFinder!< the pre-clustering worker
static const Int_tfgkCoupled/< coupled pad
static const TVector2fgkDecreaseSize/< idem
static const Double_tfgkDistancePrecision/< used to check overlaps and so on
static const TVector2fgkIncreaseSize/< idem
static const Int_tfgkModified/< modified pad charge
static const Int_tfgkMustKeep/< do not kill (for pixels)
static const Int_tfgkOver/< processing is over
static const Int_tfgkUseForFit/< should be used for fit
static const Int_tfgkZero/< pad "basic" state
static const Double_tfgkZeroSuppression/< average zero suppression value
const AliMpVSegmentation*fkSegmentation[2]!< new segmentation

Class Charts

Inheritance Chart:
TObject
AliMUONVClusterFinder
AliMUONClusterFinderPeakCOG

Function documentation

AliMUONClusterFinderPeakCOG(Bool_t plot, AliMUONVClusterFinder* clusterFinder)
 Constructor
~AliMUONClusterFinderPeakCOG()
 Destructor
Prepare(Int_t detElemId, TObjArray** pads, const AliMpArea& area, const AliMpVSegmentation** seg)
 Prepare for clustering
  AliCodeTimerAuto("",0)
NextCluster()
 Return next cluster
  AliCodeTimerAuto("",0)
WorkOnPreCluster()
 Starting from a precluster, builds a pixel array, and then
 extract clusters from this array
Overlap(const AliMUONPad& pad, const AliMUONPad& pixel)
 Check if the pad and the pixel overlaps
CheckPrecluster(const AliMUONCluster& cluster)
 Check precluster in order to attempt to simplify it (mostly for
 two-cathode preclusters)
CheckPreclusterTwoCathodes(AliMUONCluster* cluster)
 Check two-cathode cluster
CheckOverlaps()
 For debug only : check if some pixels overlap...
void BuildPixArray(AliMUONCluster& cluster)
 Build pixel array
void BuildPixArrayOneCathode(AliMUONCluster& cluster)
 Build the pixel array
void PadOverHist(Int_t idir, Int_t ix0, Int_t iy0, AliMUONPad* pad, TH2D* h1, TH2D* h2)
 "Span" pad over histogram in the direction idir
Int_t FindLocalMaxima(TObjArray* pixArray, Int_t* localMax, Double_t* maxVal)
 Find local maxima in pixel space
void FlagLocalMax(TH2D* hist, Int_t i, Int_t j, Int_t* isLocalMax)
 Flag pixels (whether or not local maxima)
void FindCluster(AliMUONCluster& cluster, const Int_t* localMax, Int_t iMax)
 Find pixel cluster around local maximum \a iMax and pick up pads
 overlapping with it
operator=(const AliMUONClusterFinderPeakCOG& rhs)
 Protected assignement operator
void PadsInXandY(AliMUONCluster& cluster, Int_t& nInX, Int_t& nInY) const
 Find number of pads in X and Y-directions (excluding virtual ones and
 overflows)
void RemovePixel(Int_t i)
 Remove pixel at index i
Pixel(Int_t i) const
 Returns pixel at index i
Print(Option_t* opt = "") const
 printout
AliMUONClusterFinderPeakCOG(Bool_t plot, AliMUONVClusterFinder* clusterFinder)
Bool_t NeedSegmentation() const
 It needs segmentation
{ return kTRUE; }