1 #ifndef ALIMUONCLUSTERFINDERVS_H
2 #define ALIMUONCLUSTERFINDERVS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 // Revision of includes 07/05/2004
10 /// \class AliMUONClusterFinderVS
11 /// \brief Class for clustering and reconstruction of space points
17 class AliMUONClusterInput;
18 class AliMUONDigitMapA1;
19 class AliMUONGeometrySegmentation;
20 class AliMUONRawCluster;
24 class AliMUONClusterFinderVS : public TObject
27 AliMUONClusterFinderVS();
28 virtual ~AliMUONClusterFinderVS();
30 virtual void SetDeclusterFlag(Int_t flag=1) {fDeclusterFlag =flag;}
31 // Set max. cluster size ; bigger clusters will deconvoluted
32 virtual void SetClusterSize(Int_t clsize=5) {fClusterSize = clsize;}
33 // Set max. number of pads per local cluster
34 virtual void SetNperMax(Int_t npermax=5) {fNperMax = npermax;}
35 // Search for raw clusters
36 virtual void FindRawClusters();
38 virtual void FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONRawCluster &c);
40 virtual void Decluster(AliMUONRawCluster *cluster);
41 // Perform split by local maxima
42 virtual void SplitByLocalMaxima(AliMUONRawCluster *cluster);
43 virtual void FindLocalMaxima(AliMUONRawCluster *cluster);
44 virtual void Split(AliMUONRawCluster * cluster);
45 // Perform Double Mathieson Fit
46 Bool_t DoubleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
47 Float_t CombiDoubleMathiesonFit(AliMUONRawCluster *c);
48 Float_t SingleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
49 Float_t CombiSingleMathiesonFit(AliMUONRawCluster *c);
50 // Build up full cluster information
51 virtual void FillCluster(AliMUONRawCluster *cluster, Int_t flag, Int_t cath);
52 virtual void FillCluster(AliMUONRawCluster *cluster, Int_t cath);
53 virtual void FillCluster(AliMUONRawCluster *cluster) {FillCluster(cluster,1,0);}
54 // Add a new raw cluster
55 virtual void AddRawCluster(AliMUONRawCluster& cluster);
56 // Set tracks for debugging
57 virtual void SetTracks(Int_t t1, Int_t t2) {fTrack[0]=t1; fTrack[1]=t2;}
58 void SetGhostChi2Cut(Float_t cut) {fGhostChi2Cut = cut;}
59 // get raw cluster pointer
60 TClonesArray* GetRawClusters() {return fRawClusters;}
62 void ResetRawClusters();
65 AliMUONClusterFinderVS(const AliMUONClusterFinderVS& clusterFinder);
66 // Assignment operator
67 AliMUONClusterFinderVS & operator = (const AliMUONClusterFinderVS& rhs);
69 AliMUONClusterInput* fInput; // ! AliMUONClusterInput instance
70 AliMUONDigitMapA1* fDigitMap[2]; // Hit Maps for cathode 1 and 2
71 AliMUONGeometrySegmentation* fSeg2[2]; // New Segmentations for cathode 1 and 2
75 Int_t fDeclusterFlag; // flag for declusterin
76 Int_t fClusterSize; // cluster size
77 Int_t fNperMax; // Maximum number of pads per peak
78 Float_t fGhostChi2Cut; // Cut in charge matching chi2
79 // (2 degrees of freedom)
80 // Used by ghost removal
81 // Current decluster result
82 Int_t fMul[2]; // current multiplicity
83 Int_t fNPeaks; // number of local maxima
84 Int_t fNRawClusters; // Number of Raw Clusters
85 TClonesArray* fRawClusters; // array of cluster per ch.
88 AliMUONDigit* fDig[100][2]; // current list of digits
89 Int_t fIx[100][2]; // current list of x-pad-coord.
90 Int_t fIy[100][2]; // current list of y-pad-coord.
91 Float_t fX[100][2]; // current list of x-coord.
92 Float_t fY[100][2]; // current list of y-coord.
93 Float_t fZ[100][2]; // current list of z-coord.
94 Int_t fIndLocal[100][2]; // indices of local maxima
95 Int_t fNLocal[2]; // Number of local maxima
96 Int_t fQ[100][2]; // current list of charges
97 Float_t fZPlane; // currenz z-plane position
98 Int_t fSector; // current sector
101 Double_t fXFit[2]; // x-coordinate
102 Double_t fYFit[2]; // y-coordinate
103 Double_t fQrFit[2]; // charge ratio
104 Float_t fChi2[2]; // chi2 of fit
105 Float_t fXInit[2]; // start values
106 Float_t fYInit[2]; // start values
107 Float_t fQrInit[2]; // start values
108 Int_t fFitStat; // status of fit
110 // Selected track for debugging
111 Int_t fTrack[2]; // Only digits with main contributions from these tracks are
114 // Return pointer to raw clusters
115 ClassDef(AliMUONClusterFinderVS,2) //Class for clustering and reconstruction of space points