]>
Commit | Line | Data |
---|---|---|
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 | ||
78649106 | 9 | /// \ingroup rec |
c0a16418 | 10 | /// \class AliMUONClusterSplitterMLEM |
c25af45b | 11 | /// \brief Splitter class for the MLEM algorithm |
c0a16418 | 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 | ||
22 | class AliMUONCluster; | |
23 | class TH2; | |
24 | class TObjArray; | |
25 | class AliMUONPad; | |
26 | class AliMUONMathieson; | |
27 | ||
28 | class AliMUONClusterSplitterMLEM : public TObject | |
29 | { | |
30 | public: | |
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, | |
b161da28 | 54 | Double_t *parOk, TObjArray& clusterList, TH2 *mlem); |
c0a16418 | 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); | |
9bbd7f60 | 76 | /// Set debug level |
77 | void SetDebug (Int_t debug) { fDebug = debug; } | |
c0a16418 | 78 | |
79 | private: | |
71a2d3aa | 80 | /// will not be implemented |
c0a16418 | 81 | AliMUONClusterSplitterMLEM(const AliMUONClusterSplitterMLEM&); |
71a2d3aa | 82 | /// will not be implemented |
c0a16418 | 83 | AliMUONClusterSplitterMLEM& operator=(const AliMUONClusterSplitterMLEM&); |
a9c259b2 | 84 | Double_t Param2Coef(Int_t icand, Double_t coef, Double_t *par); |
85 | ||
c0a16418 | 86 | private: |
87 | ||
88 | static const Double_t fgkCouplMin; ///< threshold on coupling | |
89 | ||
71a2d3aa | 90 | TObjArray* fPixArray; //!< \todo add comment |
91 | AliMUONMathieson* fMathieson; //!< Mathieson | |
c0a16418 | 92 | Int_t fDetElemId; //!< detection element we are working on |
93 | Int_t fNpar; //!< number of fit parameters | |
94 | Double_t fQtot; //!< total charge | |
95 | Int_t fnCoupled; //!< number of coupled pixels ? | |
9bbd7f60 | 96 | Int_t fDebug; //!< debug level |
c0a16418 | 97 | |
98 | ClassDef(AliMUONClusterSplitterMLEM,1) // | |
99 | }; | |
100 | ||
101 | #endif |