]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONClusterFinderVS.h
New class of global trigger boards
[u/mrichter/AliRoot.git] / MUON / AliMUONClusterFinderVS.h
CommitLineData
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 19class TClonesArray;
20
c1a185bf 21class AliMUONClusterInput;
5289cf2f 22class AliMUONDigitMapA1;
fed772f3 23class AliMUONGeometrySegmentation;
30aaba74 24class AliMUONRawCluster;
25class AliMUONDigit;
26
27
28class 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
5289cf2f 74 AliMUONDigitMapA1* fDigitMap[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