New gain variation diagnostics.
[u/mrichter/AliRoot.git] / RICH / AliRICHClusterFinder.h
1 #ifndef ALIRICHCLUSTERFINDER_H
2 #define ALIRICHCLUSTERFINDER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9
10 ////////////////////////////////////////////////
11 //  RICH Cluster Finder Class                 //
12 ////////////////////////////////////////////////
13 class AliRICHHitMapA1;
14
15 #include "TF1.h"
16 #include "TObject.h"
17 class  TClonesArray;
18 class AliSegmentation;
19 class AliRICHRawCluster;
20 class AliRICHResponse;
21 class TClonesArray;
22
23
24 class AliRICHClusterFinder : public TObject
25 {
26  public:
27     AliRICHClusterFinder
28         (AliSegmentation *segmentation,
29          AliRICHResponse *response, TClonesArray *digits, Int_t chamber);
30     AliRICHClusterFinder();
31     AliRICHClusterFinder(const AliRICHClusterFinder & ClusterFinder);
32     virtual ~AliRICHClusterFinder();
33     virtual void SetSegmentation(
34         AliSegmentation *segmentation){
35         fSegmentation=segmentation;
36     }
37     virtual void SetResponse(AliRICHResponse *response) {
38         fResponse=response;
39     }
40
41     virtual void SetDigits(TClonesArray *RICHdigits);
42     
43     virtual void SetChamber(Int_t ich){
44         fChamber=ich;
45     }
46     
47     virtual void AddRawCluster(const AliRICHRawCluster c);
48     // Search for raw clusters
49     virtual void FindRawClusters();
50     virtual void  FindCluster(Int_t i, Int_t j, AliRICHRawCluster &c);
51     // Decluster
52     virtual void Decluster(AliRICHRawCluster *cluster);
53     // Set max. Number of pads per local cluster
54     virtual void SetNperMax(Int_t npermax=5) {fNperMax = npermax;}
55     // Decluster ?
56     virtual void SetDeclusterFlag(Int_t flag=1) {fDeclusterFlag =flag;}
57     // Set max. cluster size ; bigger clusters will be rejected
58     virtual void SetClusterSize(Int_t clsize=5) {fClusterSize = clsize;}
59     // Self Calibration of COG 
60     virtual void CalibrateCOG();
61     virtual void SinoidalFit(Float_t x, Float_t y, TF1 &func);
62     //
63     virtual void CorrectCOG(){;}
64     
65     //
66     virtual Bool_t Centered(AliRICHRawCluster *cluster);
67     virtual void   SplitByLocalMaxima(AliRICHRawCluster *cluster);
68     virtual void   FillCluster(AliRICHRawCluster *cluster, Int_t flag);
69     virtual void   FillCluster(AliRICHRawCluster *cluster) {
70         FillCluster(cluster,1);}
71    
72     TClonesArray* RawClusters(){return fRawClusters;}
73     AliRICHClusterFinder& operator=(const AliRICHClusterFinder& rhs);
74     ClassDef(AliRICHClusterFinder,1) //Class for clustering and reconstruction of space points
75
76 protected:
77     AliSegmentation*        fSegmentation;                 //Segmentation model
78     AliRICHResponse*        fResponse;                     //Response model
79     TClonesArray*           fRawClusters;                  //Raw clusters list
80     AliRICHHitMapA1*        fHitMap;                       //Hit Map with digit positions
81     TF1*                    fCogCorr;                      //Correction for center of gravity
82     TClonesArray*           fDigits;                       //List of digits
83     Int_t                   fNdigits;                      //Number of digits
84     Int_t                   fChamber;                      //Chamber number
85     Int_t                   fNRawClusters;                 //Number of raw clusters
86     Int_t                   fNperMax;                      //Number of pad hits per local maximum
87     Int_t                   fDeclusterFlag;                //Split clusters flag
88     Int_t                   fClusterSize;                  //Size of cluster 
89     Int_t                   fNPeaks;                       //Number of maxima in the cluster
90 };
91 #endif
92
93
94
95
96
97
98