]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONClusterFinderVS.h
New class AliMUONTrackExtrap containing static method for tack extrapolation (Philipp...
[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
c1a185bf 12
30aaba74 13#include <TObject.h>
9825400f 14
30178c30 15class TClonesArray;
16
c1a185bf 17class AliMUONClusterInput;
5289cf2f 18class AliMUONDigitMapA1;
fed772f3 19class AliMUONGeometrySegmentation;
30aaba74 20class AliMUONRawCluster;
21class AliMUONDigit;
22
23
24class AliMUONClusterFinderVS : public TObject
a9e2aefa 25{
26 public:
a9e2aefa 27 AliMUONClusterFinderVS();
4da78c65 28 virtual ~AliMUONClusterFinderVS();
30aaba74 29// Decluster ?
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;}
a9e2aefa 35// Search for raw clusters
30aaba74 36 virtual void FindRawClusters();
a9e2aefa 37// Find cluster
38 virtual void FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONRawCluster &c);
39// Decluster
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);
a9e2aefa 45// Perform Double Mathieson Fit
30aaba74 46 Bool_t DoubleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
a9e2aefa 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);
30aaba74 53 virtual void FillCluster(AliMUONRawCluster *cluster) {FillCluster(cluster,1,0);}
54// Add a new raw cluster
b137f8b9 55 virtual void AddRawCluster(AliMUONRawCluster& cluster);
30aaba74 56// Set tracks for debugging
57 virtual void SetTracks(Int_t t1, Int_t t2) {fTrack[0]=t1; fTrack[1]=t2;}
07cfabcf 58 void SetGhostChi2Cut(Float_t cut) {fGhostChi2Cut = cut;}
4da78c65 59// get raw cluster pointer
60 TClonesArray* GetRawClusters() {return fRawClusters;}
61// reset raw clusters
62 void ResetRawClusters();
30aaba74 63
64 protected:
30178c30 65
829425a5 66 AliMUONClusterInput* fInput; //!< AliMUONClusterInput instance
67 AliMUONDigitMapA1* fDigitMap[2]; ///< Hit Maps for cathode 1 and 2
68 AliMUONGeometrySegmentation* fSeg2[2]; ///< New Segmentations for cathode 1 and 2
fed772f3 69
f0d86bc4 70
30aaba74 71// Configuration
829425a5 72 Int_t fDeclusterFlag; ///< flag for declusterin
73 Int_t fClusterSize; ///< cluster size
74 Int_t fNperMax; ///< Maximum number of pads per peak
75 Float_t fGhostChi2Cut; ///< \brief Cut in charge matching chi2
76 /// (2 degrees of freedom)
77 /// Used by ghost removal
b137f8b9 78 // Current decluster result
829425a5 79 Int_t fMul[2]; ///< current multiplicity
80 Int_t fNPeaks; ///< number of local maxima
81 Int_t fNRawClusters; ///< Number of Raw Clusters
82 TClonesArray* fRawClusters; ///< array of cluster per ch.
4da78c65 83
b137f8b9 84 // Local data store
829425a5 85 AliMUONDigit* fDig[100][2]; ///< current list of digits
86 Int_t fIx[100][2]; ///< current list of x-pad-coord.
87 Int_t fIy[100][2]; ///< current list of y-pad-coord.
88 Float_t fX[100][2]; ///< current list of x-coord.
89 Float_t fY[100][2]; ///< current list of y-coord.
90 Float_t fZ[100][2]; ///< current list of z-coord.
91 Int_t fIndLocal[100][2]; ///< indices of local maxima
92 Int_t fNLocal[2]; ///< Number of local maxima
93 Int_t fQ[100][2]; ///< current list of charges
94 Float_t fZPlane; ///< currenz z-plane position
95 Int_t fSector; ///< current sector
f0d86bc4 96
b137f8b9 97 // Current Fit
829425a5 98 Double_t fXFit[2]; ///< x-coordinate
99 Double_t fYFit[2]; ///< y-coordinate
100 Double_t fQrFit[2]; ///< charge ratio
101 Float_t fChi2[2]; ///< chi2 of fit
102 Float_t fXInit[2]; ///< start values
103 Float_t fYInit[2]; ///< start values
104 Float_t fQrInit[2]; ///< start values
105 Int_t fFitStat; ///< status of fit
a9e2aefa 106
b137f8b9 107 // Selected track for debugging
829425a5 108 Int_t fTrack[2]; ///< Only digits with main contributions from these tracks are
b137f8b9 109 // considered
b137f8b9 110
54d7ba50 111 private:
112 AliMUONClusterFinderVS(const AliMUONClusterFinderVS& clusterFinder);
113// Assignment operator
114 AliMUONClusterFinderVS & operator = (const AliMUONClusterFinderVS& rhs);
115
4da78c65 116 ClassDef(AliMUONClusterFinderVS,2) //Class for clustering and reconstruction of space points
b137f8b9 117 };
a9e2aefa 118#endif
119
120
121
122
123
124
125
126
127
128
30aaba74 129
130
131
132
133