AliRoot Core  da88d91 (da88d91)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliMUONClusterSplitterMLEM.h
Go to the documentation of this file.
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 
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  Double_t lowestPixelCharge,
33  Double_t lowestPadCharge,
34  Double_t lowestClusterCharge);
35 
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);
80  void SetDebug (Int_t debug) { fDebug = debug; }
81 
82 private:
87  Double_t Param2Coef(Int_t icand, Double_t coef, Double_t *par) const;
88 
89 private:
90 
91  static const Double_t fgkCouplMin;
92 
95  Int_t fDetElemId;
96  Int_t fNpar;
97  Double_t fQtot;
98  Int_t fnCoupled;
99  Int_t fDebug;
100 
102  Double_t fLowestPadCharge;
104 
105  ClassDef(AliMUONClusterSplitterMLEM,2) // Splitter of clusters
106 };
107 
108 #endif
void Merge(const AliMUONCluster &cluster, Int_t nForFit, Int_t nCoupled, const Int_t *clustNumb, const Int_t *clustFit, TObjArray **clusters, TMatrixD &aijcluclu, TMatrixD &aijclupad)
Double_t fLowestPadCharge
! minimum allowed pad charge
void Fcn1(const AliMUONCluster &cluster, Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag)
Double_t fLowestClusterCharge
! minimum allowed cluster charge
Double_t MinGroupCoupl(Int_t nCoupled, const Int_t *clustNumb, const TMatrixD &aijcluclu, Int_t *minGroup)
#define TObjArray
TObject * BinToPix(TH2 *mlem, Int_t jc, Int_t ic)
A group of adjacent pads.
TFile f("CalibObjects.root")
Implementation of Mathieson response.
void Split(const AliMUONCluster &cluster, TH2 *mlem, Double_t *coef, TObjArray &clusterList)
Splitter class for the MLEM algorithm.
AliMUONClusterSplitterMLEM & operator=(const AliMUONClusterSplitterMLEM &)
will not be implemented
Int_t fNpar
! number of fit parameters
void AddBin(TH2 *mlem, Int_t ic, Int_t jc, Int_t mode, Bool_t *used, TObjArray *pix)
AliMUONClusterSplitterMLEM(Int_t detElemId, TObjArray *pixArray, Double_t lowestPixelCharge, Double_t lowestPadCharge, Double_t lowestClusterCharge)
Int_t SelectPad(const AliMUONCluster &cluster, Int_t nCoupled, Int_t nForFit, const Int_t *clustNumb, const Int_t *clustFit, const TMatrixD &aijclupad)
static const Double_t fgkCouplMin
threshold on coupling
void SetDebug(Int_t debug)
Set debug level.
Double_t Param2Coef(Int_t icand, Double_t coef, Double_t *par) const
void UpdatePads(const AliMUONCluster &cluster, Int_t nfit, Double_t *par)
void AddCluster(Int_t ic, Int_t nclust, TMatrixD &aijcluclu, Bool_t *used, Int_t *clustNumb, Int_t &nCoupled)
AliMUONMathieson * fMathieson
! Mathieson
Int_t Fit(const AliMUONCluster &cluster, Int_t iSimple, Int_t nfit, const Int_t *clustFit, TObjArray **clusters, Double_t *parOk, TObjArray &clusterList, TH2 *mlem)
Double_t fLowestPixelCharge
! minimum allowed pixel charge
Float_t ChargeIntegration(Double_t x, Double_t y, const AliMUONPad &pad)
Int_t debug
Combination of digit and mppad informations.
Definition: AliMUONPad.h:25
Int_t fnCoupled
! number of coupled pixels ?
Int_t fDetElemId
! detection element we are working on