AliRoot Core  v5-06-30 (35d6c57)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliMUONClusterFinderPeakFit Class Reference

Cluster finder in MUON arm of ALICE. More...

#include <AliMUONClusterFinderPeakFit.h>

Inheritance diagram for AliMUONClusterFinderPeakFit:

Public Member Functions

 AliMUONClusterFinderPeakFit (Bool_t plot, AliMUONVClusterFinder *clusterFinder)
 
virtual ~AliMUONClusterFinderPeakFit ()
 
virtual Bool_t NeedSegmentation () const
 It needs segmentation. More...
 
virtual Bool_t Prepare (Int_t detElemId, TObjArray *pads[2], const AliMpArea &area, const AliMpVSegmentation *seg[2])
 
virtual AliMUONClusterNextCluster ()
 
Int_t GetNMax () const
 Return the number of local maxima. More...
 
virtual void Print (Option_t *opt="") const
 
- Public Member Functions inherited from AliMUONVClusterFinder
 AliMUONVClusterFinder ()
 
virtual ~AliMUONVClusterFinder ()
 
virtual Bool_t Prepare (Int_t detElemId, TObjArray *pads[2], const AliMpArea &area)
 
virtual Bool_t UsePad (const AliMUONPad &pad)
 
virtual void SetChargeHints (Double_t, Double_t)
 

Private Member Functions

 AliMUONClusterFinderPeakFit (const AliMUONClusterFinderPeakFit &rhs)
 Not implemented. More...
 
AliMUONClusterFinderPeakFitoperator= (const AliMUONClusterFinderPeakFit &rhs)
 Not implemented. More...
 
Bool_t WorkOnPreCluster ()
 
AliMUONClusterCheckPrecluster (const AliMUONCluster &cluster)
 Check precluster to simplify it (if possible), and return the simplified cluster. More...
 
AliMUONClusterCheckPreclusterTwoCathodes (AliMUONCluster *cluster)
 
Bool_t Overlap (const AliMUONPad &pad, const AliMUONPad &pixel)
 Checks whether a pad and a pixel have an overlapping area. More...
 
void BuildPixArray (AliMUONCluster &cluster)
 build array of pixels More...
 
void BuildPixArrayOneCathode (AliMUONCluster &cluster)
 
void PadOverHist (Int_t idir, Int_t ix0, Int_t iy0, AliMUONPad *pad, TH2D *h1, TH2D *h2)
 
void RemovePixel (Int_t i)
 
AliMUONPadPixel (Int_t i) const
 
Int_t FindLocalMaxima (TObjArray *pixArray, Int_t *localMax, Double_t *maxVal)
 
void FlagLocalMax (TH2D *hist, Int_t i, Int_t j, Int_t *isLocalMax)
 
void FindClusterCOG (AliMUONCluster &cluster, const Int_t *localMax, Int_t iMax)
 
void FindClusterFit (AliMUONCluster &cluster, const Int_t *localMax, const Int_t *maxPos, Int_t nMax)
 
void PadsInXandY (AliMUONCluster &cluster, Int_t &nInX, Int_t &nInY) const
 
void CheckOverlaps ()
 

Private Attributes

AliMUONVClusterFinderfPreClusterFinder
 ! the pre-clustering worker More...
 
AliMUONClusterfPreCluster
 ! current pre-cluster More...
 
TObjArray fClusterList
 ! clusters corresponding to the current pre-cluster More...
 
AliMUONMathiesonfMathieson
 ! Mathieson to compute the charge repartition More...
 
Int_t fEventNumber
 ! current event being processed More...
 
Int_t fDetElemId
 ! current DE being processed More...
 
Int_t fClusterNumber
 ! current cluster number More...
 
Int_t fNMax
 ! number of local maxima More...
 
TH2D * fHistAnode
 ! histo for local maxima search More...
 
const AliMpVSegmentationfkSegmentation [2]
 ! new segmentation More...
 
TObjArrayfPixArray
 ! collection of pixels More...
 
Int_t fDebug
 ! debug level More...
 
Bool_t fPlot
 ! whether we should plot thing (for debug only, quite slow!) More...
 
Int_t fNClusters
 ! total number of clusters More...
 
Int_t fNAddVirtualPads
 ! number of clusters for which we added virtual pads More...
 

Static Private Attributes

static const Int_t fgkZero = 0x0
 pad "basic" state More...
 
