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
13 /// (Not used by default)
19 class AliMUONClusterInput;
20 class AliMUONDigitMapA1;
21 class AliMUONGeometrySegmentation;
22 class AliMUONRawCluster;
26 class AliMUONClusterFinderVS : public TObject
29 AliMUONClusterFinderVS();
30 virtual ~AliMUONClusterFinderVS();
32 virtual void SetDeclusterFlag(Int_t flag=1) {fDeclusterFlag =flag;}
33 /// Set max. cluster size ; bigger clusters will deconvoluted
34 virtual void SetClusterSize(Int_t clsize=5) {fClusterSize = clsize;}
35 /// Set max. number of pads per local cluster
36 virtual void SetNperMax(Int_t npermax=5) {fNperMax = npermax;}
37 // Search for raw clusters
38 virtual void FindRawClusters();
40 virtual void FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONRawCluster &c);
42 virtual void Decluster(AliMUONRawCluster *cluster);
43 // Perform split by local maxima
44 virtual void SplitByLocalMaxima(AliMUONRawCluster *cluster);
45 virtual void FindLocalMaxima(AliMUONRawCluster *cluster);
46 virtual void Split(AliMUONRawCluster * cluster);
47 // Perform Double Mathieson Fit
48 Bool_t DoubleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
49 Float_t CombiDoubleMathiesonFit(AliMUONRawCluster *c);
50 Float_t SingleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
51 Float_t CombiSingleMathiesonFit(AliMUONRawCluster *c);
52 // Build up full cluster information
53 virtual void FillCluster(AliMUONRawCluster *cluster, Int_t flag, Int_t cath);
54 virtual void FillCluster(AliMUONRawCluster *cluster, Int_t cath);
56 virtual void FillCluster(AliMUONRawCluster *cluster) {FillCluster(cluster,1,0);}
57 // Add a new raw cluster
58 virtual void AddRawCluster(AliMUONRawCluster& cluster);
59 /// Set tracks for debugging
60 virtual void SetTracks(Int_t t1, Int_t t2) {fTrack[0]=t1; fTrack[1]=t2;}
61 /// Set cut in charge matching chi2
62 void SetGhostChi2Cut(Float_t cut) {fGhostChi2Cut = cut;}
63 /// Get raw cluster pointer
64 TClonesArray* GetRawClusters() {return fRawClusters;}
65 /// Reset raw clusters
66 void ResetRawClusters();
68 void SetEventNumber(Int_t evtNumber) {fEvtNumber = evtNumber;}
72 AliMUONClusterInput* fInput; //!< AliMUONClusterInput instance
73 AliMUONDigitMapA1* fDigitMap[2]; ///< Hit Maps for cathode 1 and 2
74 AliMUONGeometrySegmentation* fSeg2[2]; ///< New Segmentations for cathode 1 and 2
78 Int_t fDeclusterFlag; ///< flag for declusterin
79 Int_t fClusterSize; ///< cluster size
80 Int_t fNperMax; ///< Maximum number of pads per peak
81 Float_t fGhostChi2Cut; ///< \brief Cut in charge matching chi2
82 /// (2 degrees of freedom)
83 /// Used by ghost removal
84 // Current decluster result
85 Int_t fMul[2]; ///< current multiplicity
86 Int_t fNPeaks; ///< number of local maxima
87 Int_t fNRawClusters; ///< Number of Raw Clusters
88 TClonesArray* fRawClusters; ///< array of cluster per ch.
91 AliMUONDigit* fDig[100][2]; ///< current list of digits
92 Int_t fIx[100][2]; ///< current list of x-pad-coord.
93 Int_t fIy[100][2]; ///< current list of y-pad-coord.
94 Float_t fX[100][2]; ///< current list of x-coord.
95 Float_t fY[100][2]; ///< current list of y-coord.
96 Float_t fZ[100][2]; ///< current list of z-coord.
97 Int_t fIndLocal[100][2]; ///< indices of local maxima
98 Int_t fNLocal[2]; ///< Number of local maxima
99 Float_t fQ[100][2]; ///< current list of charges
100 Float_t fZPlane; ///< currenz z-plane position
101 Int_t fSector; ///< current sector
104 Double_t fXFit[2]; ///< x-coordinate
105 Double_t fYFit[2]; ///< y-coordinate
106 Double_t fQrFit[2]; ///< charge ratio
107 Float_t fChi2[2]; ///< chi2 of fit
108 Float_t fXInit[2]; ///< start values
109 Float_t fYInit[2]; ///< start values
110 Float_t fQrInit[2]; ///< start values
111 Int_t fFitStat; ///< status of fit
113 // Selected track for debugging
114 Int_t fTrack[2]; ///< Only digits with main contributions from these tracks are
117 Int_t fEvtNumber; ///< evt number for AZ
121 AliMUONClusterFinderVS(const AliMUONClusterFinderVS& clusterFinder);
122 /// Not implemented assignment operator
123 AliMUONClusterFinderVS & operator = (const AliMUONClusterFinderVS& rhs);
125 ClassDef(AliMUONClusterFinderVS,3) //Class for clustering and reconstruction of space points