12b6271876613695ccee1c4795065ba44d480e2c
[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
8 ////////////////////////////////////////////////
9 //  MUON Cluster Finder Class                 //
10 ////////////////////////////////////////////////
11 #include <TObject.h>
12 #include "AliMUONHitMapA1.h"
13 #include "AliMUONClusterInput.h"
14
15 class AliMUONResponse;
16 class AliSegmentation;
17 class TClonesArray;
18 class AliMUONRawCluster;
19 class AliMUONDigit;
20
21
22 class AliMUONClusterFinderVS : public TObject 
23 {
24  public:
25     AliMUONClusterFinderVS();
26     AliMUONClusterFinderVS(const AliMUONClusterFinderVS& clusterFinder);
27     virtual ~AliMUONClusterFinderVS(){;}
28 // Decluster ?
29     virtual void SetDeclusterFlag(Int_t flag=1) {fDeclusterFlag =flag;}
30 // Set max. cluster size ; bigger clusters will deconvoluted
31     virtual void SetClusterSize(Int_t clsize=5) {fClusterSize = clsize;}
32 // Set max. number of pads per local cluster
33     virtual void SetNperMax(Int_t npermax=5) {fNperMax = npermax;}
34 // Search for raw clusters
35     virtual void  FindRawClusters();
36 // Find cluster    
37     virtual void  FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONRawCluster &c);
38 // Decluster
39     virtual void Decluster(AliMUONRawCluster *cluster);
40 //  Perform split by local maxima  
41     virtual void   SplitByLocalMaxima(AliMUONRawCluster *cluster);
42     virtual void   FindLocalMaxima(AliMUONRawCluster *cluster);
43     virtual void   Split(AliMUONRawCluster * cluster);
44 //  Perform Double Mathieson Fit
45     Bool_t  DoubleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
46     Float_t CombiDoubleMathiesonFit(AliMUONRawCluster *c);
47     Float_t SingleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
48     Float_t CombiSingleMathiesonFit(AliMUONRawCluster *c);    
49 //  Build up full cluster information    
50     virtual void   FillCluster(AliMUONRawCluster *cluster, Int_t flag, Int_t cath);
51     virtual void   FillCluster(AliMUONRawCluster *cluster, Int_t cath);
52     virtual void   FillCluster(AliMUONRawCluster *cluster) {FillCluster(cluster,1,0);}
53 // Add a new raw cluster    
54     virtual void AddRawCluster(const AliMUONRawCluster cluster);
55 //  Set tracks for debugging    
56     virtual void SetTracks(Int_t t1, Int_t t2) {fTrack[0]=t1; fTrack[1]=t2;}
57     virtual Bool_t TestTrack(Int_t t);
58 //  Assignment operator
59     AliMUONClusterFinderVS & operator = (const AliMUONClusterFinderVS& rhs);
60
61  protected:
62     AliMUONClusterInput*    fInput;              // AliMUONClusterInput instance
63     AliMUONHitMapA1*        fHitMap[2];          // Hit Map cathode 1
64 // Configuration    
65     Int_t                   fDeclusterFlag;      // flag for declusterin
66     Int_t                   fClusterSize;        // cluster size 
67     Int_t                   fNperMax;            // Maximum number of pads per peak
68 // Current decluster result    
69     Int_t                   fMul[2];             // current multiplicity
70     Int_t                   fNPeaks;             // number of local maxima
71     Int_t                   fNRawClusters;       // Number of Raw Clusters
72 // Local data store    
73     AliMUONDigit*           fDig[100][2];        // current list of digits 
74     Int_t                   fIx[100][2];         // current list of x-pad-coord.
75     Int_t                   fIy[100][2];         // current list of y-pad-coord.
76     Float_t                 fX[100][2];          // current list of x-coord.
77     Float_t                 fY[100][2];          // current list of y-coord.
78     Int_t                   fIndLocal[100][2];   // indices of local maxima
79     Int_t                   fNLocal[2];          // Number of local maxima
80     Int_t                   fQ[100][2];          // current list of charges
81 // Current Fit
82     Double_t                 fXFit[2];         // x-coordinate
83     Double_t                 fYFit[2];         // y-coordinate
84     Double_t                 fQrFit[2];        // charge ratio
85     Float_t                  fChi2[2];         // chi2 of fit
86     Float_t                  fXInit[2];        // start values
87     Float_t                  fYInit[2];        // start values
88     Float_t                  fQrInit[2];       // start values
89     Int_t                    fFitStat;         // status of fit
90     
91 // Selected track for debugging
92     Int_t                    fTrack[2];        // Only digits with main contributions from these tracks are
93                                                // considered 
94 //  Return pointer to raw clusters    
95     ClassDef(AliMUONClusterFinderVS,1) //Class for clustering and reconstruction of space points
96 };
97 #endif
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112