AliRoot Core  3dc7879 (3dc7879)
AliMUONClusterSplitterMLEM Class Reference

Splitter class for the MLEM algorithm. More...

#include <AliMUONClusterSplitterMLEM.h>

Inheritance diagram for AliMUONClusterSplitterMLEM:

Public Member Functions

 AliMUONClusterSplitterMLEM (Int_t detElemId, TObjArray *pixArray, Double_t lowestPixelCharge, Double_t lowestPadCharge, Double_t lowestClusterCharge)
 
virtual ~AliMUONClusterSplitterMLEM ()
 
void AddBin (TH2 *mlem, Int_t ic, Int_t jc, Int_t mode, Bool_t *used, TObjArray *pix)
 
void AddCluster (Int_t ic, Int_t nclust, TMatrixD &aijcluclu, Bool_t *used, Int_t *clustNumb, Int_t &nCoupled)
 
TObject * BinToPix (TH2 *mlem, Int_t jc, Int_t ic)
 
Float_t ChargeIntegration (Double_t x, Double_t y, const AliMUONPad &pad)
 
void Fcn1 (const AliMUONCluster &cluster, Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag)
 
Int_t Fit (const AliMUONCluster &cluster, Int_t iSimple, Int_t nfit, const Int_t *clustFit, TObjArray **clusters, Double_t *parOk, TObjArray &clusterList, TH2 *mlem)
 
void Merge (const AliMUONCluster &cluster, Int_t nForFit, Int_t nCoupled, const Int_t *clustNumb, const Int_t *clustFit, TObjArray **clusters, TMatrixD &aijcluclu, TMatrixD &aijclupad)
 
Double_t MinGroupCoupl (Int_t nCoupled, const Int_t *clustNumb, const TMatrixD &aijcluclu, Int_t *minGroup)
 
Int_t SelectPad (const AliMUONCluster &cluster, Int_t nCoupled, Int_t nForFit, const Int_t *clustNumb, const Int_t *clustFit, const TMatrixD &aijclupad)
 
void Split (const AliMUONCluster &cluster, TH2 *mlem, Double_t *coef, TObjArray &clusterList)
 
void UpdatePads (const AliMUONCluster &cluster, Int_t nfit, Double_t *par)
 
void SetDebug (Int_t debug)
 Set debug level. More...
 

Private Member Functions

 AliMUONClusterSplitterMLEM (const AliMUONClusterSplitterMLEM &)
 will not be implemented More...
 
AliMUONClusterSplitterMLEMoperator= (const AliMUONClusterSplitterMLEM &)
 will not be implemented More...
 
Double_t Param2Coef (Int_t icand, Double_t coef, Double_t *par) const
 

Private Attributes

TObjArrayfPixArray
 ! More...
 
AliMUONMathiesonfMathieson
 ! Mathieson More...
 
Int_t fDetElemId
 ! detection element we are working on More...
 
Int_t fNpar
 ! number of fit parameters More...
 
Double_t fQtot
 ! total charge More...
 
Int_t fnCoupled
 ! number of coupled pixels ? More...
 
Int_t fDebug
 ! debug level More...
 
Double_t fLowestPixelCharge
 ! minimum allowed pixel charge More...
 
Double_t fLowestPadCharge
 ! minimum allowed pad charge More...
 
Double_t fLowestClusterCharge
 ! minimum allowed cluster charge More...
 

Static Private Attributes

static const Double_t fgkCouplMin = 1.e-2
 threshold on coupling More...
 

Detailed Description

Splitter class for the MLEM algorithm.

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 ;-)

Definition at line 28 of file AliMUONClusterSplitterMLEM.h.

Constructor & Destructor Documentation

AliMUONClusterSplitterMLEM::AliMUONClusterSplitterMLEM ( Int_t  detElemId,
TObjArray pixArray,
Double_t  lowestPixelCharge,
Double_t  lowestPadCharge,
Double_t  lowestClusterCharge 
)

Constructor

Definition at line 61 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by SetDebug().

AliMUONClusterSplitterMLEM::~AliMUONClusterSplitterMLEM ( )
virtual

Destructor

Definition at line 102 of file AliMUONClusterSplitterMLEM.cxx.

AliMUONClusterSplitterMLEM::AliMUONClusterSplitterMLEM ( const AliMUONClusterSplitterMLEM )
private

will not be implemented

Member Function Documentation

void AliMUONClusterSplitterMLEM::AddBin ( TH2 *  mlem,
Int_t  ic,
Int_t  jc,
Int_t  mode,
Bool_t *  used,
TObjArray pix 
)

Add a bin to the cluster

Definition at line 111 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by Split().

void AliMUONClusterSplitterMLEM::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

Definition at line 144 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by Split().

