A cluster finder and hit reconstruction class for RICH (adapted from MUON).
[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 #include "AliRICHHitMap.h"
14 #include "TF1.h"
15 class AliRICHClusterFinder :
16  public TObject
17 {
18 public:
19     TClonesArray*           fDigits;
20     Int_t                   fNdigits;
21 protected:
22     AliRICHSegmentation*    fSegmentation;
23     AliRICHResponse*        fResponse;
24     TClonesArray*           fRawClusters;
25     Int_t                   fChamber;
26     Int_t                   fNRawClusters;
27     AliRICHHitMapA1*        fHitMap;
28     TF1*                    fCogCorr;
29     Int_t                   fNperMax;
30     Int_t                   fDeclusterFlag;
31     Int_t                   fClusterSize;
32     Int_t                   fNPeaks; 
33  public:
34     AliRICHClusterFinder
35         (AliRICHSegmentation *segmentation,
36          AliRICHResponse *response, TClonesArray *digits, Int_t chamber);
37     AliRICHClusterFinder();
38     ~AliRICHClusterFinder(){delete fRawClusters;}
39     virtual void SetSegmentation(
40         AliRICHSegmentation *segmentation){
41         fSegmentation=segmentation;
42     }
43     virtual void SetResponse(AliRICHResponse *response) {
44         fResponse=response;
45     }
46
47     virtual void SetDigits(TClonesArray *RICHdigits) {
48         fDigits=RICHdigits;
49         fNdigits = fDigits->GetEntriesFast();
50     }
51     
52     virtual void SetChamber(Int_t ich){
53         fChamber=ich;
54     }
55     
56     virtual void AddRawCluster(const AliRICHRawCluster);
57     // Search for raw clusters
58     virtual void FindRawClusters();
59     virtual void  FindCluster(Int_t i, Int_t j, AliRICHRawCluster &c);
60     // Decluster
61     virtual void Decluster(AliRICHRawCluster *cluster);
62     // Set max. Number of pads per local cluster
63     virtual void SetNperMax(Int_t npermax=5) {fNperMax = npermax;}
64     // Decluster ?
65     virtual void SetDeclusterFlag(Int_t flag=1) {fDeclusterFlag =flag;}
66     // Set max. cluster size ; bigger clusters will be rejected
67     virtual void SetClusterSize(Int_t clsize=5) {fClusterSize = clsize;}
68     // Self Calibration of COG 
69     virtual void CalibrateCOG();
70     virtual void SinoidalFit(Float_t x, Float_t y, TF1 &func);
71     //
72     virtual void CorrectCOG(){;}
73     
74     //
75     virtual Bool_t Centered(AliRICHRawCluster *cluster);
76     virtual void   SplitByLocalMaxima(AliRICHRawCluster *cluster);
77     virtual void   FillCluster(AliRICHRawCluster *cluster, Int_t);
78     virtual void   FillCluster(AliRICHRawCluster *cluster) {
79         FillCluster(cluster,1);}
80     TClonesArray* RawClusters(){return fRawClusters;}
81     ClassDef(AliRICHClusterFinder,1) //Class for clustering and reconstruction of space points
82 };
83 #endif
84
85
86
87
88
89
90