]>
Commit | Line | Data |
---|---|---|
7d5d0cc5 | 1 | #ifndef ALIMUONCLUSTERSPLITTERMLEM_H |
2 | #define ALIMUONCLUSTERSPLITTERMLEM_H | |
c0a16418 | 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: | |
110edb51 | 31 | AliMUONClusterSplitterMLEM(Int_t detElemId, TObjArray* pixArray, |
32 | Double_t lowestPixelCharge, | |
33 | Double_t lowestPadCharge, | |
34 | Double_t lowestClusterCharge); | |
c0a16418 | 35 | |
36 | virtual ~AliMUONClusterSplitterMLEM(); | |
37 | ||
38 | void AddBin(TH2 *mlem, | |
39 | Int_t ic, Int_t jc, Int_t mode, | |
40 | Bool_t *used, TObjArray *pix); | |
41 | ||
42 | void AddCluster(Int_t ic, Int_t nclust, | |
43 | TMatrixD& aijcluclu, | |
44 | Bool_t *used, Int_t *clustNumb, Int_t &nCoupled); | |
45 | ||
46 | TObject* BinToPix(TH2 *mlem, Int_t jc, Int_t ic); | |
47 | ||
48 | Float_t ChargeIntegration(Double_t x, Double_t y, const AliMUONPad& pad); | |
49 | ||
50 | void Fcn1(const AliMUONCluster& cluster, | |
51 | Int_t & npar, Double_t * gin, | |
52 | Double_t &f, Double_t *par, Int_t iflag); | |
53 | ||
54 | Int_t Fit(const AliMUONCluster& cluster, | |
55 | Int_t iSimple, Int_t nfit, | |
57e2ad1a | 56 | const Int_t *clustFit, TObjArray **clusters, |
b161da28 | 57 | Double_t *parOk, TObjArray& clusterList, TH2 *mlem); |
c0a16418 | 58 | |
59 | void Merge(const AliMUONCluster& cluster, | |
60 | Int_t nForFit, Int_t nCoupled, | |
57e2ad1a | 61 | const Int_t *clustNumb, const Int_t *clustFit, |
c0a16418 | 62 | TObjArray **clusters, |
63 | TMatrixD& aijcluclu, TMatrixD& aijclupad); | |
64 | ||
57e2ad1a | 65 | Double_t MinGroupCoupl(Int_t nCoupled, const Int_t *clustNumb, |
66 | const TMatrixD& aijcluclu, Int_t *minGroup); | |
c0a16418 | 67 | |
68 | Int_t SelectPad(const AliMUONCluster& cluster, | |
69 | Int_t nCoupled, Int_t nForFit, | |
57e2ad1a | 70 | const Int_t *clustNumb, const Int_t *clustFit, |
71 | const TMatrixD& aijclupad); | |
c0a16418 | 72 | |
73 | void Split(const AliMUONCluster& cluster, | |
74 | TH2* mlem, | |
75 | Double_t* coef, TObjArray& clusterList); | |
76 | ||
77 | ||
78 | void UpdatePads(const AliMUONCluster& cluster, Int_t nfit, Double_t *par); | |
9bbd7f60 | 79 | /// Set debug level |
80 | void SetDebug (Int_t debug) { fDebug = debug; } | |
c0a16418 | 81 | |
82 | private: | |
71a2d3aa | 83 | /// will not be implemented |
c0a16418 | 84 | AliMUONClusterSplitterMLEM(const AliMUONClusterSplitterMLEM&); |
71a2d3aa | 85 | /// will not be implemented |
c0a16418 | 86 | AliMUONClusterSplitterMLEM& operator=(const AliMUONClusterSplitterMLEM&); |
9ee1d6ff | 87 | Double_t Param2Coef(Int_t icand, Double_t coef, Double_t *par) const; |
a9c259b2 | 88 | |
c0a16418 | 89 | private: |
90 | ||
91 | static const Double_t fgkCouplMin; ///< threshold on coupling | |
92 | ||
71a2d3aa | 93 | TObjArray* fPixArray; //!< \todo add comment |
94 | AliMUONMathieson* fMathieson; //!< Mathieson | |
c0a16418 | 95 | Int_t fDetElemId; //!< detection element we are working on |
96 | Int_t fNpar; //!< number of fit parameters | |
97 | Double_t fQtot; //!< total charge | |
98 | Int_t fnCoupled; //!< number of coupled pixels ? | |
9bbd7f60 | 99 | Int_t fDebug; //!< debug level |
c0a16418 | 100 | |
110edb51 | 101 | Double_t fLowestPixelCharge; //!< minimum allowed pixel charge |
102 | Double_t fLowestPadCharge; //!< minimum allowed pad charge | |
103 | Double_t fLowestClusterCharge; //!< minimum allowed cluster charge | |
104 | ||
105 | ClassDef(AliMUONClusterSplitterMLEM,2) // Splitter of clusters | |
c0a16418 | 106 | }; |
107 | ||
108 | #endif |