#ifndef ALIMUONCLUSTERFINDERPEAKFIT_H
#define ALIMUONCLUSTERFINDERPEAKFIT_H
#include "AliMUONVClusterFinder.h"
#ifndef ROOT_TObjArray
# include "TObjArray.h"
#endif
#ifndef ROOT_TVector2
# include "TVector2.h"
#endif
class AliMUONMathieson;
class TH2D;
class AliMUONClusterFinderPeakFit : public AliMUONVClusterFinder
{
public:
AliMUONClusterFinderPeakFit(Bool_t plot, AliMUONVClusterFinder* clusterFinder);
virtual ~AliMUONClusterFinderPeakFit();
virtual Bool_t NeedSegmentation() const { return kTRUE; }
using AliMUONVClusterFinder::Prepare;
virtual Bool_t Prepare(Int_t detElemId, TObjArray* pads[2],
const AliMpArea& area, const AliMpVSegmentation* seg[2]);
virtual AliMUONCluster* NextCluster();
Int_t GetNMax() const { return fNMax; }
virtual void Print(Option_t* opt="") const;
private:
AliMUONClusterFinderPeakFit(const AliMUONClusterFinderPeakFit& rhs);
AliMUONClusterFinderPeakFit& operator=(const AliMUONClusterFinderPeakFit& rhs);
Bool_t WorkOnPreCluster();
AliMUONCluster* CheckPrecluster(const AliMUONCluster& cluster);
AliMUONCluster* CheckPreclusterTwoCathodes(AliMUONCluster* cluster);
Bool_t Overlap(const AliMUONPad& pad, const AliMUONPad& pixel);
void BuildPixArray(AliMUONCluster& cluster);
void BuildPixArrayOneCathode(AliMUONCluster& cluster);
void PadOverHist(Int_t idir, Int_t ix0, Int_t iy0, AliMUONPad *pad, TH2D *h1, TH2D *h2);
void RemovePixel(Int_t i);
AliMUONPad* Pixel(Int_t i) const;
Int_t FindLocalMaxima(TObjArray *pixArray, Int_t *localMax, Double_t *maxVal);
void FlagLocalMax(TH2D *hist, Int_t i, Int_t j, Int_t *isLocalMax);
void FindClusterCOG(AliMUONCluster& cluster, const Int_t *localMax, Int_t iMax);
void FindClusterFit(AliMUONCluster& cluster, const Int_t *localMax, const Int_t *maxPos, Int_t nMax);
void PadsInXandY(AliMUONCluster& cluster, Int_t &nInX, Int_t &nInY) const;
void CheckOverlaps();
private:
static const Int_t fgkZero;
static const Int_t fgkMustKeep;
static const Int_t fgkUseForFit;
static const Int_t fgkOver;
static const Int_t fgkModified;
static const Int_t fgkCoupled;
static const Double_t fgkZeroSuppression;
static const Double_t fgkDistancePrecision;
static const TVector2 fgkIncreaseSize;
static const TVector2 fgkDecreaseSize;
AliMUONVClusterFinder* fPreClusterFinder;
AliMUONCluster* fPreCluster;
TObjArray fClusterList;
AliMUONMathieson* fMathieson;
Int_t fEventNumber;
Int_t fDetElemId;
Int_t fClusterNumber;
Int_t fNMax;
TH2D *fHistAnode;
const AliMpVSegmentation *fkSegmentation[2];
TObjArray* fPixArray;
Int_t fDebug;
Bool_t fPlot;
Int_t fNClusters;
Int_t fNAddVirtualPads;
ClassDef(AliMUONClusterFinderPeakFit,0)
};
#endif
AliMUONClusterFinderPeakFit.h:1 AliMUONClusterFinderPeakFit.h:2 AliMUONClusterFinderPeakFit.h:3 AliMUONClusterFinderPeakFit.h:4 AliMUONClusterFinderPeakFit.h:5 AliMUONClusterFinderPeakFit.h:6 AliMUONClusterFinderPeakFit.h:7 AliMUONClusterFinderPeakFit.h:8 AliMUONClusterFinderPeakFit.h:9 AliMUONClusterFinderPeakFit.h:10 AliMUONClusterFinderPeakFit.h:11 AliMUONClusterFinderPeakFit.h:12 AliMUONClusterFinderPeakFit.h:13 AliMUONClusterFinderPeakFit.h:14 AliMUONClusterFinderPeakFit.h:15 AliMUONClusterFinderPeakFit.h:16 AliMUONClusterFinderPeakFit.h:17 AliMUONClusterFinderPeakFit.h:18 AliMUONClusterFinderPeakFit.h:19 AliMUONClusterFinderPeakFit.h:20 AliMUONClusterFinderPeakFit.h:21 AliMUONClusterFinderPeakFit.h:22 AliMUONClusterFinderPeakFit.h:23 AliMUONClusterFinderPeakFit.h:24 AliMUONClusterFinderPeakFit.h:25 AliMUONClusterFinderPeakFit.h:26 AliMUONClusterFinderPeakFit.h:27 AliMUONClusterFinderPeakFit.h:28 AliMUONClusterFinderPeakFit.h:29 AliMUONClusterFinderPeakFit.h:30 AliMUONClusterFinderPeakFit.h:31 AliMUONClusterFinderPeakFit.h:32 AliMUONClusterFinderPeakFit.h:33 AliMUONClusterFinderPeakFit.h:34 AliMUONClusterFinderPeakFit.h:35 AliMUONClusterFinderPeakFit.h:36 AliMUONClusterFinderPeakFit.h:37 AliMUONClusterFinderPeakFit.h:38 AliMUONClusterFinderPeakFit.h:39 AliMUONClusterFinderPeakFit.h:40 AliMUONClusterFinderPeakFit.h:41 AliMUONClusterFinderPeakFit.h:42 AliMUONClusterFinderPeakFit.h:43 AliMUONClusterFinderPeakFit.h:44 AliMUONClusterFinderPeakFit.h:45 AliMUONClusterFinderPeakFit.h:46 AliMUONClusterFinderPeakFit.h:47 AliMUONClusterFinderPeakFit.h:48 AliMUONClusterFinderPeakFit.h:49 AliMUONClusterFinderPeakFit.h:50 AliMUONClusterFinderPeakFit.h:51 AliMUONClusterFinderPeakFit.h:52 AliMUONClusterFinderPeakFit.h:53 AliMUONClusterFinderPeakFit.h:54 AliMUONClusterFinderPeakFit.h:55 AliMUONClusterFinderPeakFit.h:56 AliMUONClusterFinderPeakFit.h:57 AliMUONClusterFinderPeakFit.h:58 AliMUONClusterFinderPeakFit.h:59 AliMUONClusterFinderPeakFit.h:60 AliMUONClusterFinderPeakFit.h:61 AliMUONClusterFinderPeakFit.h:62 AliMUONClusterFinderPeakFit.h:63 AliMUONClusterFinderPeakFit.h:64 AliMUONClusterFinderPeakFit.h:65 AliMUONClusterFinderPeakFit.h:66 AliMUONClusterFinderPeakFit.h:67 AliMUONClusterFinderPeakFit.h:68 AliMUONClusterFinderPeakFit.h:69 AliMUONClusterFinderPeakFit.h:70 AliMUONClusterFinderPeakFit.h:71 AliMUONClusterFinderPeakFit.h:72 AliMUONClusterFinderPeakFit.h:73 AliMUONClusterFinderPeakFit.h:74 AliMUONClusterFinderPeakFit.h:75 AliMUONClusterFinderPeakFit.h:76 AliMUONClusterFinderPeakFit.h:77 AliMUONClusterFinderPeakFit.h:78 AliMUONClusterFinderPeakFit.h:79 AliMUONClusterFinderPeakFit.h:80 AliMUONClusterFinderPeakFit.h:81 AliMUONClusterFinderPeakFit.h:82 AliMUONClusterFinderPeakFit.h:83 AliMUONClusterFinderPeakFit.h:84 AliMUONClusterFinderPeakFit.h:85 AliMUONClusterFinderPeakFit.h:86 AliMUONClusterFinderPeakFit.h:87 AliMUONClusterFinderPeakFit.h:88 AliMUONClusterFinderPeakFit.h:89 AliMUONClusterFinderPeakFit.h:90 AliMUONClusterFinderPeakFit.h:91 AliMUONClusterFinderPeakFit.h:92 AliMUONClusterFinderPeakFit.h:93 AliMUONClusterFinderPeakFit.h:94 AliMUONClusterFinderPeakFit.h:95 AliMUONClusterFinderPeakFit.h:96 AliMUONClusterFinderPeakFit.h:97 AliMUONClusterFinderPeakFit.h:98 AliMUONClusterFinderPeakFit.h:99 AliMUONClusterFinderPeakFit.h:100 AliMUONClusterFinderPeakFit.h:101 AliMUONClusterFinderPeakFit.h:102 AliMUONClusterFinderPeakFit.h:103 AliMUONClusterFinderPeakFit.h:104 AliMUONClusterFinderPeakFit.h:105 AliMUONClusterFinderPeakFit.h:106 AliMUONClusterFinderPeakFit.h:107 AliMUONClusterFinderPeakFit.h:108 AliMUONClusterFinderPeakFit.h:109 AliMUONClusterFinderPeakFit.h:110 AliMUONClusterFinderPeakFit.h:111 AliMUONClusterFinderPeakFit.h:112 AliMUONClusterFinderPeakFit.h:113 AliMUONClusterFinderPeakFit.h:114 AliMUONClusterFinderPeakFit.h:115 AliMUONClusterFinderPeakFit.h:116 AliMUONClusterFinderPeakFit.h:117 AliMUONClusterFinderPeakFit.h:118 AliMUONClusterFinderPeakFit.h:119 AliMUONClusterFinderPeakFit.h:120