static const Int_t fgkMustKeep = 0x1
 do not kill (for pixels) More...
 
static const Int_t fgkUseForFit = 0x10
 should be used for fit More...
 
static const Int_t fgkOver = 0x100
 processing is over More...
 
static const Int_t fgkModified = 0x1000
 modified pad charge More...
 
static const Int_t fgkCoupled = 0x10000
 coupled pad More...
 
static const Double_t fgkZeroSuppression = 6
 average zero suppression value More...
 
static const Double_t fgkDistancePrecision = 1e-3
 used to check overlaps and so on More...
 
static const TVector2 fgkIncreaseSize
 idem More...
 
static const TVector2 fgkDecreaseSize
 idem More...
 

Detailed Description

Cluster finder in MUON arm of ALICE.

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 make the fit with up to 3 hit candidates or compute pad centers of gravity for larger number of peaks.

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

Definition at line 29 of file AliMUONClusterFinderPeakFit.h.

Constructor & Destructor Documentation

AliMUONClusterFinderPeakFit::AliMUONClusterFinderPeakFit ( Bool_t  plot,
AliMUONVClusterFinder clusterFinder 
)

Constructor

Definition at line 138 of file AliMUONClusterFinderPeakFit.cxx.

AliMUONClusterFinderPeakFit::~AliMUONClusterFinderPeakFit ( )
virtual

Destructor

Definition at line 163 of file AliMUONClusterFinderPeakFit.cxx.

AliMUONClusterFinderPeakFit::AliMUONClusterFinderPeakFit ( const AliMUONClusterFinderPeakFit rhs)
private

Not implemented.

Member Function Documentation

void AliMUONClusterFinderPeakFit::BuildPixArray ( AliMUONCluster cluster)
private

build array of pixels

Build pixel array

Definition at line 606 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by WorkOnPreCluster().

void AliMUONClusterFinderPeakFit::BuildPixArrayOneCathode ( AliMUONCluster cluster)
private

Build the pixel array

Definition at line 625 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by BuildPixArray().

void AliMUONClusterFinderPeakFit::CheckOverlaps ( )
private

For debug only : check if some pixels overlap...

Definition at line 566 of file AliMUONClusterFinderPeakFit.cxx.

AliMUONCluster * AliMUONClusterFinderPeakFit::CheckPrecluster ( const AliMUONCluster cluster)
private

Check precluster to simplify it (if possible), and return the simplified cluster.

Check precluster in order to attempt to simplify it (mostly for two-cathode preclusters)

Definition at line 347 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by WorkOnPreCluster().

AliMUONCluster * AliMUONClusterFinderPeakFit::CheckPreclusterTwoCathodes ( AliMUONCluster cluster)
private

Check two-cathode cluster

Definition at line 381 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by CheckPrecluster().

void AliMUONClusterFinderPeakFit::FindClusterCOG ( AliMUONCluster cluster,
const Int_t *  localMax,
Int_t  iMax 
)
private

Find COG of pad charge distribution around local maximum iMax

Definition at line 996 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by WorkOnPreCluster().

void AliMUONClusterFinderPeakFit::FindClusterFit ( AliMUONCluster cluster,
const Int_t *  localMax,
const Int_t *  maxPos,
Int_t  nMax 
)
private

Fit pad charge distribution with nMax hit hypothesis

Definition at line 903 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by WorkOnPreCluster().

Int_t AliMUONClusterFinderPeakFit::FindLocalMaxima ( TObjArray pixArray,
Int_t *  localMax,
Double_t *  maxVal 
)
private

Find local maxima in pixel space

Definition at line 798 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by WorkOnPreCluster().

void AliMUONClusterFinderPeakFit::FlagLocalMax ( TH2D *  hist,
Int_t  i,
Int_t  j,
Int_t *  isLocalMax 
)
private

Flag pixels (whether or not local maxima)

Definition at line 869 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by FindLocalMaxima().

Int_t AliMUONClusterFinderPeakFit::GetNMax ( ) const
inline

Return the number of local maxima.

Definition at line 46 of file AliMUONClusterFinderPeakFit.h.

virtual Bool_t AliMUONClusterFinderPeakFit::NeedSegmentation ( ) const
inlinevirtual

It needs segmentation.

Reimplemented from AliMUONVClusterFinder.

Definition at line 36 of file AliMUONClusterFinderPeakFit.h.

