]>
Commit | Line | Data |
---|---|---|
a9e2aefa | 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 */ | |
5 | ||
6 | /* $Id$ */ | |
30178c30 | 7 | // Revision of includes 07/05/2004 |
a9e2aefa | 8 | |
692de412 | 9 | /// \ingroup rec |
10 | /// \class AliMUONClusterFinderVS | |
11 | /// \brief Class for clustering and reconstruction of space points | |
12 | /// | |
13 | ///////////////////////////////////////////////// | |
14 | /// MUON Cluster Finder Class // | |
15 | ///////////////////////////////////////////////// | |
c1a185bf | 16 | |
30aaba74 | 17 | #include <TObject.h> |
9825400f | 18 | |
30178c30 | 19 | class TClonesArray; |
20 | ||
c1a185bf | 21 | class AliMUONClusterInput; |
22 | class AliMUONHitMapA1; | |
fed772f3 | 23 | class AliMUONGeometrySegmentation; |
30aaba74 | 24 | class AliMUONRawCluster; |
25 | class AliMUONDigit; | |
26 | ||
27 | ||
28 | class AliMUONClusterFinderVS : public TObject | |
a9e2aefa | 29 | { |
30 | public: | |
a9e2aefa | 31 | AliMUONClusterFinderVS(); |
4da78c65 | 32 | virtual ~AliMUONClusterFinderVS(); |
30aaba74 | 33 | // Decluster ? |
34 | virtual void SetDeclusterFlag(Int_t flag=1) {fDeclusterFlag =flag;} | |
35 | // Set max. cluster size ; bigger clusters will deconvoluted | |
36 | virtual void SetClusterSize(Int_t clsize=5) {fClusterSize = clsize;} | |
37 | // Set max. number of pads per local cluster | |
38 | virtual void SetNperMax(Int_t npermax=5) {fNperMax = npermax;} | |
a9e2aefa | 39 | // Search for raw clusters |
30aaba74 | 40 | virtual void FindRawClusters(); |
a9e2aefa | 41 | // Find cluster |
42 | virtual void FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONRawCluster &c); | |
43 | // Decluster | |
44 | virtual void Decluster(AliMUONRawCluster *cluster); | |
45 | // Perform split by local maxima | |
46 | virtual void SplitByLocalMaxima(AliMUONRawCluster *cluster); | |
47 | virtual void FindLocalMaxima(AliMUONRawCluster *cluster); | |
48 | virtual void Split(AliMUONRawCluster * cluster); | |
a9e2aefa | 49 | // Perform Double Mathieson Fit |
30aaba74 | 50 | Bool_t DoubleMathiesonFit(AliMUONRawCluster *c, Int_t cath); |
a9e2aefa | 51 | Float_t CombiDoubleMathiesonFit(AliMUONRawCluster *c); |
52 | Float_t SingleMathiesonFit(AliMUONRawCluster *c, Int_t cath); | |
53 | Float_t CombiSingleMathiesonFit(AliMUONRawCluster *c); | |
54 | // Build up full cluster information | |
55 | virtual void FillCluster(AliMUONRawCluster *cluster, Int_t flag, Int_t cath); | |
56 | virtual void FillCluster(AliMUONRawCluster *cluster, Int_t cath); | |
30aaba74 | 57 | virtual void FillCluster(AliMUONRawCluster *cluster) {FillCluster(cluster,1,0);} |
58 | // Add a new raw cluster | |
b137f8b9 | 59 | virtual void AddRawCluster(AliMUONRawCluster& cluster); |
30aaba74 | 60 | // Set tracks for debugging |
61 | virtual void SetTracks(Int_t t1, Int_t t2) {fTrack[0]=t1; fTrack[1]=t2;} | |
07cfabcf | 62 | void SetGhostChi2Cut(Float_t cut) {fGhostChi2Cut = cut;} |
4da78c65 | 63 | // get raw cluster pointer |
64 | TClonesArray* GetRawClusters() {return fRawClusters;} | |
65 | // reset raw clusters | |
66 | void ResetRawClusters(); | |
30aaba74 | 67 | |
68 | protected: | |
30178c30 | 69 | AliMUONClusterFinderVS(const AliMUONClusterFinderVS& clusterFinder); |
70 | // Assignment operator | |
71 | AliMUONClusterFinderVS & operator = (const AliMUONClusterFinderVS& rhs); | |
72 | ||
fed772f3 | 73 | AliMUONClusterInput* fInput; // ! AliMUONClusterInput instance |
74 | AliMUONHitMapA1* fHitMap[2]; // Hit Maps for cathode 1 and 2 | |
fed772f3 | 75 | AliMUONGeometrySegmentation* fSeg2[2]; // New Segmentations for cathode 1 and 2 |
76 | ||
f0d86bc4 | 77 | |
30aaba74 | 78 | // Configuration |
79 | Int_t fDeclusterFlag; // flag for declusterin | |
80 | Int_t fClusterSize; // cluster size | |
81 | Int_t fNperMax; // Maximum number of pads per peak | |
07cfabcf | 82 | Float_t fGhostChi2Cut; // Cut in charge matching chi2 |
83 | // (2 degrees of freedom) | |
84 | // Used by ghost removal | |
b137f8b9 | 85 | // Current decluster result |
30aaba74 | 86 | Int_t fMul[2]; // current multiplicity |
87 | Int_t fNPeaks; // number of local maxima | |
88 | Int_t fNRawClusters; // Number of Raw Clusters | |
4da78c65 | 89 | TClonesArray* fRawClusters; // array of cluster per ch. |
90 | ||
b137f8b9 | 91 | // Local data store |
a9e2aefa | 92 | AliMUONDigit* fDig[100][2]; // current list of digits |
93 | Int_t fIx[100][2]; // current list of x-pad-coord. | |
94 | Int_t fIy[100][2]; // current list of y-pad-coord. | |
95 | Float_t fX[100][2]; // current list of x-coord. | |
96 | Float_t fY[100][2]; // current list of y-coord. | |
f0d86bc4 | 97 | Float_t fZ[100][2]; // current list of z-coord. |
a9e2aefa | 98 | Int_t fIndLocal[100][2]; // indices of local maxima |
99 | Int_t fNLocal[2]; // Number of local maxima | |
100 | Int_t fQ[100][2]; // current list of charges | |
f0d86bc4 | 101 | Float_t fZPlane; // currenz z-plane position |
102 | Int_t fSector; // current sector | |
103 | ||
b137f8b9 | 104 | // Current Fit |
a9e2aefa | 105 | Double_t fXFit[2]; // x-coordinate |
106 | Double_t fYFit[2]; // y-coordinate | |
107 | Double_t fQrFit[2]; // charge ratio | |
108 | Float_t fChi2[2]; // chi2 of fit | |
109 | Float_t fXInit[2]; // start values | |
110 | Float_t fYInit[2]; // start values | |
111 | Float_t fQrInit[2]; // start values | |
112 | Int_t fFitStat; // status of fit | |
113 | ||
b137f8b9 | 114 | // Selected track for debugging |
a9e2aefa | 115 | Int_t fTrack[2]; // Only digits with main contributions from these tracks are |
b137f8b9 | 116 | // considered |
b137f8b9 | 117 | |
118 | // Return pointer to raw clusters | |
4da78c65 | 119 | ClassDef(AliMUONClusterFinderVS,2) //Class for clustering and reconstruction of space points |
b137f8b9 | 120 | }; |
a9e2aefa | 121 | #endif |
122 | ||
123 | ||
124 | ||
125 | ||
126 | ||
127 | ||
128 | ||
129 | ||
130 | ||
131 | ||
30aaba74 | 132 | |
133 | ||
134 | ||
135 | ||
136 |