]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONClusterFinderVS.h
Adding HLTbase to the list of libraries
[u/mrichter/AliRoot.git] / MUON / AliMUONClusterFinderVS.h
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$ */
7 // Revision of includes 07/05/2004
8
9 /// \ingroup rec
10 /// \class AliMUONClusterFinderVS
11 /// \brief Class for clustering and reconstruction of space points
12 ///
13 /// (Not used by default)
14
15 #include <TObject.h>
16
17 class TClonesArray;
18
19 class AliMUONClusterInput;
20 class AliMUONDigitMapA1;
21 class AliMUONGeometrySegmentation;
22 class AliMUONRawCluster;
23 class AliMUONDigit;
24
25
26 class AliMUONClusterFinderVS : public TObject 
27 {
28  public:
29     AliMUONClusterFinderVS();
30     virtual ~AliMUONClusterFinderVS();
31 /// Decluster ?
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();
39 // Find cluster    
40     virtual void  FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONRawCluster &c);
41 // Decluster
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);
55 /// \todo add comment    
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();
67 /// Set evt number
68     void SetEventNumber(Int_t evtNumber) {fEvtNumber = evtNumber;}
69
70  protected:
71
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
75
76     
77 // Configuration    
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.
89
90     // Local data store    
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
102     
103     // Current Fit
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
112     
113     // Selected track for debugging
114     Int_t                    fTrack[2];        ///< Only digits with main contributions from these tracks are
115     // considered 
116     
117     Int_t                    fEvtNumber;       ///< evt number for AZ
118     
119  private:
120     /// Not implemented
121     AliMUONClusterFinderVS(const AliMUONClusterFinderVS& clusterFinder);
122     /// Not implemented assignment operator
123     AliMUONClusterFinderVS & operator = (const AliMUONClusterFinderVS& rhs);
124
125     ClassDef(AliMUONClusterFinderVS,3) //Class for clustering and reconstruction of space points
126       };
127 #endif
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142