/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-#include "TObject.h"
-#include "AliRICH.h"
+#include "TTask.h"
+#include "AliRICH.h"
class AliHitMap;
-class TF1;
-class TClonesArray;
-class AliSegmentation;
-class AliRICHResponse;
-class TClonesArray;
-class AliRICHClusterFinder : public TObject
+class AliRICHClusterFinder : public TTask
{
-public:
- AliRICHClusterFinder(AliRICH *pRICH);
- virtual ~AliRICHClusterFinder() {;}
-
- void Exec(); //Loop on events and chambers
- void FindRawClusters(); //Search for clusters
- void AddDigit2Cluster(Int_t i, Int_t j, AliRICHRawCluster &c);
- void Decluster(AliRICHRawCluster *cluster); //Decluster
- void CalibrateCOG(); //Self Calibration of COG
- void SinoidalFit(Double_t x,Double_t y, TF1 *func);
- void CorrectCOG(){;}
- Bool_t Centered(AliRICHRawCluster *cluster);
- void SplitByLocalMaxima(AliRICHRawCluster *cluster);
- void FillCluster(AliRICHRawCluster *cluster, Int_t flag);
-
- void AddRawCluster(const AliRICHRawCluster c) {c.Print("");Rich()->AddClusterOld(fChamber,c);fNRawClusters++;}
- void FillCluster(AliRICHRawCluster *cluster) {FillCluster(cluster,1);}
- void SetNperMax(Int_t npermax=5) {fNperMax = npermax;} //Set max. Number of pads per local cluster
- void SetClusterSize(Int_t clsize=100) {fMaxClusterSize = clsize;}//Max. cluster size; bigger clusters will be rejected
+public:
+ AliRICHClusterFinder(AliRICH *pRICH);
+ virtual ~AliRICHClusterFinder() {;}
- AliRICH * Rich() {return fRICH;}
-//protected:
- AliRICH *fRICH;
- AliSegmentation *fSegmentation; //Segmentation model
- AliRICHResponse* fResponse; //Response model
- AliHitMap *fHitMap; //Hit Map with digit positions
- TF1* fCogCorr; //Correction for center of gravity
- TClonesArray* fDigits; //List of digits
- Int_t fNdigits; //Number of digits
- Int_t fChamber; //Chamber number
- Int_t fNRawClusters; //Number of raw clusters
- Int_t fNperMax; //Number of pad hits per local maximum
- Int_t fMaxClusterSize; //Max size of cluster allowed
- Int_t fNPeaks; //Number of maxima in the cluster
- ClassDef(AliRICHClusterFinder,0) //Class for clustering and reconstruction of space points
+ AliRICH *R() {return fRICH;} //returns pointer to RICH
+ void Exec(); //loop on events and chambers
+ void FindClusters(Int_t iChamber); //find all clusters for a given chamber
+ void FindClusterContribs(AliRICHcluster *pCluster); //find CFM for the current cluster
+ void FormRawCluster(Int_t i, Int_t j); //form a raw cluster
+ void FindLocalMaxima(); //find local maxima in a cluster
+ void FitCoG(); //evaluate the CoG as the best
+ void WriteRawCluster(); //write in the list of cluster
+ void WriteResolvedCluster(); //write in the list of cluster
+ AliRICHcluster *GetRawCluster() {return &fRawCluster;} //returns pointer to the current raw cluster
+ Bool_t GetDebug() const{return fRICH->GetDebug();} //is debug printout needed?
+protected:
+ AliRICH *fRICH; //pointer to RICH
+ AliHitMap *fDigitMap; //map of digits positions
+ AliRICHcluster fRawCluster; //current raw cluster before deconvolution
+ AliRICHcluster fResolvedCluster; //current cluster after deconvolution
+ Int_t fNlocals; //number of local maxima
+ Double_t fLocalX[100],fLocalY[100]; //list of locals X,Y
+ Double_t fLocalQ[100]; //list of locals charge Q
+ Int_t fLocalC[100]; //list of locals CombiPid
+ ClassDef(AliRICHClusterFinder,0) //finds raw clusters, trasfers them to resolved clusters through declustering.
};
#endif