AliMUONCluster * AliMUONClusterFinderPeakFit::NextCluster ( )
virtual
Todo:
add comment

Return next cluster

Implements AliMUONVClusterFinder.

Definition at line 230 of file AliMUONClusterFinderPeakFit.cxx.

AliMUONClusterFinderPeakFit & AliMUONClusterFinderPeakFit::operator= ( const AliMUONClusterFinderPeakFit rhs)
private

Not implemented.

Protected assignement operator

Definition at line 1133 of file AliMUONClusterFinderPeakFit.cxx.

Bool_t AliMUONClusterFinderPeakFit::Overlap ( const AliMUONPad pad,
const AliMUONPad pixel 
)
private

Checks whether a pad and a pixel have an overlapping area.

Check if the pad and the pixel overlaps

Definition at line 333 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by FindClusterCOG().

void AliMUONClusterFinderPeakFit::PadOverHist ( Int_t  idir,
Int_t  ix0,
Int_t  iy0,
AliMUONPad pad,
TH2D *  h1,
TH2D *  h2 
)
private

"Span" pad over histogram in the direction idir

Definition at line 751 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by BuildPixArrayOneCathode().

void AliMUONClusterFinderPeakFit::PadsInXandY ( AliMUONCluster cluster,
Int_t &  nInX,
Int_t &  nInY 
) const
private

Find number of pads in X and Y-directions (excluding virtual ones and overflows)

Definition at line 1145 of file AliMUONClusterFinderPeakFit.cxx.

AliMUONPad * AliMUONClusterFinderPeakFit::Pixel ( Int_t  i) const
private

Returns pixel at index i

Definition at line 1176 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by CheckOverlaps(), and RemovePixel().

Bool_t AliMUONClusterFinderPeakFit::Prepare ( Int_t  detElemId,
TObjArray pads[2],
const AliMpArea area,
const AliMpVSegmentation seg[2] 
)
virtual

Prepare for clustering

Reimplemented from AliMUONVClusterFinder.

Definition at line 175 of file AliMUONClusterFinderPeakFit.cxx.

void AliMUONClusterFinderPeakFit::Print ( Option_t *  opt = "") const
virtual

printout

Definition at line 1184 of file AliMUONClusterFinderPeakFit.cxx.

void AliMUONClusterFinderPeakFit::RemovePixel ( Int_t  i)
private

Remove pixel at index i

Definition at line 1166 of file AliMUONClusterFinderPeakFit.cxx.

Bool_t AliMUONClusterFinderPeakFit::WorkOnPreCluster ( )
private

Starting from a precluster, builds a pixel array, and then extract clusters from this array

Definition at line 277 of file AliMUONClusterFinderPeakFit.cxx.

Referenced by NextCluster().

Member Data Documentation

TObjArray AliMUONClusterFinderPeakFit::fClusterList
private

! clusters corresponding to the current pre-cluster

Definition at line 99 of file AliMUONClusterFinderPeakFit.h.

Referenced by FindClusterCOG(), FindClusterFit(), NextCluster(), and Prepare().

Int_t AliMUONClusterFinderPeakFit::fClusterNumber
private

! current cluster number

Definition at line 104 of file AliMUONClusterFinderPeakFit.h.

Referenced by NextCluster(), and Prepare().

Int_t AliMUONClusterFinderPeakFit::fDebug
private
Int_t AliMUONClusterFinderPeakFit::fDetElemId
private

! current DE being processed

Definition at line 103 of file AliMUONClusterFinderPeakFit.h.

Referenced by CheckPreclusterTwoCathodes(), FindClusterCOG(), FindClusterFit(), Prepare(), and WorkOnPreCluster().

Int_t AliMUONClusterFinderPeakFit::fEventNumber
private

! current event being processed

Definition at line 102 of file AliMUONClusterFinderPeakFit.h.

Referenced by Prepare(), and WorkOnPreCluster().

const Int_t AliMUONClusterFinderPeakFit::fgkCoupled = 0x10000
staticprivate

coupled pad

Definition at line 89 of file AliMUONClusterFinderPeakFit.h.

const TVector2 AliMUONClusterFinderPeakFit::fgkDecreaseSize
staticprivate

idem

Definition at line 95 of file AliMUONClusterFinderPeakFit.h.

Referenced by CheckOverlaps(), CheckPreclusterTwoCathodes(), and Overlap().

