]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONClusterSplitterMLEM.h
rewrote AliMUONAlignment to - use AliMillePede2 instead of AliMillepede - use AliMill...
[u/mrichter/AliRoot.git] / MUON / AliMUONClusterSplitterMLEM.h
... / ...
CommitLineData
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
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 Double_t lowestPixelCharge,
33 Double_t lowestPadCharge,
34 Double_t lowestClusterCharge);
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,
56 const Int_t *clustFit, TObjArray **clusters,
57 Double_t *parOk, TObjArray& clusterList, TH2 *mlem);
58
59 void Merge(const AliMUONCluster& cluster,
60 Int_t nForFit, Int_t nCoupled,
61 const Int_t *clustNumb, const Int_t *clustFit,
62 TObjArray **clusters,
63 TMatrixD& aijcluclu, TMatrixD& aijclupad);
64
65 Double_t MinGroupCoupl(Int_t nCoupled, const Int_t *clustNumb,
66 const TMatrixD& aijcluclu, Int_t *minGroup);
67
68 Int_t SelectPad(const AliMUONCluster& cluster,
69 Int_t nCoupled, Int_t nForFit,
70 const Int_t *clustNumb, const Int_t *clustFit,
71 const TMatrixD& aijclupad);
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);
79 /// Set debug level
80 void SetDebug (Int_t debug) { fDebug = debug; }
81
82private:
83 /// will not be implemented
84 AliMUONClusterSplitterMLEM(const AliMUONClusterSplitterMLEM&);
85 /// will not be implemented
86 AliMUONClusterSplitterMLEM& operator=(const AliMUONClusterSplitterMLEM&);
87 Double_t Param2Coef(Int_t icand, Double_t coef, Double_t *par) const;
88
89private:
90
91 static const Double_t fgkCouplMin; ///< threshold on coupling
92
93 TObjArray* fPixArray; //!< \todo add comment
94 AliMUONMathieson* fMathieson; //!< Mathieson
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 ?
99 Int_t fDebug; //!< debug level
100
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
106};
107
108#endif