TObject * AliMUONClusterSplitterMLEM::BinToPix ( TH2 *  mlem,
Int_t  jc,
Int_t  ic 
)

Translate histogram bin to pixel

Definition at line 161 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by AddBin(), AliMUONClusterFinderMLEM::FindLocalMaxima(), and Split().

Float_t AliMUONClusterSplitterMLEM::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)

Definition at line 188 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by AliMUONClusterFinderMLEM::ComputeCoefficients(), Fcn1(), and UpdatePads().

void AliMUONClusterSplitterMLEM::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

Definition at line 203 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by Fit().

Int_t AliMUONClusterSplitterMLEM::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

Definition at line 260 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by AliMUONClusterFinderMLEM::Simple(), and Split().

void AliMUONClusterSplitterMLEM::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

Definition at line 1059 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by Split().

Double_t AliMUONClusterSplitterMLEM::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

Definition at line 1122 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by Split().

AliMUONClusterSplitterMLEM& AliMUONClusterSplitterMLEM::operator= ( const AliMUONClusterSplitterMLEM )
private

will not be implemented

Referenced by SetDebug().

Double_t AliMUONClusterSplitterMLEM::Param2Coef ( Int_t  icand,
Double_t  coef,
Double_t *  par 
) const
private

Extract hit contribution scale factor from fit parameters

Definition at line 247 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by Fcn1(), Fit(), SetDebug(), and UpdatePads().

Int_t AliMUONClusterSplitterMLEM::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.

Definition at line 1206 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by Split().

void AliMUONClusterSplitterMLEM::SetDebug ( Int_t  debug)
inline

Set debug level.

Definition at line 80 of file AliMUONClusterSplitterMLEM.h.

Referenced by AliMUONClusterFinderMLEM::Prepare().

void AliMUONClusterSplitterMLEM::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)

Definition at line 784 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by AliMUONClusterFinderMLEM::MainLoop().

void AliMUONClusterSplitterMLEM::UpdatePads ( const AliMUONCluster cluster,
Int_t  nfit,
Double_t *  par 
)

Subtract the fitted charges from pads with strong coupling

Definition at line 1275 of file AliMUONClusterSplitterMLEM.cxx.

Referenced by Split().

Member Data Documentation

Int_t AliMUONClusterSplitterMLEM::fDebug
private

! debug level

Definition at line 99 of file AliMUONClusterSplitterMLEM.h.

Referenced by Fit(), SetDebug(), and Split().

Int_t AliMUONClusterSplitterMLEM::fDetElemId
private

! detection element we are working on

Definition at line 95 of file AliMUONClusterSplitterMLEM.h.

Referenced by Fit().

const Double_t AliMUONClusterSplitterMLEM::fgkCouplMin = 1.e-2
staticprivate

threshold on coupling

Definition at line 91 of file AliMUONClusterSplitterMLEM.h.

Referenced by AddCluster(), SelectPad(), and Split().

Double_t AliMUONClusterSplitterMLEM::fLowestClusterCharge
private

! minimum allowed cluster charge

Definition at line 103 of file AliMUONClusterSplitterMLEM.h.

Referenced by Fit().

Double_t AliMUONClusterSplitterMLEM::fLowestPadCharge
private

! minimum allowed pad charge

Definition at line 102 of file AliMUONClusterSplitterMLEM.h.

Referenced by UpdatePads().

Double_t AliMUONClusterSplitterMLEM::fLowestPixelCharge
private

! minimum allowed pixel charge

Definition at line 101 of file AliMUONClusterSplitterMLEM.h.

Referenced by AddBin(), BinToPix(), and Split().

AliMUONMathieson* AliMUONClusterSplitterMLEM::fMathieson
private

! Mathieson

Definition at line 94 of file AliMUONClusterSplitterMLEM.h.

Referenced by ChargeIntegration(), and ~AliMUONClusterSplitterMLEM().

Int_t AliMUONClusterSplitterMLEM::fnCoupled
private

! number of coupled pixels ?

Definition at line 98 of file AliMUONClusterSplitterMLEM.h.

Referenced by Fit(), and Split().

Int_t AliMUONClusterSplitterMLEM::fNpar
private

! number of fit parameters

Definition at line 96 of file AliMUONClusterSplitterMLEM.h.

Referenced by Fcn1(), Fit(), Param2Coef(), Split(), and UpdatePads().

TObjArray* AliMUONClusterSplitterMLEM::fPixArray
private

!

Todo:
add comment

Definition at line 93 of file AliMUONClusterSplitterMLEM.h.

Referenced by AddBin(), BinToPix(), and Split().

Double_t AliMUONClusterSplitterMLEM::fQtot
private

! total charge

Definition at line 97 of file AliMUONClusterSplitterMLEM.h.

Referenced by Fcn1(), Fit(), and UpdatePads().


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