]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONClusterFinderVS.h
fWSN->Eval(0.001) to avoid fpe.
[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
12 #include <TObject.h>
13
14 class AliMUONClusterInput;
15 class AliMUONHitMapA1;
16 class AliMUONResponse;
17 class AliSegmentation;
18 class TClonesArray;
19 class AliMUONRawCluster;
20 class AliMUONDigit;
21
22
23 class AliMUONClusterFinderVS : public TObject 
24 {
25  public:
26     AliMUONClusterFinderVS();
27     AliMUONClusterFinderVS(const AliMUONClusterFinderVS& clusterFinder);
28     virtual ~AliMUONClusterFinderVS(){;}
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;}
35 // Search for raw clusters
36     virtual void  FindRawClusters();
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);
45 //  Perform Double Mathieson Fit
46     Bool_t  DoubleMathiesonFit(AliMUONRawCluster *c, Int_t cath);
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);
53     virtual void   FillCluster(AliMUONRawCluster *cluster) {FillCluster(cluster,1,0);}
54 // Add a new raw cluster    
55     virtual void AddRawCluster(const AliMUONRawCluster cluster);
56 //  Set tracks for debugging    
57     virtual void SetTracks(Int_t t1, Int_t t2) {fTrack[0]=t1; fTrack[1]=t2;}
58     virtual Bool_t TestTrack(Int_t t);
59 //  Assignment operator
60     AliMUONClusterFinderVS & operator = (const AliMUONClusterFinderVS& rhs);
61 //  debug level
62     void SetDebugLevel(Int_t level) {fDebugLevel = level;}
63     void SetGhostChi2Cut(Float_t cut) {fGhostChi2Cut = cut;}
64
65  protected:
66     AliMUONClusterInput*    fInput;              // ! AliMUONClusterInput instance
67     AliMUONHitMapA1*        fHitMap[2];          // Hit Maps for cathode 1 and 2
68     AliSegmentation*        fSeg[2];             // Segmentations for cathode 1 and 2
69     
70 // Configuration    
71     Int_t                   fDeclusterFlag;      // flag for declusterin
72     Int_t                   fClusterSize;        // cluster size 
73     Int_t                   fNperMax;            // Maximum number of pads per peak
74     Float_t                 fGhostChi2Cut;       // Cut in charge matching chi2
75                                                  // (2 degrees of freedom)
76                                                  // Used by ghost removal
77 // Current decluster result    
78     Int_t                   fMul[2];             // current multiplicity
79     Int_t                   fNPeaks;             // number of local maxima
80     Int_t                   fNRawClusters;       // Number of Raw Clusters
81 // Local data store    
82     AliMUONDigit*           fDig[100][2];        // current list of digits 
83     Int_t                   fIx[100][2];         // current list of x-pad-coord.
84     Int_t                   fIy[100][2];         // current list of y-pad-coord.
85     Float_t                 fX[100][2];          // current list of x-coord.
86     Float_t                 fY[100][2];          // current list of y-coord.
87     Float_t                 fZ[100][2];          // current list of z-coord.
88     Int_t                   fIndLocal[100][2];   // indices of local maxima
89     Int_t                   fNLocal[2];          // Number of local maxima
90     Int_t                   fQ[100][2];          // current list of charges
91     Float_t                 fZPlane;             // currenz z-plane position
92     Int_t                   fSector;             // current sector
93     
94 // Current Fit
95     Double_t                 fXFit[2];         // x-coordinate
96     Double_t                 fYFit[2];         // y-coordinate
97     Double_t                 fQrFit[2];        // charge ratio
98     Float_t                  fChi2[2];         // chi2 of fit
99     Float_t                  fXInit[2];        // start values
100     Float_t                  fYInit[2];        // start values
101     Float_t                  fQrInit[2];       // start values
102     Int_t                    fFitStat;         // status of fit
103     
104 // Selected track for debugging
105     Int_t                    fTrack[2];        // Only digits with main contributions from these tracks are
106                                                // considered 
107     Int_t                    fDebugLevel;      // prinout control
108
109 //  Return pointer to raw clusters    
110     ClassDef(AliMUONClusterFinderVS,1) //Class for clustering and reconstruction of space points
111 };
112 #endif
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127