Reimplementation of AZ algorithm in new clustering scheme
[u/mrichter/AliRoot.git] / MUON / AliMUONClusterSplitterMLEM.h
CommitLineData
c0a16418 1#ifndef AliMUONClusterSplitterMLEM_H
2#define AliMUONClusterSplitterMLEM_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5* See cxx source for full Copyright notice */
6
7// $Id$
8
9/// \ingroup
10/// \class AliMUONClusterSplitterMLEM
11/// \brief
12///
13// Author Alexander Zinchenko, JINR Dubna; Laurent Aphecetche, SUBATECH
14//
15
16#ifndef ROOT_TObject
17# include "TObject.h"
18#endif
19
20#include "TMatrixDfwd.h"
21
22class AliMUONCluster;
23class TH2;
24class TObjArray;
25class AliMUONPad;
26class AliMUONMathieson;
27
28class AliMUONClusterSplitterMLEM : public TObject
29{
30public:
31 AliMUONClusterSplitterMLEM(Int_t detElemId, TObjArray* pixArray);
32
33 virtual ~AliMUONClusterSplitterMLEM();
34
35 void AddBin(TH2 *mlem,
36 Int_t ic, Int_t jc, Int_t mode,
37 Bool_t *used, TObjArray *pix);
38
39 void AddCluster(Int_t ic, Int_t nclust,
40 TMatrixD& aijcluclu,
41 Bool_t *used, Int_t *clustNumb, Int_t &nCoupled);
42
43 TObject* BinToPix(TH2 *mlem, Int_t jc, Int_t ic);
44
45 Float_t ChargeIntegration(Double_t x, Double_t y, const AliMUONPad& pad);
46
47 void Fcn1(const AliMUONCluster& cluster,
48 Int_t & npar, Double_t * gin,
49 Double_t &f, Double_t *par, Int_t iflag);
50
51 Int_t Fit(const AliMUONCluster& cluster,
52 Int_t iSimple, Int_t nfit,
53 Int_t *clustFit, TObjArray **clusters,
54 Double_t *parOk, TObjArray& clusterList);
55
56 void Merge(const AliMUONCluster& cluster,
57 Int_t nForFit, Int_t nCoupled,
58 Int_t *clustNumb, Int_t *clustFit,
59 TObjArray **clusters,
60 TMatrixD& aijcluclu, TMatrixD& aijclupad);
61
62 Double_t MinGroupCoupl(Int_t nCoupled, Int_t *clustNumb,
63 TMatrixD& aijcluclu, Int_t *minGroup);
64
65 Int_t SelectPad(const AliMUONCluster& cluster,
66 Int_t nCoupled, Int_t nForFit,
67 Int_t *clustNumb, Int_t *clustFit,
68 TMatrixD& aijclupad);
69
70 void Split(const AliMUONCluster& cluster,
71 TH2* mlem,
72 Double_t* coef, TObjArray& clusterList);
73
74
75 void UpdatePads(const AliMUONCluster& cluster, Int_t nfit, Double_t *par);
76
77private:
78 // will not be implemented
79 AliMUONClusterSplitterMLEM(const AliMUONClusterSplitterMLEM&);
80 // will not be implemented
81 AliMUONClusterSplitterMLEM& operator=(const AliMUONClusterSplitterMLEM&);
82
83private:
84
85 static const Double_t fgkCouplMin; ///< threshold on coupling
86
87 TObjArray* fPixArray; //! < not owner
88 AliMUONMathieson* fMathieson; //!<
89 Int_t fDetElemId; //!< detection element we are working on
90 Int_t fNpar; //!< number of fit parameters
91 Double_t fQtot; //!< total charge
92 Int_t fnCoupled; //!< number of coupled pixels ?
93
94 ClassDef(AliMUONClusterSplitterMLEM,1) //
95};
96
97#endif