const Double_t AliMUONClusterFinderPeakFit::fgkDistancePrecision = 1e-3
staticprivate

used to check overlaps and so on

Definition at line 93 of file AliMUONClusterFinderPeakFit.h.

Referenced by FindClusterCOG(), and PadOverHist().

const TVector2 AliMUONClusterFinderPeakFit::fgkIncreaseSize
staticprivate

idem

Definition at line 94 of file AliMUONClusterFinderPeakFit.h.

const Int_t AliMUONClusterFinderPeakFit::fgkModified = 0x1000
staticprivate

modified pad charge

Definition at line 88 of file AliMUONClusterFinderPeakFit.h.

const Int_t AliMUONClusterFinderPeakFit::fgkMustKeep = 0x1
staticprivate

do not kill (for pixels)

Definition at line 85 of file AliMUONClusterFinderPeakFit.h.

const Int_t AliMUONClusterFinderPeakFit::fgkOver = 0x100
staticprivate

processing is over

Definition at line 87 of file AliMUONClusterFinderPeakFit.h.

const Int_t AliMUONClusterFinderPeakFit::fgkUseForFit = 0x10
staticprivate

should be used for fit

Definition at line 86 of file AliMUONClusterFinderPeakFit.h.

Referenced by PadsInXandY().

const Int_t AliMUONClusterFinderPeakFit::fgkZero = 0x0
staticprivate

pad "basic" state

Definition at line 84 of file AliMUONClusterFinderPeakFit.h.

Referenced by PadsInXandY().

const Double_t AliMUONClusterFinderPeakFit::fgkZeroSuppression = 6
staticprivate

average zero suppression value

Definition at line 92 of file AliMUONClusterFinderPeakFit.h.

TH2D* AliMUONClusterFinderPeakFit::fHistAnode
private

! histo for local maxima search

Definition at line 106 of file AliMUONClusterFinderPeakFit.h.

Referenced by FindClusterCOG(), FindClusterFit(), FindLocalMaxima(), and WorkOnPreCluster().

const AliMpVSegmentation* AliMUONClusterFinderPeakFit::fkSegmentation[2]
private

! new segmentation

Definition at line 108 of file AliMUONClusterFinderPeakFit.h.

Referenced by AliMUONClusterFinderPeakFit(), CheckPreclusterTwoCathodes(), and Prepare().

AliMUONMathieson* AliMUONClusterFinderPeakFit::fMathieson
private

! Mathieson to compute the charge repartition

Definition at line 100 of file AliMUONClusterFinderPeakFit.h.

Referenced by FindClusterFit(), Prepare(), and ~AliMUONClusterFinderPeakFit().

Int_t AliMUONClusterFinderPeakFit::fNAddVirtualPads
private

! number of clusters for which we added virtual pads

Definition at line 115 of file AliMUONClusterFinderPeakFit.h.

Referenced by ~AliMUONClusterFinderPeakFit().

Int_t AliMUONClusterFinderPeakFit::fNClusters
private

! total number of clusters

Definition at line 114 of file AliMUONClusterFinderPeakFit.h.

Referenced by ~AliMUONClusterFinderPeakFit().

Int_t AliMUONClusterFinderPeakFit::fNMax
private

! number of local maxima

Definition at line 105 of file AliMUONClusterFinderPeakFit.h.

Referenced by FindClusterFit(), and GetNMax().

TObjArray* AliMUONClusterFinderPeakFit::fPixArray
private
Bool_t AliMUONClusterFinderPeakFit::fPlot
private

! whether we should plot thing (for debug only, quite slow!)

Definition at line 112 of file AliMUONClusterFinderPeakFit.h.

Referenced by AliMUONClusterFinderPeakFit(), and WorkOnPreCluster().

AliMUONCluster* AliMUONClusterFinderPeakFit::fPreCluster
private

! current pre-cluster

Definition at line 98 of file AliMUONClusterFinderPeakFit.h.

Referenced by CheckPreclusterTwoCathodes(), NextCluster(), Print(), and WorkOnPreCluster().

AliMUONVClusterFinder* AliMUONClusterFinderPeakFit::fPreClusterFinder
private

! the pre-clustering worker

Definition at line 97 of file AliMUONClusterFinderPeakFit.h.

Referenced by NextCluster(), Prepare(), and ~AliMUONClusterFinderPeakFit().


The documentation for this class was generated from the following files: