]>
Commit | Line | Data |
---|---|---|
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 rec | |
10 | /// \class AliMUONClusterSplitterMLEM | |
11 | /// \brief Splitter class for the MLEM algorithm | |
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, | |
54 | Double_t *parOk, TObjArray& clusterList, TH2 *mlem); | |
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 | /// Set debug level | |
77 | void SetDebug (Int_t debug) { fDebug = debug; } | |
78 | ||
79 | private: | |
80 | /// will not be implemented | |
81 | AliMUONClusterSplitterMLEM(const AliMUONClusterSplitterMLEM&); | |
82 | /// will not be implemented | |
83 | AliMUONClusterSplitterMLEM& operator=(const AliMUONClusterSplitterMLEM&); | |
84 | Double_t Param2Coef(Int_t icand, Double_t coef, Double_t *par); | |
85 | ||
86 | private: | |
87 | ||
88 | static const Double_t fgkCouplMin; ///< threshold on coupling | |
89 | ||
90 | TObjArray* fPixArray; //!< \todo add comment | |
91 | AliMUONMathieson* fMathieson; //!< Mathieson | |
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 ? | |
96 | Int_t fDebug; //!< debug level | |
97 | ||
98 | ClassDef(AliMUONClusterSplitterMLEM,1) // | |
99 | }; | |
100 | ||
101 | #endif |